Небольшая метеостанция своими руками
На нашем сайте публикуется текущая погода в Кременчуге (см. Своя погода в Кременчуге) Описание устройства и программного обеспечения в этой статье.
Из завалявшихся деталей решил сделать небольшую метеостанцию. На сборку и написание прошивки для контроллера ушло два дня выходных. Еще пара дней ушла на написание, тестирование и отладку остального программного обеспечения. Текущая версия метеостанции измеряет температуру, влажность, давление, имеется связь с компьютером через 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. Сергей Федоров повторил данную метеостанцию и прислал разработанную им печатную плату.
Датчики MPX4115A и HIH-4000 где заказывал ? Дорогие однако.
можно применить дешевые датчики DHT11, измеряют сразу температуру и влажность. http://www.avislab.com/blog/dht11/
Следует оговориться, что DHT11 не работают при температурах ниже нуля, а влажность измеряют в пределах 20-80%. Что для метеостанции не совсем подходит.
А можно вместо USB(RS-232) Ethernet использовать? Есть пример?
Ethernet можно: http://www.avislab.com/blog/enc28j60/ Сама метеостанция с Ethernet существует и работает. У меня не доходят руки все толком задокументировать и опубликовать....
схема работает. вэб интерфейс реализуется только через подключение к компьютеру на котором поднят вэб сервер а само общение станции и компьютера идет через COM порт.
Недавні записи
- Text to speech. Українська мова
- LCD Display ST7567S (IIC)
- Розпізнавання мови (Speech recognition)
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
Tags
docker sensors rtc led timer wifi remap sms css websocket mongodb bme280 rfid bluetooth esp8266 nodemcu bkp piezo bmp280 i2c mpu-6050 encoder examples avr brushless ngnix nvic displays bldc java-script pmsm barometer pwm lcd ethernet stm32 raspberry-pi capture usart gpio exti atmega meteo solar smd dma adc eeprom eb-500 flask python ssd1306 uart options flash mpx4115a html gps st-link 3d-printer servo dc-dc foc git books battery hih-4000 watchdog dht11 web tim programmator ssd1331 mpu-9250 usb rs-232 motor max1674 soldering
Архіви