رادار هوشمند با MQTT و Node_RED
سلام در این جلسه قصد داریم با استفاده از سنسور آلتراسونیک و یک عدد سروو موتور و برد NodeMCU یک عدد رادار هوشمند بسازیم .
طوری که بعد از فرمان رصد رادار به چرخش در آمده و دیتا را دریافت و تحلیل خواهد کرد.
در این پروژه برای ارسال و دریافت دیتا از نرم افزار Node_RED استفاده میکنیم برای اینکه راحت تر بتونین این پروژه رو انجام بدین بهتر هستش که آموزش های قبلی مربوط به نرم افزار Node_RED و پروتکل MQTT رو مطالعه کنید.
پلتفرم برنامه نویسی بلوکی۴ADAIOT :
۴ADAIOT
گالری پروژه :
شماتیک و اتصالات :
نحوه قرار دادن بلوک ها در پلتفرم برنامه نویسی بلوکی ۴ADAIOT:
اول از قسمت پروژه های آماده پروژه MQTT CLIENT رو انتخاب میکنیم و بعد بلوک دریافت دیتا از تاپیک رو برداشته و به قسمت دریافت دیتا اضافه میکنیم.
کد ساخته شده توسط پلتفرم برنامه نویسی بلوکی :
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ ۵۷ ۵۸ ۵۹ ۶۰ ۶۱ ۶۲ ۶۳ ۶۴ ۶۵ ۶۶ ۶۷ ۶۸ ۶۹ ۷۰ ۷۱ ۷۲ ۷۳ ۷۴ ۷۵ ۷۶ ۷۷ ۷۸ ۷۹ ۸۰ ۸۱ ۸۲ ۸۳ ۸۴ ۸۵ ۸۶ ۸۷ ۸۸ ۸۹ ۹۰ ۹۱ ۹۲ ۹۳ ۹۴ ۹۵ ۹۶ ۹۷ ۹۸ ۹۹ ۱۰۰ ۱۰۱ ۱۰۲ ۱۰۳ ۱۰۴ ۱۰۵ ۱۰۶ ۱۰۷ ۱۰۸ ۱۰۹ ۱۱۰ ۱۱۱ ۱۱۲ ۱۱۳ ۱۱۴ ۱۱۵ ۱۱۶ ۱۱۷ ۱۱۸ ۱۱۹ |
///////////////////////////////// // Generated with a lot of love// // with 4ADAIOT FOR ESP8266 // // Website: https://4adateam.com // ///////////////////////////////// #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <Servo.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("admin"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(۵۰۰۰); } } } Servo servo_0; long ultrason_4() { long duration, distance; digitalWrite(۴,LOW); delayMicroseconds(۲); digitalWrite(۴, HIGH); delayMicroseconds(۱۰); digitalWrite(۴, LOW); duration = pulseIn(۵, HIGH); distance = duration * ۳۴۰ / (۲ * ۱۰۰۰۰); return distance; } char msgmqtt[۵۰]; int i; void callback(char* topic, byte* payload, unsigned int length) { String MQTT_DATA = ""; for (int i=۰;i<length;i++) { MQTT_DATA += (char)payload[i];} if (MQTT_DATA == "run") { digitalWrite(۱۶,HIGH); delay(۲۰۰); digitalWrite(۱۶,LOW); delay(۲۰۰); for (i = ۱; i <= ۱۸۰; i++) { servo_0.write(i); delay(۲۰۰); snprintf (msgmqtt, ۵۰, "%ld ",ultrason_4()); client.publish("۴adacm", msgmqtt); } digitalWrite(۱۶,HIGH); delay(۲۰۰); digitalWrite(۱۶,LOW); delay(۲۰۰); for (i = ۱۸۰; i >= ۱; i--) { servo_0.write(i); delay(۲۰۰); snprintf (msgmqtt, ۵۰, "%ld ",ultrason_4()); client.publish("۴adacm", msgmqtt); } } if (MQTT_DATA == "stop") { servo_0.write(۰); delay(۲۰); digitalWrite(۱۶,HIGH); delay(۲۰۰۰); digitalWrite(۱۶,LOW); delay(۲۰۰۰); } } 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); pinMode(۱۶, OUTPUT); servo_0.attach(۰); pinMode(۴, OUTPUT); pinMode(۵, INPUT); } void loop() { if (!client.connected()) { reconnectmqttserver(); } client.loop(); } |
برنامه نویسی نرم افزار Node_RED :