Compute Module 4 PoE 4G Board

来自Waveshare Wiki
跳转至: 导航搜索
Compute Module 4 PoE 4G Board
{{{name2}}}
{{{name3}}}
板载接口
DSI CSI HDMI USB 2.0
I2C SPI POE RPi
Ethernet FAN

说明

产品概述

Compute Module 4 PoE 4G Board是一款可以搭配树莓派 Compute Module 4 使用的底板,并且支持7~12V DC供电,板载RS232/485、CAN、ADC、GPIO等工业接口,板载USB2.0、PCIE、HDMI等接口,支持全球通 5G/4G/3G/2G 蜂窝、PoE 以太网等网络通信,方便用户使用。

使用注意事项

1:禁止带电时拔插除USB和HDMI之外的任何设备
2:在连接前确认风扇电压,支持5V 和 12V 默认连接12V,切换请修改FAN_VCC的跳线帽
3:USB SLAVE 的Type C 接口仅用于烧录镜像,不可以用做供电。
4:为了保证CM4供电正常,在使用Type C 接口烧录镜像时,请不要连接其他设备。
5:CM4在正常使用时,需要为其提供12V 2A 或者更高功率的供电。否则可能出现自动关机,降频等等问题。
6:M.2 接口仅用于4G/5G模组连接,不支持固态等其他设备
7:USB2.0 默认是关闭的,如需打开需要在config.txt中添加 dtoverlay=dwc2,dr_mode=host
8:使用POE功能时,注意查看交换机是否支持802.3af 网络标准的 PoE。
9:需要使用POE时,将POE跳线帽连接到EN位置。
10:两个DISP接口默认无法一起使用。
11:由于芯片短缺, 此扩展板存在多个版本, 功能差异不大, 有疑问可以联系售后

产品尺寸

Compute Module 4 PoE 4G Board
Compute-Module-4-PoE-4G-Board-details-size.jpg

SIM7600G-H-M.2
SIM7600G-H-M.2-details-size.png

Compute_Module 4 核心板
Compute Module 4 IO Board 5.png

板载资源

Compute-Module-4-PoE-4G-Board-details-intro1.jpg
Compute-Module-4-PoE-4G-Board-details-intro2.jpg

标号 名称 说明
1 CM4 连接器 适用于 Compute Module 4 的所有版本
2 供电接口 7~36V 宽电压供电
3 CM4 状态 LED 灯座 红灯:树莓派电源指示灯
绿灯:树莓派工作状态指示灯
4 M.2 状态 LED 灯座 红灯:使能指示灯
绿灯:工作状态指示灯
5 用户 LED 便于 I/O 输出测试或显示程序运行状态
6 USB TO UART 接口 方便进行串口调试
7 HDMI 接口 双路 HDMI 接口,支持双 4K 30fps 输出
8 USB2.0 接口 双路 USB 2.0 接口,支持各种 USB 设备插入
9 RJ45 千兆网口 带 PoE 供电功能的千兆网口,支持 10/100/1000M 网络接入
10 M.2 接口 支持M.2 B KEY 4G 模组接入
11 SIM 卡槽 可接入标准 SIM 卡,用于 4G/3G/2G 上网
12 RTC 电池座 可接入 CR1220 纽扣电池给 RTC 供电
13 PCIe Gen 2 × 1 接口 支持 PCIe Gen 2 × 1 接口部分的模块
14 FAN 接口 方便接入散热风扇,支持调速和测速
15 蜂鸣器 有源蜂鸣器 嘀嘀嘀
16 DISP 双路 MIPI DSI 显示接口
17 CAM 双路 MIPI CSI 摄像头接口
18 隔离 GPIO 可通过 GPIO 控制或检测设备
19 隔离 I2C 可通过 I2C 控制或读取设备
20 隔离 ADC ADC 差分输入
21 隔离 CAN 接口 可通过 CAN 接口通信
22 隔离 RS485 接口 可通过 RS485 接口通信
23 隔离 RS232 接口 可通过 RS232 接口通信
24 Micro SD 卡接口(背面) 用于接入带系统的 Micro SD 卡,以启动 Compute Module 4 Lite
25 USB Type-C 烧录接口(背面) Compute Module 4 eMMC 版本可通过此接口烧录系统镜像

注意事项

禁止带电时拔插任何设备
以下所有内容全部在树莓派OS 上测试,不支持其他任何系统

镜像烧录

EMMC版本点击这里
LITE版本点击这里

USB2.0

USB接口在CM4上默认是被禁用的,以节省电源。如果需要启动,你需要在config.txt文件中添加以下内容:

dtoverlay=dwc2,dr_mode=host

重启之后即可

如果使用最新的树莓派OS(2021年10月30号之后的镜像)USB2.0是默认是OTG模式,CM4会报错:

config failed, hub doesn't have any ports! (err -19)

不过USB还是可以使用的,如果想移除这个错误,在config.txt的[cm4]中移除otg_mode=1,并且添加dtoverlay=dwc2,dr_mode=host(不添加是无法识别USB的)。
CM4 Burn EMMC 12.png

使用前准备

例程下载

打开树莓派终端,执行如下指令:

sudo wget https://www.waveshare.net/w/upload/b/ba/Compute_Module_4_PoE_4G_Board_Code.zip
unzip -o  Compute_Module_4_PoE_4G_Board_Code.zip -d ./Compute_Module_4_PoE_4G_Board_Code
sudo chmod 777 -R Compute_Module_4_PoE_4G_Board_Code
cd Compute_Module_4_PoE_4G_Board_Code

安装库

所有库根据你需求安装,需要使用到那个就安装那个,不必全部安装
如果只是测试功能可以不安装任何库,直接使用C程序,我们C程序默认不需要安装任何库
随各个版本的更新可能存在部分软件不兼容,或者运行报错,如果出现这个问题,可以反馈给我们

  • 安装BCM2835,打开树莓派终端,并运行下指令( 不建议使用
#有疑问可以访问 http://www.airspayce.com/mikem/bcm2835/
#出现任何其他问题可以在上链接中反馈,请不要直接联系作者
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.68.tar.gz
tar zxvf bcm2835-1.68.tar.gz 
cd bcm2835-1.68/
sudo ./configure
sudo make
sudo make check
sudo make install
  • 安装wiringpi
#WiringPi官方不支持CM4,不过可以安装非官方版本,由于此版本不是官方版本
#此版本仅适用于CM4
#出现任何其他问题可以在github上反馈,请不要直接联系作者
git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi/
./build
#执行gpio -v 出现版本号为2.6或者更高即可


  • 安装Python函数库
#python2
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-pil
sudo apt-get install python-numpy
sudo pip install RPi.GPIO
sudo pip install spidev
sudo pip2 install python-can
#python3
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev 
sudo pip3 install python-can

开启I2C接口

  • 在终端执行:
sudo raspi-config 
#选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动

2591树莓派.png

  • 然后重启树莓派
sudo reboot



USB TO UART

UART默认连接CM4,和CM4的 GPIO14(BCM)、 GPIO15(BCM)管脚连接
当开始串口调试时,可以直接通过此接口连接电脑,来登录CM4
Compute Module 4 PoE 4G Board 6.png
也可以通过此接口供电,不过默认是不可以供电的,如果需要通过此接口供电,请连接接口上面的的电阻(0R)


蜂鸣器/LED

蜂鸣器

蜂鸣器连接GPIO22(BCM编码 22),低电平使能
Compute Module 4 PoE 4G Board 4.png

LED

用户连接绿色GPIO20(BCM)和红色GPIO26(BCM) , 低电平亮
Compute Module 4 PoE 4G Board 5.png

【预期结果】

两个用户LED交替闪烁
LED变化一次,蜂鸣器响一次

【python例程】

cd LED_BUZZER/python/
sudo python main.py

【C例程】

cd LED_BUZZER/c/
make clean
sudo make
sudo ./main



4G/5G

板子本身不支持4G/5G,需要通过M.2 B KEY接口来接入模组,M.2 B KEY 只有USB2.0 通道,不支持PCIE设备
Compute Module 4 PoE 4G Board 3.png
4G/5G 模组连接,然后在插入SIM卡
默认支持4G模组功能,5G模组部分功能不支持
5G 参考 [5G配置]

如果需要关闭4G 模组,可以使用GPIO6 (BCM编码 6)控制,GPIO6输出高电平关闭模组,GPIO6输出低电平开启模组
关闭或者开启模需要一定时间(大约30秒)
在下载的例程中有一个M_2_PWR 脚本,可以执行

sudo ./M_2_PWR 0
#打开模组
sudo ./M_2_PWR 1
#关闭模组

打开模组

5G模组不受使能管脚控

SIM7600 M.2 网卡

M.2 状态灯状态描述:

STA NET 状态
长亮 熄灭 关机 或者 正在开机
长亮 长亮 正在查找网络
长亮 闪烁 已联网,工作正常
熄灭 闪烁/长亮 正在关机

在配置前,请确认 4G 模块已经开机

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指令

如果无法连接网络,可以通过指令AT检查状态

sudo apt-get install minicom
sudo minicom -D /dev/ttyUSB2

常用AT指令

命令 说明 返回值
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

PCIE

PCIE接口为 PCIE 2.0 X1 接口,最大速度是500Mb/s
支持大多数PCIE x1 的卡,市面上许多的PCIEx1 设备卡,默认树莓派系统是不支持的,因为树莓派linux 内部没有添加驱动
在使用前先参考CM4支持设备测试
树莓派 [内核编译]


隔离GPIO/I2C

隔离GPIO输出为GPIO17 (BCM)和 GPIO27(BCM)
隔离GPIO输入为GPIO23 (BCM)和 GPIO24(BCM)
Compute Module 4 PoE 4G Board 8.png

隔离IO的逻辑电压设置
Compute Module 4 PoE 4G Board 10.pngCompute Module 4 PoE 4G Board 9.png

隔离I2C为GPIO2/3(BCM),I2C设备号I2C1,
Compute Module 4 PoE 4G Board 7.png


【预期结果】

两个OUT 交替输出高和低电平
读取两个IN 的电平状态

【python例程】

cd IO/python
sudo python main.py

【C例程】

cd IO/c
make clean
sudo make
sudo ./main



隔离ADC

隔离ADC挂载在隔离I2C上, I2C地址为0x48
I2C默认关闭,开启I2C参考 开启I2C 章节

C

cd ADC/c/
sudo ./main 

python

cd ADC/python/
sudo python examples/main.py
  • 执行指令运行程序

预期结果

输出电压值

注意:ADC方案使用ADS1113芯片。内部自带基准电压2.048V,差分输入,输入电压范围:±2.048V



CAN

默认关闭,如需打开需要在config.txt中添加内容:

#打开编辑config.txt
sudo nano /boot/config.txt
#添加以下内容
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
#重启
reboot 

重启之后执行:

dmesg | grep spi0

Compute Module 4 PoE 4G Board 1.png
执行:

sudo ip link set can0 up type can bitrate 1000000
sudo ifconfig can0 txqueuelen 65536
ifconfig

Compute Module 4 PoE 4G Board 2.png

出现can0 设备号说明驱动成功

测试

安装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
#不可以使用英文和中文,两位一码格式添加

例程

【Python例程】

  • 进入对应的目录:
  • 接收端运行receive.py:
sudo python reveive.py
  • 发送端运行send.py:
sudo python send.py

本例程是基于python平台,确保以及安装了python-can库
在发送之前要先创建一个can设备,因为前面只是启用MCP2515内核:

os.system('sudo ip link set can0 type can bitrate 100000')
os.system('sudo ifconfig can0 up')
  • 第一步:连接到CAN总线
can0 = can.interface.Bus(channel = 'can0', bustyp = 'socketcan_ctypes')
  • 第二步:创建信息
msg = can.Message(arbitration_id=0x123, data=[0, 1, 2, 3, 4, 5, 6, 7], extended_id=False)
  • 第三步:发送信息
can0.send(msg)
  • 最后同样要关闭can设备
os.system('sudo ifconfig can0 down')
  • 接收数据:
msg = can0.recv(10.0)

recv()中定义超时接收时间。
更多请参考:https://python-can.readthedocs.io/en/stable/interfaces/socketcan.html

【C例程】

  • 阻塞接收,树莓派打开终端,运行:
cd CAN/c/receive/
make clean
sudo make
sudo ./can_receive
  • 发送,树莓派打开终端,运行:
cd CAN/c/receive/
make clean
sudo make
sudo ./can_send



RS485/232

新系统(bookworm)

打开需要在 /boot/firmware/config.txt中添加内容:

dtoverlay=uart3
dtoverlay=uart5
reboot 
ls /dev/ttyAMA*


RS232占用GPIO5/GPIO4(BCM编码4/5),设备号ttyAMA3
RS485占用GPIO13/GPIO12(BCM编码13/12),设备号ttyAMA5


老版本系统(buster)

打开需要在config.txt中添加内容:
sudo nano /boot/config.txt

dtoverlay=uart3
dtoverlay=uart5
reboot 
ls /dev/ttyAMA*


RS232占用GPIO5/GPIO4(BCM编码4/5),设备号ttyAMA1
RS485占用GPIO13/GPIO12(BCM编码13/12),设备号ttyAMA2


如果是bullseye可能两种情况都有建议根据实际情况来选择对应的设备号

测试

sudo apt-get install minicom
# RS232
sudo minicom -D /dev/ttyAMA1
#RS485
sudo minicom -D /dev/ttyAMA2

RTC FAN

  • 注意事项:请在接通拓展板电源前接上风扇再完成测试,请不要在拓展板已通电即风扇控制芯片已经通电之后再接上风扇,否则会烧掉芯片!
  • 注意事项:连接前请确认风扇电压和实际上连接的风扇供电

以下测试使用树莓派系统(2021-05-07-raspios-buster-armhf-full )
注意:使用RTC禁止使用DSI和CSI
如果需要同时使用,将I2C切换到I2C1设备上(右边)
Compute Module 4 PoE 4G Board 11.png
切换之后所有程序或者驱动全部需要修改
例程默认使用I2C10(左边)

如果需要简单使用,或者需要添加到你程序中而不是内核中,参考C和Python例程[点这里]

RTC

sudo nano /boot/config.txt
#在最后添加
dtparam=i2c_vc=on
dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi
#在dtparam=audio=on前面添加# 号
#dtparam=audio=on
#保存退出,重启
sudo reboot

Hwclock简单使用

同步系统时钟 -> 硬件时钟

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

配置文件

  • CSI和DSI默认是关闭的,需要加载对应设备树用于开启,并且使用CSI摄像头与DSI屏幕的时候会占用I2C-10、I2C-11、I2C-0 三个I2C设备
  • 输入一下指令:
sudo apt-get install p7zip-full -y
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/
#如果使用两个摄像头和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

新版本系统(bullseye)

配置摄像头

  1. 执行如下命令进入编辑/boot/config.txt文件
    sudo nano /boot/config.txt
  2. 屏蔽或者删除掉摄像头自动检测语句
    CM4-NANO-B-CSI-00.png
  3. 添加你使用的摄像头的驱动动,这里我以IMX219为例,并且连接上CAM0上,附上适配CM4-NANO-B-CSI-02.png

    型号 CAM0设置语句 CAM1设置语句
    OV9281 dtoverlay=ov9281,cam0 dtoverlay=ov9281,cam1
    IMX290/IMX327 dtoverlay=imx290,clock-frequency=37125000,cam0 dtoverlay=imx290,clock-frequency=37125000,cam1
    IMX378 dtoverlay=imx378,cam0 dtoverlay=imx378,cam1
    IMX219 dtoverlay=imx219,cam0 dtoverlay=imx219,cam1
    IMX477 dtoverlay=imx477,cam0 dtoverlay=imx477,cam1
    IMX708 dtoverlay=imx708,cam0 dtoverlay=imx708,cam1
    • 如果使用的是树莓派官方摄像头,且只有一个摄像头接入,无需设置config文件,如果不是官方摄像头,请设置dtoverlay语句,不需要加cam后缀
    • CM4-NANO-只用到CAM0,所以只需要添加一句 dtoverlay=imx219,cam0 即可
  4. 快捷键Ctrl+o保存文件,并回车
    CM4-NANO-B-CSI-03.png
  5. 快捷键Ctrl+x退出编辑器
  6. 重启CM4
    sudo reboot
  7. 测试摄像头

    1. 输入摄像头检测指令,此时可以看到摄像头已经被检查到了
      libcamera-hello --list-cameras

      CM4-NANO-B-CSI-01.png
    2. 显示摄像头画面到桌面
      libcamera-hello -t 0
    3. 拍摄照片
      libcamera-jpeg -o test.jpg
    4. 录制一个10s的视频
      libcamera-vid -t 10000 -o test.h264

    其他命令
    检查摄像头是否被检测到

    libcamera-hello --list-cameras
    

    打开对应的摄像头

    libcamera-hello  --camera 1
    libcamera-hello  --camera 0
    

    拍摄照片

    libcamera-jpeg -o test.jpg
    #可以添加 --camera 来指定摄像头
    

    老版本系统(buster)

    配置摄像头

    1. 执行如下命令进入树莓派配置
      sudo raspi-config
    2. 选择Interfacing Options并进入
      Serial-Open-1.png
    3. 选择Camera
      Camera-Open-2.png
    4. 选择开启摄像头接口
      Camera-Open-3.png
    5. 系统提示如下
      Camera-Open-4.png
    6. 回到主界面,选择Finish
      Camera-Open-5.png
    7. 随后重启系统
      Serial-Open-6.png

    测试摄像头

    • 测试拍照:
       raspistill -o image.jpg
    • 测试录像:
       raspivid -o video.h264 -t 10000
      • 其中 -t 10000 表示录制 10 秒,用户各根据自己的需要进行调整。

    参考:CSI相机

资料


官方手册

CM4核心板数据手册

原理图

3D图

程序

软件

相关链接

树莓派入门教程(新)
树莓派入门教程
树莓派OpenCV教程
树莓派littleGL系列教程
树莓派QT教程
树莓派OpenWrt教程


FAQ

a) 检查 /boot/config.txt中是否屏蔽 dtparam -audio - on
b) 检查/boot/dt-blob.bin 文件是否存在,如果存在无法使用,请删除;


售后


联系人:彭工
EMAIL:2851966006@qq.com
电话:0755-83040712
QQ:2851966006
微信:扫下方二维码添加
Pqy.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证