模板: UART TO ETH for RPi use
来自Waveshare Wiki
提供WiringPi、RPI(Python)库例程
硬件连接
请参考下方的引脚对应表格
ETH | Raspberry Pi | |
Wiring编码 | Board物理引脚序号 | |
5V | 5V | 5V |
GND | GND | GND |
RXD1 | 15 | 8 |
TXD1 | 16 | 10 |
CFG0 | 4 | 16 |
RST1 | 5 | 18 |
开启Uart接口
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 选择Interfacing Options -> Serial,关闭shell访问,打开硬件串口
安装库
如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用
BCM2835
#打开树莓派终端,并运行以下指令 wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz tar zxvf bcm2835-1.71.tar.gz cd bcm2835-1.71/ sudo ./configure && sudo make && sudo make check && sudo make install # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
wiringPi
#打开树莓派终端,并运行以下指令 cd sudo apt-get install wiringpi #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错 #Bullseye分支系统使用如下命令: git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v # 运行gpio -v会出现2.70版本,如果没有出现说明安装出错
lgpio
#打开树莓派终端,并运行以下指令 wget https://github.com/joan2937/lg/archive/master.zip unzip master.zip cd lg-master sudo make install # 更多的可以参考官网:https://github.com/gpiozero/lg
- 安装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 #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 apt-get install p7zip-full wget https://www.waveshare.net/w/upload/2/28/2-CH UART TO ETH_CODE.7z 7z x 2-CH UART TO ETH_CODE.7z -O./2-CH UART TO ETH_CODE sudo chmod 777 -R 2-CH UART TO ETH_CODE cd 2-CH UART TO ETH_CODE/RPi
例程使用
C
cd WiringPi
- Serial Port Parameter Configuration:用来通过串口配置模式。
- RX_TX:用来进行信息收发,收到什么返回什么。
如果通过上位机配置参数,可直接运行RX_TX来测试传输是否有问题,是否丢包,否则可使用Serial Port Parameter Configuration,来进行设备参数配置。(后面会做函数介绍)
#配置设备参数 cd Serial Port Parameter Configuration make clean make ./CH9121_Config #运行收发程序 cd .. cd RX_TX make clean make ./CH9121_RX_TX
Python
cd Python
- Serial Port Parameter Configuration.py:用来通过串口配置模式。
- RX_TX.py:用来进行信息收发,收到什么返回什么。
python3 Serial Port Parameter Configuration.py #通过上位机配置参数可直接运行下面语句即可,否则根据你的需求修改Serial Port Parameter Configuration.py里面的参数,然后运行即可。 python3 RX_TX.py
代码简析
C部分
通过串口配置参数(根据你的需求进行修改即可):
- 本程序只进行了简单的配置,如需配置其他功能可查阅串口控制命令,自行配置即可:
uint8_t CH9121_Mode //模式选择 uint8_t CH9121_LOCAL_IP[4] //本地IP uint8_t CH9121_GATEWAY[4] //网关 uint8_t CH9121_SUBNET_MASK[4] //子网掩码 uint8_t CH9121_TARGET_IP[4] //目标IP uint16_t CH9121_PORT1 //本地端口 uint16_t CH9121_TARGET_PORT //目标端口 uint32_t CH9121_BAUD_RATE //串口波特率
- 根据串口控制命令合理利用下面函数可进行参数配置:
void CH9121_TX_4_bytes(UCHAR data, int command); //用于模式、是否随机端口、端口是否断开网络连接、是否清空串口数据、是否开启DHCP、是否开启串口2 void CH9121_TX_5_bytes(UWORD data, int command);//用于设置串口的端口号 void CH9121_TX_7_bytes(UCHAR data[], int command);//用于设置IP、子网掩码、网关 void CH9121_TX_BAUD(UDOUBLE data, int command);//用于设置串口的波特率 void CH9121_Eed(); //更新配置参数至 EEPROM、执行配置,复位 9121、离开配置模式
Python部分
用户只需修改Serial Port Parameter Configuration.py里面如下所示的值,就可以对模块进行串口参数配置:
MODE = 1 #0:TCP Server 1:TCP Client 2:UDP Server 3:UDP Client GATEWAY = (169, 254, 88, 1) # GATEWAY TARGET_IP = (169, 254, 88, 17)# TARGET_IP LOCAL_IP = (169,254,88,70) # LOCAL_IP SUBNET_MASK = (255,255,255,0) # SUBNET_MASK LOCAL_PORT1 = 5000 # LOCAL_PORT1 LOCAL_PORT2 = 4000 # LOCAL_PORT2 TARGET_PORT = 3000 # TARGET_PORT BAUD_RATE = 115200 # BAUD_RATE