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