Радіомодулі tr24a avr devices

Якщо потрібна бездротова передача даних і в той же час не хочеться самостійно городити радіоканал, то найпростіше скористатися готовими радіомодулями яких зараз випускається безліч. Частоти, потужності і ціни у радіомодулів найрізноманітніші. Для моєї завдання дальність була не сильно критична, і я взяв на пробу парочку бюджетних радіомодулів TR24a. Про них в інтернеті пишуть самі суперечливі думки. У кого-то дальність зв'язку 6 метрів, у кого то під 60 метрів. Коротше я вирішив провести незалежне розслідування :-)







Радіомодулі tr24a avr devices

Випускає такі девайси компанія Spirit-ON. Основою служить чип EM198810A. Перше враження після того як взяв радіомодуль в руки - типовий Китай. Флюс не змити, пайка хрінова. Ну ясна річ, чого ж ще хотіти за 4 бакса то! Характеристики цілком відповідають ціні:

  • діапазон частот: 2400 МГц - 2482 МГц
  • 81 канал
  • Вихідна потужність: + 2дБм
  • Чутливість: -85дБм
  • Напруга живлення 2.5В - 3.7В
  • Струм споживання при передачі - 26 мА
  • Струм споживання при прийомі - 25 мА
  • Струм споживання в режимі сну - 3.5 мка
  • SPI інтерфейс

Так само є ще одна приємна особливість - антена зроблена у вигляді провідника на платі і підключати зовнішню не потрібно.

Для роботи з даними трансівером була написана невелика бібліотека на мікропаскале. Вона складається з наступних функцій і процедур:







RESET () - виконує скидання трансивера. Перед скиданням відбувається настройка пинов порту на якому висить трансивер. Для того щоб програма знала що до чого підключено використовуються конструкції такого виду:

// вивід RESET трансивера підключений до нульового біту порту B
RF_RESET. sbit at PORTB0_bit; // Безпосередньо сам біт 0 порту B
RF_RESET_DIR: sbit at DDB0_bit; // А це біт 0 регістра DDRB

Висновки MISO, MOSI, SCK трансивера завжди підключаються до однойменних висновків мікроконтролера

InitTR24A () - ініціалізує трансивер. У разі успішної ініціалізації функція повертає одиницю, а в разі якщо ініціалізація не вдалася - нуль.

WriteReg (Adr: byte; dat: word) - записує в регістр Adr дані з dat

GetMode () - Функція повертає поточний режим роботи трансивера:

0 - Режим простою
1 - Режим передачі
2 - Режим прийому

SetMode (mode: byte) - задає режим роботи трансивера. Коди режимів роботи см. Вище.

SetChanel (ch: byte) - процедура задає канал на якому працює трансивер. Номер каналу може приймати значення від 0 до 80.

SendData (var DataBuf: array [1..64] of byte) - Процедура запускає передачу даних. Дані потрібно помістити в масив з 64 байт і передати в процедуру

ReceiveData (var DataBuf: array [1..64] of byte) - Процедура зчитує то що прийняв трансивер. В процедуру потрібно передати масив з 64 байт. в нього запишуться дані

Як працювати з трансівером

1) Копіюємо всі функції і процедури в свій проект.

2) Визначаємо до яких висновків підключений трансивер.

3) ініціалізувавши SPI

4) Скидаємо трансивер

5) ініціалізувавши трансивер

6) Задаємо номер каналу

Якщо ми хочемо передати дані то:

7) Задаємо режим передачі

8) Викликаємо процедуру передачі

Якщо ми очікуємо отримання даних то:

7) Задаємо режим прёма

8) Періодично перевіряємо режим роботи трансивера. Якщо він змінився з режиму прийому на режим простою то значить ми щось отримали і можна викликати ReceiveData для зчитування даних

Тест на дальність

Результати треба сказати хрінові. В межах кімнати ловить скрізь. За цегляною стіною майже відразу затикається. Дані приходять без помилок або не приходять взагалі. Можливо вам вдасться домогтися кращих результатів.

Використовувати такі модулі для передачі даних на малі відстані цілком можливо. Якщо потрібно надсилати дані подалі, то краще купити радіомодулі на пару баксів дорожче.