聚丰项目 > 基于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)下载