Sisukord:

PInt@t10n: nutikas taimeseire süsteem: 9 sammu
PInt@t10n: nutikas taimeseire süsteem: 9 sammu

Video: PInt@t10n: nutikas taimeseire süsteem: 9 sammu

Video: PInt@t10n: nutikas taimeseire süsteem: 9 sammu
Video: Смешал полимерный клей и получил просто шикарный результат. Субтитры 2024, Juuli
Anonim
PInt@t10n: nutikas taimeseire süsteem
PInt@t10n: nutikas taimeseire süsteem

See projekt loodi ibm iot pilve testimiseks. Kasutame esp-8266-d andmete saatmiseks ja vastuvõtmiseks ibm-i pilve ja sealt. Suhtlus esp ja ibm pilve vahel toimub MQTT kaudu.

Kõigi andmete haldamiseks ja kasutajaliidese tutvustamiseks kasutame sõlme-punast. See on väga algajasõbralik.

Alustamiseks vajate:

  • Esp-8266
  • dht 11/22 temperatuuri/niiskuse andur
  • valgustundlik diood (valguse mõõtmine)
  • helisignaal
  • maapinna niiskuse andur
  • ibm pilvekonto

Samm: ühendage andurid

Ühendage andurid
Ühendage andurid
Ühendage andurid
Ühendage andurid
Ühendage andurid
Ühendage andurid

Nagu me varem mainisime, kasutame sensori andmete lugemiseks ja saatmiseks esp8266. Selle õpetuse jaoks eeldame, et teate, kuidas oma andureid mikrokontrolleriga ühendada. Samuti peate juba teadma, kuidas koodi esp8266 -sse üles laadida.

Meie esp -mudelil on ainult üks analoogport, seega otsustasime saada oma valgusandurilt analoogteavet, sest siis saame jälgida, kui palju taim valgust saab.

Kõik muud andurid on ühendatud digitaalselt. Meie DHT11 andur saadab andmeid digitaalselt ja me kasutame andurite andmete tõlgendamiseks dht -raamatukogu.

Eespool leiate meie kasutatud andurite lülitusskeemi. Kuid pidage meeles, et meie kasutatavad andurid on sageli kaasas mooduliga, nii et saate selle hõlpsalt ühendada oma mikrokontrolleriga ilma kõigi lisatakistiteta, mille me diagrammile lisasime.

2. samm: kood

See on arduino visand, mida kasutasime. Koodide toimimise kohta saate teada, kui loete kommentaare.

#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 niiskusePin 4 #define DHTType DHT11 DHT dht (DHTPin, DHTType); ESP8266WiFiMulti WiFiMulti; ujuki temp = 0; ujuki niiskus = 0; loogiline niiskus = vale; int valgus = 0; const char* ssid = STASSID; const char* parool = STAPSK; const char* mqtt_server = "cmfwqk.messaging.internetofthings.ibmcloud.com"; WiFiClient espClient; PubSubClient klient (espClient); pikk lastMsg = 0; char msg [50]; int väärtus = 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 "// noodid meloodias: // noodi kestused: 4 = veerand noot, 8 = kaheksas noot jne: int shortTone = 80; int longTone = 200; int standardDelay = 50; int delayBetweenBars = 50; void setup_wifi () {delay (10); // Alustuseks ühendame WiFi -võrguga Serial.println (); Serial.print ("Ühendamine"); Serial.println (ssid); WiFi.begin (ssid, parool); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Seeria.print ("."); } Serial.println (""); Serial.println ("WiFi ühendatud"); Serial.println ("IP -aadress:"); Serial.println (WiFi.localIP ()); } tühine tagasihelistamine (sümbol* teema, bait* kasulik koormus, allkirjastamata int pikkus) {Serial.print ("Sõnum saabus ["); Serial.print (teema); Serial.print ("]"); jaoks (int i = 0; i <pikkus; i ++) {Serial.print ((char) kasulik koormus ); } Serial.println (); StaticJsonDocument jsonBuffer; deserializeJson (jsonPuhver, kasulik koormus); JsonObject root = jsonBuffer.as (); if (juur ["laul"] == "darude") {darude (); } if (root ["song"] == "starwars") {starwars (); } if (root ["song"] == "jacques") {Serial.println ("jakakakakakkakaka"); jacques (); }} void reconnect () {// Loop, kuni oleme uuesti ühendatud, kui (! client.connected ()) {Serial.print ("Proovitakse MQTT -ühendust…"); // Katse ühendada, kui (client.connect (MQTT_DEVICEID, MQTT_USER, MQTT_TOKEN)) {Serial.println ("connected"); client.subscribe (MQTT_TOPIC_DISPLAY); } else {Serial.print ("ebaõnnestus, rc ="); Serial.print (client.state ()); Serial.println ("proovi uuesti 5 sekundi pärast"); // Oodake 5 sekundit enne viivituse uuesti proovimist (5000); }}} void setup () {Serial.begin (9600); pinMode (niiskusPin, INPUT); dht.begin (); pinMode (0, VÄLJUND); setup_wifi (); client.setServer (mqtt_server, MQTT_PORT); client.setCallback (tagasihelistamine); viivitus (20); } void loop () {if (! client.connected ()) {reconnect (); } klient.loop (); niiskus = digitalRead (kosteusPin); valgus = analoogLoe (A0); temp = dht.readTemperature (); niiskus = dht.readHumidity (); Serial.println ("Temperatuur =" + string (temp, 1) + "\ nniiskus =" + string (niiskus, 1) + "\ nniiskus:" + string (niiskus) + "\ nLight:" + string (kerge))); Stringi kasulik koormus = "{" ts / ": {" t / ":"+String (temp, 1)+", \" h / ":"+String (niiskus, 1)+"}, \" ms / ": {" m / ":"+string (niiskus)+"}, \" ls / ": {" l / ":"+string (hele)+"}}"; Serial.println (kasulik koormus); if (client.publish (MQTT_TOPIC, (char*) payload.c_str ())) {Serial.println ("avaldada ok"); } else {Serial.println ("avaldamine ebaõnnestus"); } viivitus (2000); } void darude () {toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, longTone); viivitus (longTone); noTone (0); viivitus (delayBetweenBars); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, longTone); viivitus (longTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_E4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_E4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_E4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_E4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_E4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_E4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_E4, longTone); viivitus (longTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_D4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_D4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_D4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_D4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_D4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_D4, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_D4, longTone); viivitus (longTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_A3, longTone); viivitus (longTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, longTone); viivitus (longTone); noTone (0); viivitus (delayBetweenBars); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, longTone); viivitus (longTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_E4, longTone); viivitus (longTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, longTone); viivitus (longTone); noTone (0); viivitus (delayBetweenBars); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, shortTone); viivitus (shortTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_B3, longTone); viivitus (longTone); noTone (0); viivitus (standardDelay); toon (0, NOTE_E4, longTone); viivitus (longTone); noTone (0); viivitus (standardDelay); } tühine tähesõda () {piiks (NOTE_A4, 500); piiks (NOTE_A4, 500); piiks (NOTE_A4, 500); piiks (NOTE_F4, 350); piiks (NOTE_C5, 150); piiks (NOTE_A4, 500); piiks (NOTE_F4, 350); piiks (NOTE_C5, 150); piiks (NOTE_A4, 650); viivitus (500); piiks (NOTE_E5, 500); piiks (NOTE_E5, 500); piiks (NOTE_E5, 500); piiks (NOTE_F5, 350); piiks (NOTE_C5, 150); piiks (NOTE_GS4, 500); piiks (NOTE_F4, 350); piiks (NOTE_C5, 150); piiks (NOTE_A4, 650); } tühine piiks (int märkus, int kestus) {// Esita toon buzzerPin toonil (0, noot, kestus); viivitus (kestus); noTone (0); viivitus (standardDelay); } void heartOfCourage () {} void jacques () {piiks (NOTE_C4, 500); piiks (NOTE_D4, 500); piiks (NOTE_E4, 500); piiks (NOTE_C4, 500); piiks (NOTE_C4, 500); piiks (NOTE_D4, 500); piiks (NOTE_E4, 500); piiks (NOTE_C4, 500); piiks (NOTE_E4, 500); piiks (NOTE_F4, 500); piiks (NOTE_G4, 500); piiks (NOTE_E4, 500); piiks (NOTE_F4, 500); piiks (NOTE_G4, 500); piiks (NOTE_G4, 500); piiks (NOTE_A4, 500); piiks (NOTE_G4, 500); piiks (NOTE_F4, 500); piiks (NOTE_E4, 500); piiks (NOTE_C4, 500); piiks (NOTE_G4, 500); piiks (NOTE_A4, 500); piiks (NOTE_G4, 500); piiks (NOTE_F4, 500); piiks (NOTE_E4, 500); piiks (NOTE_C4, 500); piiks (NOTE_C4, 500); piiks (NOTE_G4, 500); piiks (NOTE_C4, 500); piiks (NOTE_C4, 500); piiks (NOTE_G4, 500); piiks (NOTE_C4, 500); }

3. samm: IBM Cloud

IBM pilv
IBM pilv

Peate seadistama IBM-pilveeksemplari. Selle kohta leiate teavet selle lingi kaudu: github.

4. samm: sõlm-PUNANE

Me kasutame sõlm-redi oma üldise äriloogika haldamiseks ja nende andmete visualiseerimiseks intuitiivses kasutajaliideses.

5. samm: sõlme-punane seadistus: kerge

Sõlme-punane seadistus: kerge
Sõlme-punane seadistus: kerge

Importige oma projekti järgmine kood.

[{"id": "deb0d57.1c46528", "type": "tab", "label": "Light", "keelatud": vale, "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": "Hankige andmeid ESP -st", "service": "registreeritud", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 120, "y": 62, "wire":

6. samm: sõlme-punane seadistus: temperatuur

Sõlme-punane seadistus: temperatuur
Sõlme-punane seadistus: temperatuur

Importige oma projekti järgmine kood.

[{"id": "fbad3799.f0e0e", "type": "tab", "label": "Temperature", "disabled": 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": "Hankige andmeid ESP -st", "service": "registreeritud", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 145,5, "y": 49, "wire":

7. samm: sõlme-punane seadistus: niiskus

Sõlme-punane seadistus: niiskus
Sõlme-punane seadistus: niiskus

Importige oma projekti järgmine kood.

[{"id": "144cd53b.c00473", "type": "tab", "label": "Niiskus", "keelatud": vale, "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": "Hankige andmeid ESP -st", "service": "registreeritud", "allDevices": false, "allApplications": "", "allDeviceTypes": false, "allLogicalInterfaces": "", "allEvents": true, "allCommands": "", "allFormats": "", "qos": 0, "x": 142, "y": 87, "wire":

8. samm: sõlme-punane seadistus: niiskus

Sõlme-PUNANE seadistus: niiskus
Sõlme-PUNANE seadistus: niiskus

Importige oma projekti järgmine kood.

[{"id": "4ee73536.ec6fc4", "type": "tab", "label": "Niiskus", "keelatud": vale, "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 ":" Saada käsk ESP -le "," service ":" registreeritud "," x ": 804.1944580078125," y ": 383.0000305175781," wire ": }, {" id ":" 4134fdb7.18e9b4 "," type ":" ibmiot in ", z: "ESP", "applicationId": "", "deviceType": "ESP8266", "eventType": "update", "commandType": "", "format": "json", "name": "Get data from ESP "," service ":" registreeritud "," allDevices ": false," allApplications ":" "," allDeviceTypes ": false," allLogicalInterfaces ":" "," allEvents ": true," allCommands ":" ", "allFormats": vale, "qos": 0, "x": 115, "y": 76, "juhtmed":

Samm: olete valmis

Palju õnne! teil on nüüd toimiv taimede vaatlussüsteem.

Kui teil on küsimusi, võtke meiega ühendust!