4 软件操作指引

4.1 查找设备IP

查找设备IP

4.2 远程登录

远程登录

4.3 配置存储设备

配置存储设备

4.4 配置以太网 IP

配置以太网IP

4.5 配置Wi-Fi (可选)

配置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端口与外部设备的连接。

操作步骤:

  1. 执行如下命令打开串口,并配置串口波特率为115200。
picocom -b 115200 /dev/ttyAMA3
  1. 按需输入命令来控制外部设备。

4.12.3 配置 RS485

ED-CM4IND包含2路RS485接口,其对应的COM口和设备文件,具体如下表:

RS485接口对应设备文件
RS485-1/dev/ttyAMA2
RS485-2/dev/ttyAMA1

前提条件:

已完成ED-CM4IND的RS485端口与外部设备的连接。

操作步骤:

  1. 执行如下命令打开串口RS485-2,并配置串口波特率为115200。
picocom -b 115200 /dev/ttyAMA1
  1. 按需输入命令来控制外部设备。

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表示管脚为低电平。