The W5500 chip is a Hardwired TCP/IP embedded Ethernet controller that enables easier internet connection for embedded systems using SPI (Serial Peripheral Interface).
- Download the .uf2 file from the below link.
CircuitPython 6.2.0- adafruit-circuitpython-raspberry_pi_pico-en_US-6.2.0.uf2
- Push and hold the BOOTSEL button and plug your Pico into the USB port of your Raspberry Pi or other computer. Release the BOOTSEL button after your Pico is connected.
- It will mount as a Mass Storage Device called RPI-RP2.
- Drag and drop the CircuitPython 6.2.0 **.uf2** file onto the RPi-RP2 volume.
Your Pico will reboot and run CircuitPython.
- Then, you can see "CIRCUITPY" drive on your system.
- Now, we're ready to run the code on python code.py with CircuitPython.
++More examples with W5500https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/micropython-or-circuitpythonConnect W5500 Ethernet Shield to Raspberry Pi Pico
Raspberry Pi Pico pin map
W5500 Ethernet Shield pin map
- Use SPI0 on Raspberry Pi Pico.
- Be aware of the direction and insert it carefully. If you look at the Ethernet shield, there is a mark indicating the shape of the USB. The USB direction of the Raspberry Pi Pico should be the same.
We need to prepare some libraries from the *Adafruit* learning page before ping test.
https://learn.adafruit.com/ethernet-for-circuitpython/circuitpython-setup
Make sure your board's **lib** folder contains the following files and folders copied:
adafruit_wiznet5k
adafruit_bus_device
adafruit_requests.mpy
- Downloadadafruit-circuitpython-bundle-6.x-mpy-20210409.zip
- unzip and find adafruit_requests.mpy.
Now, let's open the **PuTTY** terminal.
Under **Connection type:** choose the button next to **Serial**.
In the box under **Serial line**, select the serial port you found that your board is using.
In the box under **Speed**, input 115200.
Pico_Ethernet_Shield.py
This is the code to set the IP of 192.168.1.100
I hope that the PC also has an environment that communicates with 192.168.1.xxx.
import board
import busio
import digitalio
import time
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
SPI0_SCK = board.GP2
SPI0_TX = board.GP3
SPI0_RX = board.GP4
SPI0_CSn = board.GP5
W5500_RSTn = board.GP20
print("Wiznet5k Ping Test (no DHCP)")
# Setup your network configuration below
# random MAC, later should change this value on your vendor ID
MY_MAC = (0x00, 0x01, 0x02, 0x03, 0x04, 0x05)
IP_ADDRESS = (192, 168, 1, 100)
SUBNET_MASK = (255, 255, 0, 0)
GATEWAY_ADDRESS = (192, 168, 0, 1)
DNS_SERVER = (8, 8, 8, 8)
led = digitalio.DigitalInOut(board.GP25)
led.direction = digitalio.Direction.OUTPUT
ethernetRst = digitalio.DigitalInOut(W5500_RSTn)
ethernetRst.direction = digitalio.Direction.OUTPUT
# For Adafruit Ethernet FeatherWing
cs = digitalio.DigitalInOut(SPI0_CSn)
# For Particle Ethernet FeatherWing
# cs = digitalio.DigitalInOut(board.D5)
spi_bus = busio.SPI(SPI0_SCK, MOSI=SPI0_TX, MISO=SPI0_RX)
# Reset W5500 first
ethernetRst.value = False
time.sleep(1)
ethernetRst.value = True
# Initialize ethernet interface with DHCP
# eth = WIZNET5K(spi_bus, cs)
# Initialize ethernet interface without DHCP
eth = WIZNET5K(spi_bus, cs, is_dhcp=False, mac=MY_MAC)
# Set network configuration
eth.ifconfig = (IP_ADDRESS, SUBNET_MASK, GATEWAY_ADDRESS, DNS_SERVER)
print("Chip Version:", eth.chip)
print("MAC Address:", [hex(i) for i in eth.mac_address])
print("My IP address is:", eth.pretty_ip(eth.ip_address))
while True:
led.value = not led.value
time.sleep(1)
print("Done!")
Copy the content to code.py on your RPi Pico and save.
Let's run the PING test on the laptop, and the results will show as below.
Thank you
Comments