Агуулгын хүснэгт:
- Алхам 1: Мэдрэгчээ холбоно уу
- Алхам 2: Код
- Алхам 3: Ibm Cloud
- Алхам 4: Node-RED
- Алхам 5: Node-RED тохиргоо: Хөнгөн
- Алхам 6: Node-RED тохиргоо: Температур
- Алхам 7: Node-RED тохиргоо: Чийгшил
- Алхам 8: Node-RED тохиргоо: Чийг
- Алхам 9: Та дууссан
Видео: PInt@t10n: Ухаалаг ургамлын хяналтын систем: 9 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Энэхүү төслийг 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 #оруулах
#тодорхойлох STASSID "ucll-projectweek-IoT" #тодорхойлох STAPSK "Foo4aiHa" #DHTPin-ийг тодорхойлох 5 #чийгийг тодорхойлохPin 4 #тодорхойлох DHTType DHT11 DHT dht (DHTPin, DHTType); ESP8266WiFiMulti WiFiMulti; хөвөх температур = 0; хөвөх чийгшил = 0; boolean чийг = хуурамч; int гэрэл = 0; const char* ssid = STASSID; const char* нууц үг = STAPSK; const char* mqtt_server = "cmfwqk.messaging.internetofthings.ibmcloud.com"; WiFiClient espClient; PubSubClient үйлчлүүлэгч (espClient); урт удаанMsg = 0; char msg [50]; int утга = 0; #define MQTT_HOST "cmfwqk.messaging.internetofthings.ibmcloud.com" #MQTT_PORT 1883 #define MQTT_DEVICEID "d: cmfwqk: ESP8266: ESP" #define MQTT_USER "use-token-aQTT_ThenThen" iot-2/evt/status/fmt/json " #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 ("]"); for (int i = 0; i <length; i ++) {Serial.print ((char) ачаа ); } Serial.println (); StaticJsonDocument jsonBuffer; deserializeJson (jsonBuffer, ачаалал); JsonObject root = jsonBuffer.as (); if (root ["song"] == "darude") {darude (); } if (root ["song"] == "starwars") {оддын дайн (); } if (root ["song"] == "jacques") {Serial.println ("jakakakakakkakaka"); Жак (); }} void reconnect () {// Бид дахин холбогдох хүртэл гогцоо хийх (! client.connected ()) {Serial.print ("MQTT холболт хийх оролдлого…"); // Хэрэв (client.connect (MQTT_DEVICEID, MQTT_USER, MQTT_TOKEN))) {Serial.println ("холбогдсон"); client.subscribe (MQTT_TOPIC_DISPLAY); } өөр {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 ("Temperature =" + String (temp, 1) + "\ nЧийглэг =" + String (чийгшил, 1) + "\ nЧийг:" + String (чийг) + "\ n Гэрэл:" + String (гэрэл)); 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 нийтлэх"); } өөр {Serial.println ("нийтлэх амжилтгүй болсон"); } саатал (2000); } void darude () {ая (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_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 данс тохируулах хэрэгтэй. Та энэ талаархи мэдээллийг энэ холбоосоор дамжуулан олж авах боломжтой: 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 "," authentication ":" boundService "," apiKey ":" "," inputType ":" evt "," logicalInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "ESP -ээс мэдээлэл авах", "service": "бүртгэгдсэн", "allDevices": худал, "allApplications": "", "allDeviceTypes": худал, "allLogicalInterfaces": "", "allEvents": үнэн, "allCommands": "", "allFormats": "", "qos": 0, "x": 120, "y": 62, "утаснууд":
Алхам 6: Node-RED тохиргоо: Температур
Дараах кодыг өөрийн төсөл рүү импортлоорой.
[{"id": "fbad3799.f0e0e", "type": "tab", "label": "Temperature", "disabled": false, "info": ""}, {"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": худал, "allApplications": "", "allDeviceTypes": худал, "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 "," authentication ":" boundService "," apiKey ":" "," inputType ":" evt "," logicalInterface ":" "," ruleId ":" "," deviceId ":" ESP "," applicationId ":" "," deviceType ":" ESP8266 "," eventType ":"+"," commandType ":" "," format ": "json", "name": "ESP -ээс мэдээлэл авах", "service": "бүртгэгдсэн", "allDevices": худал, "allApplications": "", "allDeviceTypes": худал, "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 "," authentication ":" boundService "," apiKey ":" "," outputType ":" cmd "," deviceId ":" ESP "," deviceType ":" ESP8266 "," eventCommandType ":" update "," format ":" json "," data ":" msg "," qos ": 0," name ":" ESP рүү тушаал илгээх. "," үйлчилгээ ":" бүртгэлтэй "," 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 ": худал," allApplications ":" "," allDeviceTypes ": худал," allLogicalInterfaces ":" "," allEvents ": үнэн," allCommands ":" ", "allFormats": худал, "qos": 0, "x": 115, "y": 76, "утаснууд":
Алхам 9: Та дууссан
Баяр хүргэе! танд одоо ажиллаж байгаа ургамлын ажиглалтын систем байна.
Хэрэв танд ямар нэгэн асуулт байвал бидэнтэй холбоо бариарай!