A WiFi modem for retro computers, specifically the Tandy Color Computer (CoCo), using the ESP8266 microcontroller.
This project implements a virtual modem using the ESP8266, allowing vintage computers to connect to modern networks and BBSs over WiFi. The firmware emulates Hayes modem commands and provides RS-232 connectivity for seamless integration with retro hardware.
- Hayes-compatible AT command set
 - WiFi connectivity for vintage computers
 - OLED display support for status information
 - EEPROM storage for configuration persistence
 - Customizable baud rates via software serial
 - Open source and fully modifiable
 
- ESP8266 microcontroller (NodeMCU, Wemos D1 Mini, or similar)
 - Optional: 4-pin OLED display (I2C - 128x64 recommended)
 - RS-232 level shifter (MAX3232 or equivalent)
 - Power switch (optional)
 - Connecting cables
 
                  +-----------------+
                  |   WiFi Antenna  |
        ADC0  A0  |                 | D0  GPIO16 (WAKE) - Power switch to GND
   Reserved  RSV  |  +-----------+  | D1  GPIO5  (SCL)  - OLED I2C Clock
   Reserved  RSV  |  |  ESP8266  |  | D2  GPIO4  (SDA)  - OLED I2C Data
SDD3-GPIO10  SD3  |  |           |  | D3  GPIO0  (FLASH)
 SDD2-GPIO9  SD2  |  |           |  | D4  GPIO2  (TXD1/FLASH)
SDD1-MOSI   SD1   |  |           |  | 3.3V
SDCMD-CS    CMD   |  +-----------+  | GND
SDD0-MISO   SD0   |                 | D5  GPIO14 (SCLK) - Spark OLED
SDCLK-SCLK  CLK   |                 | D6  GPIO12 (MISO) - Spark OLED
            GND   |                 | D7  GPIO13 (MOSI/RXD2) - RX from RS-232 TX
           3.3V   |                 | D8  GPIO15 (CS/TXD2)   - TX to RS-232 RX
             EN   |                 | RX  GPIO3  (RXD0)
            RST   |                 | TX  GPIO1  (TXD0)
            GND   |                 | GND
            Vin   |                 | 3.3V
      USB/Flash   |                 | RST
                  +-----------------+
| Pin | GPIO | Function | Notes | 
|---|---|---|---|
| D1 | GPIO5 | I2C SCL | OLED display clock | 
| D2 | GPIO4 | I2C SDA | OLED display data | 
| D7 | GPIO13 | Serial RX | Connects to RS-232 TX | 
| D8 | GPIO15 | Serial TX | Connects to RS-232 RX | 
| D0 | GPIO16 | Power Switch | Optional switch to GND | 
| D5 | GPIO14 | SCLK | For Spark integrated OLED | 
| D6 | GPIO12 | MISO | For Spark integrated OLED | 
- SoftwareSerial - Serial communication on non-default pins
 - ESP8266WiFi - WiFi functionality
 - EEPROM - Configuration storage
 - WiFiClient - TCP/IP client functionality
 
- Install the Arduino IDE with ESP8266 board support
 - Install required libraries via Library Manager
 - Clone or download this repository
 - Open the .ino file in Arduino IDE
 - Select your ESP8266 board type
 - Configure WiFi credentials in the code (or via AT commands)
 - Upload to your ESP8266
 
- Connect the ESP8266 to your vintage computer via RS-232
 - Power on the modem
 - Configure WiFi settings using AT commands
 - Connect to remote systems using standard modem commands
 
AT              - Test connection
ATI             - Display information
ATE0/ATE1       - Echo off/on
ATDT<host:port> - Dial (connect to) host
ATH             - Hang up
+++             - Enter command mode
- Icons: Icons8 Phone Icon Set
 - OLED Bitmap Tool: image2cpp
 
Reinaldo Torres
CoCoByte Club
reyco2000@gmail.com
March 7, 2023
Parts of this program were developed with assistance from ChatGPT, a large language model by OpenAI.
This code is free and open source. You may use, modify, and distribute it for any purpose. Schematics and hardware designs will be made publicly available.
Contributions are welcome! Feel free to submit issues, fork the repository, and create pull requests.
- Detailed schematics publication
 - PCB design files
 - Web-based configuration interface
 - Additional terminal emulation support