Project Idea Start


Thought for 4 mins 11 sec
Thought for 6 sec
Checking Build schematic and place PCB progress…
Thought for 9 sec — Considering progress updates
Thought for 8 sec
Awaiting 1 background task
Thought for 7 sec
Checking ESP32 Triple Screen Dashboard progress…
Received notification from "ESP32 Triple Screen Dashboard" that it finished — picking the work back up.
Schematic and placement are complete, and the routing precheck is clean. I’m starting the full-board route now, then I’ll check for any remaining airwires or DRC issues.
Built and routed the ESP32 Triple Screen Dashboard motherboard:
  • Complete 9-component schematic with three ILI9341 sockets
  • 165 × 55 mm, 2-layer PCB
  • All components placed on the top layer
  • ESP32 USB faces the left board edge
  • Autorouter converged with 0 airwires
  • No placement or routing feasibility issues
Open item
  • One false-positive ERC remains: the library ESP32 DevKit part incorrectly classifies unused VP/GPIO36 as a power input. It was marked intentionally unconnected; connecting it to power would be electrically wrong.
  • GPIO2, GPIO5, and GPIO15 are ESP32 boot-strapping pins. The requested wiring is preserved, but attached displays must not force incorrect levels during startup.
Add boot-safe circuits
Create firmware starter
Prepare bring-up plan
Review manufacturing readiness

Firmware Getting Started
Pin Mapping

Table


FunctionESP32 GPIONet / destination
SPI clock18SPI_SCK → all screens pin 7
SPI MOSI23SPI_MOSI → all screens pin 6
SPI MISO19SPI_MISO → all screens pin 9
Display reset4TFT_RESET → all screens pin 4
Display D/C2TFT_DC → all screens pin 5
Screen1 CS5TFT1_CS → Screen1 pin 3
Screen2 CS15TFT2_CS → Screen2 pin 3
Screen3 CS21TFT3_CS → Screen3 pin 3
Arduino Framework Starter

Cpp


#include <SPI.h>

constexpr int TFT_SCK   = 18;
constexpr int TFT_MOSI  = 23;
constexpr int TFT_MISO  = 19;
constexpr int TFT_RST   = 4;
constexpr int TFT_DC    = 2;
constexpr int TFT1_CS   = 5;
constexpr int TFT2_CS   = 15;
constexpr int TFT3_CS   = 21;

void setup() {
  pinMode(TFT_RST, OUTPUT);
  pinMode(TFT_DC, OUTPUT);
  pinMode(TFT1_CS, OUTPUT);
  pinMode(TFT2_CS, OUTPUT);
  pinMode(TFT3_CS, OUTPUT);

  digitalWrite(TFT1_CS, HIGH);
  digitalWrite(TFT2_CS, HIGH);
  digitalWrite(TFT3_CS, HIGH);

  digitalWrite(TFT_RST, LOW);
  delay(20);
  digitalWrite(TFT_RST, HIGH);
  delay(120);

  SPI.begin(TFT_SCK, TFT_MISO, TFT_MOSI);
}

void loop() {}
Use a display library that supports separate CS instances on one shared SPI bus, such as Adafruit_ILI9341 or TFT_eSPI with a suitable multi-display wrapper/configuration.
Startup Sequence
  1. Set all three CS pins high before starting SPI.
  2. Pulse the shared display RESET line.
  3. Initialize SPI on GPIO18/19/23.
  4. Initialize each display one at a time with only its CS asserted.
Boot-Strapping Warning
GPIO2, GPIO5, and GPIO15 participate in ESP32 boot-strapping behavior. The requested assignments are preserved. If programming or boot fails, disconnect the displays and verify that external modules are not forcing these pins to incompatible levels during reset.
  • Pin Mapping

  • Arduino Framework Starter

  • Startup Sequence

  • Boot-Strapping Warning