基于BC20/MQTT协议的智能监测站

        最近新做一个项目,用的是BC20作为通讯模块,协议采用MQTT,主要功能就是,两个电机的驱动设备开关门,一个继电器的驱动设备摄像头供电,平台下发指令开关门,下发指令开关继电器,下发指令获取定位和关机,应用非常简单的一个项目。所以难点也不多,做个简单记录。

        代码整体流程实现下来,想想其实没有什么好说的,最主要的还是两点,逻辑逻辑逻辑,框架框架框架。怎样使整套程序能够按照需求运行起来,这才是编程最重要的一点。其余的模块驱动倒是没什么太大的重难点,花点时间和心思就可以。

        在刚开始写时,我是在上一个项目的基础上进行的修改。首先测试的通讯部分。BC20里协议都是封装好的,所以使用起来非常方便,比WIFI方便了不知道多少倍,不用自己封装包头和转换。具体指令都可以看协议手册。

        刚开始遇见的问题,使用BC20模组连接服务器时,连接不上,一直失败,软件硬件都感觉不出有什么问题。折腾了半天最后才在老师傅指导下明白时SIM卡的问题,硬件用的是电信卡,数据直接被基站拦截了,所以发送不到服务器,自然就连接失败。解决方案就是换了一张移动的SIM卡。

       因为是在现有代码上进行的逻辑修改,大部分外设功能都是应用好的,比如串口收发,发送指令的返回信息处理函数,都是封装好的,所以没什么好说的。我自己负责了MQTT协议这部分的编写,因为几个指令的使用是很简单的,所以主要时间都是花在逻辑处理部分。下发指令的判断处理,指令存储,响应ACK,上发心跳包,服务器未回复ACK怎么处理等等。指令存储是重要的一点,因为担心下发指令会被其他动作冲掉,导致下发指令没有响应,虽然没有响应设备也不会给平台回复ACK,但逻辑上还是要尽量避免这样的问题。

       仔细想想这半个月的项目历程,好像也没什么折磨太久的问题,所以也不知道该总结些什么,哦对了,还有测试工具的使用,这也是非常重要的!!!有的工具由于是爱好者写的,BUG就会比较多,在使用上出现的一些问题不好定位分析,第一次做这类项目,我也在上面耗费了许多时间。我使用的是通信猫做服务器,在测试上发时,负载超过94字节,就接收不到,我一开始以为是模块本身协议负载有限,但是也查询不到相关资料,只能把数据拆包发送。最后我换了一个MQTTX测试之前的上发,是没问题的。。所以工具也是很重要的,不好用的会让人走弯路的……

posted @ 2021-08-24 10:09  Qianm  阅读(448)  评论(0)    收藏  举报