پارکینگ هوشمند با MQTT و Node_RED
آذر ۵, ۱۳۹۹
Posted by رامین دانش پژوه
101 بازدید

سلام در این جلسه قصد داریم با استفاده از پروتکل MQTT و نرم افزار Node_RED و با برد Node_MCU یک پارکینگ هوشمند درست کنیم.
برای اینکار اول به پلتفرم برنامه نویسی بلوکی میریم و شروع به کد نویسی میکنیم یک نکته ای رو دقت کنید تا قبل آپلود کد روی برد سرور MQTT و نرم افزار Node_RED رو اجرا کنین تا برد بتونه اتصال برقرار کنه .
ماکت :
شماتیک و اتصالات :
نحوه قرار دادن بلوک ها در پلتفرم برنامه نویسی بلوکی ۴ADAIOT:
کد ساخته شده توسط پلتفرم برنامه نویسی بلوکی ۴ADAIOT:
///////////////////////////////// // Generated with a lot of love// // with 4ADAIOT FOR ESP8266 // // Website: https://4adateam.com // ///////////////////////////////// #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <Servo.h> int j; int i; 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("servo"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } char msgmqtt[50]; Servo servo_2; void callback(char* topic, byte* payload, unsigned int length) { String MQTT_DATA = ""; for (int i=0;i<length;i++) { MQTT_DATA += (char)payload[i];} servo_2.write(MQTT_DATA.toFloat()); delay(20); } void setup() { j = 0; i = 0; Serial.begin(9600); pinMode(4, INPUT); pinMode(5, INPUT); 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); servo_2.attach(2); } void loop() { if (!client.connected()) { reconnectmqttserver(); } client.loop(); j = digitalRead(4); i = digitalRead(5); snprintf (msgmqtt, 50, "%d ",i); client.publish("car1d", msgmqtt); snprintf (msgmqtt, 50, "%d ",j); client.publish("car2d", msgmqtt); delay(1000); if (i == 1) { snprintf (msgmqtt, 50, "%s","car1-off"); client.publish("car1", msgmqtt); delay(1000); } if (i == 0) { snprintf (msgmqtt, 50, "%s","car1-on"); client.publish("car1", msgmqtt); delay(1000); } if (j == 1) { snprintf (msgmqtt, 50, "%s","car2-off"); client.publish("car2", msgmqtt); delay(1000); } if (j == 0) { snprintf (msgmqtt, 50, "%s","car2-on"); client.publish("car2", msgmqtt); delay(1000); } }
برنامه نویسی در نرم افزار Node_RED: