کنترل نور LED با پروتکل MQTT و برد NodeMCU
سلام در این جلسه قصد داریم با استفاده از پروتکل MQTT و نرم افزار Node_RED و با برد NodeMCU نور یک عدد LED رو کم و زیاد کنیم .
در این پروژه ما از مبحث analog write استفاده میکنیم .
با دادن عدد بین ۰ تا ۱۰۲۳ میتونیم ولتاژ خروجی ۰ تا ۳.۳ ولت به پایه مورد نظرمون بدیم این اعداد با توجه به عددی که میدیم نسبت بندی میشه و خروجی ساخته میشه.
اول سرور MQTT و Node_RED رو اجرا میکنیم و بعد به پلتفرم برنامه نویسی بلوکی ۴ADAIOT میریم و شروع به کد نویسی میکنیم.
پلتفرم برنامه نویسی بلوکی :
پلتفرم برنامه نویسی بلوکی ۴ADAIOT
شماتیک و اتصالات:
پایه بلند تر LED = پایه D5 برد NodeMCU
پایه کوتاه تر LED = پایه GND برد NodeMCU
نحوه قرار دادن بلوک ها در پلتفرم برنامه نویسی بلوکی ۴ADAIOT:
از قسمت پروژه های آماده پروژه MQTT CLIENT رو انتخاب میکنیم و بعد بلوک های دریافت دیتا و نوشتن آنالوگ رو اضافه میکنیم.
از ابتدای برنامه نام وایفای و رمز عبور و آدرس سرور رو وارد میکنیم .
در بلوک معرفی تاپیک دریافت دیتا نام تاپیک میتونه دلخواه باشه اما باید اسمی باشه که به یادتون بمونه چون داخل نرم افزار Node_RED برای ارسال دیتا از همین اسم تاپیک استفاده میکنیم.
ما اینجا اسم تاپیک رو led گذاشتیم شما هر اسمی که دوست داشتید میتونید در نظر بگیرید فرقی نمیکنه.
کد ساخته شده توسط پلتفرم برنامه نویسی بلوکی ۴ADAIOT:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ ۵۷ ۵۸ ۵۹ ۶۰ ۶۱ ۶۲ ۶۳ ۶۴ ۶۵ ۶۶ ۶۷ |
///////////////////////////////// // Generated with a lot of love// // with 4ADAIOT FOR ESP8266 // // Website: https://4adateam.com // ///////////////////////////////// #include <ESP8266WiFi.h> #include <PubSubClient.h> WiFiClient espClient; PubSubClient client(espClient); void reconnectmqttserver() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); if (client.connect(clientId.c_str())) { Serial.println("connected"); client.subscribe("نام تاپیک"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(۵۰۰۰); } } } void callback(char* topic, byte* payload, unsigned int length) { String MQTT_DATA = ""; for (int i=۰;i<length;i++) { MQTT_DATA += (char)payload[i];} analogWrite(۱۴, MQTT_DATA.toFloat());; } void setup() { Serial.begin(۹۶۰۰); WiFi.disconnect(); delay(۳۰۰۰); Serial.println("START"); WiFi.begin("نام وایفای","رمز عبور"); while ((!(WiFi.status() == WL_CONNECTED))){ delay(۳۰۰); Serial.print(".."); } Serial.println("Connected"); Serial.println("Your IP is"); Serial.println((WiFi.localIP().toString())); client.setServer("آدرس سرور ", ۱۸۸۳); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnectmqttserver(); } client.loop(); } |
برنامه نویسی در نرم افزار Node_RED: