當(dāng)前位置:首頁(yè) > 物聯(lián)網(wǎng) > IoT設(shè)計(jì)分享
[導(dǎo)讀]在這個(gè)項(xiàng)目中,我們將學(xué)習(xí)如何創(chuàng)建一個(gè)氣象站,它將在web服務(wù)器中顯示來自BME280模塊的讀數(shù)和來自O(shè)penWeatherMap API的實(shí)時(shí)天氣數(shù)據(jù)。該設(shè)備將從BME280傳感器獲取溫度、濕度、氣壓和高度,并從OpenWeatherMap API獲取外部溫度、濕度、天氣狀況以及日出和日落。我們可以在網(wǎng)絡(luò)瀏覽器中看到他們?cè)陂喿x。

在這個(gè)項(xiàng)目中,我們將學(xué)習(xí)如何創(chuàng)建一個(gè)氣象站,它將在web服務(wù)器中顯示來自BME280模塊的讀數(shù)和來自O(shè)penWeatherMap API的實(shí)時(shí)天氣數(shù)據(jù)。該設(shè)備將從BME280傳感器獲取溫度、濕度、氣壓和高度,并從OpenWeatherMap API獲取外部溫度、濕度、天氣狀況以及日出和日落。我們可以在網(wǎng)絡(luò)瀏覽器中看到他們?cè)陂喿x。

BME280溫度,濕度和壓力傳感器

BME280是一款專為移動(dòng)應(yīng)用和可穿戴設(shè)備開發(fā)的集成環(huán)境傳感器,尺寸和低功耗是關(guān)鍵設(shè)計(jì)參數(shù)。該裝置結(jié)合了高線性度和高精度傳感器,是完全可行的低電流消耗和長(zhǎng)期穩(wěn)定。BME280傳感器提供了極快的響應(yīng)時(shí)間,因此支持新興應(yīng)用的性能要求,例如上下文感知,以及在寬溫度范圍內(nèi)的高精度。

該傳感器測(cè)量相對(duì)濕度范圍為0 ~ 100%,精度為±3%,氣壓范圍為300Pa ~ 1100hpa,絕對(duì)精度為±1hpa,溫度范圍為-40℃~ 85℃,精度為±1.0℃。

BME280支持I2C接口和SPI接口。我們使用的模塊支持1.7 - 3.3V的電壓范圍。當(dāng)以1Hz的刷新率測(cè)量所有參數(shù)時(shí),BME280的平均電流消耗為3.6μA。傳感器支持休眠、正常、強(qiáng)制三種電源模式。

在購(gòu)買BME280模塊時(shí)要記住的一件事是,外觀相似的模塊也帶有缺乏濕度測(cè)量功能的BMP280傳感器,這使得它比BME280便宜得多。識(shí)別BME280和BMP280傳感器的最佳方法是查看產(chǎn)品代碼。BME280傳感器將有一個(gè)以“U”開頭的產(chǎn)品代碼,例如UP, UN等。而BMP280將有一個(gè)以“K”開頭的產(chǎn)品代碼,例如KN, KP等。另一個(gè)視覺差異是BME280有點(diǎn)方形,而BMP280是矩形。

OpenWeatherMap API

OpenWeatherMap是一個(gè)在線服務(wù),通過API提供全球天氣數(shù)據(jù),包括當(dāng)前天氣數(shù)據(jù)、預(yù)報(bào)、臨近預(yù)報(bào)和任何地理位置的歷史天氣數(shù)據(jù)。通過他們的API,我們可以訪問地球上任何位置的當(dāng)前天氣數(shù)據(jù),包括超過20萬個(gè)城市!他們收集和處理來自不同來源的天氣數(shù)據(jù),如全球和當(dāng)?shù)靥鞖饽P?、衛(wèi)星、雷達(dá)和一個(gè)龐大的氣象站網(wǎng)絡(luò)。數(shù)據(jù)有JSON、XML和HTML三種格式。我們將使用HTTP GET來請(qǐng)求這個(gè)項(xiàng)目的JSON數(shù)據(jù)。

氣象站線路圖

連接相當(dāng)簡(jiǎn)單。按照上面的連接圖進(jìn)行操作。我們?cè)黾恿艘粋€(gè)18650電池和TP4056充電模塊,并為備份提供保護(hù)。首先將電池的負(fù)極連接到TP4056模塊的B-引腳,將正極連接到模塊的B+引腳?,F(xiàn)在將模塊的OUT+連接到ESP32 Devkit的VIN引腳,B-連接到GND引腳。TP4056模塊還包含DW01保護(hù)芯片,可以防止電池過放電和短路。

現(xiàn)在讓我們將BME280模塊連接到ESP32 Devkit。BME280的VCC引腳接3.3V引腳,GND接GND引腳。該模塊同時(shí)支持SPI和I2C。我們將使用I2C接口進(jìn)行通信。為此,將SDA引腳連接到ESP32 Devkit的D22,將SCL引腳連接到D21。

代碼說明和Arduino IDE安裝庫(kù)

對(duì)于這個(gè)項(xiàng)目,我們需要安裝幾個(gè)Arduino庫(kù),它可以直接通過庫(kù)管理器完成。要安裝庫(kù),請(qǐng)導(dǎo)航到Arduino IDE > Sketch > Include Library > Manage libraries…等待Library Manager下載庫(kù)索引并更新已安裝庫(kù)列表。然后搜索并安裝以下庫(kù)。

?Adafruit BME280庫(kù)

?Adafruit統(tǒng)一傳感器

?Arduino_JSON圖書館

使用zip文件安裝以下庫(kù)。

?ESPAsyncWebServer

?AsyncTCP

在Arduino IDE中安裝ESP32文件系統(tǒng)上傳器

我們使用SPIFFS來托管web服務(wù)器文件。我們可以像使用普通文件系統(tǒng)一樣使用ESP32閃存,就像在SD卡或USB大容量存儲(chǔ)中一樣,借助SPIFFS將這些文件上傳到文件系統(tǒng)中,我們需要一個(gè)稱為ESP32文件系統(tǒng)上傳器的工具。要將此工具安裝到Arduino IDE,請(qǐng)遵循以下步驟

?到GitHub發(fā)布頁(yè)面下載ESP32FS-1.0.zip。

?將zip文件解壓縮到Arduino IDE目錄下的Tools文件夾。解壓后的路徑看起來像這樣“C:\Users\Username\Documents\Arduino\tools\ESP32FS\tool\ ESP32FS .jar”

?重新啟動(dòng)Arduino IDE,您可以通過單擊Tools Menu使用此工具。

web服務(wù)器文件結(jié)構(gòu)

正如我們已經(jīng)說過的,我們將使用ESP32文件系統(tǒng)來托管web服務(wù)器。文件系統(tǒng)結(jié)構(gòu)如下所示。需要加載到文件系統(tǒng)的所有數(shù)據(jù)都存儲(chǔ)在sketch文件夾中名為data的文件夾中。

HTML文件

html文件是服務(wù)器收到請(qǐng)求時(shí)加載的主文件。它包含了網(wǎng)頁(yè)的所有結(jié)構(gòu)編程。

CSS文件

css文件用于定義HTML頁(yè)面的樣式。使用CSS,我們可以控制顏色,字體,文字大小,元素之間的間距,元素如何定位和布局,使用什么背景圖像或背景顏色,不同設(shè)備和屏幕尺寸的不同顯示,等等!

JavaScript文件

javascript文件負(fù)責(zé)圖像操作、JSON解碼和內(nèi)容的動(dòng)態(tài)更改。這有助于我們更新網(wǎng)頁(yè)上的值。它控制數(shù)據(jù)更新的事件偵聽器。

Arduino草圖

這是ESP32氣象站的草圖。

讓我們看一下代碼是如何從傳感器讀取數(shù)據(jù),從API獲取天氣數(shù)據(jù),并將其發(fā)送到web服務(wù)器的。

包括庫(kù)

WiFi、HTTPClient、AsyncTCP和ESPAsyncWebServer庫(kù)用于WiFi通信和web服務(wù)器的創(chuàng)建和維護(hù)。

SPIFFS庫(kù)用于文件系統(tǒng)管理,Arduino_JSON庫(kù)用于處理JSON字符串。

最后,Adafruit傳感器庫(kù)和Adafruit BME280庫(kù)用于處理BME280傳感器。

用戶可修改參數(shù)

在代碼中,需要更改一些值才能使其正常工作。將“您的WiFi SSID”和“您的WiFi密碼”替換為您的WiFi SSID和密碼。另外,根據(jù)您的城市代碼和溫度測(cè)量單位更改。

下一個(gè)也是最重要的參數(shù)是API密鑰。這個(gè)密鑰是唯一的,這是我們從OpenWeatherMap服務(wù)器提取數(shù)據(jù)的認(rèn)證密鑰。獲取API密鑰的過程非常簡(jiǎn)單。去OpenWeatherMap網(wǎng)站,創(chuàng)建一個(gè)賬戶。如果你已經(jīng)有一個(gè)帳戶,就登錄進(jìn)去。。在該頁(yè)面上,您可以看到您的默認(rèn)API密鑰。如果您愿意,可以稍后創(chuàng)建密鑰。復(fù)制API密鑰并將其粘貼到代碼中。這樣就可以從OpenWeatherMap服務(wù)器獲取數(shù)據(jù)了。

獲取BME280讀數(shù)

下面的函數(shù)用于從BME280獲取讀數(shù)。

在這個(gè)函數(shù)中,每次讀取都從BME280傳感器獲取,并將其編碼為JSON字符串,然后將JSON字符串返回給事件處理程序。當(dāng)事件被觸發(fā)時(shí),事件處理程序?qū)堰@些數(shù)據(jù)發(fā)送到web頁(yè)面。

從OpenWeatherMap API獲取天氣數(shù)據(jù)

為此,我們創(chuàng)建了另一個(gè)函數(shù)。它將以JSON格式從API獲取天氣數(shù)據(jù),解碼,并將其排列成我們需要的格式。然后,與BME280讀取函數(shù)類似,該函數(shù)將這些編碼為JSON字符串,并在觸發(fā)特定事件時(shí)將其發(fā)送到服務(wù)器。HTTP GET用于從服務(wù)器獲取數(shù)據(jù)。

Web設(shè)置和事件請(qǐng)求處理

下面的setup函數(shù)部分將創(chuàng)建和設(shè)置web服務(wù)器,并在網(wǎng)頁(yè)加載時(shí)處理事件請(qǐng)求。當(dāng)收到加載網(wǎng)頁(yè)的請(qǐng)求時(shí),第一個(gè)事件處理程序?qū)l(fā)送網(wǎng)頁(yè)數(shù)據(jù)。第二個(gè)事件處理程序?qū)⒈O(jiān)聽重置請(qǐng)求,并將頁(yè)面上顯示的所有變量設(shè)置為零。第三個(gè)even處理程序是檢查客戶端連通性,如果客戶端斷開連接,服務(wù)器將嘗試在一秒鐘的間隔內(nèi)重新建立連接。

在循環(huán)函數(shù)中,還可以看到另外兩個(gè)事件處理程序。這些處理程序不會(huì)監(jiān)聽任何請(qǐng)求。它們將在設(shè)定的時(shí)間定期發(fā)送數(shù)據(jù)。這將刷新網(wǎng)頁(yè)上的數(shù)據(jù)。BME280的數(shù)據(jù)更新速度比開放天氣圖數(shù)據(jù)快。

上傳代碼和文件

上傳代碼很簡(jiǎn)單。就像其他Arduino板一樣,將ESP32 Devkit連接到PC上。選擇正確的“Board”和“Port”,單擊“upload”。就是這樣。要上傳Web Server文件,請(qǐng)確保所有文件都位于名為data的文件夾中,該文件夾與.ino文件位于同一文件夾中。進(jìn)入“工具-> ESP32草圖數(shù)據(jù)上傳”。IDE將上傳文件并重新啟動(dòng)ESP32。上傳文件時(shí),請(qǐng)確保未打開串行監(jiān)視器。如果它被打開,你會(huì)得到一個(gè)錯(cuò)誤。如果是,只需關(guān)閉串行監(jiān)視器并再次上傳文件。您可以從以下鏈接下載草圖和web服務(wù)器文件。

訪問Web服務(wù)器

現(xiàn)在,一旦代碼被編譯并編程到ESP32中,你可以檢查串行監(jiān)視器,一旦ESP32連接到WiFi網(wǎng)絡(luò),它就會(huì)打印出IP地址。

或者你可以檢查你的路由器和分配給ESP32的IP是什么。這取決于你的路由器。一旦你獲得了IP,你就可以通過簡(jiǎn)單地在瀏覽器中輸入這個(gè)地址并進(jìn)入頁(yè)面來訪問網(wǎng)絡(luò)服務(wù)器。這就是結(jié)果。

天氣狀況圖標(biāo)會(huì)根據(jù)從API接收到的數(shù)據(jù)而改變。日出和日落時(shí)間也從OWM API中提取。

本文編譯自iotdesignpro

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉