0

Arduino detektor tlesknutí

Jak tlesknutím rukou zapínat a vypínat LED diodu si ukážeme v tomto Arduino projektu. Zvuk, který vzniká při tlesknutí rukou, je detekován elektretovým mikrofonem, který je zapojen na analogový vstup Arduina.
Při první detekci tlesknutí pomocí Arduina je LED dioda zapnuta. Po následující úspěšné detekci je pak LED dioda vypnuta. Proto je tento projekt vhodný pro ty, co s Arduinem teprve začínají.
Následující video ukazuje, jak Arduino detektor tlesknutí funguje.

Potřebné vybavení

Následující součástky jsou potřebné k sestavení detektoru tlesknutí:

  • Elektretový mikrofon
  • 100n kondenzátor
  • 10k odpor
  • 100k odpor
  • 220 ohm až 470 ohm odpor
  • LED dioda
  • Arduino Uno nebo podobná Arduino deska
  • Nepájivé pole a propojovací vodiče

Schéma zapojení detektoru tlesknutí a rozložení na nepájivém poli

Postavte celý obvod dle následujících obrázků. Záporný (GND) pin elektretového mikrofonu je ten pin, který je připojen k obalu mikrofonu.

Odpor o velikosti 220 ohm nebo 470 ohm je použitý v sérii s LED diodou (R3 ve schématu).

Ukázkový kód pro detektor tlesknutí

Po úspěšném vytvoření obvodu dle obrázků je nutné nahrát následující program do Arduina. Poté otevřeme Arduino Sériový monitor, jak je uvedeno ve videu, aby jsme zjistili detekční hodnotu tlesknutí. Tato hodnota je pak programem použita jako zvuková hranice, při jejímž překonání zapneme či vypneme LED diodu. Kontrola je vykonána na této řádce kódu:

  if (analog_val > 10) {          // trigger threshold

Hodnota v kontrolní if podmínce (zde 10) může být změněna, pokud nám nevyhovuje citlivost na tlesknutí.

//---------------------------------------------------------------------
//  Program:      clap switch
//
//  Description:  Switches on an LED when hands are clapped.
//                Electret microphone connected to A2, LED and series
//                resistor connected to digital pin 2
//
//---------------------------------------------------------------------
void setup() {
  Serial.begin(9600);             // using serial port to check analog value
  pinMode(2, OUTPUT);             // LED on digital pin 2
}

void loop() {
  int analog_val;                 // analog value read from A2
  static bool led_state = false;  // current state of LED
  
  analog_val = analogRead(A2);

  if (analog_val > 10) {          // trigger threshold
    // toggle LED
    if (led_state) {
      led_state = false;          // LED was on, now off
      digitalWrite(2, LOW);
      Serial.println(analog_val); // print analog value for debug purposes
    }
    else {
      led_state = true;
      digitalWrite(2, HIGH);      // LED was off, now on
      Serial.println(analog_val);
    }
    delay(50);  // wait for clap noise to subside
  }
}

Jak obvod funguje

Elektretový mikrofon potřebuje odpor R1 pro zajištění napájecího napětí pro tranzistor uvnitř mikrofonu. Kondenzátor C1 blokuje veškeré stejnosměrné napětí z Arduino analogového pinu a dovolí pouze zvukové střídavé napětí z mikrofonu projít skrz.

Odpor R2 „stahuje“ analogový pin na zem (GND) pro zajištění čtení nulové hodnoty z analogového pinu v případě, kdy mikrofon nedetekuje žádný zvuk. Pokud bychom odpor R2 nepoužili, analogový pin by se nacházel v nenulovém stavu a detekoval nežádoucí šum z mikrofonu.

Pokud v okolí mikrofonu tleskneme, mikrofon tento zvuk zachytí a přenese na malé elektrické napětí, které je poté detekováno analogovým pinem Arduino desky. Pokud je hodnota načtená z analogového pinu dostatečně velká (překoná nastavenou hranici), LED dioda bude zapnuta nebo vypnuta (dle předchozího stavu).

Pokud se nám nedaří naměřit dostatečně velké napětí z mikrofonu, je možné zvýšit zisk pomocí trimru na modulu s mikrofonem.

 

Převzato a přeloženo: https://startingelectronics.org/beginners/arduino-projects-for-beginners/clap-switch/

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

Luboš

Napsat komentář

Vaše emailová adresa nebude zveřejněna.