论武天地论坛

 找回密码
 立即注册
搜索
查看: 847|回复: 0

2-STM32+BC26/260Y基本控制篇(自建物联网平台)-整体运行测试-APP扫码绑定BC26,并通过MQTT和BC26实现远程通信控制

[复制链接]

58

主题

58

帖子

242

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
242
发表于 2021-3-22 00:44:48 | 显示全部楼层 |阅读模式
说明
这节测试一下APP扫码绑定BC26模组然后实现APP和开发板之间通过MQTT进行远程通信控制.
这一节作为板子的整体功能测试,用户下载这一节的程序用来测试基本控制篇实现的基本功能
还有就是测试一下板子是否工作正常.
先睹为快
819239-20201211004120371-606247730.png



测试准备工作
1.请根据硬件使用说明下载这节程序到单片机
819239-20201210232102280-1033991707.png



2.单片机工程目录
819239-20201210232202107-1515603095.png



3.Hex文件位置
819239-20201210232239268-559176446.png




4.别忘了安装好手机卡和天线
819239-20201210232810151-1760591061.png

5.安装手机APP
819239-20201210232927743-2090498703.png



6.手机APP安装包位置
819239-20201210233004571-1272615597.png

7.点击APP右上方的菜单栏,选择 扫一扫
819239-20201210233654072-1340361026.png




8.扫描模组上面的二维码
819239-20201210234022928-522232341.png


9.扫描成功以后将会在主页面添加一个设备
注:显示的内容为模组的IMEI号
主页面没做美化哈.
819239-20201210234146283-1484859258.png



10.点击显示的设备,进入设备控制页面
819239-20201210234314914-454622719.png


提示:
左上角返回键旁边显示的是设备的状态,正常情况下应该显示  "在线"
如果显示 "离线",说明硬件没有正常工作.
下载完程序建议复位下;
活动一下手机卡和天线,可能接触不良;
如果还不可以,可以把串口1打印的日志发到售后支持群.

测试继电器控制
1.点击右上角的开关控制继电器
819239-20201211000343229-700048672.png

819239-20201210235516574-570755954.png

2.动作一下开发板上面的 PB5按键,继电器会翻转
819239-20201211002434125-56903786.png




测试温湿度传感器
1.正常情况下OLED会显示当前的温湿度数据(也可以验证OLED是否工作正常)
819239-20201210235928627-1445992068.png

2.手机APP也会显示当前的温湿度数据
注:可以给温湿度吹吹气,改变一下温湿度.
819239-20201211000322970-1457830724.png


测试光敏电阻
注:APP中间那个显示的是光敏电阻的值
这个不是真的光照强度!我只是采集了电压,然后乘了数然后显示而已!
819239-20201211000303354-1981457805.png



可以用手盖住传感器看下采集的数是否变化.
819239-20201211000558568-934074522.png


测试RGB
用手拖动,可以看到板子上的灯随着拖动颜色的变化而变化
819239-20201211001002516-913473704.png


下面的是 HSV方式,虽然做上了,但是不知道是不是这样做
819239-20201211001324173-960163226.png


测试蜂鸣器和热释红外传感器
1.在程序一运行,会吸合一下继电器,同时蜂鸣器也会 滴 一声.
2.程序上是热释红外传感器只要被触发就会听到蜂鸣器滴一声.
打开串口日志也可以看到相关的日志
819239-20201211001701057-274329836.png


819239-20201211002016219-267767902.png




测试485
1.使用USB转485模块连接开发板
819239-20201211002653837-417566420.png



2.给485所在的串口号发送信息,将会收到同样的信息
819239-20201211002754963-982909415.png




测试CAN总线
程序写了一个回环测试,可以在日志上面看到CAN测试结果
819239-20201211003233017-697710780.png


提示
后面是介绍整个程序,如果是初学者大概看一下就可以.
写后面的目的是给已经有基础的了解一下整个程序执行步骤.
便于迅速的实际应用到项目中.
对于初学者按部就班的一节一节的学习就可以.
后面的教程会一步一步的让用户知道所有的一切是怎么做到的.


程序整体说明
1.首先我说一下Android 的UI页面下载链接
RGB调色UI源码链接

温湿度,光照强度UI


2.提示
整个程序就是利用MQTT服务器实现APP和设备之间通信.
设备连接上MQTT以后
订阅的主题是: user/设备的IMEI  发布的主题: device/设备的IMEI

APP扫码得到设备的IMEI
发布的主题是: user/设备的IMEI  订阅的主题是: device/设备的IMEI

协议规定:
819239-20201211160942867-1353310534.png



3.单片机程序
819239-20201211045737115-1978684192.png



①:控制模块连接TCP服务器(MQTT服务器)
②:MQTT消息处理封装包(缓存管理,支持消息等级0,1,2)

4.APP程序
819239-20201211050117059-98679648.png



红色是Google的二维码相关的jar包和程序
绿色的是MQTT相关的jar包和程序


单片机程序详细说明
为保证程序的执行效率和稳定性,单片机程序使用了环形队列,缓存管理.
AT指令非阻塞模式配置模组,Flash提高使用寿命等方案.
请用户先学习完本人开源的 数据处理思想和程序架构里面的以下内容
819239-20201211051356764-689880719.png




1.关于串口1
串口1作为日志打印,发送数据采用中断+环形队列,
在串口2和串口3发送和接收数据的地方把相应数据发给串口1打印出来.
819239-20201211052057367-1714013467.png



819239-20201211052117505-839557639.png



819239-20201211052133067-275387229.png




2.注册MQTT相关函数
819239-20201211052544733-895576306.png




3.控制模组连接MQTT服务器
819239-20201211052624943-129360621.png



819239-20201211052719192-1857993266.png



提示:先前获取的IMEI就存储在 MQTTid这个数组里面.
所以下面组合的发布主题为:device/设备的IMEI
819239-20201211052736356-650078075.png




4.连接成功调用注册的连接回调函数(在回调函数里面发送订阅主题的协议)
819239-20201211052916175-975217430.png


819239-20201211052936612-728957645.png

提示:先前获取的IMEI就存储在 MQTTid这个数组里面.
所以下面组合的订阅主题为:user/设备的IMEI
819239-20201211053019620-1316306300.png




5.在注册的接收回调函数中处理接收的消息
819239-20201211053141894-923809165.png




6.发布消息
在接收回调函数里面返回继电器消息
819239-20201211053433598-2023607908.png



每隔一段时间上报温湿度,光照强度消息
819239-20201211053513010-1635168794.png



如果继电器状态改变,上报继电器状态
819239-20201211053653800-1169492151.png


7.细节说明-关于串口2接收数据的配置
串口2判断空闲使用的定时器,原因是GSM串口发送的数据并不是那么的标准,中间有断断续续的情况.
用自带的空闲中断检测会把一条数据判断成多条存储在缓存中.所以用定时器加长了空闲时间判断.
819239-20201211121930550-1854824452.png



819239-20201211122007256-218433790.png



8.细节说明-串口2接收的数据送给配置函数和MQTT处理函数
注:如果已经建立了TCP通信,找到真实数据的位置,把真实数据送给配置函数或MQTT处理函数
819239-20201211122707467-444293045.png




9.细节说明-MQTT连接成功以后的发送的各种数据的地方
注:MQTT我使用了缓存管理封装了下,所有的数据都存储在了缓存里面
后期移植使用的时候只需要把发送TCP数据改一下就可以,后面章节有相应的移植教程.
819239-20201211124351308-2055314452.png



819239-20201211124435632-823921908.png




10.细节说明-RGB控制的参数会实时记录在Flash里面
注:每次启动会直接显示以前的灯的状态,为提高Flash使用寿命,存储方式采用我封装的 flash_helper.
当然也可以不用实时刷新存储,也可以把 FlashHelperUpdate(); 放到掉电中断和跌机中断里面执行.
819239-20201211123318656-1019922889.png



819239-20201211123935539-1936745472.png


APP程序详细说明
1.MyMqttClient 是封装的MQTT相关的函数
819239-20201211161449140-55215573.png



2.点击右上角菜单 启动扫码
819239-20201211161526870-868660488.png



3.扫码成功携带着二维码信息跳转到主页面
819239-20201211161654331-1342369558.png



4.BC26的二维码信息是  IMEI号;SN码  需要只提取IMEI 然后存储到数据库,并更新Listview
819239-20201211161816681-162157491.png


5.点击某一个设备,携带着这个设备的IMEI号跳转到控制页面
819239-20201211162028663-1177047791.png


6.控制页面获取数据
819239-20201211162315075-1299951245.png



7.订阅主题,和轮训查询设备数据
819239-20201211162419221-1989113147.png


819239-20201211162445082-1158747594.png



819239-20201211162534989-106426953.png



8.接收处理消息
819239-20201211162638376-878091585.png


819239-20201211162723253-731952552.png



9.发布消息
819239-20201211163049083-646360328.png





819239-20201211163015387-1904110074.png


结语
对于初学者,感受一下远程通信就可以.在后面的章节中将会详细的学习到是怎么做到的.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|论武天地论坛

GMT+8, 2021-12-8 18:19 , Processed in 0.086568 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表