Search the Community
Showing results for tags 'ethernet'.
Found 3 results
-
Это первая часть и соответственно первая версия метеостанции. Постепенно будем её улучшать обвешивая всяческими лампочками, свистульками и т.п. Текущий вариант протестирован и стабильно работает с июля 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
- 14 replies
-
- 2
-
- ethernet
- метеостанция
-
(and 3 more)
Tagged with:
-
Тема является своего рода заметкой по мониторингу источников бесперебойного питания фирмы ippon. Заметкой именно потому, что шаблон был написан уже давно, а статья так и не появилась на свет и как обычно бывает, все постепенно начинает забываться, а наработанная информация растворяться в бытие. Дабы не потерять последние крошки выкидываем оставшиеся наработки. Постепенно тема будет переписана и дополнена. Самым удобным способом мониторинга является, уже знакомый нам по теме с ИБП APC, протокол SNMP. Для подключения устройства в локальную сеть необходимо дополнить его сетевым адаптером UPS Ippon Smart Winner 1500/2000/3000. Сама карточка поддерживает следующие протоколы: HTTP HTTPS IPv4 IPv6 NTP SMTP SNMP v1 SNMP v2c SNMP v3 SSH V1 SSH V2 SSL TCP/IP Telnet На диске, идущем в комплекте, имеется весь необходимый софт и документация. Также, если немного покопаться, можно найти MIB файл со всеми поддерживаемыми OID. На всякий случай мы прикрепим к посту MIB файл на базе которого был создан текущий шаблон. Перед тем как перейти к шаблону хочу отметить, что он содержит макрос {$SNMP_COMMUNITY} значение которого необходимо изменить на используемое вами Community. Шаблон позволяет производить мониторинг следующих параметров: The measured output real complex power in VA Величина отрицательного напряжения аккумуляторной батареи Величина положительного напряжения аккумуляторной батареи Версия прошивки Network Management Card Версия прошивки микропроцессора Время оставшееся до истощения заряда батареи Время прошедшее с момента перехода на работу от батареи Входная мощность Входное напряжение Входной ток Выходная мощность Выходная нагрузка ИБП в процентах от номинальной мощности Выходное напряжение Выходное напряжение Выходной ток Код неисправности ИБП из таблицы Q6 Код предупреждения ИБП из таблицы Q6 Максимальная разрешенная выходная нагрузка Максимальная разрешенная рабочая температура Модель ИБП Название производителя Описание напитанной нагрузки (устанавливается администратором) Описание устройства (устанавливается администратором) Серийный номер Статус батареи Текущее состояние ИБП Температура батареи Температура внутри ИБП Уровень заряда батареи Частота тока на входе Частота тока на выходе Данных параметров должно быть достаточно для создание базовых проверок и триггеров. Мы добавили несколько для основных тревог. И пару базовых графиков. Данный шаблон вполне подойдет для создания на его основе Ваших решений. Мы будем рады увидеть Ваши наработки или помочь Вам в реализации, каких либо идей по мониторингу этих источников бесперебойного питания. EPPC.MIB.zip templates_ups_ippon.xml.zip
-
Управление микроконтроллером Arduino через Ethernet получает все большую популярность. Я сам активно использую микроконтроллеры в сети для сбора различной информации на удаленных объектах. И в один прекрасный день натолкнулся на мысль, что изменять настройки моих поделок можно только перезаписывая микропрограмму, что не совсем удобно. Намного приятнее производить конфигурацию и менять поведение контроллера через Web интерфейс. Но последовала мысль, что любой может набрать в браузере адрес моей железки и оказаться там, где его не ждут, со всеми вытекающими последствиями! Нужно сделать хотя бы картонную дверь. Идея есть, приступаем к реализации. Т.к работа с моими игрушками происходит через Web браузер, то логично воспользоваться стандартными средствами авторизации заложенными в большинство браузеров. Забегая вперед скажу, что у меня все заработало в браузерах: chrome, firefox и opera. Через ишака не завелось, но он живет своей жизнью и меня не интересует (даже разбираться не стал). В остальных не проверял, но думаю, что все будет работать. Механизм выглядит следующим образом При запросе страницы, браузер (например Opera) отправляет множество различной информации на Web сервер. GET / HTTP/1.1 User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.60 Host: 10.10.10.2 Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Encoding: gzip, deflate Connection: keep-aliveВ свою очередь мы ожидаем во всем этом шлаке увидеть заголовок Authorization: Basic <encoded-key> и естественно его не видим. Делаем правильный вывод - клиент не авторизован. Отправляем пользователю заголовок который заставит его браузер отобразить форму авторизации. HTTP/1.0 401 Unauthorized WWW-Authenticate: Basic realm="Arduino - iT4iT.CLUB" После заполнения пользователем соответствующих форм и отправки данных на сервер, мы получаем тот же шлак, но в нем присутствует интересующий нас заголовок. GET / HTTP/1.1 User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.60 Host: 10.10.10.2 Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Encoding: gzip, deflate Authorization: Basic bG9naW46cGFzc3dvcmQ= Connection: keep-aliveПри дальнейшем изучении вопроса, выясняется, что уникальный ключ bG9naW46cGFzc3dvcmQ= является ничем иным как строкой закодированной в Base64. И при её преобразовании в читаемый вид получаем login:password. Это и есть наши данные разделенные спец. символом ":". Для работы с Base64, для Arduino имеется сторонняя библиотека с одноименным названием и забрать ей можно тут: https://github.com/adamvr/arduino-base64 У меня в наличие имеются Ethernet модули на чипах W5100 и ENC28J60 для Arduino Uno и Nano соответственно. Они имеют серьезные отличия и требуют для работы различные библиотеки. К примеру W5100 , в отличие от ENC28J60, имеет аппаратную поддержку TCP/IP: TCP, UDP, IPv4, ICMP, ARP, IGMP, MAC. Следовательно в ENC28J60 вся эта кухня должна быть реализована программно, что отразится на свободной памяти микроконтроллера. W5100 Для работы требуются библиотеки Ethernet.h и SPI.h. Поставляется совместно со средой разработки Arduino. Скетч для микроконтроллера будет выглядеть следующим образом: ENC28J60 Для данного чипа требуется сторонняя библиотека. Я выбрал UIPEthernet.h, забрать можно тут: https://github.com/ntruchsess/arduino_uip Для работы подойдет предыдущий скетч, необходимо лишь изменить подключаемые библиотеки: /* sign in (authentication) to the Web server Arduino (с) http://it4it.club */ #include <UIPEthernet.h> // Used for Ethernet #include <Base64.h>На этом пока все, всем удачи с экспериментами! PS: Не забывайте изменить IP в скетче.