設(shè)計(jì)一個(gè)基于AiPi-Eye-S1的氣象站
2. 工作描述
2.1硬件
硬件采用AiPi-Eye-S1開(kāi)發(fā)板和3.5英寸240*320像素電容觸摸屏。在日常使用中,設(shè)備通過(guò)開(kāi)發(fā)板上的type-c接口通過(guò)USB線供電。使用USB轉(zhuǎn)TTL工具下載程序。
2.2軟件
①開(kāi)發(fā)環(huán)境我使用VSCode在Windows環(huán)境下開(kāi)發(fā)項(xiàng)目。
②UI設(shè)計(jì)本項(xiàng)目使用LVGL圖形庫(kù)和相應(yīng)的輔助開(kāi)發(fā)工具SquareLine Studio進(jìn)行界面設(shè)計(jì)和C代碼生成。
③天氣信息獲取本項(xiàng)目利用易客云天氣提供的免費(fèi)天氣API,獲取當(dāng)前區(qū)域的七天基本天氣和實(shí)時(shí)基本天氣。由于在請(qǐng)求數(shù)據(jù)時(shí)使用用戶(hù)ID和鍵參數(shù),因此需要進(jìn)行帳戶(hù)注冊(cè)。
本項(xiàng)目方案參考官方氣象站實(shí)例(master·Ai-Thinker-Open/AiPi-Open-Kits·GitHub中的AiPi-Open-Kits/AiPi-Eyes_weather),其總體實(shí)現(xiàn)思路如下:
系統(tǒng)初始化
基于FreeRTOS創(chuàng)建多個(gè)任務(wù)
(1) wifi_mainWiFi運(yùn)行任務(wù);
(2) lvgl_taskRun LVGL實(shí)現(xiàn)觸摸屏顯示和觸摸功能。當(dāng)網(wǎng)絡(luò)連接條件觸發(fā)時(shí),將WiFi名和密碼數(shù)據(jù)發(fā)送到隊(duì)列;
(3)通過(guò)串口顯示bl61x_show_heap_size_taskPrint內(nèi)存使用情況(波特率設(shè)置為2000000);
(4) queue_task對(duì)隊(duì)列數(shù)據(jù)進(jìn)行分析處理,并執(zhí)行相應(yīng)的程序。任務(wù)之間的通信基于隊(duì)列。
目前,該任務(wù)處理的隊(duì)列數(shù)據(jù)包括以下4種類(lèi)型:
a. WiFi名密碼數(shù)據(jù)->數(shù)據(jù)存儲(chǔ),WiFi連接,WiFi連接成功時(shí)將WiFi連接成功數(shù)據(jù)發(fā)送到隊(duì)列;
b. WiFi連接成功數(shù)據(jù)->創(chuàng)建https_get_weather_taska任務(wù)獲取時(shí)間和天氣信息;
c.未來(lái)七天天氣數(shù)據(jù)->更新屏幕顯示內(nèi)容;
d.基本實(shí)時(shí)天氣數(shù)據(jù)->更新屏幕顯示內(nèi)容。
(5) https_get_weather_task通過(guò)https獲取未來(lái)7天的天氣和基本實(shí)時(shí)天氣。采集成功后,相應(yīng)的數(shù)據(jù)將被發(fā)送到隊(duì)列中。該任務(wù)使用一個(gè)定時(shí)器http_timers設(shè)置數(shù)據(jù)采集的頻率。
3. 使用說(shuō)明
3.1固件燒錄
環(huán)境配置完成后,需要進(jìn)行以下操作。
①程序編譯
打開(kāi)項(xiàng)目根目錄下的終端,輸入“make”
如果沒(méi)有錯(cuò)誤,最后將顯示如下內(nèi)容
②固件燃燒
在終端中輸入make flash COMX=COMxxxx,其中xx為實(shí)際連接的下載程序的COM端口號(hào)。在下圖中,COM端口為20。
按提示按復(fù)位鍵燒錄
3.2網(wǎng)絡(luò)配置和天氣賬號(hào)
(1)在網(wǎng)絡(luò)配置菜單中輸入需要連接的WiFi名稱(chēng)和密碼。
(2)在天氣賬號(hào)菜單中注冊(cè)“易似云天氣”后,輸入個(gè)人的appid和appsecret。
(3)單擊“連接”按鈕。如果配置正確,您將被重定向到以下接口。
3.3接口切換
在主界面中,單擊下圖所示的對(duì)應(yīng)區(qū)域,可切換到對(duì)應(yīng)界面。
在子界面中,點(diǎn)擊底部按鈕,切換到主界面。
本文編譯自hackster.io