Ранее применение беспроводных технологий в основном ограничивалось топологией точка-точка, что использовалось в большинстве случаев для замены кабеля. Но сегодня можно организовывать так называемые ячеистые сети благодаря технологии ZigBee. ZigBee это название беспроводного протокола, поддерживаемого стандартом IEEE 802.15. Этот протокол характеризует беспроводные персональные сети (PAN) с использованием маломощных беспроводных приемопередатчиков.
Сегодня существуют удобные в применении радиомодули, работающие на основе ZigBee. Называются они Xbee и имеют приблизительный диапазон передачи данных от 10 до 100 метров. Они используются в промышленности, научных областях, медицине и т.д. Xbee довольно просто связать с Arduino, о чем и будет рассказано в данном материале.
Хотя модуль XBee использует сложные методы пакетной передачи данных протокола Zigbee, он все же может общаться с другими устройствами посредством последовательного интерфейса. Благодаря этому его можно подключить к Arduino, и управлять им с помощью этой платы. В данном случае реализуем простой пример с двумя модулями Xbee, один из которых передает данные, а другой получает эти данные. Один модуль подключается к компьютеру через адаптер USB-UART, другой к Arduino через последовательный порт. Для вывода информации к Arduino также подключен LCD-дисплей. Схема подключения представлена на рисунке ниже.
Код Arduino для взаимодействия с модулем Xbee следующий:
#include <LiquidCrystal.h>
// инициализируем библиотеку ЖК-дисплея с указанием выводов
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
// даем имя выводу
int led = 9;
void setup()
{
// устанавливаем количество столбцов и строк ЖК-экрана
lcd.begin(16, 2);
lcd.print("TEST PROGRAM");
lcd.setCursor(0, 1);
lcd.print(" XBEE INTERFACE ");
// линию led настраиваем на выход
pinMode(led, OUTPUT);
// запускаем последовательный порт на скорости 9600
Serial.begin(9600);
// ждем 0.1 секунды, чтобы порт точно проинициализировался
delay(100);
// отправка начальных данных один раз //
Serial.print('\n');
Serial.print(" TEST ");
Serial.print('\n');
Serial.print('\r');
Serial.print(" XBEE Demo");
Serial.print('\n');
Serial.print('\r');
Serial.print('\n');
}
void loop()
{
// отправляем эту строку модулю Xbee каждый раз в бесконечном цикле //
Serial.println("hello world");
// мигание светодиодом //
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
© digitrode.ru