Сергей Попов из Севстар
Просветленный
(21893)
1 день назад
Здравствуйте.
Если задача — воспроизводить через ВЧ-динамик (пищалку) заранее записанный высокочастотный звук с помощью Arduino, то можно реализовать это несколькими способами. Ниже — подробный разбор, что потребуется и как реализовать.
✅ Что понадобится:
Плата Arduino (Uno, Nano — без разницы)
ВЧ-динамик / пищалка (piezo speaker)
— Лучше активный (с встроенным генератором), но можно и пассивный.
Заранее записанный звук (WAV, желательно 8 бит, моно, 8 кГц или 16 кГц)
SD-карта с модулем (если звук будет считываться с флешки)
Либо — хранение звука в памяти Arduino (если он короткий)
Библиотека TMRpcm или Mozzi для вывода звука
? Вариант 1: Считывание звука с SD-карты (рекомендуется)
Аппаратная схема:
Подключаете SD-карту через модуль SD Reader к Arduino (через SPI — пины 10, 11, 12, 13 на Uno).
Пищалку к пину D9 (обязательно с резистором 100 Ом).
Звук:
Файл .wav 8-бит, 8 кГц, моно, без заголовков — иначе не воспроизведётся.
Переименовать, например, test.wav.
Код на базе TMRpcm:
#include <TMRpcm.h>
#include <SD.h>
TMRpcm tmrpcm;
void setup() {
Serial.begin(9600);
if (!SD.begin(10)) {
Serial.println("SD-карта не найдена.");
return;
}
tmrpcm.speakerPin = 9;
tmrpcm.setVolume(5); // 0–7
tmrpcm.play("test.wav");
}
void loop() {
// ничего
}
? Вариант 2: Хранение звука в массиве (если звук короткий)
Если звук занимает мало места (до 1–2 секунд), можно зашить его прямо в код:
const unsigned char sound[] = {128,130,133,135,...}; // массив значений (0–255)
void setup() {
pinMode(9, OUTPUT);
}
void loop() {
for (int i = 0; i < sizeof(sound); i++) {
analogWrite(9, sound[i]); // PWM вывод
delayMicroseconds(125); // ~8 кГц частота
}
}
Создать такой массив можно в аудиоредакторе (Audacity → экспорт в raw → 8 бит unsigned), затем сконвертировать в массив с помощью python/скрипта.
? Примечания:
PWM-вывод через analogWrite() на частоте ~31.25 кГц — стандарт для Arduino Uno. Для воспроизведения реального звука нужно понизить частоту до 8–16 кГц.
Библиотека Mozzi позволяет управлять фильтрами и генерировать звук с частотами до 16 кГц.
Arduino сам не умеет «проигрывать MP3» — только простые WAV или генерация сигнала.
Итог:
Если звук короткий — можно хранить в массиве и выводить через analogWrite() или Mozzi.
Если звук дольше или их нужно много — использовать SD-карту + TMRpcm.
Для воспроизведения через пищалку Arduino справляется отлично, особенно с активной.
В обоих случаях требуется подготовка WAV-файлов под формат 8 бит, 8–16 кГц, моно.
Технический специалист интернет-провайдера Севстар
anton antonovЗнаток (452)
1 день назад
Спасибо большое за объяснение. Звук короткий, буду зашивать в массив. К каким контактам подключить кнопку? Нужно что бы при нажатии кнопки, воспроизводился звук на ВЧ. И ещё вопрос, хватит ли мощности Ардуино для громкого звука?