基于树莓派 CM4 设计的带 UPS 工业扩展模块,板载了千兆以太网、HDMI、USB 和 GPIO 等常用接口,支持通过 M.2 B KEY 外接 4G/5G 等无线通信模块,还扩展了 RS485、CAN 和 RTC 等工业接口资源。工业导轨外壳设计,非常适用于构建物联网网关、4G/5G 路由器、物联网数据采集,甚至将其用作工业自动化和控制系统中的可编程逻辑控制器等等。
1:禁止带电时拔插除USB和HDMI之外的任何设备
2:在连接前确认风扇电压,支持5V 和 12V 默认连接12V,切换请修改FAN_VCC的电阻
3:为了保证CM4供电正常,在使用Type C 接口烧录镜像时,请不要连接其他设备。
4:模块需要为其提供5V 2.5A /12V 1A或者更加高功率的供电。否则可能出现自动关机,降频等等问题。
5:首次接上电池有可能会没有电源输出,需要按一下UPS模块上的BOOT激活按键或者充一下电激活电池保护芯片才会有电源输出。UPS模块的电源开关需要拨到OFF的位置,CM4底板的开关拨到ON,即可使用。
6:USB2.0 默认是关闭的,如需打开需要在config.txt中添加 dtoverlay=dwc2,dr_mode=host
7:使用UPS单独供电时,电路不要超过2.5A,长时间工作在2.5A状态下会发热升温,注意散热。
8:外部供电必须大于整个系统用电,否则长时间没有足够电流给电池充电,电池电量越来越低直到关机。
9:当系统负载大而电池电压低时,有可能会出现电池电流不足而导致系统不断重启的情况。
10:电池比较牢固,拆卸需要搭配工具(螺丝刀),拆电池时切忌用螺丝刀撬电池正极容易导致短路,要撬电池负极。
CM4-IO-WIRELESS-BASE-B
Compute_Module 4 核心板
标号 | 名称 | 说明 | |
1 | CM4 连接器 | 适用于 Compute Module 4 的所有版本 | |
2 | HDMI 接口 | HDMI 接口,支持 4K 30fps 输出 | |
3 | USB 2.0 接口 | 3 路 2.0 接口,支持各种 USB 设备插入 | |
4 | RJ45 千兆网口 | RJ45 千兆网口,支持 10/100/1000M 网络接入 | |
5 | DC 供电接口 | 7 ~ 36V DC 供电接口 | |
6 | CM4 状态指示灯 | 红灯(PWR):树莓派电源指示灯 绿灯(ACT):树莓派工作状态指示灯 | |
7 | 4G/5G 模组状态灯 | 红灯(STA):模组使能指示灯 绿灯(NET):模组运行状态指示灯 | |
8 | PWR & USB 接口 | 5V DC 供电接口或者 USB 烧录接口 | |
9 | M.2 B KEY | 支持接入 4G/5G 或者其他 USB 通道的通信模块 | |
10 | Nano-SIM 卡座 | 可接入标准 Nano-SIM 卡,用于 4G/3G/2G 上网 | |
11 | BOOT 开关按钮 | ON:Compute Module 4 开机引导转移到 USB Type-C 接口上 OFF:Compute Module 4 开机引导为 eMMC 或者 Micro SD 卡 | |
12 | UPS 开关按钮 | ON:打开 UPS 给 CM4 供电 OFF:关闭 UPS 给 CM4 供电 | |
13 | DC 供电接口 | 7 ~ 36V DC 供电接口 | |
14 | 双路非隔离 RS485 接口 | 双路 RS485 接口,提供 600W 防雷、浪涌和 15KV 静电保护 (预留 120R 可选平衡电阻跳线帽) | |
15 | 非隔离 CAN 接口 | 防静电和瞬态尖峰电压 (预留 120R 可选平衡电阻跳线帽) | |
16 | Micro SD 卡接口 | 用于接入带系统的 Micro SD 卡,以启动 Compute Module 4 Lite | |
17 | FAN 供电选择 | 可选择 5V 或 12V 电压驱动风扇 | |
18 | CAM 接口 | MIPI CSI 摄像头接口 | |
19 | RTC 电池连接座 | 可接入 CR1220 纽扣电池 | |
20 | M.2 VCC 供电选择 | 选择 3.3V 或者 4.2V 供电 | |
RTC 中断管脚切换 | PI-RUN: RTC 触发中断 CM4 重启 GN-EN: RTC 触发中断 CM4 断电 D4: RTC 触发中断 D4 管脚 | ||
22 | IO-VREF 选择 | CM4 IO 逻辑电压切换 3.3V 或者 1.8V | |
23 | FAN 供电选择 | 可选择 12V (默认) 或 5V 电压驱动风扇 | |
24 | 系统功能切换 | BT_DIS: 蓝牙禁用,仅供带天线的 CM4 版本使用 WiFi_DIS: WiFi 禁用,仅供带天线的 CM4 版本使用 WP_DIS: 启动方式切换,仅供不使用 EMMC 启动或 SD 启动的情况下使用 | |
25 | RTC/FAN I2C 总线选择 | SDA0/SCL0: I2C-10 和 CSI/DSI 共用 GPIO3/2: I2C-1 和 40PIN 共用 | |
26 | 部分 GPIO 接口 | 包含一组 I2C 和 2 个 GPIO 以及电源 | |
27 | UPS Module Mini 接口 | 使用10440 3.7V 锂电池 |
禁止带电时拔插任何设备
默认关闭,如需打开需要在config.txt中添加内容:
sudo nano /boot/config.txt
dtoverlay=uart3 dtoverlay=uart5
设备号分别是
/dev/ttyAMA1 /dev/ttyAMA2
默认关闭,如需打开需要在config.txt中添加内容:
#打开编辑config.txt sudo nano /boot/config.txt #添加以下内容 dtparam=spi=on dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25 #重启 reboot
重启之后执行:
dmesg | grep spi0
sudo ip link set can0 up type can bitrate 1000000 sudo ifconfig can0 txqueuelen 65536 ifconfig
安装can-utils:
sudo apt-get install can-utils
接收数据
candump can0
发送数据
cansend can0 000#11.22.33.44 #其中11.22.33.44 是数据 #如果需要发送其他数据可以使用继续添加例如 # cansend can0 000#11.22.33.04.70 #不可以使用英文和中文,两位一码格式添加
板载M.2 B KEY 内部带有PCIE、USB2.0、GPIO、I2C、SPI接口
默认的只能连接 :
SIM7600G-H-M.2
SIM8202G-M2
SIM8200EA-M2
等M.2 B KEY 接口的模块
支持M.2 B KEY 接口的 NVME 2242 的SSD
板子本身不支持4G/5G,需要通过M.2 B KEY接口来接入模组,M.2 B KEY 只有USB2.0 通道
4G/5G 模组连接,然后在插入SIM卡
如果需要关闭4G/5G 模组,可以使用GPIO6 (BCM编码 6)控制,GPIO6输出高电平关闭模组,GPIO6输出低电平开启模组
关闭或者开启模需要一定时间(大约30秒),如果在开启前没有连接天线或者没有接入SIM卡
如果模组不能开机,可能是GPIO6 引脚被拉高了,请用以下指令拉低GPIO6引脚开机:
echo Exporting pin 6 echo 6 > /sys/class/gpio/export echo Setting direction to out. echo out > /sys/class/gpio/gpio6/direction echo Setting pin 0
M.2 状态灯状态描述:
STA | NET | 状态 |
---|---|---|
长亮 | 熄灭 | 关机 或者 正在开机 |
长亮 | 长亮 | 正在查找网络 |
长亮 | 闪烁 | 已联网,工作正常 |
熄灭 | 闪烁/长亮 | 正在关机 |
在配置前,请确认模块已经开机
5G 参考 [5G配置]
sudo apt-get install minicom sudo minicom -D /dev/ttyUSB2 #输入以下指令: AT+CUSBPIDSWITCH=9011,1,1 #返回OK 即可 #然后等待网卡重启 #此指令只需要设置一次,下次上电会默认在这个模式下 #如果无法获取USB0网卡执行: sudo dhclient -v usb0
RNDIS拨号上网请参考: RNDIS拨号上网
正常执行上面之后会识别到USB0网卡(如果你没有连接其他USB网卡)
如果你使用物联网卡,比如移动物联网卡,成功注册网络;但是拨号上网失败,无法ping通,可以尝试用以下AT指令的其中一条选择最优频段:
AT+CNBP=0x0002000000400183,0x000001E000000000,0x0000000000000021 AT+CNBP=0x0002000000400180,0x480000000000000000000000000000000000000000000042000001E200000095,0x0000000000000021
如果无法连接网络,可以通过指令AT检查状态
sudo apt-get install minicom sudo minicom -D /dev/ttyUSB2
下面AT指令4G/5G模组指令通用
命令 | 说明 | 返回值 |
---|---|---|
AT | AT测试指令 | OK |
ATE | ATE1设置回显 ATE0关闭回显 | OK |
AT+CGMI | 查询模组制造商 | OK |
AT+CGMM | 查询模组型号 | OK |
AT+CGSN | 查询产品序列号 | OK |
AT+CSUB | 查询模块版本以及芯片 | OK |
AT+CGMR | 查询固件版本序列号 | OK |
AT+IPREX | 设置模块硬件串口波特率 | +IPREX: OK |
AT+CRESET | 复位模块 | OK |
AT+CSQ | 网络信号质量查询,返回信号值 | +CSQ: 17,99 OK |
AT+CPIN? | 查询SIM卡状态,返回READY,表示SIM卡能正常识别 | +CPIN: READY |
AT+COPS? | 查询当前运营商,正常联网后会返回运营商信息 | +COPS: OK |
AT+CREG? | 查询网络注册状态 | +CREG: OK |
AT+CPSI? | 查询UE系统信息 | |
AT+CNMP | 网络模式选择命令: 2:Automatic 13:GSM only 38:LTE only 48 : Any modes but LTE ... .... | OK |
更多AT指令参考: AT_Command_V2.00
更多文档参考:SIMCom
使用树莓派系统(2021-05-07-raspios-buster-armhf-full )
注意 使用RTC禁止使用DSI和CSI
如果需要同时使用,将I2C切换到I2C1设备上(右边)
切换之后所有程序或者驱动全部需要修改
例程默认使用I2C10(左边)
如果需要简单使用,或者需要添加到你程序中,参考C和Python例程参考 [点这里]
下面是将驱动添加至内核中
sudo nano /boot/config.txt #在最后添加 dtparam=i2c_vc=on dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi #在dtparam=audio=on前面添加# 号 #dtparam=audio=on #保存退出,重启 sudo reboot
同步系统时钟 -> 硬件时钟
sudo hwclock -w
同步硬件时钟 -> 系统时钟
sudo hwclock -s #需要关闭网络,或者关闭网络对时,负责会被改回去
设置硬件时钟时间:
sudo hwclock --set --date="9/8/2021 16:45:05"
查看硬件时钟
sudo hwclock -r
显示版本信息
sudo hwclock --verbose
在上电的时候 风扇会转1秒,然后停止2秒,再转,这是正常现象
风扇目前没有官方的配置方法,有一个第三方配置方法:https://github.com/neg2led/cm4io-fan
此方法为第三方发布,不是官方发布,出现任何问题,概不负责!
mkdir -p ~/src cd ~/src git clone https://github.com/neg2led/cm4io-fan.git cd cm4io-fan sudo chmod 777 install.sh sudo ./install.sh #下面是对于config.txt的描述介绍 ############################# Name: cm4io-fan Info: Raspberry Pi Compute Module 4 IO Board fan controller Load: dtoverlay=cm4io-fan,<param>[=<val>] Params: minrpm RPM target for the fan when the SoC is below mintemp (default 3500) maxrpm RPM target for the fan when the SoC is above maxtemp (default 5500) midtemp Temperature (in millicelcius) at which the fan begins to speed up (default 50000) midtemp_hyst Temperature delta (in millicelcius) below mintemp at which the fan will drop to minrpm (default 2000) maxtemp Temperature (in millicelcius) at which the fan will be held at maxrpm (default 70000) maxtemp_hyst Temperature delta (in millicelcius) below maxtemp at which the fan begins to slow down (default 2000) ############################# 或者 直接参考如下: dtoverlay=cm4io-fan,minrpm=500,maxrpm=5000,midtemp=45000,midtemp_hyst=2000,maxtemp=50000,maxtemp_hyst=2000 温度高于45摄氏度开始加速,高于50摄氏度最高速
如果出现无法正常编译,请点击此处
CSI 和 DSI默认是关闭的,使用摄像头和DSI的时候会占用I2C-10、I2C-11、I2C-0 三个I2C设备
CM4-DUAL-ETH-4G/5G-BASE 的DSI接口是DSI1接口
开机执行如下:
sudo apt-get install p7zip-full wget https://www.waveshare.net/w/upload/4/41/CM4_dt_blob.7z 7z x CM4_dt_blob.7z -O./CM4_dt_blob sudo chmod 777 -R CM4_dt_blob cd CM4_dt_blob/ #如果使用两个摄像头和DSI0 执行 sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob-disp0-double_cam.dts #如果使用两个摄像头和DSI1 执行 sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob-disp1-double_cam.dts #在使用任意DSI时,HDMI1没有图像输出,哪怕你没有连接DSI屏幕只要编译的对应的文件,那HDMI1就没有输出了 #如果需要恢复,删除对应的dt-blob.bin 即可: sudo rm -rf /boot/dt-blob.bin #执行完毕 关闭电源 重启CM4
再连接摄像头和DSI屏幕:
1: 确保断电状态下连接
2: 使用CM-DSI-ADAPTER 转接板连接Compute Module 4 PoE Board和DSI屏幕
3: 使用CSI转接线转接板连接Compute Module 4 PoE Board和CSI摄像头
3: 连接电源
4: 等待几秒后屏幕启动
5: 如果无法启动,检查/boot/dt-blob.bin 是否存在,如果存在再次重启即可
6: 摄像头需要运行raspi-config,选择Interfacing Options->Camera->Yes->Finish-Yes,reboot系统,打开enable camera,然后重启即可保存修改。
参考
测试树莓派摄像头 查看接入的第一个摄像头画面:
sudo raspivid -t 0 -cs 0
查看接入的第二个摄像头画面:
sudo raspivid -t 0 -cs 1
sudo apt-get install p7zip wget https://www.waveshare.net/w/upload/5/59/CM4_UPS_Code.7z 7zr x CM4_UPS_Code.7z -r -o./ cd CM4_UPS_Code python3 INA219.py
注意:电流为正数则表示电池输出电流(可认为树莓派负载电流),如果电流为负数则表示电池充电电流。
当系统负载大而电池电压低时,有可能会出现电池电流不足而导致系统不断重启的情况。这个是不希望看到的。实际应用中可以通过判断电池电压过低自动关机避免。
示例程序中已经添加电池电压判断,电池电压过低而没有外接电源充电时,程序会60s内关闭系统。
程序显示如下语句表示电池电压过低,需要及时充电,否则程序会自动关机。
Voltage Low,please charge in time,otherwise it will shut down in 58 s
如果需要使用摄像头或者DSI屏幕,建议将INA219 的I2C管脚切换到GPIO2/3 切换之后程序中修改:
#ina219 = INA219(i2c_bus=10,addr=0x43) ina219 = INA219(i2c_bus=1,addr=0x43)