Code de recherche

Code et vidéo Arduino : enregistreur vocal ISD1820

Code et vidéo Arduino : enregistreur vocal ISD1820

Le module ISD1820 est un enregistreur vocal simple qui vous permet d'enregistrer et de lire de l'audio en utilisant un Arduino. Dans ce tutoriel, vous apprendrez à configurer l'ISD1820 avec un Arduino pour enregistrer jusqu'à 20 secondes de son et le rejouer sur commande. Ce projet est parfait pour les débutants souhaitant explorer le traitement audio avec Arduino.

isd1820 voice recording module

Tout au long de ce tutoriel, vous trouverez des identificateurs clés utilisés dans le code, tels queREC,PLAY_E, etPLAY_L. Ces identifiants correspondent aux broches utilisées pour les fonctions d'enregistrement et de lecture. De plus, les extraits de code fournis aideront à clarifier la logique de programmation derrière ce projet. Pour une explication plus détaillée, n'oubliez pas de consulter la vidéo (voir à 00:00).

Le matériel expliqué

Le composant principal de ce projet est le module d'enregistrement vocal ISD1820, qui peut enregistrer de l'audio jusqu'à 20 secondes. Il possède plusieurs broches permettant de contrôler l'enregistrement, la lecture et le passage direct du signal. Le module fonctionne sous une tension d'alimentation de 3 V à 4,5 V, ce qui le rend compatible avec la plupart des cartes Arduino.

En plus du module ISD1820, vous aurez besoin d'une carte Arduino, d'un haut-parleur et d'un microphone. L'Arduino contrôlera les fonctions d'enregistrement et de lecture via des broches numériques. Le fonctionnement du module est simple : il enregistre l'audio lorsque la broche d'enregistrement est mise à l'état haut et lit l'audio lorsque les broches de lecture sont activées.

Détails de la fiche technique

FabricantISD1820
Numéro de pièceISD1820
Tension logique/E/S3,3 V typ.
Tension d'alimentation3.0 V à 4.5 V
Courant de repos0,5 µA typique
Courant de fonctionnement30 mA maximum
Durée d'enregistrement20 s max.
Durée de lecture20 s max.
Paquet8 broches DIP

  • Assurez-vous que la tension d'alimentation est comprise entre 3.0 V et 4.5 V pour éviter d'endommager le module.
  • Utilisez des résistances pour ramener le signal 5V de l'Arduino au niveau logique 3.3V pour une interface sûre.
  • Surveillez la consommation de courant ; le module peut consommer jusqu'à 30 mA pendant son fonctionnement.
  • Connectez un haut-parleur à faible puissance (0,5 W) à la sortie audio pour la lecture.
  • Le module prend en charge différentes durées d'enregistrement ; ajustez le minutage en fonction de vos besoins.

Instructions de câblage

Arduino wiring for ISD1820 voice_recorder
Arduino wiring for ISD1820 voice_recorder

Pour câbler l'ISD1820 à votre Arduino, commencez par connecter le module.VCCConnectez la broche à la sortie 3.3V de l'Arduino. Ensuite, connectez leGNDConnectez la broche du module à l'une des broches de masse de l'Arduino. Pour les broches de commande, connectez celles du module...RECconnecter la broche à la broche 2 de l'Arduino,PLAY_Eà la broche 3,PLAY_Là la broche 4, etFTà la broche 5.

Comme l'Arduino fonctionne à 5V, vous devrez utiliser un diviseur de tension pour connecter en toute sécurité les broches de commande. Par exemple, connectez une résistance de 5 kΩ entre la broche de l'Arduino et la broche de commande du module, puis connectez une résistance de 3.3 kΩ entre la broche de commande du module et la masse. Répétez ce processus pour toutes les broches de commande supplémentaires afin de vous assurer qu'elles reçoivent les niveaux de tension corrects.

Exemples de code et guide pas à pas

Le fragment de code suivant définit les broches utilisées pour l'enregistrement et la lecture. Cela vous permet de référencer facilement ces broches dans votre code plutôt que d'utiliser des valeurs codées en dur.

#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

Dans la fonction setup, nous initialisons les broches en tant que sorties. Cela garantit que l'Arduino peut contrôler efficacement le module ISD1820.

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
}

La boucle principale vérifie les entrées utilisateur depuis le moniteur série. Selon le caractère reçu, elle déclenchera les actions appropriées, comme l'enregistrement ou la lecture de l'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
    }
}

Cette structure conditionnelle permet un contrôle flexible de l'ISD1820 en fonction des entrées de l'utilisateur, ce qui facilite l'enregistrement et la lecture audio selon les besoins. Pour plus de détails, le code complet est présenté ci-dessous, sous l'article.

Démonstration / À quoi s'attendre

Une fois que tout est configuré et que le code est téléversé, vous devriez pouvoir enregistrer de l'audio en envoyant lercommande via le moniteur série et lecture en utilisant lepcommande. Le comportement attendu comprend une réponse dans le moniteur série indiquant quand l'enregistrement commence et s'arrête, ainsi que quand la lecture commence et se termine. Gardez à l'esprit le timing défini dans le code ; par exemple, l'enregistrement est réglé sur 3 secondes, et la lecture sur 5 secondes (dans la vidéo à 05:00).

Images

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

Ce dont vous pourriez avoir besoin

Ressources et références

Aucune ressource pour le moment.

Fichiers📁

Fichier Fritzing