Подключение и настройка ХЬее ‑модулей
Здесь придется повозиться: настройка пары ХЬее‑модулей для совместной работы – не самое простое занятие. Мы применим для их прошивки не отдельную плату XBee‑USB адаптера (который один раз используется, а затем оказывается ненужным), а универсальную Wireless Shield, которую потом приспособим и в схеме станции, причем в варианте с разъемом для SD‑карты (Wireless Shield SD[49]). Ее подробное описание можно найти на украинском сайте Arduino[50]. Там же имеются рекомендации по подключению 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. При работе с модулем следует обращать внимание на этот светодиод – его ровное и яркое свечение сигнализирует о том, что модуль вставлен правильно. В этом неудобство применения таких модулей – они‑то прошиваются один раз, а рабочую программу приходится долго отлаживать. Потому стоит постараться отладить все возможное до установки ХЬее‑модуля, и напоследок оставить только беспроводные функции.
Теперь отвлечемся от украинского сайта – на нем рекомендуют настраивать мо‑ дуль руками с помощью посылки команд. Мы пойдем более простым путем и обратимся к статье на сайтеAmperka.ru «Настройка пары модулей ХВее Series 2 для коммуникации друг с другом»[51]. Учтите, что все сказанное далее относится к модулям Series 2 (на плате помечены буковками S2), а встречающиеся в некоторых магазинах более дешевые модули Series 1 (они не помечены никак) настраиваются несколько иначе и несовместимы с Series 2.
Пропускаем там все, касающееся подключения модуля к XBee‑USB адаптеру, и далее узнаем, что надо скачать специальную программу X–CTU с сайта производителя. Отправившись по ссылке, даже подготовленный человек растеряется, – только для Windows там представлены три варианта указанной программы. Скачиваем наугад самую верхнюю (на момент написания этих строк это XCTU ver. 5.2.8.6) и устанавливаем. Ура! Мы попали как раз на то, что надо.
Запускаем X–CTU, первым делом выбираем СОМ‑порт, соответствующий Arduino, и для проверки жмем кнопкуTest/Query (напоминаю, что в Arduino перед этим уже должна быть загружена программа‑заглушка или контроллер извлечен из платы). Далее переходим на вкладкуModem Configuration и скачиваем свежие версии прошивок через кнопку Download new versions (что будет выполняться довольно долго – программа скачивает обновления для всех устройств, которые в ней предусмотрены).
И, наконец, выполняем собственно прошивку, как описывается в статье, для двух Xbee‑модулей: одного в режиме «координатора», другого – «роутера». Сначала выбираем тип модема, определенный программой черезTest/Query (в нашем случае ХВ24‑В), затем в поле Function Set находим пункт ZNET 2.5 COORDINATOR AT (не ошибитесь! Там много пунктов с похожими названиями). Кроме этого, устанавливаем идентификатор сети в графе PAN ID (рис. 22.2).
Рис. 22.2. Установка параметровXbee‑модуля в программе X–CTU
Он должен быть одинаковый для обоих модулей, пусть у нас он будет равен 0FFF. Можно установить скорость обмена в пункте Serial interfacing/BD‑BaudRate , однако по умолчанию там и без того установлено значение 3 (9600). Потом на всякий случай поставьте отметку в пунктеAlways update firmware (при повторной прошивке этого можно не делать) и, наконец, нажмите кнопку Write .
Для второго модуля в поле Function Set находим ZNET 2.5 ROUTER/END DEVICE AT и делаем все то же самое, только еще в пункте Sleep Modes/SM‑Sleep Mode выбираем значение 1 – PIN HIBERNATE (это нам понадобится для установки режима энергосбережения в выносном датчике). Кроме этого, советуют в пункте Serial Interfacing/D7‑DIO7 Configuration установить значение0 (CTS flow control disabled) . После этого устройство конфигурируется именно какEND DEVICE , и нам станет доступен Sleep‑режим, который активируется установкой логической 1 на выводе 9 модуля.
Обязательно сохраните обе конфигурации (Profile | Save ). При повторном подключении модулей можно прочесть зашитую в них конфигурацию, нажав кнопку Read , и в случае необходимости что‑то подправить.
* * *
Подробности
Xbee‑модули фирмы Digi имеют весьма капризный характер. Если у вас в процессе настройки модуль перестал откликаться на запросы программы X–CTU, то не кидайтесь сразу выбрасывать довольно дорогой девайс, полагая его испорченным. Помогает следующая последовательность действий, проверенная мной на практике:
1. Извлеките из платы Wireless Shield (или из XBee‑USB адаптера, если вы используете его) «неисправный» Xbee‑модуль и подключите ее к компьютеру.
2. Запустите X–CTU, сразу перейдите на вкладкуModem Configuration , загрузите любую из сохраненных конфигураций (Profile | Load ) и попробуйте загрузить ее в устройство через кнопку Write . Естественно, вы получите сообщение о том, что никакого модема не обнаружено.
3. Закройте это окошко и вставьте Xbee‑модуль в плату. Затем снова нажмите кнопкуWrite . Скорее всего, модем «пропишется» как надо. После этого его можно будет прочесть кнопкой Read , как обычно, и внести необходимые исправления. Если с первого раза не получится, повторите эти операции.
* * *
После прошивки пометим модули на всякий случай, наклеив на них «лейблы» с буквами С (для «координатора») и R (для «роутера») и значением ID – вдруг мы захотим подключить еще один модуль? «Координатор» мы присоединим к основному модулю станции, а «роутер» – к выносному датчику (только END DEVICE можно вводить в режим энергосбережения).
Теперь мы отложим настроенные Xbee‑модули и займемся настройкой Arduino Mini, который у нас ляжет в основу выносного датчика станции.
Выносной датчик на основе Arduino Mini
Кстати, у Arduino Mini, несмотря на его миниатюрные размеры, портов даже больше, чем у Arduino Uno, – обратите на его схеме внимание на выводы AD6 и AD7 (см. http://arduino.ru/Hardware/ArduinoBoardMini). Правда, они могут использоваться только по прямому назначению – как аналоговые входы. По аналогии с выводами AD0‑AD5 (цифровые порты 14–19) может показаться, что им должны соответствовать цифровые порты с номерами 20 и 21, но это не так: AD6 и AD7 представляют собой отдельные входы АЦП контроллера ATmega328 (ADC6 и ADC7), которые, в отличие от остальных, никак не связаны с цифровыми выводами портов.
Отсутствие входов AD6 и AD7 в большинстве остальных модификаций Arduino объясняется просто: выводы ADC6 и ADC7 имеются лишь у ATmega328 в плоских корпусах TQFP и MLF, где число выводов увеличено до 32, а в PDIP‑корпусе с 28 выводами, на которых построено большинство обычных модификаций Arduino, они отсутствуют.
Для программирования Arduino Mini нам придется создать отдельную конструкцию, включающую внешний USB‑Serial адаптер, который придется приобрести отдельно. В датчике такой адаптер нам не нужен, и он все равно будет конфликтовать с Xbee‑модулем. Потому мы создадим отдельную схему для программирования платы, а отладку функций энергосбережения, чтения показаний датчика SHT1x и работы с Xbee‑модулем вынесем на отдельный макет.
Схема для программирования Arduino Mini показана на рис. 22.3.
Рис. 22.3. Схема для программирования Arduino Mini
Обратите внимание, что линии RxD и TxD платы и адаптера соединены перекрестно. Конденсатор между выводами Reset адаптера и платы выбирается в пределах 0,1–0,5 мкФ – он служит для сброса контроллера перед программированием. Его можно не подключать, но тогда перед программированием на всякий случай нужно сбрасывать контроллер вручную, кнопкой на плате (нажимать не сразу, а когда появляется надписьUploading , или, в русском варианте Загружаем ).
При подключении этой схемы через кабель mini‑USB к компьютеру, USB‑Serial адаптер должен самостоятельно прописаться в системе – в разделе Порты (СОМ и LPT) Диспетчера задач возникнет еще одно устройство под названием Arduino USB Serial Light Adapter (СОМxx). Запустите Arduino IDE, укажите ей через менюСервис | Плата тип платы Arduino Mini w/ATmega328 ), а затем через меню Сервис | Порт – номер порта, который показываетДиспетчер задач для USB‑Serial адаптера. При подключении должны гореть два светодиода: на адаптере и на плате контроллера.
Убедимся, что все работает, загрузив в контроллер какую‑нибудь простенькую программку, вроде стандартного мигания светодиода на выводе 13 . В Arduino Mini такого светодиода нет, но на этом выводе имеется балластный резистор 1 кОм, потому светодиод к нему можно подключать непосредственно (отрицательным выводом к «земле»). Текст всемирно известной тестовой программы на всякий случай привожу:
void setup()
{
pinMode(13, OUTPUT); // настраиваем 13 вывод на выход
}
void loop()
{
digitalWrite(13, HIGH); // включаем светодиод
delay(1000); // ждем 1000 миллисекунд
digitalWrite(13, LOW); // выключаем светодиод
delay(1000); // ждем 1000 миллисекунд
}
Если с первого раза получаете «отлуп» (в виде того самого красного сообщенияavrdude: stk500_getsync(): not in sync: resp =0x1c ), то проделайте следующее: запустите Диспетчер задач и найдите там устройство Arduino USB Serial Light Adapter . Затем выдерните USB‑кабель из адаптера и сразу включите вновь (в Диспетчере задач устройство исчезнет и опять появится). Теперь ему следует сделать дополнительный программный сброс – в контекстном менюArduino USB Serial Light Adapter разыщите пунктОтключить . Отключите устройство и сразу же включите опять (напомню, что в Windows 7 и 8 пункт меню будет называться Задействовать ). Если после этих манипуляций связь с платой все равно не заработает, как надо, то перезагрузите компьютер – должно помочь.
Дата добавления: 2016-05-11; просмотров: 2452;