Wi-Fi модули WiFly и Народный мониторинг

Народный мониторинг — проект по отображению на карте мира и контролю (по e-mail и sms) показаний датчиков среды (температуры, влажности, атм.давления, скорости и направления ветра, радиации, энергопотребления и др.), а также веб-камер. Структурная схема проекта находится здесь

Для передачи данных на Народный мониторинг через WiFi использую модуль WiFly (RN-171, RN-131) от Roving Networks (сейчас они часть Microchip). Модуль представляет собой «коммуникационную трубу» - данные посланные в UART передаются в Wi-Fi и наоборот. К модулю WiFly через UART интерфейс подключен микроконтроллер, который отсылает пакет в формате narodmon.ru (#MAC\n#mac1#value1\n … ##). Подробнее о формате на сайте http://narodmon.ru/#proto

Сценарий работы

Как только модуль получает пакет, то он соединяется с сервером и отсылает содержимое своего буфера UART. Ниже приведен набор команд для настройки модуля WiFly для отправки данных на сервер. Так же всю процедуру можно сделать с клавиатуры через терминальную программу и переходник USB - UART.

Вход в командный режим:

$$$

далее вводим команды настройки (то что за символами / / вводить не нужно - это комментарии ;)

//сетевые настройки
set ip proto 9 // режим UDP + TCP client 
set ip tcp-mode 0x4 // используем DNS
set ip address 0 //  
set dns name narodmon.ru
set ip remote 8283 // порт
set comm remote 0 // нулевой стринг, чтобы модуль при установке соединения с сервером не слал приветственных сообщений
// настройка UART
set comm size 1420 // максимальный размер приемного буфера UART это 1420 байт
set comm time 5000 //FlushTimer=5000 ms    
// 5 секунд на ввод символа перед отсылкой пакета - так много для тестирования, например вводим данные с клавиатуры или если применяется внешний медленный микроконтроллер
set uart mode 0x02 // установить TCP соединение по приему данных в UART 
set uart baudrate 9600 // желаемая скорость UART
// настройки подключения к WiFi сети
set wlan ssid yyy // подключиться к сети "yyy"
set wlan phrase xxx // пароль к сети "xxx"
set wlan join 1 // автоматическое подключение к точке доступа при вкл.питания
save // сохраняем конфигурацию в памяти модуля
reboot // перезагрузка с новым конфигом

Все. Модуль должен подключиться к заданной WiFi сети.

Теперь, если в приемный буфер UART приходит пакет, то он автоматически отсылается на narodmon.ru. Признаком завершения пакета является то, что в течение времени (значение указанное в FlushTimer) в UART не поступали новые данные (можно сделать не по времени, а по принятию к.л. символа).

Внутренние часы реального времени (RTC) модуля WiFly могут синхронизироваться с sNTP сервером. Если микроконтроллер, подключенный к WiFi модулю, ведет лог и загружает историю показаний, то UNIX time можно брать с синхронизированного RTC.

настройки синхронизации с sNTP сервером:

time enable 1 // 0 - sNTP выключен. 1 - получить время при включении питания или 2...255 - получать время с sNTP сервера каждые 2...255 минут
set time address 129.6.15.28 // адресс sNTP сервера
set time port 123 // порт sNTP сервера
set time zome 20     //msk time zone - если нужны показания для своего часового пояса
time               // синхронизируем RTC с сервером

тогда команда show t t

выдаст примерно такое:

Time=18:08:24
UpTime=517 s
RTC=1396015709
Restarts=1
Wake=1
RAW=299ac12e8131

где RTC=1396015709 это UNIX time. Это значение микроконтроллер может использовать для фиксации времени измерения показаний с датчиков.

Модули WiFly имеют хорошие параметры по потреблению. В Sleep потребение всего 4мкА, поэтому модуль может иметь автономное питание.

При работе с батарейным питанием сценарий может быть таким:

Настраиваем часы реального времени RTC на периодическое просыпание и засыпание (чтобы точка доступа не «забыла» о нас - разные точки доступа могут держать соединение разное время). Например, спим 10 минут, просыпаемся, если нет активности, то засыпаем через 5 секунд. Если во время спячки приходят данные по UART, то просыпаемся по сигналу CTS (подключенному к одному из Wake-Up входов модуля). Можно просыпаться по RX, но тогда может потеряться первый байт (UART не активен в Sleep).

Надеюсь эта простая инструкция поможет кому-нибудь в построении своей системы мониторинга!

projects/rn_narodmon.txt · Последние изменения: 30/05/2014.12:48 — pickit2
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0