Ардуіно радіомодуль на 433 мегагерц, клас робототехніки

Ардуіно радіомодуль на 433 мегагерц, клас робототехніки
На цьому уроці ми вирішимо завдання з передачі радіосигналу між двома контролерами Ардуіно за допомогою популярного приймача з частотою 433МГц.

Насправді, пристрій з передачі даних складається з двох модулів: приймача і передавача. Дані можна передавати тільки в одному напрямку. Це важливо розуміти при використанні цих модулів.

Наприклад, можна зробити дистанційне керування будь-яким електронним пристроєм, будь то мобільний робот або, наприклад, телевізор. У цьому випадку дані будуть передаватися від пульта управління до пристрою. Інший варіант - передача сигналів з бездротових датчиків на систему збору даних. Тут вже маршрут змінюється, тепер передавач стоїть на боці датчика, а приймач на стороні системи збору.

Модулі можуть мати різні назви: MX-05V, XD-RF-5V, XY-FST, XY-MK-5V, і т.п. але всі вони мають приблизно однаковий зовнішній вигляд і нумерацію контактів. Також, поширені дві частоти радіомодулів: 433 МГц і 315 МГц.

1. Підключення

Передавач має всього три висновки: Gnd, Vcc і Data.

Ардуіно радіомодуль на 433 мегагерц, клас робототехніки

Підключаємо їх до першої платі Ардуіно за схемою:

Передавач MX-05V 433МГц

У приймача чотири виведення, але один не використовується.

Ардуіно радіомодуль на 433 мегагерц, клас робототехніки

Схема підключення до другої платі Ардуіно ідентична першої:

Приймач XD-RF-5V 433МГц

Збираємо обидва пристрої на макетної платі і приступаємо до написання програм.

Ардуіно радіомодуль на 433 мегагерц, клас робототехніки

2. Програма для передавача

Для роботи з радіомодулями скористаємося бібліотекою RCSwitch. Напишемо програму, яка буде кожну секунду по-черзі відправляти два різних повідомлення.

Розберемо програму. Перше що ми зробили - оголосили об'єкт для роботи з передавачем і назвали його mySwitch.

Потім, всередині стандартної функції setup включили передавач і вказали висновок, до якого він підключений:

Нарешті, в основному циклі програми loop відправляємо спочатку одне повідомлення, а потім і друге за допомогою функції send:

Функція send має два аргументи. Перший - це відправляється повідомлення, яке відправлятиметься о ефір у вигляді пачки імпульсів. Другий аргумент - це розмір відправляється пачки.

У нашій програмі ми вказали повідомлення в форматі двійкового числа. На це вказує англійська літера «B» на початку коду B1000. У десятковому поданні це число перетвориться до вісімки. Так що ми могли викликати функцію send так:

Також send вміє приймати виконавчі рядки:

3. Програма для приймача

Тепер напишемо програму для приймача. Для демонстрації факту передачі ми будемо запалювати світлодіод, підключений до висновку №3 на платі Ардуіно. Якщо приймач спіймав код B1000 - включимо світлодіод, а якщо B0100 - вимкнемо.

Функція available повертає істину, якщо передавач прийняв хоч якісь дані:

Функція getReceivedValue витягує з потоку даних одну пачку і декодує її в число. У програмі ми присвоюємо отримане число змінної value:

Тепер можна спробувати потренуватися і зробити різні корисні пристрої. Ось кілька ідей.

  1. Пульт для світильника. На стороні приймача модуль реле. включений в ланцюг харчування світильника (обережно, 220 Вольт!). На стороні передавача: тактова кнопка. Написати програми для приймача і передавача, які після натискання кнопки будуть включати віддалене реле. При повторному натисканні кнопки реле буде вимикатися.
  2. Вуличний термометр з радіоканалом. На стороні передавача розмістити датчик температури. Передбачити автономне живлення від батарейок. На стороні приймача: символьний ЖК дисплей. Написати програми для приймача і передавача, які дозволять виводити показники температури з віддаленого датчика на дисплеї.

висновок

Отже, тепер ми знаємо простий і недорогий спосіб передавати дані на відстані. На жаль, швидкість передачі і дистанція в таких радіомодулів вельми обмежені, так що ми не зможемо повноцінно управляти, наприклад квадрокоптера. Однак, зробити радіопульт для управління простим побутовим приладом: світильником, вентилятором або телевізором, нам під силу.