Сборка приёмника задумывалась как источник аудиосигнаа для подмеса к местному инфоканалу. Но перерыв инет не нашёл распиновки на свой модуль FM-приёмника TEA5767 (GNT-100S). Т.е. как бы выводы ну совсем не соответствовали тому что встретил в инете. Пришлось «вызванивать»… Под катом скетч по управлению им через ардуинку (A4 = SDA, A5 = SCL).
Модуль управляется по протоколу I2C, поэтому подключаем встроенную библиотеку Wire.h. Для того, чтобы установить частоту 91.2 MHz необходимо подать вот такую посылку:
#include <Wire.h> #include <TEA5767Radio.h> TEA5767Radio radio = TEA5767Radio(); float ff = 91.2; float fff = 107.8; float f; int a = 0; void setup(){ Wire.begin(); pinMode(LED_BUILTIN, OUTPUT); pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, INPUT); f = ff; radio.setFrequency(f); } void loop(){ digitalWrite(LED_BUILTIN, HIGH); delay(50); digitalWrite(LED_BUILTIN, LOW); delay(50); if(digitalRead(2)==0){ f = f + 0.1; radio.setFrequency(f); delay(100); }else if(digitalRead(3)==0){ if(a>7){ f = fff; radio.setFrequency(f); delay(500); a=0; }else{ f = ff; radio.setFrequency(f); } a++; }else if(digitalRead(4)==0){ f = f - 0.1; radio.setFrequency(f); delay(100); } if(f<87.5){ f = 108; }else if(f>108){ f = 87.5; } }
Часть 2. Порой есть задача настроить приёмник на одну стабильную частоту. Использовать для этого ардуино как-то не по «феншую». И тут можно использовать нашего любимого малыша STC15W201.
#include "reg51.h" #include "intrins.h" #include <i2c.h> #define FREQ 91.2 void main(){ int i; unsigned long f = (FREQ*1000000+225000) * 4 / 32768; PM_INIT(); P3 = 0xFF; while (1){ Delay1000ms(); // delay for start // init i2c SDA = 0; Delay(); SCL = 0; Delay(); i2c_send_byte(0xC0); i2c_send_byte(f >> 8); // High half i2c_send_byte(f & 0xFF); // Low half i2c_send_byte(0xB0); i2c_send_byte(0x10); i2c_send_byte(0x00); SCL = 1; // deinit i2c // wait 5 min for(i=0; i<300; i++){ Delay1000ms(); } } }
Проект для Keil-а здесь. Файл HEX для частоты 91.2 MHz здесь. Как прошивать STC15 я рассказывал здесь. Кстати, пару лет назад я купил себе фирмовый программатор для STC. Называется U8W. Удобная штуковина.
Но вернёмся к конструкции. Запрограммированый чип размещаем на обратной стороне модуля приёмника, перевернув его на спину. Откусываем неиспользуемые выводы (1, 3, 5, 6) и запаиваем к контактам. Я снял видео работы устройства. Для детального изучения ставьте на паузу. В последствии чип можно залить эпоклеем.