Главная » Arduino
Призовой фонд
на август 2019 г.
1. 1000 руб
Паяльник
2. Тестер компонентов MG328
Паяльник
3. 200 руб.
От пользователей

Климатический монитор Смотрителя Убежища в стилe Fallout на ESP8266

Смотритель, однажды твоё Убежище откроет бронированную дверь, и жители выйдут наружу, чтобы добывать припасы и заселять истерзанную радиацией пустошь. А знаешь ли ты, что происходит снаружи, выдавать ли поисковым партиям силовую броню и гаусс-пушки, или в ближайшие 3 дня будет достаточно кожаной брони и ржавых дробовиков? Сколько им выдать антирадина с изрядно опустевшего склада? Какая будет погода? Какой уровень радиации? Какая сейчас температура, влажность и давление? Нет ли утечки реактора внутри убежища? Не страдают ли твои жители от избыточной температуры или влажности?
На эти, и многие другие вопросы тебе поможет ответить Климатический Монитор от компании Vault-Tec!

Подай заявку сейчас, и получи шанс укомплектовать им своё Убежище!
(Шутка, конечно, навеянная серией игр Fallout, но, подумалось, почему бы и не сделать такую полезную игрушку/прибор).

Предупреждение: Для нормальной работы конструкции необходима wi-fi сеть с доступом в Интернет.(хотя, думаю, по нынешним временам это не проблема ни для кого)

Функционал:

  • Точное время/дата (периодическая синхронизация c NTP серверами)
  • Погода на сегодня +3 дня вперед
  • Отображение данных внешнего датчика находящегося на улице:
  1.    Радиационный фон на улице
  2.    Атмосферное давление (в скетче можно выбрать, что больше нравится мм.рт.ст или гектопаскали)
  3.    Влажность
  4.    Температура
  • Внешний датчик сделан на "младшей" модели esp8266 esp-07, связывается и передает данные настольному модулю посредством своей wi-fi сети, UDP пакетами данных в формате json, требует только питание.
  • Отображение данных с датчиков в помещении:
  1.    Радиационный фон внутри помещения
  2.    Влажность
  3.    Температура
  • Настройка основных параметров (сеть, к которой подключаться, пароль, часовой пояс, местоположение для прогноза погоды вашего региона) не требует перепрошивки.

   
Главный экран выглядит так:

2 прогресс-бара визуально показывают время до следующего запроса погоды или времени из интернета.

Таймер уличного модуля считает время от 0 до минуты, полоса удлиняясь становится при этом из зеленой - желтой, затем красной, при поступлении данных счётчик сбрасывается в 0. Таким образом можно судить об актуальности поступивших с внешнего модуля данных и его работоспособности.

Остальное, думаю, понятно из подписей на иллюстрации.

Схемы соответственно будет две. Разберём по-порядку.

Настольный модуль с экраном.

Использован esp8266 ESP-12-E nodemcu lua v3, в модуле 4М флеша. Температуру и влажность получаем с DHT-22. Радиацию измеряем датчиком СБМ-20, в принципе можно подключить любой датчик с рабочим напряжением 400в и поменять в скетче время счёта на соответствующее вашему датчику, схема классическая - блокинг-генератор, умножитель, и катодное "считывание" импульсов на 1 транзисторе, проще некуда.

Схема:

Стадии сборки:

Обычный корпус из пластика тут явно испортит весь стиль, поэтому принято решение делать свой, в стиле "простой тесла-панк", не используя "презренного пластика", только труЪ латунь и дерево. Если будут вопросы как именно сделано что-то конкретное - постараюсь ответить, вкратце всё просто: фрезеровка, шлифовка, полировка, травление рисунков и надписей, немного патины в парах аммиака.

Готовый прибор:

Выносной модуль

Поскольку здесь уже не нужно ни много ног, ни много места под красивости, применен esp8266 ESP-07 с 1М флеша.
Влажность получаем с DHT-22. Температуру и давление с BMP-180. Радиацию измеряем датчиком СБМ-20М(применен из соображений компактности), датчик также может быть любой. Все эти данные передаются на настольный модуль раз в 5 секунд.

На схеме/плате 3 светодиода:

  •  Питание - просто показывает, что модуль включен(у меня он зеленый).
  •  Статус - не горит, если все нормально, горит, если по любым причинам модуль не может связаться и передать данные (у меня он красный).
  •  "RAD", импульс датчика радиации - вспыхивает, когда счётчиком Гейгера регистрируется частица(у меня он синий).

Схема:

Плата в несколько слоёв покрыта лаком Plastik для защиты от окисления и влажности:

Корпус из разветкоробки, без украшательств, чтобы не привлекать ненужного внимания соседей/прохожих. Ну висит серая коробочка, и пусть висит. ;)

Трансформаторы блокинг-генератора в обоих случаях использовал от радиометров "Мастер-1" просто потому что были в наличии, однако и намотать их совсем не сложно.
Трансформатор делается на ферритовой гантельке (их можно как купить, так и выпаять из энергосберегаек и компьютерных БП), мотается быстро и просто, желательно покрывать каждые 50-100 витков лаком во избежание межвитковых пробоев. Обязательно соблюдать направление намотки и правильно подключать начала/концы обмоток, иначе блокинг не запустится.

Программная часть:

Код написан в среде Arduino IDE с использованием библиотеки Arduino core for ESP8266 WiFi chip - https://github.com/esp8266/Arduino , для работы с датчиками использованы библиотеки Adafruit, для дисплея этот порт библиотеки на esp8266 - https://github.com/gnulabis/UTFT-ESP8266 , кроме того для сборки понадобится Arduino Json Parser, Time, OneWire. Рекомендую использовать Arduino 1.6.8, не старше, поскольку могут быть неявные ошибки при сборке, Arduino core for ESP8266 WiFi писалась именно под 1.6.8.

В начале каждого скетча есть несколько #define которыми вы можете настроить ряд параметров, там всё откомментрировано, и, думаю, будет понятно.

Настольный модуль работает одновременно и как клиент домашней сети, через которую от берет из интернета время и прогноз погоды, и как точка доступа для внешнего датчика.
Модуль внешнего датчика работает только как клиент, он постоянно держит связь с настольным, и в случае пропадания сети перегружается и пробует снова и снова. Каждые 5 секунд передает UDP пакетом данные со своих датчиков.

Прошивка модуля делается прямо из Ардуино. esp8266 ESP-12-E nodemcu v3 уже имеет все необходимое на борту, просто соединить кабелем с компьютером, и можно шить. Для прошивки же esp8266 ESP-07 я использовал usb-uart адаптер ch340, вот такой:

на плате под него предусмотрен разъем. Для прошивки надо выключить модуль, замкнуть джампер JP1 и прошить, для дальнейшей работы программы прошивки джампер нужно разомкнуть.
Затрудняюсь решить, что ещё нужно написать о коде, безусловно там есть нюансы, но какие не очевидны, пока непонятно, просто если будут вопросы - постараюсь ответить.

Теперь о прогнозе погоды. Он берётся с сервера wunderground.com. Удобный сервис, бесплатно для некоммерческого использования, во многих городах есть много "погодных станций" на основе которых делается прогноз, а значит можно выбрать поближе к дому и прогноз будет точнее. Кроме того сервис умеет отдавать данные в удобном для автоматизированного парсинга формате json.
Подключиться там очень просто.
Нужно зарегистрироваться и получить API Key здесь https://www.wunderground.com. Регистрируемся или входим, если уже зарегистрированы, идем в раздел "API" и просим ключ. Нам понадобится ключ "Developer", он бесплатный https://www.wunderground.com/weather/api/d/pricing.html.
Найти свой город и подходящую вам погодную станцию (просто ищем их сервисом свой город, выбираем наиболее подходящую нам станцию, и смотрим нужную нам кодировку локации, например Москва):

После чего заходим в настройки настольного модуля (удерживаем кнопку setup при включении, он напишет, что запустился в режиме настройки:

Далее цепляемся к появившейся точке доступа "Overseer_101", заходим браузером на 192.168.10.1) вводим там ключ, локацию, сеть, к которой подключаться для доступа к интернету, часовой пояс:

Перед названием выбранной "именной" погодной станции в вашем регионе обязательно писать pws: , например IBALASHI24 вводить в настройках как pws:IBALASHI24.

Жмём "отправить запрос", и перегружаем настольный модуль.

Важное замечание: все модули esp8266 ОЧЕНЬ чувствительны к питанию, должны быть стабильные 3.3 вольта, желательно не менее 1А, без "проседаний" напряжения и пульсаций, в противном случае возможны зависания и самопроизвольные перезагрузки. Кстати, это относится и к такой, казалось бы, мелочи как кабель от usb адаптера до устройства - многие китайские производители экономят на проводах и качестве в дешевых кабелях, и напряжение на другом конце может проседать.

Напоследок немного личных впечатлений с точки зрения того, кто привык работать с "голыми" МК (не-ардуинами), возможно будет интересно тому, кто надумает что-то делать на этих модулях. Во-первых очень дешево, 4 мегабайта флеша при 80МГц за 2-3$ или 1 мегабайт за $1 считаю вполне приемлемым на фоне любых других МК. Есть библиотека, позволяющая писать код не ограничиваясь рамками узкоспециализированых фреймворков. Есть аппаратные i2c, SPI, внутренние таймеры и поддержка внешних прерываний. Это были плюсы, а теперь минусы: про питание уже написал - любой всплеск или проседание напряжения и оно зависнет или перегрузится 50/50. Следующий минус - порты, смотришь на их количество, и кажется - на всё хватит и еще останется, однако это не так, часть из них уже зарезервирована для подтяжки к питанию или земле и под загрузку прошивки, и подтянуть их надо обязательно, иначе модуль не будет корректно работать, некоторые уже подключены к led самого модуля и тоже не могут быть использованы. Это решение разработчиков Espressif вызывает как минимум недоумение. К примеру, в этом проекте, в настольном модуле использованы все порты, которые вообще в принципе можно использовать, не нарушая работу платы, даже кнопку пришлось подключать уже на adc. Почти аналогичная ситуация и с esp-07.

Ну и, раз уж стиль конструкции обязывает, ещё одно важное напоминание: "Не кормите Яо-Гаев!" :)

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Настольный модуль
U1 Wi-Fi MCU ModuleESP8266 ESP-12-E nodemcu v31 Поиск в Utsource В блокнот
Q1, Q2 Биполярный транзистор
BC847
2 Поиск в Utsource В блокнот
D1, D2 Светодиод3мм цвет по вкусу2 Поиск в Utsource В блокнот
D3, D4 Выпрямительный диод
US1M
2 Поиск в Utsource В блокнот
R1 Резистор
1 кОм
1 Поиск в Utsource В блокнот
R3, R4, R9 Резистор
10 кОм
3 Поиск в Utsource В блокнот
R2 Резистор100R1 Поиск в Utsource В блокнот
R10 Резистор
100 кОм
1 Поиск в Utsource В блокнот
R5, R6, R7 Резистор1M3 Поиск в Utsource В блокнот
R8 Резистор2M1 Поиск в Utsource В блокнот
C1, C2 Конденсатор4.7-100nF 600v2 Поиск в Utsource В блокнот
C3 Конденсатор100-150 нФ1 Поиск в Utsource В блокнот
C4 Конденсатор4.7 нФ1 Поиск в Utsource В блокнот
LCD1 LCD-дисплейILI93411 Без тачскрина, с SPIПоиск в Utsource В блокнот
U2 Датчик влажности и температурыDHT-221 Поиск в Utsource В блокнот
Газоразрядный счетчик ГейгераСБМ-201 СБМ-20М, или любой на 400вПоиск в Utsource В блокнот
Уличный датчик
U1 Wi-Fi MCU ModuleESP8266 ESP-071 Поиск в Utsource В блокнот
Q1, Q2 Биполярный транзистор
BC847
2 Поиск в Utsource В блокнот
D1, D2, D3 Светодиод3мм цвет по вкусу3 Поиск в Utsource В блокнот
D4, D5 Выпрямительный диод
US1M
2 Поиск в Utsource В блокнот
R1, R8, R6 Резистор
1 кОм
3 Поиск в Utsource В блокнот
R2, R3, R4, R5, R9 Резистор
10 кОм
5 Поиск в Utsource В блокнот
R7 Резистор100R1 Поиск в Utsource В блокнот
R14 Резистор
100 кОм
1 Поиск в Utsource В блокнот
R10, R11, R12 Резистор1M3 Поиск в Utsource В блокнот
R13 Резистор2M1 Поиск в Utsource В блокнот
C1, C2 Конденсатор4.7-100nF 600v2 Поиск в Utsource В блокнот
C3 Конденсатор100-150nF1 Поиск в Utsource В блокнот
C4 Конденсатор4.7 нФ1 Поиск в Utsource В блокнот
C5 Конденсатор100 нФ1 Поиск в Utsource В блокнот
C6, C7 Электролитический конденсатор100uF2 Поиск в Utsource В блокнот
U3 Датчик влажности и температурыDHT-221 Поиск в Utsource В блокнот
U2 Датчик атм.давления и температурыBMP-1801 Поиск в Utsource В блокнот
U4 LDOLM1117-3.31 Поиск в Utsource В блокнот
JP1 Перемычка1 Поиск в Utsource В блокнот
Газоразрядный счетчик ГейгераСБМ-201 СБМ-20М, или любой на 400вПоиск в Utsource В блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 13.11.2017 0 11
Я собрал 3 Участие в конкурсе 10
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 10 чел.

Комментарии (164) | Я собрал (0) | Подписаться

0
dina #
У меня в Башкортостане Уфа не осталось ни одной точки. Со старой которой нет на карте, сайт даёт один запрос в сутки, то есть прогноз отображается на 30 мин до следующего запроса. Беру прогноз из Челябинска за 500км пока работает. Жаль что проект так закончился.
Ответить
0
velant77 #
Прогноз издох, может и показывает раз в сутки, но я этого не вижу. Сайт я так понял прекращает поддержку API https://apicommunity.wunderground.com/weatherapi/topics/end-of-service-for-the-weather-underground-api
Купить api я так понял тоже нельзя. Кто нибудь возьмется переписать на другой сервер погоды? А то как то жаль потраченных средств и времени, чтоб смотреть на вопросики вместо прогноза.
Ответить
0
yucan #
Не пробовали менять сервер погоды в скетче? Например на openweather.org
Ответить
0
Sasha #
Подвернулись датчики СБМ, думаю собрать! Что сейчас с прогнозом погоды (читал в комментах что с ним проблемы) и работоспособностью прибора в целом? Сам не программист ни капли
Ответить
0
Андрей #
Свердловская обл. Полёт нормальный. Точек поубавилось, но штук восемь осталось
Год отработал стабильно
Ответить
0
velant77 #
Вторые сутки висит в бесконечной перезагрузке. Доходит до отображения времени и уходит в перезагруз. Предпологаю проблемы с NTP, либо сервак лежит, либо отдает мусор. Только у меня так?
Ответить
0
dina #
Всё сайту, убирай из настройки пароль и точку, будет без прогноза текущее показания
Ответить
0
velant77 #
Спасибо, а в целом жаль, жаль
Ответить
0
Андрей #
Такая же фигня... какая все же жаль. Без настроек и пароля время показывает? Позавчера ещё время от времени цеплялся
Ответить
0
Андрей #
Позавчера ещё цеплялся время от времени, а без пароля и точки время кажет?
Ответить
0
Андрей #
Убрал ключ и точку, ни чего не изменилось, цикличный перезагруз
Ответить
+3
boris #
Изменил прошивку под openweathermap.org
Т.к. я не программист от слова вообще, то получилось как получилось. Настраивать как и раньше, переводим в режим сетап. в поле ключ вводим полученный апи ключ от openweathermap.org (нужна регистрация) длина его 32 символа. локация пишем название города латиницей как он указан на openweathermap.org сохраняем. Что теперь отображается в прогнозе:
openweathermap.org отдает прогноз погоды на 5 дней. в сутках прогноз с интервалом в 3 часа.
На дисплее отображается информация о погоде за 4 интервала по 3 часа. Температура это максимальная и минимальная на прогнозируемый интервал. Есть непонятная проблема с ребутами при очередном запросе погоды с сервера. Я на это не обращаю внимание. Перегузится несколько раз, получит погоду и все дальше работает.
Прикрепленный файл: DC_1_2_new.ino.bin
Ответить
0
Vladimir #
Не могли бы вы выложить обновленный исходник?
Ответить
+1
boris #
Выглядит это примерно так.
Прикрепленный файл: ECFAFA65-A027-4CB9-9CE3-B2D5A01317A2.jpg
Ответить
0
fataliti1 #
Я так понял, это не сервак лежит, это бесплатный ключ кончился у него срок действия 500 дней
Ответить
0
boris #
Ну зачем писать ерунду. https://www.wunderground.com/ прекратил давать бесплатные АПИ ключи и об этом на своем сайте сообщал.
По поводу второго коментаря: если не менять прошивку, а пользоваться локально, нужно удалить локацию и апи ключ. В авторской прошивке стоит проверка на правильность этих данных. Если не правильно будет вечный рестарт.
Ответить
0
fataliti1 #
Убрал я ключ и точку доступа и все равно перезагруз
Ответить
0
dina #
Уйти в режим настройки, поле key оставить пустым, поле location оставить пустым, нажать отправить. Я так сделал.
Ответить
0
fataliti1 #
Старые ключи API, связанные с PWS, будут работать до 22 марта 2019 года. Тем не менее, это будет самый последний день для работы этих ключей API, поэтому вы должны как можно быстрее перейти на новый API. API-ключи, не связанные с персональной метеостанцией, будут отключены в начале марта.
Ответить
0
velant77 #
А как получить новый ключ?
Я тоже убрал ключ и локацию = вечный перезагруз.
Ответить
0
Repz #
Такая же проблема с работой устройства. Отработала с декабря 2017 года. К сожалению, сам тоже не могу разобраться с переписыванием программы.
Ответить
0
fataliti1 #
Итак други, ключ мне всё же удалось получить, НО, он в два раза длиннее старого,может оттого конечно,что из всех метеостанций выбрал "другое". А так как он длиннее, то он ни в какую не хочет прописываться в настольный модуль.То есть ты его туда вкрячиваешь,а при повторном открытии хрен-поле оказывается пустым. Видимо в скетче где то указана максимальная его длина?
Однако не даёт скинуть в комментарии инструкцию, пишите мыло кому нужно, скину. Вместе покумекаем, а может и автор подключится
Ответить
0
fataliti1 #
Или фигня какая то с ключом, походу с ним еще какие то действия нужно сделать...
Ответить
0
velant77 #
Свой перегенерировал, проверю только вечером. Но пишет почему то неактивен вверху.
Прикрепленный файл: Безымянный.jpg
Ответить
0
Archi #
Так может в форуме всё это обсудить?
Ответить
0
fataliti1 #
В общем все ребята, сайт прекратил поддержку бесплатных API, а новые платные ваще хрен как ставить, сайт работал с 1995 года и из-за неграмотной политики руководства постепенно загибается, теперь нужно думать как заставить его работать без прогноза хотя бы, как то жаль потраченных денег и за полтора года все привыкли уже
Ответить
0
dina #
Ребят я же написал, вот без прогноза.
Прошивка база в гектопаскалях, улица температура с dht22. Вот бы вместо прогноза вставить шкалу изменения давления, это лучший прогноз в режиме реального времени. За основу взять нормальное давление для своей высоты. Сам тоже не программист, любитель-повторитель.
Прикрепленный файл: IMG_20190311_184522.jpg
Ответить
0
fataliti1 #
Спасибо Борису! За обновленную прошивку, всё работает
Прикрепленный файл: для-веб.gif
Ответить
0
Дима #
Спасибо Борис за обновленную прошивку!
Не могли бы вы выложить обновленный исходник?
Ответить
+1
5ess #
Вот измененный исходник. использовать ESP8266 библиотеку 2.3, с другими все будет компилироваться, но будет работать.
библиотека UTFT-ESP8266 по ссылке из статьи.
Ардуино ИДЕ 1.8.5
Во вложении файл bitmap.c с правками которые требует библиотека UTFT-ESP8266 текущей версии.
Т.к. сервер погоды не отдает данные о вероятности осадков, то освободилось место под прогнозом температуры. туда можно добавить на пример давление или влажность.
И скажите это только у меня после очередного запроса погоды идет ребут или у всех так? EspExceptionDecoder внятного ничего не дает.
Прикрепленный файл: bitmap.c
Прикрепленный файл: DC_1_2.ino
Ответить
0
velant77 #
Прошился вчера прошивкой от Бориса, всё отлично, устройство вернулось к жизни. Спасибо Борис! Еще бы вернуть прогноз на три дня. Сам тоже по началу начал смотреть исходники, но что то срезался на библиотеке esp8266wifi.h, как не скачивал ни ставил не пошла она у меня что то, на том и бросил.
Ответить
0
Repz #
Спасибо Борису. Перепрошил - всё работает! Респект и уважуха!
Ответить
+2
5ess #
Обновленная прошивка, устранена проблема ребута при очередном запросе погоды с сервера.
Обновил библиотеку ArduinoJson до 5.13.5
С ней намного понятней (не проф программисту) работать. тем более есть генератор кода assistant который генерит код под конкретный json. С этим кодом легко можно сделать вывод прогноза на экран как раньше на 4 дня, проверял в устройстве - все работает.
Прикрепленный файл: DC_1_2.ino.bin
Ответить
0
velant77 #
Спасибо, вроде работает стабильно.
Ответить
0
Денис #
У меня иконки погоды под вопросом все
И еще вопрос можно ли отображение температуры сделать с десятыми долями градуса?
Прикрепленный файл: IMG_20190323_204822726.jpg
Ответить
0
5ess #
Можно. Сервер погоды температуру отдает до сотых. По поводу иконок возможен косяк. Посмотрю в выходные.
Ответить
«12
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
ELM327 OBD II — адаптер с поддержкой CAN Конструктор регулируемого преобразователя напряжения LM317
вверх