[ARM入门] 迅为i.MX6开发板mqtt 移植教程(二)

倾然丶 夕夏残阳落幕 提交于 2020-03-10 16:34:43

把 mosquitto 移植到开发板 
在 Ubuntu 的/home/topeet/下创建一个 mqtt-arm 的文件夹,如下图所示:

 


我们进入我们安装的 mosquitto-1.5 目录下,作者这里是安装在了/opt/mosquitto-arm 下,如下图所示:


 

我们把当前路径下的/etc/mosquitto/下的 mosquitto.conf.example 文件拷贝到我们在/home/topeet/下创建一个 mqtt-arm 的文件夹,命令如下:
cp mosquitto.conf.example /home/topeet/mqtt-arm/
如下图所示

 

然后我们返回到 mosquitto 的安装目录,我们进到安装目录下 mosquitto- 
1.5/usr/local/bin 下面,如下图所示:

 


我们把这个目录下所有文件拷贝到我们在/home/topeet/下创建一个 mqtt-arm 的文件夹,命令如下: 
cp ./* /home/topeet/mqtt-arm/
如下图所示:

 


然后我们返回到 mosquitto 的安装目录,我们进到安装目录下 mosquitto- 
1.5/usr/local/sbin 下面,如下图所示:

 

我们把这个目录下的 mosquitto 二进制文件拷贝到我们在/home/topeet/下创建一个mqtt-arm 的文件夹,命令如下:


 

然后我们返回到 mosquitto 的安装目录,把 libuuid-1.0.3 mosquitto-1.5 openssl 这个三个文件夹全部拷贝到我们在/home/topeet/下创建一个 mqtt-arm 的文件夹,命令如下:
cp -rf libuuid-1.0.3/ mosquitto-1.5/ openssl/ /home/topeet/mqtt-arm
如下图所示:

 

然后我们返回到/home/topeet/下面,使用 tar 命令打包我们创建的 mqtt-arm 文件,命令如下: 
tar -czf mqtt-arm.tar.gz mqtt-arm/ 

 

我们把这个压缩包拷贝到开发板的根目录,这里以 4412 开发板为例,其他开发板操作一致 


 

我们解压这个压缩包,并进入到解压生成的目录,如下图所示:

 

我们把开发板当前目录下 libuuid-1.0.3/ mosquitto-1.5/ openssl/三个文件下的 lib 下 的库全部放到开发板的/lib 下面,命令如下:
cp -rf libuuid-1.0.3/lib/* mosquitto-1.5/usr/local/lib/* openssl/lib/*  /lib/ 
如下图所示:

 


我们把当前目录下 mosquitto.conf.example 复制一个和他一模一样名为 
mosquitto.conf 的文件放在/etc 下面,命令如下:
cp mosquitto.conf.example /etc/mosquitto.conf 
如下图所示: 

 

然后我们把剩下的几个文件全部放在开发板的/bin 目录下,命令如下:
mv mosquitto mosquitto_* /bin 
如下图所示: 

 


然后我们返回到开发板的根目录,删掉我们 mqtt-arm.tar.gz 的压缩包和解压生成的mqtt-arm 文件夹就可以了。


使用命令在开发板上测试 mqtt 
1.以开发板作为服务器,Ubuntu 开俩个终端作为订阅者和发布者进行 
测试
我们打开/etc 下面的 mosquitto.conf 文件, 修改里面的第 40 行为 user root 并取消 
注释。如下图所示: 


 

使用以下命令启动开发板的 mosquitto 服务 
mosquitto -d -c /etc/mosquitto.conf 
如下图所示: 

 

查询是否启动成功,命令如下:
ps -ef |grep mosquitto 
如果成功入下图所示: 

 



使用 ping 命令 ping 一下自己的 Ubuntu,这里一定要 ping 通,否则下面的步骤不成 
功,命令如下,IP 为自己 Ubuntu 的 ip 
ping 192.168.3.34 -c 3 
成功 ping 通如下图所示:

 


在文档的第一步,我们就已经在 Ubuntu 上安装了 mosquitto,所示我们直接打开一个 
终端,订阅主题,命令如下: 
mosquitto_sub -h 192.168.3.28 -t "mqtt" -v 
其中参数-h 是指定要连接的 MQTT 服务器,这里的 192.168.3.28 为开发板的 IP,大家 
要根据自己的 IP 来设置,-t 订阅主题,此处为 mqtt,所以主题为 mqtt,-v 打印更多的调试 
信息。
如下图所示:

 


在 Ubuntu 上打开另一个终端(注意这里又打开了一个终端),发布主题,命令如下: 
mosquitto_pub -h 192.168.3.28 -t "mqtt" -m "Hello MQTT" 
其中参数-h 是指定要连接的 MQTT 服务器,这里的 192.168.3.28 为开发板的 IP,大家要根据自己的 IP 来设置,-t 订阅主题,此处为 mqtt,-m 指定消息内容,这里发送的 Hello MQTT。
如下图所示: 


 



通信成功以后,我们会在另一个终端看到我们通过开发板作为 mqtt 服务器转发来的Hello MQTT信息,如下图所示:

 

2.以开发板作为消息的发布者,Ubuntu 开俩个终端作为服务器和订阅者进行测试 
在 Ubuntu 上开启 mosquitto 服务,命令如下: service mosquitto start 
查看 mosquitto 是否启动成功,命令如下: ps -ef | grep mosquitto 
启动成功如下图所示: 

 
打开一个另外一个终端,订阅主题,命令如下: 
mosquitto_sub -h 192.168.3.34 -t "mqtt" -v 
其中参数-h 是指定要连接的 MQTT 服务器,这里的 IP 为自己 Ubuntu 的 IP,-t 订阅主题,此处为 mqtt,所以主题为 mqtt,-v 打印更多的调试信息。 
如下图所示: 

 

下面的操作在开发板上进行,使用 ping 命令 ping 一下自己的 Ubuntu,这里一定要ping 通,否则下面的步骤不成功,命令如下,IP 为自己 Ubuntu 的 ip ping 192.168.3.34 -c 3 
成功 ping 通如下图所示: 

 


在开发板的控制台,这里的 IP 为 Ubuntu 的 IP,输入以下命令: 
mosquitto_pub -h 192.168.3.34 -t "mqtt" -m "Hello MQTT" 
如下图所示:

 


通信成功以后,会在 Ubuntu 的订阅端收到开发板发来的 Hello MQTT,如下图所示:

 


3.以开发板作为消息的订阅者,Ubuntu 开俩个终端作为服务器和发布者进行测试 
在 Ubuntu 上开启 mosquitto 服务,命令如下:
service mosquitto start 
查看 mosquitto 是否启动成功,命令如下: 
ps -ef | grep mosquitto 
启动成功如下图所示:




 



下面的操作在开发板上进行,使用 ping 命令 ping 一下自己的 Ubuntu,这里一定要ping 通,否则下面的步骤不成功,命令如下,IP 为自己 Ubuntu 的 ip ping 192.168.3.34 -c 3 
成功 ping 通如下图所示:


 


在开发板的控制台,这里的 IP 为 Ubuntu 的 IP,输入以下命令: 
mosquitto_sub -h 192.168.3.34 -t "mqtt" -v 
如下图所示: 


 


打开一个另外一个终端,订阅主题,命令如下: 
mosquitto_pub -h 192.168.3.34 -t "mqtt" -m "Hello MQTT" 
其中参数-h 是指定要连接的 MQTT 服务器,这里的 IP 为自己 Ubuntu 的 IP,-t 订阅主题,此处为 mqtt,所以主题为 mqtt,-v 打印更多的调试信息。 
如下图所示: 

 

如果成功,则会在开发板收到来自发布者的信息,如下图所示:

 


五.使用代码在开发板上测试 mqtt 
1.在开发板上测试订阅者的代码 
把文档中的 mqtt_sub.c 拷贝到 Ubuntu,然后使用以下命令交叉编译这个代码,命令如下:
arm-none-linux-gnueabi-gcc mqtt_sub.c -o mqtt_sub -I /opt/mosquitto-arm/mosquitto- 
1.5/usr/local/include/ -L /opt/mosquitto-arm/mosquitto-1.5/usr/local/lib/ -L /opt/mosquitto- 
arm/libuuid-1.0.3/lib/ -L /opt/mosquitto-arm/openssl/lib/ -lmosquitto -lssl -lcrypto -luuid 
这里需要手动连接我们之前编译的库和头文件,如果大家之前编译的库的安装路径和我的不一样,这里的路径要换成自己的。 编译成功入下图所示:

 




然后把生成的二进制文件拷贝到开发板,运行开发板的二进制程序之前,我们先启动Ubuntu 的 mqtt 服务器,命令如下: 
service mosquitto start 
查看 mosquitto 是否启动成功,命令如下: 
ps -ef | grep mosquitto 
启动成功如下图所示: 

 


运行开发板的程序之前,我们要先保证开发板可以和 Ubuntu 成功 ping 通,这里一定要 ping 通,否则下面的步骤不成功,命令如下,IP 为自己 Ubuntu 的 ip ping 192.168.3.34 -c 3 
成功 ping 通如下图所示:


 



输入以下命令运行开发板的程序,命令如下:其中 IP 为 Ubuntu 的 IP 
./mqtt_sub 192.168.3.34 运行成功入下图所示: 

 


然后打开 Ubuntu 的一个终端,输入以下命令:注意,这里的主题为 topeet。不要写错,发送的内容为 Hello MQTT mosquitto_pub -h 192.168.3.34 -t "topeet" -m "Hello MQTT" 如下图所示:

 




如果发送成功,超级终端会显示我们发送的信息,如下图所示:


 



2.在开发板上测试发布者的代码 
把文档中的 mqtt_pub.c 拷贝到 Ubuntu,然后使用以下命令交叉编译这个代码,命令如下:
arm-none-linux-gnueabi-gcc mqtt_pub.c -o mqtt_pub -I /opt/mosquitto-arm/mosquitto- 
1.5/usr/local/include/ -L /opt/mosquitto-arm/mosquitto-1.5/usr/local/lib/ -L /opt/mosquitto- 
arm/libuuid-1.0.3/lib/ -L /opt/mosquitto-arm/openssl/lib/ -lmosquitto -lssl -lcrypto -luuid 
这里需要手动连接我们之前编译的库和头文件,如果大家之前编译的库的安装路径和我的不一样,这里的路径要换成自己的。 编译成功入下图所示: 



 


运行开发板的程序之前,我们要先保证开发板可以和 Ubuntu 成功 ping 通,这里一定要ping 通,否则下面的步骤不成功,命令如下,IP 为自己 Ubuntu 的 ip ping 192.168.3.34 -c 3 成功 ping 通如下图所示: 


 




输入以下命令运行开发板的程序,命令如下:其中 IP 为 Ubuntu 的 IP 
./mqtt_pub mqtt_192.168.3.34 运行成功入下图所示: 


 


然后打开 Ubuntu 的一个终端,输入以下命令:注意,这里的主题为 topeet。不要写错。mosquitto_sub -h 192.168.3.34 -t "topeet" -v 如下图所示:

 



解决我们在超级终端上输入一些内容,比如 123456789,如果发送成功,会在 Ubuntu的终端上也收到 123456789,如下图所示;

 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!