Բովանդակություն:
- Քայլ 1: Միացրեք ձեր տվիչները
- Քայլ 2: Կոդ
- Քայլ 3: Ibm ամպ
- Քայլ 4: Node-RED
- Քայլ 5. Node-RED կարգավորում. Թեթև
- Քայլ 6. Node-RED կարգավորում. Peratերմաստիճան
- Քայլ 7: Node-RED կարգավորում. Խոնավություն
- Քայլ 8: Node-RED կարգավորում. Խոնավություն
- Քայլ 9: Դուք կատարված եք:
Video: PInt@t10n: Խելացի բույսերի մոնիտորինգի համակարգ `9 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Այս նախագիծը ստեղծվել է որպես փորձություն ibm iot ամպի համար: Մենք օգտագործում ենք esp-8266 ՝ տվյալները ուղարկելու և ստանալու համար ibm ամպից և դրանից: Esp- ի և ibm ամպի միջև հաղորդակցությունը տեղի է ունենում MQTT- ի միջոցով:
Բոլոր տվյալները մշակելու և օգտագործողին ինտերֆեյս ներկայացնելու համար մենք օգտագործում ենք node-red- ը: Շատ բարեկամական է սկսնակների համար:
Սկսելու համար ձեզ հարկավոր է.
- Esp-8266
- dht 11/22 ջերմաստիճանի/խոնավության ցուցիչ
- լուսազգայուն դիոդ (լույսի չափում)
- բզզոց
- գետնի խոնավության տվիչ
- ibm ամպային հաշիվ
Քայլ 1: Միացրեք ձեր տվիչները
Ինչպես արդեն նշեցինք, մենք պատրաստվում ենք օգտագործել esp8266- ը ՝ սենսորային տվյալներ կարդալու և ուղարկելու համար: Այս ձեռնարկի համար մենք ենթադրելու ենք, որ դուք գիտեք, թե ինչպես միացնել ձեր տվիչները ձեր միկրոկառավարիչին: Դուք նաև արդեն պետք է իմանաք, թե ինչպես պետք է վերբեռնել կոդը esp8266- ում:
Մեր esp մոդելը ունի միայն մեկ անալոգային պորտ, ուստի մենք ընտրեցինք անալոգային տեղեկատվություն ստանալ մեր լույսի ցուցիչից, քանի որ այդ ժամանակ մենք կարող ենք վերահսկել, թե որքան լույս է ստանում գործարանը:
Մնացած բոլոր տվիչները միացված են թվայնորեն: Մեր DHT11 տվիչը թվային տվյալներ է ուղարկում, և մենք օգտագործում ենք dht գրադարանը ՝ սենսորների տվյալները մեկնաբանելու համար:
Վերևում կարող եք գտնել մեր օգտագործած տվիչների միացման սխեմա: Բայց խնդրում ենք նկատի ունենալ, որ մեր օգտագործած տվիչները հաճախ գալիս են մոդուլով, այնպես որ կարող եք այն հեշտությամբ միացնել ձեր միկրոկառավարիչին `առանց դիագրամում ներառված բոլոր լրացուցիչ դիմադրիչների:
Քայլ 2: Կոդ
Սա arduino ուրվագիծն է, որը մենք օգտագործել ենք: Դուք կարող եք իմանալ, թե ինչպես է աշխատում ծածկագիրը, եթե կարդաք մեկնաբանությունները:
#ներառել ArduinoJson.h #ներառել DHT_U.h #ներառել DHT.h #ներառել ESP8266WiFi.h #ներառել ESP8266WiFiMulti.h #ներառել PubSubClient.h
#սահմանել STASSID «ucll-projectweek-IoT» #սահմանել STAPSK «Foo4aiHa» #սահմանել DHTPin 5 #սահմանել խոնավությունըՓին 4 #սահմանել DHTType DHT11 DHT dht (DHTPin, DHTType); ESP8266WiFiMulti WiFiMulti; բոց ջերմաստիճան = 0; բոց խոնավություն = 0; բուլյան խոնավություն = կեղծ; int լույս = 0; const char* ssid = STASSID; const char* գաղտնաբառ = STAPSK; const char* mqtt_server = "cmfwqk.messaging.internetofthings.ibmcloud.com"; WiFiClient espClient; PubSubClient հաճախորդ (espClient); երկար 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 "MIC_TQT #MIC #" MICT " iot-2/evt/status/fmt/json " #սահմանել 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 ()); } անվավեր հետադարձ կապ (char* թեմա, բայթ* բեռնվածություն, անստորագիր int երկարություն) {Serial.print ("Message arri ["); Serial.print (թեմա); Serial.print ("]"); համար (int i = 0; i <երկարություն; i ++) {Serial.print ((char) payload ); } Serial.println (); StaticJsonDocument jsonBuffer; deserializeJson (jsonBuffer, բեռնվածություն); JsonObject արմատ = jsonBuffer.as (); if (արմատ ["երգ"] == "darude") {darude (); } if (արմատ ["երգ"] == "starwars") {starwars (); } if (արմատ ["երգ"] == "jacques") {Serial.println ("jakakakakakkakaka"); ջակ (); }} void նորից միանալ () {// Loop, մինչև չվերամիավորվենք (! 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 (moistPin, 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); լույս = analogRead (A0); temp = dht.readTemperature (); խոնավություն = dht.readHumidity (); Serial.println ("peratերմաստիճան =" + Լար (ջերմաստիճան, 1) + "\ n Խոնավություն =" + Լար (խոնավություն, 1) + "\ n Խոնավություն." + Լար (խոնավություն) + "\ n Լույս." + Լար (լույս)); String payload = "{" ts / ": {" t / ":"+String (temp, 1)+", \" h / ":"+String (խոնավություն, 1)+"}, \" ms / ": {" m / ":"+Լար (խոնավություն)+"}, \" ls / ": {" l / ":"+Լար (լույս)+"}}"; Serial.println (բեռնվածություն); if (client.publish (MQTT_TOPIC, (char*) payload.c_str ())) {Serial.println ("հրապարակել լավ"); } else {Serial.println («հրապարակումը ձախողվեց»); } ուշացում (2000); } void darude () {տոն (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); } դատարկ ազդանշան (int նշում, int տևողություն) {// նվագարկել ազդանշան buzzerPin- ի վրա (0, նշում, տևողություն); ուշացում (տևողություն); noTone (0); ուշացում (standardDelay); } void heartOfCourage () {} void jacques () {ազդանշան (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 ամպ
Դուք պետք է IBM-cloud օրինակ ստեղծեք: Այս մասին տեղեկություններ կարող եք գտնել այս հղումով ՝ github:
Քայլ 4: Node-RED
Մենք օգտագործում ենք node-red մեր ընդհանուր բիզնես տրամաբանությունը մշակելու և այս տվյալները ինտուիտիվ ինտերֆեյսում պատկերելու համար:
Քայլ 5. Node-RED կարգավորում. Թեթև
Ներդրեք հետևյալ ծածկագիրը ձեր նախագծում:
[{"id": "deb0d57.1c46528", "type": "tab", "label": "Light", "disabled": false, "info": ""}, {"id": "8a0fcaac. 4e54 "," type ":" ibmiot in "," z ":" deb0d57.1c46528 "," 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": 120, "y": 62, "լարերը":
Քայլ 6. Node-RED կարգավորում. Peratերմաստիճան
Ներդրեք հետևյալ ծածկագիրը ձեր նախագծում:
[{"id": "fbad3799.f0e0e", "type": "tab", "label": "Temperature", "disabled": 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, "լարերը":
Քայլ 7: Node-RED կարգավորում. Խոնավություն
Ներդրեք հետևյալ ծածկագիրը ձեր նախագծում:
[{"id": "144cd53b.c00473", "type": "tab", "label": "խոնավություն", "հաշմանդամ" ՝ 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, "լարերը":
Քայլ 8: Node-RED կարգավորում. Խոնավություն
Ներդրեք հետևյալ ծածկագիրը ձեր նախագծում:
[{"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 ":" թարմացում "," 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", "authentication": "boundService", "apiKey": "", "inputType": "evt", "logicInterface": "", "ruleId": "", "deviceId" ՝ "ESP", "applicationId": "", "deviceType": "ESP8266", "eventType": "update", "commandType": "", "format": "json", "name": "Get data ESP- ից »,« ծառայություն »՝« գրանցված »,« allDevices »՝ կեղծ,« allApplications »՝« »,« allDeviceTypes »՝ կեղծ,« allLogicalInterfaces »:, "allFormats": false, "qos": 0, "x": 115, "y": 76, "wires":
Քայլ 9: Դուք կատարված եք:
Շնորհավորում եմ: Դուք այժմ ունեք աշխատող կայանների դիտարկման համակարգ:
Եթե ունեք որևէ հարց, մի հապաղեք կապվել մեզ հետ: