ESP32-TERM

From Land Boards Wiki
Jump to navigation Jump to search

ESP32-TERM Front 3D.png

Features

  • ESP32 Module
    • UART interface
    • Keyboard/Mouse interface
    • Drives VGA video
    • Runs FabGL ANSI/VT Terminal firmware
  • "Typical" Serial Terminal Connectors
    • Connectors down long side of the card
    • VGA
    • PS-2 keyboard
    • PS-2 mouse
    • Audio jack
    • DE-9 Serial
    • 5V DC on USB-B
  • "Special" connectors
    • Connectors down the short side
    • Use with cards like SIMPLE-68008 which have FTDI connections
    • FTDI connector - 6-pin
    • 5V connector
  • Programmable LED on P14
  • 145x95mm size
  • (4) 4-40 mounting holes

ESP-32 Module

ESP32 MODULE-720PX.jpg

ESP-32 Module Pinout

ESP32-Pinout.jpg

"Chip" on the module

Esp32-pinout-chip-ESP-WROOM-32.png

ESP32 Pin Usage

ESP-32 TERM Pinout Rev1.PNG

Module Features

  • Architecture: Xtensa Dual-Core 32-bit LX6
  • CPU frequency: up to 240MHz
  • Total RAM available: 528KB (part of it reserved for system)
  • BootROM: 448KB
  • Internal FlashROM: none
  • External FlashROM: code and data, via SPI Flash; usual size 4MB
  • GPIO: 34 (GPIOs are multiplexed with other functions, including external FlashROM, UART, etc.)
  • UART: 3 RX/TX UART (no hardware handshaking), one TX-only UART
  • SPI: 4 SPI interfaces (one used for FlashROM)
  • I2C: 2 I2C (bitbang implementation available on any pins)
  • I2S: 2
  • ADC: 12-bit SAR ADC up to 18 channels
  • DAC: 2 8-bit DACs
  • RMT: 8 channels allowing accurate pulse transmit/receive
  • Programming: using BootROM bootloader from UART - due to external FlashROM and always-available BootROM bootloader, the ESP32 is not brickable

Connectors

P1 - VGA

  • DB-15HD connector
  • 64-colors (2:2:2)
  • ESP32 pins
  HSync => GPIO23
  VSync => GPIO15
  R0    => GPIO22
  R1    => GPIO21
  G0    => GPIO19
  G1    => GPIO18
  B0    => GPIO5
  B1    => GPIO4

ESP-32 TERM P1 VGA Rev1.PNG

VGA - Resistor Selection

  • ESP32 has a 3.3V driver which can drive more than 10 mA
  • Ideal case drive current
    • 0.7V (full scale VGA level) into 75 Ohms = 9.33 mA
    • 2/3 of the current or 6.16 mA comes from the lower value resistor (digital most significant bit)
    • 1/3 of the current or 3.08 mA comes from the higher value resistor (digital least significant bit)
  • R-2R values
  • Voltage steps are:

VGA Sim 2R Voltage.PNG

  • Current steps are:

VGA Sim 2R Current.PNG

Video DAC LTSpice Simulation

Summing Video Resistor DAC

  • Best values (1%)
    • 422, 845
    • 470, 820 are close/standard values
  • 0.7V into 75 Ohm VGA load
  • 3.3V drive
  • ESP32 has 40 mA drive
    • Uses 8 mA (max)
  • Output in 4 equal voltage steps

VGA Sim 2R Voltage.PNG

P2 - PS/2 Keyboard

ESP-32 TERM P2 P3 Rev1.PNG

  • Purple DIN 6 connector
  • 5V power to the keyboard
  • Shift 3.3V levels of the ESP32 to 5V of the keyboard/mouse
  • ESP32 pins
  KBDAT   => GPIO32
  KBCLK   => GPIO33

P3 - PS/2 Mouse

  • Green DIN 6 connector
  • 5V power to the keyboard
  • ESP32 pins
  MSEDAT   => GPIO27
  MSECLK   => GPIO26

P4 - Audio Out

ESP-32 TERM P4 Rev1.PNG

  • Mono output wired on both pins (ring/tip) of stereo 3.5mm Jack
  • Line level outputs
    • Requirs amplification
  • ESP32 pins
  AUD   => GPIO25

P5 - RS-232

ESP-32 TERM P5 Rev1.PNG

  • On-board TTL to RS-232 converter
    • Swings +/- 10V
  • DB-9 Female
  • DCE wiring

DCE - RS-232 Connections

  • This card has a DCE connector
    • The DCE (peripheral) has the female DB-9 connector
  • The DTE (Host CPU) has the male DB-9 connector

DTE DCE.png

  • ESP-32 pins
  RX2    => GPIO34
  TX2    => GPIO2
  RTS    => GPIO13
  CTS    => GPIO35

P6 - 5V Power (USB)

ESP-32 TERM P6 J1 Rev1.PNG

  • USB-B connector
  • Power only (no data)
  • Power can be sent out on J1 to external Processor card (like SIMPLE-68008 card)

J1 - 5V Power Header

ESP-32 TERM P6 J1 Rev1.PNG

  • 2z3 right angle header
  • Can be used for power in or out of the card
    • Only one power source can be used with the card

J2 - FTDI Power in/out Header

ESP-32 TERM j2 j3 Rev1.PNG

  • 1x2 right angle header
  • Don't install jumper if an external FTDI interface with 5V power out is used

J3 - FTDI Header

ESP-32 TERM j2 j3 Rev1.PNG

  • 1x6 right angle header
  • Most recent (2020-02) ANSI terminal uses pin 34 for Rx
  • Pinout
  1. GND
  2. RTS (from ESP32)
  3. 5V (Power in if J2 is installed)
  4. RX (to ESP32)
  5. TX (from ESP32)
  6. CTS (to ESP32)
  • ESP32 pins
  RX2    => GPIO34
  TX2    => GPIO2
  RTS    => GPIO13
  CTS    => I35

Connections to SIMPLE-68008 Card

ESP32-TERM SIMPLE-68008
Pin Signal Pin Signal
1 GND 1 GND
2 RTS (out) 2 CTS (in)
3 +5V 3 +5V
4 RX (in) 4 TX (out)
5 TX (out) 5 RX (in)
6 CTS (in) 6 RTS (out)


Connect to FTDI card

  • Set FTDI jumper to 5V (image below shows jumper set to 5V)

FTDI rot.jpg

J4 - Serial Source Selection Header

ESP-32 TERM J4 Rev1.PNG

  • 2x3 header
  • Select either RS-232 connector or FTDI connector
  • Silkscreen shows the appropriate side
    • Both left for TTL level signals (via FTDI connection)
    • Both right for RS-232 level signals

Software

  • FabGL ANSI Terminal
  • Programmed using Arduino IDE

FabGL GPIOs assignment

  • Summary - fabgl dev board rev2

From here

  VGA
    HSync => IO23
    VSync => IO15
    R0    => IO21
    R1    => IO22
    G0    => IO18
    G1    => IO19
    B0    => IO4
    B1    => IO5

  Audio
    AUD   => IO25

  PS/2 - Keyboard
    DAT   => IO32
    CLK   => IO33

  PS/2 - Mouse (Not used)
    DAT   => IO27
    CLK   => IO26

  UART - UART2
    RX    => IO34
    TX    => IO2
    RTS   => IO13
    CTS   => I35

FabGL

  • Using ANSI/VT Terminal for the ESP32 application
  • Other FabGL applications
    • VGA
    • SSD1306
    • PS/2 Mouse and Keyboard Controller
    • Graphics Library
    • Sound Engine
    • Game Engine

FabGL Libraries

FabGL Arduino library

Installing the released library

FabGL Library.PNG

Using Latest FabGL builds

  • Fabrizio does a nice job of keeping his Arduino libraries up to date but if you want a bleeding edge experience, you can download his code from GitHub. Note, he's in active development so things often change.

Here's how I did it

  1. Install drivers via Arduino from the Library Manager. These are not the latest files. Space Invaders should run but not have sound (as of now because it's the older version).
  2. Move the FabGL from the Arduino libraries file folder to the desktop.
  3. Copy the FabGL from the GitHub download to the Arduino files folder (where you removed the other folder).

Examples will now be the latest.

  1. Compile/download/test the new files. You know it works if you now get sound from Space Invaders.
  2. Save as where you would normally save your Arduino sketches.

Arduino Programming

  • Installing the ESP32 Board in Arduino IDE (Windows, Mac OS X, Linux)
  • Board : DOIT ESP32 DEVKIT V1
    • libraries, FabGL, examples, VGA, AnsiTerminal
  • If you try to upload a new sketch to your ESP32 and you get this error message “A fatal error occurred: Failed to connect to ESP32: Timed out… Connecting…“. It means that your ESP32 is not in flashing/uploading mode.
  • Press the “Upload” button in the Arduino IDE to upload your sketch
  • After you see the “Connecting….” message in your Arduino IDE, release the finger from the “BOOT” button:

Ardino ESP32.png

Other Builds

Mechanicals

ESP32-TERM CAD REV1 bw.PNG

Assembly Sheet