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

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

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

📻 Проект: FM-радиоприёмник на RDA5807M с выводом частоты на TM1637

RDA5807M принимает FM-станции и настраивается по I2C, частота выводится крупными цифрами на TM1637 — цифровой приёмник без аналоговой ручки настройки.

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

RDA5807M — полностью цифровой FM-тюнер: вся аналоговая часть приёма уже внутри чипа, а настройкой станции и громкостью Arduino управляет отправкой чисел по I2C. Частота задаётся целым числом с шагом 10 кГц — в коде это учтено множителем.

TM1637 просто показывает число. Чтобы вывести "101.5", частота умножается на 10, а точка зажигается программно на нужном разряде через режим вывода с маской точки.

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

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

  1. RDA5807M: SDA → A4, SCL → A5, VCC → 3.3V (проверьте маркировку своей платы), GND → GND.
  2. К аудиовыходу модуля подключите усилитель, например, на LM386 или PAM8403, и динамик — сам модуль не даёт достаточной мощности.
  3. Провод 20-30 см на антенный вход заметно улучшает приём городских станций.
  4. TM1637: CLK → D9, DIO → D10, VCC → 5V, GND → GND.
  5. Кнопки настройки: вверх → D2, вниз → D3, вторые выводы на GND (INPUT_PULLUP).

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.
// Названия методов библиотеки радио могут отличаться — сверьтесь с примерами
// из Менеджера библиотек, если что-то не компилируется.

#include <Wire.h>
#include <radio.h>
#include <RDA5807M.h>
#include <TM1637Display.h>

RDA5807M radio;
TM1637Display display(9, 10);

int freqTimes10 = 1015; // 101.5 МГц
const int BTN_UP = 2;
const int BTN_DOWN = 3;

void showFrequency() {
  display.showNumberDecEx(freqTimes10, 0b01000000, false);
}

void setup() {
  Serial.begin(9600);
  pinMode(BTN_UP, INPUT_PULLUP);
  pinMode(BTN_DOWN, INPUT_PULLUP);
  radio.init();
  radio.setBand(RADIO_BAND_FM);
  radio.setVolume(10);
  radio.setMono(false);
  radio.setFrequency(freqTimes10 * 10);
  display.setBrightness(5);
  showFrequency();
}

void loop() {
  bool changed = false;
  if (digitalRead(BTN_UP) == LOW) {
    freqTimes10 += 1;
    changed = true;
    delay(200);
  }
  if (digitalRead(BTN_DOWN) == LOW) {
    freqTimes10 -= 1;
    changed = true;
    delay(200);
  }
  if (changed) {
    radio.setFrequency(freqTimes10 * 10);
    showFrequency();
    Serial.println(freqTimes10 / 10.0);
  }
}
                

Библиотеку "Radio" (mathertel) и TM1637Display ставьте через Менеджер библиотек. Если радио молчит — проверьте антенну и что частота совпадает с реальной станцией.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 📊 веб-страница истории измерений…⚙️ регулятор скорости и направлен… →

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

Все 2 товара сразу: 171 ₽ 154 ₽ (экономия 17 ₽)

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

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

Корзина

Поиск


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