Lampu LED Dikawal Tepukan Tangan

Domechy Project Library | DZ00

projek ini bawakan kepada anda oleh

3D Printed LED Light

Penyataan Masalah

Saya terfikir apa yang diperlukan untuk menghasilkan sebuah lampu LED yang boleh dihidupkan dan dimatikan bila kita tepuk tangan. Memandangkan latar belakang saya adalah daripada bidang mekanikal dan bukannya elektronik, saya mengambil keputusan untuk mereka bentuk dan membina sendiri lampu LED cetakan 3D yang boleh diaktifkan oleh tepukan tangan ni sebagai proses pembelajaran untuk saya.

Bagaimana Ia Berfungsi?

Sebuah lampu LED biasa akan menyala apabila arus elektrik mengalir melaluinya. Jika kita sambungkan terus dengan bateri, lampu tersebut akan kekal menyala sehingga bateri habis. Bila kita tambah suis ke dalam litar, kita boleh membuka dan menutup litar, sekaligus menghidupkan atau mematikan lampu LED tersebut.

Sekarang, sebagai ganti suis fizikal, kita boleh gunakan mikropengawal (microcontroller) + sensor bunyi. Sensor bunyi menukar gelombang bunyi kepada isyarat elektrik. Arduino akan sentiasa memantau isyarat ini dan hanya menghidupkan LED apabila bunyi melebihi tahap tertentu yang kita tetapkan. Bila kita tepuk tangan berhampiran sensor bunyi tersebut, ia akan menghasilkan lonjakan isyarat elektrik, lalu Arduino dapat mengesan lonjakan tersebut lalu memberi arahan kepada LED untuk mula menyala atau menutup.

Begitulah cara lampu LED yang dikawal melalui tepukan tangan berfungsi.

Komponen Utama Projek Ini

  • Arduino Nano – mikropengawal untuk menyimpan program dan mengawal LED

  • Modul Sensor Bunyi (KY-038) – menukar bunyi kepada isyarat elektrik

  • Pita LED (WS2812B) – menghasilkan cahaya

Komponen Tambahan

  • Penyesuai AC-DC (AC-DC Adapter) – menukar arus ulang-alik 110V/240V kepada arus terus 5V

  • Perintang (220 Ω)

  • Kapasitor (1000 µF, 6.3V)

Rekabentuk Mekanikal

Saya mereka bentuk dua bahagian cetakan 3D yang membentuk perkataan 作 (saku), yang bermaksud “mencipta” atau “membina”.

  • Tapak (Base): Menempatkan strip LED di sekeliling dinding bahagian dalam. Bahagian bawah dan atas mempunyai ketebalan berbeza untuk menghalang penutup daripada tergelincir sepenuhnya.

  • Penutup (Cover): Direka 0.2 mm lebih kecil daripada diameter dalam tapak supaya ia muat dengan ketat tapi masih boleh dicabut.

mechanical parts for the LED light
tapak, penutup dan bekas PCB

PCB Tersuai (Custom PCB)

Ini adalah kunci utama projek ini. Breadboard dengan wayar jumper terlalu besar dan berserabut untuk dimuatkan dalam bekas projek kali ini. Terima kasih kepada PCBWay kerana menaja PCB atau litar untuk projek kali ini. Ia memudahkan cabungan semua komponen yang boleh dimuatkan ke dalam satu litar yang padat.

Circuit schematics of clap activated PCB light
Circuit schematics of clap activated PCB light
PCB design of clap activated LED light
PCB design of clap activated LED light
3D model of clap activated LED light
3D model of clap activated LED light

Pengaturcaraan (Programming)

Kod Arduino akan membaca isyarat daripada sensor bunyi dan menukar status strip LED apabila tepukan tangan dikesan.


#include 
#define SOUND_SENSOR_PIN A0
#define LED_PIN 6
#define NUM_LEDS 70
#define SOUND_THRESHOLD 540
#define BRIGHTNESS 150 // Lower brightness (0-255)

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

bool ledsOn = false;
bool soundExceededThreshold = false;

void setup() {
  Serial.begin(9600);
  strip.begin();
  strip.setBrightness(BRIGHTNESS); // Set brightness to lower level
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  int soundValue = analogRead(SOUND_SENSOR_PIN);
  Serial.println(soundValue); // Print the sound value for debugging

  if (soundValue > SOUND_THRESHOLD) {
    if (!soundExceededThreshold) {
      ledsOn = !ledsOn;
      soundExceededThreshold = true;
    }
  } else {
    soundExceededThreshold = false;
  }

  if (ledsOn) {
    turnOnLeds();
  } else {
    turnOffLeds();
  }

  delay(50); // Small delay to avoid rapid flickering
}

void turnOnLeds() {
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, strip.Color(255, 120, 0)); // Set color to white
  }
  strip.show();
}

void turnOffLeds() {
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, strip.Color(0, 0, 0)); // Turn off LED
  }
  strip.show();
}




Hasil Akhir

Lampu LED akan menyala apabila saya menepuk tangan di hadapan sensor. Yang mengejutkan saya, ia dapat berfungsi walaupun dari jarak beberapa meter dari sensor. Dengan mengubah suai kod Arduino, LED juga boleh ditukar warna mengikut kod yang tetapkan.

Anda boleh tonton video projek ini di sini.

Masalah & Idea Penambahbaikan

Sensor bunyi ini tidak begitu tepat. Kadang-kadang ia bertindak balas terhadap bunyi sekitar, menyebabkan lampu menyala meskipun tiada tepukan tangan.

Dalam versi akan datang, saya bercadang untuk menggunakan modul mikrofon MAX9814 bagi pengesanan bunyi yang lebih boleh dipercayai, atau mungkin mencuba modul pengecaman suara untuk arahan melalui percakapan.

Pengajaran Daripada Projek

Ini adalah projek elektronik peribadi pertama saya, dan saya banyak belajar tentang keperluan voltan dan arus.

Sumber kuasa mesti sepadan dengan voltan (dalam kes ini, 5V DC daripada penyesuai).

Bekalan kuasa mesti memberikan arus yang mencukupi untuk semua komponen digabungkan, jika tidak berisiko menjadi terlalu panas dan rosak.

Sentiasa pilih bekalan kuasa yang boleh menampung arus sedikit lebih tinggi daripada yang diperlukan.

Scroll to Top