panduan ยท animasi ยท suara ยท musik

๐ŸŽต Kelola animasi & suara

Tambah animasi GIF ke firmware, beri suara tiap animasi, isi lagu untuk pemutar MP3, dan pakai suara Chronos.

๐Ÿง  ESP32-C3 Super Mini๐Ÿ“บ ST7789 1,3" 240ร—240๐ŸŽต DFPlayer Mini๐Ÿ‘† TTP223๐ŸŒ€ MPU6050 (opsional)โšก firmware 0.7.1

๐Ÿ—‚๏ธ Di mana semuanya disimpan?

ApaTempatGanti perlu flash ulang?
Gambar animasiFirmware: firmware/assets/builtin/jpeg/<tema>/ (sumber GIF di assets/builtin/gif/<tema>/)Ya
Suara animasiKartu SD DFPlayer: root 0001โ€“0048 (urutan salin, isi sd/mp3/)Tidak, cukup ganti file
Lagu pemutar MP3Kartu SD: /01/001.mp3 โ€ฆTidak
Suara ChronosKartu SD root: 0041โ€“0048Tidak

๐ŸŽž๏ธ Tambah animasi GIF

Animasi ditanam di firmware sebagai frame JPEG penuh warna. Alurnya: GIF โ†’ impor โ†’ daftarkan โ†’ build & flash โ†’ salin suara.

1
Siapkan GIF 240ร—240 yang berulang mulus. Simpan sebagai sumber di firmware/assets/builtin/gif/<tema>/<nama>.gif, mis. assets/builtin/gif/wajah/senyum.gif. Tema yang sudah ada: wajah, mobil, gundam; nama tema baru juga boleh.
2
Impor jadi frame JPEG (perlu Python + Pillow):
cd firmware
python tools/import_jpeg_clip.py wajah senyum assets/builtin/gif/wajah/senyum.gif --quality 80
Hasilnya assets/builtin/jpeg/wajah/senyum.mjpeg + senyum.json. GIF bukan 240ร—240? Tambahkan --resize 240x240 atau --crop 240x240.
3
Tambahkan di akhir daftar "jpeg_clips" di firmware/assets/meta.json:
"jpeg_clips": [
  โ€ฆ,
  ["gundam", "pilot", "", 31],
  ["wajah", "senyum", ""]          <- baris baru di akhir
]
Kolom: tema, nama, peran, trek. Peran "" = biasa, "dizzy" = diputar saat goyang, "heart" = diputar saat tahan. Trek boleh dikosongkan: otomatis nomor berikutnya (sekarang 41).
4
Build & flash ulang: pio run -e esp32-c3-dfplayer -t upload. Klip ditanam otomatis saat build. Perhatikan baris ANGGARAN kalau klip banyak (detail anggaran flash).
5
Cek nomor trek: python tools/daftar_trek.py, klip baru mendapat trek 0049 dst. Taruh suaranya sebagai 0049.mp3 dan salin setelah 0048 (lihat urutan salin).

โš ๏ธ Jangan menambah baris di daftar "builtins". Nomor trek builtin = posisinya, jadi baris ke-19 akan memakai trek 19 yang sudah dipakai wajah/senyum_kedip, dan builtin GIF hanya diambil 6 frame.

โ„น๏ธ Klip satu tema selalu dikelompokkan: klip baru tema lama masuk setelah kelompok temanya. "boot_theme" di meta.json menentukan model saat nyala (sekarang wajah, klip senyum_kedip). "theme_order" mengatur urutan tema (sekarang wajah, mobil, gundam; tema yang tidak disebut di akhir). Pakai hanya media yang boleh kamu sebarkan.

๐Ÿ”Š Suara animasi dan Chronos (root kartu, urutan salin)

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.

1
Format kartu FAT32 (โ‰ค 32 GB). Kartu harus kosong.
2
Salin 0001.mp3 โ€ฆ 0048.mp3 ke root, berurutan satu per satu (jangan seret sekaligus).
3
Sesudahnya buat folder /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:\ }
File (root)Dipakai untukSuara di sd/mp3/
0001โ€“0018โ€“hening 0,5 dtk (pengisi)
0019model 1 wajah/senyum_kedip (saat nyala)tawa kecil โ€œhi-hi-hiโ€ + denting kedip, 8 dtk
0020model 2 wajah/pusing (goyang)nada goyang menurun + per โ€œboingโ€, 4,4 dtk
0021model 4 wajah/sorotdesis lirik kiri-kanan + blip, 6 dtk
0022model 5 wajah/sirinesirine polisi naik-turun ร—2, 3,8 dtk
0023model 3 wajah/cinta (tahan)detak jantung + arpeggio + kilau, 2,5 dtk
0024โ€“0025โ€“hening (pengisi)
0026model 9 gundam/helm_hujanhujan di helm + tetes + servo, 3 dtk
0027model 10 gundam/helm_siaga (tahan)servo + bip siaga, 1,6 dtk
0028model 11 gundam/isyaratsandi radio + statis, 2,6 dtk
0029model 12 gundam/kokpitdengung kokpit + blip komputer, 3 dtk
0030model 13 gundam/kokpit_2sistem menyala + dengung, 3 dtk
0031model 14 gundam/pilotservo + kunci mekanis + bip, 2,6 dtk
0032โ€“0033โ€“hening (pengisi)
0034model 7 mobil/lampu_sorotklik lampu + desis sorot + mesin idle, 6,7 dtk
0035โ€“0037โ€“hening (pengisi)
0038model 8 mobil/speedometer (tahan)gas, pindah gigi, gas, 4,2 dtk
0039โ€“hening (pengisi)
0040model 6 wajah/cinta_pipiโ€œuwuโ€ malu + lonceng kecil, 3 dtk
0041Chronos notifikasiding-ding naik
0042Chronos instruksi navigasi barutiga nada naik
0043Chronos panggilan masuk (diulang)trill dering
0044Chronos cari perangkat (diulang, volume 30)bip tinggi keras
0045Chronos alarm (diulang)bip-bip-bip-bip
0046Chronos tersambungdua nada naik
0047Chronos terputusdua nada turun
0048Chronos navigasi selesaiarpeggio selesai

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.

๐Ÿ’ก Suara tidak diulang? Kabel TX DFPlayer โ†’ GPIO21 membawa pesan "trek selesai". Atau pasang BUSY ke GPIO5 + -DMOCHI_PIN_DF_BUSY=5.

๐ŸŽต Pemutar musik (/01)

1
Salin lagu ke /01/001.mp3, /01/002.mp3, โ€ฆ (maks 255). Nomor harus berurutan tanpa lubang: "berikutnya" setelah lagu terakhir kembali ke 001.
2
Di layar animasi, tahan 2 dtk sampai menu muncul.
3
Sorotan sudah di Pemutar MP3 (item pertama). Ketuk 2ร— untuk membuka.
4
Sorotan awal di โฏ. Ketuk 1ร— untuk putar.

๐Ÿ‘† Gerakan

LayarKetuk 1ร—Ketuk 2ร—Tahan 0,4โ€“2 dtkTahan 2 dtk
Animasiputar / berhentimodel berikutnyaklip "tahan" selama ditahanbuka menu
Menupindah ke item berikutnyapilih itemโ€”tutup menu
Pemutar MP3jalankan tombol yang disorot (langsung)โ€” (dua ketukan = dua kali tombol)lepas = sorot tombol berikutnyakembali ke menu, musik tetap jalan
โฏ Putar / jedaSorotan awal saat masuk.
โญ โฎ TrekBerikutnya / sebelumnya, berputar di akhir folder.
๐Ÿ”Š+ ๐Ÿ”‰โˆ’Langkah 2, rentang 0โ€“30. Satu volume untuk animasi dan musik.
ModeUlang semua โ†’ ulang 1 โ†’ acak.
โ–  BerhentiMusik selesai, suara animasi kembali.

Mode dan lagu terakhir tersimpan. Layar "folder /01 kosong" berarti tidak ada /01/001.mp3.

๐Ÿ“ฑ Chronos: layar dan suara (0041โ€“0048)

Dari HPDi perangkatSuaraSentuh
Tersambung / terputusinfo 1,5 dtk0046 / 0047
Notifikasiklip wajah/cinta_pipi ยฑ1,5 dtk, lalu aplikasi, judul, pesan (bergulir), 7โ€“30 dtk0041ketuk = tutup
Panggilan masuknama penelepon, berkedip0043 diulangketuk/tahan = tutup + bisukan
Navigasiikon arah, jarak, petunjuk, ETA0042 instruksi baru, 0048 selesaiketuk = sembunyikan
Cari perangkatlayar berkedip 60 dtk0044 diulang, volume 30ketuk = berhenti
Alarm (dari aplikasi)layar alarm 60 dtk0045 diulangketuk = berhenti
Cuaca, musik HP, baterailayar Jam HPJam HP: ketuk = putar/jeda, 2ร— = lagu berikutnya
1
Pastikan 0041โ€“0048 ada di root (sudah termasuk di sd/mp3/).
2
Tahan 2 dtk โ†’ menu โ†’ Chronos BLE โ†’ ketuk 2ร— sampai ON.
3
Di aplikasi Chronos (Android), sambungkan rzmong dfplayer.

โ„น๏ธ Layar Chronos memotong musik; setelahnya lagu diulang dari awal trek. Notifikasi tidak memotong dering panggilan. Mode Jangan Ganggu di aplikasi membisukan suara notifikasi.

๐Ÿงฐ Cek kartu dan nomor trek

cd firmware
python tools/daftar_trek.py                  # tabel model โ†’ trek โ†’ nama file
python tools/daftar_trek.py --sd /media/SD   # cek root 0001-0048, /01 dan sampah macOS

Skrip ini hanya membaca. Sumbernya include/jpeg_clips.h hasil build, atau assets/meta.json kalau belum build.

โš ๏ธ Di macOS, hapus file ._* dan .DS_Store dari kartu. DFPlayer bisa menghitungnya sebagai trek.