Перейти к публикации
iT4iT.CLUB

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией на 21.01.2024 во всех областях

  1. 1 балл
    Это первая часть и соответственно первая версия метеостанции. Постепенно будем её улучшать обвешивая всяческими лампочками, свистульками и т.п. Текущий вариант протестирован и стабильно работает с июля 2015. Использованы: Копия Arduino NANO на базе микроконтроллера ATmega328p Ethernet shield на базе чипа ENC28J60 Датчик влажности AM2302, известный в народе как DHT22 Барометр/Термометр GY-68 на базе сенсора фирмы BOSH - BMP180 Все заказывалось в Китае. Думаю не имеет смысла кидать ссылки т.к они могут быть не актуальны через некоторое время после публикации. Также Вас может заинтересовать вариант метеостанции на ESP8266 ВАЖНО! Я использовал в скетче сторожевой таймер (Watchdog timer). Для этого необходимо перепрошить загрузчик Arduino NANO (ATmega328p) со стандартного на Оptiboot (как это сделать описано тут). Если залить выложенный ниже скетч в неподготовленный контроллер, получите "кирпич". Если Вы читаете эту часть уже после того как залили скетч, то необходимо перезапустить микроконтроллер по питанию (и только по питанию) и у Вас будет 8 сек. на перепрошивку его другой программой. Иначе "селяви", что в переводе с древнегреческого - НЕ ПОВЕЗЛО! Процедуру можно повторять сколько угодно раз, пока не восстановите беднягу. Вступительная часть окончена, переходим к делу Станция разделена на две части Первая находится дома, состоит из микроконтроллера и сетевого модуля, её задача производить все необходимые вычисления и держать связь с проектом "Народный мониторинг". Вторая часть состоит из двух датчиков описанных выше и размещенных на улице в продуваемом пластиковом корпусе, защищенным от прямых попаданий воды и солнечных лучей. На самом деле есть стандарты для размещения погодных станций и ни одно из изделий используемых в быту (пусть даже самое дорогое и крутое) никогда не покажет Вам точных данных. Это связано с местом её установки. Погодная станция должна стоять в чистом поле на высоте пары метров от земли и т.д и т.п. Вы это легко найдете в сети. Ну а нас интересуют приблизительные значения. Схема этого безобразия, за исключением Ethernet модуля (это просо "бутерброд"), выглядит так. На схеме использовал датчик BMP085 т.к другого я не нашел в Fritzing. На практике стоит BMP180 и подключен по 5V а не по 3.3V Т.к изучение китайской платы показало, что на борту имеется преобразователь. Датчик DHT22 имеет обвязку в виде SMD резистора 0805 на 10kOm между двумя ногами - питание и 1-Wire. Но братья Китайцы могут продать датчик уже в обвязке по значительно завышенной ценой. Для корпуса уличной части я выбрал пластиковую распределительную коробку со съемными заглушками. Датчики разместил в верхней части т.к там оставлены заглушки для зашиты от воды во время дождей. Остальные заглушки убраны для повышения точности измерений. Из-за того, что доступ у меня имеется только к солнечной стороне дома, пришлось спрятать коробку за WiFi тарелкой. Кстати это дополнительно дало возможность хоть немного отдалить сенсоры от самого здания, ведь ночью нагретый дом выделяет энергию в виде тепла и искажает показания. Если следовать ГОСТу, то сенсоры должны быть размещены в тени в течение всего дня. Переходим к самому вкусному Необходимо зарегистрироваться на http://narodmon.ru/ и добавить Ваше устройство. В качестве идентификатора, чтобы не запутать себя, Вы можете использовать MAC адрес Ethernet модуля. В данном случае мы будем передавать данные по TCP на 8283 порт сервера. Телеграмма будет состоять из: Идентификатора устройства (MAC адрес) Названия устройства GPS координаты для позиционирования на карте проекта (т.к станция стационарна, координаты указаны в скетче без использования GPS модуля) Показания со всех датчиков Программная часть Понадобятся библиотеки: BMP180 (использует библиотеку BMP085) bmp085.zip DHT22 https://github.com/adafruit/DHT-sensor-library UIPEthernet https://github.com/ntruchsess/arduino_uip 1-Wire http://playground.arduino.cc/Learning/OneWire Скетч Данные о температуре снимаются с датчика BOSH, они более точны. Точка росы рассчитывается исходя из текущих показаний температуры и влажности. В коде имеются две функции взятые с просторов интернета: dewPoint dewPointFast Использовать можно любую. Также имеется проверка показаний точки росы. Вычисления не производятся при минусовой температуре и значение обнуляется при показаниях ниже нуля. Т.к это уже не точка росы, а точка образования инея. Если я не прав, то прошу меня поправить. Если желаете получать отрицательные показания, то необходимо заменить: dP = Temperature>0?((dPt=dewPoint(Temperature*0.1, H))<0?0:dPt):0; на dP = dewPoint(Temperature*0.1, H); На сайте проекта имеются ссылки на приложения под разные платформы. Я использую Android и для примера взял два разных виджета. Выглядит это следующим образом. В дальнейшем планирую: Увеличить разнообразие датчиков Объединить обе части метеостанции и вынести все на улицу Уйти от ENC28J60 в пользу W5100 или W5500 Использовать POE для питания всей кухни PS: пока все доволен. Посмотрим как конструкция переживет зиму и сделаем дополнительные выводы. bmp085.zip
  2. 1 балл
    Доброе время суток @Astron Тут Вы поспешили, смотрите в чем дело Это сообщение сформировано самой библиотекой и говорит, что вы пытаетесь использовать динамический буфер, который не поддерживается в 6-ой и более старших версиях. Именно по этой причине я указал в инструкции, что необходимо использовать 5-ую версию. Так что вы практически все сделали правильно. На всякий случай, я сформировал архив с Portable Arduino IDE v1.8.9 для Windows с поддержкой ESP8266 и ESP32, а также установленными FS плагинами для загрузки файлов web сервера, базовым набором библиотек (не все нужно обновлять) и скетчем с проектом метеостанции. Я мог что-то упустить, но надеюсь у Вас все получится. Скачать можно тут: https://yadi.sk/d/lXNS4_juPVPYwA
×
×
  • Создать...