
Для этого нам понадобится:
TEA5767: http://ali.ski/5kmDOO
Скетч: https://yadi.sk/d/mpoiVteF33wMEz
Библиотека TEA5767: https://yadi.sk/d/XtjemqVy33wMbj
Библиотека для Button: https://yadi.sk/d/-WspeGopGnshCA
Даташит:https://yadi.sk/i/K7Uh7nW133wMjf
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
В данном примере рассмотрим реализацию FM радио на ардуино с помощью специального датчика TEA5767.
Данный датчик подключается к Arduino по шине i2c.
Сам даташит датчика выложен по ссылке приведенной выше, можете скачать и ознакомиться с возможностями данного датчика.
Схема подключения всех компонентов приведена в начале статьи.
После подключения всех компонентов по схеме необходимо скопировать программный код приведенный ниже и вставить его в программу Arduino IDE и загрузить этот программный код в саму плату Arduino.
#include <TEA5767.h>
// from https://github.com/andykarpov/TEA5767
#include <Wire.h>
#include <Button.h>
// from http://arduino-info.wikispaces.com/HAL-LibrariesUpdates
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // adress is 0x20 for LCD16x2
// adapted sketch by niq_ro from http://nicuflorica.blogspot.ro
// version 2.0
TEA5767 Radio;
double old_frequency;
double frequency;
int search_mode = 0;
int search_direction;
unsigned long last_pressed;
Button btn_forward(11, INPUT);
Button btn_backward(12, INPUT);
void setup() {
Wire.begin();
Radio.init();
Radio.set_frequency(101.2);
Serial.begin(9600);
lcd.init();
lcd.backlight(); //backlight is now ON
lcd.begin(16,2);
lcd.clear();
}
void loop() {
unsigned char buf[5];
int stereo;
int signal_level;
double current_freq;
unsigned long current_millis = millis();
if (Radio.read_status(buf) == 1) {
current_freq = floor (Radio.frequency_available (buf) / 100000 + .5) / 10;
stereo = Radio.stereo(buf);
signal_level = Radio.signal_level(buf);
lcd.setCursor(0,0);
lcd.print("FM: "); lcd.print(current_freq);
lcd.print("MHz ");
lcd.setCursor(0,1);
if (stereo) lcd.print("STEREO "); else lcd.print("MONO ");
lcd.print(signal_level);
lcd.print("/15 ");
}
if (search_mode == 1) {
if (Radio.process_search (buf, search_direction) == 1) {
search_mode = 0;
}
}
if (btn_forward.isPressed()) {
last_pressed = current_millis;
search_mode = 1;
search_direction = TEA5767_SEARCH_DIR_UP;
Radio.search_up(buf);
delay(500);
}
if (btn_backward.isPressed()) {
last_pressed = current_millis;
search_mode = 1;
search_direction = TEA5767_SEARCH_DIR_DOWN;
Radio.search_down(buf);
delay(500);
}
delay(100);
}
Скетч:https://yadi.sk/d/NdwWVh5Hf-P8pw
Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.