Building an ISD1820 voice recorder Arduino project is one of the most satisfying audio electronics builds — with just ₹80–₹150, you can record up to 10 seconds of voice and play it back on demand. The ISD1820 from Nuvoton is a single-chip voice recorder/playback IC with onboard ADC, non-volatile memory (no battery needed to retain recordings), and a built-in amplifier to drive a small speaker directly. This guide covers standalone use and Arduino-controlled operation for interactive voice projects.
Table of Contents
- ISD1820 Module Overview
- Standalone Operation: Record and Playback
- Wiring to Arduino for Digital Control
- Arduino Code for Voice Recorder
- Project Ideas
- Alternatives: WT588D and ISD1760
- Frequently Asked Questions
ISD1820 Module Overview
The ISD1820 stores audio in on-chip non-volatile multilevel flash memory — your recording survives power-off for up to 100 years (per the datasheet). Recording duration depends on the sample rate resistor:
- 100kΩ resistor: 10 seconds at lowest quality
- 80kΩ resistor: 8 seconds, better quality
- 60kΩ resistor: 6 seconds, good quality (most modules use this as default)
The onboard module (widely available in India) typically includes:
- Built-in electret microphone for recording
- 3.5mm speaker output and direct speaker pads for 8Ω speaker connection
- Push buttons for REC (record), PLAY-L (play until button released), and PLAY-E (play entire recording)
- REC, PLAY-L, PLAY-E header pins for Arduino control
- LED indicators for recording and playback status
- Operating voltage: 3–5V (5V from Arduino is ideal)
Important limitation: The ISD1820 has only ONE recording slot. Each new recording overwrites the previous one. For multiple recordings, use the DFPlayer Mini (SD card, 32GB storage, folders) or WT588D module instead.
Standalone Operation: Record and Playback
The ISD1820 works completely standalone without any microcontroller:
- Power: Connect 5V to VCC and GND to GND.
- Speaker: Connect 8Ω speaker between SP+ and SP- pads (or use the 3.5mm output to headphones/amplifier input).
- Record: Press and hold the REC button. Speak clearly into the onboard microphone. Release when done. The LED flashes during recording.
- Playback (entire message): Press PLAY-E button once. The entire recorded message plays then stops automatically.
- Playback (while held): Press and hold PLAY-L. Message repeats as long as button is held.
The recording quality is suitable for voice announcements, door bells, and educational projects. Music quality is poor due to the low sample rate — the ISD1820 is optimised for voice, not music.
Wiring to Arduino for Digital Control
// ISD1820 Module → Arduino Wiring (Digital Control)
// VCC → Arduino 5V
// GND → Arduino GND
// REC → Arduino Pin 7 (pull LOW to start recording)
// PLAY-L → Arduino Pin 6 (pull LOW to play, release to stop)
// PLAY-E → Arduino Pin 5 (pull LOW momentarily to play entire recording)
// FT → Arduino Pin 4 (FeedThrough - monitor mic via speaker without recording)
//
// Speaker connection:
// SP+ → Speaker positive (8Ω)
// SP- → Speaker negative
//
// Note: REC, PLAY-L, PLAY-E are active-LOW
// Connect them to GND (via Arduino OUTPUT LOW) to activate
// Leave floating (INPUT mode or OUTPUT HIGH) for inactive state
Arduino Code for Voice Recorder
// ISD1820 Voice Recorder: Record on button press, play on another
// Uses 3 push buttons: Record (D2), Play (D3), Stop (D4)
const int ISD_REC = 7; // REC pin (active LOW)
const int ISD_PLAY_E = 5; // PLAY-E pin (active LOW)
const int BTN_RECORD = 2; // Button: hold to record
const int BTN_PLAY = 3; // Button: press to play
bool isRecording = false;
void setup() {
pinMode(ISD_REC, OUTPUT);
pinMode(ISD_PLAY_E, OUTPUT);
digitalWrite(ISD_REC, HIGH); // Inactive (active-LOW)
digitalWrite(ISD_PLAY_E, HIGH); // Inactive
pinMode(BTN_RECORD, INPUT_PULLUP);
pinMode(BTN_PLAY, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
// Record: hold button to record, release to stop
if (digitalRead(BTN_RECORD) == LOW) {
if (!isRecording) {
Serial.println("Recording started...");
digitalWrite(ISD_REC, LOW); // Start recording
isRecording = true;
}
} else {
if (isRecording) {
Serial.println("Recording stopped");
digitalWrite(ISD_REC, HIGH); // Stop recording
isRecording = false;
}
}
// Play: press and release to play entire message
if (digitalRead(BTN_PLAY) == LOW) {
Serial.println("Playing message...");
digitalWrite(ISD_PLAY_E, LOW); // Trigger playback
delay(50);
digitalWrite(ISD_PLAY_E, HIGH); // Release trigger
delay(200); // Debounce
}
delay(20);
}
Advanced: Timed Automatic Recording System
// Auto-record system: records every 5 minutes, plays on trigger
// Use case: Voice alarm system that records an alert and plays on sensor trigger
const int ISD_REC = 7;
const int ISD_PLAY_E = 5;
const int PIR_PIN = 8; // PIR motion sensor: HIGH on motion
void recordFor(int seconds) {
digitalWrite(ISD_REC, LOW); // Start
delay(seconds * 1000);
digitalWrite(ISD_REC, HIGH); // Stop
}
void playMessage() {
digitalWrite(ISD_PLAY_E, LOW);
delay(50);
digitalWrite(ISD_PLAY_E, HIGH);
}
void setup() {
pinMode(ISD_REC, OUTPUT); digitalWrite(ISD_REC, HIGH);
pinMode(ISD_PLAY_E, OUTPUT); digitalWrite(ISD_PLAY_E, HIGH);
pinMode(PIR_PIN, INPUT);
Serial.begin(9600);
// Record 6-second message on startup
delay(1000); // Allow ISD1820 to power up
Serial.println("Say your message now (6 seconds)...");
recordFor(6);
Serial.println("Message recorded!");
}
void loop() {
if (digitalRead(PIR_PIN) == HIGH) {
Serial.println("Motion! Playing message...");
playMessage();
delay(10000); // Don't replay for 10 seconds
}
delay(100);
}
Project Ideas
- Smart Doorbell: Pre-record a greeting message. PIR sensor triggers ISD1820 playback when visitor approaches. Record new messages easily by pressing the REC button.
- Interactive Museum Exhibit: Each exhibit has an ISD1820 with a push button. Visitors press the button to hear a pre-recorded explanation (in Hindi, English, or regional language) — no screen or speaker system needed.
- Talking Piggy Bank: ISD1820 with coin insertion sensor — plays "Thank you for saving!" each time a coin is inserted.
- Classroom Attendance System: Teacher records their name; system plays it back when attendance is submitted.
- Medical Reminder Device: Caregiver records medication reminder in local language; Arduino triggers playback at programmed times using RTC module.
Alternatives: WT588D and ISD1760
- WT588D-16P: Stores up to 220 seconds of audio in external SPI flash; multiple address-selectable tracks; UART and one-pin control. Better for multi-message applications. ₹150–₹300 in India.
- ISD1760: 8 independent recording channels (each up to 38 seconds), 5V operation, SPI interface. Best for applications needing multiple independent messages. ₹200–₹400.
- DFPlayer Mini: SD card-based, unlimited recordings, MP3/WAV support. Best for music-quality audio with many files. ₹100–₹200.
Frequently Asked Questions
How do I increase the volume of the ISD1820?
The ISD1820’s built-in amplifier is limited to about 100mW into 8Ω. For louder output, take the audio from the SP+ and SP- pads and feed it into a PAM8403 or LM386 amplifier. Connect SP+ through a 10μF coupling capacitor to the amplifier input, and SP- to GND (it’s a differential output, but for single-ended amplifier input, use SP+ as the signal and GND as reference).
Can the ISD1820 record over an existing message?
Yes — simply record again. Each recording automatically overwrites the previous one. There is no erase procedure needed. The module always plays back the most recently recorded content.
My ISD1820 recording sounds muffled — how do I improve quality?
The built-in microphone on cheap ISD1820 modules is often a low-quality electret capsule placed too close to the circuit board (which generates noise). Record in a quiet environment, speak clearly 10–15cm from the module, and avoid background noise (fans, AC units). Alternatively, replace the onboard microphone with a higher-quality electret capsule — most modules have the microphone as a solder-swappable component.
Can I record higher quality audio with the ISD1820?
The ISD1820’s maximum bandwidth is 4kHz at 8kHz sample rate — it’s designed for voice intelligibility, not high fidelity. For better audio quality, use the DFPlayer Mini with 44.1kHz MP3 files, or the WT588D with 8kHz–16kHz PCM recordings. Professional-quality voice ICs like the VS1053 or WM8960 provide 44.1kHz stereo — equivalent to CD quality.
Add comment