树莓派 Pico 网络透传扩展板使用教程

产品概述

提供Pico C语言例程跟Python例程

产品参数

参数名称参数
供电电压5V
工作电流140mA
工作模式TCP/UDP
串口波特率300bps ~ 921600bps
串口 TTL 电平兼容 3.3V 和 5V
工作温度-40℃~85℃
产品尺寸74.54 x21.00(mm)

接口说明


功能说明

CH9121 为网络串口透传芯片,可实现串口数据与网络数据的双向透明传输,支持 TCP CLEINT/SERVER,UDP CLIENT/SERVER 4 种工作模式,串口波特率支持范围为 300bps~921600bps, 使用前需通过上位机软件 NetModuleConfig.exe 或者串口命令配置芯片的网络参数和串口参数, 配置完成后,CH9121 将配置参数保存至内部存储空间,芯片复位后,CH9121 将按保存的配置值工作。 

默认配置

CH9121 出厂时,端口 2 默认关闭,端口 1 默认工作在 TCP CLIENT 模式,网络相关默认参数依次为:
(1) 设备 IP  : 192.168.1.200
(2) 子网掩码 : 255.255.255.0
(3) 默认网关 : 192.168.1.1
(4) 模块端口 : 2000
(5) 目标 IP  : 192.168.1.100
(6) 目标端口 : 1000
串口相关默认参数依次为:
(1) 波特率 : 9600
(2) 超时  : 0 
(3) 数据位 : 8 ; 停止位 : 1 ; 校验 :无
(4) 清空串口缓冲区 : 从不清空

TCP CLIENT

1、选择SSCOM选择协议类型为TCPServre,再通过SSCOM查看目标IP跟目标端口号(也就是图中的1跟2)

2、运行NetModuleConfig.exe设置模块参数,如下操作:
(1).点击“搜索设备”,设备列表会显示出子网内模块;
(2).双击设备列表里面的模块,在左侧修改参数,然后点击“配置设备参数”;
(3).配置完成后,模块会重启,稍等一会,点击 “搜索设备”,找到模块,查看配置结果。
(4).根据实际需求修改模块参数,例如:设置网络方式为 TCP CLIENT,目的 IP,目的端口与 TCP SERVER 的
IP 和端口一致,再根据需求修改波特率等参数。然后点击配置设备参数。

3、配置完之后,点击SSCOM的侦听,就连接起来了。

TCP SERVER

1、运行NetModuleConfig.exe设置模块参数,如下操作:
(1).点击“搜索设备”,设备列表会显示出子网内模块;
(2).双击设备列表里面的模块,在左侧修改网络模式为TCPServre,再根据需求修改模块参数,最后点击“配置设备参数”;

2、通过SSCOM去连接配置成TCP SERVER的模块,连接起来会如下图显示:

UDP CLIENT/SERVER

1、运行NetModuleConfig.exe设置模块参数,如下操作:
(1).点击“搜索设备”,设备列表会显示出子网内模块;
(2).双击设备列表里面的模块,在左侧修改网络模式为UDP CLIENT/Servre,再根据需求修改模块参数,最后点击“配置设备参数”;

2、通过SSCOM去连接配置成UDP CLIENT/Servre的模块(SSCOM的UDP模式会自动连接,不管你的模式配置成CLIENT/Servre),连接起来会如下图显示:


Pico使用教程

硬件连接

您可以对照以下表格连线。

Pico连接引脚对应关系
ETHPico功能
5VVSYS电源输入
GNDGND电源地
RXD1GP0串行数据输入
TXD1GP1串行数据输出
RXD2GP4串行数据输入
TXD2GP5串行数据输出
CFG0GP14网络配置使能脚
RST1GP17复位

直连


如需使用屏幕,请将Pico-ETH-CH9121上的CFG0短路帽拔掉。

环境设置

正在整理 
请参照树莓派官方网站的Pico专题:https://www.raspberrypi.org/documentation/pico/getting-started/ 

程序下载

打开树莓派终端,执行:
从我们官网下载。

  1. sudo apt-get install p7zip-full
  2. cd ~
  3. sudo wget https://www.waveshare.net/w/upload/a/a4/Pico_ETH_CH9121_CODE.7z
  4. 7z x Pico_ETH_CH9121_CODE.7z -o./Pico_ETH_CH9121_CODE
  5. cd ~/Pico_ETH_CH9121_CODE
  6. cd Pico/c/build/

例程使用

C部分

  • 以下教程为在树莓派上操作,但由于cmake的多平台、可移植的特点,在PC上也是能成功编译,但操作略有不同,需要您自行判断。

进行编译,请确保在c目录:

  1. cd ~/Pico_ETH_CH9121_CODE/Pico/C/

Pico_ETH_CH9121_CODE/Pico/C/Serial Port Parameter Configuration:用来通过串口配置模式。
Pico_ETH_CH9121_CODE/Pico/C/RX_TX:用来进行信息收发,收到什么返回什么。
进入其中一个文件夹中创建并进入build目录,并添加SDK: 其中 ../../pico-sdk 是你的SDK的目录。 我们示例程序中是有build的,直接进入即可

  1. cd build
  2. export PICO_SDK_PATH=../../pico-sdk
  3. (注意:务必写对你自己的SDK所在路径)

执行cmake自动生成Makefile文件

  1. cmake ..

执行make生成可执行文件,第一次编译时间比较久

  1. make -j9

编译完成,会生成uf2文件。 按住Pico板上的按键,将pico通过Micro USB线接到树莓派的USB接口,然后松开按键。接入之后,树莓派会自动识别到一个可移动盘(RPI-RP2),将build文件夹下的main.uf2 文件复制到识别的可移动盘(RPI-RP2)中即可。

  1. cp main.uf2 /media/pi/RPI-RP2/

Python部分

windows环境下的使用

  • 1.按住Pico板上的BOOTSET按键,将pico通过Micro USB线接到电脑的USB接口,待电脑识别出一个可移动硬盘(RPI-RP2)后,松开按键。
  • 2.将python目录中rp2-pico-20210418-v1.15.uf2文件复制到识别的可移动盘(RPI-RP2)中
  • 3.打开Thonny IDE(注意:要使用最新版本的Thonny,否则是没有Pico的支持包的,当前Windows下的最新版本为v3.3.3)
  • 4.点击工具->设置->解释器,如图所示选择Pico及对应的端口


本例程提供了两个程序:
Serial Port Parameter Configuration.py:该程序用来通过串口配置模式。
RX_TX.py:这个用来进行信息收发,收到什么返回什么。

  • 5.文件->打开->RX_TX.py,点击运行即可,如下图所示:


树莓派环境下的使用

  • 1.刷固件的过程与Windows上一样,你可以选择在PC或者树莓派上将rp2-pico-20210418-v1.15.uf2 文件拷入pico中。
  • 2.在树莓派山打开Thonny IDE (点击树莓logo -> Programming -> Thonny Python IDE ),你可以在Help->About Thonny查看版本信息

以确保你的版本是有Pico支持包的,同样你可以点击Tools -> Options... -> Interpreter选择MicroPython(Raspberry Pi Pico 和ttyACM0端口
如图所示:

如果你当前的Thonny版本没有pico支持包,输入以下指令来更新Thonny IDE

  1. sudo apt upgrade thonny

3.点击File->Open...->python/RX_TX.py,运行脚本即可

代码简析

C部分

通过串口配置参数(根据你的需求进行修改即可):

  • 数据类型
  1. #define UCHAR unsigned char
  2. #define UBYTE uint8_t
  3. #define UWORD uint16_t
  4. #define UDOUBLE uint32_t
  • 模块初始化:
  1. void CH9121_init(void);
  • 本程序只进行了简单的配置,如需配置其他功能可查阅串口控制命令,自行配置即可:
  1. UCHAR CH9121_Mode //模式选择
  2. UCHAR CH9121_LOCAL_IP[4] //本地IP
  3. UCHAR CH9121_GATEWAY[4] //网关
  4. UCHAR CH9121_SUBNET_MASK[4] //子网掩码
  5. UCHAR CH9121_TARGET_IP[4] //目标IP
  6. UWORD CH9121_PORT1 //本地端口
  7. UWORD CH9121_TARGET_PORT //目标端口
  8. UDOUBLE CH9121_BAUD_RATE //串口波特率
  • 根据串口控制命令合理利用下面函数可进行参数配置:
  1. void CH9121_TX_4_bytes(UCHAR data, int command); //用于模式、是否随机端口、端口是否断开网络连接、是否清空串口数据、是否开启DHCP、是否开启串口2
  2. void CH9121_TX_5_bytes(UWORD data, int command);//用于设置串口的端口号
  3. void CH9121_TX_7_bytes(UCHAR data[], int command);//用于设置IP、子网掩码、网关
  4. void CH9121_TX_BAUD(UDOUBLE data, int command);//用于设置串口的波特率
  5. void CH9121_Eed(); //更新配置参数至 EEPROM、执行配置,复位 9121、离开配置模式

Python部分

用户只需修改Serial Port Parameter Configuration.py里面如下所示的值,就可以对模块进行串口参数配置:

  1. MODE = 1 #0:TCP Server 1:TCP Client 2:UDP Server 3:UDP Client
  2. GATEWAY = (169, 254, 88, 1) # GATEWAY
  3. TARGET_IP = (169, 254, 88, 17)# TARGET_IP
  4. LOCAL_IP = (169,254,88,70) # LOCAL_IP
  5. SUBNET_MASK = (255,255,255,0) # SUBNET_MASK
  6. LOCAL_PORT1 = 5000 # LOCAL_PORT1
  7. LOCAL_PORT2 = 4000 # LOCAL_PORT2
  8. TARGET_PORT = 3000 # TARGET_PORT
  9. BAUD_RATE = 115200 # BAUD_RATE