Xbee-модули не требуют для своей работы каких-либо библиотек — serial-коммуникация через них осуществляется совершенно прозрачно для программиста, с применением стандартных функций последовательного порта. Это, как мы говорили, позволит нам через один и тот же порт осуществлять и прием данных от внешнего датчика, и установку часов из компьютера. Правда, тогда при подключении к компьютеру ХЬее-модуль придется извлекать из устройства точно так же, как это делается при программировании контроллера. Но делать это придется очень редко — только для подстройки времени, если часы DS-1307 сильно убегут, т. е. не чаще, чем где-то раз в полгода), ну и, разумеется, при смене батарейки, которой, как обещают производители, должно хватить на несколько лет.
* * *
Подробности
Если мы не хотим озадачивать пользователя извлечением Xbee-модуля, то пришлось бы использовать как минимум Arduino Mega, где UART-портов несколько. На мой взгляд, как и в случае применения GPS-модуля для полностью автоматической установки часов, это слишком большая цена за функцию, которая будет применяться лишь изредка.
Кстати, подкину еще одну идею: если приобрести третий ХЬее-модуль, настроить его на совместную работу с остальными и подключать его к компьютеру через специальный Xbee-адаптер, то через него можно не только устанавливать часы, как через обычный UART, но даже и программировать контроллер. Программу станции при этом можно использовать ту же, что приведена далее, только тогда перед обращением к часам извлекать ХЬее-модуль не придется. Предлагаю вам заняться на досуге такой доработкой — базовый материал для нее есть в статье о настройке ХЬее на сайте «Амперки», которая упомянута в разд. «Подключение и настройка ХЬее-модулей» этой главы.
Из этой ситуации можно вывернуться и еще одним способом — попросту организовать программный UART на свободных выводах Arduino Uno (правда, в случае ЖК-дисплея для этого может не хватить контактов платы). О том, как это делается, см. http://arduino.ua/ru/prog/SoftwareSerial. Вариант этого способа — применить для общения датчика со станцией не ХЬее, а, например, беспроводной модуль на основе nRF24L01+ [48] Об этом модуле см., например, тут: http://mk90.blogspot.ru/2013/12/freeduino-wireless-2.html .
. Он предназначен в принципе для тех же целей, но управляется не через UART, а через SPI, и его можно использовать параллельно с записью на SD-карточку. Как видите, платформа Arduino дает большое разнообразие способов решения для любых пришедших в голову идей.
Подключение и настройка ХЬее -модулей
Здесь придется повозиться: настройка пары ХЬее-модулей для совместной работы — не самое простое занятие. Мы применим для их прошивки не отдельную плату XBee-USB адаптера (который один раз используется, а затем оказывается ненужным), а универсальную Wireless Shield, которую потом приспособим и в схеме станции, причем в варианте с разъемом для SD-карты (Wireless Shield SD [49] См. http://amperka.ru/product/arduino-wireless-shield-sd .
). Ее подробное описание можно найти на украинском сайте Arduino [50] См. http://arduino.ua/ru/hardware/WirelessShield .
. Там же имеются рекомендации по подключению Xbee-модулей фирмы Digi. Обычно контроллер из платы Arduino перед прошивкой Xbee-модулей через Wireless Shield рекомендуют извлекать, но мы поступим иначе — в упомянутом разделе украинского сайта приведена программа-заглушка, которую перед настройкой следует закачать в Arduino, чтобы контроллер не мешал прошивке модулей. Программа очень проста и состоит из двух строк:
void setup() { }
void loop () { }
Отметим, что в обратной ситуации (т. е. при прошивке Arduino в присутствии ХЬее-модуля) столь простого решения не существует — при необходимости изменить программу Xbee-модуль придется извлекать каждый раз.
Скомпилируйте эту программу в новом файле и загрузите в Arduino. Затем подсоедините Wireless Shield к плате Arduino Uno, установите в него Xbee-модуль (не забудьте про соответствие номеров контактов на модуле и «шилде»!) и переключите на плате Wireless Shield микропереключатель в положение «USB». Не забывайте, что для нормальной работы Xbee-модуля с контроллером переключатель надо возвращать в положение «Micro».
При подключении USB-кабеля к Arduino Uno теперь должен загореться красный светодиод PWR в углу платы Wireless Shield. При работе с модулем следует обращать внимание на этот светодиод — его ровное и яркое свечение сигнализирует о том, что модуль вставлен правильно. В этом неудобство применения таких модулей — они-то прошиваются один раз, а рабочую программу приходится долго отлаживать. Потому стоит постараться отладить все возможное до установки ХЬее-модуля, и напоследок оставить только беспроводные функции.
Читать дальше
Конец ознакомительного отрывка
Купить книгу