Отправка температуры на народный мониторинг.

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 2 окт 2013.

  1. ИгорьК

    ИгорьК Гуру

    Из Arduino, WiFi Shield / Ethernet Shield и датчиков собрал устройство для отправки температуры на народный мониторинг. Описание железной части и код взял у Гладышева Дмитрия. Там подробно описана процедура подключения к серверу.
    Однако код Дмитрия работает за один раз только с одним датчиком. В следующем соединении он передает данные следующего датчика и т.д.
    Переработал код на две важные вещи:
    - можно отправлять данные сразу с нескольких датчиков;
    - код под WiFi Shield а не под Ethernet Shield.
    Отправляю на сервер три температуры - за окном, в помещении и в системе отопления. Две последние температуры для общего доступа закрыты.
    Смысл затеи, кроме ее познавательности, заключается в том, что понимая как связаны температура за окном и в доме, можно точнее (экономнее) выставить настройки системы отопления. Это касается не столько снижения ее на ночь, сколько на подъем после охлаждения дома - трудно определить режим разогрева без графиков изменения температуры, что позволяет narodmon.ru .
    Код прилагается. Для Ethernet Shield лежит через несколько постов.

    P.S. Для тех, кто еще не определился, рекомендую эту тему. Arduino Yun стоит дешевле, чем Arduino Uno + WiFi Shield. Да и код проще получается. 04.01.2015.

    P.P.S. Кстати, вот здесь - проект минимальной стоимости;)
     

    Вложения:

    • NarodMON.zip
      Размер файла:
      3,3 КБ
      Просмотров:
      1.699
    Последнее редактирование: 2 июн 2015
    qwabba нравится это.
  2. Chanov

    Chanov Нерд

    Обязательно гляну, когда допиливать свою буду и внешний погодный прикручивать.
     
  3. ИгорьК

    ИгорьК Гуру

    Сейчас думаю добавить запись на микроСД карту, коль она там есть. Возможно, прикрутить часы.
    Народный мониторинг показывает все удобно, но вот скачать с него данные пока я не умею.
    Интересно бы было смотреть все три графика одновременно.
    Кстати, уже вижу реальную пользу - понимаю как быстро меняется температура в помещении и вижу ошибку в настройке котла.
     
  4. Chanov

    Chanov Нерд

    Часы я вообще планирую из интернета тянуть ... или как минимум синхронизировать ... платка риалтайм валяется, всё руки не доходят ) Логи на сд теоретически можно по кругу писать на всякий случай, но лучше дома ещё на чём нибудь типа малины или роутера поднять серверок и гнать паралельно и в интернет и к себе графики ...
     
  5. Megakoteyka

    Megakoteyka Оракул Модератор

    Отличная идея! Если и так есть коннект, почему бы им не воспользоваться? :)
     
  6. ИгорьК

    ИгорьК Гуру

    Пока вот что:
    - для Ethernet Shield;
    - три датчика;
    - пишет на SD.
    Для WiFi Shield тоже есть. Осталось добавить время.
     

    Вложения:

  7. ИгорьК

    ИгорьК Гуру

    1. Дмитрий доработал свой код для работы с несколькими датчиками - смотреть, повторять здесь.
    2. Тянуть время из интернета вещь, вроде, правильная и уже начал этим заниматься, но ... в доме пропал интернет и отсутствовал всю ночь. Поэтому, потрачу денежку на часы реального времени и прицеплю именно их. А вот их неплохо будет синхронизировать с интернетом. Когда он есть.
    3. Если кто повторяет мои изыскания, обращаю внимание на то, что версия для WiFi Shield компилируется и работает в среде 1.5.2, а для Ethernet Shield - в среде 1.0.5. А наоборот - не работает...
     
    Последнее редактирование: 6 окт 2013
  8. ИгорьК

    ИгорьК Гуру

    Следующая версия отправки данных на народный мониторинг.
    Относительно источника Дмитрия Гладышева:
    1. Заменен Ethernet на WiFi. Не сложно изменить обратно на Ethernet - меняется лишь несколько строк.
    2. Программа разобрана на функции.
    3. Добавлены часы RTC DS 1307. Для них использована библиотека с этого сайта.
    4. Данные отправляются не только на narodmon.ru , но и пишутся на карточку SD.
    5. Туда же пишется и время замера температуры.
    6. Часы RTC DS 1307 проверяются и устанавливаются через NTP.
    7. Время замера и отправки температуры определяется по RTC - каждые 10 минут.
    8. Все это работает и при отсутствии связи с сервером народного мониторинга. Данные пишутся только на SD.
    Скетч компилируется версией 1.5.4r2, схема собрана на плате МЕГА 2560.
    Если будете работать с WiFi Shield, требуется обязательно обновить его прошивку. Как это делать - смотреть здесь.

    В скетче полно строчек "Serial.print..." Если все Вас устраивает - смело удаляйте их вместе с инициализацией "Serial.begin...". Я пока не делаю этого. В задумке - ежедневная отправка лога по электронной почте. То есть проект пока не закончен.

    Вот еще какое замечание.
    Моя связка роутер и плата Ethernet Shield при отключении электричества и его включении отказывается запускаться. Роутер, естественно, работает а Ардуино зависает. Думаю лечить это установкой задержки на пару минут первой же строкой в функции void setup(). Кто-нибудь сталкивался с таким?
    ===========================
    Дополню. Зависание Ethernet Shield при одновременном выключении/включении электричества на связке с роутером у меня не лечится никак. Ethernet Shield зависает и требуется его принудительная перезагрузка.
    А вот WiFi Shield в этих условиях ведет себя хорошо. Связь восстанавливается и все работает.
     

    Вложения:

    Последнее редактирование: 8 ноя 2013
  9. ИгорьК

    ИгорьК Гуру

    Отдельно выкладываю скетч, который проверяет время по NTP и устанавливает его на RTC DS 1307.
    Скетч сначала сбивает время в часах на 22:33:44, затем лезет в интернет и исправляет его.
    Информация передается на компьютер.
    Может будет кому-то полезен в других проектах. Функция void loop() по сути в нем состоит из вызова функции проверки и установки времени.
     

    Вложения:

  10. Sinister

    Sinister Нуб

    ИгорьК. Вы отправляли данные с ВМР085 на народный мониторинг?Team Viewer
     
  11. ИгорьК

    ИгорьК Гуру

    Нет, у меня только с датчиков температуры DS18В20.
     
  12. oldmaster

    oldmaster Нуб

    Добрый день, Игорь. Можно к Вам обратиться за помощью по созданию подобной системы мониторинга температуры?
     
  13. ИгорьК

    ИгорьК Гуру

    Нет, к сожалению. Это хобби, причем не самое основное. Могу что-то объяснить из собственного опыта или с кусочком кода помочь но разработкой я не занимаюсь. На сайте http://narodmon.ru/ есть раздел для запросов на разработку - попробуйте обратиться к ним.
     
  14. DiMaMhLv

    DiMaMhLv Нуб

    Здравствуйте, Игорь! Я пока только начинаю изучать программирование, с электроникой знаком. Попытался повторить ваш вариант с Ethernet и SD картой, без карты все работает, а вот с картой виснет после получения адресов датчиков. Почитал про Ethernet Shield, оказалось что чип W5100 и SD карта одновременно работать не могут и надо их переключать подавая управляющие HIGH/LOW на 4, 10 пины. Как у вас реализовано это переключение я не понял.
     
  15. ИгорьК

    ИгорьК Гуру

    Даже не знаю что Вам ответить: никак не реализовано. Все работало. Тем не менее,есть моменты.
    1. Интернет-шилды бывают нескольких моделей. Мой подвисал после потери электричества, что происходит у меня часто и без ручной перезагрузки не работал. Поэтому эксперименты с ним был вынужден прекратить, перейдя (да, дороже, а что делать) на WiFi Shield.
    Однако никаких проблем по работе вне этого с ним не было. Скетч работал.
    2. Существует какая-то проблема при компиляции разными версиями IDE. Попробуйте компилировать в самой последней. Или наоборот.
    3. Проверьте перед обращением к SD команды client.stop() - может быть в ней дело, раскомментируйте ее.
    Код (C):
    void httpRequest() {
      if (client.connect(server, 8283)) {
          Serial.println("\n\nGot data, connected to narodmon.ru");                    // Отправка данных на сервер порт 8283 по следующему алгоритму:
          client.println(macprint);                                                    // #мак-адрес arduino#код датчика#температура#код датчика#температура...## (конец передачи)
          client.println(replyBuffer00);
          client.println(replyBuffer01);
          client.println(replyBuffer02);
          client.print("##");
     
          lastConnectionTime = millis();
          //client.stop();    - РАСКОММЕНТИРУЙТЕ!
      }

      else {
          Serial.println("connection to narodmon.ru failed");
          Serial.println("disconnecting.");
     
          client.stop();
      }
    }
     
  16. DiMaMhLv

    DiMaMhLv Нуб

    Все останавливается гораздо раньше еще до проверки наличия SD карты.
     
  17. ИгорьК

    ИгорьК Гуру

    1. А Вы случаем не скетч для WiFi Shield запускаете?
    2. Попробуйте компилировать другой версией IDE.
     
  18. DiMaMhLv

    DiMaMhLv Нуб

    Скетч для Ethernet, без SD карты все работает, подключаю карточку и дальше адресов датчиков не идет.
     
  19. ИгорьК

    ИгорьК Гуру

    Действительно, родной ардуиновский шилд требует работы с 10 и 4 пином. Как видно из описания, для отключения и того и другого требуется высокий уровень. Только зачем их отключать? Не могу еще раз проверить - нет шилда
    Но вот что хочу добавить. WiFi Shield работает по тому же принципу, и никакими ногами я не управляю, так работает. 4 и 10 пины установлены как выход и все. Причем 4 определен в заголовке, не более того.

    А Вы карточку отформатировали и сделали на ней файл с соответствующим названием? datalog.txt

    Попробуйте еще вот что: Операторы
    pinMode(10, OUTPUT);
    pinMode(4, OUTPUT);
    вынести сразу после void setup.
     
    Последнее редактирование: 16 дек 2013
  20. 777Andrej

    777Andrej Нуб

    возможно ли как то дополнить датчиком DTH-22 ?
    не получается у меня что то.
    код от Гладышева Дмитрия.