Talaan ng mga Nilalaman:

Pagkonekta ng isang DHT11 / DHT22 Sensor sa Cloud Gamit ang isang ESP8266-based Board: 9 Mga Hakbang
Pagkonekta ng isang DHT11 / DHT22 Sensor sa Cloud Gamit ang isang ESP8266-based Board: 9 Mga Hakbang

Video: Pagkonekta ng isang DHT11 / DHT22 Sensor sa Cloud Gamit ang isang ESP8266-based Board: 9 Mga Hakbang

Video: Pagkonekta ng isang DHT11 / DHT22 Sensor sa Cloud Gamit ang isang ESP8266-based Board: 9 Mga Hakbang
Video: Arduino Tutorial 28 - DHT11 Temperature Sensor with LCD | SunFounder's ESP32 IoT Learnig kit 2024, Nobyembre
Anonim
Pagkonekta ng isang DHT11 / DHT22 Sensor sa Cloud Gamit ang isang ESP8266-based Board
Pagkonekta ng isang DHT11 / DHT22 Sensor sa Cloud Gamit ang isang ESP8266-based Board

Sa nakaraang artikulo, ikinonekta ko ang aking board na NodeMCU na nakabatay sa ESP8266 sa isang serbisyo sa Cloud4RPi. Ngayon, oras na para sa isang tunay na proyekto!

Mga gamit

Mga kinakailangan sa hardware:

  • Anumang board batay sa isang chip na ESP8266 (halimbawa, NodeMCU)
  • Isang sensor ng DHT11 o DHT22

Software at serbisyo:

  • Library ng sensor ng DHT ng Adafruit - v1.3.7
  • Pinagsamang Sensor ng Adafruit - v1.0.3
  • cloud4rpi-esp-arduino - v0.1.0
  • Cloud4RPI - Cloud control panel para sa mga IoT device
  • PlatformIO IDE para sa VSCode

Hakbang 1: Sukatin ang Temperatura at Humidity

Sukatin ang Temperatura at Humidity
Sukatin ang Temperatura at Humidity

Mayroon na akong sensor ng DHT11, kaya't nagpasya akong gamitin ito para sa pagsukat ng temperatura at halumigmig. Pumili tayo ng isang Arduino library upang mabasa ang data ng sensor.

Naglalaman ang rehistro ng Arduino ng maraming mga aklatan, kung saan pinili ko ang pinaka-tanyag.

Ayon sa kanilang Repository ng GitHub, kinakailangan din kaming magdagdag ng isang pakete ng Unified Sensor ng Adafruit.

Hakbang 2: Lumikha at I-configure ang Project

Lumikha at I-configure ang Project
Lumikha at I-configure ang Project

Inilarawan ko na kung paano lumikha ng isang proyekto sa PlatformIO at mag-install ng mga aklatan sa unang bahagi. Ang proyekto ko ay tinatawag na "MyNodeMCU". Ang istraktura ay ipinapakita sa itaas.

Ang proyektong ito ay isang bahagyang binago na halimbawa ng Cloud4RPi. Napagpasyahan kong iimbak ang mga token ng aparato at mga kredensyal ng Wi-Fi sa file ng pagsasaayos sa halip na code.

Ang file ng platform.io ay ganito ang hitsura:

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

Hakbang 3: Mag-install ng Mga Aklatan

Mag-install ng Mga Aklatan
Mag-install ng Mga Aklatan

Ang pag-install ng mga aklatan ay medyo simple. Maaari mo itong gawin mula sa graphic interface ng IDE, o sa pamamagitan ng pagdaragdag ng kinakailangang mga pangalan ng library sa seksyon ng lib_deps ng platform.io file:

; … Lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor DHT sensor library build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME = \D _ _ _ _ _ " D CLOUD4RPI_TOKEN = / "_ IYONG_DEVICE_TOKEN _ \"

Ang mga idinagdag na aklatan ay awtomatikong mai-install sa subfolder ng isang proyekto.

Ang pangunahing.cpp header ay ang mga sumusunod:

#include #include #include #include "DHT.h"

Hakbang 4: Ikonekta ang isang DHT11 Sensor

Nagbibigay ang Adafruit ng isang halimbawa ng DHTtester.ino ng isang koneksyon sa sensor.

Pinasimulan ng code na ito ang isang sensor at tumutukoy sa isang istraktura upang maiimbak ang resulta ng pagsukat (kung sakaling ito ay matagumpay):

#define DHTPIN 2 // Digital pin na konektado sa sensor ng DHT # tukuyin ang DHTTYPE DHT11 // DHT 11 // … DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; lumutang t; }; DHT_Result dhtResult;

Ipinapakita ng susunod na pagpapaandar kung paano basahin ang data ng sensor at iimbak ito sa istraktura ng data na inilarawan sa itaas

void readSensors () {float h = dht.readHumidity (); // Basahin ang temperatura bilang Celsius (ang default) float t = dht.readTemperature ();

// Suriin kung may nabasa na nabigo at lumabas

kung (isnan (h) || isnan (t)) {Serial.println (F ("Nabigong basahin mula sa sensor ng DHT!")); bumalik; } dhtResult.h = h; dhtResult.t = t; }

Hakbang 5: Pagpapadala ng Data sa Cloud

Kapag mayroon kaming data na iyon, ang susunod na hakbang ay upang ipadala ito sa serbisyo ng Cloud4RPi.

Inilalarawan ng pahina ng Cloud4RPi para sa Arduino ang library API, na isang hanay ng mga pamamaraan na ginamit upang:

  • lumikha, magbasa at mag-update ng mga variable,
  • magpadala ng mga variable na halaga sa cloud gamit ang MQTT protocol.

Sinusuportahan ng library ang tatlong mga variable na uri: Bool, Numeric, at String.

Nagsisimula ang daloy ng trabaho sa library sa paglikha ng isang halimbawa ng API gamit ang Device Token mula sa cloud4rpi.io website (sumangguni sa bahagi 1 ng artikulo para sa mga detalye).

#kung tinukoy (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #tapusin kung

Pagkatapos, ideklara ang mga variable para sa pagbabasa ng DHT11:

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

Pagkatapos, kumuha ng data mula sa sensor, i-save ang mga ito sa mga variable at i-publish ang data sa Cloud4RPi:

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

Ang temperatura at halumigmig ay hindi nagbabago nang mabilis, kaya't hindi kinakailangan ang pagpapadala ng higit sa isang halaga bawat 5 minuto.

Hakbang 6: Mga Diagnostics

Sinusuportahan ng Cloud4RPi ang data ng diagnostic kasama ang mga variable na halaga. Gumamit ako ng uptime, lakas ng signal ng Wi-Fi, at IP address bilang data ng diagnostic:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Lakas ng signal ng WiFi c4r.declareDiagVariable ("Uptime");

Tandaan: Ang pagpapaandar ng millis na ginagamit ko upang makakuha ng uptime na pag-reset sa zero bawat ~ 50 araw. Alin ang higit sa sapat para sa aking proyekto.

Nagtatakda ang sumusunod na code ng mga halaga ng variable ng diagnostic:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

Ang uptimeHumanReadable na pagpapaandar ay nagpapalit ng milliseconds sa isang maginhawang form:

String uptimeHumanReadable (unsigned long milliseconds) {static char uptimeStr [32]; unsigned long secs = milliseconds / 1000; unsigned mahabang min = seg / 60; unsigned int oras = min / 60; unsigned int araw = oras / 24; seg - = min * 60; mga minuto - = oras * 60; oras - = araw * 24; sprintf (uptimeStr, "% d araw% 2.2d:% 2.2d:% 2.2d", (byte) araw, (byte) na oras, (byte) min, (byte) secs); ibalik ang String (uptimeStr); }

Ang pagpapaandar ay naglalabas ng isang string tulad nito 5 araw 10:23:14 sa halip na isang kakaibang malaking bilang.

Hakbang 7: Simulan at i-debug ang Proyekto

Simulan at i-debug ang Proyekto
Simulan at i-debug ang Proyekto

Matapos maipon ang nilikha na code at i-flashing ito sa NodeMCU, kumokonekta ang aparato sa isang cloud service at nagsimulang magpadala ng data.

Maaari mong madagdagan ang pagiging masasabi ng logging sa pamamagitan ng pagtatakda ng variable ng preprocessor ng CLOUD4RPI_DEBUG sa 1 (idagdag ang -D CLOUD4RPI_DEBUG = 1 upang buuin ang seksyon ng build_flags sa platform.io file).

Susunod, buksan ang site ng cloud4rpi.io at pansinin ang bagong aparato online. Buksan ito upang makita ang lahat ng mga halagang nabuong natanggap mula sa aparato: sensor at mga diagnostic.

Hakbang 8: Pag-configure ng Dashboard

Pag-configure ng Dashboard
Pag-configure ng Dashboard

Sa hakbang na ito, ang koneksyon ng data sa cloud ay pagpapatakbo. Ngayon, i-configure natin ang visual na representasyon ng data.

Ginamit ko ang pagsasaayos ng Dashboard UI upang likhain ang sumusunod na dashboard.

Ang dashboard ay maibabahagi, kaya agad kong ibinabahagi ito sa aking kaibigan.

Hakbang 9: Konklusyon

Konklusyon
Konklusyon

Ang buong code ng proyekto ay magagamit sa kabuuan.

Iyon lang ang para sa ngayon!

Ang mga katanungan at mungkahi ay malugod na tinatanggap sa mga komento.

Inirerekumendang: