π§Ί Bahan
π§ ESP32-C3 Super Mini
Flash 4 MB, USB-C, BLE.
πΊ Layar ST7789 1,3"
IPS 240Γ240, SPI 7 pin (tanpa CS) atau 8 pin.
π΅ DFPlayer Mini
Pemutar MP3 dengan slot microSD dan amplifier 3 W.
π Speaker 8 Ξ©
Kecil, 0,5β3 W, ke SPK_1/SPK_2.
πΎ Kartu microSD
FAT32, β€ 32 GB.
π« Resistor 1 kΞ©
Di jalur GPIO20 β RX DFPlayer.
π Tombol / TTP223
Ke GPIO1, tanpa solder.
lihat catatan sentuhπ MPU6050
Untuk fitur goyang. Tanpa modul ini, fitur goyang mati sendiri.
opsionalπ Kabel
βΉοΈ Gambar kabel lengkap: Diagram kabel. Rakit langkah demi langkah: Demo rakit.
Sumber: firmware/include/MochiRzmong.h dan firmware/include/User_Setup_ST7789.h.
| Kaki modul | ESP32-C3 | Catatan |
|---|---|---|
| TFT SCL / SCLK | GPIO4 | |
| TFT SDA / MOSI | GPIO6 | |
| TFT DC | GPIO3 | |
| TFT RES / RST | GPIO10 | |
| TFT CS | tidak dipakai | Jika modul punya kaki CS, sambungkan ke GND |
| TFT BLK (lampu latar) | GPIO7 | HIGH nyala, LOW mati saat berhenti |
| TFT VCC | 3V3 | |
| Sentuh / tombol | GPIO1 | TTP223 (tanpa solder) atau tombol ke GND; jenisnya dideteksi saat nyala |
| DFPlayer RX | GPIO20 lewat resistor Β±1 kΞ© | ESP TX β RX modul |
| DFPlayer TX | GPIO21 | TX modul β ESP RX. Wajib agar "trek selesai" terdeteksi |
| DFPlayer BUSY | GPIO5 (opsional) | Build dengan -DMOCHI_PIN_DF_BUSY=5 |
| DFPlayer VCC | 5 V | Dari VBUS/5V, bukan 3V3 |
| DFPlayer SPK_1 / SPK_2 | Speaker 8 Ξ© | Langsung ke speaker, tanpa amplifier |
| MPU6050 SDA / SCL | GPIO8 / GPIO9 | Opsional. Pull-up 4,7 kΞ© ke 3V3 jika modul belum punya |
| MPU6050 VCC | 3V3 | |
| GND | gabung semua | ESP, layar, DFPlayer, MPU6050, sentuh |
β οΈ GPIO9 adalah pin strap: jangan ditarik ke GND saat boot. GPIO20/21 adalah UART0 bawaan chip; log ESP dibaca lewat USB CDC.
βΉοΈ Catatan sentuh: firmware mendeteksi jenis sensor sendiri saat nyala: GPIO1 dibaca sebentar dengan pull-up lalu pull-down, sehingga TTP223 bawaan pabrik (HIGH saat disentuh), TTP223 dengan pad/jumper A disolder (LOW saat disentuh), maupun tombol tekan ke GND langsung jalan tanpa solder apa pun. Syaratnya: jangan sentuh sensor Β±1 detik setelah nyala (TTP223 juga mengkalibrasi diri saat itu). Kalau terlanjur dan sensor terbaca tersentuh terus, firmware membalik polaritas sendiri setelah 10 detik, hanya dalam 60 detik pertama setelah nyala. Paksa manual lewat build_flags: -DMOCHI_TOUCH_ACTIVE_HIGH (aktif HIGH) atau -DMOCHI_TOUCH_MODE=2 (aktif LOW + pull-up).
πΎ Kartu SD untuk DFPlayer
Isi kartu siap pakai: folder sd/mp3/ di repo (48 file, 1,4 MB). DFPlayer memutar file root menurut urutan salin (file ke-N yang disalin), bukan nama.
0001.mp3 β¦ 0048.mp3 ke root, berurutan satu per satu (jangan seret sekaligus)./01 dan salin lagu 001.mp3, 002.mp3, β¦ untuk Pemutar MP3.# Linux (kartu di /media/SD)
for f in sd/mp3/*.mp3; do cp "$f" /media/SD/; sync; done
# Windows PowerShell (kartu di E:)
Get-ChildItem sd\mp3\*.mp3 | Sort-Object Name | ForEach-Object { Copy-Item $_.FullName E:\ }
/0001.mp3 β¦ /0048.mp3 suara animasi + Chronos (isi sd/mp3/), disalin PERTAMA dan berurutan /01/001.mp3 β¦ 255.mp3 lagu untuk Pemutar MP3, disalin SESUDAHNYA
| File (root) | Dipakai untuk | Suara di sd/mp3/ |
|---|---|---|
0001β0018 | β | hening 0,5 dtk (pengisi) |
0019 | model 1 wajah/senyum_kedip (saat nyala) | tawa kecil βhi-hi-hiβ + denting kedip, 8 dtk |
0020 | model 2 wajah/pusing (goyang) | nada goyang menurun + per βboingβ, 4,4 dtk |
0021 | model 4 wajah/sorot | desis lirik kiri-kanan + blip, 6 dtk |
0022 | model 5 wajah/sirine | sirine polisi naik-turun Γ2, 3,8 dtk |
0023 | model 3 wajah/cinta (tahan) | detak jantung + arpeggio + kilau, 2,5 dtk |
0024β0025 | β | hening (pengisi) |
0026 | model 9 gundam/helm_hujan | hujan di helm + tetes + servo, 3 dtk |
0027 | model 10 gundam/helm_siaga (tahan) | servo + bip siaga, 1,6 dtk |
0028 | model 11 gundam/isyarat | sandi radio + statis, 2,6 dtk |
0029 | model 12 gundam/kokpit | dengung kokpit + blip komputer, 3 dtk |
0030 | model 13 gundam/kokpit_2 | sistem menyala + dengung, 3 dtk |
0031 | model 14 gundam/pilot | servo + kunci mekanis + bip, 2,6 dtk |
0032β0033 | β | hening (pengisi) |
0034 | model 7 mobil/lampu_sorot | klik lampu + desis sorot + mesin idle, 6,7 dtk |
0035β0037 | β | hening (pengisi) |
0038 | model 8 mobil/speedometer (tahan) | gas, pindah gigi, gas, 4,2 dtk |
0039 | β | hening (pengisi) |
0040 | model 6 wajah/cinta_pipi | βuwuβ malu + lonceng kecil, 3 dtk |
0041 | Chronos notifikasi | ding-ding naik |
0042 | Chronos instruksi navigasi baru | tiga nada naik |
0043 | Chronos panggilan masuk (diulang) | trill dering |
0044 | Chronos cari perangkat (diulang, volume 30) | bip tinggi keras |
0045 | Chronos alarm (diulang) | bip-bip-bip-bip |
0046 | Chronos tersambung | dua nada naik |
0047 | Chronos terputus | dua nada turun |
0048 | Chronos navigasi selesai | arpeggio selesai |
- Nomor yang tidak dipakai berisi MP3 hening. Jangan dihapus: tanpa pengisi urutan bergeser dan suara tertukar.
- Ganti suara: timpa file bernama sama di
sd/mp3/, lalu format dan salin ulang berurutan. - Lagu di
/01harus bernomor berurutan tanpa lubang (001, 002, 003 β¦). - Di macOS, hapus
._*dan.DS_Store(dot_clean); ikut terhitung sebagai file. - Cek kartu:
python firmware/tools/daftar_trek.py --sd /path/kartu. Buat ulang MP3:python3 sd/buat_suara.py.
Semua suara dibuat dari nol oleh sd/buat_suara.py (numpy, tanpa sampel luar, MIT). Opsi --pack mochi-themes.zip memakai WAV asli paket tema mochi-rzmong assets-v1 untuk 14 animasi (paket tanpa lisensi tertulis: untuk kartu sendiri). Build -DMOCHI_DF_MP3_FOLDER: file yang sama di /MP3/0001.mp3 β¦, dicocokkan dari nama.
β‘ Flash
Paling mudah: pasang dari browser. Atau build sendiri dengan PlatformIO:
cd firmware pio run -e esp32-c3-dfplayer -t upload
Tahan BOOT saat colok USB-C jika unggahan gagal. Klip animasi ditanam otomatis saat build (perlu Python + Pillow).
π οΈ Kalau ada masalah
| Gejala | Cek |
|---|---|
| Port tidak muncul | Chrome/Edge di komputer, kabel USB data (bukan kabel cas), tahan BOOT saat colok. |
| Layar hitam | SCLK 4, MOSI 6, DC 3, RST 10, BLK 7. CS modul 8 pin ke GND. Mode berhenti juga hitam: ketuk 1Γ. |
| Gambar terbalik / miring | Menu β Putar layar. |
| Tidak ada suara | DFPlayer VCC 5 V, RX lewat 1 kΞ© ke GPIO20, TX ke GPIO21, speaker di SPK_1/SPK_2, kartu FAT32 berisi 0001β0048 di root. |
| Suara tertukar | Urutan salin salah: format kartu, salin sd/mp3/ satu per satu berurutan, baru /01. |
| Suara tidak diulang / lagu tidak lanjut | Kabel TX modul β GPIO21 membawa pesan "trek selesai". Atau pasang BUSY ke GPIO5 + -DMOCHI_PIN_DF_BUSY=5. |
| Pemutar: "folder /01 kosong" | Lagu harus /01/001.mp3, /01/002.mp3, β¦ |
| Ketukan tidak terbaca / selalu "tahan" | Serial monitor saat nyala menulis sentuh GPIO1: β¦ (jenis yang terdeteksi). Tertulis "tombol ke GND / mengambang" padahal memakai TTP223: kabel I/O putus. Pastikan VCC TTP223 3V3, GND bersama, jangan menyentuh sensor saat menyalakan. Masih salah: paksa -DMOCHI_TOUCH_ACTIVE_HIGH atau -DMOCHI_TOUCH_MODE=2. TTP223 di balik casing: casing β€ 2 mm, tanpa logam di atas pad. |
| Bunyi letup / ESP reset saat suara mulai | Daya USB kurang: kabel/charger lebih baik, tambah kapasitor elektrolit 100β470 Β΅F di VCCβGND DFPlayer. |
| Warna negatif / merah-biru tertukar | Di firmware/include/User_Setup_ST7789.h: ganti TFT_INVERSION_ON β TFT_INVERSION_OFF (warna negatif), atau TFT_RGB_ORDER TFT_BGR β TFT_RGB (merah/biru tertukar). Build ulang. |
| Layar putih / tanpa gambar | Pastikan modul ST7789 240Γ240 (bukan 240Γ320 atau ST7735), VCC 3V3. |
Build: No module named PIL | Pasang Pillow ke Python PlatformIO: ~/.platformio/penv/bin/pip install pillow (Windows: %USERPROFILE%\.platformio\penv\Scripts\pip install pillow). |
| Chronos tidak menemukan perangkat | Menu β Chronos BLE harus ON. Nama rzmong dfplayer. |
| Goyang tidak bereaksi | Serial monitor harus menulis MPU6050 siap. SDA 8, SCL 9, alamat 0x68. |
Serial monitor 115200 lewat USB: pio device monitor.