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