ИМС TEA5767 производимая компанией NXP применяется для конструирования низковольтных FM-радио тюнеров. В составеTEA5767 имеются внутренние цепи выделения промежуточной частоты и демодуляции принимаемого сигнала, что позволяет обходиться минимальным набором внешних компонентов.
Технические параметры TEA5767:
- Напряжение питания от 2,5 до 5 В
- Потребляемый ток при Uпит = 5 В 12,8 мА
- Чувствительность 2 мкВ
- Отношение сигнал/шум 54 дБ
- Разделение между стереоканалами 24 дБ
- Коэффициент гармоник 0,4 %
- Диапазон принимаемых частот от 76 МГц до 108 МГц
- Шины управления: I2C или 3-х проводная
- Функция автоматической настройки на принимаемые радиостанции
- Автоматическое стереодекодирование принятого сигнала
Радио модуль TEA5767 управляется всего двумя кнопками «+» и «-«, которые используются для поиска необходимой станции. Через 10 секунд после не активности кнопок, частота выбранного канала сохраняется в энергонезависимой памяти.
Библиотека — TEA5767.zip
#include <TEA5767.h> #include <Wire.h> #include <LiquidCrystal.h> #include <EEPROM.h> TEA5767 Radio; LiquidCrystal lcd(7, 6, 2, 3, 4, 5); unsigned long last_pressed,time; unsigned char buf[5]; int stereo,signal_level,search_mode = 0,search_direction,i,f_h,f_l,f,w; double current_freq; float f_new = (EEPROM.read(0)*256 + EEPROM.read(1)); byte a1[8]={0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b11111}; byte a2[8]={0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111}; byte a3[8]={0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111,0b11111}; byte a4[8]={0b00000,0b00000,0b00000,0b00000,0b11111,0b11111,0b11111,0b11111}; byte a5[8]={0b00000,0b00000,0b00000,0b11111,0b11111,0b11111,0b11111,0b11111}; byte a6[8]={0b00000,0b00000,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111}; byte a7[8]={0b00000,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111}; byte a8[8]={0b11111,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111}; void setup() { Serial.begin(9600); Wire.begin(); Radio.init(); Radio.set_frequency(f_new/10); Serial.begin(9600); lcd.begin(16,2); lcd.clear(); pinMode(12,INPUT); pinMode(11,INPUT); lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(3,a4);lcd.createChar(4,a5);lcd.createChar(5,a6);lcd.createChar(6,a7);lcd.createChar(7,a8); } void loop() { 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 "); for(i=0;i<8;i++){if(signal_level>=8+i){lcd.setCursor(8+i,1);lcd.write((uint8_t)i);}} } if (search_mode==1){if(Radio.process_search(buf, search_direction)==1){search_mode = 0;}} if (digitalRead(11)==HIGH) { search_mode = 1;time=millis();w=1; search_direction = TEA5767_SEARCH_DIR_UP; Radio.search_up(buf); delay(200); } if (digitalRead(12)==HIGH) { search_mode = 1;time=millis();w=1; search_direction = TEA5767_SEARCH_DIR_DOWN; Radio.search_down(buf); delay(200); } f = current_freq*10; f_h = highByte(f);f_l = lowByte(f); if(millis()-time>10000&&w==1){w=0; EEPROM.update(0,f_h);EEPROM.update(1,f_l);} delay(50);if(search_mode==1){lcd.clear();} }
Привет. Где прописать начало участка и конец.
В библиотеке не нашел. Я использовал стандартный скетч от разработчика, поэтому в подробностях не разбирался.
скетч не загружается,выдает такую ошибку-
exit status 1
‘TEA5767’ was not declared in this scope ,кто знает причину?
Может библиотека не установлена
библиотека установлена.
Установите с архива — http://rcl-radio.ru/wp-content/uploads/2019/01/TEA5767.zip
Перед установкой старую удалите
Может что то не так делаю- сначала установил библиотеки,затем скопировал скетч в ардуино
,подключил плату и включил загрузку.
Вроде все верно. У меня компилируется без проблем.
Если Вы устанавливали библиотеку с менеджера библиотек, то она может быть не совместима со скетчем. В статье есть ссылка на архив со старой версией.
Спасибо, скетч загрузился.
Помогите разобраться — собрал приемник (залился скетч,установил библиотеки) дисплей отображает одни черточки про нажатии кнопок количество черточек меняется — что делать?
Подключение дисплея неверное.
Я собирал по схеме, может есть нюаны? Буду благодарен за разяснение.
Загрузите I2C сканер — http://forum.rcl-radio.ru/viewtopic.php?id=64
В мониторе порта посмотрите i2c адрес модуля радио, определяется ли он.
Вывод RW дисплея замкнут на GND?
Вот тест дисплея — http://forum.rcl-radio.ru/viewtopic.php?pid=8760#p8760
В блок setup() в начале добавьте срочку:
if(EEPROM.read(300)!=0){for(int i=0;i<301;i++){EEPROM.update(i,0);}}
Наверное не так сделал?
После {
Опять одни черточки
I2C зачем? у меня подключение другое.
Собрал еще схему http://www.kn34pc.com/construct/lz2wsg_arduino_fm_rx_tea5767.html
такае же белеберда только черточек меньше
А можно тестировать дисплей не выпаевая( большой геморой)
Проверить I2C адрес радио модуля, он может не запускаться и блокировать работу дисплея
А можно тестировать дисплей не выпаевая( большой геморой)
выпаивать ни чего не нужно
Вывод RW на земле!
тест дисплея ничего не дал опять черточки
монитор порта выдал следующее
С радио модулем все в порядке, тогда тест дисплея
Вот тест дисплея — http://forum.rcl-radio.ru/viewtopic.php?pid=8760#p8760
Тест дисплея ничего не дает одни черточки
Еще раз проверьте подключение, если есть различия поправьте строку подключения
LiquidCrystal lcd(7, 6, 2, 3, 4, 5); // (RS, E, DB4, DB5, DB6, DB7)
Все так
Это стандартный скетч запуска дисплея, он не может не работать.Смотрите замыкание на шине данных, где-то что-то не так в подключении.