Термометр+гигрометр с отправкой данных на сервер (Arduino + Raspberry Pi)

Тема в разделе "Глядите, что я сделал", создана пользователем Эдгар, 30 авг 2014.

  1. Эдгар

    Эдгар Нерд

    Знаю, что идея не нова, но все же... собрал подобие метеостанции для круглосуточного измерения температуры у себя на даче. Я только начал знакомится с ардуино, поэтому проект простенький, но хотелось бы услышать рекомендации по дальнейшему усовершенствованию станции.
    Собственно детали:
    - Arduino Uno (сбор данных с датчиков, отправка на малинку и отображение на дисплее)
    - Raspberry Pi (отправка данных на собственный сайт, ftp-сервер и на OpenWeatherMap)
    - датчики DS18B20+ и DHT11
    - lcd дисплей 16x2
    - макетная плата под пайку (служит заменой беспаечной макетки)
    - 1 пищевой контейнер
    - несколько метров витой пары + удобные разъемы
    - канистра из под питьевой воды
    - несколько саморезов и прочей мелочи

    Как это все выглядит:
    - Снаружи
    2014-08-11 21-00-31.JPG
    - Внутри
    2014-08-08 17-00-51.JPG
    - Датчики на улице
    2014-08-11 20-47-19.JPG

    Сайт: http://edtex.ru/
    Исходники можно скачать тут: https://github.com/edgar-ch/mstation
     
    Последнее редактирование: 18 апр 2015
    acos и ИгорьК нравится это.
  2. Эдгар

    Эдгар Нерд

    По просьбе пользователя sky_84 описать некоторые подробности, решил написать полный обзор того, что и как сделано. Но к сожалению, времени свободного у меня сейчас мало, поэтому смог описать целиком часть, связанную только с ардуино.
    Прочитать можно вот тут: http://blog.edtex.ru/2014/09/arduino-raspberry-pi-1.html
    А теперь еще несколько слов, станцию пришлось снять на зиму, поэтому показаний на сайте пока не будет, но сделаю архив и надеюсь поставить ее у себя дома.
    Теперь расскажу о том, что планируется сделать, по степени важности:
    • Заменить датчик DHT11 на DHT22 или что-то подобное, потому что 11 не рекомендуется использовать при минусовых температурах, а я живу не в тропиках ;)
    • Добавить датчик давления, что-то типа BPM085, главное чтобы работал на шине i2c
    • Добавить датчики для сбора информации об освещенности, уровне ультрафиолета и тп, какой ставить - не знаю, кто располагает информацией, буду крайне рад))
    • Добавить примитивное управление, чтобы можно было по кнопке, например, выбрать что показывать на дисплее, а не ждать 15 сек или больше
    • По части Raspberry: доработать код сборщика, чтобы он смог обрабатывать сообщения об ошибке с ардуино
    • Так же очень хочется добавить автономности, чтобы станцию можно было оставить на зиму
    • Ну и в довершение - добавить анемометр, датчик дождя или тп, но это уже не в ближайшее время
    Если у кого будут вопросы или предложения, пишите сюда или в личку, с радостью отвечу :)
     
    Последнее редактирование: 18 апр 2015
  3. Максим B

    Максим B Гуру

    Классно получилось, а как на стороне сервера обрабатываете данные???
     
  4. Эдгар

    Эдгар Нерд

    На сервере написан код на php, который обрабатывает POST-запросы (их отсылает сборщик на Raspberry Pi) и вставляет информацию в базу MySQL, с которой потом удобно работать. Параллельно на ftp-сервер отсылается файл в формате CSV, в котором хранятся показания за сутки (1 сутки - 1 файл). Сделал это на тот случай, если вдруг перестанет работать отсылка в базу данных, своеобразная резервная копия. Я еще все распишу подробно и код выложу, сразу как появится свободное время ;)
     
  5. dreamerov

    dreamerov Нуб

    Отлично, то что искал! Ты только не останавливайся! Хотелось бы еще о Малинке статью почитать.
     
  6. Эдгар

    Эдгар Нерд

    Наконец-то написал статью про часть, которая работает на малинке: http://blog.edtex.ru/2015/10/arduino-raspberry-pi-2.html
    Теперь немного о самом проекте и некоторых планах. Сразу скажу, что проект не заброшен, и я его сильно переделал уже в качестве ВКР в институте (все что работает на ардуине было переписано с нуля). Сейчас реализован следующий функционал:
    • измерение температуры, влажности, давления и освещенности, запись измеренного на sd карту, время берется с RTC на ds3231, в целом измерительный модуль получился целиком автономным с возможностью отправки данных на базовую станцию (об этом далее)
    • теперь все работает на базе двух ардуин, одна собирает данные по радиоканалу (использовал nRF24L01) и пересылает их на малинку, попутно отображая на экранчике, другая ардуина собирает данные (о ней написано в предыдущем)
    • между модулями реализована простейшая коммуникация, то есть если на измерителе не установлены дата и время, то он запрашивает данные с базовой станции, которая берет время с малинки, а так же можно перекинуть настройки на измеритель
    И это если кратко)) подробнее, кто конечно хочет и сможет осилить, все описано в моей вкр, которую можно взять вот тут: http://edtex.ru/files/System for collecting and measuring environmental parameters AVR (Atmel megaAVR).pdf

    Именно показать у меня пока, к сожалению, особого нечего, потому что все пока выглядит вот так:
    [​IMG]
    [​IMG]

    Теперь немного о планах. У меня сейчас довольно мало времени на проект, поэтому о сроках ничего не могу сказать, но теперь я веду разработку уже в рамках магистрской работы, поэтому развитие будет. Из краткосрочных планов:
    • Собрать это все как положено и установить, чтобы это действительно работало на улице в корпусе, а не у меня на столе на макетке
    • Довести измеритель до ума, так чтобы он работал действительно автономно, от батарей или аккумуляторов (возможно на солнечной энергии)
    • Пофиксить возможные ошибки, которые возникнут в процессе работы
    • Сменить экранчик на более удобный, этого уже не хватает и он не удобен
    Из долгосрочных планов, это довести возможность подключения нескольких разнотипных измерителей до ума, она частично реализована, но практически не тестировалась, то есть это по-сути зачатки такой возможности.
    На этом пока все, как будут результаты, напишу расскажу покажу)) если есть желание глянуть на исходники разработки (уже текущей), то за ними сюда https://github.com/edgar-ch/mstation/tree/master
    Если есть какие вопросы, пожелания, или хотите присоединиться, то пишите в личку