Мазмұны:

PInt@t10n: Ақылды өсімдіктерді бақылау жүйесі: 9 қадам
PInt@t10n: Ақылды өсімдіктерді бақылау жүйесі: 9 қадам

Бейне: PInt@t10n: Ақылды өсімдіктерді бақылау жүйесі: 9 қадам

Бейне: PInt@t10n: Ақылды өсімдіктерді бақылау жүйесі: 9 қадам
Бейне: Kant10t - Pain | Official Music Video 2024, Шілде
Anonim
PInt@t10n: Ақылды өсімдіктерді бақылау жүйесі
PInt@t10n: Ақылды өсімдіктерді бақылау жүйесі

Бұл жоба ibm iot бұлтын тексеру үшін жасалған. Біз IBM бұлтына деректерді жіберу және алу үшін esp-8266 қолданамыз. Esp және ibm бұлты арасындағы байланыс MQTT арқылы жүзеге асады.

Барлық деректерді өңдеу және пайдаланушыға интерфейсті ұсыну үшін біз қызыл-қызыл түйін қолданамыз. Бұл жаңадан бастаушыларға өте ыңғайлы.

Бастау үшін сізге қажет:

  • 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 анықтаңыз #ылғалдыPin 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); long lastMsg = 0; char msg [50]; int мәні = 0; #dquine MQTT_HOST «cmfwqk.messaging.internetofthings.ibmcloud.com» #define MQTT_PORT 1883 #dequine MQTT_DEVICEID «d: cmfwqk: ESP8266: ESP» #define MQTT_USER «use-token-auth» MtToThenThen « iot-2/evt/status/fmt/json «#dquine 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 () {delay (10); // Біз Serial.println () WiFi желісіне қосылудан бастаймыз; 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 («Хабар келді [»); Serial.print (тақырып); Serial.print («]»); for (int i = 0; i <length; i ++) {Serial.print ((char) пайдалы жүктеме ); } Serial.println (); StaticJsonDocument jsonBuffer; deserializeJson (jsonBuffer, пайдалы жүктеме); JsonObject түбірі = jsonBuffer.as (); if (root [«song»] == «darude») {darude (); } if (root [«song»] == «starwars») {starwars (); } if (root [«song»] == «jacques») {Serial.println («jakakakakakkakaka»); Жак (); }} void reconnect () {// Біз қайта қосылмағанша айналдырамыз (! client.connected ()) {Serial.print («MQTT қосылымы әрекет етуде …»); // Қосылу әрекеті if (client.connect (MQTT_DEVICEID, MQTT_USER, MQTT_TOKEN)) {Serial.println («қосылған»); client.suboncribe (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 ()) {reconnect (); } client.loop (); ылғал = digitalRead (moistPin); жарық = analogRead (A0); temp = dht.readTemperature (); ылғалдылық = dht.readHumidity (); Serial.println («Температура =» + Жол (темп, 1) + «\ n Ылғалдылық =» + Жол (ылғалдылық, 1) + «\ n Ылғал:» + Жол (ылғал) + «\ nЖарық:» + Жол (жарық)); Жол жүктемесі = «{» ts / «: {» t / «:»+Жол (темп, 1)+«, \» h / «:»+Жол (ылғалдылық, 1)+«}, \» ms / «: {» m / «:»+Жол (ылғал)+«}, \» ls / «: {» l / «:»+Жол (жарық)+«}}»; Serial.println (пайдалы жүктеме); if (client.publish (MQTT_TOPIC, (char*) payload.c_str ())) {Serial.println («жариялау жақсы»); } else {Serial.println («жариялау сәтсіз болды»); } кешіктіру (2000 ж.); } void darude () {tone (0, NOTE_B3, shortTone); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, ұзын тон); кідіріс (ұзақ тон); noTone (0); кешіктіру (delayBetweenBars); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, ұзын тон); кідіріс (ұзақ тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_E4, қысқа дыбыс); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_E4, қысқа дыбыс); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_E4, қысқа дыбыс); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_E4, қысқа дыбыс); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_E4, қысқа дыбыс); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_E4, қысқа дыбыс); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_E4, ұзын тон); кідіріс (ұзақ тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_D4, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_D4, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_D4, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_D4, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_D4, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_D4, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_D4, ұзын тон); кідіріс (ұзақ тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_A3, ұзын тон); кідіріс (ұзақ тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, ұзын тон); кідіріс (ұзақ тон); noTone (0); кешіктіру (delayBetweenBars); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, ұзын тон); кідіріс (ұзақ тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_E4, ұзын тон); кідіріс (ұзақ тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, ұзын тон); кідіріс (ұзақ тон); noTone (0); кешігу (delayBetweenBars); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, қысқа тон); кідіріс (қысқа тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_B3, ұзын тон); кідіріс (ұзақ тон); noTone (0); кідіріс (standardDelay); үн (0, NOTE_E4, ұзын тон); кідіріс (ұзақ тон); noTone (0); кідіріс (standardDelay); } жарамсыз жұлдызды соғыс () {дыбыстық сигнал (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); } void beep (int note, int duration) {// BuzzerPin тонындағы ойнату үні (0, ескерту, ұзақтығы); кідіріс (ұзақтығы); noTone (0); кідіріс (standardDelay); } void heartOfCourage () {} void jacques () {beep (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 Cloud

Ibm Cloud
Ibm Cloud

Сізге IBM-бұлтты данасын орнату қажет. Бұл туралы ақпаратты мына сілтеме арқылы таба аласыз: github.

4-қадам: ҚЫЗЫЛ түйін

Біз бизнес-логикамызды өңдеу үшін және интуитивті пайдаланушы интерфейсінде бұл деректерді бейнелеу үшін қызыл-түйінді қолданамыз.

5-қадам: Қызыл-түйіндік реттеу: жарық

Түйін-ҚЫЗЫЛ орнату: Жарық
Түйін-ҚЫЗЫЛ орнату: Жарық

Келесі кодты жобаңызға импорттаңыз.

[{«id»: «deb0d57.1c46528», «type»: «tab», «label»: «Light», «disabled»: false, «info»: «»}, {«id»: «8a0fcaac. 4e54 «,» type «:» ibmiot in «,» z «:» deb0d57.1c46528 «,» аутентификация «:» boundService «,» apiKey «:» «,» inputType «:» evt «,» logicalInterface «:» «,» ruleId «:» «,» deviceId «:» ESP «,» applicationId «:» «,» deviceType «:» ESP8266 «,» eventType «:»+«,» commandType «:» «,» format «: «json», «name»: «ESP деректерін алу», «service»: «тіркелген», «allDevices»: false, «allApplications»: «», «allDeviceTypes»: false, «allLogicalInterfaces»: «», «allEvents»: шын, «allCommands»: «», «allFormats»: «», «qos»: 0, «x»: 120, «y»: 62, «сымдар»:

6-қадам: Қызыл-түйіндік реттеу: температура

Түйін-ҚЫЗЫЛ орнату: Температура
Түйін-ҚЫЗЫЛ орнату: Температура

Келесі кодты жобаңызға импорттаңыз.

[{«id»: «fbad3799.f0e0e», «type»: «tab», «label»: «Температура», «ажыратылған»: жалған, «ақпарат»: «»}, «» id «:» b8618eb9. 1c9288 «,» type «:» ibmiot in «,» z «:» fbad3799.f0e0e «,» аутентификация «:» boundService «,» apiKey «:» «,» inputType «:» evt «,» logicalInterface «:» «,» ruleId «:» «,» deviceId «:» ESP «,» applicationId «:» «,» deviceType «:» ESP8266 «,» eventType «:»+«,» commandType «:» «,» format «: «json», «name»: «ESP деректерін алу», «service»: «тіркелген», «allDevices»: false, «allApplications»: «», «allDeviceTypes»: false, «allLogicalInterfaces»: «», «allEvents»: true, «allCommands»: «», «allFormats»: «», «qos»: 0, «x»: 145.5, «y»: 49, «сымдар»:

7-қадам: Қызыл-түйіндік реттеу: ылғалдылық

Node-RED орнату: ылғалдылық
Node-RED орнату: ылғалдылық

Келесі кодты жобаңызға импорттаңыз.

[{«id»: «144cd53b.c00473», «type»: «tab», «label»: «ылғалдылық», «ажыратылған»: жалған, «ақпарат»: «»}, {«id»: «d958f58b. 2678e «,» type «:» ibmiot in «,» z «:» 144cd53b.c00473 «,» аутентификация «:» boundService «,» apiKey «:» «,» inputType «:» evt «,» logicalInterface «:» «,» ruleId «:» «,» deviceId «:» ESP «,» applicationId «:» «,» deviceType «:» ESP8266 «,» eventType «:»+«,» commandType «:» «,» format «: «json», «name»: «ESP деректерін алу», «service»: «тіркелген», «allDevices»: false, «allApplications»: «», «allDeviceTypes»: false, «allLogicalInterfaces»: «», «allEvents»: true, «allCommands»: «», «allFormats»: «», «qos»: 0, «x»: 142, «y»: 87, «сымдар»:

8-қадам: Түйіндік-ҚЫЗЫЛ орнату: Ылғал

Түйін-ҚЫЗЫЛ орнату: Ылғал
Түйін-ҚЫЗЫЛ орнату: Ылғал

Келесі кодты жобаңызға импорттаңыз.

[{«id»: «4ee73536.ec6fc4», «type»: «tab», «label»: «ылғалдылық», «ажыратылған»: жалған, «ақпарат»: «»}, {«id»: «a6daac3e. 2d5268 «,» type «:» ibmiot out «,» z «:» 4ee73536.ec6fc4 «,» аутентификация «:» boundService «,» apiKey «:» «,» outputType «:» cmd «,» deviceId «:» ESP «,» deviceType «:» ESP8266 «,» eventCommandType «:» update «,» format «:» json «,» data «:» msg «,» qos «: 0,» name «:» ESP -ке пәрмен жіберу «,» қызмет «:» тіркелген «,» х «: 804.1944580078125,» у «: 383.0000305175781,» сымдар «: }, {» id «:» 4134fdb7.18e9b4 «,» type «:» ibmiot in «, «z»: «4ee73536.ec6fc4», «аутентификация»: «boundService», «apiKey»: «», «inputType»: «evt», «logicalInterface»: «», «ruleId»: «», «deviceId»: «ESP», «applicationId»: «», «deviceType»: «ESP8266», «eventType»: «update», «commandType»: «», «format»: «json», «name»: «Деректерді алу ESP -ден «,» қызмет «:» тіркелген «,» allDevices «: жалған,» allApplications «:» «,» allDeviceTypes «: жалған,» allLogicalInterfaces «:» «,» allEvents «: шын,» allCommands «:» «, «allFormats»: жалған, «qos»: 0, «x»: 115, «y»: 76, «сымдар»:

9 -қадам: Сіз дайынсыз

Құттықтаймын! сізде қазір өсімдіктерді бақылайтын жұмыс жүйесі бар.

Егер сізде сұрақтар туындаса, бізге хабарласудан тартынбаңыз!