聚豐項目 > 基于RT-Thread的豬圈控制器
很感謝能參加此次RTT開發大賽,讓我有動力去接觸嵌入式操作系統,我申請的是ch32v103rbt6的開發板,原本我申請的項目名稱是安全座椅,但是實際上實現起來發現內存不太夠,所以我改了項目,加上更好的學習RISC-V單片機,和rt-thread .項目背景:小時候家里窮,家里養了幾頭豬,然后養豬的豬圈有時候熱,爸爸就要時不時去看看豬有沒有中暑,跑來跑去,太累了,所有我利用這次機會做了一個智能豬圈控制器,通信用到LORA 可以遠距離通信,豬圈里沒有wifi,豬不會玩手機,用4G的話成本太高,檢測溫度信息,來自動控制風機和給屋頂散熱的抽水機
霸鐵_dc1
分享霸鐵_dc1
團隊成員
霸鐵_dc1 學生
RT-THREAD的使用情況
因為ch32v103RBT6的資源有限,所有本次我使用的是RT-THREAD NANO 版本
內核部分:使用了線程、信號量、互斥量、軟件定時器 、消息郵箱
硬件:NTC,LED,LORA(SX1268),KEY,OLED
軟件框架:
因為剛學習rt-thread nano 然后加上對嵌入式單片機的不熟悉,所有相對可能簡單點,但是對我來說卻是一個挑戰,下面是我程序框圖
我這個作品里軟件模塊劃分的比較清晰,各個模塊均獨立為一個單獨文 件,比較好理解。NTC,OLDE,KEY,LORA 基本上都是遵循原有的代碼邏 輯進行編寫,邏輯比較清晰。
我講下我在實驗中遇到的問題:因為的剛接觸到rt-thread nano 和RISC-V單片機。
1.在調試ADC+DMA雙通道的時候。我發現,如果同時采集adc外部通道和內部通道同時用DMA傳輸,數據數亂的,但是只采集兩個內部通道,或者兩個外部通道就不會有問題,
2.中斷的問題,中斷要使用void EXTI1_IRQHandler(void) __attribute__((interrupt())); 但是裸機的歷程是這樣的void EXTI1_IRQHandler(void) __attribute__((interrupt(“XXX”)));,如果帶了字符串,就會卡死,
3.使用軟件定時器的時候,使用的是單次定時,然后需要修改修改定時時間,rt-thread,我覺的文檔沒有講清楚,我發現 timer2 = rt_timer_create("timer2", timeout2,RT_NULL, 30, RT_TIMER_FLAG_ONE_SHOT);來初始化定時器的話,如果你要修改定時器的定時時間,系統就死機了,提示
,但是如果初始化的時候帶上RT_TIMER_CTRL_SET_TIME 的話
這個問題就得到了解決,這個不知道是我操作的問題,還是文檔沒有講清楚
(3.02 MB)下載