Memfungsikan Lampu Kamera HP Menjadi Repellent Nyamuk

MEMFUNGSIKAN LAMPU KAMERA HP MENJADI REPELLENT NYAMUK


Secara teori lampu kamera HP (flash LED) bisa digunakan sebagai repellent nyamuk, tetapi ada beberapa tantangan dan keterbatasan:

1. Bagaimana Cahaya HP Bisa Mengusir Nyamuk?

  • Spektrum Warna
    • Jika flash HP memiliki mode kuning atau merah, bisa kurang menarik bagi nyamuk.
    • Jika hanya cahaya putih (cool white, 6000K-7000K), efeknya terhadap nyamuk tidak signifikan.
  • Intensitas Cahaya
    • Cahaya yang sangat terang bisa mengganggu navigasi nyamuk nokturnal.
    • Flash HP biasanya kuat tetapi tidak bisa menyala terus-menerus tanpa overheating.
  • Frekuensi Flicker (Kedipan Cepat)
    • Jika bisa dikontrol dengan PWM untuk menghasilkan kedipan pada frekuensi tertentu, mungkin bisa berefek pada nyamuk.

2. Cara Mengontrol Lampu Flash HP dengan Kode

Jika HP kamu berbasis Android, kamu bisa menggunakan Python (kivy) atau Android API untuk mengontrol lampu flash.

Kode Python (Kivy) untuk Menyalakan Flash HP

Gunakan Pyjnius untuk mengakses API Android.

from jnius import autoclass
from time import sleep

CameraManager = autoclass('android.hardware.Camera')
camera = CameraManager.open(0)  # Buka kamera belakang

params = camera.getParameters()
params.setFlashMode(CameraManager.Parameters.FLASH_MODE_TORCH)
camera.setParameters(params)
camera.startPreview()

sleep(10)  # Nyalakan selama 10 detik

# Matikan lampu flash
params.setFlashMode(CameraManager.Parameters.FLASH_MODE_OFF)
camera.setParameters(params)
camera.stopPreview()
camera.release()

Cara Kerja:

  • Menyalakan lampu flash kamera selama 10 detik.
  • Bisa dikombinasikan dengan kedipan cepat (PWM) jika bisa dikontrol.

3. Cara Mengontrol Flash dengan Aplikasi Android (Java/Kotlin)

Jika kamu ingin membuat aplikasi Android yang bisa menghidupkan flash sebagai repellent, kamu bisa pakai kode berikut (di Java/Kotlin).

Java (Android Studio - Menghidupkan Flash)

CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
String cameraId = cameraManager.getCameraIdList()[0]; // Kamera belakang
cameraManager.setTorchMode(cameraId, true);  // Nyalakan Flash

Kotlin

val cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameraId = cameraManager.cameraIdList[0]  // Kamera belakang
cameraManager.setTorchMode(cameraId, true)  // Nyalakan flash

Fitur tambahan yang bisa ditambahkan:Mode Flicker → Mengedipkan flash pada frekuensi tertentu
Mode Warna (jika ada dual-tone flash) → Mengubah warna lampu


4. Apakah Ini Efektif?

  • Jika hanya menyalakan flash HP biasa, efeknya kecil terhadap nyamuk.
  • Jika bisa dikontrol kedipan cepat (PWM) atau warna merah/kuning, kemungkinan lebih efektif.
  • Lebih efektif jika dikombinasikan dengan suara ultrasonik (bisa diputar melalui speaker HP).

Kalau kamu ingin bereksperimen dengan PWM atau frekuensi cahaya tertentu, bisa coba dengan sensor cahaya eksternal (Arduino/Raspberry Pi) untuk menyesuaikan intensitasnya.


Bereksperimen dengan PWM atau Frekwensi Cahaya Merah/kuning:

Saya tidak dapat menjalankan kode ini langsung di perangkat Android untuk eksperimen, tetapi saya bisa membantu memodifikasinya agar bisa menggunakan PWM (kedipan cepat) atau mengontrol warna (jika flash mendukung dual-tone LED merah/kuning).


1. Menambahkan Efek PWM (Kedipan Cepat)

Untuk membuat lampu flash berkedip cepat pada frekuensi tertentu, kita bisa menggunakan loop dengan waktu nyala dan mati yang cepat.

Kode Python untuk Flicker PWM

from jnius import autoclass
from time import sleep

CameraManager = autoclass('android.hardware.Camera')
camera = CameraManager.open(0)  # Buka kamera belakang
params = camera.getParameters()

def flash_flicker(frequency=10, duration=10):
    """
    Menyalakan dan mematikan flash dengan frekuensi tertentu.
    
    :param frequency: Frekuensi kedipan dalam Hertz (Hz)
    :param duration: Total waktu eksperimen dalam detik
    """
    interval = 1 / (2 * frequency)  # Waktu nyala dan mati dalam detik
    end_time = time.time() + duration

    while time.time() < end_time:
        params.setFlashMode(CameraManager.Parameters.FLASH_MODE_TORCH)
        camera.setParameters(params)
        camera.startPreview()
        sleep(interval)  # Waktu nyala

        params.setFlashMode(CameraManager.Parameters.FLASH_MODE_OFF)
        camera.setParameters(params)
        camera.stopPreview()
        sleep(interval)  # Waktu mati

flash_flicker(frequency=15, duration=10)  # Flicker 15 Hz selama 10 detik

camera.release()  # Matikan kamera setelah eksperimen selesai

Efek PWM: Lampu akan berkedip dengan frekuensi 15 Hz (sesuai eksperimen ultrasonic)
Eksperimen dengan frekuensi lain: Coba frekuensi 5 Hz, 20 Hz, atau lebih tinggi


2. Mengubah Warna Flash (Jika Mendukung Dual-Tone LED)

Jika HP memiliki dual-tone flash (kuning & putih), kita bisa mencoba memanipulasi warnanya menggunakan API Android.

Kode Java/Kotlin untuk Mengubah Warna Flash

Di Android API level 23+, kita bisa mengontrol intensitas lampu dengan Camera2 API.

Java:

CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
String cameraId = cameraManager.getCameraIdList()[0]; // Kamera belakang

// Set ke mode torch (flash tetap menyala)
cameraManager.setTorchMode(cameraId, true);

// Jika ada dual-tone flash, atur intensitas ke warna hangat (kuning)
CaptureRequest.Builder request = camera.createCaptureRequest(CameraDevice.TEMPLATE_MANUAL);
request.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
request.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_INCANDESCENT);  // Mode lampu kuning

Kelemahan: API Python tidak bisa langsung mengakses fitur ini, harus melalui Java/Kotlin dengan Android Studio.


Kesimpulan

  • Flash HP bisa dibuat berkedip cepat (PWM) untuk eksperimen anti-nyamuk.
  • Jika HP punya dual-tone flash, bisa coba mengubah warna ke kuning.
  • Untuk warna merah, perlu filter eksternal (karena flash HP biasanya putih/kekuningan).
  • Eksperimen dengan frekuensi PWM bisa membantu menentukan apakah kedipan tertentu efektif untuk mengusir nyamuk.

Kamu bisa coba kode ini langsung di Android (misalnya menggunakan Pydroid3 untuk Python atau Android Studio untuk Java/Kotlin). Lebih lanjut perlu modifikasi lebih lanjut.


Pyjnius Tidak Bisa Mengakses Api Kamera Di Android. 

Error "NULL result without error in PyObject_Call" biasanya terjadi karena Pyjnius tidak bisa mengakses API kamera di Android. Masalah ini sering muncul di Pydroid3 karena keterbatasan hak akses terhadap CameraManager.


Solusi yang Bisa Dicoba

1. Gunakan Modul "androidhelper" Sebagai Alternatif

Di Pydroid3, kamu bisa menggunakan androidhelper untuk mengontrol flash.

Coba kode berikut:

import androidhelper
import time

droid = androidhelper.Android()

def flash_flicker(frequency=10, duration=10):
    interval = 1 / (2 * frequency)  # Hitung waktu nyala dan mati dalam detik
    end_time = time.time() + duration

    while time.time() < end_time:
        droid.cameraToggleFlash(True)  # Nyalakan flash
        time.sleep(interval)

        droid.cameraToggleFlash(False)  # Matikan flash
        time.sleep(interval)

flash_flicker(frequency=15, duration=10)  # Flicker 15 Hz selama 10 detik

Keuntungan:

  • Tidak butuh Pyjnius, langsung menggunakan API bawaan Pydroid3.
  • Bisa mengontrol flash tanpa perlu hak akses tambahan.

2. Jika Tetap Ingin Menggunakan Pyjnius

  • Pastikan HP sudah memberi akses kamera ke Pydroid3.
  • Coba jalankan ulang Pydroid3 dan pastikan "Storage Permissions" sudah aktif.
  • Coba cek apakah Pyjnius bisa memanggil Java API lainnya.

Kode untuk test Pyjnius:

from jnius import autoclass

Build = autoclass('android.os.Build')
print(f"Device: {Build.MODEL}")

Jika berhasil, berarti Pyjnius bisa dipakai.
Jika gagal, berarti Pyjnius tidak bisa digunakan di Pydroid3 tanpa rooting atau modifikasi lebih lanjut.


Kesimpulan

  • Gunakan androidhelper jika ingin solusi yang lebih simpel di Pydroid3.
  • Pyjnius kadang tidak bisa mengakses kamera di Pydroid3 tanpa izin tambahan.
  • Jika ingin kontrol lebih lanjut (seperti warna flash), lebih baik pakai Java/Kotlin di Android Studio.

Jika dijalankan kode dengan androidhelper di Pydroid3, maka tidak berhasil!

Di Pydroid3, modul androidhelper memang tidak tersedia sebagai bawaan, tetapi ada alternatif lain untuk mengontrol flash kamera HP tanpa androidhelper atau Pyjnius, yaitu menggunakan subprocess untuk memanggil perintah ADB (Android Debug Bridge).


Solusi: Gunakan ADB Commands via Python di Pydroid3

Karena Pydroid3 berjalan dalam sandbox, kamu bisa menggunakan perintah shell ADB untuk mengontrol flash.

1. Nyalakan Flash Kamera HP

Coba jalankan kode ini:

import os

# Nyalakan flash
os.system("termux-camera-flash on")

🔹 Penjelasan:

  • Perintah ini akan mengaktifkan lampu flash kamera melalui termux-camera-flash.
  • Pastikan Termux terinstal dan izin kamera telah diberikan.

2. Matikan Flash Kamera HP

import os

# Matikan flash
os.system("termux-camera-flash off")

3. Membuat Flash Berkedip (PWM 10 Hz)

Jika ingin membuat flash berkedip cepat, gunakan loop dengan delay kecil:

import os
import time

def flash_flicker(frequency=10, duration=10):
    interval = 1 / (2 * frequency)  # Waktu nyala dan mati dalam detik
    end_time = time.time() + duration

    while time.time() < end_time:
        os.system("termux-camera-flash on")
        time.sleep(interval)  # Nyalakan sebentar

        os.system("termux-camera-flash off")
        time.sleep(interval)  # Matikan sebentar

flash_flicker(frequency=15, duration=10)  # Kedip 15 Hz selama 10 detik

Syarat Agar Berfungsi

  1. Install Termux di HP kamu.
  2. Berikan izin kamera ke Termux dengan menjalankan:
    termux-camera-permission grant
    
  3. Coba manual dulu di Termux:
    termux-camera-flash on
    
    Jika ini berhasil, berarti kode Python juga bisa digunakan.

Kesimpulan

Alternatif tanpa Pyjnius atau androidhelper
Bisa mengontrol flash dari Python via Termux
Bisa dibuat berkedip seperti PWM untuk eksperimen

Sepertinya Termux tidak memiliki perintah bawaan untuk mengontrol kamera atau flash. Perintah termux-camera-permission memang tidak tersedia di Termux terbaru.

Alternatif 1: Gunakan Termux API

Termux memiliki paket tambahan Termux:API, yang memungkinkan akses ke fitur perangkat keras, termasuk flash kamera.

Langkah-Langkah Install Termux API

  1. Pastikan Termux terinstal dari F-Droid (bukan dari Play Store).
  2. Install Termux API dengan perintah berikut di Termux:
    pkg update && pkg install termux-api
    
  3. Coba nyalakan flash secara manual di Termux:
    termux-torch on
    
  4. Matikan flash dengan perintah:
    termux-torch off
    
  5. Jika berhasil, coba jalankan perintah tersebut lewat Python di Pydroid3:
    import os
    os.system("termux-torch on")  # Nyalakan flash
    os.system("termux-torch off")  # Matikan flash
    

Alternatif 2: Gunakan Aplikasi Pihak Ketiga

Jika Termux tidak bisa mengontrol flash, kamu bisa menggunakan aplikasi pihak ketiga yang mendukung API atau kontrol flash melalui perintah shell. Misalnya:

  • Tasker (otomatisasi tugas, bisa dikontrol dari Python)
  • Automate (mendukung kontrol flash berdasarkan script)

Jika ingin solusi yang lebih sederhana, Android Studio dengan Java/Kotlin adalah cara terbaik untuk mengontrol flash HP secara langsung.

Coba langkah-langkah di atas dan beri tahu saya apakah berhasil!


Comments

Popular posts from this blog

Repellent Digital Tanpa Asdr

Repellent Digital Pakai ASDR

Modifikasi Rangkaian Rectifier Menjadi Repellent Nyamuk