Tento zvukový senzor pro Arduino poskytuje digitální výstup OUT, tedy informaci sepnuto-nesepnuto. Hranici pro detekci požadované hladiny hluku je možné nastavit pomocí trimru, který je umístěn přímo na modulu. Nejdůležitější součástkou modulu je samozřejmě elektretový mikrofon společně s operačním zesilovačem LM393. Deska pro zvukový senzor také obsahuje indikační červenou LED diodu, která se rozsvítí při hluku přesahujícím nastavenou hranici. Vzhledem k této vlastnosti zvukového senzoru ho tedy lze využít jako detektor hluku v okolí, například pro kontrolu běhu motoru či zavzdušnění čerpadla, nebo také pro detekci klepání či tlesknutí.

Zvukový senzor

Tento modul se zvukovým senzorem má 3 propojovací piny. Propojení s Arduinem je jednoduché a uvedené na obrázku níže. Stačí tedy připojit Gnd na zem, OUT na libovolný digitální pin a +5V na 5V napájení Arduino desky. Signál OUT je v klidovém režimu roven napájecímu napětí a při detekování hluku se přepne do log0, tedy napětí rovnému přibližně Gnd (0-0,2 V).

Zapojení zvukového senzoru

Ukázkový kód pro zapojení a vyzkoušení zvukového senzoru obsahuje jako první inicializaci digitálního vstupu zvukového senzoru a proměnných, které slouží pro detekci sepnutí nastavené hladiny hluku, sepnutí Alarm módu, měření času od sepnutí a nastavení počtu milisekund pro uvedení do klidového režimu od narušení. V podprogramu setup nejprve nastavíme komunikaci po sériové lince s rychlostí 9600 baud a poté nastavíme vstup ze zvukového senzoru jako digitální. V loop smyčce se nachází příkazy, které při každém průběhu načtou hodnotu digitálního vstupu do proměnné „hluk“ a poté kontrolují, jestli nebylo detekováno překročení nastavené hranice hluku. Při detekci je pak do proměnné „casSepnuti“ uložen pomocí funkce „millis()“ aktuální čas od zapnutí Arduina při neaktivovaném Alarmu je vytištěna zpráva „Detekce hluku!“. Po této zprávě se následně nastaví proměnná pro Alarm jako splněná a neopakuje se tedy při nové detekci tištění informace. Při novém průběhu smyčkou loop je v případě klidového režimu zkontrolována doba mezi aktuálním časem a časem uloženým při posledním sepnutí. V případě, že rozdíl těchto časů je větší, než jsme si nastavili v proměnné „pauzaPoSepnuti“, a zároveň byl v předchozím případě spuštěn Alarm, dojde k vytištění zprávy o přepnutí do klidového režimu a je vynulována proměnná Alarm.

// Arduino zvukový senzor

// číslo pinu připojeného senzoru
const int senzor = 2;

// proměnná pro detekci sepnutí
// nastavené hladiny hluku
int hluk = HIGH;
// proměnná pro sepnutí Alarm módu
boolean Alarm = false;
// časová proměnná pro měřeni času sepnutí
unsigned long casSepnuti;
// časová proměnná pro nastavení počtu milisekund
// pro uvedení do klidového stavu od narušení
int pauzaPoSepnuti = 500;

void setup ()
{
  // komunikace přes sériovou linku rychlosti 9600 baud
  Serial.begin(9600);
  // inicializace digitálního vstupu
  pinMode (senzor, INPUT);
}

void loop ()
{
  // načtení hodnoty digitálního vstupu
  hluk = digitalRead (senzor);
  // při detekci nastavené hladiny hluku
  if (hluk == LOW)
  {
    // uložení času sepnutí
    casSepnuti = millis();
    // při první detekci vytiskne zprávu o detekci hluku
    // pro nové tisknutí musí proběhnout vrácení do klidového režimu
    if (!Alarm){
      Serial.println("Detekce hluku!");
      Alarm = true;
    }
  }
  // při klidovém režimu udělej následující
  else
  {
    // pokud je rozdíl mezi časem sepnutí a aktuálním časem
    // vetší než nastavená pauzaPoSepnuti a zároveň byl sepnuty Alarm,
    // vytiskni informaci o klidovém režimu a nastav Alarm pro nové použití
    if( (millis()-casSepnuti) > pauzaPoSepnuti  &&  Alarm){
      Serial.println("Klidovy rezim.");
      Alarm = false;
    }
  }
}

Po nahrání programu do Arduino desky si můžeme otevřít Sériový monitor a sledovat informace o detekci nastavené hladiny hluku při jejím narušení a následném klidu. Musíme však počítat s tím, že bude nutné umístit celý modul blízko detekovaného objektu, aby jsme zamezili falešným spuštěním od nežádoucích zdrojů.

Seznam použitých komponent:

http://dratek.cz/arduino/883-arduino-zvukovy-senzor-1420494561.html

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino/844-arduino-nepajive-pole.html

http://dratek.cz/arduino-kabelaz-propoje-rozsireni/1063-arduino-vodice-samec-samec-40-kusu.html

FB tw

Další podobné články