🛒
0 товар.
0 руб.
Логотип

Интернет-магазин «Неглупый Дом»

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

📻 Проект: автопоиск радиостанций на RDA5807M со звуковым подтверждением находки

В других проектах частоту RDA5807M меняют вручную — кнопками или с веб-страницы. Здесь Arduino сама сканирует весь FM-диапазон и подаёт сигнал зуммером при нахождении сильной станции — автопоиск, как в автомобильных магнитолах.

Как это работает

Настройка такая же — `setFrequency()`. Разница — в логике сканирования: код перебирает частоты от нижней до верхней границы, на каждом шаге ждёт перестройки тюнера и считывает уровень сигнала (RSSI). Если он выше порога — станция найдена, зуммер сигналит, сканирование ставится на паузу на пару секунд.

RSSI — число, которое микросхема вычисляет по силе принимаемой несущей; на пустой частоте оно низкое и шумовое, на реальной станции — заметно выше порога.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. RDA5807M: SDA → A4, SCL → A5, VCC → 3.3V (по маркировке платы), GND → GND.
  2. Зуммер: сигнал → D8, GND → GND.
  3. Провод 20-30 см на антенном входе заметно улучшает приём и сканирование.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить. Названия
// методов (включая 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: Электронные модули.

← 📡 автономный сетевой узел ESP826…🛑 защитное отключение нагрузки п… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу: 142 ₽ 128 ₽ (экономия 14 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина

Поиск


Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA