
The W5500 chip is a Hardwired TCP/IP embedded Ethernet controller that enables easier internet connection for embedded systems using SPI (Serial Peripheral Interface)
Instructions
W5500_TCP_Server
.uf2 file the link.
CircuitPython 6.2.0-
Drag and drop the CircuitPython 6.2.0 .uf2 file onto the RPi-RP2 volume. Your Pico will reboot. You are now running CircuitPython.
Then, you can see “CIRCUITPY” drive on your system.
W5500 Ethernet Shield pin map
W5500 adafruit_wiznet5k python library
We need to prepare some libraries from the Adafruit learning page before ping test.
https://learn.adafruit.com/ethernet-for-circuitpython/circuitpython-setup
lib
adafruit_wiznet5k
adafruit_bus_device
adafruit_requests.mpy
unzip and find
REPL, Open serial terminal for printf()
Now, let’s open the PuTTY terminal.
Under Connection type: choose the button next to Serial.
In the box under Serial line, enter the serial port you found that your board is using.
In the box under Speed, enter 115200.
Once settings are entered, you’re ready to connect to the serial console.
Click “Open” at the bottom of the window. A new window will open.
- Check the COM port in Device Manager
W5500 Ethernet connect
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.
W5500_Ethernet_Shield_Server.py
import board
import busio
import digitalio
import time
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
import adafruit_wiznet5k.adafruit_wiznet5k_socket as socket
SPI0_SCK = board.GP2
SPI0_TX = board.GP3
SPI0_RX = board.GP4
SPI0_CSn = board.GP5
W5500_RSTn = board.GP20
print(“Wiznet5k Ping Test (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, 255, 0)
GATEWAY_ADDRESS = (192, 168, 1, 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=True, 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))
# Initialize a socket for our server
socket.set_interface(eth)
server = socket.socket() # Allocate socket for the server
server_ip = None # IP address of server
server_port = 5000 # Port to listen on
server.bind((server_ip, server_port)) # Bind to IP and Port
server.listen() # Begin listening for incoming clients
conn, addr = server.accept() # Wait for a connection from a client.
print(“socket connected”)
while True:
led.value = not led.value
time.sleep(1)
with conn:
# data = conn.recv()
# print(data)
# conn.send(data) # Echo message back to client
while True:
data = conn.recv(10)
if data:
print(‘received’, data)
conn.send(data) # Echo message back to client
#break
print(“Done!”)
server.socket.close()
Copy the content to code.py on your RPi Pico and save.
COMMENTS