- PVSM.RU - https://www.pvsm.ru -
Сразу скажу, чего вы в этой статье не найдете:
Ворнинг для дизайнеров: в посте есть картинка, лучше не смотрите на нее. От необходимости писать подобный ворнинг для программистов я себя избавил, избежав соблазна опубликовать Python-скрипты и thml-код страницы, показанной на картинке (шаблон генерился в Word).
Предполагается, что вы сами-с-усами, способны найти нужную информацию в интернете и обладаете нужными знаниями. Задача статьи – достаточно крупными штрихами описать способ интеграции XBee и Ethernet/Wi-Fi роутера, привести простенький пример работающей системы, указать направления дальнейшего развития.
Поехали.
Я всегда думал, что XBee/Zigbee /Прочее-bee – это такой беспроводной удлинитель UART-a. Поэтому мне всегда было непонятно – почему же оно такое дорогое. Но тут товарищ дал мне два модуля XBee на «поиграться», я притащил их домой, немедленно угробил один из них при перепрошивке, обратился в саппорт Digi (производителя XBee: www.digi.com [1]), несмотря на высокий уровень поддержки умудрился неправильно выполнить инструкции, закрыл кейс и, собственно остался с «горелой» железячкой на руках, которую надо было как-то возвращать. Как всегда пришлось копаться, разбираться, материться и биться головой об стол. В результате многодневных плясок с бубном я узнал, что:
В общем все хорошо, есть у нас сеть датчиков и исполнителей, все сообщения между ними роутятся, друг с другом они общаются через роутеры, координатор сидит сверху и за всем этим наблюдает. Проблема в том, что у нас, человеков, нет точки входа в эту сеть. Простейшее решение: USB-UART конвертер, включаем комп, запускаем терминал или специальную программу (например программу от digi: X-CTU или другие, типа XBee-Operator, или вообще сами пишем скрипты на питоне, на сайте digi.com есть подключаемые модули для работы с XBee). Плохо то, что если мы хотим иметь информацию о состоянии датчиков в удобоваримом виде всегда и отовсюду, то комп, даже с запущенным веб-сервером, выпяченным в интернет – не самое изящное решение.
Более изящное решение – использовать постоянно включенный и смотрящий напрямую в инет роутер. Подойдет любой роутер, имеющий УАРТ и к консоли которого есть доступ. Я использую старый добрый ASUS wl500gP с прошивкой от Олега (wl500g.info), более модно сейчас использовать TP-Link, DLink и прочие махонькие коробочки, жрущие на порядок меньше энергии и на которых можно распаять UART и вкорячить туда Open-WRT прошивку. Как это делать – в гугл. Вот пример: wiki.openwrt.org/ru/toh/tp-link/tl-mr3420 [2]. Интересуют пункты Установка и Последовательный порт.
ВАЖНО: XBee – это 3,3В устройство. Если подать на него 5В, оно запечется.
Берем XBee, подключаем к USB-UART переходнику, втыкаем в комп, запускаем X-CTU, прошиваем нужной прошивкой. Простейший вариант – ZB24 Coordinator AT (да, к этому моменту уже надо знать, чем отличаются прошивки для XBee, какая роль устройства нужна и т.д. Нужно почитать в инете, начать неплохо отсюда: The Unofficial XBee FAQ (version 1.3) [3] (англ) или с книжки Robert Faludi — Building Wireless Sensor Networks with ZigBee, XBee, Arduino, and Processing. Отсоединяем XBee от переходника и от компа, и подключаем к последовательному порту роутера.
XBee | Router |
VDD (pin 1) | +3,3V |
VSS (pin 10) | GND |
DOUT (pin 2) | RX |
DIN (pin 3) | TX |
Проверяем работоспособность. Запускаем minicom, подключаемся к порту, на котором висит XBee на скорости, на которую настроен XBee (у меня –D/dev/ttyS1 –S115200). Входим в режим АТ-команд: нажимаем три раза «+» (и больше ничего!). Через секунду XBee должна ответить “OK”,, что значит, что она вошла в режим команд. Из режима можно выйти, введя команду ATCN<ввод> или подождав 10 секунд. В принципе на этом все, можно уже с этим портом делать все, что угодно. Например, прописать в автозагрузку ser2net, и замапить /dev/ttyS1 на TCP-порт, например 2000. После этого с любой машины в сети можно подключиться к роутеру телнетом или поставить софт на машине, которая замапит обратно удаленный ТСП-порт на локальный сериал.
У меня на роутере стоит Python-интерпретатор. Раз в час cron дергает несколько скриптов. Один из скриптов открывает последовательный порт, на котором висит XBee и отправляет запрос на удаленное устройство (которое стоит в ванной на стояке): ‘gv’. Устройство отвечает строками: ‘hw25.054cw0.000rn’ и ‘v8.72rn’, что значит, что счетчик горячей воды накрутил 25.054 кубометра воды, холодный накрутил 0 кубометров (конечно, он же не подключен), и что напряжение батареи 8,72 вольта. Скрипт берет эти значения и пишет их в файл. Другой скрипт, который cron дергает раз в пять минут, пакует эти значения в html-шаблон и сохраняет как index.html в папке /opt/share/www/. На роутере также поднят lighttpd, который при обращении на адрес роутера отдает эту статическую страницу. Таким образом я и моя жена можем в любой момент узнать показания водосчетчиков не вставая с дивана.
Да что угодно.
• Напоминать о том, что цветы не политы (мерять влажность земли в горшках и паниковать, когда земля высохнет)
• Кормить животных, будучи в отъезде
• Выключать свет, открывать дверь, топить баню, закрывать окна и прочее прочее прочее. Все ограничивается только фантазией.
Ну, самое, наверное, очевидное – сделать динамический опрос датчиков. То есть прописать питон как fast-cgi модуль в lighttpd и напрямую обращаться к скриптам из браузера
Дальше, у digi есть софт iDigi Dia – фактически консоль управления. Используя его, можно отдавать команды XBee датчикам, заливать на них удаленно прошивки, ресеттить их и т.д.
У digi также есть клауд (http://www.idigi.com/). То есть можно связать отдельаные датчики или целые сети с клаудом, где будет крутиться управляющий софт и иметь к нему доступ отовсюду.
Есть еще куча коннекторов (http://www.idigi.com/idigiconnector/) — в общем раздолье для человека с головой и навыками
Есть софт, написанный сторонними разработчиками. Например XIG (xig.googlecode.com) – Xbee Internet Gateway. Это транслятор web<->xbee. Например, он может при поступлении данных о состоянии датчика прикрутить эти данные хвостом к get-запросу и отправить этот запрос на удаленный сервер. Или по запросу от XBee скачать информацию с определенного сайта.
В общем, много чего можно. Подключение четырех проводков от роутера к XBee – это всего лишь первый шаг к Internet of Things. Но даже этот первый шажок сделать очень интересно.
Автор: imwode
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ethernet/16849
Ссылки в тексте:
[1] www.digi.com: http://www.digi.com
[2] wiki.openwrt.org/ru/toh/tp-link/tl-mr3420: http://wiki.openwrt.org/ru/toh/tp-link/tl-mr3420
[3] The Unofficial XBee FAQ (version 1.3): http://www.jsjf.demon.co.uk/xbee/faq.htm
Нажмите здесь для печати.