Kamera tidak diperlukan ketika controller AC hanya membutuhkan beberapa gerakan tangan. Sinyal yang dibutuhkan bukan gambar tangan, melainkan event arah seperti atas, bawah, kiri, atau kanan. Sensor gesture optik jarak dekat dapat mereduksi input tersebut menjadi data kecil sebelum diterima ESP32-S3.
Perubahan ini cukup besar dari sisi desain embedded. Tidak ada camera frame buffer, bus DVP, image preprocessing, atau model inference yang berebut resource dengan LCD dan transmitter infrared. ESP32-S3 dapat menangani bagian yang justru perlu dijaga dengan teliti: menyimpan state AC yang diinginkan, mengubahnya berdasarkan gesture, lalu mengenkode state tersebut ke protokol IR perangkat.
Sensor gesture menggantikan pipeline vision
APDS-9960 menggabungkan proximity, ambient light, color, dan gesture sensing melalui interface I2C. Gesture engine-nya menggunakan empat photodiode terarah dan IR emitter terintegrasi untuk mendeteksi pergerakan di dekat sensor.
Untuk controller yang dipasang di dinding atau meja, jalur datanya dapat tetap sederhana:
gerakan tangan
|
v
APDS-9960
| I2C
v
ESP32-S3
| |
| +--> LCD
|
+----------> IR LED --> ACSensor ini tidak merekonstruksi pose tangan. Ia menghasilkan informasi yang dapat dipakai untuk mengenali gesture arah sederhana. Batas ini penting. Desain tersebut cocok untuk swipe yang disengaja di dekat controller, bukan menghitung jari, mengenali bahasa isyarat, atau melacak tangan di seluruh ruangan.
Broadcom menyebut APDS-9960 mendukung gesture sederhana up, down, right, dan left. Fungsi proximity-nya dikalibrasi pabrik untuk kisaran pendek sekitar 100 mm. Jarak pendek justru berguna untuk kasus ini: pengguna harus mendekati controller dengan sengaja sehingga gerakan biasa di bagian lain ruangan tidak mudah berubah menjadi perintah.
APDS-9960 sendiri sekarang berstatus obsolete menurut Broadcom. Produk baru sebaiknya juga mengevaluasi sensor gesture atau proximity yang masih aktif didukung. Arsitektur ini tidak bergantung pada APDS-9960 secara khusus; yang dibutuhkan adalah event gesture kecil dan eksplisit sebagai pengganti frame kamera.
Empat gesture sudah cukup untuk permukaan kontrol
Mapping yang ringkas dapat mencakup fungsi AC yang dibutuhkan:
| Gesture | Aksi |
|---|---|
| Atas | Power on |
| Bawah | Power off |
| Kiri | Pilih COOL |
| Kanan | Pilih DRY |
Mapping sebaiknya diperlakukan sebagai kontrak interface, bukan kumpulan kondisi yang tersebar. Firmware terlebih dahulu mengubah output sensor menjadi event gesture, kemudian meneruskan event tersebut ke state machine AC.
enum class Gesture {
None,
Up,
Down,
Left,
Right
};
enum class AcMode {
Cool,
Dry
};
struct AcState {
bool power;
AcMode mode;
uint8_t temperature;
};Gesture mengubah AcState; gesture tidak langsung melakukan toggle GPIO untuk mengontrol AC.
Kontrol infrared AC bersifat stateful
Remote televisi sering membuat infrared terlihat seperti satu kode untuk setiap tombol. Remote AC umumnya lebih kompleks. Banyak protokol AC mengirim representasi state remote saat ini, termasuk power, operating mode, target temperature, fan speed, dan pengaturan swing.
Karena itu, gesture “pilih DRY” lebih tepat diperlakukan sebagai transisi state:
sebelum:
power = ON
mode = COOL
temp = 24 C
gesture:
RIGHT
sesudah:
power = ON
mode = DRY
temp = 24 C
kemudian:
encode seluruh state AC yang didukung
kirim frame IRPendekatan ini lebih aman daripada memperlakukan COOL dan DRY sebagai dua array pulse mentah yang tidak saling berhubungan. Ketika gesture berikutnya mengubah power atau temperatur, firmware tetap mengetahui state yang ingin diterapkan ke AC.
Project IRremoteESP8266 menyediakan model tersebut melalui IRac dan stdAc::state_t untuk protokol AC yang didukung. Class khusus protokol juga tersedia ketika abstraksi umum tidak dapat mewakili fitur tertentu. Dukungan tetap bergantung pada merek AC, remote, protokol, dan dalam beberapa kasus varian model.
State machine kecil mencegah gesture ambigu
Sensor gesture dapat menghasilkan observasi berulang atau belum lengkap selama tangan melintasi area sensing. Mengirim IR untuk setiap observasi sementara dapat membuat satu swipe berubah menjadi beberapa perintah AC.
Tambahkan batas command antara proses recognition dan transmission:
IDLE
|
| gesture valid
v
UPDATE_STATE
|
v
SEND_IR
|
v
UPDATE_LCD
|
v
COOLDOWN
|
| tangan menjauh / timeout selesai
v
IDLECooldown bukan persyaratan protokol AC. Ini adalah kebijakan input untuk mencegah satu gerakan fisik dibaca berulang kali.
Handler sederhana dapat memisahkan kebijakan tersebut dari proses encoding protokol:
void applyGesture(Gesture gesture, AcState &state) {
switch (gesture) {
case Gesture::Up:
state.power = true;
break;
case Gesture::Down:
state.power = false;
break;
case Gesture::Left:
state.power = true;
state.mode = AcMode::Cool;
break;
case Gesture::Right:
state.power = true;
state.mode = AcMode::Dry;
break;
default:
return;
}
sendAcState(state);
renderAcState(state);
}Keputusan untuk menyalakan AC ketika pengguna memilih mode merupakan pilihan desain produk. Menaruh keputusan itu dalam satu fungsi transisi membuat perilakunya jelas dan mudah diuji.
LCD menampilkan intended state, bukan berpura-pura sebagai feedback
LCD dapat menampilkan suhu ruangan, mode AC yang dipilih, dan power state tanpa membawa video kamera:
26.4 C
AC: ON
MODE: COOL
SET: 24 CAda batas penting: transmitter IR biasa bekerja satu arah. Memperbarui LCD setelah frame dikirim hanya membuktikan bahwa ESP32-S3 mencoba mengirim perintah; itu tidak membuktikan AC menerima atau menerapkannya.
Pengguna juga dapat memakai remote asli dan mengubah AC tanpa diketahui ESP32-S3. Nilai pada display karena itu merupakan intended state milik controller, kecuali AC menyediakan channel feedback terpisah atau sistem menambahkan receiver yang dapat mengamati traffic remote yang relevan.
Pemisahan makna ini mencegah interface yang terlihat meyakinkan tetapi sebenarnya menampilkan asumsi sebagai state perangkat yang terukur.
Pengukuran suhu tetap menjadi tugas sensor suhu
Controller dapat menampilkan suhu ruangan atau menggunakannya untuk otomasi. Pengukuran tersebut sebaiknya berasal dari sensor suhu, bukan sensor gesture.
Sensor temperatur dan kelembapan berbasis I2C dapat berbagi control bus selama address dan persyaratan elektrikalnya kompatibel. Arsitekturnya tetap hemat GPIO:
I2C
+-- sensor gesture
+-- sensor temperatur/kelembapan
SPI atau parallel display bus
+-- LCD
GPIO
+-- driver transmitter IRJika LCD menggunakan interface paralel, menghilangkan kamera memberi keuntungan besar. Kamera DVP seperti OV2640 memerlukan bus pixel 8-bit ditambah clock dan sinyal sinkronisasi. Sensor gesture memindahkan input pengguna ke I2C sehingga lebih banyak GPIO dan bandwidth peripheral tersedia untuk display.
IR LED memerlukan driver yang benar
ESP32-S3 dapat menghasilkan sinyal IR termodulasi, tetapi GPIO bukan pengganti rangkaian driver IR LED. Jangkauan optik bergantung pada arus LED, kondisi pulse, karakteristik emitter, orientasi, dan receiver pada AC.
Batas hardware yang umum adalah:
ESP32-S3 GPIO
|
v
driver transistor / MOSFET
|
v
IR LED
|
v
receiver IR ACResistor, transistor, dan arus LED harus dipilih berdasarkan rating komponen yang benar-benar digunakan. Menyalin nilai resistor dari schematic tanpa memeriksa supply voltage, forward voltage, allowed pulse current, dan karakteristik driver dapat menghasilkan jangkauan yang lemah atau arus berlebihan.
Capture remote asli sebelum menganggap protokol kompatibel
Controller tidak dapat menebak protokol AC hanya karena perangkat memakai remote infrared. Sebelum firmware dikunci ke suatu protokol, identifikasi model AC dan remote yang tepat lalu periksa transmission hasil capture.
IRremoteESP8266 mendokumentasikan banyak keluarga protokol AC dan menyediakan tool capture seperti IRrecvDumpV2 untuk membantu identifikasi remote. Jika protokol memiliki dukungan detail di library, firmware dapat membentuk command yang stateful. Jika belum, raw replay dapat mereproduksi state yang sudah direkam, tetapi transisi menjadi lebih sulit dikelola karena setiap capture mewakili konfigurasi remote tertentu.
Untuk proyek ini, set capture awal dapat dibuat kecil tetapi terarah:
OFF
ON + COOL + temperatur yang dipilih
ON + DRY + temperatur yang dipilihCapture tambahan diperlukan ketika fan, swing, temperature, atau setting lain ikut tersedia di interface.
Gesture tanpa kamera mengubah masalah menjadi event deterministik
Untuk ON, OFF, COOL, dan DRY, computer vision tidak memberi banyak nilai tambahan. Controller hanya membutuhkan empat event yang disengaja, bukan model visual tangan pengguna.
Sensor gesture jarak dekat mengubah gerakan tersebut menjadi input ringkas, ESP32-S3 menerapkannya ke state AC yang persisten, layer IR mengenkode state untuk perangkat yang sebenarnya, dan LCD menampilkan apa yang ingin diterapkan controller. Tantangan teknis utamanya bukan lagi image recognition, melainkan menjaga gesture event, state protokol AC, dan state pada display tetap konsisten meskipun infrared tidak memberikan acknowledgement.