Голосовой записывающий и воспроизводящий модуль ISD1820 на Arduino
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino UNO | 1 |
| Модуль ISD1820 | 1 |
| Динамик 0.25 Вт, 8 Ом | 1 |
| Перемычки | 6 |
О проекте
Идея
Модуль ISD1820 стоит около $3 и может записывать/воспроизводить звук длительностью до 20 секунд с помощью кнопок. Цель проекта — управлять записью и воспроизведением программно через Arduino. Проект подходит для начинающих.
Принцип работы
Запись запускается при нажатии 'r' в Serial Monitor, воспроизведение — при нажатии 'p'.
Распиновка ISD1820
- VCC — 3.3 В (в проекте подключено к 5 В Arduino)
- GND — земля
- REC — активный HIGH вход записи. Запись идет, пока HIGH
- PLAYE — воспроизведение по фронту (HIGH -> LOW)
- PLAYL — воспроизведение по уровню (LOW -> HIGH)
- SP+, SP- — выход на динамик (8 Ом)
- MIC — вход микрофона
- FT — сквозной режим (микрофон прямо на динамик)
- P-E — бесконечное воспроизведение
Подключение
- VCC → Arduino 5V
- GND → Arduino GND
- FT → Pin 5
- PLAYL (PL) → Pin 4
- PLAYE (P-E) → Pin 3
- REC → Pin 2
Код: Вариант 1 — ручное управление через Serial Monitor
#define REC 2
#define PLAY_E 3
#define FT 5
#define playTime 5000
#define recordTime 3000
void setup() {
pinMode(REC, OUTPUT);
pinMode(PLAY_E, OUTPUT);
pinMode(FT, OUTPUT);
Serial.begin(9600);
}
void loop() {
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;
} else if (inChar == 'r' || inChar == 'R') {
digitalWrite(REC, HIGH);
Serial.println("Recording started");
delay(recordTime);
digitalWrite(REC, LOW);
Serial.println("Recording Stopped");
}
Serial.println("### Serial Monitor Exited");
}
Serial.println("### Enter r to record, p to play");
delay(500);
}
Код: Вариант 2 — автоматическая запись 3 сек и воспроизведение 5 сек
#define REC 2
#define PLAY_E 3
#define FT 5
#define playTime 5000
#define recordTime 3000
#define playLTime 900
void setup() {
pinMode(REC, OUTPUT);
pinMode(PLAY_E, OUTPUT);
pinMode(FT, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(REC, HIGH);
delay(recordTime);
digitalWrite(REC, LOW);
digitalWrite(PLAY_E, HIGH);
delay(50);
digitalWrite(PLAY_E, LOW);
delay(playTime);
delay(500);
}
Перспективы
Можно сохранять записи на SD-карту, сделать рацию (walkie-talkie) и многое другое — ограничивает только фантазия.
Схемы подключения
Производственный процесс
- Каналы и шлюзы: инженерия, история и будущее водного транспорта в США
- Эволюция и мастерство луков и стрел: от древней охоты к современной инженерии
- Искусство и процесс производства виниловой пластинки LP
- Scratch & Sniff: наука и мастерство микрокапсулированной аромапечати
- Сливочное масло vs маргарин: история, производство и здоровье
- Трансформация производства с мобильностью: решения для данных, голоса, видео и локации
- Сборка станции качества воздуха и погоды на Raspberry Pi с InfluxDB и Grafana
- Самодельная система термостатирования для домашнего пивоварения: мониторинг и регулирование на Arduino
- DIY бюджетный перчаточный контроллер и пропеллер-машинка — соберите свой Arduino ручной контроллер
- Как голосовые приложения на складе защищают заказы и работников: четыре ключевых преимущества