Modul nahrávání a přehrávání zvukového záznamu ISD1820

Zvukový modul ISD1820 je přídavná deska s možností ovládání přes Arduino. Tento modul nahrávání a přehrávání zvukového záznamu obsahuje v balení samotný čip na desce plošných spojů společně s mikrofonem a reproduktorem (8 ohm, 500mW). Tento vybraný typ desky je z výroby nastavený na maximálně 10 sekund záznamu.
Celá funkce modulu spočívá v tom, že po stisknutí tlačítka pro nahrávání lze do čipu ISD1820 nahrát až desetisekundový zvukový záznam. Tento záznam pak podle nastavení můžeme pouštět jednorázově či ve smyčce. A v dalším módu lze také nastavit čip jako přímý zesilovač vstupního zvuku z mikrofonu do reproduktoru. Pro ovládání modulu můžeme využít tlačítka na desce. Ovládací signály jsou ale zároveň vyvedeny na pinovou lištu, abychom mohli ovládat vše i z připojeného Arduina.
Pro napájení celého modulu lze použít napětí o velikosti 3 až 5 Voltů. A rozměry hlavní desky jsou 38 x 42,5 mm.

Pro úspěšné propojení zvukového modulu ISD1820 a Arduino desky stačí zapojit celkem 4 vodiče. Propojíme VCC s 5V Arduina, GND se zemí Arduina, P-E s pinem D4 a REC s pinem D5. Pro datové piny je možné vybrat také jiný digitální pin, ale je nutné tuto volbu provést také na začátku programu.

Ukázkový kód obsahuje na svém začátku nastavení čísel propojovacích pinů společně s vytvořením proměnných. První proměnná slouží pro ukládání načteného znaku ze sériové linky a druhá pro nastavení délky záznamu zvuku.
V podprogramu setup zahájíme komunikaci po sériové lince. Následně nastavíme ovládací piny jako výstupní a nastavíme je na logickou nulu. Poté pro informaci vypíšeme instrukce pro ovládání po sériové lince.
V nekonečné smyčce loop v prvním kroku kontrolujeme příchozí znaky po sériové lince. Pokud je detekován alespoň jeden znak, přesuneme se na další příkaz, který načte přijatý znak do proměnné. Tento znak následně kontrolujeme, jestli neobsahuje pro nás některý z nastavených příkazů. Pokud je tedy přijat znak ‚r‘, vypíšeme informaci o nahrávání po sériové lince a aktivujeme tlačítko pro nahrávání. Toto tlačítko poté držíme aktivní po nastavenou dobu, nyní po tři sekundy. Po dané době nastavíme zpět logickou nulu a ukončíme aktuální běh pomocí příkazu break.
Při přijetí znaku ‚p‘ se zachováme obdobně, pouze pro simulaci přehrávacího tlačítka. Vypíšeme tedy informaci po sériové lince, aktivujeme na krátký čas přehrávací tlačítko a poté vyčkáme zbytek aktuálně nastaveného času pomocí příkazu delay. V případě přijetí ostatních znaků se dostaneme do stavu „default“, v kterém pouze vytiskneme informaci o neznámém příkazu.

// Nahrávání zvuku ISD1820

// nastavení čísel propojovacích pinů
#define REC 5
#define PLAY 4
// proměnná pro načtení znaku ze sériové linky
// a pro nastavení délky nahrávání v sekundách
byte znak;
int delka = 3; // sekundy

void setup() {
  // zahájení komunikace po sériové lince
  // rychlostí 9600 baud
  Serial.begin(9600);
  // nastavení pinů jako výstupních
  pinMode(REC, OUTPUT);
  pinMode(PLAY, OUTPUT);
  digitalWrite(REC, LOW);
  digitalWrite(PLAY, LOW);
  // vytištění instrukcí po sériové lince
  Serial.println("Pro zahajeni nahravani stiskni klavesu 'r'");
  Serial.println("Pro prehrani zaznamu stiskni klavesu 'p'");
  Serial.println();
}

void loop() {
  // kontrola příchozích znaků na sériové lince
  if (Serial.available()) {
    // načtení znaku do proměnné
    znak = Serial.read();
    // kontrola přijatého znaku
    switch (znak) {
      // v případě známého znaku vykonáme jeho funkci,
      case 'r':
        Serial.print("Zacni nahravat po dobu ");
        Serial.print(delka);
        Serial.println(" sekund.");
        digitalWrite(REC, HIGH);
        delay(1000*delka);
        digitalWrite(REC, LOW);
        break;
      case 'p':
        Serial.println("Prehraj nahravku.");
        digitalWrite(PLAY, HIGH);
        delay(100);
        digitalWrite(PLAY, LOW);
        delay(1000*delka);
        break;
      // při přijetí ostatních znaků vypíšeme informaci
      // po sériové lince
      default:
        Serial.println("Neznamy prikaz.");
    }
  }
}

Po nahrání ukázkového kódu do Arduino desky s připojeným zvukovým modulem ISD1820 dostaneme podobný výsledek jako níže. U tohoto programu bych rád upozornil na to, že pokud máte nastavené v Serial monitoru zasílání znaků NL a/nebo CR, budete za každým znakem mít také hlášku o jednom či dvou neplatných znacích.

Pro zahajeni nahravani stiskni klavesu 'r'
Pro prehrani zaznamu stiskni klavesu 'p'

Zacni nahravat po dobu 3 sekund.
Prehraj nahravku.

Zvukový modul ISD1820 je zajímavý rozšiřovací modul, který umožňuje nahrávat a následně přehrávat krátké zvukové zprávy. Důležitou výhodou je také jak přítomnost ovládacích tlačítek na desce, tak i jejich vyvedení na pinovou lištu. Díky tomu můžeme celý modul ovládat z připojeného Arduina. Tento modul se hodí do projektů, kde chceme přidat zvukový výstup s možností přímého nahrávání nových zvuků. Může tedy sloužit například jako přehrávač alarmu pro Arduino budík, či záznamník vzkazů. A pro začátek se také hodí to, že v balení máte vše potřebné, tedy desku s mikrofonem a malý reproduktor.

 

Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/1700-modul-nahravani-a-prehravani-zvukoveho-zaznamu-s-mikrofonem-a-reproduktorem-isd1820-1501497691.html

Další podobné články