打印
[uCOS/RTOS]

【RTOS】基于麻雀一号的可移动监控——方案总结

[复制链接]
2382|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 梁锐锋 于 2020-7-9 09:04 编辑

1. 方案概述
本次设计比赛我的设想方案是,利用麻雀一号传输图像的便捷性,实现一个以小车搭载的可移动式监控,以此用户可以体验到通过手机远程操控小车移动来实现全场景的监控。后期也可结合云端可以进一步拓展其功能,使得应用更智能。


2.  麻雀一号SDK入手总结
首先,就跳过环境搭建与烧录下载这些基本性问题,直接来说说自己入手经历吧。按着“SDK代码结构--->固件程序循行流程--->小试牛刀”这三步走下来,对程序的结构(案例都在哪里)、工程的组织编译方式(自己添加源文件怎么写脚本)、怎么自己添加MSH指令实现自定义功能(好玩)这三方面有相对深刻的印象。

SDK代码结构我总结为三个点——app应用程序与demo案例,rtthread的内核函数接口与第三方功能性组件,芯片硬件相关的驱动接口。
第一次接触到系统性的RTT工程代码,自然对它的程序运行的流程顺序有点疑惑与好奇,参考了下这条链接的介绍(STM32平台下运行)
https://blog.csdn.net/IT_B_O_Y/article/details/98877820
我自己通过重启串口的log内容关键词在VScode里面全局搜了下,大概理顺了程序从哪里开始到哪里结束。(以下按个人方式理解,会有偏颇)

第一步是进行系统的内存分区的检测(可能是bootloader程序段先执行的效果),然后第二步是跳到RTT的系统初始化与硬件外设初始化,最后一步则是程序从RTT系统初始化转跳到用户的主函数里面去。具体怎么转跳还没研究个清楚。






下面就来说下我是怎么实现我的入手Demo。

3.  小试牛刀——远程查看监控
整个过程是只用到test/mjpeg.c文件的代码,其原来是在局域网内实现实时查看监控,为了实现我的设计方案,我将其拓展到可远程登陆麻雀一号的视频流服务器,获取实时监控,为此须要内网穿透的软件工具,因为只是试验,我这里选用了有免费试用期的“云网穿”。

第一步按官方的指导文档,将自己麻雀一号创建的服务器IP地址和端口号作为内网IP地址、端口号。(记得麻雀一号要和PC链接同一个热点)
参考文档链接http://jiaocheng.xiaomy.net/



完成参数设定后,记得要在PC上打开工具软件并点击“启动”。



最后在手机浏览器访问映射域名便可访问到设定的内网端口,支持RTT,国产芯!!







使用特权

评论回复

相关帖子

沙发
21ic小喇叭| | 2020-5-22 14:36 | 只看该作者
感谢分享,如果使用过程中遇到问题,您可以电话联系板子厂家的客服,或者我们帮您询问一下厂家

小喇叭提醒您:

现在起到6月底,在21ic提交作品(记得把方案文档,作为附件上传),每个人都可以兑换3次礼物。

最晚7月5号以前提交作品哦

使用特权

评论回复
板凳
21ic小喇叭| | 2020-6-5 11:26 | 只看该作者
大大,您如果完成了作品,千万别忘记按比赛要求,做成文档,上传到论坛

文档模板在咱们参赛群里有,如果没找到,联系大掌柜单独发给您

提交作品以后,大掌柜给您寄礼品

使用特权

评论回复
地板
梁锐锋|  楼主 | 2020-7-9 08:58 | 只看该作者
本帖最后由 梁锐锋 于 2020-7-9 10:27 编辑

【RT-Thread作品秀】基于麻雀一号实现的可移动监控摄像头
作者:Railphone

1.概述
智能家居在人们的生活当中逐渐成为了一种生活的时尚甚至必需品,从家庭监控切入,本设计在传统的固定式家庭室内监控基础上增加了可远程控制其移动,在儿童安全,全屋安全上面有一定的应用价值。本设计硬件组成主要有麻雀一号(通讯与监控功能),STM32F103ZET开发板(电机控制)以及L298N电机驱动电路;软件上,设备端主要基于官方提供基于RT-Thread的SDK进行开发,另外使用安卓开发的APP作为控制端与实时显示视频。

2.RT-Thread使用情况概况
参考了SDK里面Test文件目录下的Airkiss和MultiButtons以及mjpeg;另外组件上使用了pahoMQTT。涉及到内核部分简单地使用多线程管理方式,主要通过MultiButtons线程来嵌套Airkiss线程和mjpeg线程,当检测到特定的按键按下时,触发相应的线程。

3.硬件框架


4.软件框架说明
软件设计从设备组成可分为麻雀一号,STM32F103主控以及手机APP三部分,从流程来看主要分为三步:
一:打通网络通信链路。按键检测,当按下中键时,设备(麻雀一号)进入配网,成功后自动接入MQTT服务器,APP端也已经设定好开启自动接入同一MQTT服务器,因此APP端可传送消息至麻雀一号。
二:APP按下按钮“打开摄像头”,打开摄像头,麻雀一号创建摄像及视频流传输线程,同时将视频存放的TCPserver IP发送到APP端,需要在电脑上面使用内网穿透工具,将IP地址穿透,此时APP端可以远程实时查看到监控画面。
三:APP控制小车运动。APP可发送前进后退左转右转的命令,麻雀一号通过MQTT协议收到命令后传给STM32,STM32输出PWM控制两个电机来实现前后左右运动。

4.1.麻雀一号软件流程图



4.2.STM32主控软件流程图





5.软件模块说明
上面已经对整个程序流程作了说明,这里主要对设备端一些特别的逻辑处理进行说明。

5.1.麻雀一号设备端
触发线程
在软件初始化时创建按键检测线程,麻雀一号上的按键是五向按键,因此可以将配网、打开摄像头这些操作绑定到按键的特定方向上,需要用到某个功能只需要按下按键触发即可,既可全开功能远程控制监控小车,也可以选择性不触发摄像头线程单纯APP控制小车。

线程调用时间点
麻雀模块在通过Airkiss配网成功并且获取到动态IP地址后,调用PahoMQTT包创建MQTTclient线程来接入MQTT服务器,从而能够获取手机APP发送的方向控制信息。若此处调用MQTTclient线程过早,在成功接入热点时回调也是无法连接MQTT服务器成功的。

MQTT通讯
通过mq_publish和mq_sub_callback两个函数进行发送、接收消息处理。当收到小车运动控制指令时串口输出相应的控制指令,当收到APP发送的打开摄像头的控制指令时,则创建mjepg线程进行摄像实时传输至APP。上面是MQTT接收消息的处理,另外当mjpeg线程创建了TCP服务器后(存放一帧帧拍摄图片),调用mq_publish接口发送TCP服务器的IP地址至APP端,以便进行内网穿透。


5.2.STM32F103ZET端
电机控制
通过与麻雀一号串口通讯,当识别到“\r\n”时主函数将接收到的字符识别,用switch case语句分别调用封装好MotorForward(),MotorBackward(),MotorLeft(),MotorRight(),MotorStop。



6.演示效果
https://www.bilibili.com/video/BV17i4y1V7gT?from=search&seid=7550243369304313080

7.代码地址
https://gitee.com/railph/RTThread_BK7252_CamCar_V1.0

Rtthread方案总结.pdf

239.43 KB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝