六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>

这篇具有很好参考价值的文章主要介绍了六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

  在这个智能硬件和物联网时代,MicroPython和树莓派PICO正以其独特的优势引领着嵌入式开发的新潮流。MicroPython作为一种精简优化的Python 3语言,为微控制器和嵌入式设备提供了高效开发和简易调试的

  当我们结合WIZnet W5100S/W5500网络模块,MicroPython和树莓派PICO的开发潜力被进一步放大。这两款模块都内置了TCP/IP协议栈,使得在嵌入式设备上实现网络连接变得更加容易。无论是进行数据传输、远程控制,还是构建物联网应用,它们都提供了强大的支持。

  本章我们将以WIZnet W5100S为例,以MicroPython的开发方式进行UDP通信示例

2. 相关网络信息

2.1 简介

  UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>,W5100S/W5500+RP2040之Python开发,RP2040,W5100S/W5500,MicroPython

2.2 UDP通讯过程

第一步:创建UDP套接字 每个设备(我们称之为主机)首先需要创建一个UDP套接字。套接字是网络通信的端点,可以看作是发送或接收数据的门。

第二步:绑定到端口 每个UDP套接字都会绑定到一个特定的端口号。这个端口号就像是主机上的一个特定的门牌号,使得外部的数据包能够找到正确的应用程序。

第三步:发送数据 当主机需要发送数据时,它会将数据传递给UDP协议。UDP协议会在数据前面添加一个UDP头,然后将数据(现在称为“数据报”)发送到网络。

第四步:接收数据 在接收端,数据报被路由到正确的主机和端口,然后传递给相应的应用程序。

值得注意的是,UDP是无连接的,这意味着它不需要预先建立连接就可以发送数据。此外,UDP也不保证数据报的到达,也不对数据报进行排序。

六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>,W5100S/W5500+RP2040之Python开发,RP2040,W5100S/W5500,MicroPython

2.3 优点

  • 简单:UDP协议的控制选项较少,因此在数据传输过程中延迟小,数据传输效率高。
  • 轻量化:UDP协议的开销更小,适合对可靠性要求不高的应用程序。
  • 无连接:UDP是无连接的,这意味着它不需要预先建立连接就可以发送数据。
  • 速度快:UDP协议的传输速度比TCP快,这是因为UDP协议在发送数据时,只要应用进程将数据传给UDP,UDP就会将此数据打包进UDP报文段并立刻传递给网络层。
  • 实时性:UDP适合于实时数据传输,如语音和视频通信,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
  • 支持一对一、一对多、多对多的交互通信:这是因为UDP支持广播和多播。

2.4 应用

  • 实时数据传输:UDP协议适合于实时数据传输,如语音和视频通信。在物联网设备中,这种实时性尤其重要,例如在智能家居系统中,用户可能需要实时监控家中的安全摄像头,或者在工业物联网应用中,实时数据的传输对于设备的运行状态监控至关重要。
  • 轻量化通信:由于UDP协议的开销小,因此它非常适合于资源受限的物联网设备,如传感器和微型控制器。
  • 广播和多播通信:UDP支持广播和多播,这在物联网应用中非常有用。例如,一个中央控制器可能需要向所有连接的设备发送相同的指令,或者一个设备可能需要向所有其他设备广播其状态。
  • 快速数据交换:由于UDP协议的传输速度快,因此它适合于需要快速数据交换的物联网应用,例如在智能电网或车联网中,设备之间可能需要在毫秒级别内交换数据。

3. WIZnet以太网芯片

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
  • W5100S/W6100 支持 8bit数据总线接口,网络传输速度会优于W5500。
  • W6100 支持IPv6,与W5100S 硬件兼容,若已使用W5100S的用户需要支持IPv6,可以Pin to Pin兼容。
  • W5500 拥有比 W5100S更多的 Socket数量以及发送与接收缓存

相较于软件协议栈,WIZnet的硬件协议栈以太网芯片有以下优点

  1. 硬件TCP/IP协议栈:WIZnet的硬件协议栈芯片提供了一种硬件实现的TCP/IP协议栈,这种硬件实现的协议栈比软件实现的协议栈具有更好的性能和稳定性。
  2. 不需要额外的嵌入式系统软件栈和内存资源:由于所有的以太网传输和接收操作都由独立的以太网控制器处理,因此不需要额外的嵌入式系统软件栈和内存资源。
  3. 抵抗网络环境变化和DDoS攻击:与易受网络环境变化和DDoS攻击影响的软件TCP/IP协议栈相比,硬件协议栈芯片能够提供更稳定的以太网性能。
  4. 适用于低规格的嵌入式系统:即使在低规格的嵌入式系统中,使用WIZnet的硬件协议栈芯片也可以比使用软件TCP/IP协议栈的高规格系统显示出更高效的互联网应用操作性能。

六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>,W5100S/W5500+RP2040之Python开发,RP2040,W5100S/W5500,MicroPython

4. UDP通信示例讲解以及使用

4.1 程序流程图

六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>,W5100S/W5500+RP2040之Python开发,RP2040,W5100S/W5500,MicroPython

4.2 测试准备

软件:

  • Thonny
  • SocketTester

硬件:

  • W5100S IO模块 + RP2040 树莓派Pico开发板 或者 WIZnet W5100S-EVB-Pico开发板
  • Micro USB 接口的数据线
  • 网线

4.3 连接方式

  • 通过数据线连接PC的USB口
  • 当使用W5100S/W5500 IO模块连接RP2040时
    • RP2040 GPIO 16 <----> W5100S/W5500 MISO
    • RP2040 GPIO 17 <----> W5100S/W5500 CS
    • RP2040 GPIO 18 <----> W5100S/W5500 SCK
    • RP2040 GPIO 19 <----> W5100S/W5500 MOSI
    • RP2040 GPIO 20 <----> W5100S/W5500 RST
  • 通过网线直接连接PC网口(或:PC和设备都通过网线连接交换机或路由器LAN口)

4.4 相关代码

  我们直接打开udp.py文件。

第一步:可以看到在w5x00_init()函数中,进行了SPI的初始化。以及将spi相关引脚和复位引脚注册到库中,后续则是激活网络,并使用DHCP配置网络地址信息,当DHCP失败时,则配置静态网络地址信息。当未配置成功时,会打印出网络地址相关寄存器的信息,可以帮助我们更好的排查问题。

第二步:然后是打开UDP的SOCKET,并绑定到端口。最后在循环中监听有没有数据,如果有数据则回传数据。

import usocket
from machine import Pin,SPI
import network
import time

local_port = 5000
nic = None

"""
W5x00 chip initialization.
 
param: None
returns: None

"""
def w5x00_init():
    global nic
    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)
    
    try:
        #DHCP
        print("\r\nConfiguring DHCP")
        nic.ifconfig('dhcp')
    except:
        #None DHCP
        print("\r\nDHCP fails, use static configuration")
        nic.ifconfig(('192.168.1.20','255.255.255.0','192.168.1.1','8.8.8.8'))#Set static network address information
    
    #Print network address information
    print("IP         :",nic.ifconfig()[0])
    print("Subnet Mask:",nic.ifconfig()[1])
    print("Gateway    :",nic.ifconfig()[2])
    print("DNS        :",nic.ifconfig()[3],"\r\n")
    
    #If there is no network connection, the register address information is printed
    while not nic.isconnected():
        time.sleep(1)
        print(nic.regs())
        
"""
UDP loop testing.
 
param: None
returns: None

"""    
def udp_loop():
    global nic
    s = usocket.socket(usocket.AF_INET, usocket.SOCK_DGRAM)
    s.bind((nic.ifconfig()[0], local_port)) #Source IP Address
    print(f"Opened UDP loopback\r\nip:{nic.ifconfig()[0]},port:{local_port}")
    time.sleep(1)
    while True:
        data,addr = s.recvfrom(2048)
        print(f'Received:{data} from:{addr}')
        s.sendto(b'%s' % data, addr)
    
def main():
    print("WIZnet chip UDP example")
    w5x00_init()
    udp_loop()

if __name__ == "__main__":
    main()

4.5 烧录验证

要测试以太网示例,必须将开发环境配置为使用Raspberry Pi Pico。

  • 所需的开发环境
    • Thonny
  • 如果你必须编译MicroPython,则必须使用Linux或Unix环境。

第一步:将程序复制到Thonny中,然后选择环境为Raspberry Pi Pico,最后点击运行。

第二步:在网络调试助手中打开一个UDP,并连接到开发板上。

第三步:进行通信回环测试。

注意:因为MicroPython的print函数是启用了stdout缓冲的,所以有时候并不会第一时间打印出内容。

六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>,W5100S/W5500+RP2040之Python开发,RP2040,W5100S/W5500,MicroPython

5. 注意事项

  • 如果采用的是WIZnet的W5500来实现本章的示例,则只需烧录W5500的固件并运行示例程序即可。

6. 相关链接

WIZnet官网

本章例程链接

想了解更多,评论留言哦!文章来源地址https://www.toymoban.com/news/detail-815961.html

到了这里,关于六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 七、W5100S/W5500+RP2040树莓派Pico<UDP 组播>

      UDP组播是一种基于UDP协议的通信方式,它允许一台计算机通过发送单个UDP数据包来同时向多个目标发送信息。这种通信方式在需要高效、实时的数据传输的应用中非常有用,比如视频直播、在线游戏等。   本章节将进行UDP组播回环测试。   W5100S/W5500是一款集成全硬

    2024年02月06日
    浏览(32)
  • 六、W5100S/W5500+RP2040树莓派Pico<UDP Server数据回环测试>

      UDP是一种无连接的网络协议,它提供了一种简单的、不可靠的方式来进行数据传输。尽管它并不保证数据传输的完整性和顺序性,但UDP在某些场景下却具有独特的优势,例如在实时应用或网络游戏等领域中。   W5100S/W5500是一款集成全硬件 TCP/IP 协议栈的嵌入式以太网控

    2024年02月07日
    浏览(40)
  • 三、W5100S/W5500+RP2040树莓派Pico<TCP Client数据回环测试>

      在当今的计算机网络环境中,TCP(传输控制协议)是一种非常重要的通信协议。TCP提供了一种可靠、有序和错误控制的数据传输方式,被广泛应用于各种网络应用中。在TCP通信中,TCP Client是客户端的角色,它负责建立连接、发送数据和接收数据。   本文以TCP Client为核

    2024年02月08日
    浏览(36)
  • Ubuntu搭建RP2040开发环境-1

    2024-4-23 hongxi.zhu 前置依赖(可选) 一、下载SDK和编译链 下载SDK 下载交叉编译链 配置 在最后追加 二、编译实例工程 新开一个终端,进入 pico-examples 目录 编译blink编程 编译完成同级目录下生成:blink.uf2、blink.elf、blink.bin 格式 下载方式 .uf2 USB拖拽到flash中 .elf SWD下载 .bin fla

    2024年04月26日
    浏览(36)
  • 树莓派Raspberry Pico RP2040 开发环境配置完全缝合终极版C-SDK

    更新:这篇文章写的有点乱,后续整理见我的个人博客:rp2040开发环境配置集合版 如果你只想要使用VScode作为你的开发环境,那么这篇会是更好的参考: RP2040配置VSCODE开发环境——一劳永逸版 RP2040作为一款树莓派的单片机,一开始我以为会有很成熟的开发方案,结果发现网

    2024年02月01日
    浏览(41)
  • 树莓派RP2040 用Arduino IDE安装和编译

    目录 1 Arduino IDE 1.1 IDE下载 1.2 安装 arduino mbed os rp2040 boards 2 编程-烧录固件  2.1 打开点灯示例程序  2.2 选择Raspberry Pi Pico开发板  2.3 编译程序 2.4 烧录程序  2.4.1 Raspberry Pi Pico开发板首次烧录提示失败 2.4.2 解决首次下载失败问题 2.4.2.1 拔下Raspberry Pi Pico开发板USB接口,按住

    2024年02月13日
    浏览(35)
  • Mini-RP2040主控板在Arduino IDE下使用

    Arduino-Pico 是 RP2040(Raspberry Pi Pico 处理器)到 Arduino 生态系统的社区端口,旨在让基于 Raspberry Pi Pico / RP2040 的开发板的使用和编程变得更轻松、更有趣。 Arduino-Pico项目地址: https://github.com/earlephilhower/arduino-pico。 Arduino-Pico文档地址: https://arduino-pico.readthedocs.io/en/latest/。 Mi

    2024年02月16日
    浏览(41)
  • RPI pico(树莓派 pico RP2040微控制器) 教程1:刷固件

       树莓派pico搭载了两个ARM Cortex-M0+内核最高频率133MHz、 264KB的内部RAM、DMA控制器,支持挂最高达16MB的片外Flash。它有30个GPIO,4个可以作为模拟输入。外设包含2个UART、2个SPI、2个I2C、16个PWM通道以及一个USB1.1控制器。树莓派pico支持c/c++和 python两种编程方式, 我们这里使用p

    2024年02月13日
    浏览(81)
  • Raspberry Pi Pico RP2040制作低成本FPGA JTAG工具

    目录 1 准备工作和前提条件 1.1 Raspberry Pi Pico RP2040板子一个 1.2 xvcPico.uf2固件 1.3 Vivado USB驱动 2 操作指南 2.1 按住Raspberry Pi Pico开发板的BOOTSEL按键,再接上USB接口到电脑  2.2 刷入固件 2.3 Vivado USB 驱动  2.3.1 打开Zadig驱动工具 2.3.2 驱动完成  2.4 Raspberry Pi Pico开发板 JTAG 接口

    2024年03月24日
    浏览(41)
  • 【使用W5500实现UDP、TCP通信】

    一、W5500介绍 W5500是一个集成的以太网模块,这个模块上携带TCP/IP协议,控制器只需要通过SPI协议读写其寄存器便可以以网络的方式进行数据交互。 W5500模块自带10个引脚,但由于使用其官方库,只需使用六个引脚便可以进行数据交互,这六个引脚分别为:VCC、GND、MISO、MOSI、

    2023年04月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包