Turinys:
- 1 veiksmas: prijunkite jutiklius
- 2 žingsnis: kodas
- 3 žingsnis: „IBM Cloud“
- 4 žingsnis: mazgas-RAUDONAS
- 5 veiksmas: mazgo raudonos sąrankos: šviesa
- 6 veiksmas: mazgas-RAUDONAS sąranka: temperatūra
- 7 veiksmas: mazgo raudonos spalvos sąranka: drėgmė
- 8 veiksmas: mazgo raudonos spalvos sąranka: drėgmė
- 9 žingsnis: baigta
Video: PInt@t10n: Išmanioji augalų stebėjimo sistema: 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Šis projektas buvo sukurtas kaip „ibm iot“debesies testas. Mes naudojame esp-8266 duomenims siųsti ir gauti į „ibm“debesį ir iš jo. Ryšys tarp esp ir ibm debesies vyksta per MQTT.
Norėdami tvarkyti visus duomenis ir pateikti vartotojui vartotojo sąsają, naudojame mazgą raudona. Tai labai draugiška pradedantiesiems.
Norėdami pradėti, jums reikia:
- Esp-8266
- dht 11/22 temperatūros/drėgmės jutiklis
- šviesai jautrus diodas (šviesos matavimas)
- garsinis signalas
- žemės drėgmės jutiklis
- ibm debesies paskyra
1 veiksmas: prijunkite jutiklius
Kaip minėjome anksčiau, mes naudosime esp8266 jutiklių duomenims skaityti ir siųsti. Šioje pamokoje mes manysime, kad žinote, kaip prijungti jutiklius prie mikrovaldiklio. Taip pat jau turite žinoti, kaip įkelti kodą į esp8266.
Mūsų esp modelis turi tik vieną analoginį prievadą, todėl pasirinkome gauti analoginę informaciją iš savo šviesos jutiklio, nes tada galime stebėti, kiek augalas gauna šviesos.
Visi kiti jutikliai yra prijungti skaitmeniniu būdu. Mūsų DHT11 jutiklis siunčia duomenis skaitmeniniu būdu, o mes naudojame dht biblioteką jutiklių duomenims interpretuoti.
Viršuje rasite mūsų naudojamų jutiklių schemą. Tačiau atminkite, kad mūsų naudojami jutikliai dažnai būna su moduliu, kad galėtumėte lengvai prijungti jį prie savo mikrovaldiklio be visų papildomų rezistorių, kuriuos įtraukėme į schemą.
2 žingsnis: kodas
Tai yra mūsų naudojamas arduino eskizas. Apie kodo veikimą galite sužinoti perskaitę komentarus.
#include ArduinoJson.h #include DHT_U.h #include DHT.h #include ESP8266WiFi.h #include ESP8266WiFiMulti.h #include PubSubClient.h
#define STASSID "ucll-projectweek-IoT" #define STAPSK "Foo4aiHa" #define DHTPin 5 #define drėgmėPin 4 #define DHTType DHT11 DHT dht (DHTPin, DHTType); ESP8266WiFiMulti WiFiMulti; plūdės temperatūra = 0; plūdės drėgmė = 0; loginė drėgmė = klaidinga; int šviesa = 0; const char* ssid = STASSID; const char* slaptažodis = STAPSK; const char* mqtt_server = "cmfwqk.messaging.internetofthings.ibmcloud.com"; „WiFiClient espClient“; „PubSubClient“klientas (espClient); ilgas paskutinisMsg = 0; žinučių žinutė [50]; int reikšmė = 0; #define MQTT_HOST "cmfwqk.messaging.internetofthings.ibmcloud.com" #define MQTT_PORT 1883 #define MQTT_DEVICEID "d: cmfwqk: ESP8266: ESP" #define MQTT_USER "use-token-auth" #define MQT #define MQTT_USER iot-2/evt/status/fmt/json "#define MQTT_TOPIC_DISPLAY" iot-2/cmd/update/fmt/json "#include" pitches.h "// užrašai melodijoje: // natų trukmė: 4 = ketvirtis pastaba, 8 = aštunta nata ir tt: int shortTone = 80; int longTone = 200; int standardDelay = 50; int delayBetweenBars = 50; void setup_wifi () {delay (10); // Pradedame prisijungdami prie „WiFi“tinklo Serial.println (); Serial.print („Prisijungimas prie“); Serial.println (ssid); WiFi.begin (ssid, slaptažodis); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serijinis atspaudas ("."); } Serial.println (""); Serial.println („WiFi prijungtas“); Serial.println ("IP adresas:"); Serial.println (WiFi.localIP ()); } negaliojantis atgalinis skambutis (char* tema, baitas* naudingoji apkrova, nepasirašytas int ilgis) {Serial.print ("Pranešimas atkeliavo ["); Serial.print (tema); Serial.print ("]"); for (int i = 0; i <ilgis; i ++) {Serial.print ((char) naudingoji apkrova ); } Serial.println (); StaticJsonDocument jsonBuffer; deserializeJson (jsonBuffer, payload); JsonObject root = jsonBuffer.as (); if (šaknis ["daina"] == "darude") {darude (); } if (root ["song"] == "starwars") {starwars (); } if (root ["song"] == "jacques") {Serial.println ("jakakakakakakakaka"); žakas (); }} void reconnect () {// Ciklas, kol vėl prisijungsime, kol (! client.connected ()) {Serial.print ("Bandoma prisijungti prie MQTT …"); // Bandymas prisijungti, jei (client.connect (MQTT_DEVICEID, MQTT_USER, MQTT_TOKEN)) {Serial.println ("connected"); client.subscribe (MQTT_TOPIC_DISPLAY); } else {Serial.print ("nepavyko, rc ="); Serial.print (client.state ()); Serial.println ("bandykite dar kartą po 5 sekundžių"); // Palaukite 5 sekundes prieš vėl bandydami uždelsti (5000); }}} void setup () {Serial.begin (9600); pinMode (drėgmės kaištis, įvestis); dht.begin (); pinMode (0, OUTPUT); „setup_wifi“(); client.setServer (mqtt_server, MQTT_PORT); client.setCallback (atšaukimas); vėlavimas (20); } void loop () {if (! client.connected ()) {reconnect (); } client.loop (); drėgmė = digitalRead (drėgmėsPin); šviesa = analogRead (A0); temp = dht.readTemperature (); drėgmė = dht.readHumidity (); Serial.println ("Temperatūra =" + Eilutė (temp, 1) + "\ nKosena =" + Eilutė (drėgmė, 1) + "\ n Drėgmė:" + Eilutė (drėgmė) + "\ nŠviesa:" + Eilutė (šviesi)); Eilutės naudingoji apkrova = "{" ts / ": {" t / ":"+Eilutė (temp, 1)+", \" h / ":"+Eilutė (drėgmė, 1)+"}, \" ms / ": {" m / ":"+Eilutė (drėgmė)+"}, \" ls / ": {" l / ":"+Eilutė (šviesi)+"}}"; Serial.println (naudingoji apkrova); if (client.publish (MQTT_TOPIC, (char*) payload.c_str ())) {Serial.println ("paskelbti gerai"); } else {Serial.println ("nepavyko paskelbti"); } uždelsimas (2000); } void darude () {tone (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (delayBetweenBars); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_E4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_E4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_E4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_E4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_E4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_E4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_E4, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_D4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_D4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_D4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_D4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_D4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_D4, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_D4, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_A3, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (delayBetweenBars); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_E4, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (delayBetweenBars); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, shortTone); uždelsimas (trumpas tonas); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_B3, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (standartinis vėlavimas); tonas (0, NOTE_E4, ilgas tonas); uždelsimas (longTone); noTone (0); uždelsimas (standartinis vėlavimas); } niekiniai žvaigždžių karai () {pyptelėjimas (NOTE_A4, 500); pyptelėjimas (NOTE_A4, 500); pyptelėjimas (NOTE_A4, 500); pyptelėjimas (NOTE_F4, 350); pyptelėjimas (NOTE_C5, 150); pyptelėjimas (NOTE_A4, 500); pyptelėjimas (NOTE_F4, 350); pyptelėjimas (NOTE_C5, 150); pyptelėjimas (NOTE_A4, 650); vėlavimas (500); pyptelėjimas (NOTE_E5, 500); pyptelėjimas (NOTE_E5, 500); pyptelėjimas (NOTE_E5, 500); pyptelėjimas (NOTE_F5, 350); pyptelėjimas (NOTE_C5, 150); pyptelėjimas (NOTE_GS4, 500); pyptelėjimas (NOTE_F4, 350); pyptelėjimas (NOTE_C5, 150); pyptelėjimas (NOTE_A4, 650); } void pyptelėjimas (int užrašas, int trukmė) {// Play tone on buzzerPin tone (0, pastaba, trukmė); vėlavimas (trukmė); noTone (0); uždelsimas (standartinis vėlavimas); } void heartOfCourage () {} void jacques () {pyptelėjimas (NOTE_C4, 500); pyptelėjimas (NOTE_D4, 500); pyptelėjimas (NOTE_E4, 500); pyptelėjimas (NOTE_C4, 500); pyptelėjimas (NOTE_C4, 500); pyptelėjimas (NOTE_D4, 500); pyptelėjimas (NOTE_E4, 500); pyptelėjimas (NOTE_C4, 500); pyptelėjimas (NOTE_E4, 500); pyptelėjimas (NOTE_F4, 500); pyptelėjimas (NOTE_G4, 500); pyptelėjimas (NOTE_E4, 500); pyptelėjimas (NOTE_F4, 500); pyptelėjimas (NOTE_G4, 500); pyptelėjimas (NOTE_G4, 500); pyptelėjimas (NOTE_A4, 500); pyptelėjimas (NOTE_G4, 500); pyptelėjimas (NOTE_F4, 500); pyptelėjimas (NOTE_E4, 500); pyptelėjimas (NOTE_C4, 500); pyptelėjimas (NOTE_G4, 500); pyptelėjimas (NOTE_A4, 500); pyptelėjimas (NOTE_G4, 500); pyptelėjimas (NOTE_F4, 500); pyptelėjimas (NOTE_E4, 500); pyptelėjimas (NOTE_C4, 500); pyptelėjimas (NOTE_C4, 500); pyptelėjimas (NOTE_G4, 500); pyptelėjimas (NOTE_C4, 500); pyptelėjimas (NOTE_C4, 500); pyptelėjimas (NOTE_G4, 500); pyptelėjimas (NOTE_C4, 500); }
3 žingsnis: „IBM Cloud“
Turite nustatyti IBM debesies egzempliorių. Informaciją apie tai galite rasti šioje nuorodoje: github.
4 žingsnis: mazgas-RAUDONAS
„Node-red“naudojame bendrai verslo logikai tvarkyti ir šiuos duomenis vizualizuoti intuityvioje vartotojo sąsajoje.
5 veiksmas: mazgo raudonos sąrankos: šviesa
Importuokite šį kodą į savo projektą.
[{"id": "deb0d57.1c46528", "type": "tab", "label": "Light", "disabled": false, "info": ""}, {"id": "8a0fcaac. 4e54 "," type ":" ibmiot in "," z ":" deb0d57.1c46528 "," authentication ":" bindService "," apiKey ":" "," inputType ":" evt "," logicInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "Gauti duomenis iš ESP", "service": "registruotas", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": tiesa, "allCommands": "", "allFormats": "", "qos": 0, "x": 120, "y": 62, "laidai":
6 veiksmas: mazgas-RAUDONAS sąranka: temperatūra
Importuokite šį kodą į savo projektą.
[{"id": "fbad3799.f0e0e", "type": "tab", "label": "Temperatūra", "invalid": false, "info": ""}, {"id": "b8618eb9. 1c9288 "," type ":" ibmiot in "," z ":" fbad3799.f0e0e "," authentication ":" bindService "," apiKey ":" "," inputType ":" evt "," logicInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "Gauti duomenis iš ESP", "service": "registruotas", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": tiesa, "allCommands": "", "allFormats": "", "qos": 0, "x": 145,5, "y": 49, "laidai":
7 veiksmas: mazgo raudonos spalvos sąranka: drėgmė
Importuokite šį kodą į savo projektą.
[{"id": "144cd53b.c00473", "type": "tab", "label": "Drėgmė", "invalid": false, "info": "", {"id": "d958f58b. 2678e "," type ":" ibmiot in "," z ":" 144cd53b.c00473 "," authentication ":" bindService "," apiKey ":" "," inputType ":" evt "," logicInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "Gauti duomenis iš ESP", "service": "registruotas", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 142, "y": 87, "laidai":
8 veiksmas: mazgo raudonos spalvos sąranka: drėgmė
Importuokite šį kodą į savo projektą.
[{"id": "4ee73536.ec6fc4", "type": "tab", "label": "Drėgmė", "invalid": false, "info": "", {"id": "a6daac3e. 2d5268 "," type ":" ibmiot out "," z ":" 4ee73536.ec6fc4 "," authentication ":" bindService "," apiKey ":" "," outputType ":" cmd "," deviceId ":" ESP "," deviceType ":" ESP8266 "," eventCommandType ":" update "," format ":" json "," data ":" msg "," qos ": 0," name ":" Siųsti komandą ESP "," service ":" registruotas "," x ": 804.1944580078125," y ": 383.0000305175781," wire ": }, {" id ":" 4134fdb7.18e9b4 "," type ":" ibmiot in ", "z": "4ee73536.ec6fc4", "autentifikavimas": "bindService", "apiKey": "", "inputType": "evt", "loginėInterface": "", "ruleId": "", "deviceId": "ESP", "applicationId": "", "deviceType": "ESP8266", "eventType": "update", "commandType": "", "format": "json", "name": "Gauti duomenis iš ESP "," service ":" registruotas "," allDevices ": false," allApplications ":" "," allDeviceTypes ": false," allLogicalInterfaces ":" "," allEvents ": true," allCommands ":" ", "allFormats": false, "qos": 0, "x": 115, "y": 76, "laidai":
9 žingsnis: baigta
Sveikinu! dabar turite veikiančią augalų stebėjimo sistemą.
Jei turite klausimų, nedvejodami susisiekite su mumis!