使用樹莓派Pico W構(gòu)建您自己的氣象站
在這個項目中,我們將建立一個基于物聯(lián)網(wǎng)的天氣監(jiān)測系統(tǒng),可以在我們的智能手機上無線顯示溫度和濕度。只有我們需要穩(wěn)定的互聯(lián)網(wǎng)連接我們的模塊到互聯(lián)網(wǎng)。
我們使用樹莓派Pico W作為內(nèi)置WiFi功能的微控制器。樹莓派Pico W是一款經(jīng)濟實惠的開發(fā)板,由RP2040微控制器供電。它具有內(nèi)置2.4 GHz WIFI,支持無線連接。采用英飛凌CYW43439 WIFI+ BLE芯片,集成單頻段2.4 GHz無線接口(802.11n)。這允許用戶創(chuàng)建用于無線控制和遠(yuǎn)程監(jiān)控的AIoT解決方案。微控制器支持Micropython和C/ c++編程。
如果您想了解更多關(guān)于Raspberry Pi Pico W的信息,您可以使用此鏈接參考制造商統(tǒng)計數(shù)據(jù)。
我們將創(chuàng)建一個網(wǎng)頁,其中所有的傳感器數(shù)據(jù)將被顯示,并可以監(jiān)控。為了測量溫度和濕度,我們使用所謂的著名傳感器“DHT11”。
對于所有這些傳感器和web編程,我們使用Arduino IDE來編程我們的微控制器。對于那些不知道如何在Arduino IDE中編程Raspberry Pi Pico W的人來說,這可能會讓他們感到驚訝。但可以在Arduino IDE中使用C/ c++進行編程。
此前,我們使用其他微控制器和云服務(wù)構(gòu)建了許多基于物聯(lián)網(wǎng)的氣象站,
?使用NodeMCU和ThingSpeak的太陽能Wi-Fi氣象站
?基于物聯(lián)網(wǎng)的樹莓派氣象站,使用DHT11和BMP180傳感器
?基于物聯(lián)網(wǎng)的ESP32 Wi-Fi氣象站,使用DHT11和BMP180傳感器
?物聯(lián)網(wǎng)無線氣象站使用Arduino, ESP8266和ThingSpeak
氣象站所需部件
1.樹莓派Pico W
2.DHT11傳感器
3.跳線
4.電路試驗板
Raspberry Pi Pico W Pinout
模塊板側(cè)共有40個引腳端子,其中GPIO引腳共26個,包括3個ADC引腳。其余的包括電源、接地和參考引腳。
氣象站線路圖
電路連接非常容易理解和實現(xiàn)。下圖顯示了一個全面的電路圖。
讓我們看看這些連接是如何工作的:
DHT11有三個端子,分別是VCC、GND和Signal。將Vcc連接到電路板的3.3v輸出電源,該電源位于引腳36上。同樣,將GND連接到引腳23上的板的接地。船上有各種各樣的地面終端,你可以選擇其中任何一個。
信號引腳應(yīng)連接到Pico板的任何數(shù)字GPIO引腳,因為我們將其連接到GPIO 16。
用Arduino IDE編程樹莓派Pico W
讓我們看看如何使用Arduino IDE對樹莓派Pico W板進行編程。為此,我們需要安裝支持Raspberry Pi Pico w的Raspberry Pi RP2040板包。如果已經(jīng)安裝,請離開安裝過程。
1.打開Arduino IDE,進入File > Preferences。現(xiàn)在將給定的鏈接粘貼到Additional Boards Manager url中,并按Ok保存。
2.打開Arduino IDE,導(dǎo)航到Boards Manager,搜索“Pico”。您將找到帶有電路板名稱的軟件包,安裝它。
3.現(xiàn)在,選擇板為Raspberry Pi Pico W,其余的保持原樣。
4.最后,復(fù)制并編譯下面提供的示例代碼。
5.要上傳代碼,您必須將Pico W板連接到顯示在任何COM端口的計算機。為此,同時按住Pico W上的BOOTSEL按鈕,立即使用micro-USB電纜將Board連接到計算機。釋放BOOTSEL按鈕,如果RPI-RP2驅(qū)動器通知出現(xiàn)在您的計算機上。
因此,下圖顯示了文件管理器中的RP1-RP2驅(qū)動器,這意味著驅(qū)動器引導(dǎo)模式。因此,設(shè)備已準(zhǔn)備好接受代碼/固件。
6.將編譯后的代碼上傳到Pico W板,選擇正確的端口。
7.上傳代碼成功后,打開串口監(jiān)視器,將波特率設(shè)置為115200。
Arduino編程代碼說明
項目代碼很容易理解,因為我們正在讀取傳感器數(shù)據(jù)并將其發(fā)布到web服務(wù)器,所以我們的代碼必須包括連接WiFi,讀取傳感器數(shù)據(jù)和創(chuàng)建網(wǎng)頁。
首先,我們必須包含所有必要的基本庫Wifi.h和DHT.h。通過WiFi成功連接到internet是訪問網(wǎng)頁的必要條件。為此,我們使用庫WIFI .h將Pico W板連接到WIFI連接。圖書館擁有通過WiFi網(wǎng)絡(luò)連接和通信的所有必要功能。我們需要通過我們的登錄憑據(jù),包括SSID和密碼來加入加密的網(wǎng)絡(luò)。
安裝DHT庫:
必須包含DHT庫來讀取傳感器的數(shù)字輸出數(shù)據(jù)。該庫使處理這種類型的傳感器很容易,只需要定義某些引腳,并調(diào)用一些函數(shù)將使您能夠訪問就緒數(shù)據(jù)。
通過Sketch進入Arduino的庫管理器> include libraries> manage libraries。
搜索“DHT”,你會發(fā)現(xiàn)滾動后,圖書館命名為“DHT傳感器庫”由Adafruit。
安裝它,這就是如何容易庫安裝。
我們還定義了在進一步編程中使用的必要變量和對象。我們已經(jīng)將DHT11傳感器信號引腳定義為連接到Pico板的GPIO引腳16。
創(chuàng)建了存儲WiFi連接SSID和密碼所需的變量。你必須根據(jù)你的WiFi證書更改它才能成功連接到網(wǎng)絡(luò)。
我們創(chuàng)建了一個名為“server”的wiiserver對象。我們傳遞HTTP端口號。80作為參數(shù)。
在setup()函數(shù)中,我們以115200年的波特率初始化硬件串行通信.WiFi.begin()函數(shù)以名稱和密碼作為參數(shù)初始化WiFi。
成功連接WiFi網(wǎng)絡(luò)后,IP地址將顯示在串口監(jiān)視器上。
Dht.begin()初始化傳感器以與微控制器通信。類似地,我們使用命令Server .begin()啟動類WIFI Server的Server對象。
在Loop函數(shù)中,最初,我們通過調(diào)用DHT類的readHumidity()和readTemperature()函數(shù)來讀取溫度和濕度,并將其顯示給串行監(jiān)視器以進行測試。
Web服務(wù)器建設(shè)
每當(dāng)web服務(wù)器接收到來自web客戶端的請求時,它將打印“新客戶端已連接”并生成一個web頁面。它只是將HTML代碼連接到一個長字符串中,然后輸出響應(yīng)。該函數(shù)使用我們之前訪問過的類型轉(zhuǎn)換,將溫度和濕度變量讀取為字符串。
首先,我們總是需要聲明來表明我們正在發(fā)送HTML代碼。
元素使網(wǎng)頁在瀏覽器中響應(yīng)。
我們添加一些CSS來樣式化網(wǎng)頁的整體外觀。我們選擇的字體為Helvetica,沒有中間對齊的邊距。此外,我們還為body、h1和p標(biāo)記設(shè)置樣式。
然后我們使用溫度和濕度的字符串類型轉(zhuǎn)換值將其顯示在網(wǎng)頁上。
氣象站示范
按照上面討論的步驟正確地將代碼上傳到Raspberry Pi Pico W。請記住,要添加所有必要的庫以成功執(zhí)行,而不會出現(xiàn)任何錯誤。
打開串口監(jiān)視器,設(shè)置正確的波特率,檢查WiFi連接,等待,直到顯示IP地址。
在需要與Pico Board連接同一WiFi網(wǎng)絡(luò)的設(shè)備上打開瀏覽器,進入IP地址,進入網(wǎng)頁。
您需要刷新頁面才能在web頁面上獲得更新后的數(shù)據(jù)。
本文編譯自iotdesignpro