Интернет-магазин «Неглупый Дом»
В других проектах частоту RDA5807M меняют вручную — кнопками или с веб-страницы. Здесь Arduino сама сканирует весь FM-диапазон и подаёт сигнал зуммером при нахождении сильной станции — автопоиск, как в автомобильных магнитолах.
Настройка такая же — `setFrequency()`. Разница — в логике сканирования: код перебирает частоты от нижней до верхней границы, на каждом шаге ждёт перестройки тюнера и считывает уровень сигнала (RSSI). Если он выше порога — станция найдена, зуммер сигналит, сканирование ставится на паузу на пару секунд.
RSSI — число, которое микросхема вычисляет по силе принимаемой несущей; на пустой частоте оно низкое и шумовое, на реальной станции — заметно выше порога.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить. Названия
// методов (включая RSSI) могут отличаться по версии библиотеки.
#include <Wire.h>
#include <radio.h>
#include <RDA5807M.h>
RDA5807M radio;
const int BUZZER_PIN = 8;
const int MIN_FREQ = 875;
const int MAX_FREQ = 1080;
const int RSSI_THRESHOLD = 35;
void setup() {
Serial.begin(9600);
pinMode(BUZZER_PIN, OUTPUT);
radio.init();
radio.setBand(RADIO_BAND_FM);
radio.setVolume(10);
radio.setMono(false);
}
void loop() {
for (int freq = MIN_FREQ; freq <= MAX_FREQ; freq += 2) {
radio.setFrequency(freq * 10);
delay(100);
int rssi = radio.getRssi();
if (rssi > RSSI_THRESHOLD) {
tone(BUZZER_PIN, 2000, 300);
delay(2000);
}
}
}
Библиотека "Radio" (mathertel) ставится через Менеджер библиотек. Если `getRssi()` не компилируется — проверьте точное имя метода в примерах вашей версии.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу: 142 ₽ 128 ₽ (экономия 14 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.