基于物聯網的ESP32 Wi-Fi氣象站,使用DHT11和BMP180傳感器
在本教程中,我們將制作一個基于ESP32的氣象站,我們將在其中構建一個ESP32 web服務器,以在web瀏覽器上顯示溫度,濕度,壓力,亮度和海拔值。其中DHT11傳感器用于獲取溫度和濕度數據,BMP180傳感器用于獲取壓力和海拔數據,LDR傳感器用于獲取光度數據。這些天氣數據可以從世界任何地方使用ESP32的IP地址進行監(jiān)控。它也可以上傳到ThingSpeak,使其更具互動性,就像我們在樹莓派氣象站所做的那樣。
在基于物聯網的應用中,web服務器用于使用web瀏覽器控制或監(jiān)控任何傳感器值,我們以前使用Arduino, ESP8266, NodeMCU, ESP32,樹莓派等創(chuàng)建了許多web服務器。
DHT11溫濕度傳感器
DHT11傳感器在測量溫度和濕度方面非常流行,我們以前使用DHT11與其他微控制器(如Arduino, Raspberry Pi等)建立氣象站。它經過工業(yè)校準,并提供數字輸出,使其非常容易與所有類型的mcu接口。它只有3個引腳(數據,Vcc和GND),如下圖所示。
在這里查看所有基于DHT11的項目。
BMP180壓力傳感器
BMP180是一種氣壓傳感器,主要用于測量高度。它還有一個內置的溫度傳感器。它與I2C接口一起工作。BMP180傳感器測量周圍空氣的絕對壓力。壓力值取決于天氣和海拔高度。
組件的要求
?ESP32 Dev模塊
?DHT11溫濕度傳感器
?BMP180壓力傳感器
?LDR(光相關電阻)
?電阻
?電路試驗板
?公母線
ESP32 Wi-Fi氣象站電路圖
ESP32, DHT11和BMP180連接:
?連接ESP32的D22引腳(SCL) - BMP180的> SCL引腳
?連接ESP32的D21引腳(SDA) - BMP180的> SDA引腳
?連接ESP32的D13引腳-> DHT11的數據引腳
?連接ESP32的D12引腳-分壓器的>輸出
?連接ESP32 3.3v引腳->傳感器Vcc
?連接ESP32的GND ->傳感器的GND
代碼的解釋
在這里,ESP32是用Arduino IDE編程的,在項目結束時給出了完整的代碼和演示視頻。
我們還需要為這個基于物聯網的氣象站提供四個庫- WiFi, DHT(用于DHT傳感器),Adafruit_BMP085(用于BMP180)和Wire(用于I2C)。
從以下鏈接下載這些庫:DHT11庫,BMP180,并通過在Sketch菜單中的Include庫將它們安裝在Arduino IDE中。
首先,包括所有必需的庫。
然后,初始化變量并為DHT11、BMP180、Wi-Fi名稱、Wi-Fi密碼和代碼中使用的其他一些變量創(chuàng)建實例。
接下來,聲明一個Wi-Fi庫的對象來訪問它的函數。所形成的實例的參數將是服務器正在偵聽的端口號。因為80是HTTP的默認端口,所以我們將使用這個值。
在Void setup()函數中,使用.begin()函數初始化波特率,DHT傳感器和BMP180,然后使用WiFi將模塊與Wi-Fi連接。開始(ssid、密碼);函數。
現在,使用server.begin()啟動服務器;功能,打印ESP32的IP地址。此IP地址將用于在瀏覽器上訪問天氣數據。
在void loop()函數中,通過讀取LDR連接的模擬引腳12來獲得亮度。此外,使用dht.read()函數獲取以攝氏度和華氏度為單位的溫度,并將該數據存儲在不同的變量中。然后,使用bmp獲取高度和壓力。readPressure函數。壓強的單位是毫巴。然后,將此數據打印到串行監(jiān)視器上。
ESP32默認具有12位ADC,因此LDR讀數將在0-4095之間,其中4095被認為是最大亮度,0被認為是最小亮度。
接下來,使用HTML設計web頁面,并使用client.println()函數發(fā)送每一行。
要裝飾頁面,請使用CSS為文本和背景設置樣式。您可以更改下面幾行中的屬性來更改顏色、字體和其他樣式。
然后使用。創(chuàng)建除法標簽為每個參數,即壓力,溫度,濕度,海拔,和亮度。另外,為這些參數定義不同的屬性。
類似地,為其他參數創(chuàng)建division類,并關閉HTML和body標記。
測試ESP32氣象站
現在,將ESP32與筆記本電腦連接,正確選擇電路板和端口,然后點擊上傳按鈕。確保您的筆記本電腦或智能手機與ESP32共享相同的Wi-Fi網絡。
上傳代碼后,打開串口監(jiān)視器。使串行監(jiān)視器波特率為115200。您將在監(jiān)視器中看到IP地址,只需復制此IP并將其粘貼到瀏覽器中。
因此,通過在地址欄中復制粘貼IP地址,在web瀏覽器中打開該IP地址,您將看到一個網頁,顯示所有天氣數據,如溫度、濕度、壓力、海拔和光度。此頁面每隔10秒自動刷新一次。
因此,這就是如何使用ESP32, DHT11和BMP180傳感器輕松構建完整的氣象站。通過在路由器設置中啟用端口轉發(fā),可以從世界任何地方監(jiān)控此數據。
本文編譯自iotdesignpro