Skip to content

About

Small Serial Terminal Server coded in CircuitPython 10.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎛️ ATOMWiz Serial Terminal

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.

🔧 Hardware Architecture & Pin Map

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.

1. Front Grove Port to RS-232 Module Interface

  • 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

2. Under-the-Hood AtomPOE SPI Bus Mapping

  • SCK: board.D22
  • MOSI: board.D33
  • MISO: board.D23
  • CS (Chip Select): board.D19

💻 Software Features & Rest API Architecture

The system utilizes an asynchronous web server (adafruit_httpserver) restricted to a sandboxed /www directory to fully secure root credentials (settings.toml).

API Endpoints:

  • GET / : Streams the terminal dashboard interface over the network using FileResponse.
  • GET /websocket : Spins up a bi-directional streaming tunnel handling live terminal keystrokes.
  • GET /api/scripts : Scans the internal /www flash storage folder and outputs a JSON index of saved .txt or .cfg automation 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.

🚀 Deployment & Usage Checklist

  1. Upload Files: Use CircuitPython's Web Workflow to drop boot.py, code.py, and your credentials inside settings.toml onto the device. Create a /www folder and drop index.html inside it.
  2. 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.
  3. Power Up: Plug a PoE network drop or standard network patch cord into the AtomPOE module base.
  4. Access: Open a web browser on your computer and navigate to the wired IP address assigned by your router:
    http://192.168.1.141
    
  5. 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.

About

Small Serial Terminal Server coded in CircuitPython 10.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages