CM4-Duino
| |||||||||||||||||||
| |||||||||||||||||||
说明
产品概述
我是CM4 duino 基础扩展板,是可以搭配树莓派 Compute Module 4 使用的拓展板,支持Typc-C 接口的 5V DC 直流供电。板载HDMI接口 、一路CSI接口和一路USB接口、标准arduino接口等等……
使用注意事项
1:禁止带电时拔插除USB和HDMI之外的任何设备
2:Type C 接口可以用作供电也可以用作USB接口烧录镜像(需要使用拨码开关切换)
3:为了保证CM4供电正常,在使用Type C 接口烧录镜像时,请不要连接其他设备。
4:CM4在正常使用时,需要为CM4 提供5V 2A 的供电。否则可能出现自动关机,降频等等问题。
5:USB2.0 默认是关闭的,如需打开需要在config.txt中添加 dtoverlay=dwc2,dr_mode=host
产品尺寸
CM4-Duino
Compute_Module 4 核心板
板载资源
标号 | 名称 | 说明 |
1 | 供电/烧录接口 | 5V/2A 供电,也可以作为 eMMC 烧录接口 |
2 | USB 2.0 接口 | USB 2.0 接口,支持各种 USB 设备插入 |
3 | HDMI 接口 | HDMI 接口,支持 4K 30fps 输出 |
4 | BOOT 开关按钮 | ON:Compute Module 4 开机引导转移到 USB Type-C 接口上 OFF:Compute Module 4 开机引导为 eMMC 或者 Micro SD 卡 |
5 | CM4 连接器 | 适用于 Compute Module 4 的所有版本 |
6 | CAM 接口 | MIPI CSI 摄像头接口 |
7 | 用户LED | LED一闪一闪亮晶晶 |
8 | ADC芯片 | 8位ADC、I2C接口、8通道ADC芯片ADS7830 |
9 | 用户按键 | 按键模块 |
10 | GPIO | Arduino接口GPIO |
11 | 功能切换 | 详情参考功能管脚描述 |
12 | M.2接口 | 支持NVME SSD 固态或者其他 PCIE 通道的模块 |
13 | Micro SD 卡接口 | 用于接入带系统的 Micro SD 卡,以启动 Compute Module 4 Lite |
使用
注意事项
禁止带电时拔插任何设备
镜像烧录
USB 2.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的)。
ADC
基础介绍
ADS7830 是一款单电源、低功耗、8 位数据采集设备,具有串行 I2C 接口和 8 通道多路复用器。模数 (A/D) 转换器具有采样保持放大器和内部异步时钟。
ADS7830分辨率为8位,总共8路输入,最大采样率为70KSPS。
可以设为差分模式和单端输入,程序默认设置为单端输入。
I2C地址为:0x48
下载程序
打开树莓派终端,执行如下指令:
sudo apt-get install p7zip-full https://www.waveshare.net/w/upload/5/5d/CM4-duino-code.zip unzip -o CM4-duino-code.zip -d ./CM4-duino-code cd CM4-duino-code
Python
运行例程,程序支持python2/3
# python2 sudo python ADS7830.py # python3 sudo python3 ADS7830.py
如下图所示,A0-A7为7个模拟输入通道:
注意:采集0-7共8路ADC,通道如果悬空,该通道的值会上下浮动,数据是无效的;
LED使用
按键使用
板载了2个按键USER1 USER2:
USER1使用的是GPIO4,USER使用的是GPIO5,其中USER2可以通过电阻选择是否为CM4的复位,默认连接的GPIO5
功能管脚描述
标号 | 名称 | 说明 |
1 | BT-DIS | 禁用蓝牙,仅支持带无线模块的核心板 |
2 | WIFI-DIS | 禁用WIFI,仅支持带无线模块的核心板 |
3 | IO-VREF | IO 逻辑电压选择 |
4 | RUN/GL-EN | 重置或者关闭CM4 |
5 | CFG | CFG管脚功能选择3.3V 或者 A6 |
6 | USER | 用户按键 功能选择,D5 或者 RST |
7 | I2C ADDR | ADC功能模块I2C地址选择,默认地址:0x48 |
CSI
注意:以下为CM4通用说明,具体设备有所不同:本模块没有DSI接口,且只有HDMI0,和CSI0
配置文件
CSI 和 DSI默认是关闭的,使用摄像头和DSI的时候会占用I2C-10、I2C-11、I2C-0 三个I2C设备
开机执行如下:
wget https://www.waveshare.net/w/upload/7/75/CM4_dt_blob_Source.zip unzip -o CM4_dt_blob_Source.zip -d ./CM4_dt_blob_Source sudo chmod 777 -R CM4_dt_blob_Source cd CM4_dt_blob_Source/ #如果使用两个摄像头和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: 连接电源
3: 等待几秒后屏幕启动
4: 如果无法启动,检查/boot/dt-blob.bin 是否存在,如果存在再次重启即可。
旧版本(Buster)
摄像头需要运行raspi-config,选择Interfacing Options->Camera->Yes->Finish-Yes,reboot系统,打开enable camera,然后重启即可保存修改。
测试树莓派摄像头
查看接入的第一个摄像头画面:
sudo raspivid -t 0 -cs 0
查看接入的第二个摄像头画面:
sudo raspivid -t 0 -cs 1
新版本(Bullseye)
如果使用最新的树莓派OS(Bullseye):
#新系统使用双摄像头 #在config.txt中移除camera_auto_detect=1 #camera_auto_detect=1 #添加 dtoverlay=imx219,cam1 dtoverlay=imx219,cam0 #其中imx219是摄像头传感器型号,还有支持其他传感器 dtoverlay=ov5647,cam0 dtoverlay=imx219,cam0 dtoverlay=ov9281,cam0 dtoverlay=imx477,cam0 dtoverlay=imx519,cam0 #然后重启 reboot #打开摄像头 libcamera-hello -t 0 或者 libcamera-hello #其他部分指令: #检查摄像头是否被检测到 libcamera-hello --list-cameras #打开对应的摄像头,预览5秒 libcamera-hello --camera 1 libcamera-hello --camera 0 #拍摄照片 libcamera-jpeg -o test.jpg #拍摄视频 libcamera-vid -t 10000 -o test.h264 #可以添加 --camera 来指定摄像头 #-t <duration> 选项允许用户选择窗口显示多长时间,单位毫秒
更多指令点击我
- 注意:如果使用 DSI 接口显示将会有一个HDMI是禁用的,即使只是编译相应的文件而不连接 DSI 屏幕。
- 两个HDMI任意连接一个是可以输出图像,不限于那个HDMI,如果连接的两个HDMI屏幕那么只有HDMI0有图像输出
- 如果要启用 两个HDMI,请使用以下命令删除 dt-blob.bin 文件:
sudo rm -rf /boot/dt-blob.bin
- 然后重启即可
参考树莓派手册
资料
提供文档、程序、数据手册等全套资料
官方手册
原理图
3D图
程序
软件
相关链接