Talaan ng mga Nilalaman:

ESP32 WiFi Weather Station Na may isang BME280 Sensor: 7 Hakbang (na may Mga Larawan)
ESP32 WiFi Weather Station Na may isang BME280 Sensor: 7 Hakbang (na may Mga Larawan)

Video: ESP32 WiFi Weather Station Na may isang BME280 Sensor: 7 Hakbang (na may Mga Larawan)

Video: ESP32 WiFi Weather Station Na may isang BME280 Sensor: 7 Hakbang (na may Mga Larawan)
Video: Arduino Nano, BME280 and SSD1306 OLED Weather Station 2024, Hulyo
Anonim
Image
Image
Ang istasyon ng panahon ng ESP32 WiFi Na may isang BME280 Sensor
Ang istasyon ng panahon ng ESP32 WiFi Na may isang BME280 Sensor
Ang istasyon ng panahon ng ESP32 WiFi Na may isang BME280 Sensor
Ang istasyon ng panahon ng ESP32 WiFi Na may isang BME280 Sensor

Minamahal na mga kaibigan maligayang pagdating sa isa pang tutorial! Sa tutorial na ito magtatayo kami ng proyekto ng istasyon ng panahon na pinagana ang aWiFi! Gagamitin namin ang bago, kahanga-hangang chip ng ESP32 sa kauna-unahang pagkakataon kasama ang isang pagpapakita ng Nextion.

Sa video na ito, gagawin namin ito. Isa pa itong proyekto sa istasyon ng panahon na alam ko, ngunit sa pagkakataong ito ay ginagamit namin ang bagong chip ng ESP32! Gumagamit din kami ng bagong sensor ng BME280 na sumusukat sa temperatura, halumigmig, at presyon ng barometric. Kapag pinapagana namin ang proyekto, kumokonekta ito sa WiFi network, at kukunin nito ang pagtataya ng panahon para sa aking lokasyon mula sa openweathermap website. Pagkatapos ay ipapakita nito ang forecast sa 3.2 Nextion Touch Display na ito kasama ang mga pagbasa mula sa sensor! Ang mga pagbasa ay na-update bawat dalawang segundo at ang taya ng panahon bawat oras! Tulad ng nakikita mo, sa proyektong ito ginagamit namin ang pinakabagong mga teknolohiyang magagamit sa isang gumagawa ngayon! Kung ikaw ay isang beterano ng DIY, maaari mong buuin ang proyektong ito sa loob ng limang minuto.

Kung ikaw ay isang nagsisimula, kailangan mong manuod ng ilang mga video bago subukan ang proyektong ito. Maaari kang makahanap ng mga link sa video na ito sa Instructable na ito, huwag magalala.

Magsimula na tayo!

Hakbang 1: Kunin ang Lahat ng Mga Bahagi

Kunin ang Lahat ng Mga Bahagi
Kunin ang Lahat ng Mga Bahagi

Upang maitayo ang proyektong ito kailangan namin ang mga sumusunod na bahagi:

  • Isang Lupon ng ESP32 ▶
  • Isang sensor ng BME280 I2C ▶
  • Isang 3.2 "Pagpapakita ng Nextion ▶
  • Isang Maliit na Breadboard ▶
  • Ang ilang mga wire ▶

Ang gastos ng proyekto ay humigit-kumulang na 30 $.

Sa halip na ang ESP32, maaari naming gamitin ang mas murang ESP8266 chip, ngunit nagpasya akong gamitin ang ESP32 upang makakuha ng ilang karanasan dito at makita kung ano ang gumagana at kung ano ang hindi.

Hakbang 2: Ang ESP32

Image
Image
Ang ESP32
Ang ESP32

Ito ang kauna-unahang proyekto na itinayo ko kasama ang bagong chip ng ESP32.

Kung hindi ka pamilyar dito, ang ESP32 chip ay ang kahalili ng sikat na ESP8266 chip na ginamit namin ng maraming beses sa nakaraan. Ang ESP32 ay isang hayop! Nag-aalok ito ng dalawang 32 na pagproseso ng mga core na nagpapatakbo sa 160MHz, isang napakalaking halaga ng memorya, WiFi, Bluetooth at maraming iba pang mga tampok na may halagang 7 $! Kamangha-manghang bagay!

Mangyaring panoorin ang detalyadong pagsusuri na inihanda ko para sa board na ito. Inilakip ko ang video sa Instructable na ito. Makakatulong itong maunawaan kung bakit babaguhin ng chip na ito ang paraan ng paggawa natin ng mga bagay magpakailanman!

Hakbang 3: Ang Pagpapakita ng Nextion

Image
Image
BME280 Sensor
BME280 Sensor

Gayundin, ito ang unang proyekto na binubuo ko na may ipinakitang touch na Nextion.

Ang mga ipinapakita na Nextion ay mga bagong uri ng pagpapakita. Mayroon silang sariling ARM processor sa likuran na responsable para sa pagmamaneho ng display at paglikha ng interface ng grapiko na gumagamit. Kaya, maaari naming gamitin ang mga ito sa anumang microcontroller at makamit ang kamangha-manghang mga resulta.

Naghanda ako ng isang detalyadong Nakagagabay tungkol sa display na Nextion na nagpapaliwanag nang malalim kung paano sila gumagana, kung paano gamitin ang mga ito at ang kanilang mga drawbacks. Maaari mo itong basahin sa pamamagitan ng pag-click dito:

Hakbang 4: BME280 Sensor

BME280 Sensor
BME280 Sensor

Ang BME280 sa isang bagong mahusay na sensor mula sa Bosch.

Sa ngayon ay gumagamit ako ng sensor ng BMP180 na maaaring masukat ang temperatura at presyon ng barometric. Maaaring sukatin ng sensor ng BME280 ang temperatura, halumigmig, at presyon ng barometric! Ang astig nito! Kailangan lang namin ng isang sensor upang makabuo ng isang kumpletong istasyon ng panahon!

Bilang karagdagan sa na, ang sensor ay napakaliit ng laki at napakadaling gamitin. Ang module na gagamitin natin ngayon ay gumagamit ng interface ng I2C kaya't napakadali ng pakikipag-usap sa Arduino. Tanging kumokonekta lamang kami ng kuryente at dalawa pang mga wire upang ito ay gumana.

Marami nang mga library na binuo para sa sensor na ito upang maaari natin itong magamit sa aming mga proyekto nang napakadali! Ang gastos ng sensor ay tungkol sa 5 $. Maaari mo itong makuha dito ▶

TANDAAN: Kailangan namin ang sensor ng BME280. Mayroon ding sensor na BMP280 na hindi nag-aalok ng pagsukat ng halumigmig. Mag-ingat upang mag-order sa sensor na kailangan mo.

Hakbang 5: Pagkonekta sa Mga Bahagi

Pagkonekta sa Mga Bahagi
Pagkonekta sa Mga Bahagi
Pagkonekta sa Mga Bahagi
Pagkonekta sa Mga Bahagi
Pagkonekta sa Mga Bahagi
Pagkonekta sa Mga Bahagi

Ang koneksyon ng mga bahagi ay prangka tulad ng nakikita mo mula sa diagram ng eskematiko.

Dahil ang sensor ng BME280 ay gumagamit ng interface ng I2C, kailangan lamang naming ikonekta ang dalawang wires upang makipag-usap sa ESP32. Inilakip ko ang sensor sa Pins 26 at 27. Sa teorya, ang bawat digital pin ng board ng ESP32 ay maaaring magamit sa mga peripheral ng I2C. Sa pagsasanay bagaman, nalaman ko na ang ilang mga pin ay hindi gumana sapagkat nakalaan ang mga ito para sa ibang gamit. Ang mga 26 at 27 ay mahusay na gumana!

Upang magpadala ng data sa display, kailangan lamang naming ikonekta ang isang kawad sa TX0 pin ng ESP32. Kinailangan kong yumuko ang pin na tulad nito upang ikonekta ang babaeng kawad ng display dahil ang ESP32 board ay masyadong malaki para sa breadboard na ito.

Matapos ikonekta ang mga bahagi, kailangan naming i-load ang code sa ESP32, at kailangan nating i-load ang GUI sa display na Nextion. Kung nagkakaproblema ka sa pag-upload ng programa sa board ng ESP32, pindutin nang matagal ang pindutan ng BOOT pagkatapos pindutin ang upload button sa Arduino IDE.

Upang mai-load ang GUI sa display ng Nextion, kopyahin ang WeatherStation.tft file na ibabahagi ko sa iyo sa isang walang laman na SD card. Ilagay ang SD card sa puwang ng SD card sa likuran ng display. Pagkatapos ay i-power up ang display, at mai-load ang GUI. Pagkatapos alisin ang SD card at ikonekta muli ang kuryente.

Matapos matagumpay na mai-load ang code ang proyekto ay makakonekta sa WiFi network, makukuha nito ang taya ng panahon mula sa openweathermap.org website, at ipapakita nito ang mga pagbasa mula sa sensor. Tingnan natin ngayon ang bahagi ng software ng proyekto.

Hakbang 6: Ang Code ng Project

Ang Code ng Project
Ang Code ng Project
Ang Code ng Project
Ang Code ng Project
Ang Code ng Project
Ang Code ng Project

Upang mai-parse ang data ng panahon, kailangan namin ng mahusay na Arduino JSON library. Kailangan din namin ng isang silid-aklatan para sa sensor.

? ESP32 BME280: https://github.com/Takatsuki0204/BME280-I2C-ESP32? Arduino JSON:

Tingnan natin ang code ngayon.

Sa una, kailangan naming itakda ang SSID at ang password ng aming WiFi network. Susunod, kailangan nating ipasok ang libreng APIKEY mula sa operweathermap.org website. Upang lumikha ng iyong sariling API key, kailangan mong mag-sign up sa website. Ang pagkuha ng kasalukuyang data ng panahon at pagtataya ay libre, ngunit ang website ay nag-aalok ng maraming mga pagpipilian kung nais mong magbayad ng kaunting pera. Susunod, kailangan nating hanapin ang id ng aming lokasyon. Hanapin ang iyong lokasyon at kopyahin ang ID na maaaring matagpuan sa URL ng iyong lokasyon.

Pagkatapos ay ipasok ang id ng iyong lungsod sa variable ng CityID. Gayundin, ipasok ang altitude ng iyong bayan sa variable na ito. Ang halagang ito ay kinakailangan para sa tumpak na pagbabasa ng presyon ng barometric mula sa sensor.

const char * ssid = "yourSSID"; const char * password = "yourPassword"; String CityID = "253394"; // Sparta, Greece String APIKEY = "yourAPIkey"; #define ALTITUDE 216.0 // Altitude sa Sparta, Greece

Ngayon handa na kaming magpatuloy.

Sa una, pinasimulan namin ang sensor, at kumokonekta kami sa WiFi Network. Pagkatapos ay humihiling kami ng data ng panahon mula sa server.

Nakakatanggap kami ng tugon kasama ang data ng panahon sa format na JSON. Bago ipadala ang data sa JSON library, manu-manong tinanggal ko ang ilang mga character na nagdudulot sa akin ng mga problema. Pagkatapos ang JSON library ay pumalit, at madali naming mai-save ang data na kailangan namin sa mga variable. Matapos naming mapanatili ang data sa mga variable, ang kailangan lamang gawin ay ipakita ang mga ito sa screen at maghintay ng isang oras bago humiling ng bagong data mula sa server. Ang tanging impormasyon na ipinakita ko lamang ay ang pagtataya ng panahon, ngunit maaari kang magpakita ng karagdagang impormasyon kung nais mo. Ang lahat dito ay nai-save sa mga variable. Pagkatapos ay nabasa namin ang temperatura, ang halumigmig at ang presyon ng barometric mula sa sensor at ipinapadala namin ang data sa display na Nextion.

Upang mai-update ang display, nagpapadala lamang kami ng ilang mga utos sa serial port na tulad nito:

walang bisa ang showConnectingIcon () {Serial.println (); String command = "weatherIcon.pic = 3"; Serial.print (utos); endNextionCommand (); }

Ang Nextion GUI ay binubuo ng isang background, ilang mga textboxes at larawan na nagbabago depende sa pagtataya ng panahon. Mangyaring panoorin ang tutorial sa pagpapakita ng Nextion para sa karagdagang impormasyon. Maaari mong mabilis na idisenyo ang iyong sariling GUI kung nais mo at ipakita ang maraming mga bagay dito.

Tulad ng dati maaari mong hanapin ang code ng proyekto na naka-attach sa Instructable na ito

Hakbang 7: Pangwakas na Mga Saloobin at Pagpapabuti

Pangwakas na Mga Saloobin at Pagpapabuti
Pangwakas na Mga Saloobin at Pagpapabuti

Tulad ng nakikita mo, ang isang may karanasan na gumagawa ngayon ay maaaring bumuo ng mga nakagaganyak na proyekto sa loob lamang ng ilang oras na may ilang mga linya ng code at tatlong bahagi lamang! Ang isang proyektong tulad nito ay imposibleng magawa kahit dalawang taon na ang nakakalipas!

Syempre, simula pa lang ito ng proyekto. Nais kong magdagdag ng maraming mga tampok dito, tulad ng mga graph, pindutin ang pag-andar na nawawala ngayon, marahil isang mas malaking display at syempre isang magandang hitsura na naka-print na enclosure ng 3D. Magdidisenyo din ako ng isang mas mahusay na naghahanap ng GUI at mga icon. Mayroon akong ilang mga sariwang ideya na ipapatupad!

Gusto kong marinig ang iyong opinyon tungkol sa proyekto ngayon. Anong uri ng mga tampok ang nais mong idagdag ko sa proyekto? Gusto mo ba ng hitsura nito? Paano mo nais na makita itong nagbabago? Mangyaring i-post ang iyong mga ideya sa seksyon ng mga komento sa ibaba; Gustung-gusto kong basahin ang iyong mga saloobin!

Wireless Contest
Wireless Contest
Wireless Contest
Wireless Contest

Runner Up sa Wireless Contest

Inirerekumendang: