0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用平头哥RVB2601开发板设计智能家居助手

电子工程师 来源:芯片开放社区 作者:码农爱学习 2022-07-19 10:08 次阅读

智慧家居助手是“平头哥RVB2601开源应用创意征集”活动中的一等奖获奖作品,由开发者码农爱学习开发,主要是为了实现家庭智能设备的控制。在完成全部的功能开发后,码农爱学习也分享了他在本次活动中的体验与感想。

“从3个月前拿到板子,逐步熟悉CDK环境的开发与RISC-V的开发体验,在使用过程中,不断分享使用笔记,并学习其它网友积极分享的笔记,最后将所有使用过的功能,整合为一个综合的小项目,就实现了这个智慧家居助手。”

接下来,让我们一起来拆解智慧家居助手的内部功能与结构吧。

01项目背景

当今时代,已进入万物互联的时代,各种嵌入式硬件产品,通过网络连接互联网,实现万物互联。对于我们的家庭生活来说,能够有一款服务于家庭的智能控制设备,实现诸如这些功能:家中的各种生活电器,通过连接网络,可以进行更方便的远程控制;家中的温度、湿度、空气质量等环境指标,通过连网,也可以方便地为我们展示;最近的天气情况,在出门前方便的为我们提醒;家中休息时,营造娱乐的氛围……

02作品简介

基于上述的设想,本项目尝试使用平头哥的RVB2601开发板,设计一款智能家居助手,从而使我们更好的享用家中生活。

本项目利用RVB2601的WiFi功能,通过连接互联网可以获取近期天气信息,在板载屏幕上显示,提示我们天气变化;利用RTC功能,显示当前的网络时间;外接温、湿度传感器,可以为我们展示室内真实的温湿度;通过WiFi与其它电器的控制器通信,这里使用ESP8266作为被控节点,实现对其它电器的无线开关控制;利用板子自带的喇叭和连网功能,可以播放网络音乐和视频用来进行娱乐;使用OTA功能,还可以不断对功能进行迭代更新,实现软件功能的空中升级。

本项目最终实现的实物照片如下,通过ESP8266板载的一个LED和外接的LED模拟家中的两个不同的灯,外接的小风扇模拟家中的风扇:

f00fc658-0691-11ed-ba43-dac502259ad0.png

03系统框图

本项目的整体硬件结构如下:主体为RVB2601主控制器,通过路由器与家中其它电器进行无线连接,实现家中电器的开关控制,并可通过连接互联网,实现互联网信息(网络天气、网络时间、网络音乐的获取)。

f039c246-0691-11ed-ba43-dac502259ad0.png

为了实现各个功能的选择调用,本项目利用多级菜单的结构,实现各个功能间的跳转,具体的结构如下:

f05e79d8-0691-11ed-ba43-dac502259ad0.png

关于多级菜单的具体实现细节,在下面的“各部分功能说明和解析”中将详细介绍。

软件部分,本项目使用平头哥的CDK集成开发环境进行代码编写与调试,使用YoC软件平台框架以及AOS API实现程序设计:

使用任务创建功能,实现各个模块功能的独立设计与维护;

使用信号量机制,实现不同任务间的信息同步;

使用消息队列,实现不同任务间的消息传递;

使用订阅发布机制,实现任务间的解耦;

使用RTC功能,实现时间的获取;

使用SPI功能,实现屏幕的驱动与显示;

使用日志组件,实现代码的调试与信息输出;

04各部分功能说明和解析

4.1 城市天气显示

RVB2601具有连网功能,可以连接互联网来实现对网络天气信息的获取。

这里使用高德平台的天气获取接口,通过http协议获取指定城市的天气数据。原始数据是json格式的,需要从json数据中解析出天气、温度等信息,然后将这些信息显示到屏幕中。

这里使用U8g2库来进行天气信息的显示,U8g2库自带了一些天气图标,可以将对应的天气信息转换为对应的天气图标显示出来。

另外,天气的显示包括主页常驻地的天气显示,可以在菜单页中显示不同城市的天气,通过在菜单页中查看对应城市的天气后,主页的常驻地也会跟着变为菜单中查看的那个城市,从而实现主页常驻地的切换。

f082ea20-0691-11ed-ba43-dac502259ad0.png

关于U8g2库在RVB2601上的具体移植过程,可参考前期的试用报告:【平头哥RVB2601创意应用开发】实践2-移植U8g2图形库

4.2 当前时间显示

RVB2601具备RTC(Real_Time Clock)功能,可以实现时间的显示,虽然RVB2601的RTC没有配置电池,掉电后时间就没了,但RVB2601的连网功能,可以在每次开机时,通过获取网络时间,来为RTC重新校准时间。参考YOC文档,可以学习RTC功能的基本用法。

f0bda994-0691-11ed-ba43-dac502259ad0.png

网络天气与时间的具体实现细节,可参考之前的试用报告:【平头哥RVB2601创意应用开发】实践7-U8g2库显示网络天气和时间

4.3 室内温湿度显示

除了显示不同城市的天气数据,家庭环境中的温湿度也值得我们关注,这里就通过RVB2601外接一个温湿度传感器(DHT11)来实现室内温湿度数据的采集与显示。

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,微控制器与 DHT11之间的通讯和同步,采用单总线数据格式,这里将DHT11的数据线接至DHT11的PA10引脚上。再过按键切换功能,实现屏幕上主页界面与室内温湿度页面的切换显示。

f0e8fa5e-0691-11ed-ba43-dac502259ad0.png

DHT11数据读取与显示程序如下:

f10ee0fc-0691-11ed-ba43-dac502259ad0.png

DHT11的更多实现细节,可参考前期的使用报告:【平头哥RVB2601创意应用开发】实践3-外接DHT11显示温湿度

4.4 多级菜单

为了实现更多的功能操作,引入了多级菜单的功能,通过板子上两个按键的配合,实现不同功能的选择与触发。

这里使用数组查表法的方式,实现了一个三级菜单的功能:

第一级和第二级是功能选项

第三级是要实现的具体功能

通过左边按键实现上下项目的切换

通过右边按键实现各级菜单间的跳转

数组查表法的基本原理是通过一个结构体数组,实现各个菜单页面的跳转:

f13e8578-0691-11ed-ba43-dac502259ad0.png

结构体中4个成员的含义为:

current:当前页面的索引

down:按下“向下翻“按钮后要跳转到的页面索引号

enter:按下“确认“按钮后要跳转到的页面索引号

current_operation:当前页面的索引号要执行的显示函数

这里的显示函数,加了两个参数

第一个参数用来表示该界面是否是第一次进入,如果是,则按需做一些初始化处理,比如查询不同程序的天气时,第一次进入某个城市的天气界面,需要先获取一次网络天气;

第二个参数用来表示该界面是否需要在本界面内实现某些功能切换,比如家中电器控制的界面中,控制电器开和关时,就要用到这个参数,以用来显示不同开关状态的界面。

本项目中,多级菜单的前两级的展示示例如下:

f16371ee-0691-11ed-ba43-dac502259ad0.png

多级菜单的更多实现细节,可参考前期的使用报告:【平头哥RVB2601创意应用开发】实践6-多级菜单显示测试

4.5音乐&视频娱乐

RVB2601具有连网功能,并且板载了一个喇叭,可以通过网络获取一些音乐或视频资源,实现家居娱乐功能。首先介绍网络音乐播放功能。

4.5.1音乐播放功能

音乐播放参考了官方的webplayer例程,在此基础上,实现按键控制不同音乐的播放开始与停止,以及播放时的屏幕显示功能。

为了配合其它功能对按键与屏幕的使用,这里创建了一个音乐播放任务,来控制音乐的播放:

f1802118-0691-11ed-ba43-dac502259ad0.png

音乐播放的菜单进入界面与音乐播放界面如下图所示,在音乐播放时,设计了两个位置交错的音乐图标循环显示,实现一种正在播放的画面效果。

f1a19d48-0691-11ed-ba43-dac502259ad0.png

网络音乐播放的更多实现细节,可参考前期的使用报告:【平头哥RVB2601创意应用开发】实践4-按键控制网络音乐播放

下面再来介绍视频播放功能。

4.5.2视频播放功能

本项目中视频播放的基本原理是:利用TCP连网功能,使RVB2601作为客户端,笔记本电脑作为服务器端,使RVB2601与ESP8266板子在同一局域网下无线通信,RVB2601获取服务器端的视频帧数据,再借助U8g2图形库,将每一帧的图形显示出来。

电脑端通过Python程序,作为TCP服务器,其主要功能为:

利用OpenCV读取视频文件

对视频帧的图像,进行尺寸修改

对图像进行二值化处理

将二值图像转换为数组

将数组通过socket发送出去

电脑端的主体代码如下:

f1d77864-0691-11ed-ba43-dac502259ad0.png

RVB2601端,通过连接对应的服务器,在接收到图像数据后,显示出来即可:

视频播放的截图效果如下,实际播放效果请看演示视频。

f203de4a-0691-11ed-ba43-dac502259ad0.png

视频播放的更多实现细节,可参考前期的试用报告:【平头哥RVB2601创意应用开发】实践9-板载屏幕播放BadApple视频,需注意的是,前期这篇试用报告,是在TCP数据接收回调函数中,直接进行图像的显示的,而在此次结项综合例程中,为了配合各个功能对屏幕的使用,在回调函数中收到视频数据后,采用消息队列的方式,将数据再转发出去,由屏幕显示程序来处理何时要在屏幕上显示视频。

4.6 家居电器控制

家居电器的控制功能,通过RVB2601与ESP8266无线TCP通信实现,ESP8266作为被控制电器的无线控制器,与主控RVB2601通信。ESP8266作为TCP服务器端,RVB2601作为TCP客户端,通过指定的IP与端口号进行连接。

4.6.1灯的开关控制

ESP8266使用Arduino IDE进行开发与程序编写,主程序逻辑为:等待客户端连接,并接收客户端的指令,接收到后,对指令进行解析,执行对应的LED亮灭操作。

这里是以字符串的形式进行数据传送,比如“led on”就是开灯,“led off”就是关灯。

f23b639c-0691-11ed-ba43-dac502259ad0.png

4.6.2风扇的开关控制

风扇的控制与灯的控制逻辑一样,只需再定义“fan on"和“fan off”这样的指令用来进行风扇的控制。硬件方面,由于这个小风扇的相比较LED来说,需要的电流较大,这里使用一个继电器来间接控制风扇电源的通断。

f26f65b6-0691-11ed-ba43-dac502259ad0.png

4.7 RGB呼吸灯

RGB呼吸灯是本项目的一个附件功能,通过一个独立的RGB_LED任务,实现3种颜色的LED呼吸亮灭。它也可以在调试程序中,作为程序是否正常运行的判断标志。

f29d5e12-0691-11ed-ba43-dac502259ad0.png

05作品源码

https://gitee.com/xxpcb/rbv2601-test/tree/master/RVB2601_2022

f2bd77f6-0691-11ed-ba43-dac502259ad0.png

06视频演示

简介

平头哥RVB2601创意应用开发——智慧家居助手,主要展示的功能包括:

城市天气显示(主页常驻地天气与菜单页不同城市天气,连网获取网络天气)

当前时间显示(日期、时、分、秒、星期,连网获取网络时间)

室内温湿度显示(DHT11温湿度传感器)

多级菜单(三级菜单实现各功能界面的跳转)

音乐播放功能(网络音乐播放)

视频播放功能(连接电脑端TCP服务器获取视频帧数据)

家居电器控制(灯的控制、风扇的控制)

RGB呼吸灯

07项目总结

本项目基于平头哥的RVB2601,设计了一款智慧家居助手,实现了网络天气、时间的获取与显示、室内温湿度的获取与显示、家中电器的无线控制,音乐与视频娱乐功能等,帮助我们更好的体验家中环境。

从3个月前拿到板子,逐步熟悉CDK环境的开发与RISC-V的开发体验,在使用过程中,不断分享使用笔记,并学习其它网友积极分享的笔记,最后将所有使用过的功能,整合为一个综合的小项目,就实现了这个智慧家居助手。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    4426

    浏览量

    93940
  • 智慧家居
    +关注

    关注

    1

    文章

    75

    浏览量

    16213
  • RISC-V
    +关注

    关注

    41

    文章

    1899

    浏览量

    45044
  • 平头哥
    +关注

    关注

    0

    文章

    62

    浏览量

    8931

原文标题:通用型MCU的创意应用——3个月实现智慧家居助手快捷开发

文章出处:【微信号:芯片开放社区,微信公众号:芯片开放社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RVB2601开发板快速上手教程

    软件环境搭建3.1.CDK介绍基于RVB2601开发板的应用是利用CDK集成开发环境进行开发的。关于的CDK的介绍,可以直接前往平头
    发表于 09-01 14:12

    RVB2601开发板用户指南

    及丰富的片上外设,最低主频220MHz,支持AliOS Things物联网操作系统、平头YoC软件平台及平头剑池开发工具(CDK)。1.
    发表于 09-01 14:19

    平头RVB2601开发板试用体验】平头RVB2601开发板_CDK试用体验

    ,管理所有工程文件 五、总结经过几番摸索,在Project目录下,新建IOT工程文件菜单里面,可以直接选择平头RVB2601开发板,和相关示例,更加直接,简单方便。在动则数十千R
    发表于 12-30 10:15

    平头RVB2601开发板试用体验】CDK初体验

    “ch2601_gui_demo”, 即可在此工作空间,管理所有工程文件 五、总结经过几番摸索,在Project目录下,新建IOT工程文件菜单里面,可以直接选择平头RVB2601
    发表于 12-30 10:52

    平头RVB2601开发板试用体验】从开箱到点灯

    。 打开盒子就能见到主角RVB2601开发板。相比绿色,黑色基底显得更加严肃正式。 可能是作为原型开发板的缘故,器件之间的距离并不是很紧凑。 正面的布局也很“宽敞”,有一块OLED显示屏、主控芯片、按键
    发表于 01-04 22:31

    平头RVB2601开发板试用体验】cdk开发最快上手(helloworld例程)

    cdk内打开串口监视,打开串口,串口每隔一秒打印helloworld五、参考资料用户手册:开发板原理图:平头芯片开放社区:开发板-RVB2601
    发表于 01-15 21:47

    平头RVB2601开发板试用体验】开箱

    首先,非常感谢发烧友与平头提供的RVB2601开发板试用机会。以下是RVB2601的开箱体验报告:RV
    发表于 01-19 22:33

    平头RVB2601开发板试用体验】开发板初探与环境配置

    很高兴批准了我的RVB2601开发板的试用申请,这一篇贴子将带大家初探这块RVB2601(以下简称RVB)的硬件资源以及简单的开发环境配置流
    发表于 01-21 12:34

    平头RVB2601开发板试用体验】+w800的应用

    接收的数据,这给调试带来很大困扰。二、实现w800接收数据的显示《【平头RVB2601开发板试用体验】WiFi无线通信》,通过以下代码显示w800接收到的5个字节数据,以16进制方式
    发表于 02-14 10:26

    平头RVB2601开发板试用体验】+GUI Demo

    本帖最后由 jf_11671167 于 2022-3-16 15:18 编辑 准备按照《【平头RVB2601开发板试用体验】+开箱试用.doc》和《【
    发表于 03-05 20:40

    平头RVB2601开发板试用 】开箱过程以及开发板介绍上电

    参加21ic组织的平头讲座,很荣幸能够成为平头RVB2601开发板实验用户,今天第一天收到
    发表于 03-08 06:35

    平头RVB2601开发板试用体验】开发板初探与环境配置流程

    的原因。 可供参考的资料CH2601芯片介绍CH2601用户手册RVB2601开发板用户手册文章转载自:平头
    发表于 03-08 08:31

    平头RVB2601开发板试用体验】开箱(预热研究)

    收到了平头RVB2601开发板,心情很激动,久闻这块开发板目前已经很成熟,那边学习和使用起来必然能事半功倍,更加深入熟悉
    发表于 03-08 09:02

    RVB2601 Gravity扩展板上线啦!!!全IO引脚扩展支持,专为RVB2601定制

    2021年的云栖大会上,平头开发者展区曾展示过一款由DFRobot开发团队基于RVB2601开发板
    发表于 05-27 15:58

    DFRobot推出一款为平头RVB2601开发板定制的IO传感器扩展板

    近日,上海智位机器人股份有限公司(DFRobot) 推出了一款专为平头RVB2601开发板定制的IO传感器扩展板——RVB2601 Gravity扩展板。这是DFRobot继哪吒专用
    的头像 发表于 06-02 13:15 1305次阅读
    DFRobot推出一款为<b class='flag-5'>平头</b>哥<b class='flag-5'>RVB2601</b><b class='flag-5'>开发板</b>定制的IO传感器扩展板