Насправді, пристрій з передачі даних складається з двох модулів: приймача і передавача. Дані можна передавати тільки в одному напрямку. Це важливо розуміти при використанні цих модулів.
Наприклад, можна зробити дистанційне керування будь-яким електронним пристроєм, будь то мобільний робот або, наприклад, телевізор. У цьому випадку дані будуть передаватися від пульта управління до пристрою. Інший варіант - передача сигналів з бездротових датчиків на систему збору даних. Тут вже маршрут змінюється, тепер передавач стоїть на боці датчика, а приймач на стороні системи збору.
Модулі можуть мати різні назви: MX-05V, XD-RF-5V, XY-FST, XY-MK-5V, і т.п. але всі вони мають приблизно однаковий зовнішній вигляд і нумерацію контактів. Також, поширені дві частоти радіомодулів: 433 МГц і 315 МГц.
1. Підключення
Передавач має всього три висновки: Gnd, Vcc і Data.
Підключаємо їх до першої платі Ардуіно за схемою:
Передавач MX-05V 433МГц
У приймача чотири виведення, але один не використовується.
Схема підключення до другої платі Ардуіно ідентична першої:
Приймач XD-RF-5V 433МГц
Збираємо обидва пристрої на макетної платі і приступаємо до написання програм.
2. Програма для передавача
Для роботи з радіомодулями скористаємося бібліотекою RCSwitch. Напишемо програму, яка буде кожну секунду по-черзі відправляти два різних повідомлення.
Розберемо програму. Перше що ми зробили - оголосили об'єкт для роботи з передавачем і назвали його mySwitch.
Потім, всередині стандартної функції setup включили передавач і вказали висновок, до якого він підключений:
Нарешті, в основному циклі програми loop відправляємо спочатку одне повідомлення, а потім і друге за допомогою функції send:
Функція send має два аргументи. Перший - це відправляється повідомлення, яке відправлятиметься о ефір у вигляді пачки імпульсів. Другий аргумент - це розмір відправляється пачки.
У нашій програмі ми вказали повідомлення в форматі двійкового числа. На це вказує англійська літера «B» на початку коду B1000. У десятковому поданні це число перетвориться до вісімки. Так що ми могли викликати функцію send так:
Також send вміє приймати виконавчі рядки:
3. Програма для приймача
Тепер напишемо програму для приймача. Для демонстрації факту передачі ми будемо запалювати світлодіод, підключений до висновку №3 на платі Ардуіно. Якщо приймач спіймав код B1000 - включимо світлодіод, а якщо B0100 - вимкнемо.
Функція available повертає істину, якщо передавач прийняв хоч якісь дані:
Функція getReceivedValue витягує з потоку даних одну пачку і декодує її в число. У програмі ми присвоюємо отримане число змінної value:
Тепер можна спробувати потренуватися і зробити різні корисні пристрої. Ось кілька ідей.
- Пульт для світильника. На стороні приймача модуль реле. включений в ланцюг харчування світильника (обережно, 220 Вольт!). На стороні передавача: тактова кнопка. Написати програми для приймача і передавача, які після натискання кнопки будуть включати віддалене реле. При повторному натисканні кнопки реле буде вимикатися.
- Вуличний термометр з радіоканалом. На стороні передавача розмістити датчик температури. Передбачити автономне живлення від батарейок. На стороні приймача: символьний ЖК дисплей. Написати програми для приймача і передавача, які дозволять виводити показники температури з віддаленого датчика на дисплеї.
висновок
Отже, тепер ми знаємо простий і недорогий спосіб передавати дані на відстані. На жаль, швидкість передачі і дистанція в таких радіомодулів вельми обмежені, так що ми не зможемо повноцінно управляти, наприклад квадрокоптера. Однак, зробити радіопульт для управління простим побутовим приладом: світильником, вентилятором або телевізором, нам під силу.