使用NodeMCU和ThingSpeak的太陽(yáng)能Wi-Fi氣象站
掃描二維碼
隨時(shí)隨地手機(jī)看文章
氣象站是一種可以監(jiān)測(cè)周圍環(huán)境的各種參數(shù),如濕度、溫度、壓力、降雨量等的設(shè)備。我們之前用不同的微控制器建立了幾個(gè)氣象站,比如:
?基于物聯(lián)網(wǎng)的樹莓派氣象站
?基于物聯(lián)網(wǎng)的ESP32 Wi-Fi氣象站
?使用Arduino的物聯(lián)網(wǎng)無(wú)線氣象站
這一次,我們使用ESP8266 NodeMCU作為主控制器,并使用太陽(yáng)能電池板為整個(gè)設(shè)置供電。這將是一個(gè)自給自足的太陽(yáng)能無(wú)線氣象站。它還使用3.7V 18650鋰離子電池為電路供電,該鋰離子電池將使用TP4056鋰離子充電器模塊為太陽(yáng)能電池板充電。除此之外,它將有一個(gè)DHT11傳感器來(lái)測(cè)量溫度和濕度,BMP280傳感器來(lái)測(cè)量壓力,雨水傳感器來(lái)檢測(cè)降雨量。所有天氣數(shù)據(jù)都將被記錄并保存在ThingSpeak物聯(lián)網(wǎng)云上,可以從世界任何地方進(jìn)行監(jiān)控。
組件的要求
?NodeMCU ESP8266
?DHT11溫濕度傳感器
?BMP280壓力傳感器
?雨水傳感器
?TP4056鋰離子充電器
?3.7V 18650鋰離子電池
?18650電池座
?DC-DC 0.9V-5V升壓升壓器
?太陽(yáng)能電池板6V, 100Ma
?1 n4007二極管
?電路試驗(yàn)板
?跳線
在進(jìn)入細(xì)節(jié)之前,讓我們了解一下這個(gè)太陽(yáng)能無(wú)線氣象站使用的不同組件和模塊。
TP4056鋰離子電池充電器模塊
TP4056是一款流行的鋰離子電池充電器控制器IC,它支持3.7v鋰離子電池的恒流恒壓充電。它帶有一個(gè)8針的SOP封裝,可以與一些外部組件組裝成一個(gè)完整的充電模塊。
TP4056的完整引腳描述如下:
使用TP4056充電器為3.7V鋰離子電池充電
要使用TP4056充電模塊為18650 3.7V鋰離子電池充電,請(qǐng)按照以下原理圖連接電路。
它也可以使用微型USB線和移動(dòng)充電器等從5V直流輸入源充電。但在這個(gè)太陽(yáng)能Wi-Fi氣象站項(xiàng)目中,我們使用太陽(yáng)能光伏模塊為電池充電。
為太陽(yáng)能電池板上的18650鋰離子電池充電
這里的NodeMCU由太陽(yáng)能電池板供電。18650電池的輸出為(3.7-4)伏,不能用于為NodeMCU供電,因?yàn)樗枰?v才能上電。因此TP4056鋰離子充電器的輸出連接到(0.9-5)V DC-DC升壓電路,將電壓升壓到5v。
BMP280壓力傳感器
BMP280是一款絕對(duì)氣壓傳感器,適用于移動(dòng)應(yīng)用。它是非常受歡迎的非常緊湊的尺寸和低功耗。它被用于手機(jī)、智能手表、氣象站等。BMP280基于博世久經(jīng)考驗(yàn)的壓阻壓力傳感器技術(shù),具有高精度、線性度和長(zhǎng)期穩(wěn)定性。
BMP280的特點(diǎn):
?壓力范圍:300- 1100hpa
?溫度范圍:-40-85°C
?平均典型電流消耗:3.4 μA @ 1hz
?接口:I2C和SPI
?工作電壓:1.71 V ~ 3.6 V
如果你沒(méi)有BMP280,那么BMP180也可以用來(lái)建立一個(gè)物聯(lián)網(wǎng)氣象站。
DHT11溫濕度傳感器
DHT11是一種用于測(cè)量環(huán)境溫度和濕度的傳感器。DHT11傳感器包括用于測(cè)量濕度的電容式濕度傳感元件和用于檢測(cè)溫度的NTC熱敏電阻。所述濕度感應(yīng)電容元件具有兩個(gè)電極,電極之間有保持水分的襯底作為電介質(zhì)。電容值隨濕度的變化而變化。電路集成電路測(cè)量和處理這些電阻值,并將其轉(zhuǎn)換為可測(cè)量的數(shù)字信號(hào)。
特點(diǎn):
?工作電壓:3.3V-5.5V
?溫度范圍:0-50°C
?溫度精度:±2%°C
?濕度范圍:20 ~ 90% RH
?濕度精度:±5% RH
我們之前使用DHT11傳感器使用樹莓派,Arduino和ESP8266建立氣象站。
雨水傳感器
雨水傳感器是用來(lái)探測(cè)降雨的。這適用于自動(dòng)雨刷,氣象站等應(yīng)用。雨水傳感器的工作原理是可變電阻。當(dāng)表面干燥時(shí),兩個(gè)電阻線圈分開,電阻非常高。在下雨的情況下,表面潮濕,電阻低(短路)。該可變電阻使用分壓器網(wǎng)絡(luò)轉(zhuǎn)換為可變電壓,然后將該模擬信號(hào)饋送到LM393電壓比較器將其轉(zhuǎn)換為數(shù)字信號(hào)。
物聯(lián)網(wǎng)氣象站電路圖
這個(gè)太陽(yáng)能氣象站的連接圖如下所示。
BMP280傳感器與NodeMCU的連接方式如下表所示
DHT11傳感器與NodeMCU的連接關(guān)系如下表所示
該表顯示了Rain Sensor和NodeMCU之間的連接
這是物聯(lián)網(wǎng)氣象站的完整設(shè)置:
設(shè)置ThingSpeak賬戶太陽(yáng)能氣象站
在成功完成硬件設(shè)置后,現(xiàn)在是時(shí)候設(shè)置物聯(lián)網(wǎng)平臺(tái)了,所有的天氣數(shù)據(jù)都將存儲(chǔ)在這個(gè)平臺(tái)上。這里我們使用ThingSpeak來(lái)存儲(chǔ)氣象站參數(shù)并在GUI中顯示它們。ThingSpeak是一個(gè)非常流行的物聯(lián)網(wǎng)云平臺(tái),用于在線構(gòu)建存儲(chǔ)、監(jiān)控和處理數(shù)據(jù)。我們還使用ThingSpeak構(gòu)建了許多基于物聯(lián)網(wǎng)的項(xiàng)目。
按照以下步驟創(chuàng)建一個(gè)ThingSpeak帳戶。
第一步:注冊(cè)ThingSpeak
首先,如果你沒(méi)有Mathworks帳戶,請(qǐng)登錄https://thingspeak.com/并創(chuàng)建一個(gè)新的免費(fèi)Mathworks帳戶。
第二步:登錄ThingSpeak
用你的憑證登錄ThingSpeak,然后點(diǎn)擊“新頻道”?,F(xiàn)在填寫項(xiàng)目的詳細(xì)信息,如名稱、字段名稱等。這里我們必須創(chuàng)建四個(gè)字段名,如濕度,溫度,壓力和雨。然后點(diǎn)擊“保存頻道”。
步驟3:記錄憑據(jù)
選擇已創(chuàng)建的通道并記錄以下憑據(jù)。
通道ID,它在通道視圖的頂部。
編寫一個(gè)API密鑰,可以在通道視圖的API Keys選項(xiàng)卡上找到。
步驟4:向GUI添加小部件
單擊“Add Widgets”并添加四個(gè)適當(dāng)?shù)膚idget,如儀表、數(shù)字顯示和指示器。在我的情況下,我已經(jīng)采取了顯示溫度和濕度的儀表,數(shù)字顯示的壓力和指示雨。為每個(gè)小部件選擇適當(dāng)?shù)淖侄蚊?
ESP8266太陽(yáng)能Wi-Fi氣象站編程
在成功完成硬件連接和ThingSpeak設(shè)置之后,現(xiàn)在是時(shí)候?qū)SP8266 NodeMCU進(jìn)行編程了。
要使用Arduino IDE將代碼上傳到NodeMCU,請(qǐng)遵循以下步驟:
1. 打開Arduino IDE,然后進(jìn)入File - >Preferences - >Settings。
2. 在“附加板管理器URL”字段中鍵入,然后單擊“確定”。
3. 現(xiàn)在轉(zhuǎn)到Tools > Board > Boards Manager。在“單板管理器”窗口中,在搜索框中輸入ESP8266,選擇最新版本的單板,單擊“安裝”。
4. 安裝完成后,進(jìn)入“Tools ->Board ->”,選擇“NodeMCU 1.0(ESP-12E Module)”?,F(xiàn)在您可以使用Arduino IDE對(duì)NodeMCU進(jìn)行編程。
完成上述設(shè)置后,使用Arduino IDE對(duì)NodeMCU進(jìn)行編程,將完整的代碼上傳到ESP8266 NodeMCU。下面給出了完整代碼的逐步解釋。
通過(guò)在代碼中包含所有所需的庫(kù)文件來(lái)啟動(dòng)代碼,例如ESP8266WiFi.h用于ESP8266板,Wire.h用于I2C通信等。
包括Adafruit_BMP280.h單擊Arduino IDE中的草圖,然后去包括庫(kù)->管理庫(kù)和搜索Adafruit BMP280,從列表中選擇第一個(gè)搜索結(jié)果并單擊安裝。
在這里,DHT.h用于DHT11傳感器,可以從這里的鏈接下載。ThingSpeak.h庫(kù)用于ThingSpeak平臺(tái),可以通過(guò)以下步驟添加到Arduino IDE中:
在Arduino IDE中,選擇Sketch/Include Library/Manage Libraries。
從列表中單擊ThingSpeak庫(kù),然后單擊Install按鈕。
接下來(lái),定義BMP280的I2C地址。BMP280的缺省地址是0x76。然后為Adafruit_BMP280類和DHT類定義一個(gè)對(duì)象。
現(xiàn)在,聲明網(wǎng)絡(luò)憑據(jù)——即SSID和密碼。需要將NodeMCU連接到互聯(lián)網(wǎng)。
接下來(lái),聲明ThingSpeak帳戶憑據(jù),如通道號(hào)和之前記錄的寫入API。
然后使用函數(shù)Wire.begin初始化I2C。這里GPIO4 (D2)用作SDA, GPIO0 (D3)用作SCL。DHT11連接引腳D1使用dht.setup定義。
要將NodeMCU連接到互聯(lián)網(wǎng),請(qǐng)調(diào)用WiFi。開始并傳遞網(wǎng)絡(luò)SSID和密碼作為參數(shù)。使用WiFi.status()檢查網(wǎng)絡(luò)連接是否成功,連接成功后,在LCD上打印帶有IP地址的消息。
然后使用ThingSpeak.begin使用保存的憑證連接到ThingSpeak平臺(tái)。
接下來(lái),使用readTemperature()和readPressure()從BMP280傳感器解碼溫度和壓力值。帕斯卡壓力值轉(zhuǎn)換為hpa。
這里使用getHumidity()從DHT11傳感器讀取濕度值,從模擬通道接收雨量值。
最后,使用setField()分配ThingSpeak云的字段,并使用writeFields()將數(shù)據(jù)發(fā)送到云。
現(xiàn)在最后啟動(dòng)電路并在ESP8266中上傳代碼。然后打開ThingSpeak網(wǎng)站,你會(huì)看到壓力表中的溫度和濕度值。
本文編譯自iotdesignpro