сайт для палких паяльників

Очередное радикальное обновление моей метеостанции состоялось.

OLD_meteo

Раньше у меня работала метеостанция, которая была сделана на базе NETAlarm (я о ней так и не написал). Ее задача была довольно простой: снимать данные с датчиков атмосферного давления, влажности и температуры и отправлять на сайт. Эта метеостанция достаточно долго и исправно работала. И, когда встал вопрос о её дальнейшем развитии, выяснилось, что в микроконтроллере уже не хватает памяти. Еще одна, достаточно неприятная, особенность – метеостанция должна одновременно находиться в досягаемости питания (220В), компьютерной сети и проводов от датчиков, которые находятся на улице. Для того, чтобы дотянуть компьютерную сеть, приходилось использовать коммутатора. К тому же, на время обновления ПО, приходилось ее выключать на длительное время.

Новая версия метеостанции

WiFi_meteo

Идея новой метеостанции стала реальной, когда стали доступны WiFi модули ESP8266. С помощью этого модуля можно подключить к WiFi сети даже самый простенький микроконтроллер, обвешанный разными датчиками и исполнительными механизмами. Доступ к такому модулю осуществляется по IP протоколу. Использование ESP8266 расширяет возможности размещения датчиков, поскольку теперь нет необходимости тянуть информационные провода. Остаются только провода питания. Если возникает необходимость использовать несколько модулей с датчиками, расположенных на достаточно большом расстоянии друг от друга, – это тоже не проблема.

К тому же автоматически решается вопрос гальванической развязки между датчиками и центральным устройством, которое собирает показания. Это очень актуально, когда встает вопрос защиты от молний и других помех при расположении датчиков снаружи на крыше дома, и тому подобное.

Опрос датчиков, предварительный анализ, хранение и передачу информации должен выполнять микрокомпьютер (Raspberry Pi). Цена микрокомпьютеров на сегодня достаточно демократична и, поскольку, микрокомпьютер используется для решения других бытовых вопросов, такое техническое решение вполне оправдано. Микрокомпьютер также подключается к компьютерной сети с помощью WiFi. То есть его расположение не привязано к проводам метеостанции и проводов компьютерной сети. Использование беспроводных технологий упрощает расположения датчиков. А использование микрокомпьютера делает эту задачу тривиальной и позволяет в дальнейшем очень просто и без лишних усилий расширять функционал системы.

Как это работает

Модули датчиков подключаются к WiFi сети. При поступлении в запроса по IP на соответствующий порт, направляется ответ. Запрос может содержать команды на переключение исполняющих приборов. В нашем случае модуль с датчиками просто отправляет данные полученные с датчиков.

Микрокомпьютер периодически опрашивает модули датчиков, анализирует данные и выполняет необходимые действия. В данном примере отправляет данные на сайт.

Схема модуля датчиков

circuit

Примечание: В схему был добавлен кварц частотой 8 МГц. Без кварца схема работала нестабильно и при перепаде температуры иногда некорректно работала с модулем ESP8266.

Прошивка

Программа для микроконтроллера написана на основе примера в статье WiFi модуль ESP8266

При поступлении запроса (любого символа) на порт 88, направляется ответ в следующем формате:
P <давление>: T <температура>: H <влажность воздуха>: L <датчик освещения>

Пример можно скачать здесь: WiFiMeteo.zip

Примечение: В прошивку на всякий случай добавлена ​​функция перезагрузки микроконтроллера для повторной инициализации модуля ESP8266. Перезагрузка выполняется раз в минуту. Это не обязательно и было сделано, когда в схеме не было кварца и связь с модулем ESP8266 иногда глючила из-за нестабильной частоту микроконтроллера.

Настройка модуля датчиков и WiFi роутера

Модуль датчиков сделан таким образом, чтобы модуль ESP8266 можно было отсоединить для настройки. Итак подключаем ESP8266 к UART-USB переходника и подключаем к вашей Wi-Fi сети (подробности смотри в статье: http://www.avislab.com/blog/esp8266_ru/). ESP8266 запомнит это соединение. Теперь вставим ESP8266 к нашему модуля датчиков и включаем. Модуль подключится к WiFi сети. IP адрес ему выдаст WiFi роутер. Для того, чтобы DHCP сервер всегда выдавал один и тот же адрес, в настройках роутера надо “закрепить” IP адрес по MAC адресу модуля ESP8266. В разных моделях роутеров с различными прошивками это делается по-разному. Поэтому, как это делать на вашем устройстве, ищите в Интернете.

Настройка микрокомпьютера Raspberry Pi

Теперь, с любого компьютера можно получить информацию с модуля датчиков, например командой:

telnet <IP> <порт>

или:

wget http://<IP>:<порт>

Я использую микрокомпьютер Raspberry Pi с операционной системой Raspbian. Нас интересует, как можно получить информацию с помощью скрипта, разобрать ее, обработать и передать дальше. Пример скрипта wifi_weather.py:


import urllib2
import time

counter=0
result=0

# Get data from WiFi meteo
while (result==0):
        try:
                response = urllib2.urlopen('http://192.168.1.127:88')
                result=1
        except Exception as e:
                counter+=1;
                if (counter > 3):
                        print "Oops!"
                        quit()
                time.sleep(1)
# Parse data
html = response.read()
value = html.split(":")
s=value[1]+":"+str(int(value[3])/10)+":0:"+value[5].strip()+":"

# Send To site
response = urllib2.urlopen("http://mysite.com.ua/getdata.php?data="+s)

Дописываем строку в /etc/crontab :
*/15 * * * * root /usr/bin/python /home/pi/scripts/wifi_weather.py

Теперь скрипт будет запускаться каждые 15 минут.

Приведенный скрипт выполняет простые операции: получение информации, ее разбор, формирование http-запроса на web-сервер, отправка данных. Вы можете доработать скрипта и сохранять данные на микрокомпьютере, например, в базу данных – на случай, если временно отсутствует связь с получателем, создать свой web-сервис, выводить данные на дисплей, и тому подобное.

IMG_5413 IMG_5411 IMG_5410 IMG_6465 IMG_6466 IMG_6469

Безопасность

В этом простом примере информацию с WiFi meteo может получить кто угодно в локальной беспроводной сети. Но это не представляет угрозы. Задуматься о безопасности нужно, когда аналогичный модуль управляет устройствами. Например, кормит рыбок или открывает окно для проветривания. Если не позаботиться о безопасности (домашнюю WiFi сеть сломать не сложно), тогда злоумышленник сможет что-то “учудить”. Поэтому, следует позаботиться о каком нибудь шифрования данных.

Успехов.

Translate
Архіви

© 2011-2018 Андрій Корягін, Кременчук - Київ, Україна