Из завалявшихся деталей решил сделать небольшую метеостанцию. На сборку и написание прошивки для контроллера ушло два дня выходных. Еще пара дней ушла на написание, тестирование и отладку остального программного обеспечения. Текущая версия метеостанции измеряет температуру, влажность, давление, имеется связь с компьютером через 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




Источник

   
Nikolai4 # 31
 
 
когдато у автора этот вопрос спрашивал уже, сказал что ошибки не будет, а просто не будет значения на дисплее, но еще не кто не проверял, так что для начала лучше на макетке


   
chestar # 32
 
 
нефига!!! значение все равно выводит, я делаю щас тупо с датчиком давления, кинул прошивку, которая тут дается и выводит все, влажность, температуру, давление и всякую лабуду....вот сделал все как надо, но без датчика, значние выводит, но оно скачит постоянно, короче фигню показывает, подавал на вход вольтаж который выходит с датчика до 4 вольт, тоже самое, фиксировнного значение не показывает… если кто знает что нужно сделать подскажите, просто покупать за 270 гривень датчик мне нет резона, а это моя дипломная работа, сделать то хотелось бы…


   
Krish # 33
 
 
Какие диоды используются?


   
Nikolai4 # 34
 
 
любые


   
Krish # 35
 
 
А какая схема рабочая 1ая или 2ая (программа + схема)


   
Nikolai4 # 36
 
 
та что ниже рабочая


   
Krish # 37
 
 
1) у меня LCD WH1602A, он подойдет для нижней схемы?
2) Схема трудно читается, не понятны стрелочки "Влажность, давление и другие"


   
sasha231280 # 38
 
 
1. Индикатор подойдет
2. Стрелочки просто для наглядности изменения напряжения.
P.S. Почитай 20 сообщение.


   
duginez # 39
 
 
не удается адекватно подключиться к com-порту (для преобразования uart использую max232a). При посылке команд в формате ASC11 в ответ приходят "крякозябры"… surprised


   
duginez # 40
 
 
с com разобрался - присылает всё правильно. Осталась одна маленькая и не такая страшная проблема:
почему-то секунды пропускает на дисплее, т.е. идет счет 1, 2, 3, 5, 6, 8, 9, 10, 12 и т.д. без какой-либо закономерности. При установке внутреннего генератора на 1 МГц секунды не пропускаются, но общая скорость их соответственно падает.


   
paganel # 41
 
 
Собрал тоже такую штуку. Делал по второй схеме. Кто будет повторять - не забывайте про то что нужно соединять 3-й контакт дисплея (контрастность) с землей а лучше ставить переменный резистор. а то так вы и не поймете что схема работает как было например у меня. Сейчас я пытаюсь соединить с компьтером. когда запускаю программу getfromcom то она выдает no found on com1. пробовал разные варианты комманд. не получается. кабель рабочий - я им часто пользуюсь. наверно либо нету каких-то библитек либо настройки порта выставлены не правильно. Подскажите как надо. И еще . в инструкции написано что можно подключать гипертерминал. подскажите какие комманди и какие настройки нужно выставлять… очень хочу сделать такую метеостанцию и вывести на сайт в локальной сети


   
paganel # 42
 
 
Ну подскажите что может быть не так. Все возможные настройки порта пробовал - все скорости перебрал несколько часов потратил. ну что не так не пойму. если кто собирал просто скажите на какой скорости вам удалось законнектится и там бополнительные настройки. бит четности и пр… чтобы я хотя бы мог в этом хотя бы уверен. уже на кабель грешу. но всегда норм был вроде. rx и tx местами менял. фьюзы на 2 мгц. нет коннекта и все тут


   
Evgenya # 43
 
 
а влажность просто регулируется реостатом?


   
Evgenya # 44
 
 
Также, объясните пожалуйста зачем нужны R1, R2 зачем нужны эти конденсаторы C1, С4 и С5 и почему все они имеют именно такой номинал. Правильно ли я понимаю, что они соответствуют Datasheet микроконтроллера?


   
Evgenya # 45
 
 
при запуске, не отображает миллиметры на дисплее. Какие то краказабры вместо этого. Что делать?


   
Nikolai4 # 46
 
 
Цитата: Evgenya
Также, объясните пожалуйста зачем нужны R1, R2 зачем нужны эти конденсаторы C1, С4 и С5 и почему все они имеют именно такой номинал. Правильно ли я понимаю, что они соответствуют Datasheet микроконтроллера?

Все номиналы резисторов / конденсаторов типовые и допускается отклонения , взяты из даташитов только не микроконтроллера жеж а той обвязке где они стоят 7805 и т.д. .Перечитайте все комментарии . Проблемы решаются на форуме ,а не в комментариях , хватит захламлять комментарии . P.S. возьмите схему попроще для начала, а дальше будете идти к сложному.


Обновления

Сообщения ФорумаОтветов
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