Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【网络编程学习】+ Eric + onenet鱼缸系统与百度语言合成
发布于 2018-08-14 22:34:54 浏览:2908
订阅该版
[tocm] * 本帖最后由 EricYYG 于 2018-8-15 22:57 编辑 * # 目录 1. 使用mqtt去连接onenet云平台 2. OneNet智能鱼缸系统 3. 百度语言下载 # 1. 使用mqtt去连接onenet云平台 # 连接onenet云平台 ## 配置mqtt package ![4.png](/uploads/201808/12/183800qjoqw7727h7ao1nz.png) ## 配置webclient ![5.png](/uploads/201808/12/183801bklvvqs3l3oc9gck.png) ## 配置cjson ![6.png](/uploads/201808/12/183802y6tzv7g3z5immb95.png) ## 注册onenet账号,配置设备 1. 创建一个产品 ![7.png](/uploads/201808/12/184030gm1dw011913z7dd1.png) 2. 在产品里面选择添加设备 ![8.png](/uploads/201808/12/184031xeyahamnnn6hkk3u.png) 3. 在设备管理里面找到刚刚添加的设备,选择查看详情 ![9.png](/uploads/201808/12/184031x7ozhkfhkohq6fg4.png) 4. 选择添加APIKey,APIKey名称和关联设备是相对应的 ![10.png](/uploads/201808/12/184032aqs14w14c4zmvesl.png) 5. 标记需要记录的信息,标号与onenet配置时候一一对应 ![11.png](/uploads/201808/12/184032d2hhbqoz2f32ifmz.png) ![12.png](/uploads/201808/12/184033gy3x6n3jz8atjyxa.png) ## 配置onenet package 根据上图标号对应信息,一一配置到工程中 ![13.png](/uploads/201808/12/184303r4q3lzoguhqoknko.png) - Enable OneNET sample:开启 OneNET 示例代码 - Enable support MQTT protocol:开启 MQTT 协议连接 OneNET 支持 - Enable OneNET automatic register device:开启 OneNET 自动注册设备功能 - device id:配置云端创建设备时获取的 设备ID - auth info:配置云端创建产品时 用户自定义的鉴权信息 (每个产品的每个设备唯一) - api key:配置云端创建设备时获取的 APIkey - product id:配置云端创建产品时获取的 产品ID - master/product apikey:配置云端创建产品时获取的 产品APIKey ## 使用mdk5编译工程下载程序 输入指令:onenet_mqtt_init 初始化mqttt 输入指令:onenet_upload_cycle 发送指令给云平台 ![14.png](/uploads/201808/12/184303nj6vxcxxlzhofvij.png) 在云平台界面查看设备状态 ![15.png](/uploads/201808/12/184304xk8k3yrrat2wxwy4.png) 连接成功,同时发送数据到云平台 ## 遇到错误 1. OneNet Send data failed! Webclient connect URI ![1.png](/uploads/201808/12/193310z44lul8ha15va8lv.png) 通过debug发现程序在这个地方出错 ![3.png](/uploads/201808/12/193311zhhpvrkor2o017ck.png) 通过上面出错的地方可以判断可能是是文件系统的最大fd数目不够,增大fd数目 ![2.png](/uploads/201808/12/193311wtq5inwqwqc5tzom.png) 错误解决 ## 注意事项 - 未启用自动注册功能,在 menuconfig 选项中配置的 device id、api key、product id、auth info 等信息需要和 OneNET 云端新建产品和新建设备时获取的信息一致。 - 初始化 OneNET package 之前需要设备联网成功。 ## 使用命令行接受cloud的数据 在初始化时,命令响应回调函数默认指向了空,想要接收命令,必须设置命令响应回调函数,在 shell 中输入命令onenet_set_cmd_rsp,就把示例文件里的命令响应回调函数挂载上了,这个响应函数在接收到命令后会把命令打印出来。 ![16.png](/uploads/201808/12/193539j40udi4c703da4xf.png) ![17.png](/uploads/201808/12/193539peymqe1ew3swe8s9.png) # 2. OneNet智能鱼缸系统 - RGB灯光控制,使鱼缸能够发出绚丽多彩灯光,让人赏心悦目。 解决方案:云端下发指令,控制LED灯光效果。 - 温度监测,温度上报云端,同时自动控制加热器维持温度。 解决方案:云端下发指令,设置自动温度阈值,同时云端显示温度变化。 - 智能投食,可以远程控制投食,也可以本地投食,同时将投食记录上报。 解决方案:云端下发指令,控制投食,同时按键检测触发投食,将投食记录上报。 - 使用json格式指令控制 解决方案:使用cjson解析指令 ## 使用json格式定义指令 ### 灯光控制 - {"object":"set_rgb","message":"red"} - {"object":"set_rgb","message":"green"} - {"object":"set_rgb","message":"blue"} - {"object":"set_rgb","message":"off"} ### 温度控制 - {"object":"set_temperature","message":50} - {"object":"report_temperature","message":35} ### 投食控制 - {"object":"feed_fish","message":50} - {"object":"report_feed_fish","message":50} ## 代码清单 附件 at_onenet_test.c ## 通过onenet控制led ![18.png](/uploads/201808/12/194624yp1xbbacb4baaaxl.png) 填入json控制指令 ![19.png](/uploads/201808/12/194625cbaeqkko77b33b2c.png) 开发板打印log,同时开发板的led伴随相应的变化 ![20.png](/uploads/201808/12/194626o84nals0tzjbna40.png) 控制成功!!! ## 通过onenet查看温度变化与喂鱼情况 按下开发板的SW1按键,喂鱼并把喂鱼情况上报 ![21.png](/uploads/201808/12/194626s43sml58uql187m8.png) 在onenet查看喂鱼上报信息 ![22.png](/uploads/201808/12/194627pdrqswcwkqz8qkcw.png) 信息一一对应! ## 使用onenet的图形界面,让系统更形象 在主界面选择:应用管理,然后在选择:创建应用 ### 用折线图表示温度变化 ![34.png](/uploads/201808/15/223052ue1riq1fe9iguopc.png) ### 用柱状图表示投食重量 ![35.png](/uploads/201808/15/223052t47yxiq4gycvusu7.png) 以上两个图都要注意选择对应的数据流 ### 用按键来控制开关 ![36.png](/uploads/201808/15/223053wj0410g0jcluiz0q.png) 开关控制填入对应的json控制指令即可! ### 运行效果 ![37.png](/uploads/201808/15/223053j5gikgihhyuhvzgg.png) ## 系统雏形完成,更多详细功能根据实际应用开发。 # 3. 百度语言合成 使用百度语音合成功能,将一段文字合成为语言,同时下载到开发板中 ## 登陆到百度AI平台 http://ai.baidu.com/ ,注册账号 25.png ## 进入控制台后,在百度语言里面,创建应用 ![26.png](/uploads/201808/14/220215y8sbibgaqaptuaqq.png) ## 查看创建的应用,获取如下关键信息 ![27.png](/uploads/201808/14/220215nuurf99ufujukuuu.png) ## 根据百度语音合成开发文档介绍:http://ai.baidu.com/docs#/TTS-API/top 1. 获取token 首先在您创建的应用中查找Api Key 和 SecretKey。 访问https://openapi.baidu.com/oauth/2.0/token 换取 token 比如: ``` API Key:KQiQdUPpKNcjtDtageGZvkmY Secret Key:1HrBBsxszSLRqGExLMfSK2Qu4GAaKG1m 合成得到地址 https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=KQiQdUPpKNcjtDtageGZvkmY&client_secret=1HrBBsxszSLRqGExLMfSK2Qu4GAaKG1m ``` 2. 将上面地址输入浏览器得到: ``` { "access_token":"24.edb60e804472c7d646b33c05a888a024.2592000.1536845082.282335-11665378", "session_key":"9mzdXqEJ9EoiEVbiBQ3okHuqXx\/ee5N1lm6cc3faMr7Th5S4PMJVW+S3Pr0UXqyF7ZvXA0ou+7x7FP54kBTkyieDWnUI5A==", "scope":"public brain_all_scope audio_voice_assistant_get audio_tts_post wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test\u6743\u9650 vis-classify_flower lpq_\u5f00\u653e cop_helloScope ApsMis_fangdi_permission smartapp_snsapi_base iop_autocar oauth_tp_app", "refresh_token":"25.4f4982edf13c6e5055668d1a06751ea0.315360000.1849613082.282335-11665378", "session_secret":"c871047f8a549c1664d3948202b299c7", "expires_in":2592000 } 提取关键信息token: "access_token":"24.edb60e804472c7d646b33c05a888a024.2592000.1536845082.282335-11665378" ``` ## 访问合成接口 1. 需要翻译的内容转换成urlencode(百度能找到许多转换工具) 比如:床前明月光疑是地上霜举头望明月低头思故乡 urlencode: ``` %e5%ba%8a%e5%89%8d%e6%98%8e%e6%9c%88%e5%85%89%e7%96%91%e6%98%af%e5%9c%b0%e4%b8%8a%e9%9c%9c%e4%b8%be%e5%a4%b4%e6%9c%9b%e6%98%8e%e6%9c%88%e4%bd%8e%e5%a4%b4%e6%80%9d%e6%95%85%e4%b9%a1 ``` ![28.png](/uploads/201808/14/220215leuskzp6e2e26ts8.png) 2. 合成接口 ``` http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=24.edb60e804472c7d646b33c05a888a024.2592000.1536845082.282335-11665378&tex=%e5%ba%8a%e5%89%8d%e6%98%8e%e6%9c%88%e5%85%89%e7%96%91%e6%98%af%e5%9c%b0%e4%b8%8a%e9%9c%9c%e4%b8%be%e5%a4%b4%e6%9c%9b%e6%98%8e%e6%9c%88%e4%bd%8e%e5%a4%b4%e6%80%9d%e6%95%85%e4%b9%a1&vol=9&per=0&spd=5&pit=5&aue=3 ``` 3. 浏览器输入接口查看实际效果 ![29.png](/uploads/201808/14/220215cpjz2oykcpohpyqz.png) ## 使用代码实现 附件:at_audio_test.c 运行代码 ![32.png](/uploads/201808/14/221322qdc89wi9qkg46m2g.png) 文件下载成功!!! ## 遇到错误 (header_ptr->magic & RT_MEMHEAP_MASK) == RT_MEMHEAP_MAGIC) assertion failed at function:rt_memheap_free, line number:525 ![30.png](/uploads/201808/14/221321nldrsrantwnrrjgm.png) 原因:下载文件比我申请的缓冲区大 解决:把缓冲区增大,比下载文件大,由原来的4k改到10k ![31.png](/uploads/201808/14/221321x088e4vpvnqkjqk4.png) ## 关于这个语言合成,百度提供有详细的操作过程,其中关键地方是 1. 根据自己创建的产品,获取到对应的两把key。 2. 根据两把key合并出一个token获取网址。 3. 根据获取到的token合并成一个网址去请求语言合成。 这个网址包含了token,还有文字信息的urlencode。合成之后,就可以使用http去下载文件了。 # 尚未解决问题 在使用AT socket的情况下,使用webclient去访问https。 使用百度语音合成的时候,获取token的时候需要用到https方式,目前我调试webclient的TLS功能,运行tls_test发现运行失败,报了以下的一些错误 ![33.png](/uploads/201808/15/225403n6wwikkpu8uoqu4u.png) 我按要求增大了TLS这个缓存,但是还是无效 ![38.png](/uploads/201808/15/225507odtq3uytuxgy443t.png) 下载附件 [at_audio_test.c](https://oss-club.rt-thread.org/uploads/201808/14/223104ctyxq5vq65d5p65p.attach) 下载附件 [at_onenet_test.c](https://oss-club.rt-thread.org/uploads/201808/14/223110z4c0iycy7xez4z4y.attach) 下载附件 [onenet鱼缸系统与百度语言合成.pdf](https://oss-club.rt-thread.org/uploads/201808/15/225116qwd8s18t3msdm18s.attach)
查看更多
8
个回答
默认排序
按发布时间排序
liu2guang
认证专家
2018-08-14
这家伙很懒,什么也没写!
给大佬打call:call:
whj467467222
认证专家
2018-08-14
开源,分享,交流,共同进步
[i=s] 本帖最后由 whj467467222 于 2018-8-14 22:49 编辑 [/i] 厉害,厉害。斗胆问一句,您是不是硬汉哥。
EricYYG
2018-08-15
这家伙很懒,什么也没写!
>给大佬打call --- 过奖了
EricYYG
2018-08-15
这家伙很懒,什么也没写!
>厉害,厉害。斗胆问一句,您是不是硬汉哥。 --- :lol 还没有那个水平啊!!离得远呢
MurphyZhao
认证专家
2018-08-16
这家伙很懒,什么也没写!
您好,0x7200 错误很大程度上是由于 **帧大小** 配置不合理导致的,RFC 手册上是 16K,可以尝试下。 如果还不能解决问题,就需要调试看具体哪里返回的这个错误
MurphyZhao
认证专家
2018-08-16
这家伙很懒,什么也没写!
>您好,0x7200 错误很大程度上是由于 帧大小 配置不合理导致的,RFC 手册上是 16K,可以尝试下。如果还不能 ... --- 测试了下,将 **帧大小** 增加到 17000 测试 OK [attach]5357[/attach] [attach]5358[/attach] [attach]5359[/attach]
EricYYG
2018-08-16
这家伙很懒,什么也没写!
>测试了下,将 帧大小 增加到 17000 测试 OK --- 你好,我模仿你的修改了帧大小,但是异常还是一样,我想问一下,你是用at联网的吗?还是使用lwip联网的?
MurphyZhao
认证专家
2018-09-01
这家伙很懒,什么也没写!
[i=s] 本帖最后由 MurphyZhao 于 2018-9-1 10:51 编辑 [/i] >你好,我模仿你的修改了帧大小,但是异常还是一样,我想问一下,你是用at联网的吗?还是使用lwip联网的? ... --- 我是 LWIP 联网的啊,直接在 mbedtls 的测试例程中测试的。建议你使用 mbedtls 例程中的测试程序,试一下测试例程是否可以正常运行。
撰写答案
登录
注册新账号
关注者
0
被浏览
2.9k
关于作者
EricYYG
这家伙很懒,什么也没写!
提问
13
回答
9
被采纳
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
rt-thread官方usb驱动之虚拟串口
2
RTduino物联网应用零基础入门
3
TinyUSB Demo运行教程
4
RT-Thread学习大礼包一键带走!
5
freemodbus从机调试说明
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
cubemx
freemodbus
PWM
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
5
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
3
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
5
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部