Mundarija:

PInt@t10n: Aqlli o'simliklarni monitoring qilish tizimi: 9 qadam
PInt@t10n: Aqlli o'simliklarni monitoring qilish tizimi: 9 qadam

Video: PInt@t10n: Aqlli o'simliklarni monitoring qilish tizimi: 9 qadam

Video: PInt@t10n: Aqlli o'simliklarni monitoring qilish tizimi: 9 qadam
Video: Kant10t - Pain | Official Music Video 2024, Iyul
Anonim
PInt@t10n: Aqlli o'simliklarni monitoring qilish tizimi
PInt@t10n: Aqlli o'simliklarni monitoring qilish tizimi

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

Sensorlarni ulang
Sensorlarni ulang
Sensorlarni ulang
Sensorlarni ulang
Sensorlarni ulang
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

Ibm Bulut
Ibm Bulut

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

Qizil tugunli sozlash: yorug'lik
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

Qizil tugunli sozlash: harorat
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

Qizil tugunli sozlash: namlik
Qizil tugunli 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

Qizil tugunli sozlash: namlik
Qizil tugunli 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!