• 正文
  • 相关推荐
申请入驻 产业图谱

奈斯!我学会在树莓派 CM0 NANO 上本地部署

8小时前
198
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

特别感谢文章作者:无垠的广袤 / 李金磊,辛苦制作的教程,非常适合新人及树莓派爱好者学习使用!如果你想了解更多教程,可以查看下面的内容:

树莓派 CM0 Dev Kit:

我用树莓派CM0做了一个非常有趣的网页手写数字识别功能!

我用树莓派CM0做了一个数字识别!

新品树莓派CM0,用于智能家居

用树莓派CM0做物体识别,小白一键跑通!

我用树莓派CM0做了个人脸检测,结果大家全在要代码和模型!

赛博养娃:和树莓派CM0进行AI对话!

树莓派 CM0 NANO:

树莓派 CM0 NANO 入门教程:镜像烧录、系统测试!

内存仅占用 260 MB?我在树莓派CM0 NANO上跑通了Home Assistant!

本文介绍了树莓派 CM0 NANO 单板计算机通过 Docker 容器实现 EMQX 的本地部署,包括 Docker 安装、EMQX 镜像拉取、容器启动、客户端配置、MQTT 测试等流程。

项目介绍

该项目通过 Docker 软件实现 EMQX 平台在树莓派 CM0 NANO 单板计算机的本地部署。

Docker 安装:网络加速、安装脚本执行、软件源更换和版本检测等;

EMQX 部署:更换镜像源、镜像获取、容器启动、创建用户以及参数配置等;

通信测试:MQTT 消息转发、芯片温度上报测试等流程。

 

应用

EMQX 作为高并发 MQTT 接入层,在工业场景主要承担 设备-边缘-云端 实时数据总线角色,应用场景包括且不限于

智能家居终端控制与数据采集

工业自动化数据采集与远程控制

边缘 IIOT 工业物联网

工业环境监测,历史数据转发与存储;

……

配合规则引擎与流计算,实现设备互联、生产监控、能耗优化,逐渐成为智能制造与数字化转型的核心数据底座。

硬件连接

若采用 SSH 远程登录方式,需连接 5V 3A 电源和网线;

若采用本地连接方式,需增加 HDMI 数据线连接显示器、USB 键盘及鼠标。

 

Docker

这里介绍树莓派 CM0 NANO 实现 Docker 部署的主要流程,包括更换软件源、安装脚本获取与执行、版本检测等。

 

网络加速

使用 Dev-Sidecar 软件实现网络加速。

执行如下执行,获取安装包并安装软件

wget "https://bgithub.xyz/docmirror/dev-sidecar/releases/download/v2.0.0.2/DevSidecar-2.0.0.2-linux-arm64.deb"sudo dpkg -i DevSidecar-2.0.0.2-linux-arm64.deb

若报错或提示缺失文件,可通过补全缺失包的方法解决

sudo apt updatesudo apt -f installsudo dpkg -l dev-sidecar

执行 ping docker.com 测试网络连接;

部署方案

使用官方脚本安装,终端执行指令

curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh

安装完成后,查询 Docker 版本号

docker -v

详见:树莓派 CM0 NANO 单板计算机 本地部署 Home Assistant 智能家居平台

若报错,可更换国内软件源

# 添加 Docker 官方 GPG key:sudo apt-get updatesudo apt-get install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc# 添加仓库到 Apt 源:echo   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.aliyun.com/docker-ce/linux/debian   $(. /etc/os-release && echo "$VERSION_CODENAME") stable" |   sudo tee /etc/apt/sources.list.d/docker_aliyun.list > /dev/nullsudo apt-get update

详见:https://pidoc.cn/docs/pidoc/install_docker/

 

EMQX

EMQX 是全球领先的开源分布式云原生 MQTT 物联网接入平台,支持单机千万级并发、毫秒级延迟,为万物互联提供高可靠、高可用的消息总线底座。

详见:https://www.emqx.com/zh

在前面完成 Docker 安装的基础上,这里进一步介绍了部署 EMQX 容器的主要流程,包括镜像源更换、镜像拉取、容器启动、个性化配置等。

部署方案

在添加软件镜像源的基础上,终端执行如下指令,拉取最新版 emqx 镜像

sudo docker pull emqx/emqx:latest

实测部署 EMQX 需要至少 400MB 存储空间。

启动容器

终端执行如下指令,启动 EMQX 容器

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest

浏览器输入网址 http://<树莓派IP>:18083 ,如 http://192.168.1.115:18083 ;

进入 EMQX 界面,初始账号 admin 密码 public ;

首次登录会提示更新密码并进入概览界面

运行过程占用内存约 310MB

若要停止/启动/重启 EMQX,则执行指令

sudo docker stop emqx       # STOPsudo docker start emqx      # RUNsudo docker restart emqx    # Restart

创建用户

创建客户端

依次打开 访问控制 - 客户端认证 - 创建 - Password-Based - 内置数据库 - (默认配置)- 创建 ;

创建用户

用户管理 - 新建用户 - 自定义用户名和密码 - 保存.

至此,完成 EMQX 在树莓派 CM0 NANO 单板计算机的本地部署。

 

通信测试

这里介绍了基于 EMQX 服务器和 MQTT 协议的通信测试,包括 MQTT 消息转发、芯片温度上报等。

MQTT 转发

通过 MQTTX 软件向 EMQX 服务器发送消息,并订阅相同主题,实现消息接收。

打开 MQTTX 软件,新建连接;

输入 EMQX 服务器 IP 地址,用户名和密码等信息,连接服务器;

添加订阅主题和发送主题,如 rpi/cm0/demo ;

在发送框内输入任意 JSON 消息并点击发送,如 {"temp": 27.8, "humi": 42.6},立即接收到相同消息;

在 EMQX 服务器后台可以看到消息的流入流出、在线会话数量、主题等信息

芯片温度上报

在前面本地测试通过的基础上,将芯片温度上传至 EMQX 服务器并实现消息转发。

流程图

代码

终端执行 touch mqtt_temp.py 指令新建 python 文件,并 nano mqtt_temp.py 添加如下代码

#!/usr/bin/env python3import paho.mqtt.client as mqttimport time, json, subprocessbroker   = "localhost"    # ipport     = 1883           # porttopic    = "rpi/cm0/temp" # topicusername = "xxx"          # EMQX user namepassword = "xxx"          # passwordclient = mqtt.Client(callback_api_version=mqtt.CallbackAPIVersion.VERSION2)client.username_pw_set(username, password)   # user infoclient.connect(broker, port, keepalive=60)def get_cpu_temp():    raw = subprocess.check_output(["vcgencmd", "measure_temp"]).decode()    return float(raw.split("=")[1].split("'")[0])while True:    temp = get_cpu_temp()    payload = json.dumps({"temp": temp, "unit": "℃", "ts": int(time.time())})    client.publish(topic, payload, qos=0)    print(payload)    time.sleep(2)

保存代码;

终端执行指令 python mqtt_temp.py 运行程序;

终端打印上报消息

打开 MQTTX 软件,接收到 EMQX 服务器转发的 CM0 芯片温度信息

 

总结

本文介绍了树莓派 CM0 NANO 单板计算机通过 Docker 容器实现 EMQX 的本地部署,包括 Docker 安装、EMQX 镜像拉取、容器启动、客户端配置、MQTT 测试等流程,为树莓派 CM0 等相关产品在工业物联网领域的快速开发和应用设计提供了参考。

相关推荐