??在这个智能硬件和物联网时代,MicroPython和树莓派PICO正以其独特的优势引领着嵌入式开发的新潮流。MicroPython作为一种精简优化的Python 3语言,为微控制器和嵌入式设备提供了高效开发和简易调试的
??当我们结合WIZnet W5100S/W5500网络模块,MicroPython和树莓派PICO的开发潜力被进一步放大。这两款模块都内置了TCP/IP协议栈,使得在嵌入式设备上实现网络连接变得更加容易。无论是进行数据传输、远程控制,还是构建物联网应用,它们都提供了强大的支持。
??本章我们将以WIZnet W5100S为例,以MicroPython的开发方式进行设置静态网络地址信息示例。
WIZnet 主流硬件协议栈以太网芯片参数对比
Model | Embedded Core | Host I/F | TX/RX Buffer | HW Socket | Network Performance |
---|---|---|---|---|---|
W5100S | TCP/IPv4, MAC & PHY | 8bit BUS, SPI | 16KB | 4 | Max 25Mbps |
W6100 | TCP/IPv4/IPv6, MAC & PHY | 8bit BUS, Fast SPI | 32KB | 8 | Max 25Mbps |
W5500 | TCP/IPv4, MAC & PHY | Fast SPI | 32KB | 8 | Max 15Mbps |
相较于软件协议栈,WIZnet的硬件协议栈以太网芯片有以下优点:
??本例程包含RP2040和WIZnet芯片进行SPI通信,通过给WIZnet芯片配置静态IP地址并通过电脑ping通。
软件:
硬件:
??我们直接打开network_install.py文件,可以看到在w5x00_init()函数中,进行了SPI的初始化。以及将spi相关引脚和复位引脚注册到库中,后续则是激活网络,并配置静态网络地址信息。当未配置成功时,会打印出网络地址相关寄存器的信息,可以帮助我们更好的排查问题。最后则是打印出配置好的网络地址信息啦。
#import library
from usocket import socket
from machine import Pin,SPI
import network
import time
#LED define
led = Pin(25, Pin.OUT)
"""
W5x00 chip initialization.
param: None
returns: None
"""
def w5x00_init():
#spi init
spi=SPI(0,2_000_000, mosi=Pin(19),miso=Pin(16),sck=Pin(18))
nic = network.WIZNET5K(spi,Pin(17),Pin(20)) #spi,cs,reset pin
nic.active(True)#network active
nic.ifconfig(('192.168.1.20','255.255.255.0','192.168.1.1','8.8.8.8'))#Set static network address information
while not nic.isconnected():
time.sleep(1)
print(nic.regs())#Print register information
#Print network address information
print("IP Address:",nic.ifconfig()[0])
print("Subnet Mask:",nic.ifconfig()[1])
print("Gateway:",nic.ifconfig()[2])
print("DNS:",nic.ifconfig()[3])
return nic
def main():
print("WIZnet chip network install example");
nic = w5x00_init()
while True:
led.value(1)
time.sleep(1)
led.value(0)
time.sleep(1)
print("try ping",nic.ifconfig()[0])
if __name__ == "__main__":
main()
要测试以太网示例,必须将开发环境配置为使用Raspberry Pi Pico。
W5100S和W5500对应的固件如下:
必须将固件烧录到RP2040树莓派Pico中,才能运行我们编写的Python脚本文件。
烧录的方式可以参考下图:
??在Thonny中打开network_install.py程序,并选择开发板之后,点击运行。
静态配置的IP设置应避免IP重复导致IP冲突。
如果采用的是WIZnet的W5500来实现本章的示例,则只需烧录W5500的固件并运行示例程序即可。
想了解更多,评论留言哦!