上周,我成功申请到了一片树莓派CM0 Dev Kit (Compute Module 0 Development Kit),并决定进行一次完整的开箱、环境准备和基础配置流程的记录,希望能为CM0的初级使用者提供清晰的指引。
什么是树莓派CM0?
CM0全称为Compute Module Zero,其性能级别与树莓派早前发布的Raspberry Pi Zero 2W相当,但采用不同的形态设计。与外观固定的Zero 2W不同,CM0采用邮票孔设计,可以焊接在任意定制的载板(底板/扩展板)上。例如,将CM0模组焊接到一块搭载LCD屏幕的PCB板上,就相当于为这块屏幕赋予了“大脑”——一台四核微型计算机,使其能够进行视频采集、联网并展示网页信息。
CM0 Dev Kit开箱
到手的CM0开发套件包含一块电路板和一根IPX天线。请注意,天线包装内还有一个小小的跳线帽,后续步骤会用到。
天线安装非常简单:将IPX接口对准板卡上树莓派Logo附近的IPX底座,垂直按下直到听见“咔哒”声即可。天线摆放时可能与部分元器件稍有干涉,建议将其从40针GPIO引脚的中间缝隙引出。未来设计外壳时,可撕掉天线背面的保护贴纸,直接粘贴在外壳内侧。
硬件准备与系统选择
接下来,我们需要为CM0板载的eMMC存储器烧录操作系统。目前官方提供8GB和16GB两种eMMC版本,强烈推荐选择16GB版本。如果使用官方图形界面的系统,8GB空间会很快告急。
可供选择的系统镜像:
- 树莓派官方系统:首选推荐。对树莓派硬件的支持和优化最好。可通过 Raspberry Pi Imager 工具在线或离线烧录。
- DietPi系统:一个高度优化的轻量级系统,非常适合资源有限的设备。
关于32位与64位系统的选择建议:
CM0与Zero 2W采用相同的BCM2710A1 SoC(4核Cortex-A53),理论上支持64位。但由于CM0仅有512MB内存,运行64位系统时,其本身的内存开销(内核、库、页表等)比32位系统多出约80-120MB,可能导致系统频繁使用交换分区,实际体验反而更慢。因此,对于512MB内存的设备,官方更推荐使用32位系统。本次教程将使用官方的32位Lite(无桌面环境)版本。
使用树莓派主机为CM0烧录系统
我们将使用另一台树莓派(作为烧录主机)通过 rpiboot 工具,将CM0模拟成U盘设备,然后写入系统镜像。
烧录主机环境准备(以树莓派5为例):
- 所需硬件:
- 树莓派(任何带USB接口的型号均可,如2B/3B/4B/5B)
- 5V@2.5A MicroUSB电源
- MicroUSB数据线
- MicroUSB转USB母口数据线
- MicroUSB HUB(用于连接CM0)
- 系统更新与软件安装:
登录烧录主机,打开终端,执行以下命令:
sudo apt update && sudo apt upgrade -y
sudo apt -y install git libusb-1.0-0-dev pkg-config build-essential vim tree
- 编译并安装
rpiboot 工具:
git clone --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
make
sudo make install
- 启动rpiboot服务:
在终端执行 sudo rpiboot,此时程序会等待CM0设备接入。
CM0烧录步骤:
- 将跳线帽插入CM0开发板的J8位置。
- 使用MicroUSB数据线将CM0连接到烧录主机(树莓派5)的USB接口。
- 等待十几秒,烧录主机会识别到CM0作为一个新的存储设备(如
/dev/sda)。
- 在烧录主机上下载系统镜像(以Raspberry Pi OS Lite 32位为例):
mkdir iso && cd iso
wget https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-最新版本/镜像文件名.img.xz
- 解压镜像并烧录:
xz -d 镜像文件名.img.xz
sudo umount /dev/sda1 # 卸载自动挂载的分区
sudo dd if=iso/镜像文件名.img of=/dev/sda bs=4M status=progress
烧录完成后,使用 lsblk 命令检查,应能看到 /dev/sda1 (boot) 和 /dev/sda2 (rootfs) 两个分区。
CM0首次启动与基础配置
- 断开CM0与烧录主机的连接,并移除J8位置的跳线帽(非常重要!)。
- 为CM0连接HDMI显示器、USB键盘鼠标,并通过MicroUSB口供电。
- 上电后,系统将启动并进入首次设置向导。按照提示设置用户名(如
pi)、密码、时区、键盘布局等。
- 登录系统后,首先配置Wi-Fi地区以启用无线网络:
sudo raspi-config
导航至 Localisation Options -> WLAN Country,选择 CN China。
- 解除蓝牙软锁定并启用Wi-Fi:
sudo rfkill unblock 0
sudo rfkill unblock wifi
- 连接Wi-Fi网络。可以使用
nmtui 命令行图形工具进行配置,非常简单直观:
sudo nmtui
在界面中选择“Activate a connection”,找到你的Wi-Fi并输入密码连接。
- 连接成功后,更新系统并安装常用软件:
sudo apt update && sudo apt upgrade -y
sudo apt install -y vim git curl wget htop
部署Docker及Home Assistant与MQTT服务
在配置好的CM0上,我们可以利用Docker容器快速部署智能家居平台。
1. 安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# 退出并重新登录使权限生效
2. 部署Mosquitto MQTT Broker
创建MQTT服务的配置和数据目录:
sudo mkdir -pv /opt/mosquitto/{config,data,log}
创建配置文件 /opt/mosquitto/config/mosquitto.conf:
listener 1883 0.0.0.0
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
allow_anonymous false
password_file /mosquitto/config/password
运行Mosquitto容器:
sudo docker run -d --name=mosquitto --restart=always \
-p 1883:1883 -p 9001:9001 \
-v /opt/mosquitto/config:/mosquitto/config \
-v /opt/mosquitto/data:/mosquitto/data \
-v /opt/mosquitto/log:/mosquitto/log \
eclipse-mosquitto
设置MQTT用户密码:
sudo docker exec -it mosquitto sh
# 在容器内执行:
mosquitto_passwd -b /mosquitto/config/password 用户名 密码
exit
sudo docker restart mosquitto
3. 部署Home Assistant
Home Assistant是一个强大的开源家庭自动化平台。通过Docker容器化部署,可以快速搭建:
sudo docker run -d --name=homeassistant --restart=always \
-v /opt/homeassistant:/config \
--network=host \
ghcr.io/home-assistant/home-assistant:stable
部署完成后,在浏览器访问 http://[你的CM0 IP地址]:8123 即可完成Home Assistant的初始化设置。
4. 集成测试:在Home Assistant中添加MQTT并接收数据
- 在Home Assistant网页界面,“配置” -> “设备与服务”中添加“MQTT”集成,填入CM0的IP地址及刚才设置的用户名密码。
- 你可以在另一台设备(如另一台树莓派)上,使用Python脚本向
rpi5/cputemp 主题发布模拟的传感器数据。
- 在Home Assistant的
configuration.yaml 文件中添加MQTT传感器配置,即可在前端仪表盘看到实时更新的数据。
至此,你已经完成了树莓派CM0从开箱、系统烧录、基础配置到部署智能家居核心服务(Home Assistant + MQTT)的全过程。CM0以其小巧的形态和灵活的定制能力,非常适合作为智能家居网关、轻量级服务器或各种嵌入式项目的核心。