4 软件操作指引
4.1 查找设备IP
4.2 远程登录
4.3 配置存储设备
4.4 配置以太网 IP
4.5 配置Wi-Fi (可选)
4.6 配置蓝牙 (可选)
4.7 配置4G(可选)
用户可选配带4G版本的设备,在使用4G网络之前需要先进行相关配置。
4.7.1 使用Network Manager工具配置
连接到4G网络需要先创建gsm网络连接,以下按照不同配置需求创建连接
- 无需配置APN的场景
sudo nmcli connection add type gsm con-name <connection_name>
例如创建一个名为mobilegsm的gsm网络
sudo nmcli connection add type gsm con-name mobilegsm
- 需要配置APN的场景
sudo nmcli connection add type gsm con-name <connection_name> ifname cdc-wdm0 gsm.apn "cmnet"
- 需配置用户名密码的场景
sudo nmcli connection add type gsm con-name <连接名称自定义> ifname cdc-wdm0 gsm.number "#777" gsm.username "ctnet@mycdma.cn" gsm.password "vnet.mobi"
- 移动/联通/电信一般使用第一种方法(无需配置APN的场景)即可拨号成功,如果发现问题也可以尝试如下命令。
# 中国移动
sudo nmcli connection add type gsm con-name "mobile" ifname cdc-wdm0 gsm.number "*98*1#" gsm.apn "cmnet"
# 中国联通
sudo nmcli connection add type gsm con-name "Unicom" ifname cdc-wdm0 gsm.number "*99#" gsm.apn "3gnet"
# 中国电信
sudo nmcli connection add type gsm con-name "Telecom" ifname cdc-wdm0 gsm.number "#777" gsm.username "ctnet@mycdma.cn" gsm.password "vnet.mobi"
4.7.2 使用dhcpcd工具配置
在使用4G之前首先需要添加我司APT库,我司给出的镜像均已添加此库,用户无需再手动添加。
sudo apt update
sudo apt install ed-ec20-qmi
默认不启动自动拨号,如果用户希望开机自动拨号则需要使能lte-reconnect.service服务
sudo systemctl enable lte-reconnect.service
sudo systemctl start lte-reconnect.service
拨号成功后可以使用ifconfig命令查看wwan0网口。
如果需要额外设置APN,则需要修改/usr/share/ed-ec20-qmi/lte-reconnect.sh中的拨号命令$BSP_HOME_PATH/quectel-CM -4 -f $LOGFILE &
其中quectel-CM拨号配置信息如下:
$BSP_HOME_PATH/quectel-CM -4 -f $LOGFILE -s <APN> &
设置完成后重启lte-reconnect.service
sudo systemctl restart lte-reconnect.service
4.8 RTC
ED-CM4IND内置RTC,对于国内销售的版本,我们出货会默认附带安装CR1220纽扣电池(RTC备份电源)。这样,可以保障系统有一个不间断的可靠的时钟,不受设备下电等因素影响。
默认出货系统镜像,会集成我们编写的RTC自动同步服务,客人无需设置,即可自动同步时钟,可无感使用RTC。大概的原理是:
- 系统开机时,服务自动从RTC读出保存的时间,并同步到系统时间。
- 若有连接互联网,系统会自动从NTP服务器同步时间, 使用互联网时间更新本地系统时间。
- 系统关机时,服务自动把系统时间写入RTC, 更新RTC的时间。
- 因为有安装纽扣电池,尽管CM4 Industria系列下电,但是RTC仍在工作计时。
这样,可以保证我们的时间是准确可靠的。
注意
若是第一次开机,因为RTC中无有效时间,可能会同步失败,直接重启即可。重启的时候,会把系统时间写入RTC,后续正常使用。
若您不想用此服务, 可手动关闭:
sudo systemctl disable rtc
sudo reboot
重新使能此服务:
sudo systemctl enable rtc
sudo reboot
手动读取RTC的时间:
sudo hwclock -r2022-11-09 07:07:30.478488+00:00
手动同步RTC时间到系统:
sudo hwclock -s
把系统时间写入RTC:
sudo hwclock -w
4.9 User按键
用户自定义按键在外壳上的丝印为User,连接到CM4芯片的GPIO6管脚,默认状态下为高电平,当按键按下时,该管脚为低电平。
我们使用raspi-gpio命令进行测试,按键未按下时查询GPIO6管脚
raspi-gpio get 6
GPIO 6: level=1 fsel=0 func=INPUT pull=UP
level为1表示GPIO6管脚为高电平。
按键按下时,查询GPIO6管脚
raspi-gpio get 6
GPIO 6: level=0 fsel=0 func=INPUT pull=UP
level为0表示GPIO6管脚为低电平。
4.10 Buzzer
蜂鸣器使用GPIO6来控制。
打开蜂鸣器:
raspi-gpio set 6 op dh
关闭蜂鸣器:
raspi-gpio set 6 op dl
4.11 SPI Flash
ED-CM4IND通过SPI扩展了一片SPI Flash, 存储容量为4MB, 用户存储数据。在Linux上, 串行Flash被识别为MTD(Memory Technology Device)设备, ED-CM4IND上的Flash的设备文件是/dev/mtd0。
提示
MTD设备与我们常见的块设备(Block)如硬盘, SD Card, U-Disk, eMMC不同。典型的区别,MTD设备要进行Erase操作,而Erase的Sector通常大于写单元的Page。而Block设备通常有设备硬件处理,在Host端不太区别写和擦除。我们通常使用JFFS2文件系统来管理MTD设备,而不是ext4。
安装mtd-utils工具管理Flash设备
sudo apt update
sudo apt install mtd-utils
第一次使用, 或者您需要'格式化', 请Erase整片Flash设备
sudo flash_erase /dev/mtd0 0 0
以JFFS2类型挂载, 读写
sudo mount -t jffs2 /dev/mtd0 /mnt
挂载后, 您就可以对/mnt目录读写来读写Flash设备了。
4.12 串口通信
4.12.1 安装picocom 工具
在Linux环境下,可以通过picocom工具对串口RS232和RS485进行调试。
执行如下命令,安装picocom工具。
sudo apt-get install picocom
您可以先键入Ctrl+a,然后键入Ctrl+h以查看可用命令。
*** Picocom commands (all prefixed by [C-a])
*** [C-x] : Exit picocom
*** [C-q] : Exit without reseting serial port
*** [C-b] : Set baudrate
*** [C-u] : Increase baudrate (baud-up)
*** [C-d] : Decrease baudrate (baud-down)
*** [C-i] : Change number of databits
*** [C-j] : Change number of stopbits
*** [C-f] : Change flow-control mode
*** [C-y] : Change parity mode
*** [C-p] : Pulse DTR
*** [C-t] : Toggle DTR
*** [C-g] : Toggle RTS
*** [C-|] : Send break
*** [C-c] : Toggle local echo
*** [C-w] : Write hex
*** [C-s] : Send file
*** [C-r] : Receive file
*** [C-v] : Show port settings
*** [C-h] : Show this message
先键入Ctrl+a,然后键入Ctrl+c以切换本地回显模式。
先键入Ctrl+a,然后键入Ctrl+q即可退出picocom。
4.12.2 配置 RS232
ED-CM4IND包含1路RS232接口,其对应的COM口和设备文件,具体如下表:
| RS232接口 | 对应设备文件 |
|---|---|
| RS232 | /dev/ttyAMA3 |
前提条件:
已完成ED-CM4IND的RS232端口与外部设备的连接。
操作步骤:
- 执行如下命令打开串口,并配置串口波特率为115200。
picocom -b 115200 /dev/ttyAMA3
- 按需输入命令来控制外部设备。
4.12.3 配置 RS485
ED-CM4IND包含2路RS485接口,其对应的COM口和设备文件,具体如下表:
| RS485接口 | 对应设备文件 |
|---|---|
| RS485-1 | /dev/ttyAMA2 |
| RS485-2 | /dev/ttyAMA1 |
前提条件:
已完成ED-CM4IND的RS485端口与外部设备的连接。
操作步骤:
- 执行如下命令打开串口RS485-2,并配置串口波特率为115200。
picocom -b 115200 /dev/ttyAMA1
- 按需输入命令来控制外部设备。
4.12.4 Debug UART
调试串口接口丝印为J58,丝印名称UART0,为TTL电平串口。
要启用调试串口,需要修改config.txt配置文件。
sudo nano /boot/config.txt
在文件最后面添加如下内容
[all]
enable_uart=1
调试串口默认波特率为115200,您可以通过cmdline.txt文件查看当前调试串口波特率。
sudo nano /boot/cmdline.txt
4.13 ADC
ED-CM4IND包含3路ADC通道,以下以AIN1为例,演示如何读取:
cd /sys/bus/iio/devices
cd iio\:device0
cat in_voltage1_raw
4.14 DI
ED-CM4IND包含2路DI,与CM4的GPIO11和GPIO26连接。设备默认接线方法为湿接点(有源)接线,DIN+接外部电源正极,DIN-接外部电源负极。
DIN1对应GPIO11,使用raspi-gpio命令查看GPIO11管脚状态
raspi-gpio get 11
- 当
DIN1+与DIN1-断开时:
GPIO 11: level=1 fsel=0 func=INPUT pull=DOWN
- 当
DIN1+与DIN1-闭合时:
GPIO 11: level=0 fsel=0 func=INPUT pull=DOWN
DIN2对应GPIO26,使用raspi-gpio命令查看GPIO26管脚状态
raspi-gpio get 26
- 当
DIN2+与DIN2-断开时:
GPIO 26: level=1 fsel=0 func=INPUT pull=DOWN
- 当
DIN2+与DIN2-闭合时:
GPIO 26: level=0 fsel=0 func=INPUT pull=DOWN
4.15 Realy
ED-CM4IND板载一个双刀双掷继电器,由GPIO22引脚的高低电平控制该继电器的开关,默认状态下为常闭,COM1和NC1导通,COM2和NC2导通。当GPIO22为高电平时,继电器打开,COM1和NO1导通,COM2和NO2导通。
- 打开继电器
sudo raspi-gpio set 22 op dh
op表示设置为输出,dh表示管脚为高电平。
- 闭合
sudo raspi-gpio set 22 op dl
op表示设置为输出,dl表示管脚为低电平。
