An ultra-compact, Power-over-Ethernet (PoE) remote terminal server built with the M5Stack Atom Lite and the AtomPOE (WIZnet W5500) Extension Base. Running on CircuitPython 10.x, this device serves a responsive web interface over a wired network connection that mirrors live serial lines and injects multi-line configuration macros directly into a switch console ports at 9600 Baud.
The device operates on a safe, dual-network architecture:
- Wi-Fi Interface: Locked exclusively to CircuitPython's native Web Workflow for secure over-the-air file access and script deployment.
- Wired Ethernet (PoE) Interface: Hosts a custom API-driven WebSocket server dedicated to terminal interaction, script indexing, and macro deployments.
Because the AtomPOE base completely isolates the bottom structural expansion bus of the Atom Lite, all external serial adapters must connect to the front-facing Grove connector port.
- Module Requirement: Seeed Studio Grove RS232 Module (or equivalent MAX3232 TTL-to-RS232 adapter).
- Logic Level Warning: The Atom Lite lines are 3.3V TTL. You MUST use an RS-232 level-shifting adapter board before connecting it to a Cisco RJ45 console port to avoid hardware damage.
| Grove Cable Color | Pin Function | Atom Lite CircuitPython Pin | Connects to Adapter Board Pin |
|---|---|---|---|
| Yellow 🟡 | RX (Receive Data) | board.D32 |
TXD |
| White ⚪ | TX (Transmit Data) | board.D26 |
RXD |
| Red 🔴 | Power (5V) | 5V |
VCC |
| Black ⚫ | Ground | GND |
GND |
- SCK:
board.D22 - MOSI:
board.D33 - MISO:
board.D23 - CS (Chip Select):
board.D19
The system utilizes an asynchronous web server (adafruit_httpserver) restricted to a sandboxed /www directory to fully secure root credentials (settings.toml).
GET /: Streams the terminal dashboard interface over the network usingFileResponse.GET /websocket: Spins up a bi-directional streaming tunnel handling live terminal keystrokes.GET /api/scripts: Scans the internal/wwwflash storage folder and outputs a JSON index of saved.txtor.cfgautomation files.POST /api/upload?name=filename.txt: Receives multi-line raw text blocks from the web client and saves them directly to local flash storage.GET /api/read?name=filename.txt: Reads out local file text line-by-line to feed the console injection engine.
- Upload Files: Use CircuitPython's Web Workflow to drop
boot.py,code.py, and your credentials insidesettings.tomlonto the device. Create a/wwwfolder and dropindex.htmlinside it. - Connect Hardware: Plug a standard 4-pin Grove cable into the front of the Atom Lite and connect it to your RS-232 level shifter board. Run a blue Cisco rollover cable from the adapter directly into your switch's console port.
- Power Up: Plug a PoE network drop or standard network patch cord into the AtomPOE module base.
- Access: Open a web browser on your computer and navigate to the wired IP address assigned by your router:
http://192.168.1.141 - Run Script Macros: Use the sidebar interface to upload staging files (e.g., VLAN setups, ACL configurations). Click Deploy to stream the configuration into your Cisco switch automatically using a built-in 300ms line-delay buffer to prevent console input overruns.