فهرست مطالب:

PInt@t10n: سیستم مانیتورینگ کارخانه هوشمند: 9 مرحله
PInt@t10n: سیستم مانیتورینگ کارخانه هوشمند: 9 مرحله

تصویری: PInt@t10n: سیستم مانیتورینگ کارخانه هوشمند: 9 مرحله

تصویری: PInt@t10n: سیستم مانیتورینگ کارخانه هوشمند: 9 مرحله
تصویری: Kant10t - Pain | Official Music Video 2024, جولای
Anonim
PInt@t10n: سیستم مانیتورینگ کارخانه هوشمند
PInt@t10n: سیستم مانیتورینگ کارخانه هوشمند

این پروژه به عنوان آزمایشی برای ابر ibm iot ایجاد شده است. ما از esp-8266 برای ارسال و دریافت داده ها به و از ابر ibm استفاده می کنیم. ارتباط بین esp و ibm cloud از طریق MQTT انجام می شود.

برای رسیدگی به همه داده ها و ارائه رابط کاربری به کاربر ، از node-red استفاده می کنیم. بسیار مبتدی دوستانه است.

برای شروع به موارد زیر نیاز دارید:

  • Esp-8266
  • سنسور دما/رطوبت dht 11/22
  • دیود حساس به نور (اندازه گیری نور)
  • زنگ
  • سنسور رطوبت زمین
  • ibm حساب ابری

مرحله 1: سنسورهای خود را وصل کنید

سنسورهای خود را متصل کنید
سنسورهای خود را متصل کنید
سنسورهای خود را متصل کنید
سنسورهای خود را متصل کنید
سنسورهای خود را متصل کنید
سنسورهای خود را متصل کنید

همانطور که قبلاً اشاره کردیم ، از esp8266 برای خواندن و ارسال داده های حسگر استفاده می کنیم. برای این آموزش ما فرض می کنیم که می دانید چگونه سنسورهای خود را به میکرو کنترلر خود وصل کنید. همچنین باید بدانید که چگونه کد را در esp8266 بارگذاری کنید.

مدل esp ما فقط یک درگاه آنالوگ دارد بنابراین ما انتخاب کردیم اطلاعات آنالوگ را از سنسور نور خود دریافت کنیم زیرا در این صورت می توانیم میزان نور دریافتی گیاه را کنترل کنیم.

همه سنسورهای دیگر به صورت دیجیتالی متصل شده اند. سنسور DHT11 ما داده ها را به صورت دیجیتالی ارسال می کند و ما از کتابخانه dht برای تفسیر داده های سنسور استفاده می کنیم.

در بالا می توانید یک نمودار مدار برای سنسورهایی که استفاده کردیم پیدا کنید. اما لطفاً به خاطر داشته باشید که سنسورهای مورد استفاده ما اغلب دارای یک ماژول هستند تا بتوانید بدون هیچ گونه مقاومت اضافی که در نمودار گنجانده ایم ، به راحتی آن را به میکرو کنترلر خود متصل کنید.

مرحله 2: کد

این طرح آردوینو است که ما استفاده کردیم. اگر نظرات را بخوانید ، می توانید با نحوه عملکرد کد آشنا شوید.

#شامل ArduinoJson.h #شامل DHT_U.h #شامل DHT.h #شامل ESP8266WiFi.h #شامل ESP8266WiFiMulti.h #شامل PubSubClient.h

#تعریف STASSID "ucll-projectweek-IoT" #definine STAPSK "Foo4aiHa" #تعریف DHTPin 5 #تعریف رطوبت پین 4 #تعریف DHTType DHT11 DHT dht (DHTPin ، DHTType) ؛ ESP8266WiFiMulti WiFiMulti؛ float temp = 0؛ رطوبت شناور = 0 ؛ رطوبت بولی = غلط ؛ int light = 0 ؛ const char* ssid = STASSID؛ const char* رمز عبور = STAPSK؛ const char* mqtt_server = "cmfwqk.messaging.internetofthings.ibmcloud.com"؛ WiFiClient espClient ؛ مشتری PubSubClient (espClient) ؛ long lastMsg = 0؛ char msg [50]؛ مقدار int = 0 ؛ #تعریف MQTT_HOST "cmfwqk.messaging.internetofthings.ibmcloud.com" #MQTT_PORT 1883 #تعریف MQTT_DEVICEID "d: cmfwqk: ESP8266: ESP" #define MQTT_USER "MICde" MIC " #" #" iot-2/evt/status/fmt/json "#dequine MQTT_TOPIC_DISPLAY" iot-2/cmd/update/fmt/json "#include" pitches.h "// یادداشت ها در ملودی: // مدت زمان توجه: 4 = ربع توجه داشته باشید ، 8 = یادداشت هشتم ، و غیره: int shortTone = 80؛ int longTone = 200؛ int standardDelay = 50؛ int delayBetweenBars = 50 ؛ void setup_wifi () {تاخیر (10)؛ // ما با اتصال به شبکه WiFi Serial.println () شروع می کنیم. Serial.print ("اتصال به") ؛ Serial.println (ssid)؛ WiFi.begin (ssid ، رمز عبور) ؛ while (WiFi.status ()! = WL_CONNECTED) {تأخیر (500)؛ Serial.print (".") ؛ } Serial.println ("")؛ Serial.println ("WiFi متصل است") ؛ Serial.println ("آدرس IP:") ؛ Serial.println (WiFi.localIP ()) ؛ } void callback (char* topic، byte* payload، unsigned int length) {Serial.print ("پیام رسید [")؛ Serial.print (موضوع) ؛ Serial.print ("]")؛ برای (int i = 0؛ i <length؛ i ++) {Serial.print ((char) payload )؛ } Serial.println ()؛ StaticJsonDocument jsonBuffer؛ deserializeJson (jsonBuffer ، محموله) ؛ ریشه JsonObject = jsonBuffer.as ()؛ if (ریشه ["آهنگ"] == "darude") {darude ()؛ } if (root ["song"] == "starwars") {starwars ()؛ } if (root ["song"] == "jacques") {Serial.println ("jakakakakakkakaka")؛ ژاک ()؛ }} void reconnect () {// حلقه تا زمانی که دوباره متصل نشویم (! client.connected ()) {Serial.print ("تلاش برای اتصال MQTT …") ؛ // تلاش برای اتصال if (client.connect (MQTT_DEVICEID، MQTT_USER، MQTT_TOKEN)) {Serial.println ("متصل")؛ client.subscribe (MQTT_TOPIC_DISPLAY)؛ } else {Serial.print ("ناموفق ، rc =")؛ Serial.print (client.state ()) ؛ Serial.println ("در 5 ثانیه دوباره امتحان کنید") ؛ // 5 ثانیه قبل از امتحان مجدد تأخیر (5000) منتظر بمانید. }}} void setup () {Serial.begin (9600)؛ pinMode (humidityPin ، INPUT) ؛ dht.begin ()؛ pinMode (0 ، OUTPUT) ؛ setup_wifi ()؛ client.setServer (mqtt_server ، MQTT_PORT) ؛ client.setCallback (تماس تلفنی) ؛ تأخیر (20) ؛ } void loop () {if (! client.connected ()) {اتصال مجدد ()؛ } client.loop ()؛ رطوبت = digitalRead (humidityPin) ؛ light = analogRead (A0) ؛ temp = dht.readTemperature ()؛ رطوبت = dht.readHumidity ()؛ Serial.println ("Temperature =" + String (temp، 1) + "\ n رطوبت =" + رشته (رطوبت ، 1) + "\ n رطوبت:" + رشته (رطوبت) + "\ n نور:" + رشته (نور))؛ String payload = "{" ts / ": {" t / ":"+رشته (دما ، 1)+"، \" h / ":"+رشته (رطوبت ، 1)+"} ، \" ms / ": {" m / ":"+رشته (رطوبت)+"} ، \" ls / ": {" l / ":"+رشته (نور)+"}}" ؛ Serial.println (بار)؛ if (client.publish (MQTT_TOPIC ، (char*) payload.c_str ())) {Serial.println ("انتشار خوب") ؛ } else {Serial.println ("انتشار انجام نشد")؛ } تاخیر (2000) ؛ } void darude () {tone (0، NOTE_B3، shortTone)؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تأخیر (delayBetweenBars) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_E4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_E4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_E4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_E4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_E4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_E4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_E4 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_D4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_D4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_D4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_D4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_D4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_D4 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_D4 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_A3 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تأخیر (delayBetweenBars) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_E4 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تأخیر (delayBetweenBars) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، shortTone) ؛ تأخیر (shortTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_B3 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ تن (0 ، NOTE_E4 ، longTone) ؛ تاخیر (longTone) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ } void starwars () {بوق (NOTE_A4 ، 500) ؛ بوق (NOTE_A4 ، 500) ؛ بوق (NOTE_A4 ، 500) ؛ بوق (NOTE_F4 ، 350) ؛ بوق (NOTE_C5 ، 150) ؛ بوق (NOTE_A4 ، 500) ؛ بوق (NOTE_F4 ، 350) ؛ بوق (NOTE_C5 ، 150) ؛ بوق (NOTE_A4 ، 650) ؛ تأخیر (500) ؛ بوق (NOTE_E5 ، 500) ؛ بوق (NOTE_E5 ، 500) ؛ بوق (NOTE_E5 ، 500) ؛ بوق (NOTE_F5 ، 350) ؛ بوق (NOTE_C5 ، 150) ؛ بوق (NOTE_GS4 ، 500) ؛ بوق (NOTE_F4 ، 350) ؛ بوق (NOTE_C5 ، 150) ؛ بوق (NOTE_A4 ، 650) ؛ } بوق void (یادداشت int ، مدت زمان int) {// پخش آهنگ در آهنگ buzzerPin (0 ، توجه داشته باشید ، مدت زمان) ؛ تاخیر (مدت زمان) ؛ noTone (0) ؛ تاخیر (standardDelay) ؛ } void heartOfCourage () {} void jacques () {beep (NOTE_C4، 500)؛ بوق (NOTE_D4 ، 500) ؛ بوق (NOTE_E4 ، 500) ؛ بوق (NOTE_C4 ، 500) ؛ بوق (NOTE_C4 ، 500) ؛ بوق (NOTE_D4 ، 500) ؛ بوق (NOTE_E4 ، 500) ؛ بوق (NOTE_C4 ، 500) ؛ بوق (NOTE_E4 ، 500) ؛ بوق (NOTE_F4 ، 500) ؛ بوق (NOTE_G4 ، 500) ؛ بوق (NOTE_E4 ، 500) ؛ بوق (NOTE_F4 ، 500) ؛ بوق (NOTE_G4 ، 500) ؛ بوق (NOTE_G4 ، 500) ؛ بوق (NOTE_A4 ، 500) ؛ بوق (NOTE_G4 ، 500) ؛ بوق (NOTE_F4 ، 500) ؛ بوق (NOTE_E4 ، 500) ؛ بوق (NOTE_C4 ، 500) ؛ بوق (NOTE_G4 ، 500) ؛ بوق (NOTE_A4 ، 500) ؛ بوق (NOTE_G4 ، 500) ؛ بوق (NOTE_F4 ، 500) ؛ بوق (NOTE_E4 ، 500) ؛ بوق (NOTE_C4 ، 500) ؛ بوق (NOTE_C4 ، 500) ؛ بوق (NOTE_G4 ، 500) ؛ بوق (NOTE_C4 ، 500) ؛ بوق (NOTE_C4 ، 500) ؛ بوق (NOTE_G4 ، 500) ؛ بوق (NOTE_C4 ، 500) ؛ }

مرحله 3: Ibm Cloud

ابر ابن
ابر ابن

شما باید یک نمونه IBM-cloud را تنظیم کنید. اطلاعات مربوط به این مورد را می توانید از طریق این لینک پیدا کنید: github.

مرحله 4: Node-RED

ما از node-red برای مدیریت منطق کلی تجارت خود و تجسم این داده ها در یک رابط کاربری بصری استفاده می کنیم.

مرحله 5: Node-RED Setup: Light

Node-RED Setup: Light
Node-RED Setup: Light

کد زیر را در پروژه خود وارد کنید.

[{"id": "deb0d57.1c46528" ، "type": "tab" ، "label": "Light" ، "disabled": false ، "info": ""} ، {"id": "8a0fcaac. 4e54 "،" type ":" ibmiot in "،" z ":" deb0d57.1c46528 "،" تأیید اعتبار ":" boundService "،" apiKey ":" "،" inputType ":" evt "،" logicInterface ":" "،" ruleId ":" "،" deviceId ":" ESP "،" applicationId ":" "،" deviceType ":" ESP8266 "،" eventType ":"+"،" commandType ":" "،" format ": "json"، "name": "دریافت اطلاعات از ESP"، "service": "registered"، "allDevices": false، "allApplications": ""، "allDeviceTypes": false ، "allLogicalInterfaces": "" ، "allEvents": true ، "allCommands": "" ، "allFormats": "" ، "qos": 0 ، "x": 120 ، "y": 62 ، "wires":

مرحله 6: Node-RED Setup: دما

Node-RED Setup: دما
Node-RED Setup: دما

کد زیر را در پروژه خود وارد کنید.

[{"id": "fbad3799.f0e0e" ، "type": "tab" ، "label": "دما" ، "غیرفعال": false ، "info": ""} ، {"id": "b8618eb9. 1c9288 "،" type ":" ibmiot in "،" z ":" fbad3799.f0e0e "،" authentication ":" boundService "،" apiKey ":" "،" inputType ":" evt "،" logicInterface ":" "،" ruleId ":" "،" deviceId ":" ESP "،" applicationId ":" "،" deviceType ":" ESP8266 "،" eventType ":"+"،" commandType ":" "،" format ": "json"، "name": "دریافت اطلاعات از ESP"، "service": "registered"، "allDevices": false، "allApplications": ""، "allDeviceTypes": false ، "allLogicalInterfaces": "" ، "allEvents": true ، "allCommands": "" ، "allFormats": "" ، "qos": 0 ، "x": 145.5 ، "y": 49 ، "wires":

مرحله 7: Node-RED Setup: Humidity

راه اندازی Node-RED: رطوبت
راه اندازی Node-RED: رطوبت

کد زیر را در پروژه خود وارد کنید.

[{"id": "144cd53b.c00473"، "type": "tab"، "label": "Humidity"، "disabled": false، "info": ""}، {"id": "d958f58b. 2678e "،" type ":" ibmiot in "،" z ":" 144cd53b.c00473 "،" authentication ":" boundService "،" apiKey ":" "،" inputType ":" evt "،" logicInterface ":" "،" ruleId ":" "،" deviceId ":" ESP "،" applicationId ":" "،" deviceType ":" ESP8266 "،" eventType ":"+"،" commandType ":" "،" format ": "json"، "name": "دریافت اطلاعات از ESP"، "service": "registered"، "allDevices": false، "allApplications": ""، "allDeviceTypes": false، "allLogicalInterfaces": ""، "allEvents": true ، "allCommands": "" ، "allFormats": "" ، "qos": 0 ، "x": 142 ، "y": 87 ، "wires":

مرحله 8: راه اندازی Node-RED: رطوبت

Node-RED Setup: رطوبت
Node-RED Setup: رطوبت

کد زیر را در پروژه خود وارد کنید.

[{"id": "4ee73536.ec6fc4" ، "type": "tab" ، "label": "Moisture" ، "disabled": false ، "info": ""} ، {"id": "a6daac3e. 2d5268 "،" type ":" ibmiot out "،" z ":" 4ee73536.ec6fc4 "،" authentication ":" boundService "،" apiKey ":" "،" outputType ":" cmd "،" deviceId ":" ESP "،" deviceType ":" ESP8266 "،" eventCommandType ":" update "،" format ":" json "،" data ":" msg "،" qos ": 0،" name ":" ارسال فرمان به ESP "،" service ":" registered "،" x ": 804.1944580078125،" y ": 383.0000305175781،" wires ": }، {" id ":" 4134fdb7.18e9b4 "،" type ":" ibmiot in "، "z": "4ee73536.ec6fc4" ، "تأیید اعتبار": "boundService" ، "apiKey": "" ، "inputType": "evt" ، "logicInterface": "" "،" ruleId ":" "،" deviceId ": "ESP" ، "applicationId": "" ، "deviceType": "ESP8266" ، "eventType": "update" ، "commandType": "" ، "format": "json" ، "name": "دریافت داده از ESP "،" service ":" registered "،" allDevices ": false،" allApplications ":" "،" allDeviceTypes ": false،" allLogicalInterfaces ":" ""، "allEvents": true، "allCommands": "" ، "allFormats": false ، "qos": 0 ، "x": 115 ، "y": 76 ، "wires":

مرحله نهم: تمام شدی

تبریک می گویم! شما در حال حاضر یک سیستم مشاهده کارخانه دارید.

اگر سوالی دارید ، با ما تماس بگیرید دریغ نکنید!