Создать систему мониторинга температуры и влажности.
На самом деле система уже есть, но я решил её переделать чуть ли не с нуля.
В систему входит:
- Arduino Duemilanove
- DHT11 для мониторинга температуры и влажности дома
- DHT22 длямониторинга температуры и влажности на улице
- Монохромный LCD-дисплей для отображения данных
- Raspberry Pi
Arduino должна собирать данные с датчиков, отображать их на дисплее, а так же передавать Raspberry Pi. Raspberry Pi должна принимать данные, в реальном времени отображать текущие показания на веб-странице, раз в 5 минут писать показания в базу данных и отправлять насервис народного мониторинга. Так же сайте системы должна быть возможность просмотра статистики (за сутки, неделю, месяц, год) в виде графиков.
-
Собрать устройство
Устройство будет представлять собой Arduino + два датчика температуры и влажности (один уличный DHT22, один домашний DHT11) + монохромный LCD-дисплей. Уличный датчик будет вынесен за окно и находиться в непрозрачной емкости (для предотвращения попадания прямых солнечных лучей и влаги). Планируется пластиковая бутылка, разрезанная наполовину (часть с горлышком).
Arduino — аппаратная вычислительная платформа, основными компонентами которой являются простая плата ввода-вывода и среда разработки на языке Processing/Wiring.
В данном случае используется Arduino Duemilanove (не оригинальная).
Ниже фото как это выглядело раньше =)
-
Написать прошивку
Собственно из-за прошивки всё и началось, я её потерял (не сделал бэкап при переустановке ОС). Конечно я мог написать такую же, но решил переделать всё.
Нам нужнополучить с уличного и домашнего датчика данные о влажности и температуре, отобразить на дисплее, а также сформировать JSON-подобную строку с данными и отправить через SerialPort (USB в данном случае) на сервер.
Данные поступают по мере изменения температуры или влажности на одном из датчиков.
Для простоты работы воспользуемся библиотеками для датчиков серии DHTи LCDдисплея. Писать будем в Arduino IDE.
-
Получать данные с устройства
На этом этапе немного поиграемся с разными языками программирования, получая JSON через Serial Port.
Немного поменял данные, которые принимает Raspberry Pi.
-
Установить ОС на сервер
OC (Raspbian) на Raspberry Pi я уже порядочно позасрал. Хотел бы поставить чистенькую ось.
Сюда же будет входить установка полезных утилиток, драйверов (для wi-fi адаптера) и т.д.
-
Написание программы для обработки данных, получаемых с Arduino
Программка должна слушать Serial Port, ловить JSON-строку, если есть ошибки - сообщать о них, и записывать ошибку в БД, а так же отправлять данные о погоде на narodmon.ru, в базу данных и на сайт.
-
Установка веб-сервера
Веб-сервером я скорее всего выберу nginx, хоть с Apache2 я знаком лучше.
Веб-сервер должен будет держать не один сайт, нагрузка планируется небольшая.
Так же веб-сервер должен работать с тремя доменами (по меньшей мере).
-
Установка базы данных
Базой данных скорее всего станет MySQL. У неё есть очень удобная админка (phpMyAdmin), у других тоже есть, но этот набор привычнее.
-
Верстка и дизайн
Как-то всё это дело нужно будет оформить, чтобы пользоваться было приятно.
-
Добавить веб-страницу со статистикой
Нужно получать набор данных из БД и показывать на сайте в виде графиков. Графики, которые я использовал в прошлый раз не отображались на мобильных телефонах. Нужно найти те, которые будут работать везде.
-
Отладка
Процесс от получения датчиками информации, до вывода их на сайт довольно большой, поэтому ошибки неизбежны. Собственно цель данного этапа отловить их все и исправить.
-
Финал
Система целиком работает какое-то время, чтобы можно было сделать о неё какие-то выводы.
Например с прошлой системой было много проблем:
- Если умирал роутер, то после его перезагрузки Raspberry сама к нему не подключалась, нужно было перезагружать.
- После перезагрузки Raspberry Pi все скрипты приходилось включать вручную.
- Не устраивала работа веб-сервера.
-
Тестирование веб-сервера
Погонять тестовые странички, разные домены, CGI-сценарии и т.д.
-
Установка CGI-сервера
В прошлый раз всё крутилось на PHP (в плане сайта). Теперь я хочу сайт сделать на Python.
- 9268
- 09 марта 2014, 08:08
Не пропустите новые записи!
Подпишитесь на цель и следите за ее достижением