A Saturday morning project that worked better than...
# show-and-tell
r
A Saturday morning project that worked better than expected. Plan to use this at CalHack next weekend to help me answer questions 🙂 It is just some modifications to the minimal example here and some extra core mods to make PTT work. https://github.com/livekit/client-sdk-esp32
Sure this
step
file is the lower shell half and the board/screen. Should be able to draw any case you want with that. Here is a reference schematic form Waveshare if you want to design or have a starting point for a custom design: (https://files.waveshare.com/wiki/ESP32-S3-Touch-AMOLED-1.8/ESP32-S3-Touch-AMOLED-1.8.pdf For prototype you can find those boards easily for $20-40. I am actually planning on changing this so the screen and board are not stacked. Thinner is more important for my use case. This is what you would need in
board_cft.txt
for that board (Hope this will be automagically available with out needing to custom define it in the future)
Copy code
Board: ESP32_S3_TOUCH_AMOLED_1_8

# I²C0 shared by FT3168/ES8311/QMI8658/PCF85063/AXP2101/TCA9554
i2c: { sda: 15, scl: 14 }

# I²S for ES8311 (verified on schematic)
i2s: { mclk: 16, bclk: 9, ws: 45, din: 10, dout: 8 }

# Audio codec control address (hex 0x18)
out: { codec: ES8311, pa: 46, use_mclk: 1, pa_gain: 6, i2c_addr: 0x18 }
in:  { codec: ES8311,                 i2c_addr: 0x18 }

# LCD: SH8601 over QSPI (per Waveshare docs)
# QSPI_SCL + 4 data lines + CS + (RESET/TE on GPIOs)
lcd: {
  bus: qspi, controller: SH8601,
  width: 368, height: 448,
  clk: 11,
  sio0: 4, sio1: 5, sio2: 6, sio3: 7,
  cs: 12,
  rst: 21,   # LCD_RESET (confirm on your PCB rev)
  te:  13    # LCD_TE
}

# Touch: FT3168 (I²C, default addr 0x38)
touch: { bus: i2c, sda: 15, scl: 14, i2c_addr: 0x38, int: <TP_INT GPIO>, rst: <TP_RESET GPIO> }

# (Optional) declare other on-board I²C devices so your init code probes correctly
imu:   { type: QMI8658C, i2c_addr: 0x6B }
rtc:   { type: PCF85063, i2c_addr: 0x51 }
pmic:  { type: AXP2101,  i2c_addr: 0x34 }
ioexp: { type: TCA9554,  i2c_addr: 0x20 }   # 0x20–0x27 depending on A0–A2
If you want to do a "non" PTT version you would need to add an ES7210 and echo canceling bits. Or figure out how to get that devices software AEC working. I needed to mod some of our SDK core code to enable PTT but I hope @freezing-furniture-95502 will make that available out of the box in the near future. I had the best luck getting this to run with:
idf.py create-project-from-example "livekit/livekit=0.3.2:minimal"
Or just check out the sdk and work directly in the minimal example directory.