1.項目背景:
本次方案基于星火一號開發板開發,使用RT-Thread Studio進行工程創建,代碼編輯,RT-Thread配置,調試配置,程序下載等功能。
項目成員均來自華南理工大學大二集成電路設計與集成系統專業,組長:方浩然,組員:謝天宇。
由于項目時間短暫,主要結合了板載資源,并基于一些現有的例程開發相關功能……
最終該項目的整體規劃為實現一個小型的智能家居終端,利用一些板載資源采集數據/代表部分現實中的家居。主要功能包括以下幾項:
1.實時溫濕度采集并上傳onenet,在onenet中實現數據可視化
2.通過板載按鈕/云端指令控制LED燈陣,模擬控制家居燈陣
3.顯示屏顯示當前溫濕度以及選擇燈陣的相關信息
4.沒用的功能:實現開啟動畫
2.項目成品展示:
本項目通過五個主線程來控制和實現所有功能,分別是
system_start_thread 系統啟動線程
led_matrix_thread 燈陣控制線程
get_color_thread 獲取燈陣顏色、模式線程
temp_humi_thread 溫濕度獲取線程
lcd_show_thread lcd顯示線程
部分項目圖片實際展示:
1.溫濕度數據實時上傳onenet

實現高溫警告

工作效果

3.項目具體實現
線程間通信
例子:實現不同數據在lcd屏幕上的顯示,實現實時燈陣顏色和模式的選擇。
首先發送mode與color
void get_color_entry()
{
rt_thread_mdelay(100);
rt_mb_send(&mode_choice, (rt_ubase_t)mode);
rt_mb_send(&color_choice,(rt_ubase_t)yanse);
rt_pin_mode(PIN_KEY_LEFT, PIN_MODE_INPUT_PULLUP);
rt_pin_mode(PIN_KEY_DOWN, PIN_MODE_INPUT_PULLUP);
rt_pin_mode(PIN_KEY_RIGHT, PIN_MODE_INPUT_PULLUP);
rt_pin_mode(PIN_KEY_UP, PIN_MODE_INPUT_PULLUP);
while (1)
{
/* 讀取按鍵 KEY0 的引腳狀態 并發送*/
if (rt_pin_read(PIN_KEY_LEFT) == PIN_LOW)
{
rt_kprintf("leftn");
mode--;
xunhuan();
rt_mb_send(&mode_choice, (rt_ubase_t)mode);
rt_mb_send(&color_choice,(rt_ubase_t)yanse);
接受并實現led燈陣的控制:
void led_matrix_control_entry(void parameter)
{
RGBColor_TypeDef chozen_color;
int pmode;
int *pyanse;
rt_err_t mbRet1 = RT_EOK;
rt_err_t mbRet2 = RT_EOK;
led_matrix_clear();
while(1)
{
mbRet1 =rt_mb_recv(&mode_choice, (rt_ubase_t*)&pmode, RT_WAITING_FOREVER);
mbRet2 =rt_mb_recv(&color_choice, (rt_ubase_t*)&pyanse, RT_WAITING_FOREVER);
color_parameter = enter_color(pyanse);
mode_choice_funtion(pmode, color_parameter);
if(mbRet1==RT_EOK)
{
rt_kprintf("mode_choice:%d",pmode);
}
4.問題與未來方向
問題1:例程中的引腳定義不統一
例程中的引腳定義不統一導致一些程序能夠正常編譯但是不能燈陣不能正常展示
需要通過STM32CubeMX進行調整
問題2:使用led_matrix[i].io_ctl(&led_matrix[i],COLOR);在對多個LED同時進行更改時會出現延時,例如當同時使用該代碼點亮所有外圈LED時會先亮一部分再亮另一部分。
如果使用Set_LEDColor(laite,RED); RGB_Reflash();則能夠讓所有燈同時亮起。
未來方向1:開發利用其他板載資源
星火一號的板載資源,相關軟件包非常豐富,未來可以進一步利用未使用的板載資源進行進一步的開發。
未來方向2:開發移動端/桌面端應用
可以直接從移動端/桌面端向開發板發送控制指令,整個方案更加完善。
ps.實現開場動畫
運用img2lcd軟件將圖片變為c數組,調整合適大小后調用lcd_show_image()函數顯示圖片。
通過循環,實際效果為動圖。
-
led燈
+關注
關注
22文章
1606瀏覽量
111842 -
LCD顯示器
+關注
關注
0文章
87瀏覽量
21466 -
智能家居
+關注
關注
1943文章
9995瀏覽量
197410 -
RT-Thread
+關注
關注
32文章
1613瀏覽量
44868 -
OneNET
+關注
關注
1文章
53瀏覽量
13914
發布評論請先 登錄
在 RT-Thread Studio 上使用 RT-Thread Nano
RT-Thread Studio 安裝教程
如何使用RT-Thread Studio創建支持HPM6750開發板的RT-Thread項目
基于RT-Thread和N32G457的智能家居demo相關資料介紹
RT-Thread Studio 主要亮點功能
RT-Thread Studio快速配置GPIO進行點燈
RT-Thread Studio驅動SD卡
怎么設計一種基于RT-Thread和infineon開發板的智能家居系統?
使用RT-Thread Studio進行智能家居終端的設計
評論