Codice Arduino e video: Registratore vocale Arduino ISD1820
L'ISD1820 è un semplice modulo registratore vocale che ti permette di registrare e riprodurre audio usando un Arduino. In questo tutorial imparerai come configurare l'ISD1820 con un Arduino per registrare fino a 20 secondi di suono e riprodurlo su comando. Questo progetto è perfetto per i principianti che vogliono esplorare l'elaborazione audio con Arduino.

Nel corso di questo tutorial troverai identificatori chiave utilizzati nel codice, comeREC,PLAY_E, ePLAY_L. Questi identificatori corrispondono ai pin utilizzati per le funzioni di registrazione e riproduzione. Inoltre, i frammenti di codice forniti aiuteranno a chiarire la logica di programmazione alla base di questo progetto. Per una spiegazione più dettagliata, assicurati di guardare il video a 00:00.
Hardware spiegato
Il componente principale di questo progetto è il modulo registratore vocale ISD1820, che può registrare audio fino a 20 secondi. Dispone di diversi pin per controllare le funzioni di registrazione, riproduzione e feed-through. Il modulo funziona con una tensione di alimentazione da 3V a 4.5V, rendendolo compatibile con la maggior parte delle schede Arduino.
Oltre al modulo ISD1820, avrai bisogno di una scheda Arduino, di un altoparlante e di un microfono. L'Arduino controllerà le funzioni di registrazione e riproduzione tramite i pin digitali. Il funzionamento del modulo è semplice: registra l'audio quando il pin di registrazione viene portato a livello alto e riproduce l'audio quando i pin di riproduzione vengono attivati.
Dettagli della scheda tecnica
| Produttore | ISD1820 |
|---|---|
| Numero di parte | ISD1820 |
| Tensione logica/I/O | 3.3 V tip. |
| Tensione di alimentazione | 3.0 V a 4.5 V |
| corrente di riposo | 0.5 µA tipico. |
| Corrente di funzionamento | 30 mA massimo. |
| Durata di registrazione | 20 secondi al massimo. |
| Tempo di riproduzione | 20 s al massimo. |
| Pacchetto | DIP a 8 pin |
- Assicurarsi che la tensione di alimentazione sia compresa tra 3.0 V e 4.5 V per evitare di danneggiare il modulo.
- Usa resistori per adattare il segnale da 5V dell'Arduino al livello logico di 3.3V per un'interfaccia sicura.
- Monitorare il consumo di corrente; il modulo può assorbire fino a 30 mA durante il funzionamento.
- Collegare un altoparlante a bassa potenza (0,5 W) all'uscita audio per la riproduzione.
- Il modulo supporta varie durate di registrazione; regola la tempistica in base alle tue esigenze.
Istruzioni di cablaggio

Per collegare l'ISD1820 al tuo Arduino, inizia collegando il modulo.VCCCollega il pin all'uscita 3.3V sull'Arduino. Successivamente, collega ilGNDCollegare il pin del modulo a uno dei pin di massa dell'Arduino. Per i pin di controllo, collegare i pin del moduloRECcollega il pin al pin 2 di ArduinoPLAY_Eal pin 3,PLAY_Lal pin 4, eFTal pin 5.
Poiché l'Arduino funziona a 5V, sarà necessario utilizzare un partitore di tensione per collegare in sicurezza i pin di controllo. Ad esempio, collegare una resistenza da 5 kΩ dal pin dell'Arduino al pin di controllo del modulo, quindi collegare una resistenza da 3.3 kΩ dal pin di controllo del modulo alla massa. Ripetere questo processo per eventuali pin di controllo aggiuntivi per assicurarsi che ricevano i livelli di tensione corretti.
Esempi di codice e guida passo-passo
Il seguente frammento di codice definisce i pin utilizzati per la registrazione e la riproduzione. Questo ti permette di fare riferimento facilmente a questi pin nel tuo codice invece di usare valori codificati staticamente.
#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 playbackNella funzione setup inizializziamo i pin come uscite. Questo garantisce che l'Arduino possa controllare efficacemente il modulo 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
}Il ciclo principale controlla l'input dell'utente dal monitor seriale. A seconda del carattere ricevuto, attiverà le azioni appropriate, come la registrazione o la riproduzione dell'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
}
}Questa struttura condizionale permette un controllo flessibile dell'ISD1820 in base all'input dell'utente, rendendo semplice registrare e riprodurre audio quando necessario. Per ulteriori dettagli, il codice completo è riportato sotto l'articolo.
Dimostrazione / Cosa aspettarsi
Una volta che tutto è impostato e il codice è stato caricato, dovresti essere in grado di registrare audio inviando ilrcomando tramite il monitor seriale e riproduzione utilizzando ilpcomando. Il comportamento previsto include un messaggio nel monitor seriale che indica quando la registrazione inizia e termina, così come quando la riproduzione inizia e termina. Tieni presente i tempi impostati nel codice; per esempio, la registrazione è impostata per 3 secondi e la riproduzione per 5 secondi (nel video a 05:00).
/*
* 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);
}
Cose di cui potresti avere bisogno
-
Amazon
-
eBay
-
AliExpressRegistratore vocale ISD1820 di AliExpresss.click.aliexpress.com
Risorse e riferimenti
Nessuna risorsa ancora.
File📁
File Fritzing
-
Modulo registratore vocale ISD1820
ISD1820-module.fzpz0.01 MB