模组通过以太网卡访问网络

硬件准备工作#

使用外挂以太网功能,需要额外准备外挂的以太网卡、网线、路由器、杜邦线。

通过杜邦线将模块与以太网卡连接,模块与网卡接线可以根据实际需求配置,具体接口配置参数请参考ethernet - 以太网相关功能章节,然后通过网线将网卡与路由器连接。

以太网芯片型号以太网模块实物图硬件连接实物图芯片手册代码示例
W5500W5500模块实物图W5500硬件连接实物图W5500芯片手册示例代码参考下载
DM9051DM9051模块实物图DM9051硬件连接实物图DM9051芯片手册示例代码参考下载
CH395CH395模块实物图CH395硬件连接实物图CH395芯片手册示例代码参考下载
YT8512YT8512模块实物图YT8512硬件连接实物图YT8512芯片手册示例代码参考下载
  1. 硬件连接实物图参考使用,请根据自己实际环境进行连接配置。
  2. SZ18201/J1101与YT8512连接及使用方式一致,均使用 RMII 接口,此处不在列举展示。

软件准备#

网卡初始化

默认以太网卡不开启,需要手动进行打开,以下是加载以太网卡的过程,通过DHCP的方式获取IP信息与外部通信。
以下示例介绍针对 W5500 以太网卡进行介绍,其他网卡在初始化时,调用该型号类即可,具体参数配置请参考 ethernet - 以太网相关功能下具体型号类。

# 首先导入ethernet包
>>> import ethernet

# 初始化网卡,配置各个参数信息,此处填写的CS脚、RST脚、INT脚均为GPIO引脚编号(GPIO引脚编号与物理引脚的映射关系请参考API参考手册内《class Pin - 控制I/O引脚》章节)
>>> eth = ethernet.W5500(b'\x12\x34\x56\x78\x9a\xbc','','','',-1,38,36,37, 0)

# 网卡注册成功后,查看默认的静态 IP 地址
>>> eth.ipconfig()
[('12-34-56-78-9A-BC', 'W5500'), (4, '192.168.1.100', '255.255.255.0 ', '192.168.1.1', '8.8.8.8', '114.114.114.114')]

# 启动以太网卡
>>> eth.set_up()
0

# 此时可以通过以太网卡对访问外部网络。

网络配置

网络配置可以通过两种方式配置,一种是通过DHCP获取动态IP地址,另一种是配置静态 IP地址。

通过DHCP获取动态IP地址

# 首先导入ethernet包
>>> import ethernet

# 初始化网卡,配置各个参数信息,此处填写的CS脚、RST脚、INT脚均为GPIO引脚编号(GPIO引脚编号与物理引脚的映射关系请参考API参考手册内《class Pin - 控制I/O引脚》章节)
>>> eth = ethernet.W5500(b'\x12\x34\x56\x78\x9a\xbc','','','',-1,38,36,37, 0)

# 网卡注册成功后,查看默认的静态IP地址
>>> eth.ipconfig()
[('12-34-56-78-9A-BC', 'W5500'), (4, '192.168.1.100', '255.255.255.0 ', '192.168.1.1', '8.8.8.8', '114.114.114.114')]

# 开启DHCP
>>> eth.dhcp()
0

#  DHCP开启成功后,再次查看 IP 地址,可以发现IP地址已更新。
>>> eth.ipconfig()
[('12-34-56-78-9A-BC', 'W5500'), (4, '192.168.31.203', '255.255.255. 0', '192.168.31.1', '192.168.31.1', '0.0.0.0')]

# 启动以太网卡
>>> eth.set_up()
0

# 此时可以通过以太网对访问外部网络。

配置静态 IP地址

# 首先导入ethernet包
>>> import ethernet

# 初始化网卡,通过传参IP信息,启动时会使用IP传参而不适用默认IP信息。
>>> eth = ethernet.W5500(b'\x12\x34\x56\x78\x9a\xbc','192.168.2.10','255.255.255.0','192.168.2.1',-1,38,36,37, 0)

# 网卡注册成功后,查看默认的静态 IP 地址
>>> eth.ipconfig()
[('12-34-56-78-9A-BC', 'W5500'), (4, '192.168.2.10', '255.255.255.0 ', '192.168.1.1', '8.8.8.8', '114.114.114.114')]

# 设置静态IP
>>> eth.set_addr('192.168.3.10','255.255.255.0','192.168.3.1')
0

# 设置dns
>>> eth.set_dns('114.114.114.114','8.8.8.8')
0

#  配置完成后,再次查看 IP 地址,可以发现IP地址已更新。
>>> eth.ipconfig()
[('12-34-56-78-9A-BC', 'W5500'), (4, '192.168.3.10', '255.255.255.0', '192.168.3.1', '114.114.114.114', '8.8.8.8')]

# 启动以太网卡
>>> eth.set_up()
0

# 此时可以通过以太网对访问外部网络。

TCP(socket)应用示例#

以下示例展示 TCP 通信时,通过以太网卡进行通信时的两种方法。

TCP 客户端绑定以太网卡通信

此例中模块通过以太网卡进行 TCP 通信,通过调用socket 模块内 bind 接口,指定以太网卡进行数据发送。

下例中 bind 绑定网卡接口参数 192.168.1.100 指以太网卡的IP 地址。

# 导入usocket模块
import usocket

if __name__ == '__main__':
    # 创建一个socket实例
    sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM, usocket.TCP_CUSTOMIZE_PORT)
    sock.settimeout(5)
    sock.bind(("192.168.1.100", 0))
    # 解析域名
    sockaddr=usocket.getaddrinfo('python.quectel.com', 80)[0][-1]
    print('start connect')
    # 建立连接
    sock.connect(sockaddr)
    # 向服务端发送消息
    ret=sock.send('GET /NEWS HTTP/1.1\r\nHost: python.quectel.com\r\nAccept-Encoding: deflate\r\nConnection: keep-alive\r\n\r\n')
    print('send %d bytes' % ret)
    #接收服务端消息
    data=sock.recv(1024)
    print('recv %s bytes:' % len(data))
    print(data.decode())

    # 关闭连接
    sock.close()

TCP 客户端非绑定以太网卡通信

此例中模块通过以太网卡进行 TCP 通信,不使用 socket 模块内 bind 接口,通过配置默认网卡进行 socket 通信。需要确定配置以太网卡作为默认网卡。

# 导入usocket模块
import usocket

if __name__ == '__main__':
    # 创建一个socket实例
    sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
    sock.settimeout(5)
    # 解析域名
    sockaddr=usocket.getaddrinfo('python.quectel.com', 80)[0][-1]
    print('start connect')
    # 建立连接
    sock.connect(sockaddr)
    # 向服务端发送消息
    ret=sock.send('GET /NEWS HTTP/1.1\r\nHost: python.quectel.com\r\nAccept-Encoding: deflate\r\nConnection: keep-alive\r\n\r\n')
    print('send %d bytes' % ret)
    #接收服务端消息
    data=sock.recv(1024)
    print('recv %s bytes:' % len(data))
    print(data.decode())

    # 关闭连接
    sock.close()

MQTT/HTTP 等应用协议应用#

使用以太网卡进行 MQTT/HTTP 应用协议通信,需要注意由于内置的 MQTT/HTTP 通信模块没有使用绑定网卡操作接口,需要配置以太网卡作为默认网卡即可。具体 MQTT/HTTP 使用,请参考QuecPython官网文档中心API参考手册下 umqtt - MQTT客户端 以及 request - HTTP客户端 章节。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值