Orodha ya maudhui:
- Vifaa
- Hatua ya 1: Pakia Nambari ya Arduino kwenye ESP32-CAM
- Hatua ya 2: Waya Up
- Hatua ya 3: Hati ya Python3
- Hatua ya 4: Seva ya MySQL
- Hatua ya 5: Webserver
- Hatua ya 6: Nyumba ya Kuchapishwa ya 3D
- Hatua ya 7: Matokeo ya Mwisho
Video: Joto na Unyevu Kutumia ESP32-DHT22-MQTT-MySQL-PHP: Hatua 7
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
Msichana wangu alitaka glasshouse, kwa hivyo nikamtengeneza. Lakini nilitaka sensorer ya joto na unyevu ndani ya glasshouse. Kwa hivyo, nilienda kwa mifano na nikaanza kujaribu.
Hitimisho langu ni kwamba mifano yote ambayo niligundua sio hasa nilitaka kujenga. Nilichukua sehemu nyingi ndogo za nambari na kuzichanganya. Ilinichukua muda kabisa kumaliza ujenzi wangu wa kwanza wa kazi kwa sababu nyaraka za mifano mingi zilikuwa ngumu sana kwangu kuelewa au walidhani sehemu ambayo nipaswa kujua? Lakini sikujua chochote (bado) ☹
Ndiyo sababu ninajenga hii inayoweza kufundishwa. Mafunzo ya "mwanzo-hadi mwisho" kwa kila mtu kuelewa. (Angalau natumai?)
Inavyofanya kazi …
Bidhaa ya mwisho ni ESP32-CAM na sensorer ya DHT22 iliyoambatanishwa nayo ambayo inapata nguvu kutoka kwa betri ya 18650. Kila dakika tatu inasoma joto na unyevu na hutuma hii kwa WiFi kwa seva ya nje ya MQTT kisha inalala (kwa dakika tatu) kutumia betri kidogo kama inahitajika
Kwenye seva ya Debian, (ambayo inaweza pia kuwa pi ya rasiberi nadhani) nina python3, seva ya MQTT, seva ya MySQL na seva ya wavuti
Hati ya python3 inaendesha kama huduma na wakati wowote inapokea ujumbe wa MQTT, inahesabu nambari ya awali ya viingilio (nambari ya nambari) na inaongeza hii kwa moja. Halafu inasoma maadili ya joto na unyevu kutoka kwa ujumbe wa MQTT. Inatafuta maadili ya uwongo na wakati wowote maadili ni sahihi, hutuma maadili pamoja na nambari mpya ya faharisi na tarehe na wakati wa sasa kwa seva ya MySQL
Seva ya wavuti ina hati ya PHP ambayo inasoma maadili kutoka kwa seva ya MySQL na inafanya grafu nzuri kutoka kwayo kwa kutumia Chati za Google. (mfano)
Vifaa
Sehemu nilizotumia ni zifuatazo:
- ESP32-CAM (Sababu nilitumia toleo la cam ni kwa sababu ina kiunganishi cha antena ya nje juu yake. Pengine kuna zingine za ESP32 unazoweza kutumia)
- Antena ya nje
-
Sensor ya AM2302 DHT22 (Hii ina kontena iliyojengwa, kwa hivyo unahitaji waya tatu tu)
https://www.amazon.de/gp/product/B07CM2VLBK/ref=p…
- Ngao ya betri 18650 v3
- Betri ya 18650 (NCR18650B)
- Cable ya zamani ya USB ndogo (ya kuunganisha ESP32 na ngao ya betri)
- Baadhi ya waya fupi za kuruka
Ziada inahitajika:
-
USB kwa kontakt TTL (picha)
https://www.amazon.de/FT232RL-Seriell-Unterst%C3%…
- Chuma cha kulehemu
- Printa ya 3D (inahitajika tu kwa kesi ya makazi)
Hatua ya 1: Pakia Nambari ya Arduino kwenye ESP32-CAM
Basi hebu tuanze!
Ili kupakia nambari ya Arduino kwenye ESP32-CAM, lazima uunganishe kiunganishi cha USBtoTTL kwa ESP32 ukitumia skimu zilizo hapo juu.
Nambari ya Arduino ni:
/ * Programu ndogo tu ya kusoma joto na unyevu kutoka kwa sensorer ya DHT22 na
pitisha kwa MQTT. B. Duijnhouwer Juni, 8th 2020 * / # pamoja na # pamoja na #jumuisha #fasili wifi_ssid "*** WIFI_SSID ***" // wifi ssid #fafanua neno la wifi "*** WIFI_PASSWORD ***" // nywila ya wifi #fafanua mqtt_server "*** SERVER_NAME ***" // jina la seva au IP #fasili mqtt_user "*** MQTT_USER ***" // jina la mtumiaji #fafanua mqtt_password "*** MQTT_PASSWORD ***" // password #fafanua mada "glasshouse / dhtreadings "#fasili debug_topic" glasshouse / deug " kwa dakika 5 (kwa sekunde) * / bool debug = kweli; // Onyesha ujumbe wa kumbukumbu ikiwa Kweli #fafanua DHT22_PIN 14 dht DHT; Mteja wa WiFi espClient; Mteja wa PubSubClient (espClient); data ya char [80]; kuanzisha batili () {Serial.begin (115200); kuanzisha_wifi (); // Unganisha kwa mteja wa mtandao wa Wifi.setServer (mqtt_server, 1883); // Sanidi uunganisho wa MQTT, badilisha bandari ikiwa inahitajika. ikiwa (! mteja.meunganishwa ()) {unganisha tena (); } // SOMA DATA YA int chk = DHT.read22 (DHT22_PIN); kuelea t = DHT. joto; kuelea h = DHT. unyevu; Kamba dhtReadings = "{" joto / ": \" "+ Kamba (t) +" / ", \" unyevu / ": \" "+ Kamba (h) +" / "}"; dhtReadings.toCharArray (data, (dhtReadings.length () + 1)); ikiwa (utatuaji) {Serial.print ("Joto:"); Printa ya serial (t); Printa ya serial ("| Unyevu:"); Serial.println (h); } // Chapisha maadili kwa mteja wa mada ya MQTT.chapisha (mada, data); // Chapisha usomaji kwenye mada (glasshouse / dhtreadings) ikiwa (utatuaji) {Serial.println ("Masomo yaliyotumwa kwa MQTT."); } esp_sleep_enable_timer_wakeup (TIME_TO_SLEEP * uS_TO_S_FACTOR); // nenda kulala Serial.println ("Sanidi ESP32 kulala kwa kila" + String (TIME_TO_SLEEP) + "Sekunde"); Serial.println ("Kwenda kulala kama kawaida sasa."); esp_deep_sleep_start (); } // Kuweka unganisho kwa wifi batili setup_wifi () {kuchelewesha (20); Serial.println (); Serial.print ("Kuunganisha kwa"); Serial.println (wifi_ssid); Anza WiFi (wifi_ssid, wifi_password); wakati (WiFi.status ()! = WL_CONNECTED) {kuchelewa (100); Printa ya serial ("."); } Serial.println (""); Serial.println ("WiFi iko sawa"); Serial.print ("=> ESP32 anwani mpya ya IP ni:"); Rekodi ya serial (WiFi.localIP ()); Serial.println (""); } // Unganisha tena kwa wifi ikiwa unganisho limepotea unganisha tena () {wakati (! Mteja.meunganishwa ()) {Serial.print ("Kuunganisha kwa broker wa MQTT…"); ikiwa (mteja.connect ("ESP32Client", mqtt_user, mqtt_password)) {Serial.println ("OK"); } mwingine {Serial.print ("[Kosa] Haijaunganishwa:"); Serial.print (mteja.state ()); Serial.println ("Subiri sekunde 5 kabla ya kujaribu tena."); kuchelewesha (5000); }}}} kitanzi batili () {}
Na tena, usisahau kubadilisha sifa na sifa zako mwenyewe
Hatua ya 2: Waya Up
Kwa nguvu, nilitumia kebo ya zamani ya USB ambayo nilikata kiunganishi cha USB-A. Kuna waya nne kwenye kebo ya USB, tunahitaji tu nyeusi na nyekundu.
Kwa hivyo, unganisha kila kitu kulingana na ratiba hapo juu.
Hatua ya 3: Hati ya Python3
Hati ya Python3 huenda mahali ambapo inapatikana kwa mtumiaji wa mizizi.
Nilitumia /root/script/glasshouse/glasshouse.py kwa hati hii. Yaliyomo kwenye hati ya chatu ni:
Hati ya # Python3 kuungana na MQTT, soma maadili na uandike kwenye MySQL
# # B. Duijnhouwer # Juni, 8th 2020 # # toleo: 1.0 # # kuagiza paho.mqtt.client kama mqtt kuagiza json kuagiza pymysql pymysql.install_as_MySQLdb () kuagiza MySQLdb kutoka wakati wa kuingiza wakati wa db = MySQLdb.connect ("localhost", "glasshouse", "*** MYSQL_USERNAME ***", "*** MYSQL_PASSWORD ***") mshale = db.cursor () broker_address = "localhost" #Broker anuani port = 1883 # Broker port user = "** * " na nambari ya matokeo {0} ". fomati (str (rc))) # Chapisha matokeo ya jaribio la unganisho mteja. jiandikishe (" glasshouse / dhtreadings / # ") def on_message (mteja, userdata, msg): # Kupigiwa simu kwa wakati PARLISH ujumbe ni kupokea kutoka server. cursor. M:% S ') payload = json.loads (msg.payload.decode (' utf-8 ')) chapa ("Safu mpya:" + str (newrow)) joto = kuelea (payload ["joto"]) unyevu = kuelea (malipo ya kulipia ["unyevu"]) chapisha ("Joto:" + str (joto)) chapisha ("Unyevu:" + str (unyevu)) chapisha ("DateTime:" + str (formatted_date)) ikiwa ((joto > -20) na (joto = 0) na (unyevu <= 100)): cur = db.cursor () cur.execute ("INSERT IN glasshouse.sensordata (idx, joto, unyevu, timestamp) MAADILI (" + str (newrow) + "," + str (joto) + "," + str (unyevu) + ",% s)", (formatted_date)) db.commit () chapa ("data iliyopokelewa na kuletwa katika MySQL") nyingine: chapa ("data ilizidi mipaka na HAIINGIWI katika MySQL") mteja = mqtt. Client ("duijnhouwer-com-glasshouse-script") client.username_pw_set (user, password = password) mteja.on_connect = on_connect # Fafanua kazi ya kupiga simu tena kwa mteja wa unganisho aliyefanikiwa.on_message = on_message # Fafanua kazi ya kupiga simu kwa kupokea mteja wa ujumbe. unganisho (broker_address, port = port) # unganisha kwa mteja wa broker.loop_forever () # Anza mtandao wa daemon
Usisahau kuchukua nafasi ya jina la mtumiaji na nywila ya MySQL na jina la mtumiaji na nenosiri la MQTT kwa sifa zako
Unaweza kufanya hati kuendeshwa kama huduma kwa kuunda faili mbili.
Ya kwanza ni "/etc/init/glasshouse.conf" na yaliyomo yafuatayo:
anza kwenye runlevel [2345]
simama kwenye runlevel [! 2345] exec /root/script/glasshouse/glasshouse.py
Ya pili ni “/etc/systemd/system/multi-user.target.wants/glasshouse.service” na yaliyomo yafuatayo:
[Kitengo]
Maelezo = Huduma ya Ufuatiliaji wa Glasshouse Baada ya = multi-user.target [Huduma] Aina = rahisi kuanzisha upya = kila wakati Anzisha upyaSec = 1 ExecStart = / usr / bin / python3 / root/script/glasshouse/glasshouse.py [Sakinisha] WantedBy = watumiaji wengi lengo
Unaweza kuendesha hii kama huduma kwa kutumia amri ifuatayo:
systemctl kuwezesha glasshouse
na uanze kutumia:
systemctl kuanza glasshouse
Hatua ya 4: Seva ya MySQL
Lazima uunde hifadhidata mpya ya MySQL na meza moja tu ndani yake.
Nambari ya kuunda meza ni:
Unda Jedwali `sensordata` (`idx` int (11) DEFAULT NULL,` joto` kuelea DEFAULT NULL, `humidity` kuelea DEFAULT NULL,` timestamp` datetime DEFAULT NULL) INGINE = InnoDB DEFAULT CHARSET = utf8;
Hatua ya 5: Webserver
Seva ya wavuti ina faili mbili, faili ya index.php na faili moja ya config.ini
Yaliyomo kwenye faili ya config.ini ni:
[hifadhidata]
db_host = "localhost" db_name = "glasshouse" db_table = "sensordata" db_user = "*** DATABASE_USER ***" db_password = "*** DATABASE_PASSWORD ***"
Ambapo kosa unachukua nafasi ya *** DATABASE_USER *** na *** DATABASE_PASSWORD *** na hati zako mwenyewe.
google.charts.load ('sasa', {'vifurushi': ['corechart']}); google.charts.setOnLoadCallback (Chati ya kuteka); kazi DrawChart () {var data = google.visualization.arrayToDataTable ([// ['Timestamp', 'Temperature', 'Humidity', 'Heat Index'], ['Timestamp', 'Temperature', 'Humidity'], swala ($ sql); # Wakati huu - fomati za kitanzi na uweke data zote zilizopatikana katika njia ya 'timestamp', 'joto', 'humidity'] wakati ($ row = $ result-> fetch_assoc ()) {$ timestamp_rest = substr ($ row ["timestamp"], 10, 6); echo "['". $ timestamp_rest. "',". $ row ['joto']. ",". $ safu ['unyevu']. "],"; // echo "['". $ timestamp_rest. "',". $ row ['temperature']. ",". $ row ['humidity']. ",". $ row ['heatindex " ']. "],";}?>]; // Mstari uliopindika chaguzi var = Chati iliyopigwa var chati = mpya google.visualization. LineChart (hati.getElementById ('curve_chart')); chati.draw (data, chaguzi); } // Mwisho wa mabano kutoka kwa Chora //
Hatua ya 6: Nyumba ya Kuchapishwa ya 3D
Kwa makazi, nilitumia nyumba mbili tofauti, moja kwa ESP32-CAM na DHT22 pamoja na moja kwa ngao ya betri ya 18650.
Hatua ya 7: Matokeo ya Mwisho
Matokeo ya mwisho pia yanaonyeshwa kwenye picha hapo juu.
Na wakati wowote betri haina kitu, unaweza kuchaji na kebo ndogo ya USB.
Ilipendekeza:
Kuendesha gari chafu na LoRa! (Sehemu ya 1) -- Sensorer (Joto, Unyevu, Unyevu wa Udongo): Hatua 5
Kuendesha gari chafu na LoRa! (Sehemu ya 1) || Sensorer (Joto, Unyevu, Unyevu wa Udongo): Katika mradi huu nitakuonyesha jinsi nilivyotengeneza chafu. Hiyo inamaanisha nitakuonyesha jinsi nilivyojenga chafu na jinsi nilivyoweka umeme na umeme wa kiotomatiki. Pia nitakuonyesha jinsi ya kupanga bodi ya Arduino inayotumia L
Ufuatiliaji wa Joto la ESP8266 Nodemcu Kutumia DHT11 kwenye Mtandao wa Mtandao - Pata Joto la Chumba na Unyevu kwenye Kivinjari chako: Hatua 6
Ufuatiliaji wa Joto la ESP8266 Nodemcu Kutumia DHT11 kwenye Mtandao wa Mtandao | Pata Joto la Chumba na Unyevu kwenye Kivinjari chako: Halo jamani leo tutafanya unyevu & mfumo wa ufuatiliaji wa joto kwa kutumia ESP 8266 NODEMCU & Sensor ya joto ya DHT11. Joto na unyevu utapatikana kutoka kwa Sensorer ya DHT11 & inaweza kuonekana kwenye kivinjari ambayo ukurasa wa wavuti utasimamia
ESP32 Kulingana na M5Stack M5stick C Hali ya hewa Monitor na DHT11 - Fuatilia Unyevu wa Joto na Kiashiria cha Joto kwenye M5stick-C Pamoja na DHT11: 6 Hatua
ESP32 Kulingana na M5Stack M5stick C Hali ya hewa Monitor na DHT11 | Fuatilia Unyevu wa Joto na Kiashiria cha Joto kwenye M5stick-C Pamoja na DHT11: Halo jamani, katika mafundisho haya tutajifunza jinsi ya kusanikisha sensa ya joto ya DHT11 na m5stick-C (bodi ya maendeleo na m5stack) na kuionyesha kwenye onyesho la m5stick-C. Kwa hivyo katika mafunzo haya tutasoma joto, unyevu & joto i
Jinsi ya kutumia Sensor ya Joto la DHT11 na Arduino na Joto la Uchapishaji wa Joto na Unyevu: Hatua 5
Jinsi ya Kutumia Sensorer ya Joto la DHT11 Na Arduino na Joto la Uchapishaji Joto na Unyevu: Sura ya DHT11 hutumiwa kupima joto na unyevu. Unyevu wa DHT11 na sensorer ya joto hufanya iwe rahisi sana kuongeza data ya unyevu na joto kwenye miradi yako ya elektroniki ya DIY. Ni kwa kila
Joto -Joto La Kudhibitiwa la Joto La joto: Hatua 6
Joto -Joto La Kutabasamu La Kudhibiti Joto: ******************************************* ************************************************** +