RDA5807M или китайский RRD-102V2.0
- Войдите на сайт для отправки комментариев
Втр, 14/04/2015 - 00:05
Уважаемые, всем доброго времени! Второй день ломаю голову, пытаюсь разобраться с этим модулем. НА просторах нашел единственный рабочий пример:
// Programm: fm_radio_module_em5807m_rev100.ino // Language: Arduinio C++ // Hardware: Arduino Nano 3.0 + EM5807M module with RDA5807M Chip. // Version: 1.00 // Autor: www.5v.ru // Link: www.5v.ru/start/em5807m-arduino-nano-30.htm #include <Wire.h> // I2C-Library double f_ini=104.6; // Стартовая частота настройки приемника. (Изменяем на нужную). void setup() // Инициализация. { Wire.begin(); // Инициализация двухпроводной шины I2C. setFrequency(f_ini); // Вызываем фукнкцию загрузки частоты настройки в модуль EM5807M. } void loop() // Основной цикл программы { // Здесь можем написать нашу самую лучшую программу, которая будет работать так как нам нужно. } void setFrequency(double fmhz) // Функция загрузки частоты настройки в модуль EM5807M. { int frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768; char frequencyH = frequencyB >> 8; // Старший байт. char frequencyL = frequencyB & 0XFF; // Накладываем маску 0xFF на младший байт. Wire.beginTransmission(0x60); // Адрес чипа RDA5807M Wire.write(frequencyH); // Старший байт. Wire.write(frequencyL); // Младший байт. Wire.write(0xB8); // 1011 1000 =Стерео Wire.write(0x10); // 0001 0000 Wire.endTransmission(); // формируем I2C-Stop. }
Но не понимаю как работает функция загрузки частоты, и почему указан адрес 0х60, а в даташите к rda5807m указан адрес 0х58. Как оно работает!? Выручайте! по i2c отправляется в рамках begin...end только старший и младший байт, как я понимаю. ПОчему в примере отправляется еще чтото в этих скобках? Что за данные отправляются? (без них не работает)...
Когда мне пришел первый такой чип, я нашел данную библиотеку на большинство FM чипов за 5 минут.
Это ответ на: НА просторах нашел единственный рабочий пример... значит плохо искали
Ладно, там отличные примеры, и легко переделываемые под совместное использование например с часами или метеостанцией и т.д.
https://yadi.sk/d/fd_hXJk_fzEzJ
Библиотека конечно хорошая, но для нормальной работы требует загрузки radio.h и 5807.h вообщем они обе жрут 700 байт оперативки которой та максимум 2К а в 168 вообще 1К. Есть еще информация о том как по прмеру выше работать, сейчас и на него отвечу
https://www.drive2.ru/b/1880545/?page=0#a160242070 там подробнее
https://www.drive2.ru/b/1880545/?page=0#a160242070 там подробнее
Спасибо за благодарность! )))
______
Владимир Чебанов
Здравствуйте, можете мне объяснить как скрестить Ардуину нано, модуль rrd102, с кнопками и дисплеем OLED? По отдельности радио поет, дисплей показывает тестовые примеры) Что делать дальше? Тему на драйве читал. И кстати по шине I2C сканером выдается четыре адреса
Scanning...
I2C device found at address 0x10 ! этот возможно радио исходя из верхних постов
I2C device found at address 0x11 !-этот что такое?
I2C device found at address 0x3C ! -этот дисплей OLED
I2C device found at address 0x60 этот я понимаю радио
И почему модулю радио дается два адреса?
Простите если мои вопросы покажутся вам наивными, я пытаюсь разобраться как устроена ардуинка)
Нашел вот этот форум, там собрано радио на дисплее 5110, но там вообще все сложно) Хотя собрал, все заработало, пришлось подправить контрастность и температуру 5110. Можете объяснить как прикрутить OLED дисплей 128*64 I2c? и почему кнопки там притянуты через резисторы?
ну я что там не видел, там скорее резисторы с кнопками посажены на один аналоговый вход, и изходя из деленного напряжения выбирается нажатая кнопка. ну а если там резисторы 10кОм то просто исклчение дребезга. два адреса шины скорее потому что этот радио может и по аналогу работать и по своему адресу, на каком у меня уже не помню, на драйве все ясно написано
а по дисплею смотри тут https://www.youtube.com/watch?v=niA3aPu3-dQ
По дисплею посмотрел) Мне непонятно само программирование, как впилить дисплей в прошивку или как выпилить его и впилить например 1601. По кнопкам, там видимо делитель напряжения на аналоговый вход, идея понятна. А еще вопрос почему там значения переменных записаны в BIN или в HEX вместо двоичной системы? Спасибо.
тебе ничего не мешает перевести их в десятичные, просто передача например радио частоты програмируется 16 битами 3 из которых это одно еще 8 сама частота и оставшиеся 4 бита чтото еще. ну это примерно как с 0 до 100 первое со 100 до 1000000 второе итд а чтоб отправить надо 1000000 сложить со 100 и получившееся отправить
у меня нет времни учить тебя програмированию как и чо разбирайся
Я наверное неправильно выразился) В примерах настройка частоты идет числами например от 1 до 100, так-же и яркость дисплея, в этом скетче частота упрятана в BIN, это сокращает объем кода или для чего еще?
да это сокращает объем кода, это управление напрямую по адресу 5807, а в примерах работа с ним через модуль в который зашито все что можно, модуль прилично оперативки жрет, а там ее всего 2КБ
Ага понятно. В общем забавная игрушка. В этой теме вопросов больше нет, все работает прекрасно.
Радио работает. Вот часть кода, которое залито в Атмегу8.
Как его подправить, чтобы громкость регулировать (Wire.write(v); // 05l f-максимальная громкость 1111)?
void setFrequency(double fmhz) // Функция загрузки частоты настройки в модуль EM5807M.
{
int frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768;
char frequencyH = frequencyB >> 8; // Старший байт.
char frequencyL = frequencyB & 0XFF; // Накладываем маску 0xFF на младший байт.
Wire.beginTransmission(0x60); // Адрес чипа RDA5807M
Wire.write(frequencyH); // Старший байт.
Wire.write(frequencyL); // Младший байт.
Wire.write(0xB8); // 1011 1000 = Стерео
Wire.write(0x10); // 0001 0000
Wire.write((byte)0x00); //
Wire.endTransmission(); // формируем I2C-Stop.
}
RDA5807M radio;
radio.setVolume(15);
значения от 0 до 15
а то что ты привел только для установки частоты приема
OK.
Пришли 5807 как на картинке, но запускаются как 5802, адреса сканятся
20
22
A0
C0
почему такое может быть и что я делаю не так?
5807 может работать как 5807 (адрес записи 20,чтения 21,прямая запись 22),так и в режиме совместимости с теа5767 (адрес записи С0)
даташит в режиме совместимости и родной http://www.i-biznes.com/datasheets/RDA/RAD5807P_ProgManual_1.0.pdf
в родном варианте можно регулировать больше функций
Я уже описывал управление,могу найти