如何将以太网添加到树莓派Pico
树莓派 Pico具有许多有趣且独特的功能,但没有网络功能,当然,这只是暂时的不便,而且可以肯定的是,在Pi Day周末,看到为Pico和RP2040发布了USB以太网和以太网PHY支持。
Raspberry Pi Pico和RMII以太网PHYPHY支持它围绕lwIP堆栈构建,利用RP2040的PIO,DMA和双核功能在软件中创建以太网MAC堆栈。 该项目当前支持基于RMII的以太网PHY模块,例如Microchip LAN8720。
可以在全球速卖通上以约1.50美元的价格找到LAN8720的分线板。
这意味着现在可以将价格为2美元的微控制器连接到成本不到2美元的以太网突破口,并将其连接到互联网。
从源头建造
如果尚未设置和运行Raspberry Pi Pico工具链,则应首先设置C / C ++ SDK,然后,需要从GitHub获取该项目以及lwIP堆栈。
在继续之前,请确保已设置好PICO_SDK_PATH。 例如,如果在树莓派上构建东西,并且已经运行pico_setup.sh脚本,或者按照入门指南中的说明进行操作,则可以将PICO_SDK_PATH指向
然后,可以继续构建库和示例应用程序。
如果一切顺利,应该在build / examples / httpd中有一个名为pico_rmii_ethernet_httpd.uf2的UF2文件。 现在,可以按照常规方式将此UF2文件加载到Pico上。
抓住树莓派 Pico板和Micro USB电缆,将电缆插入树莓派或笔记本电脑,然后在将Micro USB电缆的另一端插入开发板的同时,按住Pico上的BOOTSEL按钮,插入板卡后,然后松开按钮。
桌面上将弹出一个名为RPI-RP2的磁盘卷,双击将其打开,然后将UF2文件拖放到其中,Pico现在正在运行Web服务器。 但是,直到我们将其连接到我们的以太网分线板之前,它并没有多大用处。
在面包板上接线
LAN8720的最常见(也是最便宜)的分接板不是面包板友好型的,尽管可以找到一些板子,所以可能需要在面包板中抓一捆公对母跳线 。
LAN8720分支连接到面包板上的树莓派Pico(带有复位按钮)然后将分线板连接到树莓派Pico,这些板上的大多数标签似乎都贴好标签,左侧标签对应于突破排针的第一行,基于RMII的LAN8720分支板上的引脚和Pico之间的映射应如下:
物理引脚号,RP2040引脚和LAN8720分支之间的映射
这些引脚是库的默认引脚,可以在软件中更改。
接线完毕后,将Pico插入以太网,并通过USB插入树莓派或笔记本电脑。 除了为Pico供电之外,还可以通过USB串口查看一些调试信息,打开一个终端窗口并启动minicom。
只要路由器分发IP地址,就应该在minicom窗口中看到类似这样的信息,表明Pico已使用DHCP捕获了IP地址:
如果打开浏览器窗口,然后在地址栏中输入路由器已分配给Pico的IP地址,如果一切顺利,则应该看到默认的lwIP索引页:
查看从Raspberry Pi Pico提供的网页更改网页
事实证明,更改Pico提供的网页非常容易,可以在lwIP Git子模块的HTTP应用程序中找到带有默认lwIP页面的“文件系统”。
应该在此处使用自己喜欢的编辑器修改index.html文件,之后,需要将文件系统目录移到适当的位置,然后可以使用关联的makefsdata脚本将其重新打包。
运行此脚本将在当前目录中创建一个fsdata.c文件,需要将此文件上移到父目录,然后重建UF2文件。
如果一切顺利,应该在build / examples / httpd中有一个名为pico_rmii_ethernet_httpd.uf2的新UF2文件,然后可以像以前一样再次将该UF2文件加载到Pico上。
更新的网页来自我们的树莓派Pico重新启动时,等待一下,直到Pico再次获取IP地址,然后再次打开浏览器窗口,然后在地址栏中输入分配给Pico的IP地址,现在应该会看到一个更新的网页。
可以返回并编辑Pico提供的页面,然后构建整个站点,请记住,每次重新构建UF2之前,都需要重新构建fsdata.c文件。
目前的局限性
当前的实现有两个限制。 RP2040使用RMII模块的参考时钟在低于50MHz的频率下运行,而lwIP堆栈是使用NO_SYS编译的,因此既未启用Netcon API也未启用Socket API。 最后,将链接速度设置为10 Mbps,因为TX在100 Mbps时当前存在问题。
接下来?
尽管Sandeep的示例使用了lwIP Web服务器,但是还有许多其他库应用程序示例可供借鉴和使用,包括TFTP和MQTT示例应用程序,除此之外,lwIP是一个TCP / IP堆栈,通过TCP可以执行的任何操作,现在都可以在Pico中执行。
在Raspberry Pi论坛上可以找到对Pico开发的支持,还有一个(非官方的)Discord服务器,对文档的反馈应作为问题发布到GitHub上的pico-feedback存储库中,或直接发布到它所关注的相关存储库中。
所有文档以及许多其他帮助和链接都可以在“入门”页面上找到。 如果不知道将要发生的情况,可以随时从Pico中找到它:要访问该页面,只需按住Pico上的BOOTSEL按钮,将其插入笔记本电脑或Raspberry Pi中,然后松开该按钮 ,继续并打开RPI-RP2卷,然后单击INDEX.HTM文件。