Sử dụng uart1 LicheePi Nano để giao tiếp với module SIM A7670C
Licheepi Nano | Uart 1 |
---|---|
A2 | RX |
A3 | TX |
Với module A7670C của mình thì không ra chân usb, nên ở đây mình sử dụng giao thức PPPOS (Point to Point Over Serial). PPP là giao thức giao tiếp dữ liệu lớp cao, được sử dụng chủ yếu trong các module mạng. Ưu điểm của giao thức PPP là có thể gửi trực tiếp giữ liệu mà không cần phải sử dụng AT command. Vì thế chúng ta chỉ cần nối Tx/Rx trên LicheePi Nano với Rx/Tx trên module sim A7670C là được.
Để chạy được giao thức PPPOS (hoặc QMI/MBIM interface) thì đầu tiên Linux kernel trên LicheePi Nano phải enable driver ppp (hoặc QMI/MBIM driver). Tiếp theo đó, bản rom linux chạy trên LicheePi Nano phải được cài đặt tools ppp (hoặc qmicli/mbimcli tương ứng với từng interface).
Để thuận tiện lấy source linux kernel và toolschain để rebuild kernel với driver PPP được enable, mình nghỉ các bạn nên tham khảo bài viết trước của mình:
Tự tạo linux distro cho LicheePi Nano
git clone https://github.com/ninhnn2/licheepi_nano_sdk.git
cd licheepi_nano_sdk
./build.sh pull_all
cd Lichee-Pi-linux
cp ../suniv-f1c100s-licheepi-nano.dts arch/arm/boot/dts/
cp ../linux-licheepi_nano_defconfig arch/arm/configs/
make ARCH=arm CROSS_COMPILE=../toolchain/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- linux-licheepi_nano_defconfig
make ARCH=arm CROSS_COMPILE=../toolchain/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- menuconfig
Vào Device Drivers —> Network device support —> <*> PPP (point-to-point protocol) support
make ARCH=arm CROSS_COMPILE=../toolchain/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- -j8
Test uart1 trên LicheePi Nano đã được enable chưa bằng lệnh sau, nếu output lệnh báo error thì uart1 chưa được enable. Để enable uart1 trên LicheePi Nano thì chúng ta cần chỉnh sửa device trong linux kernel.
cat /dev/ttyS1
Tạo file rnet
vim /etc/ppp/peers/rnet
Nội dung file rnet
#imis/internet is the apn for idea connection
connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T internet.telekom"
# For SIM7600E use /dev/ttyUSB2 as the communication port
# For SIM800 use /dev/ttySC1 as the communication port
/dev/ttyS1
# Baudrate
115200
# Assumes that your IP address is allocated dynamically by the ISP.
noipdefault
# Try to get the name server addresses from the ISP.
usepeerdns
# Use this connection as the default route to the internet.
defaultroute
# Makes PPPD "dial again" when the connection is lost.
persist
# Do not ask the remote to authenticate.
noauth
# No hardware flow control on the serial link with GSM Modem
nocrtscts
# No modem control lines with GSM Modem
local
Chỉnh sửa nội dung file gprs
vim /etc/chatscripts/gprs
Nội dung file gprs
# You can use this script unmodified to connect to cellular networks.
# The APN is specified in the peers file as the argument of the -T command
# line option of chat(8).
# For details about the AT commands involved please consult the relevant
# standard: 3GPP TS 27.007 - AT command set for User Equipment (UE).
# (http://www.3gpp.org/ftp/Specs/html-info/27007.htm)
ABORT BUSY
ABORT VOICE
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "NO DIAL TONE"
ABORT "NO ANSWER"
ABORT "DELAYED"
ABORT "ERROR"
# cease if the modem is not attached to the network yet
ABORT "+CGATT: 0"
"" AT
TIMEOUT 12
OK ATH
OK ATE1
# +CPIN provides the SIM card PIN
#OK "AT+CPIN=1234"
# +CFUN may allow to configure the handset to limit operations to
# GPRS/EDGE/UMTS/etc to save power, but the arguments are not standard
# except for 1 which means "full functionality".
#OK AT+CFUN=1
OK AT+CGDCONT=1,"IP","\T","",0,0
OK ATD*99#
TIMEOUT 22
CONNECT ""
Video hướng dẫn rebuild Linux Kernel for LicheePi Nano
Chạy ppp tools
pon rnet
Kiểm tra log hệ thống và interface mạng 4g lte
tail -n 30 /var/log/syslog
ifconfig
Đo tốc độ mạng LicheePi Nano 4G LTE với PPP protocol
iperf3 -c iperf.biznetnetworks.com