کنترل LED با پروتکل MQTT و Node_RED

سلام در این جلسه قصد داریم با استفاده از پروتکل MQTT و نرم افزار Node_RED و برد NODEMCU یک عدد LED رو کنترل کنیم .
برای اینکار ابتدا لازم است آ»وزش های قبلی مربوط به پروتکل MQTT و نرم افزار Node_RED را مطالعه کرده باشین.
اول از همه سرور MQTT و نرم افزار Node_RED رو اجرا میکنیم و بعد به پلتفرم برنامه نویسی بلوکی ۴ADAIOT میریم و کد نویسی رو انجام داده و روی برد آپلود میکنیم و بعد به سراغ نرم افزار Node_RED رفته و برنامه نویسی های مربوط به کنترل LED رو انجام میدیم و بعد به محسط داشبورد رفته و LED رو کنترل میکنیم .
شماتیک و اتصالات :
پایه بلند تر LED = پایه D0 برد NodeMCU
پایه کوتاه تر LED= پایه GND برد NodeMCU
نحوه قرار دادن بلوک ها کنار هم در پلتفرم برنامه نویسی بلوکی ۴ADAIOT:
کد ساخته شده توسط پلتفرم برنامه نویسی بلوکی ۴ADAIOT:
برنامه نوشته شده به این شکل هستش که اگه از تاپیک TOPIC مقدار on دریافت شد LED روشن بشه و اگه مقدار off دریافت شد LED خاموش بشه.
به ترتیب نام وایفای و رمز عبور و آدرس سرور رو وارد میکنیم.
نکته : بجای تاپیک TOPIC میتونید از اسم دیگ ای هم استفاده کنید منتها از اسمی استفاده کنید که یادتون باشه که داخل نرم افزار Node_RED برای ارسال دیتا به این اسم نیاز داریم.
///////////////////////////////// // 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(5000); } } } void callback(char* topic, byte* payload, unsigned int length) { String MQTT_DATA = ""; for (int i=0;i<length;i++) { MQTT_DATA += (char)payload[i];} if (MQTT_DATA == "on") { digitalWrite(16,HIGH); } if (MQTT_DATA == "off") { digitalWrite(16,LOW); } } void setup() { Serial.begin(9600); WiFi.disconnect(); delay(3000); Serial.println("START"); WiFi.begin("نام وایفای","رمزعبور"); while ((!(WiFi.status() == WL_CONNECTED))){ delay(300); Serial.print(".."); } Serial.println("Connected"); Serial.println("Your IP is"); Serial.println((WiFi.localIP().toString())); client.setServer("آدرس سرور", ۱۸۸۳); client.setCallback(callback); pinMode(16, OUTPUT); } void loop() { if (!client.connected()) { reconnectmqttserver(); } client.loop(); }
برنامه نویسی در نرم فزار Node_RED :