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

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

 

Метеостанция своими руками

 

 

Метеостанция своими руками

 

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

Использовались следующие основные компоненты:
ATMega8 - контроллер
MPX4115A - датчик давления
HIH-4000 - датчик влажности
DS18B20 - датчик температуры
WH1602A - дисплей

 

 

Метеостанция своими руками

 

Я использовал 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

Пользуйтесь на здоровье. Будут вопросы - пишите avp@avispro.com.ua

Корягин Андрей

Проект для Proteus'a от пользователя sasha231280 скачать

Схема с Proteus'a




Источник

   
zaa-1978 # 1
 
 
нехилая штука!!! wacko


   
shpuntic # 2
 
 
Да,вещь хоршая,только унас датчик давления и датчик температуры сложно найти. smile


   
Nikolai4 # 3
 
 
Да ладно, я нашел за раз в нете вот тут :

MPX4115A
HIH-4000

я через этот магазин постоянно покупаю!



   
LDZ-UI # 4
 
 
так это только на украине можно купить?


   
LDZ-UI # 5
 
 
А штука классная.


   
zaa-1978 # 6
 
 
поищи в интернет магазинах!!!!
должны и у вас быть!!!


   
LDZ-UI # 7
 
 
да есть но цена без пересылки больно солидная получается гдето 1250 руб. это без конролера ижк панели.


   
zaa-1978 # 8
 
 
непости пиши в чате!!!!! cool


   
Mermen # 9
 
 
индикатор красивый, но как и датчиков в свободной продаже (Омск) нету cry


   
zaa-1978 # 10
 
 
а в инете заказать?


   
LDZ-UI # 11
 
 
цена больно кусается даже через инет


   
Mermen # 12
 
 
да и в интернет магазинах редко в прайсах найдешь


   
LDZ-UI # 13
 
 
согласен , если у вас в Омске нету , у нас и нормальной логики не сыщеш ( Усть-Илимск ) не то что такой экзотики cry


   
zaa-1978 # 14
 
 
тогда просить чтоб прислал ктото!!!!


   
sasha231280 # 15
 
 
Сабрал данное устройство. Индикатор применил WH1602A-YGH-CTK#. Не показывает значение температуры (пустое поле, даже нет значка градуса). DS18B20 рабочий. Фьюзы при прошивке не менялись (Atmega8 новая). Какие фьюзы надо выставить для Atmega8 в CodeVisionAVR. Время, разряд батареи, влажность и давление на индикаторе отображаются.


   
Nikolai4 # 16
 
 
этот вопрос к автору, ссылка внизу статьи на источник, не забудь тут отписать в чем проблема…


   
sasha231280 # 17
 
 
Автору статьи написал, но он молчит.


   
sasha231280 # 18
 
 
Смоделировал проект в Proteus'e (установлен ds18b20 и mpx4115) тоже не работает http://depositfiles.com/files/i8j8v2u93


   
Nikolai4 # 19
 
 
я автору написал … ждем ответа


   
sasha231280 # 20
 
 
Что-то молчит автор…!!! Прошивка рабочая, а вот схема нет!!! Чтобы заработало необходимо: <p> 1. Датчик температуры DS18B20 подсоединить к 12 выв. ATMEGA8 (вместо 11 выв.);
2. Датчик давления MPX4115A - необходимо поменять местами вывода питания!!!;
3. Датчик влажности HIH4000 - поменять местами "-" вывод питания с сигнальным выводом;
4. Необходимо 20 выв. ATMEGA8 подсоединить к +5В, (а выв. 21 через емкость 0,1мкФ на землю - а может не надо);
5. Изменит фьюзы, которые отвечают за частоту внутреннего генератора ATMEGA8 на 2МГц (запрограммировать, т.е. поставить галочки напротив SUT0 CKSEL3 CKSEL2 CKSEL0 BOOTSZ1 BOOTSZ0)
Выкладываю рабочий проект для Proteus'a [ в статье]


   
frol # 21
 
 
здравствуйте, я стулент и мне необходимо сочинить вещь похожую на данную иетеостанцию, но только вместо датчика давления применить датчик задымленности. но не знаю как это сделать какой датчик взять и где взять прошивку для него на avr atmega??????
помогите пожалуйста.


   
alexwolf # 22
 
 
Скажите …возможно использовать метеостанцию без связи с компьютером


   
zaa-1978 # 23
 
 
судя по описанию да можно! biggrin


   
QweЯty # 24
 
 
возможно ли переделать прошивку на работу без жк-дисплея?
будет работать только в связке с сервером(и можно ли описание поведения программы? так как сервер не на виндовс стоит, а на FreeBSD) и работать будет в автономном режиме без участия человека smile

или можно просто не впаивать жк-дисплей?



   
QweЯty # 25
 
 
мне надо подрубить еще один (пока что) температурный датчик… и вроде бы тока еще 1 smile
то ессть их 2 будет…
нужно ли для этого переделывать прошивку? и кто может ее переделать?


   
Nikolai4 # 26
 
 
можно


   
Nikolai4 # 27
 
 
нужно переделывать


   
QweЯty # 28
 
 
а можно попросить кого нибудь переделать прошивку под 2 термодатчика?
или переделать ее так чтобы можно было увеличивать количество теормодатчиков, т.к. сам еще не знаю сколько будет именно этих датчиков…

сам не владею этим искусством sad

программу не нужно делать, постараюсь сам с друзьями сделать аналог под *nix, знать бы тока что нужно подавать на вход и принимать с выхода…



   
chestar # 29
 
 
Здравствуйте. Помогите пожалуйста, как вывести все это на семисигментный индикатор, ну точнее мне надо вывести только показания с датчика влажности… Пожалуйста помогите или натолкните на путь истинный))))

P.S. Если есть желающие заработать) Нужно сделать готовое устройство, точнее плату, измеритель влажности с семисегментным индикатором)



   
miron # 30
 
 
собрал кто до конца как работает а то ЖЕНА закала измеритель влажности, ну температура тож пойдет, будет ли станция работать без датчика давления, ошибку никакую гнать не будет .


Обновления

Сообщения ФорумаОтветов
3D Модели для Авто0
Бакометр 2335
Touch Start-Stop Engine.587
Кодграберр17
Исправляем AVR фьюзы при помощ …109
Бакометр - измеритель остатка…4
IR конструктор на PIC12F62977
Универсальное зарядное устройство103
бaкoмeтр1974
Двунаправленный автомобильный…2
Программатор GENIUS G8401
Светодиодный тахометр34
Индикаторы ГРИ ИН1 - ИН141
Multiprog1
Управляющая программа LED CUB959
Универсальное зарядное устройство9
Изготовлю печатные платы29
Простой автоматический выключа…25