31 December 2018
TTGO T-Eight is a small ESP32 board from here. Small OLED, left/right/select input method, microSD slot, and 4 MB PSRAM, LiPo connector, plus of course WiFi/Bluetooth is a good combination of features. The problem as usual is the lack of documentation. The situation is even worse in this particular case:
- The official git repo is outdated and describes only the OLED part of the old revision of the board.
- There's an old and new revision of the board. Luckily the silkscreen is updated, but if you copy&paste old code, you'll be possibly surprised that it won't work.
- There's a TTGO T8 which is similar but different. They could have called it T9, or T8a or T8D.
- There's no schematics so finding out what connects to what pin is somewhere between "Trust the docs" and "Detective work"
Anyway, here is what I found:
- SDA/SCL is Pin 21/22 as printed on the silk screen (old version: 5 and 4)
- microSD would then be at 5/23/18/19 as per silk screen (untested)
- Input is Pin 37/38/39 for right/center/left
- 4 blue LEDs and one red LED on the back: no idea yet. Blue could be LiPo voltage, and red one simply power
So here a small minimal Espruino program which uses the display and which can read the buttons:
// TTGO T-Eight I2C1.setup({sda: 21, scl: 22, bitrate: 400000}); function gstart(){ g.drawString("Hello World!",2,2); g.flip(); } // I2C var g = require("SH1106").connect(I2C1, gstart, {height:64}); // g.clear(); g.drawCircle(50, 32, 30); g.flip(); // Note: pushing will trigger several times (for repeat: true) // Need to software de-bounce setWatch(function(e) { console.log("Right"); }, D37, { repeat: false, edge: "falling"}); setWatch(function(e) { console.log("Click"); }, D38, { repeat: false, edge: "falling"}); setWatch(function(e) { console.log("Left"); }, D39, { repeat: false, edge: "falling"});