Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【网络编程学习】+werrysuzhen+基于OneNet的智能家居系统
发布于 2018-08-16 12:08:26 浏览:1919
订阅该版
* 本帖最后由 werrysuzhen 于 2018-8-16 12:07 编辑 * 一.开发环境 1.开发板:正点原子探索开发板+正点原子ATK-ESP8266串口转wifi模块 2.支持Modbus协议的温湿度模块 3.rt-thread 源码 3.1.0 BSP:stm32f40x ![微信图片_20180815085032.jpg](/uploads/201808/15/085723nf7zd570242da7nd.jpg) 二.作业题目 1.基于 OneNet 的智能家居系统,在 OneNet 上创建应用,能够实现如下功能:[list] (*)* 通过 OneNet 页面控制灯的开关; (*)* 家里的温湿度信息实时展示; (*)* 通过传感器监测,当监测到事件,向云端发送信息; (*)[ 如果缺少传感器硬件,自己考虑以其他方式替代] (*)* 其他功能自由发挥; [/list]2.实现通过百度 TTS 语音合成功能,通过 http 接口上传一段文字,能够从百度获取相应的语音数据; 三.过程及结果 1.获取实时温湿度数据(因为开发板没有集成温湿度硬件,正好手里有一块走modbus协议的温湿度模块,所以决定使用freemodbus组件获取温湿度数据) 1.1 工程中加入freemodbus组件 ![微信截图_20180815090749.png](/uploads/201808/15/090805ysz0tunyml1jrpr1.png) 1.2 重构工程并编译 需要在portserial_m.c中增加485方向控制脚的宏定义: #define MODBUS_MASTER_RT_CONTROL_PIN_INDEX 93(探索开发板485方向引脚为PG8) 1.3 增加Modbus主站任务及轮询任务,使用初始化组件进行初始化 ![微信截图_20180815091558.png](/uploads/201808/15/091617x6siitzz18rt7ib3.png)![微信截图_20180815091723.png](/uploads/201808/15/091740xmam57g5axmnjmcg.png) 1.4 初步运行,发现485端没有数据发出,发现在发送函数时eRcvState是STATE_M_RX_INIT状态,不能发送数据(此时初始化函数中的定时器还没有超时),在轮询任务初始化阶段使用rt_thread_delay函数进行延时,解决了此问题 1.5 监视板子发送的485数据,发现数据帧的最后两个字节没发送出来,使用示波器观察串口发送引脚和485发送引脚波形,应该是要发送的数据只是放到了发送缓冲器而没有实际发送完485引脚就置成接收态了,修改串口的发送驱动(判断串口发送完成标志) ![微信图片_20180815092907.jpg](/uploads/201808/15/092925ph2fa2a2xqhal6v9.jpg)![微信截图_20180815093148.png](/uploads/201808/15/093349lu61h9uinhwuz1ub.png) 1.6 观察485的数据,能够正常数据交换了,程序进行仿真,发现能够进user_mb_app_m.c中的eMBMasterRegHoldingCB函数,说明协议栈正常跑起来了 1.7 在朱天龙大神的指点下将主站模块的初始化阶段放到组件初始化部分进行,并进行适当的延时,去掉轮询任务的延时函数,因为APP的初始化在组件初始化的后边 ![微信截图_20180815093956.png](/uploads/201808/15/094149x5s2lnlpznpmlplt.png)![微信截图_20180815094050.png](/uploads/201808/15/094146chz9kre3i3uzia4a.png)![微信截图_20180815094014.png](/uploads/201808/15/094124wzcjrjcgklhlqdoz.png) 2. onenet功能实现 2.1 在10086的物联网开发平台上注册自己的设备,创建自己的应用 ![微信截图_20180815100002.png](/uploads/201808/15/100016wlm991so398bz669.png) 2.2 ENV工具中配置Onenet软件包,在选中onenet软件包后会自动选中webclient、mqtt、cjson三个软件包 ![微信截图_20180815094917.png](/uploads/201808/15/095114a1w1avnadvqad331.png) 2.3 下载软件包,修改onenet_upload_entry函数将从温湿度模块中获取的温湿度数据上传 2.4 编译并下载到板子上运行,验证MQTT功能,通过下发的指令控制开发板上LED等的亮灭![微信图片_20180815170516.png](/uploads/201808/15/170618l1urzww0aaf4m1sf.png)![微信截图_20180815101619.png](/uploads/201808/15/101743tevn3aededtottep.png) 2.5 将从温湿度模块获取的实际温湿度数据上传至Onenet功能验证 ![微信截图_20180815102441.png](/uploads/201808/15/102510zrzy5in75i25erpi.png)![微信截图_20180815102134.png](/uploads/201808/15/102512a7eb3tm35v479sb9.png) 2.6 用手按住温湿度模块上的温湿度传感器,使温度升高超过30度,模拟室温过高事件,向云端发送信息 3.百度TTS语音功能实现 3.1 在百度云平台上注册,获取到API Key和Secret Key ![微信截图_20180815105828.png](/uploads/201808/15/110051yko0d10a6jw20dj6.png) 3.2 使用浏览器方式通过API Key和Secret Key获取access token ![微信截图_20180815113209.png](/uploads/201808/15/113237n3q0s4b1g3k10kz0.png) 3.3 使用浏览器通过API方式中的GET方式使用百度云的语音合成功能,合成语音“百度你好” ![微信截图_20180815113616.png](/uploads/201808/15/113643i65vkjqokbtzjtok.png) 3.4 使用开发板实现3.2的功能。修改命令行最大可输入字符数为500 ![微信截图_20180815162714.png](/uploads/201808/15/162805qllb4b4298gpjgvd.png)这个功能研究了半天没能实现有点遗憾,最终做3.5部分的时候是用的3.2获取的access token。 3.5 使用开发板实现3.3的功能;一直使用的SecureCRT作为超级终端用于和板子通信,但是做这个任务的后有问题,最后换成了Putty工具。 ![微信截图_20180816114540.png](/uploads/201808/16/115047g3vx32mmxdjdjjdm.png)![微信截图_20180816114927.png](/uploads/201808/16/115050q33f6dt9hho55t9g.png) 四.总结 1.在使用freemodbus组件的时候遇到了485数据发送不出去和发送出去的字节数不对两个问题;第一个问题花了半天的时间才找到原因,属于未初始化完成就开始了轮询任务,通过在轮询任务中增加延时解决了此问题,最后调整了代码,将初始化部分放到了组件初始化部分完成,这块已经反馈给了开发者朱天龙大神,避免以后其他人再掉进此坑里;第二个问题修改了串口发送驱动部分解决;通过看源码对freemodbus的软件架构有了更深的理解,同时感谢大神开发了这么好的组件,基本上拿来就能用。 2.因为在七月初的时候自己研究过并实现了Onenet的应用(当时是用的lwip方式),所以此次关于onenet的应用并没有遇到多大障碍,不过使用wifi上传数据时,经常会出现失败退出的问题,尝试了很多种方法都没能解决该问题,群里五六个同学均反映有此问题,希望开发者能给与重视解决该问题 ![微信图片_20180815164134.png](/uploads/201808/15/164631qyqxdw7jyxud5od3.png) 3.做TTS语音合成任务的时候,在tex字段应填入要转换的汉字字符,但是要转换成url格式,在网上找C语言的汉字转URL编码程序,但是发现转换后不对,最终只能用PUTTY作为超级终端了。4.再次感谢rt-thread团队提供了此次学习平台,有机会和代码开发者直接沟通,希望能尽快将最近学到的东西用于实际产品。 5.在使用webclient功能时简单梳理了webclient.c里webclient_open函数的调用关系图,希望对大家有所帮助。 下载附件 [webclient函数调用关系图.vsd](https://oss-club.rt-thread.org/uploads/201808/15/170038ijfurpok40xorqva.attach)
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
1.9k
关于作者
werrysuzhen
这家伙很懒,什么也没写!
提问
11
回答
12
被采纳
0
关注TA
发私信
相关问题
1
【LWIP学习营】第一关开发环境搭建
2
LWIP学习营第一周入门移植问题汇总贴
3
【LWIP学习营】f407+lan8720A小结
4
【LwIP学习营】【第一周】仅零散记录,无主题
5
【LWIP学习营】正点原子探索者F407+LAN8720第一周小结
6
【LwIP学习营】【第一周】网络通信基础及实现TCP 聊天客户端
7
【LwIP学习营】【第一周】LWIP移植
8
【LwIP学习营】【第一周】LWIP移植
9
【LwIP学习营】【第一周】开发板适配
10
【LwIP学习营】【第一周】环境搭建和配置验证
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
a1012112796
13
个答案
1
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部