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

在 RT-Thread Studio 上使用 RT-Thread Nano
RT-Thread Studio 安裝教程
如何實(shí)現(xiàn)基于RT-Thread智能家居的設(shè)計(jì)?
分享一個(gè)不錯(cuò)的基于RT-Thread的智能家居系統(tǒng)實(shí)戰(zhàn)案例
如何使用RT-Thread Studio創(chuàng)建支持HPM6750開發(fā)板的RT-Thread項(xiàng)目
基于RT-Thread和N32G457的智能家居demo相關(guān)資料介紹
RT-Thread Studio 主要亮點(diǎn)功能
RT-Thread Studio快速配置GPIO進(jìn)行點(diǎn)燈

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

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

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

rt-studio潘多拉開發(fā)板最新rt-thread不能運(yùn)行解決辦法

評(píng)論