Awesome
Raspberry Pi Pico MicroPython Ethernet
Overview
This is the MicroPython project, which aims to put an implementation of micropython, WIZnet ethernet chip and raspberry pi pico(RP2040). And, there are some micoropython examples using it.
Quick Start Firmware
- You can start this quickly with these compiled files.
Quick Start YouTube
Main Features (components) based on on Micropython
- RP2040 SDK
- WIZnet W5100S (Ethernet Chip MacRaw mode) (or W5500)
- lwIP
- AXTLS
- mbedTLS
- upip
Hardware requirements
The W5100S-EVB-Pico is a microcontroller evaluation board based on the Raspberry Pi RP2040 microcontroller chip and full hardwired TCP/IP controller W5100S chip. The W5100S-EVB-Pico has the same role as the Raspberry Pi Pico platform and includes W5100S, so the Ethernet function is basically included. But in this repo, I used W5100S MacRaw mode and lwIP TCP/IP stack.
S/W Development Environment (Build Log)
- Windows 10, WSL
PS D:\> wsl -l -o
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
root@LAPTOP-XXXXXX:/home/work/micropython# python --version
Python 3.8.5
- Build Log
root@LAPTOP-N9I1JU3D:/home/work/micropython/ports/rp2# make
[ -d build-PICO ] || cmake -S . -B build-PICO -DPICO_BUILD_DOCS=0 -DMICROPY_BOARD=PICO -DMICROPY_PY_WIZNET5K=5105 -DMICROPY_PY_LWIP=1
make -s -C build-PICO
[ 0%] Performing build step for 'ELF2UF2Build'
[100%] Built target elf2uf2
[ 0%] No install step for 'ELF2UF2Build'
[ 0%] Completed 'ELF2UF2Build'
[ 1%] Built target ELF2UF2Build
[ 2%] Built target bs2_default
[ 3%] Built target bs2_default_padded_checksummed_asm
..............................................................................
..............................................................................
[ 99%] Building C object CMakeFiles/firmware.dir/home/work/micropython/lib/tinyusb/src/class/vendor/vendor_device.c.obj
[ 99%] Building C object CMakeFiles/firmware.dir/home/work/micropython/lib/pico-sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c.obj
[100%] Linking CXX executable firmware.elf
text data bss dec hex filename
433796 92 164496 598384 92170 /home/work/micropython/ports/rp2/build-PICO/firmware.elf
[100%] Built target firmware
Raspberry Pi Pico & MicroPython example
I'm testing the examples below with this Raspberry Pi Pico MicroPython Ethernet projects.
- Initialize Network & Ping
- TCP/UDP Client
- TLS Client (with OpenSSL)
- MQTT Client (umqtt package)
- HTTP(S) Client (urequest package)
- Azure IoT Hub Client example
- AWS IoT Core Client example
- upip install (MicroPython packages)
Notice
It needs more memory optimization and exception handling implementation.