Nr. 48 – ISD1820 Sprachrekorder und Sprachwiedergabe mit Arduino

Sprachrekorder und Sprachwiedergabe mit Arduino mit ISD1820

Das Sprachaufzeichnungsmodul basiert auf dem ISD1820 Chip. Er kann kurze Sequenzen aus Sprache oder anderen Geräuschen von ca. 20 Sekunden Länge aufnehmen und auch wiedergeben. Die Ansteuerung dieses Moduls mit Arduino ist sehr leicht, da die Funktuionen Aufnahme und Wiedergabe über ein einfaches Spannungssignal gesteuert werden, wie man es beispielsweise von der Ansteuerung einer Leuchtdiode kennt.
Zusätzlich besteht die Möglichkeit, das Modul als kleinen Verstärker zu verwenden, indem mit Hilfe eines Jumpers die Aufnahme und Wiedergabe gleichzeitig aktiviert wird. Der ISD1820 Chip wird in dieser Form auch in anderen Zusammenhängen verwedet. Zum Beispiel in Spielzeug-Läden, bei dem Kinder mit einem Knopfdruck „Durchsagen“ machen können.

Funktionen des ISD1820 Chips:
– Funktionsstart per Taster am Modul, per Impuls oder dauerhaftem Spannungspegel.
– Automatischer Ausschaltmodus
– 8 Ohm Lautsprechertreiber integriert
– 3.3V Spannungsversorgung
– Bis zu 20 Sekunden Tonbaufnahme

Materialbeschaffung
Bild vom Kit
ISD1820-Sprachaufzeichnungsmodul
– Lautsprecher 8Ω 0,5W (Häufig ist dieser Lautsprecher beim Kauf des Moduls enthalten)

Anschlüsse (Pins) am Modul

  • VCC – 3,3-5V Stromversorgung (+)
  • GND – Spannung (-)
  • REC – Das Modul beginnt mit der Aufnahme, wenn an REC eine Spannung (HIGH) anliegt. Dieser Pin muss für die Dauer der Aufnahme mit Spannung versorgt bleiben.
  • FT  „Feed Through“: Durch die Ansteuerung dieses Pins werden Mikrofon und Lautsprecher zeitgleich aktiviert. Aufnahme und Wiedergabe sind dann zeitgleich aktiv.
  • P-E – Wiedergabe, Edge-aktiviert: Durch die Ansteuerung dieses Pins wird die Wiedergabe gestartet und fortgesetzt, bis eine EOM-Markierung (End-of-Message) gefunden wird oder das Ende des Speicherplatzes erreicht ist.
  • P-L – Wiedergabe, Pegel aktiviert. Durch die Ansteuerung dieses Pins von LOW nach HIGH wird die Wiedergabe gestartet. Die Wiedergabe bleibt jedoch nur so lange aktv, wie der Pegel auf HIGH bleibt.
  • Am Lautsprecherausgang SP+ und SP- wird ein Lautsprecher mit 8 Ohm angeschlossen
  • MIC – Mikrofoneingang, der Mikrofoneingang überträgt seine Signale an den Onboard-Vorverstärker.

Verwendung der Onboard-Taster

  • REC – Das Modul beginnt mit der Aufnahme, wenn an REC eine Spannung (HIGH) anliegt. Dieser Pin muss für die Dauer der Aufnahme mit Spannung versorgt bleiben.
  • PLAYE – Wiedergabe, Edge-aktiviert: Wenn ein HIGH-Übergang erkannt wird, wird die Wiedergabe gestartet und fortgesetzt, bis eine EOM-Markierung (End-of-Message) gefunden wird oder das Ende des Speicherplatzes erreicht ist.
  • PLAYL – Wiedergabe, Pegel aktiviert. Wenn dir Pegel von LOW nach HIGH wechselt, wird ein Wiedergabezyklus eingeleitet.

Jumperpositionen

FT  „Feed Through“: Durch Anschließen des Jumpers kann das Mikrofon in diesem Modus den Lautsprecher direkt ansteuern. Aufnahme und Wiedergabe sind dann zeitgleich aktiv.

P-E  Spielt die Aufnahme in Dauerschleife ab.

Verkabelung am Arduino, wenn nur die Onboardtaster verwendet werden sollen.

In diesem Fall bekommt das Modul lediglich die Versorgungsspannung vom Arduino-Mikrocontroller. An dessen Stelle könnte auch eine andere Spannungsquelle verwendet werden.

Durch die Verwendung der Tasten am ISD1820 Modul können alle Funktionen genutzt werden. In dieser Anleitung wird ein Arduino UNO verwendet, um das Modul mit Strom zu versorgen.

1. Verbinden Sie Vcc mit 3,3 V auf dem Arduino Board.

2. Verbinden Sie GND mit GND auf dem Arduino Board.

3. Verbinden Sie USB mit Arduino Board.

Erste Versuche mit den Tasten am ISD1820 Modul

1. Drücken Sie die REC-Taste und halten Sie die Taste bis zum Ende der Aufnahme gedrückt.

2. Lassen Sie die REC-Taste los

3. Wählen Sie den Wiedergabemodus

  • PLAYE. Sie drücken diese Taste nur einmal und die gesamte Aufnahme wird bis zum Ende der Tonaufnahme abgespielt.
  • PLAYL. Sie halten die Taste gedrückt, bis Sie die Wiedergabe beenden möchten.

Steuerung des ISD1820 Moduls per Arduino

Es ist im Bereich des Arduino-Mikrocontrollings viel interessanter, das Modul per Arduino anszusteuern. Dazu verkabeln wir neben der Spannungsversorgung noch die beiden Pins P-E und REC. P-E wird am Arduino Uno and Pin7 angeschlossen, und REC an Pin8

In der ersten Aufgabe soll jeweils in einem Abstand von 20 Sekunden eine Tonaufzeichnung für 5 Sekunden gestartet, und im Anschluss abgespielt werden.

int REC=8;
int PLAY=7;

void setup()
{
pinMode(REC, OUTPUT);
pinMode(PLAY, OUTPUT);

// Die Ausgänge werden beim Start des Mikrocontrollers auf LOW (0V) gesetzt, damit nicht versehentlich aufgenommen oder abgespielt wird.

digitalWrite(REC,LOW);
digitalWrite(PLAYLOW);

}

void loop()
{
digitalWrite(REC,HIGH); // Starten der Aufnahme
delay(5000); // Aufnahmedauer 5 Sekunden (5000 Millisekunden)
digitalWrite(REC,LOW); // Beenden der Aufnahme, indem die Spannung am REC-Pin deaktiviert wird.
digitalWrite(play,HIGH); // Wiedergabe der Aufnahme startet

digitalWrite(play,LOW); // Die Spannung am Pin wird deaktiviert. Durch die Nutzung des „P-E“ Pins wird die Aufnahme dennoch bis zum Schluss abgespielt.
delay(5000); // Die Wiedergabe läuft für 5 Sekunden (5000 Millisekunden)
delay(20000); //Nach der Widergabe pausiert das Modul für 20 Sekunden.
}
}

Erweiterung des Sketches

In diesem Beispiel wird an Pin6 ein Sensor angebracht. Das kann beispielsweise ein Feuchtigkeitssensor, ein Lichtsensor oder ein Temperatursensor. Sobald von diesem Sensor ein Signal kommt, wird eine vorher über die „REC-“ Taste aufgenommene Tonaufnahme abgespielt.

int REC=8;
int PLAY=7;
int Sensor=6;

int Sensorstatus=0; // Variable für den Status des Sensors

void setup()
{
pinMode(REC, OUTPUT);
pinMode(PLAY, OUTPUT);
pinMode(Sensor, INPUT);

// Die Ausgänge werden beim Start des Mikrocontrollers auf LOW (0V) gesetzt, damit nicht versehentlich aufgenommen oder abgespielt wird.

digitalWrite(rec,LOW);
digitalWrite(play,LOW);

}

void loop()
{

Sensorstatus=digitalRead(Sensor);

if(Sensorstatus=HIGH) // Wenn der Sensor eine Aktivität meldet, beginnt die folgende Schleife.
{

digitalWrite(play,HIGH); // Wiedergabe der Aufnahme startet

digitalWrite(play,LOW); // Die Spannung am Pin wird deaktiviert. Durch die Nutzung des „P-E“ Pins wird die Aufnahme dennoch bis zum Schluss abgespielt.

}
}