Satura rādītājs:
- 1. darbība: pievienojiet sensorus
- 2. darbība: kods
- 3. darbība: IBM mākonis
- 4. solis: mezgls SARKANS
- 5. solis: mezgls-SARKANA iestatīšana: gaišs
- 6. darbība: mezgls-SARKANA iestatīšana: temperatūra
- 7. solis: mezgls-SARKANA iestatīšana: mitrums
- 8. darbība: mezgls-SARKANA iestatīšana: mitrums
- 9. solis: esat pabeidzis
Video: PInt@t10n: viedā augu uzraudzības sistēma: 9 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Šis projekts tika izveidots kā tests ibm iot mākonim. Mēs izmantojam esp-8266, lai nosūtītu un saņemtu datus uz ibm mākoni un no tā. Saziņa starp esp un ibm mākoni notiek, izmantojot MQTT.
Lai apstrādātu visus datus un iepazīstinātu lietotāju ar lietotāja interfeisu, mēs izmantojam mezglu sarkanu. Tas ir ļoti draudzīgs iesācējiem.
Lai sāktu, jums ir nepieciešams:
- Esp-8266
- dht 11/22 temperatūras/mitruma sensors
- gaismjutīga diode (gaismas mērīšana)
- skaņas signāls
- zemes mitruma sensors
- ibm mākoņa konts
1. darbība: pievienojiet sensorus
Kā jau minējām iepriekš, mēs izmantosim esp8266, lai lasītu un nosūtītu sensora datus. Šajā apmācībā mēs pieņemsim, ka jūs zināt, kā savienot sensorus ar mikrokontrolleri. Jums arī jāzina, kā augšupielādēt kodu uz esp8266.
Mūsu ESP modelim ir tikai viens analogais ports, tāpēc mēs izvēlējāmies saņemt analogo informāciju no mūsu gaismas sensora, jo tad mēs varam kontrolēt, cik daudz gaismas iekārta saņem.
Visi pārējie sensori ir savienoti digitāli. Mūsu DHT11 sensors nosūta datus digitāli, un mēs izmantojam dht bibliotēku, lai interpretētu sensoru datus.
Iepriekš varat atrast mūsu izmantoto sensoru shēmu. Bet, lūdzu, paturiet prātā, ka mūsu izmantotajiem sensoriem bieži ir pievienots modulis, lai jūs varētu viegli savienot to ar savu mikrokontrolleri bez visiem papildu rezistoriem, kurus mēs iekļāvām diagrammā.
2. darbība: kods
Šī ir mūsu izmantotā arduino skice. Jūs varat uzzināt, kā kods darbojas, izlasot komentārus.
#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 mitrumsPin 4 #define DHTType DHT11 DHT dht (DHTPin, DHTType); ESP8266WiFiMulti WiFiMulti; pludiņa temperatūra = 0; pludiņa mitrums = 0; Būla mitrums = nepatiess; int gaisma = 0; const char* ssid = STASSID; const char* parole = STAPSK; const char* mqtt_server = "cmfwqk.messaging.internetofthings.ibmcloud.com"; WiFiClient espClient; PubSubClient klients (espClient); ilgi lastMsg = 0; char msg [50]; int vērtība = 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 "// piezīmes melodijā: // piezīmju ilgums: 4 = ceturksnis piezīme, 8 = astotā nots utt.: int shortTone = 80; int longTone = 200; int standardDelay = 50; int delayBetweenBars = 50; void setup_wifi () {delay (10); // Mēs sākam, izveidojot savienojumu ar WiFi tīklu Serial.println (); Serial.print ("Savienojuma izveide"); Serial.println (ssid); WiFi.begin (ssid, parole); while (WiFi.status ()! = WL_CONNECTED) {kavēšanās (500); Sērijas nospiedums ("."); } Serial.println (""); Serial.println ("savienots WiFi"); Serial.println ("IP adrese:"); Serial.println (WiFi.localIP ()); } void callback (char* topic, byte* payload, unsigned int length) {Serial.print ("Ziņojums saņemts ["); Serial.print (tēma); Serial.print ("]"); par (int i = 0; i <garums; i ++) {Serial.print ((char) lietderīgā slodze ); } Sērijas.println (); StaticJsonDocument jsonBuffer; deserializeJson (jsonBuffer, payload); JsonObject sakne = jsonBuffer.as (); ja (sakne ["dziesma"] == "darude") {darude (); } if (root ["song"] == "starwars") {starwars (); } if (root ["dziesma"] == "jacques") {Serial.println ("jakakakakakakakaka"); žaks (); }} void reconnect () {// Cilpa, līdz mēs atkal izveidojam savienojumu, kamēr (! client.connected ()) {Serial.print ("Mēģina izveidot savienojumu ar MQTT …"); // Mēģināt izveidot savienojumu, ja (client.connect (MQTT_DEVICEID, MQTT_USER, MQTT_TOKEN)) {Serial.println ("connected"); client.subscribe (MQTT_TOPIC_DISPLAY); } cits {Serial.print ("neizdevās, rc ="); Sērijas nospiedums (client.state ()); Serial.println ("mēģiniet vēlreiz pēc 5 sekundēm"); // Pagaidiet 5 sekundes pirms atkārtotas kavēšanās (5000); }}} void setup () {Serial.begin (9600); pinMode (mitruma spraudnis, IEEJA); dht.begin (); pinMode (0, OUTPUT); setup_wifi (); client.setServer (mqtt_server, MQTT_PORT); client.setCallback (atzvanīšana); kavēšanās (20); } void loop () {if (! client.connected ()) {reconnect (); } client.loop (); mitrums = digitalRead (mitrumsPin); gaisma = analogRead (A0); temp = dht.readTemperature (); mitrums = dht.readHumidity (); Serial.println ("Temperatūra =" + virkne (temp, 1) + "\ nMitrums =" + virkne (mitrums, 1) + "\ nMitrums:" + virkne (mitrums) + "\ nGaisma:" + virkne (gaiša))); Stīgu lietderīgā slodze = "{" ts / ": {" t / ":"+String (temp, 1)+", \" h / ":"+String (mitrums, 1)+"}, \" ms / ": {" m / ":"+String (mitrums)+"}, \" ls / ": {" l / ":"+String (light)+"}}"; Serial.println (lietderīgā slodze); if (client.publish (MQTT_TOPIC, (char*) payload.c_str ())) {Serial.println ("publicēt ok"); } else {Serial.println ("publicēšana neizdevās"); } kavēšanās (2000); } void darude () {tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, garš tonis); kavēšanās (longTone); noTone (0); kavēšanās (delayBetweenBars); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, garš tonis); kavēšanās (longTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_E4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_E4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_E4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_E4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_E4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_E4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_E4, garš tonis); kavēšanās (longTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_D4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_D4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_D4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_D4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_D4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_D4, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_D4, garš tonis); kavēšanās (longTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_A3, garš tonis); kavēšanās (longTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, garš tonis); kavēšanās (longTone); noTone (0); kavēšanās (delayBetweenBars); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, garš tonis); kavēšanās (longTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_E4, garš tonis); kavēšanās (longTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, garš tonis); kavēšanās (longTone); noTone (0); kavēšanās (delayBetweenBars); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, shortTone); kavēšanās (shortTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_B3, garš tonis); kavēšanās (longTone); noTone (0); aizkave (standardDelay); tonis (0, NOTE_E4, garš tonis); kavēšanās (longTone); noTone (0); aizkave (standardDelay); } void starwars () {pīkstiens (NOTE_A4, 500); pīkstiens (NOTE_A4, 500); pīkstiens (NOTE_A4, 500); pīkstiens (NOTE_F4, 350); pīkstiens (NOTE_C5, 150); pīkstiens (NOTE_A4, 500); pīkstiens (NOTE_F4, 350); pīkstiens (NOTE_C5, 150); pīkstiens (NOTE_A4, 650); kavēšanās (500); pīkstiens (NOTE_E5, 500); pīkstiens (NOTE_E5, 500); pīkstiens (NOTE_E5, 500); pīkstiens (NOTE_F5, 350); pīkstiens (NOTE_C5, 150); pīkstiens (NOTE_GS4, 500); pīkstiens (NOTE_F4, 350); pīkstiens (NOTE_C5, 150); pīkstiens (NOTE_A4, 650); } void pīkstiens (int not, int duration) {// Atskaņošanas signāls uz buzzerPin signāla (0, piezīme, ilgums); kavēšanās (ilgums); noTone (0); aizkave (standardDelay); } void heartOfCourage () {} void jacques () {pīkstiens (NOTE_C4, 500); pīkstiens (NOTE_D4, 500); pīkstiens (NOTE_E4, 500); pīkstiens (NOTE_C4, 500); pīkstiens (NOTE_C4, 500); pīkstiens (NOTE_D4, 500); pīkstiens (NOTE_E4, 500); pīkstiens (NOTE_C4, 500); pīkstiens (NOTE_E4, 500); pīkstiens (NOTE_F4, 500); pīkstiens (NOTE_G4, 500); pīkstiens (NOTE_E4, 500); pīkstiens (NOTE_F4, 500); pīkstiens (NOTE_G4, 500); pīkstiens (NOTE_G4, 500); pīkstiens (NOTE_A4, 500); pīkstiens (NOTE_G4, 500); pīkstiens (NOTE_F4, 500); pīkstiens (NOTE_E4, 500); pīkstiens (NOTE_C4, 500); pīkstiens (NOTE_G4, 500); pīkstiens (NOTE_A4, 500); pīkstiens (NOTE_G4, 500); pīkstiens (NOTE_F4, 500); pīkstiens (NOTE_E4, 500); pīkstiens (NOTE_C4, 500); pīkstiens (NOTE_C4, 500); pīkstiens (NOTE_G4, 500); pīkstiens (NOTE_C4, 500); pīkstiens (NOTE_C4, 500); pīkstiens (NOTE_G4, 500); pīkstiens (NOTE_C4, 500); }
3. darbība: IBM mākonis
Jums ir jāiestata IBM mākoņa instance. Informāciju par to varat atrast, izmantojot šo saiti: github.
4. solis: mezgls SARKANS
Mēs izmantojam mezglu sarkanu, lai pārvaldītu mūsu vispārējo biznesa loģiku un vizualizētu šos datus intuitīvā lietotāja saskarnē.
5. solis: mezgls-SARKANA iestatīšana: gaišs
Importējiet savā projektā šādu kodu.
[{"id": "deb0d57.1c46528", "type": "tab", "label": "Light", "disabled": false, "info": ""}, {"id": "8a0fcaac. 4e54 "," type ":" ibmiot in "," z ":" deb0d57.1c46528 "," autentifikācija ":" bindService "," apiKey ":" "," inputType ":" evt "," logicInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "Iegūt datus no ESP", "service": "reģistrēts", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 120, "y": 62, "wire":
6. darbība: mezgls-SARKANA iestatīšana: temperatūra
Importējiet savā projektā šādu kodu.
[{"id": "fbad3799.f0e0e", "type": "tab", "label": "Temperature", "disabled": false, "info": ""}, {"id": "b8618eb9. 1c9288 "," type ":" ibmiot in "," z ":" fbad3799.f0e0e "," autentifikācija ":" bindService "," apiKey ":" "," inputType ":" evt "," logicInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "Iegūt datus no ESP", "service": "reģistrēts", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 145,5, "y": 49, "wire":
7. solis: mezgls-SARKANA iestatīšana: mitrums
Importējiet savā projektā šādu kodu.
[{"id": "144cd53b.c00473", "type": "tab", "label": "Mitrums", "atspējots": nepatiess, "info": "", {"id": "d958f58b. 2678e "," type ":" ibmiot in "," z ":" 144cd53b.c00473 "," autentifikācija ":" bindService "," apiKey ":" "," inputType ":" evt "," logicInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "Iegūt datus no ESP", "service": "reģistrēts", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 142, "y": 87, "wire":
8. darbība: mezgls-SARKANA iestatīšana: mitrums
Importējiet savā projektā šādu kodu.
[{"id": "4ee73536.ec6fc4", "type": "tab", "label": "Mitrums", "atspējots": nepatiess, "info": "", {"id": "a6daac3e. 2d5268 "," type ":" ibmiot out "," z ":" 4ee73536.ec6fc4 "," autentifikācija ":" bindService "," apiKey ":" "," outputType ":" cmd "," deviceId ":" ESP "," deviceType ":" ESP8266 "," eventCommandType ":" update "," format ":" json "," data ":" msg "," qos ": 0," name ":" Sūtīt komandu ESP "," service ":" reģistrēts "," x ": 804.1944580078125," y ": 383.0000305175781," Wire ": }, {" id ":" 4134fdb7.18e9b4 "," type ":" ibmiot in ", "z": "4ee73536.ec6fc4", "autentifikācija": "bindService", "apiKey": "", "inputType": "evt", "loģiskaInterface": "", "ruleId": "", "deviceId": "ESP", "applicationId": "", "deviceType": "ESP8266", "eventType": "update", "commandType": "", "format": "json", "name": "Get data no ESP "," serviss ":" reģistrēts "," allDevices ": nepatiess," allApplications ":" "," allDeviceTypes ": nepatiess," allLogicalInterfaces ":" "," allEvents ": true," allCommands ":" ", "allFormats": nepatiess, "qos": 0, "x": 115, "y": 76, "vadi":
9. solis: esat pabeidzis
Apsveicam! tagad jums ir strādājoša augu novērošanas sistēma.
Ja jums ir kādi jautājumi, nevilcinieties sazināties ar mums!