---
title: "Sensor-ID Mapping over Ethernet with RP2040 & W5500 (MicroPython)"
url: "https://maker.wiznet.io/josephsr/projects/dj-python/"
markdown_url: "https://maker.wiznet.io/josephsr/projects/dj-python/md"
type: "UCC: User Created Content"
author: "dj-python"
author_url: "https://github.com/dj-python/ID-Mapping_v2_PICO"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "dj-python"
original_url: "https://github.com/dj-python/ID-Mapping_v2_PICO"
published: "2025-07-30"
language: "en"
likes: 0
views: 1219
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Sensor-ID Mapping over Ethernet with RP2040 & W5500 (MicroPython)

> MicroPython firmware for W5500-EVB-Pico that polls sensor IDs via I²C/SPI and streams them over wired TCP/IP as a low-power IoT gateway.

Original author: dj-python (source: https://github.com/dj-python/ID-Mapping_v2_PICO)

## Article

## Repository Overview

`ID-Mapping_v2_PICO` is an experimental MicroPython firmware for the **W5500-EVB-Pico** (RP2040 + W5500). It polls one or more sensors for their unique IDs and sends the data over a wired TCP/IP link. According to the README log, the 24 Feb 2025 build finished the ID-reading routine, while the 23 Apr 2025 commit merged legacy TCP test code and added a “chunked script loader.”

## Required Hardware

**W5500-EVB-Pico board**: Combines an RP2040 MCU with WIZnet’s W5500 hard-wired TCP/IP chip.

**RJ-45 patch cable & router/switch**: For physical Ethernet.

**I²C or SPI sensors** (e.g., temperature-humidity, light, accelerometer) that expose a unique ID/serial number.

## Required Software

**MicroPython v1.22+ UF2 for W5500-EVB-Pico**

Built-in WIZnet driver (`network.WIZNET5K`)

**mpremote** or **rshell** on a host PC for file transfer and console logging.

## Source-Code Highlights

`**W5500_EVB_PICO.py**` – sets GPIO/SPI timing, handles DHCP or static IP, wraps low-level `wiznet5k.socket` calls into helpers.

`**main.py**` –

Scans attached sensors for their unique IDs.

Encodes the list as JSON/binary and pushes it to a TCP server.

Implements retry/reset logic on network failure.

Includes a **chunk loader** that fetches and parses large scripts in 512-byte blocks.

---

Source: https://maker.wiznet.io/josephsr/projects/dj-python/
