Mundarija:
- 1 -qadam: Sensorlarni ulang
- 2 -qadam: kod
- 3 -qadam: Ibm Cloud
- 4-qadam: tugun-RED
- 5-qadam: Qizil tugunli sozlash: yorug'lik
- 6-qadam: Qizil tugunli sozlash: Harorat
- 7-qadam: tugunli-RED sozlash: namlik
- 8-qadam: Tugun-RED sozlash: namlik
- 9 -qadam: Siz tugadingiz
Video: PInt@t10n: Aqlli o'simliklarni monitoring qilish tizimi: 9 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Bu loyiha ibm iot buluti uchun sinov sifatida yaratilgan. Ibm bulutiga ma'lumotlarni yuborish va qabul qilish uchun biz esp-8266-dan foydalanamiz. Esp va ibm bulutlari o'rtasidagi aloqa MQTT orqali sodir bo'ladi.
Barcha ma'lumotlarni qayta ishlash va foydalanuvchiga foydalanuvchi interfeysi bilan tanishish uchun biz qizil tugunlardan foydalanamiz. Bu yangi boshlanuvchilar uchun juda qulay.
Boshlash uchun sizga kerak:
- Esp-8266
- dht 11/22 harorat/namlik sensori
- nurga sezgir diod (nurni o'lchash)
- ovozli signal
- er namligi sensori
- ibm bulutli hisob
1 -qadam: Sensorlarni ulang
Yuqorida aytib o'tganimizdek, biz sensorlar ma'lumotlarini o'qish va yuborish uchun esp8266 -dan foydalanamiz. Ushbu qo'llanma uchun biz sensorlaringizni mikro boshqaruvchiga qanday ulashni bilasiz deb taxmin qilamiz. Bundan tashqari, siz esp8266 -ga kodni qanday yuklashni bilishingiz kerak.
Bizning esp modelimizda faqat bitta analog port bor, shuning uchun biz yorug'lik sensori orqali analog ma'lumot olishni tanladik, chunki u holda biz o'simlik qancha yorug'lik olishini kuzatib boramiz.
Boshqa barcha sensorlar raqamli ulangan. Bizning DHT11 sensori ma'lumotlarni raqamli yuboradi va biz dht kutubxonasidan sensorlar ma'lumotlarini talqin qilish uchun foydalanamiz.
Yuqorida biz ishlatgan sensorlar uchun sxemani topishingiz mumkin. Shuni yodda tutingki, biz tez -tez ishlatadigan sensorlar modul bilan ta'minlangan, shuning uchun siz uni diagramaga kiritgan barcha qo'shimcha rezistorlarsiz mikrokontrolleringizga osongina ulashingiz mumkin.
2 -qadam: kod
Bu biz ishlatgan arduino eskizi. Agar siz sharhlarni o'qigan bo'lsangiz, kod qanday ishlashi haqida bilib olishingiz mumkin.
#ArduinoJson.h qo'shish #DHT_U.h qo'shish #DHT.h qo'shish #ESP8266WiFi.h qo'shish #ESP8266WiFiMulti.h qo'shish #PubSubClient.h qo'shish
#define STASSID "ucll-projectweek-IoT" #define STAPSK "Foo4aiHa" #DHTPin 5ni aniqlang #namlikni belgilashPin 4 #DHTType DHT11 DHT dht (DHTPin, DHTType); ESP8266WiFiMulti WiFiMulti; suzish harorati = 0; suzuvchi namlik = 0; boolean namlik = noto'g'ri; int yorug'lik = 0; const char* ssid = STASSID; const char* parol = STAPSK; const char* mqtt_server = "cmfwqk.messaging.internetofthings.ibmcloud.com"; WiFiClient espClient; PubSubClient mijozi (espClient); long lastMsg = 0; char xabar [50]; int qiymati = 0; #define MQTT_HOST "cmfwqk.messaging.internetofthings.ibmcloud.com" #dequefine MQTT_PORT 1883 #define MQTT_DEVICEID "d: cmfwqk: ESP8266: ESP" #define MQTT_USER "use-token-auth"-#ThenTo " iot-2/evt/status/fmt/json " #MQTT_TOPIC_DISPLAY" ni belgilang iot-2/cmd/update/fmt/json "#include" pitches.h "// ohangdagi eslatmalar: // eslatish muddatlari: 4 = chorak eslatma, 8 = sakkizinchi eslatma va boshqalar: int shortTone = 80; int longTone = 200; int standardDelay = 50; int delayBetweenBars = 50; void setup_wifi () {kechiktirish (10); // Biz Wi -Fi tarmog'iga ulanishdan boshlaymiz Serial.println (); Serial.print ("Ulanish"); Serial.println (ssid); WiFi.begin (ssid, parol); while (WiFi.status ()! = WL_CONNECTED) {kechiktirish (500); Serial.print ("."); } Serial.println (""); Serial.println ("Wi -Fi ulangan"); Serial.println ("IP -manzil:"); Serial.println (WiFi.localIP ()); } bekor qo'ng'iroq (char* mavzu, bayt* yuk, imzosiz int uzunligi) {Serial.print ("Xabar keldi ["); Serial.print (mavzu); Serial.print ("]"); for (int i = 0; i <uzunlik; i ++) {Serial.print ((char) foydali yuk ); } Serial.println (); StaticJsonDocument jsonBuffer; deserializeJson (jsonBuffer, foydali yuk); JsonObject ildizi = jsonBuffer.as (); if (ildiz ["qo'shiq"] == "darude") {darude (); } if (root ["song"] == "starwars") {yulduzli janglar (); } if (root ["song"] == "jacques") {Serial.println ("jakakakakakkakaka"); jaklar (); }} void reconnect () {// Biz qayta ulanmagunimizcha aylaning (! client.connected ()) {Serial.print ("MQTT ulanishga urinilmoqda…"); // Ulanishga urinish if (client.connect (MQTT_DEVICEID, MQTT_USER, MQTT_TOKEN)) {Serial.println ("ulangan"); client.subscribe (MQTT_TOPIC_DISPLAY); } boshqa {Serial.print ("muvaffaqiyatsiz, rc ="); Serial.print (client.state ()); Serial.println ("5 soniyadan keyin qayta urinib ko'ring"); // Kechiktirishni qayta urinishdan oldin 5 soniya kuting (5000); }}} void setup () {Serial.begin (9600); pinMod (moistPin, INPUT); dht.begin (); pinMod (0, OUTPUT); o'rnatish_wifi (); client.setServer (mqtt_server, MQTT_PORT); client.setCallback (qayta qo'ng'iroq qilish); kechikish (20); } void loop () {if (! client.connected ()) {reconnect (); } client.loop (); namlik = digitalRead (moistPin); yorug'lik = analogRead (A0); temp = dht.readTemperature (); namlik = dht.readHumidity (); Serial.println ("Harorat =" + String (temp, 1) + "\ nHumlik =" + String (namlik, 1) + "\ nNem:" + String (namlik) + "\ nNor:" + String (yorug'lik)); String yuk yuki = "{" ts / ": {" t / ":"+String (temp, 1)+", \" h / ":"+String (namlik, 1)+"}, \" ms / ": {" m / ":"+String (namlik)+"}, \" ls / ": {" l / ":"+Ip (yorug'lik)+"}}"; Serial.println (yuk yuki); if (client.publish (MQTT_TOPIC, (char*) payload.c_str ())) {Serial.println ("nashr etish"); } boshqa {Serial.println ("nashr etilmadi"); } kechikish (2000); } void darude () {tone (0, NOTE_B3, shortTone); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, uzun tonna); kechikish (longTone); noTone (0); kechikish (delayBetweenBars); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, uzun tonna); kechikish (longTone); noTone (0); kechikish (standardDelay); ohang (0, NOTE_E4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_E4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_E4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_E4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_E4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_E4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_E4, uzun ton); kechikish (longTone); noTone (0); kechikish (standardDelay); ohang (0, NOTE_D4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_D4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_D4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_D4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_D4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_D4, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_D4, uzun ton); kechikish (longTone); noTone (0); kechikish (standardDelay); ohang (0, NOTE_A3, uzun tonna); kechikish (longTone); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, uzun tonna); kechikish (longTone); noTone (0); kechikish (delayBetweenBars); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, uzun tonna); kechikish (longTone); noTone (0); kechikish (standardDelay); ohang (0, NOTE_E4, uzun ton); kechikish (longTone); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, uzun tonna); kechikish (longTone); noTone (0); kechikish (delayBetweenBars); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, qisqa tovush); kechikish (qisqa tovush); noTone (0); kechikish (standardDelay); ohang (0, NOTE_B3, uzun tonna); kechikish (longTone); noTone (0); kechikish (standardDelay); ohang (0, NOTE_E4, uzun ton); kechikish (longTone); noTone (0); kechikish (standardDelay); } bekor yulduzli janglar () {signal (NOTE_A4, 500); ovozli signal (NOTE_A4, 500); ovozli signal (NOTE_A4, 500); ovozli signal (NOTE_F4, 350); ovozli signal (NOTE_C5, 150); ovozli signal (NOTE_A4, 500); ovozli signal (NOTE_F4, 350); ovozli signal (NOTE_C5, 150); ovozli signal (NOTE_A4, 650); kechikish (500); ovozli signal (NOTE_E5, 500); ovozli signal (NOTE_E5, 500); ovozli signal (NOTE_E5, 500); ovozli signal (NOTE_F5, 350); ovozli signal (NOTE_C5, 150); ovozli signal (NOTE_GS4, 500); ovozli signal (NOTE_F4, 350); ovozli signal (NOTE_C5, 150); ovozli signal (NOTE_A4, 650); } bo'sh signal (int note, int duration) {// BuzzerPin ohangida ijro etish ohanglari (0, eslatma, davomiylik); kechikish (davomiyligi); noTone (0); kechikish (standardDelay); } void heartOfCourage () {} void jacques () {beep (NOTE_C4, 500); ovozli signal (NOTE_D4, 500); ovozli signal (NOTE_E4, 500); ovozli signal (NOTE_C4, 500); ovozli signal (NOTE_C4, 500); ovozli signal (NOTE_D4, 500); ovozli signal (NOTE_E4, 500); ovozli signal (NOTE_C4, 500); ovozli signal (NOTE_E4, 500); ovozli signal (NOTE_F4, 500); ovozli signal (NOTE_G4, 500); ovozli signal (NOTE_E4, 500); ovozli signal (NOTE_F4, 500); ovozli signal (NOTE_G4, 500); ovozli signal (NOTE_G4, 500); ovozli signal (NOTE_A4, 500); ovozli signal (NOTE_G4, 500); ovozli signal (NOTE_F4, 500); ovozli signal (NOTE_E4, 500); ovozli signal (NOTE_C4, 500); ovozli signal (NOTE_G4, 500); ovozli signal (NOTE_A4, 500); ovozli signal (NOTE_G4, 500); ovozli signal (NOTE_F4, 500); ovozli signal (NOTE_E4, 500); ovozli signal (NOTE_C4, 500); ovozli signal (NOTE_C4, 500); ovozli signal (NOTE_G4, 500); ovozli signal (NOTE_C4, 500); ovozli signal (NOTE_C4, 500); ovozli signal (NOTE_G4, 500); ovozli signal (NOTE_C4, 500); }
3 -qadam: Ibm Cloud
Siz IBM-bulutli misolni o'rnatishingiz kerak. Bu haqda ma'lumotni quyidagi havola orqali topishingiz mumkin: github.
4-qadam: tugun-RED
Biz umumiy biznes mantig'ini boshqarish va bu ma'lumotlarni intuitiv foydalanuvchi interfeysida tasavvur qilish uchun qizil tugundan foydalanamiz.
5-qadam: Qizil tugunli sozlash: yorug'lik
Quyidagi kodni loyihangizga import qiling.
[{"id": "deb0d57.1c46528", "type": "tab", "label": "Light", "disabled": false, "info": ""}, {"id": "8a0fcaac. 4e54 "," type ":" ibmiot in "," z ":" deb0d57.1c46528 "," autentifikatsiya ":" boundService "," apiKey ":" "," inputType ":" evt "," logicalInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "ESP -dan ma'lumotlarni olish", "service": "ro'yxatdan o'tgan", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": rost, "allCommands": "", "allFormats": "", "qos": 0, "x": 120, "y": 62, "simlar":
6-qadam: Qizil tugunli sozlash: Harorat
Quyidagi kodni loyihangizga import qiling.
[{"id": "fbad3799.f0e0e", "type": "tab", "label": "harorat", "o'chirilgan": noto'g'ri, "ma'lumot": ""}, "" id ":" b8618eb9. 1c9288 "," type ":" ibmiot in "," z ":" fbad3799.f0e0e "," autentifikatsiya ":" boundService "," apiKey ":" "," inputType ":" evt "," logicalInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "ESP -dan ma'lumot olish", "service": "ro'yxatdan o'tgan", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": rost, "allCommands": "", "allFormats": "", "qos": 0, "x": 145.5, "y": 49, "simlar":
7-qadam: tugunli-RED sozlash: namlik
Quyidagi kodni loyihangizga import qiling.
[{"id": "144cd53b.c00473", "type": "tab", "label": "namlik", "o'chirilgan": noto'g'ri, "ma'lumot": ""}, {"id": "d958f58b. 2678e "," type ":" ibmiot in "," z ":" 144cd53b.c00473 "," autentifikatsiya ":" boundService "," apiKey ":" "," inputType ":" evt "," logicalInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "ESP -dan ma'lumot olish", "service": "ro'yxatdan o'tgan", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": rost, "allCommands": "", "allFormats": "", "qos": 0, "x": 142, "y": 87, "simlar":
8-qadam: Tugun-RED sozlash: namlik
Quyidagi kodni loyihangizga import qiling.
[{"id": "4ee73536.ec6fc4", "type": "tab", "label": "namlik", "o'chirilgan": noto'g'ri, "ma'lumot": ""}, {"id": "a6daac3e. 2d5268 "," type ":" ibmiot out "," z ":" 4ee73536.ec6fc4 "," autentifikatsiya ":" boundService "," apiKey ":" "," outputType ":" cmd "," deviceId ":" ESP "," deviceType ":" ESP8266 "," eventCommandType ":" update "," format ":" json "," data ":" msg "," qos ": 0," name ":" ESP -ga buyruq yuborish. "," xizmat ":" ro'yxatdan o'tgan "," x ": 804.1944580078125," y ": 383.0000305175781," simlar ": }, {" id ":" 4134fdb7.18e9b4 "," type ":" ibmiot in ", "z": "4ee73536.ec6fc4", "autentifikatsiya": "boundService", "apiKey": "", "inputType": "evt", "logicalInterface": "", "ruleId": "", "deviceId": "ESP", "applicationId": "", "deviceType": "ESP8266", "eventType": "update", "commandType": "", "format": "json", "name": "Ma'lumot olish ESP dan "," xizmat ":" ro'yxatga olingan "," allDevices ": false," allApplications ":" "," allDeviceTypes ": false," allLogicalInterfaces ":" "," allEvents ": true," allCommands ":" ", "allFormats": noto'g'ri, "qos": 0, "x": 115, "y": 76, "simlar":
9 -qadam: Siz tugadingiz
Tabriklaymiz! sizda hozirda ishlaydigan o'simliklarni kuzatish tizimi mavjud.
Agar sizda biron bir savol bo'lsa, biz bilan bog'lanishdan tortinmang!