Saturday, November 8, 2025

ESP8266 serial bridge WIFI to UART

 ESP-01 -> USB-TTL

===================

3v3, EN -> 3V
TX      -> RX
RX -> TX
GND,IO0 -> GND

IO0 -> GND -- programming mode
IO0 -> 3.3V -- normal boot mode

RST - via button - GND - when you press button it resets

It draws around 60-80ma @ 3.3V. Can check the USB to TTL 3.3V regulator on the back for max power. Mine is AMS1117.

sudo apt install esptool

Read chip info:
esptool.py --port /dev/ttyUSB0 flash_id

Output:
Detecting chip type... ESP8266
Chip is ESP8266EX
Detected flash size: 1MB

Chip datasheet:
https://documentation.espressif.com/0a-esp8266ex_datasheet_en.pdf
nothing interesting except that it supports external FLASH via SPI up to 16MB

Dowload firmware:
https://www.espressif.com/en/support/download/all?keys=8266 pick ESP8266 NONOS SDK
Direct link: 
https://codeload.github.com/espressif/ESP8266_NONOS_SDK/zip/refs/tags/v3.0.6

extract and go into /bin

esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash \
  --flash_mode dout --flash_size 1MB \
  0x00000 boot_v1.7.bin \
  0x01000 at/512+512/user1.1024.new.2.bin \
  0xFC000 esp_init_data_default_v08.bin \
  0x7e000 blank.bin
  0xfe000 blank.bin

Make a backup:
esptool.py --port /dev/ttyUSB0 read_flash 0x00000 0x100000 esp8266_at_backup.bin
Restore backup:
esptool.py --port /dev/ttyUSB0 write_flash 0x00000 esp8266_at_backup.bin

Connect to ttyUSB0 you can use CuteCom. Use speed 115200 and at INPUT select CR/LF.
Commands: 
https://docs.espressif.com/projects/esp-at/en/release-v2.2.0.0_esp8266/AT_Command_Set/index.html
AT
Ouput: OK

AT+GMR
Output:

AT version:1.7.6.0(Jan 24 2022 08:56:02)␍␊

SDK version:3.0.6-dev(072755c)␍␊

compile time:Jun 17 2024 07:38:00␍␊

Bin version(Wroom 02):1.7.6␍␊

AT+CWMODE?

→ shows current Wi-Fi mode:

  • 1 = Station

  • 2 = SoftAP

  • 3 = Both

Set to ap : AT+CWMODE=1
Scan for networks: AT+CWLAP
Connect: AT+CWJAP="YourSSID","YourPassword"
Show ip: AT+CIFSR

These are saved even on reboot.
Next section must be sent on every reboot:

Step 1 — start a TCP connection to a remote device
AT+CIPMUX=0
AT+CIPSTART="TCP","192.168.1.50",8888
Step 2 — enter transparent (bridge) mode
AT+CIPMODE=1
AT+CIPSEND

Compile and configure ESP3D as a Serial UART to WIFI Bridge

git clone https://github.com/luc-github/ESP3D.git

Configuration before compile:

ESP3D/platformio.ini   --- add to the end of the file
[env:esp01_1m_bridge]
platform = espressif8266@4.1.0
board = esp01_1m
framework = arduino
monitor_speed = 115200
monitor_filters = send_on_enter, colorize, esp8266_exception_decoder
board_build.f_cpu = 160000000L
board_build.f_flash = 40000000L
board_build.flash_mode = dout
board_build.ldscript = eagle.flash.1m.ld
upload_resetmethod = ck
upload_speed = 115200
extra_scripts = pre:platformIO/extra_script.py
build_flags =
    -D ESP3D_BRIDGE            ; enable bridge mode (no web UI)
    -D PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY
    -DNONOSDK221=1
    -DNDEBUG
    -DVTABLES_IN_FLASH
lib_ignore =
    ESP32SSDP
    TFT_eSPI
    esp32-usb-serial

ESP3D/esp3d/configuration.h
uncomment and replace xxx with your router data
#define STATION_WIFI_SSID "xxx"
#define STATION_WIFI_PASSWORD "xxxxxxxxx"

Optional if you want better speed

ESP3D/esp3d/src/core/esp3d_settings.cpp

#define DEFAULT_BAUD_RATE "230400"

#define DEFAULT_SERIAL_BRIDGE_BAUD_RATE "230400"


Compile

====

python3 -m venv platformio

source platformio/bin/activate

pip install platformio

cd ESP3D

platformio run -e esp01_1m_bridge --target clean   
(optional if you change settings and want to do a new compile and be sure all the new settings get compiled)

platformio run -e esp01_1m_bridge


Upload firmaware

====== dont forget to have IO0 to GND and reset before uploading 

esptool.py --port /dev/ttyUSB0 flash_id

esptool.py --port /dev/ttyUSB0 erase_flash

esptool.py --port /dev/ttyUSB0 write_flash 0x00000 .pioenvs/esp01_1m_bridge/firmware.bin


If you want more speed use a ESP32

ESP32

[env:esp32dev_bridge]

platform = espressif32@6.4.0

board = esp32dev

framework = arduino

board_build.flash_mode = dio

board_build.f_cpu = 240000000L

build_flags =

    -D ESP3D_BRIDGE

    -DNDEBUG

    -DVTABLES_IN_FLASH

monitor_speed = 115200

upload_speed = 921600


platformio run -e esp32dev_bridge