【平头哥RVB2601创意应用开发】家庭环境监测及红外设备控制终端
[复制链接]
本帖最后由 流行科技 于 2022-5-11 11:28 编辑
作品名称
家庭环境监测及红外设备控制终端
作者:流行科技
一、项目背景
目前很多的IOT设备都还是处于独立工作的状态,我通过此开发板可以完成多种传感器的集成化工作,并且可以外接很多设备,完善IOT终端,一个终端可以做很多事情。本次制作的环境监测及红外控制就结合了一款传感器和红外控制,可以通过监测环境温湿度,再通过红外发送给家里的空调等设备进行环境舒适度的调节。
本次作品所采用的开发板为RVB2601,其外设资源丰富,我所应用到的有IIC接口(接SHT20温湿度传感器),串口(Debug调试信息打印),SPI接口(OLED屏幕和W800WIFI模块),IO口(运行状态指示,以及PWM口)
二、作品简介+作品照片
这张是运行图,我在OLED上显示了温度湿度,以及空调模式,空调设定温度,这些展示信息。边上的是红外发射装置,可以产生空调需要的红外信号。
三、系统框图
整体围绕着RVB2601开发板进行开发,主要完成IIC读取温湿度信息,PWM输出控制红外设备(空调),OLED显示温湿度和空调状态信息,W800 WIFI芯片连接阿里云物联网平台,串口用作调试信息的打印功能,以及状态运行指示灯。
四、各部分功能说明和解析
SHT20模块,其是IIC通信设备,我采用了模拟IIC的方式进行通信。
1.湿度测量范围:0~100%RH
2.湿度测量精度:±3%RH
3.温度测量范围:-40~125℃
4.温度测量精度:±0.3℃
这是其主要的技术参数。
我通过一个函数不停的去获取SHT20的两个数值。
对于读取的数据也需要通过上面的代码进行转换。
我将转化后的值直接变成float型数据输出。所以串口打印直接能看到数值。同时也通过OLED显示屏输出。
在这里里面我是直接使用了LVGL的库,方便我们管理这些屏幕显示内容。我初始化了4个label,其中两个在前面显示当前值类型,后面两个是数值,不断变化的。
通过OS任务处理,每次读取到数据我都将刷新一次OLED显示屏上的信息,任务是0.5秒刷新一次。保证底层显示的更新速度。同时对于小数位的显示我也是做了处理的,通过扩大之后在处理,这样就能得到保留小数点后一位的数值,并能显示在OLED上。
红外设备比较简单,我这里使用了一个红外模块进行操作,我们只需要控制红外发光管的亮灭就能完成通信,需要注意的是,我们使用的IO需是PWM管脚,因为我们红外协议的载波是38Khz的。所以这里吧LED灯红色给拔掉了,接到我们模块上。
接下就是初始化了,我们对PWM输出进行初始化,要使其频率落在38Khz上。
ret = csi_pwm_out_config(&r, 7 / 2, 26, 10, PWM_POLARITY_HIGH);
按照此函数配置,其中26是其周期。计算方法如下:
其周期是uS,所以1/26*1000 000 这就换算成多少HZ了。大致是38461Hz,也就是38.461Khz。
这里可以用示波器观察下
大概输出是38.555Khz,这基本就可以进行下一步了。
这里我找到了一篇奥克斯空调的协议码,其基本是标准协议,但是按照了自己的组合。内部的是发送13个字节,我们只需要按照上面进行封装即可。
发送主要是从起始信号开始,我用延时函数进行了延时。之后就发送0,1的电平间隔时间不一致的。
协议我们来看下:
其是13个字节,最后一个字节是校验位,我规划了两个发送数组,一个是开空调,制冷模式,26度。一个是关空调。所以我们上电后只需要对其中的某些位进行改变,就能控制不同功能了,相应的阿里云端发送数据下来,我只需要相应改变其中的某些位即可。
所以到阿里云这边我们相应的进行接收,然后对数据处理即可。
例如这个设定温度是第二字节
第三位是一致默认位1的,我们只需要上面的5位。
所对应的就是这个表。
运算,我上面发送的是直接值,也就是16,17,这些数值。
AUX_ON[1] = ((0x40>>3)+(AirConditionerSetTemp_Value->valueint-16))<<3|0x07;
经过此关系式运算就能得到我们需要的红外码了,然后进行发送即可。
往后做的其他两种控制也是如此。
3.OLED显示屏幕
其是在硬件上与SPI1连接了,所以我们直接初始化它。
顺便把LVGL也初始化了。
LVGL的显示就是我之前说的温湿度值和空调模式设定温度这些,全是使用label控件。
4.WIFI模块(W800)
其也是SPI接口。我们通过初始化接口,最终调用API进行发送和接收,在上层协议中已经封装成AT指令了,所以根据其给的连接阿里云的AT指令我们即可完成连接阿里云的操作。
同样我在这里还进行了运行指示灯初始化,让其跟随上传指令进行状态改变。
任务中每次就是上报温湿度值,以及空调状态。
5.阿里云平台
我通过阿里云的物联网平台创建了一个产品,产品名称我命名为RVB2601,其中我们看物模型,在这里面我定义了下位机上传上来的信息,有空调开关状态,温湿度,这些等等,空调控制这些都是读写,因为我们还需要通过云平台得到相应的控制信息。之后产品下面需要创建设备,设备创建好了,我们下面传上来的数据也就能获取到了。
这是设备界面,我创建了一个名为w800的设备,同样我们进入物模型数据,也是可以看到其中的信息。这里面有最好平台发送的数据时间。我们可以看下这些信息。
如图,同样我还做了两种一个是web端的控制,一个是手机端联网控制效果。我们使用物联网应用开发,就能帮助我们生成Web端和手机端显示的功能。
这是Web浏览器端的界面,做的很简洁,直接就是显示可以显示的内容,控制我用了一些控件。
手机端,基本按照手机页面大小来做的,也是有同样的控件可以显示,我们只需要通过二维码扫描,就能进入上面的界面,然后收发都是没问题的,如果有能力应该是可以对接平台做一个完整的APP的。
五、作品源码
链接:https://pan.baidu.com/s/1j_F23fge-m-kGwkW6y3v7Q
提取码:w1yk
六、视频演示
RV2601应用开发-智能家庭环境监控及控制
https://www.bilibili.com/video/BV16R4y1A7bA/
RVB2601开发板红外控制空调
https://www.bilibili.com/video/BV13a411Y7vn?share_source=copy_web
七、项目总结(项目文字总结+帖子分享链接汇总)
目前使用RVB2601开发,体验了CDK,总结CDK使用目前没什么问题,就是有些跳转可能不太方便,有时候某些函数头文件也有可能出现找不到的情况。但其后续应该也会逐渐修复这些问题。目前开发这款RISC-V,从CDK中能找到很多现成的库,开发起来比较方便,但同时库多了也感觉比较凌乱,希望能够整合库,某些操作感觉是重复重新定义了。此开发板集成功能很多,也有未利用上功能模块,希望后期能够继续学习开发。
【平头哥RVB2601创意应用开发】开箱
https://bbs.eeworld.com.cn/thread-1197179-1-1.html
【平头哥RVB2601创意应用开发】OLED显示温湿度
https://bbs.eeworld.com.cn/thread-1199034-1-1.html
https://occ.t-head.cn/community/post/detail?id=4032255727942377472
【平头哥RVB2601创意应用开发】温湿度传感器测量
https://bbs.eeworld.com.cn/thread-1198822-1-1.html
https://occ.t-head.cn/community/post/detail?id=4032256774198927360
【平头哥RVB2601创意应用开发】TCP传输温湿度
https://bbs.eeworld.com.cn/thread-1200128-1-1.html
https://occ.t-head.cn/community/post/detail?id=4036143348040404992
【平头哥RVB2601创意应用开发】阿里云上云测试
https://bbs.eeworld.com.cn/thread-1201807-1-1.html
https://occ.t-head.cn/community/post/detail?id=4041836946169860096
【平头哥RVB2601创意应用开发】红外设备控制
https://bbs.eeworld.com.cn/thread-1202459-1-1.html
八、其他
家庭环境监测及红外设备控制终端.doc
(3.72 MB, 下载次数: 4)
|