Code zoeken

Arduino-code en video: ISD1820 Arduino-spraakrecorder

Arduino-code en video: ISD1820 Arduino-spraakrecorder

De ISD1820 is een eenvoudige voicerecordermodule waarmee je audio kunt opnemen en afspelen met behulp van een Arduino. In deze tutorial leer je hoe je de ISD1820 met een Arduino instelt om tot 20 seconden geluid op te nemen en op commando af te spelen. Dit project is perfect voor beginners die audioverwerking met Arduino willen verkennen.

isd1820 voice recording module

In deze tutorial vind je belangrijke identificaties die in de code worden gebruikt, zoals REC, PLAY_E en PLAY_L. Deze identificaties komen overeen met de pinnen die worden gebruikt voor opname- en afspeelfuncties. Daarnaast helpen de meegeleverde codefragmenten om de programmeerlogica achter dit project te verduidelijken. Voor een meer gedetailleerde uitleg, bekijk zeker de video (in video op 00:00).

Hardware uitgelegd

Het hoofdonderdeel van dit project is de ISD1820 voicerecordermodule, die audio tot 20 seconden kan opnemen. Het heeft verschillende pinnen voor het regelen van opname, afspelen en doorvoerfuncties. De module werkt op een voedingsspanning van 3V tot 4,5V, waardoor het compatibel is met de meeste Arduino-borden.

Naast de ISD1820-module heb je een Arduino-bord, een luidspreker en een microfoon nodig. De Arduino regelt de opname- en afspeelfuncties via digitale pinnen. De werking van de module is eenvoudig: het neemt audio op wanneer de opnamepin hoog wordt gezet en speelt audio af wanneer de afspeelpinnen worden geactiveerd.

Datasheetdetails

FabrikantISD1820
OnderdeelnummerISD1820
Logica/IO-spanning3,3 V typ.
Voedingsspanning3,0 V tot 4,5 V
Ruststroom0,5 µA typ.
Bedrijfsstroom30 mA max.
Opnametijd20 sec max.
Afspeeltijd20 sec max.
Behuizing8-DIP

  • Zorg ervoor dat de voedingsspanning tussen 3,0 V en 4,5 V ligt om schade aan de module te voorkomen.
  • Gebruik weerstanden om het 5V Arduinosignaal naar het 3,3V logicaniveau te verlagen voor veilige interfacing.
  • Houd het stroomverbruik in de gaten; de module kan tot 30 mA verbruiken tijdens bedrijf.
  • Sluit een luidspreker met laag vermogen (0,5 W) aan op de audio-uitgang voor afspelen.
  • De module ondersteunt verschillende opnamelengtes; pas de timing aan op basis van je behoeften.

Bedradingsinstructies

Arduino wiring for ISD1820 voice_recorder
Arduino wiring for ISD1820 voice_recorder

Om de ISD1820 op je Arduino aan te sluiten, begin je met het verbinden van de VCC-pin van de module met de 3,3V-uitgang op de Arduino. Verbind vervolgens de GND-pin van de module met een van de aardpinnen van de Arduino. Voor de bedieningspinnen verbind je de REC-pin van de module met Arduino-pin 2, PLAY_E met pin 3, PLAY_L met pin 4 en FT met pin 5.

Aangezien de Arduino op 5V werkt, moet je een spanningsdeler gebruiken om de bedieningspinnen veilig aan te sluiten. Verbind bijvoorbeeld een 5 kΩ-weerstand van de Arduino-pin naar de bedieningspin op de module, en verbind vervolgens een 3,3 kΩ-weerstand van de modulebedieningspin naar aarde. Herhaal dit proces voor eventuele extra bedieningspinnen om ervoor te zorgen dat ze de juiste spanningsniveaus ontvangen.

Codevoorbeelden en uitleg

Het volgende codefragment definieert de pinnen die worden gebruikt voor opname en afspelen. Hiermee kun je deze pinnen eenvoudig in je code refereren in plaats van vaste waarden te gebruiken.

#define REC 2 // pin 2 wordt gebruikt voor opname
#define PLAY_E 3 // pin 3 wordt gebruikt voor afspelen-edge-trigger
#define PLAY_L 4 // pin 4 wordt gebruikt voor afspelen

In de setup-functie initialiseren we de pinnen als uitgangen. Dit zorgt ervoor dat de Arduino de ISD1820-module effectief kan aansturen.

void setup() 
{
  pinMode(REC, OUTPUT); // stel de REC-pin in als uitgang
  pinMode(PLAY_L, OUTPUT); // stel de PLAY_L-pin in als uitgang
  pinMode(PLAY_E, OUTPUT); // stel de PLAY_E-pin in als uitgang
}

De hoofdloop controleert op gebruikersinvoer van de seriële monitor. Afhankelijk van het ontvangen teken worden de juiste acties geactiveerd, zoals opnemen of afspelen van audio.

void loop() {
  while (Serial.available() > 0) {
    char inChar = (char)Serial.read();
    if (inChar == 'p' || inChar == 'P') {
      digitalWrite(PLAY_E, HIGH); // Start afspelen
      delay(50);
      digitalWrite(PLAY_E, LOW); // Stop afspelen
    }
}

Deze conditionele structuur maakt flexibele bediening van de ISD1820 mogelijk op basis van gebruikersinvoer, waardoor het eenvoudig is om audio op te nemen en af te spelen indien nodig. Voor verdere details staat de volledige code onder het artikel.

Demonstratie / Wat te verwachten

Zodra alles is ingesteld en de code is geüpload, moet je audio kunnen opnemen door het r-commando via de seriële monitor te sturen en afspelen met het p-commando. Het verwachte gedrag omvat een reactie in de seriële monitor die aangeeft wanneer opnemen start en stopt, evenals wanneer afspelen begint en eindigt. Houd rekening met de timing die in de code is ingesteld; bijvoorbeeld, opnemen is ingesteld op 3 seconden en afspelen op 5 seconden (in video op 05:00).

Afbeeldingen

Arduino wiring for ISD1820 voice_recorder
Arduino wiring for ISD1820 voice_recorder
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
72-This is the Arduino code and video: ISD1820 Arduino Voice Recorder
Taal: C++
/*
 * ISD1820 Arduino Voice Recorder
 * to record and playback sound using Arduino and ISD1820 Sound Recorder

 * Watch the video https://youtu.be/IfK8z_o5vbk
 * get this code from https://robojax.com
 * Get this code and other Arduino codes from Robojax.com/RJT58
 
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. 

/*
 * ISD1820 Arduino Voice Recorder
 * Code Written by Ahmad Shamshiri for Robojax.com
 * on Jan 04, 2018 at 08:57, in Ajax, Ontario, Canada
  * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 */
#define REC 2 // pin 2 is used for recording
#define PLAY_E 3 // pin 3 , P-E is used for playback-edge trigger
// when PLAY_E goes HIGH, playback STARTS and continues
// ISD1820 Arduino Voice Recorder for Robojax.com 

#define PLAY_L 4 // pin 4 , P-Lis used for playback  
// when PLAY_L is HIGH, it will playback. As soon as it goes LOW, playback STOPS
// So you have to keep it HIGH to keep playing


#define FT 5 // pin 5 is used for feed through
// if the SPI (speaker) pin is used to send audio to another device, 
// set FT to high and any audio from the microphone will pass through the SPI connector
// and will NOT record

#define playTime 5000 // playback time 5 seconds
#define recordTime 3000 // recording time 3 seconds
#define playLTime 900 // press and release playback time 0.9 seconds

void setup() 
{
  // ISD1820 Arduino Voice Recorder for Robojax.com 
  pinMode(REC,OUTPUT);// set the REC pin as output
  pinMode(PLAY_L,OUTPUT);// set the PLAY_L pin as output
  pinMode(PLAY_E,OUTPUT);// set the PLAY_e pin as output
  pinMode(FT,OUTPUT);// set the FT pin as output  
  Serial.begin(9600);// set up Serial monitor   
}

void loop() {
  // ISD1820 Arduino Voice Recorder for Robojax.com 
    while (Serial.available() > 0) {
          char inChar = (char)Serial.read();
            if(inChar =='p' || inChar =='P'){
            digitalWrite(PLAY_E, HIGH);
            delay(50);
            digitalWrite(PLAY_E, LOW);  
              Serial.println("Playback Started");  
            delay(playTime);
            
              Serial.println("Playback Ended");
            break; 
            }// if          
            else if(inChar =='r' || inChar =='R'){
              digitalWrite(REC, HIGH);
              Serial.println("Recording started");
              delay(recordTime);
              digitalWrite(REC, LOW);
              Serial.println("Recording Stopped ");              
            } 
            else if(inChar =='l' || inChar =='L'){
            digitalWrite(PLAY_L, HIGH); 
              Serial.println("Playback L Started");  
            delay(playLTime);
            digitalWrite(PLAY_L, LOW);
              Serial.println("Playback L Ended");            
            }             
    // ISD1820 Arduino Voice Recorder for Robojax.com         
      Serial.println("**** Serial Monitor Exited");      
    }// wihile
Serial.println("**** Enter r to record, p to play");

  delay(500);
}

Dingen die je misschien nodig hebt

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Fritzing-bestand