Distributed GPIO Network
Up to 2046 Pico 2W Nodes · WiFi UDP/TCP · Centralised Python GUI · DHCP Server · GPIO / ADC / PWM / I2C / SPI
Overview
The Distributed GPIO Network is a scalable industrial IoT system comprising a central control PC running a Python Control Centre application, and up to 2046 Wi-Fi-enabled Raspberry Pi Pico 2W microcontroller nodes. Each node exposes its GPIO, ADC, PWM, I2C, and SPI peripherals to the Control Centre over UDP/TCP on a local IP network.
The Control Centre acts as a DHCP server, assigning persistent IP addresses to each node based on MAC address — so nodes reconnect to the same IP after power cycling. The network uses a /21 CIDR block (e.g., 10.10.0.0/21) to support the full 2046-node count. The touch-screen-friendly Python GUI monitors all nodes, displays real-time I/O states, and allows remote control from a single screen.
The dual-core RP2350 firmware dedicates Core 0 to WiFi communication, command parsing, and TCP/UDP server operations; Core 1 handles real-time GPIO sampling, ADC acquisition, and PWM generation. Inter-core communication uses spin-lock protected volatile flags, preventing network latency from affecting peripheral timing.
Key Features
- Up to 2046 Pico 2W nodes in a single /21 subnet
- Persistent DHCP — nodes always get the same IP (MAC-based assignment)
- Centralised Python GUI — touch-screen friendly, all nodes in one view
- Digital GPIO — input (with interrupt) or output, configurable pull-up/down
- ADC inputs — temperature, light, pressure, any 0–3.3V analog sensor
- PWM outputs — motor speed, LED dimming, valve control
- I2C and SPI buses — connect sensors, displays, DACs per node
- Dual-core firmware — network latency never affects I/O timing
- Python automation engine — script complex multi-node behaviours
Specifications
| Node Hardware | Raspberry Pi Pico 2W (RP2350 + CYW43439) |
|---|---|
| Max Nodes | 2046 per network (/21 CIDR block) |
| Network Protocol | UDP + TCP over 802.11b/g/n WiFi |
| IP Assignment | Persistent DHCP (MAC → IP mapping, infinite lease) |
| Control Centre | Python 3.9+ application, Windows/Linux/macOS |
| GUI Framework | Tkinter or Kivy — touch-screen compatible |
| Digital GPIO | Input (with interrupt) or Output, pull-up/down configurable |
| ADC Inputs | 3 channels (GPIO26, 27, 28), 12-bit, configurable sample rate |
| PWM Outputs | Configurable frequency and duty cycle |
| I2C | Configurable SDA/SCL pins, multiple devices per bus |
| SPI | Configurable MOSI/MISO/SCK/CS pins |
| Dual-Core | Core 0: WiFi/network; Core 1: real-time I/O |
| Auto-Reconnect | Yes — nodes reconnect automatically on WiFi loss |
| Scripting | Python automation engine on Control Centre |
Scale from 1 Node to 2046
Start with a single Pico 2W, grow to a plant-wide IoT network without changing software. Contact us for system design and integration.