Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【网络编程学习】+Xinfeiyang@chua+第三节课,以及扩展任务
发布于 2018-08-16 16:24:31 浏览:1330
订阅该版
* 本帖最后由 Xinfeiyang@chua 于 2018-8-16 16:24 编辑 * 到了第三节课了 这周的任务是连接到onenet并上传相关信息。具体任务如下图所示: 基于 OneNet 的智能家居系统,在 OneNet 上创建应用,能够实现如下功能: * 通过 OneNet 页面控制灯的开关; * 家里的温湿度信息实时展示; * 通过传感器监测,当监测到事件,向云端发送信息; [ 如果缺少传感器硬件,自己考虑以其他方式替代] * 其他功能自由发挥; 完成 OneNet 任务之后,可以开始这个作业: 实现通过百度 TTS 语音合成功能,通过 http 接口上传一段文字,能够从百度获取相应的语音数据; * **我的实验过程描述:** 1、当然是联网了,这个在第二节课的时候已经做过试验了,因此不做具体描述。 2、注册onenet并增加产品和添加一个设备,然后在env环境中添加设备鉴权信息、apikey和产品apikey等相关信息。在添加完成之后,进行编译。编译之后就可以烧写到板卡进行测试了。 3、烧写到板卡之后就可以通过onenet_mqtt_init连接到onenet,在这之后就可以看到在onenet设备管理界面看到设备上线了。显示界面如下图【当前设备没有在线,因因此小圆点为灰色,鼠标放到上面提示离线。如果设备在线的话,会变成绿色】: ![001--onenet-设备在线界面.png](/uploads/201808/16/143125dk3udkk35d537o5u.png)![001--onenet-设备在线界面-0.png](/uploads/201808/16/151155x6zzp8otpd4qe4oo.png) 4、当设备上线之后,就可以通过onenet_upload_cycle指令来测试自带的onenet_sample命令了。这个命令是循环上传数据,每间隔5S上传一次数据,数据是随机数,通过 value = rand() % 100来获得的。之后就可以在onenet设备管理界面的信息展示页看到具体的数据显示,在这个界面中,可以看到总设备数据条数因此相关的数据更新时间,具体如下图所示。【由于测试关系,我把原先默认的temperature修改成了其他数据进行展示】 ![002--onenet-设备数据展示界面.png](/uploads/201808/16/143835fzd8jjssksjhj7s6.png) 5、到此 ,实验完成,下来就是在实验的基础上完成具体的作业了。 * **作业完成过程** * 通过 OneNet 页面控制灯的开关; * 家里的温湿度信息实时展示; * 通过传感器监测,当监测到事件,向云端发送信息; [ 如果缺少传感器硬件,自己考虑以其他方式替代] **前期准备工作:** 1、【家里的温湿度信息实时展示;】由于板卡没有温湿度等传感器模块,因此这里使用自造数据代替温湿度进行功能演示。这里为了方便设计两组数据,一组数据从0开始增加到250再回到0,然后另外一组从250减到0再回到250.这样的话,可以看到两端不同变化的曲线。 2、【通过 OneNet 页面控制灯的开关;】通过onenet页面控制灯的开关,这里要用到onenet的命令下发功能。设置为下发“A”则打开LED ,下发“B”则关闭LED。 3、【通过传感器监测,当监测到事件,向云端发送信息;】由于没有传感器,因此无法使用传感器触发该类事件。这里使用按键来进行代替,当检测到按键按下的时候, 下发特定字符串"key press"到onenet **具体的实现过程** 1、首先当然是数据的上传了 这部分比较简单,直接在onenet_sample的基础上进行修改。在onenet_upload_entry函数中增加两个数据发送,即可看到实际的效果[。具体onenet数据接收效果如下所示,在这里被命名为"red"和“ra”两个名称。到这里温湿度上传功能完成模拟: ![003-onenet-data_send_2onet.png](/uploads/201808/16/154920jy4stouy0w340rxv.png) 2、通过onenet页面控制灯的开关。这里首先要实现的是接收并打印来自onenet的信息,oennet代码里已经有接受功能,需要增加打印具体接受数据的功能。直接在mqtt_callback函数中进行增加。具体增加的打印代码如下,其中msg_data->message->payload存储的是具体数据,msg_data->message->payloadlen对应有效数据长度: len = msg_data->message->payloadlen; for(i_cnt=0;i_cnt
",i_cnt,((char *)msg_data->message->payload)[i_cnt]);由于无法实际展示LED的亮灭效果,因此通过回传信息到onenet来进行展示,具体截图如下,左侧黑色背景的为msh控制台,右侧的白色背景为onenet数据展示界面。实际效果基本达到预期: ![003-onenet-data_receive-from-onet.png](/uploads/201808/16/160017o57mbz5m1761ihx6.png) 3、 通过传感器监测,当监测到事件,向云端发送信息。这里使用按键进行事件触发,为了能够实时的检测到按键变化,需要另外开一个线程来检测按键的变化。线程的增加参考onenet_upload_cycle函数,可以将线程名修改为“except_detect”。之后检测按键的值变化即可,当按键按下之后 ,上传信息“key pressed”到onenet,当按键从按下到松开变化的时候,上传“key released”。经过试验,可以正常的实现检测,这里就不再上图了。 * **扩展任务实现过程**【实现通过百度 TTS 语音合成功能,通过 http 接口上传一段文字,能够从百度获取相应的语音数据】的完成: 参考官方文档[百度TTS语音合成参考官方说明](http://ai.baidu.com/docs#/TTS-API/top),其实前期步骤和连接onenet的类似,只是多了acess token 1、扩展任务需要通过wget指令来从百度获取tts语音合成音频数据。在这里由于需要多次用到get功能,并且需要解析接受到的数据,因此前期的acess token获取工作在电脑上进行,可以通过postman进行试验。 2、首先需要登录百度云管理中心创建应用,创建应用之后的界面如下图所示:![005-百度TTS语音合成应用创建列表.png](/uploads/201808/16/151155xoo0pmprs0iyktcv.png) 3、在百度云管理界面创建应用之后,可以看到apiKEY和secretkey两部分,这两部分用于接下来的获取acess token。连接如下,需要将 client*_id和**client_*secret更换为自己实际对应的apiKEY和secretkey,替换之后通过get功能获取acess token。 [https://openapi.baidu.com/oauth/2.0/token?grant](https://openapi.baidu.com/oauth/2.0/token?grant)*_type=client_*credentials&client*_id=Va5yQRHl********LT0vuXV4&client_*secret=0rDSjzQ20XUj5i**********PQSzr5pVw2 4、get 获取到的信息如下。其中scope中含有audio_tts_post 表示有语音合成能力,没有该audio_tts_post 的token调用接口会返回502错误。 在结果中可以看见 token = 1.a6b7dbd428f731035f771b8d********.86400.1292922000-2346678-124328,在2592000秒(30天)后过期。 ![005-get acess token.png](/uploads/201808/16/151710ab8advljbv7a7ran.png) 5、使用刚刚获取到的acess token进行操作。将tok=后,&之前的的字符串替换为刚刚得到的acess token,tex=之后的内容为需要合成的文字内容,其他的vol\per\spd\pit等参数可以设置音量高度、语速快慢等声音信息。 http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=1.a6b7dbd428f731035f771b8d****.86400.1292922000-2346678-124328&tex=%e7%99%be%e5%ba%a6%e4%bd%a0%e5%a5%bd&vol=9&per=0&spd=5&pit=5&aue=3 6、使用get功能即可直接获取语音文件,之后保存为.mp3即可【上述url中的aue用于设置格式,=3为mp3格式】,之后就可以用播放器听该合成语音了。【也可以将该链接直接复制到浏览器之后回车就可以看到该音频文件,之后点击播放即可收听】 实际操作过程中,由于新购买的外置spi-flash还没有到货,因此没有文件系统,无法保存文件。因此只能通过文件长度对比下了 具体对比结果如下所示:黑色背景的为msh操作界面,另外一个为postman获取界面,可以从中看到两端的文字是相同的。因此表示获取到的文件基本一致 ![005-百度TTS语音合成获取长度显示--.png](/uploads/201808/16/152359u8grk3ctebberr9k.png)![005-百度TTS语音合成获取长度显示-1-.png](/uploads/201808/16/152359t9xwxa4n79gxyell.png) 所有试验包括扩展任务基本已经完成了,遗憾的是没有文件系统,无法将音频文件保存下来。希望能够在收到外置flash之后能够学会文件系统的操作,或者有后续的文件系统课程。 第二节课的扩展任务是扩展一个新的AT模块,我使用了usr-c322进行了试验,发现比较麻烦,c322支持的是透传功能,无法实现指令传输文件,支持的httpd client必须有数据,无法直接get文件下来,只能获取相关数据。这样的话,其实也就只能试验下前期的一些基本功能。。后续有时间的话,把这部分功能写个帖子发出来 课程已经进行了3/4了,基本的一些操作已经能够进行了,大多是在官方例程上进行的修改试验,希望后续能够实现自己的特定功能吧 参考文档: 1、[百度TTS语音合成参考官方说明](http://ai.baidu.com/docs#/TTS-API/top) 2、[百度TTStts restapi 添加aue参数及2次urlencode](https://github.com/Baidu-AIP/speech-demo/commit/2ed0c37c3870500bbd8a874c2407a3658c7244c6) 3、[如何连接到 onenet 云](http://ci.rt-thread.com/3488/site/tutorial/network/onenet/onenet/) 4、[百度TTS语音转换文字在线生成工具](http://tool.chinaz.com/Tools/urlencode.aspx)
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
1.3k
关于作者
Xinfeiyang@chua
这家伙很懒,什么也没写!
提问
7
回答
2
被采纳
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
如何在master上的BSP中添加配置yml文件
2
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
3
RT-Thread 发布 EtherKit开源以太网硬件!
4
rt-thread使用cherryusb实现虚拟串口
5
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
热门标签
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
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
14
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部