Სარჩევი:

DHT11/DHT22 სენსორის ღრუბელთან დაკავშირება ESP8266 დაფუძნებული დაფით: 9 ნაბიჯი
DHT11/DHT22 სენსორის ღრუბელთან დაკავშირება ESP8266 დაფუძნებული დაფით: 9 ნაბიჯი

ვიდეო: DHT11/DHT22 სენსორის ღრუბელთან დაკავშირება ESP8266 დაფუძნებული დაფით: 9 ნაბიჯი

ვიდეო: DHT11/DHT22 სენსორის ღრუბელთან დაკავშირება ESP8266 დაფუძნებული დაფით: 9 ნაბიჯი
ვიდეო: ESP32 Tutorial 51 - Temperatuer and Humidty over WiFi with DHT | SunFounder's ESP32 IoT Learnig kit 2024, ნოემბერი
Anonim
DHT11/DHT22 სენსორის ღრუბელთან დაკავშირება ESP8266 დაფუძნებული დაფით
DHT11/DHT22 სენსორის ღრუბელთან დაკავშირება ESP8266 დაფუძნებული დაფით

წინა სტატიაში მე დავაკავშირე ჩემი ESP8266 დაფუძნებული NodeMCU დაფა Cloud4RPi სერვისთან. ახლა, დროა რეალური პროექტისთვის!

მარაგები

ტექნიკის მოთხოვნები:

  • ნებისმიერი დაფა დაფუძნებული ESP8266 ჩიპზე (მაგალითად, NodeMCU)
  • DHT11 ან DHT22 სენსორი

პროგრამული უზრუნველყოფა და მომსახურება:

  • DHT სენსორების ბიბლიოთეკა Adafruit– ის მიერ - v1.3.7
  • ადაფრუტის ერთიანი სენსორი - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - ღრუბლის მართვის პანელი IoT მოწყობილობებისთვის
  • PlatformIO IDE VSCode– სთვის

ნაბიჯი 1: გაზომეთ ტემპერატურა და ტენიანობა

გაზომეთ ტემპერატურა და ტენიანობა
გაზომეთ ტემპერატურა და ტენიანობა

მე უკვე მქონდა DHT11 სენსორი, ამიტომ გადავწყვიტე გამომეყენებინა იგი ტემპერატურისა და ტენიანობის გაზომვისთვის. ავირჩიოთ არდუინოს ბიბლიოთეკა სენსორის მონაცემების წასაკითხად.

არდუინოს რეესტრი შეიცავს რამდენიმე ბიბლიოთეკას, რომელთაგან მე შევარჩიე ყველაზე პოპულარული.

მათი GitHub საცავის თანახმად, ჩვენ ასევე უნდა დავამატოთ Adafruit Unified Sensor პაკეტი.

ნაბიჯი 2: შექმენით და დააკონფიგურირეთ პროექტი

შექმენით და დააკონფიგურირეთ პროექტი
შექმენით და დააკონფიგურირეთ პროექტი

მე უკვე აღვწერე, თუ როგორ უნდა შევქმნათ PlatformIO პროექტი და დავაყენო ბიბლიოთეკები პირველ ნაწილში. ჩემს პროექტს ჰქვია "MyNodeMCU". სტრუქტურა ნაჩვენებია ზემოთ.

ეს პროექტი ოდნავ შეცვლილი Cloud4RPi მაგალითია. მე გადავწყვიტე მოწყობილობის ნიშნის და Wi-Fi სერთიფიკატების შესანახად კონფიგურაციის ფაილში კოდის ნაცვლად.

Platform.io ფაილი ასე გამოიყურება:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2

ნაბიჯი 3: დააინსტალირეთ ბიბლიოთეკები

დააინსტალირეთ ბიბლიოთეკები
დააინსტალირეთ ბიბლიოთეკები

ბიბლიოთეკების დაყენება საკმაოდ მარტივია. ამის გაკეთება შეგიძლიათ IDE– ს გრაფიკული ინტერფეისიდან, ან საჭირო ბიბლიოთეკის სახელების დამატებით platform.io ფაილის lib_deps განყოფილებაში:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit ერთიანი სენსორი DHT სენსორების ბიბლიოთეკა build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DW_IDE-g.webp

დამატებული ბიბლიოთეკები ავტომატურად დაინსტალირდება პროექტის ქვესაქაღალდეში.

Main.cpp სათაური გამოიყურება შემდეგნაირად:

#მოიცავს #მოიცავს #მოიცავს #მოიცავს #DHT.h"

ნაბიჯი 4: შეაერთეთ DHT11 სენსორი

Adafruit გთავაზობთ DHTtester.ino სენსორული კავშირის მაგალითს.

ეს კოდი ახდენს სენსორის ინიციალიზაციას და განსაზღვრავს სტრუქტურას გაზომვის შედეგის შესანახად (თუ ის წარმატებული იყო):

#განსაზღვრეთ DHTPIN 2 // DHT სენსორთან დაკავშირებული ციფრული პინი#განსაზღვრეთ DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht. დაწყება (); //… struct DHT_Result {float h; float t; }; DHT_Result dhtResult;

შემდეგი ფუნქცია აჩვენებს, თუ როგორ უნდა წაიკითხოთ სენსორული მონაცემები და შეინახოთ იგი ზემოთ აღწერილ მონაცემთა სტრუქტურაში

void readSensors () {float h = dht.readHumidity (); // წაიკითხეთ ტემპერატურა ცელსიუსით (ნაგულისხმევი) float t = dht.readTemperature ();

// შეამოწმეთ თუ წაკითხვა ვერ მოხერხდა და გამოდით

if (isnan (h) || isnan (t)) {Serial.println (F ("DHT სენსორიდან წაკითხვა ვერ მოხერხდა!")); დაბრუნების; } dhtResult.h = h; dhtResult.t = t; }

ნაბიჯი 5: მონაცემების გაგზავნა ღრუბელში

მას შემდეგ რაც გვაქვს ეს მონაცემები, შემდეგი ნაბიჯი არის მისი გაგზავნა Cloud4RPi სერვისზე.

Cloud4RPi for Arduino გვერდზე აღწერილია ბიბლიოთეკის API, რომელიც წარმოადგენს მეთოდების ერთობლიობას:

  • ცვლადების შექმნა, წაკითხვა და განახლება,
  • გაგზავნეთ ცვლადი მნიშვნელობები ღრუბელში MQTT პროტოკოლის გამოყენებით.

ბიბლიოთეკა მხარს უჭერს სამი ცვლადის ტიპს: Bool, Numeric და String.

ბიბლიოთეკის სამუშაო ნაკადი იწყება Cloud4rpi.io ვებ – გვერდიდან მოწყობილობის ნიშნის გამოყენებით API მაგალითის შექმნით (დეტალებისთვის იხილეთ სტატიის ნაწილი 1).

#განსაზღვრული (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #სხვა Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #დაასრულე თუ

შემდეგ გამოაცხადეთ ცვლადები DHT11 კითხვებისთვის:

c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");

შემდეგ, მიიღეთ მონაცემები სენსორიდან, შეინახეთ ისინი ცვლადებში და გამოაქვეყნეთ მონაცემები Cloud4RPi– ში:

c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();

ტემპერატურა და ტენიანობა არ იცვლება სწრაფად, ამიტომ 5 წუთში ერთზე მეტი მნიშვნელობის გაგზავნა არ არის საჭირო.

ნაბიჯი 6: დიაგნოსტიკა

Cloud4RPi მხარს უჭერს დიაგნოსტიკურ მონაცემებს ცვლად მნიშვნელობებთან ერთად. გამოვიყენე დრო, Wi-Fi სიგნალის სიძლიერე და IP მისამართი, როგორც სადიაგნოსტიკო მონაცემები:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi სიგნალის სიძლიერე c4r.declareDiagVariable ("დრო");

შენიშვნა: millis ფუნქცია, რომელსაც ვიყენებ, რომ დროულად გადავიდეს ნულამდე ყოველ 50 დღეში. რაც საკმარისზე მეტია ჩემი პროექტისთვის.

შემდეგი კოდი ადგენს დიაგნოსტიკური ცვლადის მნიშვნელობებს:

c4r.setDiagVariable ("RSSI", (სიმებიანი) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

UptimeHumanReadable ფუნქცია გარდაქმნის მილიწამებს მოსახერხებელ ფორმაში:

სიმებიანი uptimeHumanReadable (ხელმოუწერელი გრძელი მილიწამი) {static char uptimeStr [32]; ხელმოუწერელი გრძელი წამი = მილიწამი / 1000; ხელმოუწერელი გრძელი წთ = წამი / 60; ხელმოუწერელი int საათი = წთ / 60; ხელმოუწერელი int დღეები = საათი / 24; წამი -= წთ * 60; წთ -= საათი * 60; საათი -= დღე * 24; sprintf (uptimeStr, "%d დღე%2.2d:%2.2d:%2.2d", (ბაიტი) დღე, (ბაიტი) საათი, (ბაიტი) წთ, (ბაიტი) წამი); დაბრუნების სიმებიანი (uptimeStr); }

ფუნქცია გამოაქვს ასეთი სიმებიანი 5 დღის 10:23:14 უცნაური დიდი რიცხვის ნაცვლად.

ნაბიჯი 7: დაიწყეთ და დაარეგულირეთ პროექტი

დაიწყეთ და გააუმჯობესეთ პროექტი
დაიწყეთ და გააუმჯობესეთ პროექტი

შექმნილი კოდის შედგენისა და NodeMCU- ში განათების შემდეგ, მოწყობილობა უკავშირდება ღრუბლოვან სერვისს და იწყებს მონაცემების გაგზავნას.

თქვენ შეგიძლიათ გაზარდოთ ტყუილების აღწერილობა CLOUD4RPI_DEBUG წინასწარი პროცესორის ცვლადის 1 -ით (დამატება -D CLOUD4RPI_DEBUG = 1 პლატფორმაში.io ფაილში build_flags განყოფილებაში).

შემდეგი, გახსენით cloud4rpi.io საიტი და შენიშნეთ ახალი მოწყობილობა ინტერნეტით. გახსენით იგი მოწყობილობიდან მიღებული ყველა ცვლადი მნიშვნელობის სანახავად: სენსორი და დიაგნოსტიკა.

ნაბიჯი 8: დაფის კონფიგურაცია

დაფის კონფიგურაცია
დაფის კონფიგურაცია

ამ ეტაპზე, ღრუბელთან მონაცემთა კავშირი ფუნქციონირებს. ახლა, მოდით დავაკონფიგურიროთ მონაცემების ვიზუალური წარმოდგენა.

მე გამოვიყენე Dashboard– ის კონფიგურაციის ინტერფეისი შემდეგი დაფის შესაქმნელად.

დაფა არის გასაზიარებელი, ამიტომ მყისიერად ვუზიარებ მას ჩემს მეგობარს.

ნაბიჯი 9: დასკვნა

დასკვნა
დასკვნა

პროექტის სრული კოდი მოცემულია შინაარსში.

სულ ესაა ჯერჯერობით!

კითხვები და წინადადებები მისასალმებელია კომენტარებში.

გირჩევთ: