#开发板漂流计划#小车控制由简入繁之MQTT控制 原创 精华
【本文正在参与优质创作者激励】
#开发板漂流计划#小车控制由简入繁之按键控制
#开发板漂流计划#小车控制由简入繁之UDP控制
本文在前面两篇帖子的基础上,在Openharmony3.0上实现小车上电后自动连接到指定WIFI,并与指定的MQTT Broker建立链接、订阅小车控制“carControl”主题。电脑Windows系统下使用paho软件连接到相同的MQTT Broker,通过发送主题为“carControl”的消息来控制小车状态。
阅读本文前,推荐阅读连志安老师的以下文章:
- MQTT 协议开发入门 - MQTT 简述、设计规范、主要特性、协议原理、协议数据包结构
- 如何在鸿蒙系统中移植 Paho-MQTT 实现MQTT协议- 基于openharmony1.0移植Paho-MQTT教程
- 在鸿蒙系统上使用MQTT编程-对应连老师Gitee仓库 harmony_mqtt的使用介绍,本文基于这个版本实现MQTT控制小车
本文主要分享MQTT Broker的搭建、在Openharmony3.0上如何使用harmony_mqtt、并实现MQTT控制小车的Demo。
安装前请确保你的Ubuntu能正常上网并且局网内可以访问到。
安装指令如下:
正常状态显示如下
这样子测试用的Broker就搭建好了,Broker的IP地址就是你Ubuntu局域网中的IP,端口默认1883,如果搭建有问题欢迎留言交流。
-
3.在Openharmony3.0上如何使用harmony_mqtt
-
3.1 让harmony_mqtt成功编译
-
3.1.1 将harmony_mqtt 下载到Openharmony3.0源码third_party目录下并重命名为pahomqtt
可以用git clone 下载后重命名也可以下载压缩包后解压。如下图Z:\ohos300_iot\是我Openharmony3.0源码的根目录
修改device\hisilicon\hispark_pegasus\sdk_liteos\BUILD.gn在lite_component(“sdk”)中添加"//third_party/pahomqtt:pahomqtt_static"
(注意:此处修改的BUILD.gn 和Openharmony1.0 版本有区别,1.0 路径是vendor\hisi\hi3861\hi3861\BUILD.gn)
修改完成后重新执行编译后从编译日志中可以用mqtt看下log,修改成功会有以下信息。
但是编译到最后会有错误提示如下,接下来就是修这个编译错误了。
错误日志截取如下
我的修改方式是将
third_party\pahomqtt\MQTTClient-C\src\MQTTClient.c
third_party\pahomqtt\MQTTClient-C\src\liteOS\MQTTLiteOS.c
third_party\pahomqtt\MQTTClient-C\src\liteOS\MQTTLiteOS.h
这三个档案中的所有的
对应替换为
这样子就能正常编译通过了
third_party\pahomqtt\BUILD.gn中以下三个有没有并不会影响编译/使用,所以我把他拿掉了。
修改后的代码可以直接从附件下载或者从码云 https://gitee.com/soonliao/pahomqtt 下载。
在应用的BUILD.gn添加以下三行内容才能调用到pahomqtt的相关函数
主要在以下函数实现,详细的说明可以参考在鸿蒙系统上使用MQTT编程
通过MQTTSubscribe(&c, topic, opts.qos, messageArrived);注册messageArrived回调实现,代码如下
完整的代码请见附件或者Gitee https://gitee.com/soonliao/car_mqtt,使用方式如下
修改applications\sample\wifi-iot\app\car_mqtt\src\car_main.c
电机驱动会用到PWM 模块所以要开启
device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk
改为
加上第3部分中的pahomqtt相关修改,整个Demo就可以编译通了。
成功连接WIFI,且连上MQTT Broker订阅主题的log如下
测试软件在附件,或者参考连老师的说明下载,控制指令支持前进“forward”、后退“back”、右转“right”、左转“left”、停止“stop”,在小车成功执行指令后会返回一条carStatus的主题并携带状态消息。
接收到指令后串口会有以下打印
以上是本人分享的“小车控制由简入繁之MQTT控制”如有不足欢迎留言指教,如有疑问也欢迎留言。
文中相关设备来源于51CTO 鸿蒙技术社区【开发板漂流计划】
【本文正在参与优质创作者激励】
MQTT这块楼主算是整明白了!
整明白了!