Suchcode

Arduino-Code und Video: ISD1820 Arduino-Sprachrecorder

Arduino-Code und Video: ISD1820 Arduino-Sprachrecorder

Das ISD1820 ist ein einfaches Sprachaufnahme-Modul, das es Ihnen ermöglicht, mit einem Arduino Audio aufzunehmen und wiederzugeben. In diesem Tutorial lernen Sie, wie Sie das ISD1820 mit einem Arduino einrichten, um bis zu 20 Sekunden Ton aufzunehmen und auf Befehl wiederzugeben. Dieses Projekt ist ideal für Anfänger, die die Audioverarbeitung mit Arduino erkunden möchten.

isd1820 voice recording module

Im Verlauf dieses Tutorials finden Sie wichtige Bezeichner, die im Code verwendet werden, wie zum BeispielREC,PLAY_E, undPLAY_L. Diese Bezeichner entsprechen den Pins, die für Aufnahme- und Wiedergabefunktionen verwendet werden. Zusätzlich werden die bereitgestellten Codeausschnitte dazu beitragen, die Programmierlogik hinter diesem Projekt zu verdeutlichen. Für eine detailliertere Erklärung sollten Sie sich unbedingt das Video ansehen (im Video bei 00:00).

Hardware erklärt

Die Hauptkomponente dieses Projekts ist das ISD1820-Sprachaufnahmemodul, das Audio für bis zu 20 Sekunden aufnehmen kann. Es verfügt über mehrere Pins zur Steuerung von Aufnahme-, Wiedergabe- und Durchschleiffunktionen. Das Modul arbeitet mit einer Versorgungsspannung von 3 V bis 4,5 V, wodurch es mit den meisten Arduino-Boards kompatibel ist.

Zusätzlich zum ISD1820-Modul benötigen Sie ein Arduino-Board, einen Lautsprecher und ein Mikrofon. Das Arduino steuert die Aufnahme- und Wiedergabefunktionen über digitale Pins. Die Funktionsweise des Moduls ist einfach: Es nimmt Audio auf, wenn der Aufnahme-Pin auf HIGH gesetzt wird, und spielt Audio ab, wenn die Wiedergabe-Pins aktiviert werden.

Details zum Datenblatt

HerstellerISD1820
TeilenummerISD1820
Logik-/I/O-Spannung3.3 V typ.
Versorgungsspannung3.0 V bis 4.5 V
Ruhestrom0,5 µA typ.
Betriebsstrommax. 30 mA
Aufnahmedauer20 Sek. max.
Wiedergabezeit20 Sek. max.
Paket8-poliges DIP-Gehäuse

  • Stellen Sie sicher, dass die Versorgungsspannung zwischen 3,0 V und 4,5 V liegt, um eine Beschädigung des Moduls zu vermeiden.
  • Verwenden Sie Widerstände, um das 5V-Arduino-Signal auf das 3.3V-Logikniveau anzupassen und so eine sichere Schnittstelle zu gewährleisten.
  • Stromaufnahme überwachen; das Modul kann während des Betriebs bis zu 30 mA ziehen.
  • Schließen Sie einen Lautsprecher mit geringer Leistung (0,5 W) an den Audioausgang zur Wiedergabe an.
  • Das Modul unterstützt verschiedene Aufnahmedauern; passen Sie die Zeitsteuerung an Ihre Bedürfnisse an.

Verdrahtungsanleitung

Arduino wiring for ISD1820 voice_recorder
Arduino wiring for ISD1820 voice_recorder

Um das ISD1820 an dein Arduino zu verkabeln, beginne damit, die Anschlüsse des Moduls zu verbindenVCCSchließen Sie den Pin an den 3,3V-Ausgang des Arduino an. Als Nächstes verbinden Sie dasGNDVerbinden Sie den Pin des Moduls mit einem der GND-Pins des Arduino. Für die Steuerpins verbinden Sie die des ModulsRECPin an Arduino-Pin 2,PLAY_Ean Pin 3,PLAY_Lan Pin 4, undFTan Pin 5.

Da das Arduino mit 5V arbeitet, müssen Sie einen Spannungsteiler verwenden, um die Steuerpins sicher anzuschließen. Zum Beispiel verbinden Sie einen 5 kΩ-Widerstand vom Arduino-Pin mit dem Steuerpin des Moduls und schließen dann einen 3.3 kΩ-Widerstand vom Steuerpin des Moduls an Masse an. Wiederholen Sie diesen Vorgang für alle zusätzlichen Steuerpins, damit sie die richtigen Spannungspegel erhalten.

Codebeispiele und Schritt-für-Schritt-Anleitung

Das folgende Code-Snippet definiert die Pins, die für die Aufnahme und Wiedergabe verwendet werden. Dadurch können Sie in Ihrem Code einfach auf diese Pins verweisen, anstatt hartkodierte Werte zu verwenden.

#define REC 2 // pin 2 is used for recording
#define PLAY_E 3 // pin 3 is used for playback-edge trigger
#define PLAY_L 4 // pin 4 is used for playback

In der setup-Funktion initialisieren wir die Pins als Ausgänge. Dadurch wird sichergestellt, dass der Arduino das ISD1820-Modul effektiv steuern kann.

void setup() 
{
  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
}

Die Hauptschleife prüft auf Benutzereingaben vom seriellen Monitor. Je nach empfangenem Zeichen löst sie die entsprechenden Aktionen aus, wie etwa das Aufzeichnen oder Abspielen von Audio.

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

Diese bedingte Struktur ermöglicht die flexible Steuerung des ISD1820 anhand von Benutzereingaben und erleichtert so das Aufnehmen und Abspielen von Audio nach Bedarf. Für weitere Details finden Sie den vollständigen Code unterhalb des Artikels.

Demonstration / Was Sie erwartet

Sobald alles eingerichtet ist und der Code hochgeladen wurde, sollten Sie in der Lage sein, Audio aufzunehmen, indem Sie dasrBefehl über den seriellen Monitor und Wiedergabe mit dempBefehl. Das erwartete Verhalten umfasst eine Ausgabe im seriellen Monitor, die anzeigt, wann die Aufnahme beginnt und endet, sowie wann die Wiedergabe beginnt und endet. Beachte die im Code eingestellten Zeitangaben; zum Beispiel ist die Aufnahme auf 3 Sekunden und die Wiedergabe auf 5 Sekunden eingestellt (im Video bei 05:00).

Bilder

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
Sprache: 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);
}

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Noch keine Ressourcen vorhanden.

Dateien📁

Fritzing-Datei