Небольшая метеостанция своими руками


02.02.2011

Метеостанция

На нашем сайте публикуется текущая погода в Кременчуге (см. Своя погода в Кременчуге) Описание устройства и программного обеспечения в этой статье.

Из завалявшихся деталей решил сделать небольшую метеостанцию. На сборку и написание прошивки для контроллера ушло два дня выходных. Еще пара дней ушла на написание, тестирование и отладку остального программного обеспечения. Текущая версия метеостанции измеряет температуру, влажность, давление, имеется связь с компьютером через USB порт от него же и питается, резервное питание от батареи 9 В. Данные отображает на LCD. Еще есть часы. Поскольку, не нашлось подходящего кварца (а покупать принципиально не хотел), сделал синхронизацию времени с компьютером.

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

Собираем метеостанцию

Станция собрана на макетной плате, поэтому чертеж печатной платы и не просите.

Использовались следующие основные компоненты:

  • ATMega8 - контроллер
  • MPX4115A - датчик давления
  • HIH-4000 - датчик влажности
  • DS18B20 - датчик температуры
  • WH1602A - дисплей

Схема также в файле mscheme.gif

Я использовал LCD на PLED технологии, можно обыкновенные типа WH1602A. Датчики температуры и влажности вынесены на улицу в защитную коробочку.

Метеостанция. Что внутри.

Метеостанция. Наружные датчики

Подключаем к компьютеру

Метеостанция. Подключение к компьютеру

Подключение к порту USB требует отдельного описания. В принципе, можно было подключить и к COM порту, так проще. Но у меня он занят. Выбора нет - USB. Поскольку станция собиралась с чего было, то в ход пошел завалявшийся огрызок кабеля CA-42 для подключения мобильного телефона к компьютеру. Разъем к мобильному телефону  ушел в дело, а тот конец, который подключается к компьютеру остался. В самом этом разъеме уже имеется микросхема для USB порта, а на выходе - стандартный UART, тот, который используется в мобильных телефонах и самый раз для контроллера, поэтому провода запаиваем напрямую, без каких либо преобразователей сигнала. После установки драйверов для этого кабеля, появляется виртуальный COM порт. Далее можем любой программой подключиться к нашей метеостанции, например HyperTerminal. Распайку кабеля специально не привожу, поскольку кабеля разные, могут отличатся. Использовать нужно 3 провода TX, RX, GND. Запитать устройство от кабеля, скорее всего, не получится. Я взял не нужный USB разъем и запитал с другого USB порта.

Для того чтобы можно было из командной строки отправлять команды и принимать ответ от метеостанции, была написана программа getfromcom.exe.

Метеостанция понимает только две команды:

AGOV - Возвращает текущие показания датчиков.

SETTIME [время в секундах с начала суток] - команда устанавливает время в метеостанции

Для получения данных выполняем getfromcom.exe COM6 AGOV

Для установки времени выполняем getfromcom.exe COM6 "SETTIME 72565"

COM6 - порт. 72565 - количество секунд с начала суток.

Автоматизация процесса

Теперь можно любой программой считать, обработать данные, отправить куда надо, синхронизировать время метеостанции. Я это сделал с помощью скриптового языка PHP. Во первых это быстро и всегда можно оперативно подправить скрипт и не искать куда делся исходный код. Во вторых, я постоянно работаю с PHP. Но Вы можете написать свою программу на любом удобном для Вас языке. Разумеется, для работы PHP придется его скачать (http://www.php.net/downloads.php) и установить на компьютере. Под Windows это делается элементарно. Скрипт getfromcom.php запускается из файла get_data.bat опрашивает метеостанцию, обрабатывает данные и отправляет на HTTP-сервер скрипту get_data.php. О скриптах на сервере поговорим чуть позже.

Спящий режим рабочего компьютера

Мой компьютер стоит в спящем режиме. Просыпается каждые 3 часа, опрашивает метеостанцию, отправляет данные на сервер и снова засыпает (можно и не выключать - кому как удобнее.). Делается это так: В планировщике задач указывается пакетный файл get_data.bat для выполнения и устанавливается опция "разбудить компьютер для выполнения этого задания".

Компьютер отправляется в спячку командой fShutdown.exe /hibernate

Теперь по указанному времени компьютер проснется и выполнит get_data.bat

Особенности get_data.bat

Команды


devcon.exe enable PCIVEN_10EC
ping 127.0.0.1
RASPHONE -d Setilite

Запускают сетевое подключение и подымают VPN к моему провайдеру Интернет.


ping 127.0.0.1 - так я сделал необходимую паузу.

Соответственно, отключаем командами:


RASPHONE -h Setilite
devcon.exe disable PCIVEN_10EC

У Вас будет все по другому, поэтому в файле эти строки закомментированы.

После выхода из спячки компьютер начинал думать, что COM порт занят другой программой. Пришлось виртуальный COM порт перезагружать командой devcon.exe restart "USBVid_6547&PID_0232". У Вас будет другой ID устройства.

Серверные скрипты

Теперь о скриптах на сервере. Скрипт, который принимает данные: get_data.php

Скрипт сохраняет данные в файл pogoda.log. Вообще то, данные отправляются и в базу данных MySQL. Но для простоты, рассмотрим работу только с файлом. Принимая данные, скрипт проверяет подходит ли IP адрес отправителя. Разрешенные адреса перечислены в файле ip_allow.lst От "чужого" отправителя данные не принимаются.

За отображение текущих значений отвечает скрипт pogoda_kremenchug.php

Все, что касается графиков, находится в папке pchart

Пользуйтесь на здоровье. Будут вопросы - пишите [email protected]

Корягин Андрей, 2009 г.

P.S. Сергей Федоров повторил данную метеостанцию и прислал разработанную им печатную плату.

Схеми і прошивки
Коментарі:
Krohovich говорить:
25.01.2012 15:20
Датчики MPX4115A и HIH-4000 где заказывал ?
Дорогие однако.

Tim говорить:
20.04.2012 17:00
можно применить дешевые датчики DHT11, измеряют сразу температуру и влажность.
http://www.avislab.com/blog/dht11/

admin говорить:
20.04.2012 20:31
Следует оговориться, что DHT11 не работают при температурах ниже нуля, а влажность измеряют в пределах 20-80%. Что для метеостанции не совсем подходит.

Alex_G говорить:
13.08.2012 17:15
А можно вместо USB(RS-232) Ethernet использовать? Есть пример?

admin говорить:
13.08.2012 21:38
Ethernet можно: http://www.avislab.com/blog/enc28j60/
Сама метеостанция с Ethernet существует и работает. У меня не доходят руки все толком задокументировать и опубликовать....

юра говорить:
21.10.2012 11:43
схема работает. вэб интерфейс реализуется только через подключение к компьютеру на котором поднят вэб сервер а само общение станции и компьютера идет через COM порт.

Додати коментар
Code
* - обов'язкові поля

Архіви