1.項目背景:
本次方案基于星火一號開發(fā)板開發(fā),使用RT-Thread Studio進(jìn)行工程創(chuàng)建,代碼編輯,RT-Thread配置,調(diào)試配置,程序下載等功能。
項目成員均來自華南理工大學(xué)大二集成電路設(shè)計與集成系統(tǒng)專業(yè),組長:方浩然,組員:謝天宇。
由于項目時間短暫,主要結(jié)合了板載資源,并基于一些現(xiàn)有的例程開發(fā)相關(guān)功能……
最終該項目的整體規(guī)劃為實現(xiàn)一個小型的智能家居終端,利用一些板載資源采集數(shù)據(jù)/代表部分現(xiàn)實中的家居。主要功能包括以下幾項:
1.實時溫濕度采集并上傳onenet,在onenet中實現(xiàn)數(shù)據(jù)可視化
2.通過板載按鈕/云端指令控制LED燈陣,模擬控制家居燈陣
3.顯示屏顯示當(dāng)前溫濕度以及選擇燈陣的相關(guān)信息
4.沒用的功能:實現(xiàn)開啟動畫
2.項目成品展示:
本項目通過五個主線程來控制和實現(xiàn)所有功能,分別是
system_start_thread 系統(tǒng)啟動線程
led_matrix_thread 燈陣控制線程
get_color_thread 獲取燈陣顏色、模式線程
temp_humi_thread 溫濕度獲取線程
lcd_show_thread lcd顯示線程
部分項目圖片實際展示:
1.溫濕度數(shù)據(jù)實時上傳onenet
實現(xiàn)高溫警告
工作效果
3.項目具體實現(xiàn)
線程間通信
例子:實現(xiàn)不同數(shù)據(jù)在lcd屏幕上的顯示,實現(xiàn)實時燈陣顏色和模式的選擇。
首先發(fā)送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 的引腳狀態(tài) 并發(fā)送*/
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);
接受并實現(xiàn)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:例程中的引腳定義不統(tǒng)一
例程中的引腳定義不統(tǒng)一導(dǎo)致一些程序能夠正常編譯但是不能燈陣不能正常展示
需要通過STM32CubeMX進(jìn)行調(diào)整
問題2:使用led_matrix[i].io_ctl(&led_matrix[i],COLOR);在對多個LED同時進(jìn)行更改時會出現(xiàn)延時,例如當(dāng)同時使用該代碼點亮所有外圈LED時會先亮一部分再亮另一部分。
如果使用Set_LEDColor(laite,RED); RGB_Reflash();則能夠讓所有燈同時亮起。
未來方向1:開發(fā)利用其他板載資源
星火一號的板載資源,相關(guān)軟件包非常豐富,未來可以進(jìn)一步利用未使用的板載資源進(jìn)行進(jìn)一步的開發(fā)。
未來方向2:開發(fā)移動端/桌面端應(yīng)用
可以直接從移動端/桌面端向開發(fā)板發(fā)送控制指令,整個方案更加完善。
ps.實現(xiàn)開場動畫
運用img2lcd軟件將圖片變?yōu)閏數(shù)組,調(diào)整合適大小后調(diào)用lcd_show_image()函數(shù)顯示圖片。
通過循環(huán),實際效果為動圖。
-
led燈
+關(guān)注
關(guān)注
22文章
1596瀏覽量
109757 -
LCD顯示器
+關(guān)注
關(guān)注
0文章
87瀏覽量
20849 -
智能家居
+關(guān)注
關(guān)注
1934文章
9806瀏覽量
190608 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1409瀏覽量
41969 -
OneNET
+關(guān)注
關(guān)注
1文章
51瀏覽量
13382
發(fā)布評論請先 登錄
在 RT-Thread Studio 上使用 RT-Thread Nano
RT-Thread Studio 安裝教程
分享一個不錯的基于RT-Thread的智能家居系統(tǒng)實戰(zhàn)案例
如何使用RT-Thread Studio創(chuàng)建支持HPM6750開發(fā)板的RT-Thread項目
基于RT-Thread和N32G457的智能家居demo相關(guān)資料介紹
RT-Thread Studio 主要亮點功能
RT-Thread Studio快速配置GPIO進(jìn)行點燈

RT-Thread Studio驅(qū)動SD卡

基于RT-Thread Studio學(xué)習(xí)

怎么設(shè)計一種基于RT-Thread和infineon開發(fā)板的智能家居系統(tǒng)?

評論