Мазмуну:
- 1 -кадам: сенсорлорду туташтыруу
- 2 -кадам: Код
- 3 -кадам: Ibm Cloud
- 4-кадам: Node-RED
- 5-кадам: Node-RED Орнотуу: Жарык
- 6-кадам: Node-RED Орнотуу: Температура
- 7-кадам: Node-RED Орнотуу: Нымдуулук
- 8-кадам: Node-RED Орнотуу: Нымдуулук
- 9 -кадам: Сиз бүттүңүз
Video: PInt@t10n: Акылдуу өсүмдүктөрдүн мониторинг системасы: 9 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бул долбоор ibm iot булут үчүн сыноо катары түзүлгөн. Биз IBM булутуна маалыматтарды жөнөтүү жана алуу үчүн esp-8266 колдонобуз. 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
#define STASSID "ucll-projectweek-IoT" #define STAPSK "Foo4aiHa" #DHPin 5ти аныктоо #нымдуулукту аныктооPin 4 #аныктоо DHTType DHT11 DHT dht (DHTPin, DHTType); ESP8266WiFiMulti WiFiMulti; float temp = 0; калкып нымдуулук = 0; логикалык нымдуулук = жалган; int light = 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; #define MQTT_HOST "cmfwqk.messaging.internetofthings.ibmcloud.com" #define MQTT_PORT 1883 #define MQTT_DEVICEID "d: cmfwqk: ESP8266: ESP" #define MQTT_USER "use-token-aQTT_ToTTE" iot-2/evt/status/fmt/json "#define 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); // Биз 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 ("Билдирүү келди ["); Serial.print (тема); Serial.print ("]"); for (int i = 0; i <узундугу; 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 () {// Loop the again we'll be again while while (! client.connected ()) {Serial.print ("MQTT туташуусу аракеттенилүүдө…"); // Кошулуу аракети эгерде (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 ()) {reconnect (); } client.loop (); ным = digitalRead (moistPin); жарык = analogRead (A0); темп = dht.readTemperature (); нымдуулук = dht.readHumidity (); Serial.println ("Температура =" + Сап (темп, 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 ("ok OK"); } else {Serial.println ("жарыяланбай калды"); } delay (2000); } void darude () {tone (0, NOTE_B3, shortTone); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, longTone); кечигүү (longTone); noTone (0); кечиктирүү (delayBetweenBars); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, longTone); кечигүү (longTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_E4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_E4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_E4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_E4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_E4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_E4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_E4, longTone); кечигүү (longTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_D4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_D4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_D4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_D4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_D4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_D4, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_D4, longTone); кечигүү (longTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_A3, longTone); кечигүү (longTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, longTone); кечигүү (longTone); noTone (0); кечиктирүү (delayBetweenBars); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, longTone); кечигүү (longTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_E4, longTone); кечигүү (longTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, longTone); кечигүү (longTone); noTone (0); кечиктирүү (delayBetweenBars); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, кыска Тон); кечигүү (shortTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_B3, longTone); кечигүү (longTone); noTone (0); кечигүү (standardDelay); обон (0, NOTE_E4, longTone); кечигүү (longTone); noTone (0); кечигүү (standardDelay); } void starwars () {bip (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-булуттун мисалын орнотушуңуз керек. Бул тууралуу маалыматты бул шилтеме аркылуу таба аласыз: github.
4-кадам: Node-RED
Биз түйүн-кызылды жалпы бизнесибиздин логикасын иштетүү үчүн жана бул маалыматты интуитивдүү колдонуучу интерфейсинде элестетүү үчүн колдонобуз.
5-кадам: Node-RED Орнотуу: Жарык
Төмөнкү кодду долбооруңузга импорттоңуз.
[{"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-кадам: Node-RED Орнотуу: Температура
Төмөнкү кодду долбооруңузга импорттоңуз.
[{"id": "fbad3799.f0e0e", "type": "tab", "label": "Температура", "өчүрүлгөн": жалган, "маалымат": ""}, "" id ":" b8618eb9. 1c9288 "," type ":" ibmiot in "," z ":" fbad3799.f0e0e "," authentication ":" 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": 145.5, "y": 49, "зымдар":
7-кадам: 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": чын, "allCommands": "", "allFormats": "", "qos": 0, "x": 142, "y": 87, "зымдар":
8-кадам: Node-RED Орнотуу: Нымдуулук
Төмөнкү кодду долбооруңузга импорттоңуз.
[{"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ке буйрук жөнөтүү. "," service ":" катталган "," x ": 804.1944580078125," y ": 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 ": false," allApplications ":" "," allDeviceTypes ": false," allLogicalInterfaces ":" "," allEvents ": true," allCommands ":" ", "allFormats": жалган, "qos": 0, "x": 115, "y": 76, "зымдар":
9 -кадам: Сиз бүттүңүз
Куттуктайм! сизде азыр иштеп жаткан өсүмдүктөрдү байкоо системасы бар.
Эгерде сизде кандайдыр бир суроо болсо, биз менен байланышуудан тартынбаңыз!