Ардуино метеостанция: Часы-метеостанция на Arduino своими руками

Содержание

Метеостанция на Arduino от А до Я. Часть 1 / Хабр

Оглавление:


«Так, давайте сразу договоримся: вы не собираетесь снимать кино для Голливуда. Даже в Стране чудес утверждается не более пяти процентов от всех сценариев, и только один процент идет затем в производство… Таким образом, вместо всего этого вы собираетесь создать свой собственный Голливуд.»
Эд Гаскель «Снимаем цифровое кино, или Голливуд на дому»


Что, ещё одна погодная станция на Arduino?! Да, ещё одна и, что-то мне подсказывает, не последняя в интернете вещей.

Точно также, как каждый программист обязан написать программу «Hello World!», так и каждый ардуинщик обязан иметь за плечами опыт построения простой или не очень метеостанции.
Уже созданных проектов метеостанций в интернете описано немалое количество, читатель может выбрать любой из них для реализации. Не скрою, я внимательно изучил около десятка подобных проектов и ещё кучу смежных. Поэтому нельзя сказать, что я создал всё с нуля, конечно же я «стоял на плечах гигантов».

Сразу скажу, что в мои планы не входило использование сторонних сервисов для хранения и отображения данных. Хотелось лично пощупать и понять как всё это работает изнутри от начала до конца, от А до Я.

Так что тем, кто хочет быстро склепать нечто из ничего, эта серия статей скорее всего не подойдёт. Проще пойти и купить готовый конструктор с инструкцией по сборке. Профессионалам микроэлектроники тут совсем делать нечего, может быть поржать и вспомнить себя в начале пути.
А вот тем, кто действительно хочет разобраться, я думаю понравится. Возможно материал пригодится в качестве учебного пособия.

Автор проведет вас по запутанным лабиринтам современных технологий интернета вещей. Причём глазами новичка, так как сам им является.

Этот проект был реализован в далеком уже 2016 году, но надеюсь еще актуален.


Мы изучим и будем работать с простыми и сложными вещами :


  • датчиками температуры и влажности типа DHT22, DHT11
  • датчиком барометрического давления типа BMP180
  • WiFi модулем ESP8266
  • радиомодулем типа nRF24 2,4 Ггц
  • семейством Arduino Pro Mini, Arduino Mega
  • солнечной батареей и аккумуляторами
  • языком программирования C/C++
  • языком программирования PHP
  • системой управления базами данных MySQL
  • языком программирования Java и фреймворком Android (создание приложения для Adnroid для отображения погодных данных на смартфоне).

Некоторые темы из перечисленных и яйца выеденного не стоят, а некоторые можно изучать годами. Поэтому сложные вещи мы затронем только в части, непосредственно касающейся данного проекта, так чтобы вы поняли как это всё работает.

Но начнем мы с самого начала правильно. А именно с описания и проектирования будущего устройства «на бумаге», чтобы в конце концов каждый кирпичик лёг на своё место.


Как нам правильно говорит Википедия, прототипирование — это быстрая черновая реализация работающей системы. Которая, да, будет работать не совсем неэффективно и с некоторыми ошибками, но даст представление о том, следует ли развивать поделку до промышленного образца. Процесс создания прототипа не должен быть затяжным. За этапом прототипирования следует анализ системы и её доработка.

Но это в промышленности, где работники заняты полный рабочий день.

Каждый, кто клепает по вечерам свои поделки pet-project для «internet of things», должен отдавать себе отчёт в том, что он создаёт именно прототип, полуфабрикат. До уровня нормального промышленного изделия ему очень далеко. Поэтому не следует поручать нашим любительским поделкам какие-либо ответственные участки жизнеобеспечения и надеяться, что они нас не подведут.

Промышленное изделие строится на промышленной элементной базе и далее проходит еще много стадий, включающих отладку, испытания и сопровождение, прежде чем станет хитом продаж.

Итак, вместо всей этой тягомотины, мы создадим свою собственную игрушку, но не простую. С элементами технического творчества, зачатками программирования и познания (в процессе создания) многих других смежных вещей.

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


Обычно этот этап пропускают. Решая сделать что-нибудь эдакое прямо сейчас, а потом выясняются мелкие детали, которые ставят весь проект в тупик или вовсе делают его неподъемным. Все наши хотелки необходимо записывать, я использую для этого гугл диск, он доступен с ПК и с мобильного устройства.

Итак, наша метеостанция должна:


  • измерять температуру и влажность на улице
  • измерять температуру и влажность в доме
  • измерять атмосферное давление
  • отображать указанные значения на дисплее
  • передавать данные на сервер в интернет, где данные будут храниться в базе данных и отображаться на веб-странице, либо использоваться в мобильном приложении.

Датчики используются самые простые и дешевые. Например, забегая наперед скажу, что температуру DHT22 измеряет достаточно точно, а вот с влажностью немного неточен. Но, опять таки повторюсь, это не имеет значения, поскольку перед нами — прототип, и разброс в 5% влажности ни на что важное в нашей жизни не повлияет.

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


Вот это и есть самая ответственная часть, а вовсе не пайка или программирование. После определения требований к системе надо решить с помощью чего конкретно они будут воплощены в жизнь.

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

Замкнутый круг? Но замкнутые круги для того и существуют, чтобы их разрывать.

Выход есть. Можно просто взять и повторить чей-то проект. Я же изучил уже существующие проекты метеостанций и надеюсь сделал шаг вперед.

Итак. Архитектура погодной станции базируется на Arduino. Потому что Arduino имеет небольшой порог вхождения и я уже имел с этим дело. Дальше выбирать уже проще.

Сразу стало ясно, что в составе метеостанции будет удаленый, заоконный датчик и центральный модуль.

Центральный, основной блок будет расположен внутри помещения. Это важно определить на начальном этапе, от этого «пляшут» такие важные характеристики как температурный режим работы и питание.

Удаленный датчик (или датчики) будет без «мозгов», его задача — периодически проводить измерения и передавать данные на центральный домашний блок. Центральный блок принимает данные от всех датчиков, показывает их на экране и отправляет их же в интернет в базу данных. Ну, а там уже много проще, как только данные оказываются в базе с ними можно делать всё что захочешь, даже графики рисовать.

Для сношений с внешним миром интернет был однозначно выбран WiFi модуль ESP8266 практически без альтернативы (прим. возможно сейчас такие альтернативы появились). К Arduino выпускаются Ethernet платы расширения, но совсем не хотелось привязываться к кабелю.

Интересный вопрос состоял в том, чем обеспечивать связь между заоконным датчиком (или датчиками, про требование расширяемости системы помним?) и центром.

Радиомаячки на 433 Мгц однозначно не подходят (они не подходят ни для чего вообще).

Воспользоваться опять ESP8266 ?

Минусы такого решения:


  • необходим устойчивый WiFi за пределами дома


  • дальность связи не будет большой


  • пострадает надежность, при пропадании интернета мы не увидим свои удаленные датчики


  • большее энергопотребление.


  • Энергопотребление ESP8266 :


  • при передаче 120—170 mA


  • при приеме 50—56 mA


  • в режиме Deep Sleep 10 µA (мкА)


  • в выключенном состоянии 5 µA (мкА).


В конце концов для связи удаленных датчиков с основным домашним блоком был выбран чип nRF24L01+ с 2,4 Ггц передатчиком и приемником в одном флаконе, с дополнительной внешней антенной, чтоб уж наверняка «пробить» стены.

Энергопотребление nRF24L01+ 2,4 GHz :


  • при приеме 11 mA
  • при передаче на скорости 2Mbps — 13 mA
  • в режиме standby-I — 26 μA (мкА)
  • в выключенном состоянии 900 nA (нА).

Что у ESP8266, что у nRF24L01+ диапазон рабочих температур подходящий: от -40℃ до +80℃.

Купить nRF24L01+ можно примерно за $1, или сразу с внешней антенной за $3. Купить ESP8266-01 можно примерно за $4. Читайте внимательно описание товара! Иначе купите одну антенну.

Ядро системы вырисовалось. Переходим к самим датчикам.

На улице, как известно, температура может достигать отрицательных значений, поэтому датчик DHT11 не подходит, а вот DHT22 в самый раз.

Характеристики DHT22 / AM2302 :


  • питание от 3,3 В до 5 В, рекомендуется 5 В
  • потребление 2.5mA максимум, в момент измерения и передачи данных
  • диапазон измерения влажности 0-100% с погрешностью 2-5%
  • диапазон измерения температуры от -40 до +125°C с погрешностью ±0.5°C
  • запрос на измерение не чаще 0,5 Гц — одного раза в 2 секунды.

Внутри дома, я надеюсь, отрицательных температур не будет, поэтому можно использовать DHT11, тем более, что он у меня уже был.

Характеристики DHT11:


  • питание от 3,3 В до 5 В
  • потребление 2,5 mA максимум, в момент измерения и передачи данных
  • диапазон измерения влажности 20-80% с погрешностью 5%
  • диапазон измерения температуры от 0 до +50°C с погрешностью ±2°C
  • запрос на измерение не чаще 1 Гц — одного раза в секунду.

Купить DHT22 можно примерно за $3. DHT11 стоит дешевле — $1, но он и менее точен.

Теперь возвращаемся опять к Arduino. Какую плату выбрать?

Я тестировал отдельные части системы на Arduino UNO. Т.е. подключал к уно ESP модуль и изучал его, отключал, затем подключал nRF24 и т.д. Для финальной реализации заоконного датчика выбрал Arduino Pro Mini как наиболее близкую к Uno из миниатюрных.

По энергопотреблению Arduino Pro Mini также выглядит неплохо:


  • нет преобразователя USB-TTL, который сам по себе «кушает» много,
  • светодиод подключен через 10к резистор.

Для продвинутого сбережения энергии планировалось:


  • удалить светодиод — индикатор питания на Arduino Pro Mini (я пожалел, не стал портить плату)
  • либо использовать «голую» сборку на микропроцессоре Atmel ATmega328 (не использовал)
  • использовать библиотеку Low Power Library или JeeLib.

Из библиотек выбрал Low Power Library, она проста и содержит только то, что нужно.

Для центрального блока, поскольку к нему планировалось подключить многочисленную периферию, была выбрана плата Arduino Mega. К тому же она полностью совместима с UNO и имеет больше памяти. Забегая наперед скажу, что этот выбор полностью оправдался.

Купить Arduino Mega можно примерно за $8.


Теперь про питание и энергопотребление.

Arduino Pro Mini бывают двух видов:


  • на напряжение питания 5В и частоту 16МГц
  • на напряжение питания 3,3В и частоту 8МГц.

Поскольку радио-модуль nRF24L01+ требует для питания 3,3 В, а быстродействие здесь не важно, то покупайте Arduino Pro Mini на 8MHz и 3,3В.

При этом диапазон питающего напряжения Arduino Pro Mini составляет:


  • 3,35-12 В для модели 3,3 В
  • 5-12 В для модели 5 В.

У меня уже была Arduino Pro Mini на 5В, только поэтому я её и использовал. Купить Arduino Pro Mini можно примерно за $4.

Питание центрального блока будет от сети 220 В через небольшой блок питания, дающий на выходе 12В, 450mA, 5W. Типа такого за $5. Там еще есть отдельный вывод на 5В.

А ежели этого не хватит, то можно и помощнее поставить. Другими словами экономить электропитание для центрального блока нет особого смысла. А вот для удаленного беспроводного датчика энергосбережение является важнейшей частью. Но и функциональность не хотелось бы терять.

Поэтому Arduino Pro Mini и радиомодуль nRF24 будут запитываться от связки 4-х Ni-Mh аккумуляторов.

И помните, максимальная емкость современного аккумулятора примерно 2500—2700mAh, всё что больше это либо маркетинговые уловки (Ansmann 2850) либо обман (UltraFire 3500).

Li-Ion аккумуляторы я не использую по нескольким причинам:


  • очень дорогие
  • при снижении температуры окружающего воздуха ниже 0°C происходит снижение мощности литий-ионного аккумулятора до 40-50%
  • те которые дешёвые производятся без защиты и небезопасны (при КЗ или разряде могут взрываться и гореть, см. кучу роликов на ютюбе)
  • стареют, даже если не используются (впрочем это можно сказать обо всех химических элементах), через 2 года Li-Ion батарея теряет около 20% ёмкости.

Для прототипа вполне можно обойтись качественными Ni-MH AA или AAA аккумуляторами. Тем более, что нам не нужны большие токи. Единственный минус Ni-MH аккумуляторов — это их долгая зарядка.


Подведем итоги. Вот общая схема как всё работает.

Продолжение следует.

Домашняя метеостанция на Arduino и отправка данных на "Народный мониторинг" - Arduino

Всем привет, в этой статье поговорим об уже надоевшей всем теме - "Метеостанция". Каждый пытается сделать что-то свое, вот и я не стал исключением и попытался материализовать свои эротические фантазии на контроллере ESP8266. Тема задумывалась уже давно как некое обновление для предыдущего проекта этой тематики, но из-за своей неспешности переросла в нечто самостоятельное.

При всей привлекательности микроконтроллера ESP8266 с его большим объемом памяти, железной поддержкой Wi-Fi и массой разных плюшек, он не лишен недостатков. Самый основной - ограниченное количество поддерживаемых одновременных TCP соединений равное 5. Если превысить этот лимит, то контроллер потеряет связь с окружающим миром, при этом watchdog будет думать, что все в порядке, а следовательно, даже не попытается нам помочь. Будем стараться это помнить!
Стоит начать с концепции
Доступ к данным метеостанции нужно получать без установки внешних приложений и под любой операционной системой. Для этих целей подойдет практически любой современный браузер. Меня всем устраивает Chrome. Раз уж за основу взят HTTP протокол, стоит озаботиться экономией трафика и ограничением числа TCP соединений. Хорошим тоном будет передача всего необходимого для формирования страницы контента только при первом обращении, а все последующие операции, такие как отображение показаний с датчиков или настройку контроллера, производить через API. В этом нам поможет JQuery. А вот, чтобы ослабить болевые ощущения от передачи файлов с SPI Flash в браузер, стоит предусмотреть систему кэширования, например, Etag. Это позволит отдавать тяжелый контент единожды, а при последующих загрузках страницы просто подтверждать его актуальность на уровне Web сервера микроконтроллера и кэш браузера вступит в игру, неимоверно уменьшив время загрузки страницы! "Вы были правы в одном, Мастер: переговоры были недолгими." © Звездные войны. Эпизод 1 Из-за того, что метеостанция с датчиками и контроллером должна располагаться на улице, жизненно необходимо предусмотреть возможность обновлять прошивку ESP через Web интерфейс. Аналогичным образом должны обновляться файлы Web сервера расположенные на SPI Flash. Этот и предыдущий пункт вкупе позволят обновлять функционал микроконтроллера из домашней сети или из интернета, если конечно в этом возникнет острая необходимость. Чтобы никто посторонний не могу вмешаться в работу устройства или изменить файлы Web сервера, последний должен хотя бы как-то себя защищать. Пускать в панель управления только после авторизации, блокировать доступ при попытках брутфорса пароля. В конце концов, контроллер обязан самостоятельно генерировать ключи (salt) для авторизации, дабы сделать алгоритм непредсказуемым и исключить потенциальный взлом, в случае если злодей завладеет исходниками проекта. Понятно, что кому она там нужна, эта метеостанция, если её не завязывать с умным домом, если только из-за спортивного интереса, но как говориться “Береженого Бог бережет”. Датчики стоит расположить по уму - в метеобудке, а вот контроллер в сухом и закрытом боксе. Объединить их между собой, как мне кажется, удобнее по I2C шине - минимум проводов, максимум удобства. Практически на всех вариантах плат ESP-xx имеется штатный светодиод, можно воспользоваться им как для индикации режимов и состояния микроконтроллера, так и для вывода какой-либо промежуточной информации. Что касаемо режимов работы ESP8266, как ни странно, но он должен находить домашнюю Wi-Fi сеть и подключаться к ней. Если вдруг звезды не были к нам благосклонны, и домашняя беспроводная сеть приказала долго жить, контроллер обязан перейти в режим точки доступа (AP) дабы к нему можно было подключиться с какого-либо устройства и перенастроить его на другую сеть. А вот пока последнее не произошло, ESP должен периодически сканировать эфир в поисках долгожданной домашней точки доступа и, если боги были к нам милосердны, и домашняя сеть появилась в эфире, незамедлительно переключиться в режим клиента (STA) и в пылу страсти воссоединиться с ней. Ну и естественно, как же без отправки данных на внешние ресурсы, сейчас без этого не обходится ни одна уважающая себя кофеварка, не говоря уже о метеостанции. Думаю, что основным блюдом станет протокол MQTT, это уже облегчает возможность интеграции с умным домом, стулом или той же кофеваркой. Ну а на закуску добавим поддержку "ThingSpeak" и "Народного мониторинга". При желании можно нарастить функционал, благо памяти у микроконтроллера еще много. Как я себе это представляю
Учтите, что на видео, данные с датчиков, эмитируются самим микроконтроллером, это нужно для наглядности. В жизни метеорологическая обстановка намного спокойнее слава Богу.
Перейдем к физической сборки устройства
Как по мне, так самый оптимальный вариант, это воспользоваться отладочной платой NodeMCU V3 и базой для неё. Таким образом, мы получим отличный комплект с разведенной на его борту всей необходимой обвязкой и возможностью питать устройство от 5 до 24 Вольт.

Отладочная плата на базе, и смотрится хорошо, и удобства хоть отбавляй.

Заливаем прошивку, образ SPI Flash и подключаем четырьмя проводами датчики. Справится даже ребенок.
Ссылки:
Базовая плата для NodeMCU V3 с преобразователем питания 5-24V в 5V Отладочная плата ESP8266 от NodeMCU Естественно никто не запрещает Вам развести свою плату. Если Вы это сделаете, скиньте нам свое творение, возможно мы перейдем на него. В идеале, все должно размещаться в метеобудке.
Датчики взятые за основу
Теперь настал момент озаботиться, где описанные выше ребята будут жить. В прошлый раз мы использовали для этих целей, найденную в подножном корме, электрическую распределительную коробку. Кроме дешевизны в этом решении нет ничего положительного.
В этот раз мы воспользуемся более серьезным вариантом – "Метеорологическая будка Стивенсона". Она способна защитить датчики от прямых воздействий окружающей среды, но при этом имеет открытую структуру со стенками в виде жалюзи. Удобно, красиво и самое главное – правильно!
Будка печатается на 3D принтере по эскизам опубликованным на Thingiverse неким kowomike, спасибо добрый человек! Архив с эскизами можно будет скачать в конце поста.

Фото готовой будки

Шпилька М8 крепится через зажимной хомут к мачте уличной антенны.
Примерка. Шпилька практически не укорачивалась, чтобы не закрывать будку параболической Wi-Fi антенной.
Хотя в моем случае все это сделано не правильно т.к это солнечная сторона дома. Доступа на теневую сторону дома у меня нет, поэтому приходиться довольствоваться тем, что имеем. По прошлой метеостанции мне говорили "на солнечной стороне все эти измерения - сферический конь в вакууме, слепи %описание-многА-букАв% и закрепи на теневой стороне дома".
Я пока живу в панельном многоквартирном доме, как и не малая часть нашей страны. Доступ к теневой стороне дома (а для меня, по факту, это окна в подъезде) - прямой вызов всем гопникам района трущимся рядом, любопытным соседям с бегающими глазками и всей элите человечества скрашивающей фоном мою унылую и слишком простую, по их мнению, жизнь. Думаю, что мысль я донес.

Датчики располагаются на разных уровнях. В основании находится датчик освещенности Bh2750 и смотрит ровно вниз. Мне кажется, так он будет меньше пачкаться и покрываться пылью и при этом смотреть наружу сквозь минимальное количество препятствий для солнечного света. Вообще размещение этого датчика, это целая головная боль. Как не крути, все будет не то. Оставил так, ведь по сути важны не сами показания, а тенденция изменения. Хотя кого я пытаюсь обмануть, точность важна всегда! Предлагайте свои варианты.
Намного проще обстоят дела с датчиком атмосферного давления BMP180 и влажности SI7021, кстати, с последнего мы также будем забирать данные о температуре. Их размещаем в оставшемся свободном пространстве будки, благо его там с избытком, но не в конусе т.к пространство в нем менее проветриваемое.

Все хозяйство подключается между собой следующим образом
NodeMCU | ESP 07/12 | Датчики ----------------------------- D2 | GPIO 4 | SDA D1 | GPIO 5 | SCL 3. 3V | 3.3V | 3.3V GND | GND | GND ВАЖНО: при финальном монтаже устройства на его место службы, обязательно установите перемычку между пинами GPIO 0 (D3) и питанием 3.3 Вольта. Причины её установки описаны в закрепленном сообщении с описание обновления от 12.08.2017.
Сам микроконтроллер будет спрятан в уже знаменитую распределительную коробку, закрепленную на шпильке, чуть ниже будки Стивенсона. У меня все находится на стадии неторопливой сборки с попутным поиском более удачных идей.
Плата расширения, на которой будет установлена плата NodeMCU, закреплена через ножки для крепления компьютерных материнских плат в корпусах.

Разъемы для подключения внешних датчиков и питающей линии установил на местах где была пара штатных заглушек. Закрепил все через переходную пластину, выпиленную из куска фольгированного текстолита. Естественно, предварительно пластина была протравлена, а вся медь искоренена, ибо в этом случае она нам не друг.
Также была предусмотрена проставка из полиэтиленового поролона (используется в качестве упаковочного материала при транспортировке грузов) между текстолитом и корпусом, общей толщиной 5мм, а после затяжки крепежных винтов, его толщина не превышает 1мм. Это было сделано из-за опыта эксплуатации предыдущего (временного) бокса для этой метеостанции. Без проставки влага быстро найдет путь вовнутрь, и срок службы устройства снизится.
Производим примерку.
При окончательном монтаже обязательно необходимо удалить все не плотно прилегающие части полиэтиленового поролона, то есть те части, которые располагаются снаружи и не сдавлены крепежной текстолитовой пластиной. Это необходимо сделать для препятствования накоплению влаги в доступных для неё полостях. Также пришлось увеличить число крепежных болтов для более надежного прилегания текстолита, в противном случае он может выгибаться.
Все самое сложное позади, остается только вывести на один разъем шину i2c с питание 3.3 Вольта, а на другой подвести пины питания платы расширения. Но т.к у меня валялся "хвост" отрезанный когда-то от не рабочего блока питания маршрутизатора, и я не побрезговал им воспользоваться по прямому назначению.

Далее останется все подравнять, проверить качество монтажа, возможность замены платы NodeMCU, если это будет необходимо при эксплуатации и самое главное, дважды проверить, что и куда припаяно. Мои кривые руки и невнимательность уже наказывали меня, а т.к ждать новые запчасти долго, повторять не хочется.

Общий вид получился таким
А вот как все выглядит в боевых условиях. Кстати, могу предложить идею с помещением в бокс мешочка содержащий впитывающий влагу гель, они часто встречаются в коробках с обувью. Если все герметично, то он впитает остатки влаги, а если нет, то лишним уж точно не будет.

Требования (!!!Читать обязательно!!!)
Arduino IDE с поддержкой контроллера ESP8266, версия 2.6.2 (на версиях выше работоспособность не проверялась) Установленный модуль в Arduino IDE для загрузки файлов во Flash память микроконтроллера. Как установить описано тут. Для работы модуля загрузки файлов во Flash может понадобится последняя версия Python https://www.python.org/downloads/ Любой модуль на базе ESP8266 c Flash 4MB (3MB выделяем под SPIFFS) В параметрах выставляем lwIP версии 2 и максимальную производительность (lwIP v2 Higher Bandwidth) Сам архив с последней версией проекта. Скачать можно в конце статьи или по этой ссылке.   
Обязательные библиотеки (!!!Читать обязательно!!!)
ArduinoJson (v5.13.5) PubSubClient Ссылки на библиотеки сенсоров указаны в комментариях к коду. Сами библиотеки, как и обслуживаемые ими сенсоры, не являются обязательными. Вы вольны использовать любые датчики, как физические, так и программные.
Порядок установки (!!!Читать обязательно!!!)
Изучите файлы проекта с примерами использования тех или иных сенсоров. Все файлы с примерами начинаются с префикса users_, это users_auto.h, users_bme280_x2.h и т.д. Загрузите необходимые Вам библиотеки или используйте эти файлы как пример для добавления иных датчиков. Выставите необходимые настройки для контроллера в среде разработки Arduino IDE. Пример настроек указан на скриншоте выше. Обязательно убедитесь, что выбрано правильное распределение места для внутренней файловой системы, это значит, что 3MB должно быть выделено под файловую систему. Также проверяем, чтобы использовался lwIP v2 в режиме максимальной производительности (lwIP v2 Higher Bandwidth). Произведите загрузку программы с помощью среды разработки (Ctrl + U). Произведите загрузку содержимого каталога data в файловую систему. Меню/Инструменты/ESP8266 Sketch Data Upload Перед тем как устанавливать метеостанцию на постоянное место жительства, подтянуть GPIO-0 (пин D3 на плате NodeMCU) к питанию 3.3V. Во время данной процедуры, питание на контроллере должно отсутствовать. Первый запуск (!!!Читать обязательно!!!)
Помните, что вся конфигурация микроконтроллера производится исключительно через web интерфейс. Никаких изменений значений тех или иных параметров в коде не требуется, а подобную практику будем считать плохим тоном.
И так, после запуска микроконтроллера он сразу перейдет в аварийный режим и поднимет собственную точку доступа с именем WeatherStation. Это нормальное поведение т.к подразумевается использование метеостанции в домашней беспроводной сети, ну а раз о ней пока ничего не известно, то и подключаться не к чему.
Подключитесь к данной сети с любого удобного устройства и перейдите в панель управления (для этого имеется соответствующая иконка, запутаться невозможно), контроллер будет доступен по адресу http://espws. local или http://192.168.4.1 При попытке входа в панель управления будет запрошено имя пользователя и пароль, по умолчанию admin/admin. После входа в панель управления перейдите в раздел "Основные настройки WiFi" и укажите имя и пароль Вашей домашней сети, а также, при необходимости, укажите пароль для подключения к точке доступа поднимаемой контроллером в аварийном режиме. Если все сделано правильно, то контроллер подключится к домашней сети в течении 5-и минут.
Если Ваша домашняя сеть скрыта, то после первоначальной настройки необходимо перезагрузить контроллер. Это необходимо из-за частичной поддержки работы со скрытыми сетями. После перезагрузки контроллер увидит Вашу сеть и запомнит её MAC адрес. Помните об этом если захотите сменить домашний маршрутизатор.
Хотите помочь проекту или спонсировать новый?
Yandex.Money PayPal.me Файлы
 

Метеостанция на Uno и Slot Shield / Амперка

Умение работать с датчиками температуры и влажности пригодится для домашней автоматизации, в умных саунах, теплицах и банях. Да и просто узнать температуру за окном не вставая с дивана всегда приятно. Какие сенсоры выбрать, как спроектировать домашнюю метеостанцию и как превратить её в настоящий погодный компьютер? На эти вопросы поможет видео о метеопроектах на Arduino Uno.

На этой странице приведены компоненты, которые помогут собрать пять гаджетов из него:

Arduino Uno

Сердце мира Arduino: компьютер размером с ладонь на базе процессора с частотой 16 МГц и памятью 32 КБ

2 140 ₽

Troyka Slot Shield v2

Плата для удобного и компактного подключения Troyka-модулей без проводов

580 ₽

Метеостанция для записи температуры, атмосферного давления и влажности [Амперка / Вики]

// библиотека для работы I²C
#include <Wire. h>
// библиотека для работы с метеосенсором
#include <TroykaMeteoSensor.h>
// Подключаем библиотеку для работы с дисплеем
#include <QuadDisplay2.h>
// библиотека для работы с модулями IMU
#include <TroykaIMU.h>
// библиотека для работы с протоколом 1-Wire
#include <OneWire.h>
// библиотека для работы с датчиком DS18B20
#include <DallasTemperature.h>
// библиотека для работы с SPI
#include <SPI.h>
// библиотека для работы с SD-картами
#include <SD.h>
 
// сигнальный пин датчика DS18B20
#define ONE_WIRE_BUS 5
// даём разумное имя для CS пина microSD-карты
#define SD_CS_PIN  8
 
// создаём объект для работы с метеосенсором
TroykaMeteoSensor meteoSensor;
// создаём объект класса QuadDisplay, передаём номер пина CS, включаем режим работы с SPI
QuadDisplay qd(10, true);
// создаём объект для работы с барометром
Barometer barometer;
// создаём объект для работы с библиотекой OneWire
OneWire oneWire(ONE_WIRE_BUS);
// создадим объект для работы с библиотекой DallasTemperature
DallasTemperature sensor(&oneWire);
 
// перечисляем имена операций, которые мы будем выводить на дисплей
enum {
  SAVE_SD,    // имя для операции, которая записывает на SD данные
  IN,         // имя для операции, которая выводит на дисплей надпись "In"
  TEMP_IN,    // имя для операции, которая выводит на дисплей температуру с метеосенсора
  CEL,        // имя для операции, которая выводит на дисплей символ °C
  HUM_IN,     // имя для операции, которая выводит на дисплей влажность с метеосенсора
  PPM,        // имя для операции, которая выводит на дисплей символ %
  BAR_IN,     // имя для операции, которая выводит на дисплей давление с барометра в миллиметрах ртутного столба
  MER,        // имя для операции, которая выводит на дисплей надпись "Hg"
  EMPTY,      // имя для операции, которая очищает дисплей
  OUT,        // имя для операции, которая выводит на дисплей надпись "Out"
  TEMP_OUT    // имя для операции, которая выводит на дисплей температуру с датчика DS18B20
};
// создаем массив, в котором будем хранить последовательность операций
int chain[] = {
  IN,
  TEMP_IN,
  CEL,
  HUM_IN,
  PPM,
  BAR_IN,
  MER,
  EMPTY,
  OUT,
  TEMP_OUT,
  CEL,
  EMPTY,
  SAVE_SD
};
 
// создаем объект класса long для хранения счетчика
unsigned long respite_Time = 0;
 
// создаем объект для регулировки времени показа значений на экране
int slowdown_qd = 1000;
// создаем объект для хранения номера выполняемой операции
int number_qd = 0;
 
// создаем объект для записи данных на SD строкой
String  dataString = "";
 
void setup() {
  // инициализация дисплея
  qd. begin();
  // инициализируем метеосенсора
  meteoSensor.begin();
  // инициализация барометра
  barometer.begin();
  // инициализируем работу с датчиком DS18B20
  sensor.begin();
  // устанавливаем разрешение датчика от 9 до 12 бит
  sensor.setResolution(12);
  // инициализируем карту памяти
  SD.begin(SD_CS_PIN);
  // собираем верхнюю строчку с наименованием данных
  dataString = "TEMP_IN (ºC)\tHUM_IN (%)\tBAR_IN (mmHg)\tTEMP_OUT (ºC)";
  // вызываем функцию сохранения данных на SD
  saveSD(dataString);
}
 
void loop() {
  // запускаем бесконечный счетчик. Его содержимое будет обрабатываться с периодом равным slowdown_qd
  if (millis() - respite_Time > slowdown_qd) {
    // запускаем процесс, который будет выполнять операции согласно последовательности в chain
    switch (chain[number_qd]) {
      case IN:
        qd.displayDigits(QD_I, QD_n, QD_NONE, QD_NONE);
        break;
      case TEMP_IN:
        showData(meteoSensor.getTemperatureC());
        break;
      case CEL:
        qd. displayDigits(QD_NONE, QD_NONE, QD_DEGREE, QD_C);
        break;
      case HUM_IN:
        showData(meteoSensor.getHumidity());
        break;
      case PPM:
        qd.displayDigits(QD_NONE, QD_NONE, QD_DEGREE, QD_UNDER_DEGREE);
        break;
      case BAR_IN:
        qd.displayInt(barometer.readPressureMillimetersHg());
        break;
      case MER:
        qd.displayDigits(QD_NONE, QD_NONE, QD_H, QD_9);
        break;
      case EMPTY:
        qd.displayClear();
        break;
      case OUT:
        qd.displayDigits(QD_O, QD_u, QD_t, QD_NONE);
        break;
      case TEMP_OUT:
        // переменная для хранения температуры
        float temperature;
        // отправляем запрос на измерение температуры
        sensor.requestTemperatures();
        // выводим значение с датчика DS18B20 на экран
        qd.displayFloat(sensor.getTempCByIndex(0), 1);
        break;
      case SAVE_SD:
        // собираем в строку сначала температура с метеосенсора
        dataString = String(meteoSensor. getTemperatureC()) + "\t";
        // потом влажность
        dataString += String(meteoSensor.getHumidity()) + "\t";
        // давление
        dataString += String(barometer.readPressureMillimetersHg()) + "\t";
        // и температура с датчика DS18B20
        dataString += String(sensor.getTempCByIndex(0)) + "\t";
        // вызываем функцию сохранения данных на SD
        saveSD(dataString);
        break;
    }
    number_qd++;
    // проверяем не превысил ли номер операции количество операций
    if (number_qd > sizeof(chain) / sizeof(int) - 1)
      number_qd = 0;
    respite_Time = millis();
  }
}
 
// функция работы датчика температуры и влажности
void showData(float data) {
  // считываем данные с датчика
  int stateSensor = meteoSensor.read();
  switch (stateSensor) {
    // выводим показания на дисплей
    case SHT_OK:
      qd.displayFloat(data, 1);
      break;
    // выводим сообщение "Errd", если ошибка данных или сенсор не подключён
    case SHT_ERROR_DATA:
      qd. displayDigits(QD_E, QD_r, QD_r, QD_d);
    // выводим сообщение "ErrC", если ошибка контрольной суммы
    case SHT_ERROR_CHECKSUM:
      qd.displayDigits(QD_E, QD_r, QD_r, QD_C);
      break;
  }
}
 
// функция сохранения данных на карту памяти
void saveSD(String data) {
  // создаем файл для записи данных
  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  // если файл существует и открылся
  if (dataFile) {
    // сохраняем данные
    dataFile.println(data);
    // закрываем файл
    dataFile.close();
  } else {
    // если файл не доступен выводим ошибку на дисплей
    qd.displayDigits(QD_E, QD_r, QD_r, QD_S);
  }
}

Метеостанция на ардуино своими руками

Благодаря современным устройствам для измерения погодных условий вы можете всегда оставаться в курсе прогнозов на интересующую дату или время. Но в некоторых ситуациях вам необходимо измерять параметры окружающей среды здесь и сейчас.

Если десять – двадцать лет назад такую функцию выполняли громоздкие термометры и анемометры, сегодня замер температуры и влажности может производиться с помощью электронного устройства. Которое запросто поместиться в кармане или в дорожной сумке, благодаря чему вы сможете взять его с собой куда угодно или разместить в подвале, теплице, собственной мастерской, сушилке и других помещениях, где важно контролировать уровень температуры и влажности.

Что потребуется для изготовления портативной метеостанции?

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

Для этого вам понадобиться такой набор элементов:

  • Датчик температуры и влажности DHT11 – используется как основное приспособление для регистрации параметров окружающей среды;
  • Плата Arduino UNO – необходима для обработки получаемых с датчика данных и вывода их на цифровой дисплей;
  • Электронный дисплей – устройство для отображения измеряемых данных и перевода их в понятную для обывателей форму;
  • Макетная плата – предназначена для фиксации всех элементов и размещения на жестком основании, упрощает электрическое соединение всех деталей;
  • Соединительные провода со штекером или под пайку.

В данной ситуации выбран датчик DHT11, как одно из наиболее популярных средств фиксации температуры и влажности, помимо этого он хорошо подходит для всевозможных домашних проектов. В его состав входит резистивный элемент, определяющий влажность и термистор, определяющий температуру. Для передачи и преобразования сигнала используется микроконтроллер, в этом примере  мы установим Arduino, хотя вы можете использовать и другой.

Характеристики датчика DHT11

Рис. 1: общий вид датчика DHT11

Следует отметить, что данный датчик выбран как наиболее доступный и удобный в применении. Помимо этого он характеризуется следующими рабочими параметрами:

  • Напряжение питания от 3 до 5 В;
  • Потребляет от источника питания ток в 2,5 мА;
  • Способен измерять влажность окружающего пространства в пределах от 20 до 80%;
  • Температурные колебания измеряет в пределах от 0 до 50°С;
  • Погрешность при измерении влажности составляет 5%, а при измерении температуры в пределах 2%;
  • Частота измерений составляет одно измерение в секунду;
  • Габариты датчика составляют 12×15,5*5,5 мм.

Датчик DHT11 имеет пластиковый корпус и оснащается четырьмя контактами, такое количество выводов обеспечивает удобство подсоединения к устройствам обработки данных. В работе самодельной метеостанции все четыре вывода не используются, из них вам понадобится только три VCC, GND, DATA. Запитать датчик вы можете от любого источника с уровнем напряжения на выходе от 3 до 5 В.

В некоторых схемах можно встретить подключение резистора на 5 – 10 кОм к выводу передачи данных от датчика к микроконтроллеру. Следует отметить, что в данной ситуации этого делать не нужно, так как резистор уже входит в состав платы.

Рис. 2: модуль датчика DHT11

В интернете вы найдете как отдельные датчики, так и уже собранные в готовый модуль. Последние гораздо удобнее, поэтому предпочтительнее использовать их. Несмотря на то, что внешний вид модулей отличается, их принцип подключения идентичен, вам необходимо лишь обратить внимание на расположение выходов с датчика.

Подключение датчика к микроконтроллеру Arduino

От измерительного устройства к Arduino поступает цифровой сигнал, передающий сразу обе величины (температуру и влажность).

Передача данных от датчика к микроконтроллеру имеет такую последовательность:

  • От микроконтроллера Arduino к датчику поступает запрос путем смены сигнала с 0 на 1;
  • Получив запрос, DHT11 выдает Arduino информацию посредством изменения битовой кодировки;
  • При согласовании запроса и ответа от DHT11 на Arduino поступает отчет в размере 5 байт о состоянии температуры и влажности.

В передаваемом отчете из 5 байт первые два содержат информацию об уровне температуры, вторые два о влажности, а пятый представляет собой контрольную сумму уровня температуры и влажности во избежание ошибки измерений. Так как передача данных от DHT11 имеет свои особенности, для корректировки его взаимодействия с микроконтроллером были внесены изменения в программу. Для этого через компьютер или ноутбук необходимо записать на Arduino следующую программу:

Метеостанция на Arduino

Ниже представлена принципиальная схема самодельной метеостанции на основе датчика DHT11 и микроконтроллера Arduino.

Рисунок 3: Принципиальная схема метеостанции на Ардуино

Вышеприведенная схема метеостанции, которую вы можете собрать своими руками, будет отображать на мониторе информацию о температуре и влажности. Но с датчиком DHT11 на мониторе будет отображаться только целое число, а дробное значение обнуляется. В принципе, десятичные данные температуры и влажности для него совершенно неактуальны из-за низкой точности измерений. Но, если в вашей ситуации важно знать точную величину с определенным количеством знаков после запятой, датчик DHT11 придется заменить на более совершенный DHT22.

Следует отметить, что предложенная выше программа уже включает в себя возможность получения значения с дробной частью. Поэтому если возможности вашего монитора ограничены или вы не хотите загромождать его лишними нулями после запятой при использовании  датчика DHT11, вам придется немного изменить предложенную программу, дополнив ее функцией плавающей точки – dtostrf.

Почему важно знать индекс тепла?

Как вы могли заметить, погода на улице в разные  дни ощущается совершенно по-разному. Несмотря на то, что термометр показывает одну и ту же отметку, ощущаться одна и та же температура будет иначе. Это обусловлено значительным влиянием влажности на ваш организм.

Так, при повышении температуры воздуха в летний период организму требуется выделить куда больше влаги для компенсации перегрева от окружающей среды. При выделении влаги из организма (потообразовании) тело человека отдает тепловую энергию молекулам жидкости, которые испаряются, значительно облегчая процесс охлаждения. Но, при наличии в окружающей среде большого процентного содержания влаги, выделение молекул пота будет затруднено, из-за чего организм не сможет так просто охладиться.

Поэтому так важно контролировать соотношение температуры и влажности окружающей среды для маленьких детей и людей преклонного возраста. Их соотношение, в предложенном варианте домашней метеостанции, отображается тепловым индексом, который рассчитывается на основании величины температуры и влажности. Угроза получения теплового удара или перегрева особенно остро возникает при достижении отметки теплового индекса в 91 °F (32 °C) и выше. Благодаря предложенному варианту домашней метеостанции вы можете измерять и тепловой индекс, что поможет вам обезопасить себя и близких от случайного перегрева.

В приведенной схеме домашней метеостанции на мониторе данные распределяются следующим образом:

  • HiX (heat index) – тепловой индекс;
  • T – величина температуры окружающей среды;
  • H – процент влажности.

Рисунок 4: пример отображения данных на мониторе

Страница не найдена ⋆ Электрик Дома

Своими руками

Центральное отопление осенью начинает действовать поздно, в то время как весной оно рано отключается.

Альтернативные источники энергии

Централизованное обеспечение электрической энергии дает сбои, которые причиняют неудобства жильцам населенных пунктов. А к

Видео электрика

Если возникла необходимость отремонтировать имеющуюся розетку, или ее нужно просто перенести, то этот видео

Своими руками

На первый взгляд в наше время, даже дети знают, что такое электричество, как с

Электродвигатели

Плавный пуск асинхронного двигателя – это всегда трудная задача, потому что для запуска индукционного

Электродвигатели

Асинхронные двигатели получили широкое применение, потому что они малошумны и легки в эксплуатации. Особенно

Как это устроено

С тех пор, как научились добывать и пользоваться электричеством, люди перестали задаваться вопросом как

Своими руками

Ты сидишь в комнате, кто-то приходит, включает свет и становится слишком ярко. Если ты

Как это устроено

В статье про электрический ток приводилась аналогия с водопроводной трубой, здесь мы продолжим пользоваться

Теплый пол

Причин, почему не греет теплый пол электрический или делает это не в полную силу,

Электропроводка и соединения

Жизнь современного человека немыслима без многочисленных электроприборов, окружающих его на производстве, в общественных местах

Электродвигатели

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

Своими руками

Установка или ремонт розетки своими руками считается одним из самых востребованных домашних дел, которое

Электродвигатели

Существуют требования, которым должен отвечать запуск асинхронного двигателя. Во-первых, это отсутствие необходимости в использовании

Бытовые электроприборы

Чем дальше вы живете от трансформаторной подстанции, тем меньший вольтаж можно замерить в розетках

Электродвигатели

С точки зрения регулирования скоростью вращения электродвигателей, интересно уравнение для электромеханических характеристик, соответствующее Второму

Бытовые электроприборы

Одну часть электрических приборов включают на время, другую – оставляют подключенной к сети всегда.

Электропроводка и соединения

В XX веке все электросчетчики считали потребляемую энергию единственным образом. Сегодня появились счетные устройства,

Светодиодные ленты

Разноцветные светодиодные ленты способны не только осветить помещение, но и украсить его. Чтобы можно

Теплый пол

В домах и квартирах все чаще и чаще используются теплые электрические полы. Технология укладки

AlexGyver/MeteoClock: Домашняя метеостанция на Arduino

Описание проекта

Крутая домашняя метеостанция на Arduino с кучей датчиков, часами и большим дисплеем Страница проекта на сайте: https://alexgyver. ru/MeteoClock/

Особенности:
  • Большой дешёвый LCD дисплей
  • Вывод на дисплей:
    • Большие часы
    • Дата
    • Температура воздуха
    • Влажность воздуха
    • Атмосферное давление (в мм.рт.ст.)
    • Углекислый газ (в ppm)
    • Прогноз осадков на основе изменения давления
  • Построение графиков показаний с датчиков за час и сутки
  • Индикация уровня CO2 трёхцветным светодиодом (общий анод/общий катод, настраивается в прошивке)
  • Переключение режимов сенсорной кнопкой
  • В версиях выше 1.5 сделано автоматическое регулирование яркости дисплея и светодиода. Смотрите новую схему

Папки

ВНИМАНИЕ! Если это твой первый опыт работы с Arduino, читай инструкцию

  • libraries - библиотеки проекта. Заменить имеющиеся версии
  • firmware - прошивки для Arduino
  • schemes - схемы подключения компонентов

Схемы

Материалы и компоненты

Ссылки оставлены на магазины, с которых я закупаюсь уже не один год

Первые ссылки - в основном магазин Great Wall, вторые - WAVGAT. Покупая в одном магазине, вы экономите на доставке!

Дополнительно:

Вам скорее всего пригодится

Как скачать и прошить

  • Первые шаги с Arduino - ультра подробная статья по началу работы с Ардуино, ознакомиться первым делом!
  • Скачать архив с проектом

На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

  • Установить библиотеки в
    C:\Program Files (x86)\Arduino\libraries\ (Windows x64)
    C:\Program Files\Arduino\libraries\ (Windows x86)
  • Подключить внешнее питание 5 Вольт
  • Подключить Ардуино к компьютеру
  • Запустить файл прошивки (который имеет расширение .ino)
  • Настроить IDE (COM порт, модель Arduino, как в статье выше)
  • Настроить что нужно по проекту
  • Нажать загрузить
  • Пользоваться

Настройки в коде

RESET_CLOCK 0       // сброс часов на время загрузки прошивки (для модуля с несъёмной батарейкой).  Не забудь поставить 0 и прошить ещё раз!
SENS_TIME 30000     // время обновления показаний сенсоров на экране, миллисекунд
LED_MODE 0          // тип RGB светодиода: 0 - главный катод, 1 - главный анод

// управление яркостью
BRIGHT_CONTROL 1      // 0/1 - запретить/разрешить управление яркостью (при отключении яркость всегда будет макс.)
BRIGHT_THRESHOLD 350  // величина сигнала, ниже которой яркость переключится на минимум (0-1023)
LED_BRIGHT_MAX 255    // макс яркость светодиода СО2 (0 - 255)
LED_BRIGHT_MIN 10     // мин яркость светодиода СО2 (0 - 255)
LCD_BRIGHT_MAX 255    // макс яркость подсветки дисплея (0 - 255)
LCD_BRIGHT_MIN 10     // мин яркость подсветки дисплея (0 - 255)

BLUE_YELLOW 1       // жёлтый цвет вместо синего (1 да, 0 нет) но из за особенностей подключения жёлтый не такой яркий
DISP_MODE 1         // в правом верхнем углу отображать: 0 - год, 1 - день недели, 2 - секунды
WEEK_LANG 1         // язык дня недели: 0 - английский, 1 - русский (транслит)
DEBUG 0             // вывод на дисплей лог инициализации датчиков при запуске.  Для дисплея 1602 не работает! Но дублируется через порт!
PRESSURE 1          // 0 - график давления, 1 - график прогноза дождя (вместо давления). Не забудь поправить пределы гроафика
CO2_SENSOR 1        // включить или выключить поддержку/вывод с датчика СО2 (1 вкл, 0 выкл)
DISPLAY_TYPE 1      // тип дисплея: 1 - 2004 (большой), 0 - 1602 (маленький)
DISPLAY_ADDR 0x27   // адрес платы дисплея: 0x27 или 0x3f. Если дисплей не работает - смени адрес! На самом дисплее адрес не указан

// пределы отображения для графиков
TEMP_MIN 15
TEMP_MAX 35
HUM_MIN 0
HUM_MAX 100
PRESS_MIN -100
PRESS_MAX 100
CO2_MIN 300
CO2_MAX 2000

FAQ

Основные вопросы

В: Как скачать с этого грёбаного сайта?
О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

В: Скачался какой то файл .zip, куда его теперь?
О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.

В: Я совсем новичок! Что мне делать с Ардуиной, где взять все программы?
О: Читай и смотри видос http://alexgyver.ru/arduino-first/

В: Вылетает ошибка загрузки / компиляции! О: Читай тут: https://alexgyver.ru/arduino-first/#step-5

В: Сколько стоит?
О: Ничего не продаю.

Вопросы по этому проекту

Полезная информация

Проект метеостанции

Arduino - Обзор

Обзор

В этом проекте мы собираем метеостанцию ​​с использованием различных датчиков. Используемая платформа является Плата Arduino (Freetronics EtherTen) со встроенным Ethernet. Это обеспечит связь с датчиком вместе с предоставленным источником питания. по POE (Power Over Ethernet).

По мере работы над проектом мы будем подключать различные датчики.В этом процессе мы создаем эскиз программного обеспечения, который запустит метеостанцию.

Мы также можем использовать соединение Wi-Fi для передачи данных. Однако для этого потребуется альтернативная мощность источник, такой как солнечная панель и аккумулятор. Мы добавим WIFI на более позднем этапе.

По завершении проекта будут доступны следующие данные:

  • Внешняя температура (DS18B20)
  • Внутренняя температура (BME280)
  • Влажность (BME280)
  • Барометрическое давление (BME280)
  • Дождемер (Hydreon RG-ll)
  • Скорость ветра (анемометр Дэвиса)
  • Направление ветра (анемометр Дэвиса)

Для помощи в процессе тестирования были включены два светодиода.Один из них указывает на то, что на блок контроллера подается питание. Это привело подключен к входу 12 В через резистор. Другой светодиод используется, чтобы указать, когда данные передаются на удаленный сервер.

Плата Arduino и BME280 будут установлены внутри контейнера, сделанного из 100-миллиметровой трубы ПВХ. Фактически контейнер и Ветрозащитный экран был сделан из обычных сантехнических и садовых материалов, которые можно купить в местном магазине бытовой техники.В качестве альтернативы некоторые из материалы можно получить как остатки со стройплощадок.

Данные в реальном времени с метеостанции Arduino

Нажмите кнопку ниже, чтобы просмотреть данные тестовой метеостанции в реальном времени. Станция расположена в Перте, Западная Австралия,

.

Проект

Проект разбит на множество частей. Мы подключаем каждый датчик и разрабатываем программное обеспечение по мере подключения каждого датчика к Ардуино.Программное обеспечение, которое мы используем, основано на руководствах по подключению для каждого датчика и библиотеке программного обеспечения для этого датчика. Когда-то все Датчики и программное обеспечение рассматриваются, у нас есть раздел по установке Arduino и датчиков в контейнер.

Примечание 1: метеостанция питается от 12 В постоянного тока. Затем он подается на понижающий преобразователь постоянного тока в постоянный, который принимает входное напряжение 12 В и выходное напряжение 9 В. Затем 9V подается на Плата Arduino.

Примечание 2: DS18B20 требует подтягивающего резистора 4 кОм, который здесь не показан.

Примечание 3: Hydreon RG-11 требует 12 В, которое мы получаем от штекера 12 В постоянного тока. Для этого датчика также требуется 2 резистора.

Примечание 4: Анемометр Дэвиса использует интересную цветовую схему проводки. Будь осторожен. Показанные здесь цвета соответствуют поставляемому кабелю. с анемометром. Для анемометра требуется резистор 4 кОм, который здесь не показан.

Датчики, выбранные для этого проекта, основаны на методе интерфейса, который они используют, и доступных входах на Arduino.Есть смесь цифровых входов и один аналоговый вход. У нас также есть датчик, для которого требуется интерфейс I2C. Входы следующие:

  • Внешняя температура (DS18B20) - (D9) Цифровой вход 9 (используется протокол связи Далласа)
  • Температура, влажность, барометрическое давление (BME280) - (A4 и A5) Интерфейс I2C с использованием A4 и A5
  • Дождемер (Hydreon RG-ll) - (D3) Цифровой вход 3 - прерывание разрешено
  • Скорость ветра (анемометр Дэвиса) (D2) Цифровой ввод 2 - прерывание разрешено
  • Направление ветра (анемометр Дэвиса) (A3) Аналоговый вход

Требуется оборудование

В метеостанции используются оборудование и датчики, которые можно приобрести у различных поставщиков.Оборудование, используемое для этой метеостанции выглядит следующим образом:

  • Плата EtherTen Freetronics
  • Щит Freetronics
  • Температура (DS18B20) - Adafruit Waterproof DS18B20 PN:
  • Температура, влажность, барометрическое давление (BME280) - Adafruit BME280 PN:
  • Дождемер (Hydreon RG-ll)
  • Анемометр ветра (Дэвис)

Клеммный щиток

Хотя метеостанцию ​​можно подключить и без нее, пользоваться ею намного проще.На клеммном экране имеются винтовые клеммы, которые Обеспечьте надежное подключение соединительных проводов к Arduino. Есть много типов клеммных щитков, доступных из нескольких поставщики. Здесь используется клеммный щиток Freetronics.

Соединительные провода можно вставить и прикрутить к клемме. Мы использовали наконечники и обжали ими провод. Это позволяет надежный винт в соединении.Они также обеспечивают защиту многожильного провода.

Блок питания

Для питания Arduino и ряда датчиков нам нужно 12 В постоянного тока. Hydreon RG-11 требует 12 В, однако для всего остального оборудования требуется только 5 В. К Чтобы получить питание на метеостанцию, мы собираемся подключить 12 В через кабель Ethernet. Поскольку Arduino Ethernet работает только на 10 МБ / с нам требуется только 2 пары из 4 пар проводов в кабеле Ethernet.Таким образом, это позволяет нам использовать другие неиспользуемые пары. Бежать питание через этот кабель мы будем использовать только 1 пару. Для получения дополнительных сведений о передаче питания через Ethernet ознакомьтесь со следующим руководством.

Мы могли бы запитать плату Arduino, используя 12 В постоянного тока, но при этом стабилизатор напряжения будет работать на максимальном входном напряжении. Он должен преобразовать 12 В в 5 В. Большая часть падения напряжения преобразуется в тепло, из-за чего регулятор сильно нагревается.Чтобы избежать этого, мы использовали понижающий преобразователь напряжения, который принимает 12 В и выдает 9 В. Это регулируется с помощью синей подставки на доске. (Изображение не в масштабе)

Следующий шаг

Во второй части этого проекта мы собираемся подключить датчик температуры DS18B20 и запустить эскиз метеостанции Arduino с код для этого датчика.

Open Weather Station - метеостанция с открытым исходным кодом arduino

Открытая метеостанция (OWS) - это решение для самостоятельной работы с метеостанцией, которое должно быть доступным, стабильным, простым в сборке и тестировании в реальных условиях.Измеряйте, отслеживайте, храните данные за месяцы и отправляйте их на свой сервер, а также в Wunderground, Thingspeak, Windguru или OpenWeatherMap через Wi-Fi или GPRS / GSM / 4G. Он развился на основе других подходов, которые я тестировал и использовал в полевых условиях с конца 2012 года по сегодняшний день

англ. Франсиско Клария

Взгляните на обучающие материалы Youtube, которые проведут вас через все этапы подготовки станции 🙂

Получите доступ к последней стабильной версии отсюда (рекомендуется):

Чтобы получить доступ к самой последней (еще не полностью протестированной) версии проекта, перейдите в ветку разработки здесь:

Приложение Open Weather Station (только для Android) готово к использованию бесплатно, просто установите его из Google Play, как любое другое приложение. Подробнее о приложении здесь

OWS каждую минуту генерирует следующую информацию:

  • скорость ветра (м / с)
  • Направление ветра (угол)
  • порыв ветра (м / с)
  • Направление порыва ветра (угол)
  • дождь (мм)
  • температура (Cº)
  • абсолютное атмосферное давление (Паскаль)
  • относительная влажность (%)
  • Окружающий свет (люкс)

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

Модуль Arduino Uno считывает данные с датчиков и каждую минуту отправляет полезную нагрузку данных через Bluetooth на подключенное устройство. «Подключенное устройство» - это Android-смартфон, на котором запущено приложение, которое получает эту информацию, сохраняет ее в памяти, отображает данные на экране и, при необходимости, может отправлять измерения во внешнюю службу, используя готовые предустановки, поддерживающие Wunderground, Thingspeak. , Windguru, OpenWeatherMap или другой пользовательский облачный сервис по вашему выбору через Wi-Fi и / или мобильную сеть - это одно из основных преимуществ использования смартфона.Вы также можете написать программу Raspberry Pi для подключения к Arduino через Bluetooth для получения данных, если приложение Android вам не подходит (на данный момент реализация Pi не входит в объем проекта).

Далее вы можете узнать больше о концепциях, лежащих в основе этой реализации. В противном случае щелкните здесь, чтобы перейти к инструкциям по сборке.

Перед текущим подходом я запрограммировал и протестировал другие альтернативы, такие как: raspberry, pic, arduino + wifi shield, arduino + ethernet shield, arduino + GPRs shield, arduino uno + arduino mega, платы Wi-Fi, маршрутизаторы, интегрированный arduino с sd / microsd модули и т. д. и т. д. и, наконец, текущий подход оказался наиболее эффективным для моих целей:

Доступный

Я попытался сделать цену как можно более низкой, чтобы это не было препятствием, особенно для тех, кто находится в странах, где электроника дорогая, в настоящее время общая стоимость составляет от 300 до 500 долларов США, включая датчики, смартфон, жилье и т. Д., В зависимости от вашего местоположения и в основном смартфон вы получаете

Компактный и непривлекательный для взлома

Обычно станция оказывалась на крыше, в башне и т. Д. От кого-то, кто разрешил мне установить устройство, поскольку она очень компактна, что делает ее менее привлекательной для воров, проще в установке, лучше выглядит, а такие элементы, как ветер, дождь, Град нанесет меньший урон.Кроме того, поскольку модуль arduino подключается через Bluetooth, смартфон, к которому он подключен, можно разместить в более безопасном месте, например, внутри дома, чтобы предотвратить кражу.

Простота и повторяемость сборки

Некоторые решения, которые я оценивал раньше, включали в себя много испытаний, предварительную настройку или калибровку, сложную сборку или даже трудности с получением деталей для КАЖДОЙ станции, которую мне пришлось построить, текущий подход OWS значительно снижает эту головную боль

Wi-Fi и сеть сотовой связи

Используя смартфон на базе Android, у меня есть возможность подключаться через Wi-Fi и сотовую сеть по мере необходимости, чтобы постоянно обновлять внешние службы в облаке.И даже более того, если соединение Wi-Fi потеряно, оно автоматически переключится на сотовую сеть без каких-либо проблем, никаких AT-команд и странных рукопожатий для достижения простого HTTP-соединения…

Потери мощности

Электричество уходит много раз, особенно во время штормов: модуль Arduino может работать около дня с аккумулятором на 5000 мАч, а в мобильном телефоне уже есть батареи, поэтому, в зависимости от модели, он будет работать, вероятно, в течение дня или около того. тоже, при этом все еще имея возможность отправлять данные, если сотовая сеть работает (Wi-Fi, вероятно, умрет в этом сценарии)

Стабильность программного обеспечения

Программное обеспечение модуля

Arduino действительно надежное, если оно перезагружается, оно будет перезапущено с нуля без каких-либо проблем, я даже добавил сторожевой таймер, чтобы он перезагружался, если по какой-то причине какой-то процесс занимает более 4 секунд.В этом отношении я долгое время тестировал экраны SD, Ethernet, Wi-Fi и георадары, и ВСЕ они зависают через несколько недель или даже меньше, требуя ручного сброса, а в случае SD / памяти мне даже нужно было извлеките карту и вставьте ее обратно… С другой стороны, после длительных испытаний в условиях дикой природы я обнаружил, что Android - это как скала, а смартфоны (например, мото E / moto G) обладают потрясающей выносливостью, они могут работать при температурах ниже 0Cº и выше 50Cº. , возникают повторяющиеся потери питания (до полного разряда батареи), а также потеря связи без зависания.

Визуализация и диагностика данных

Приложение позволяет одновременно выполнять роль автономного экрана визуализации или при выполнении новой установки или обслуживания в полевых условиях, чтобы увидеть, что происходит. Иногда мне нужно убедиться, что OWS работает должным образом, особенно во время новой установки или обслуживания, и большую часть времени я выполняю эту задачу в одиночку, в башне или на крыше, где нецелесообразно брать с собой ноутбук, поэтому я имею Arduino Модуль, подключенный через Bluetooth, упрощает диагностику, а с приложением, запущенным на смартфоне, визуализация очень проста, удобна, и мне не нужно передавать данные во внешнюю службу, чтобы диагностировать, работает ли она… все на экране

Журнал и хранилище данных

Как упоминалось ранее, добавление памяти к модулю Arduino было одной из причин, увеличивающих требования к обслуживанию решения, поскольку SD зависает и EEPROM изнашивается, не говоря уже о том, что хранение и извлечение больших объемов данных (много дней по 1 образцу на каждый минута) - медленный и сложный процесс для правильной обработки Arduino.По этой причине модуль arduino хранит образцы в течение примерно 15 минут (настраивается), что является временем, которое в конечном итоге может потребоваться Android для перезапуска, если он по какой-то причине был отключен, а затем приложение Android обрабатывает регистрацию данных, визуализацию и загрузку более эффективно. и стабильный способ, в то же время позволяющий хранить большие периоды времени.

Сокращенное обслуживание

Все сводится к тому, чтобы максимально сократить внедрение и обслуживание, поскольку большинство установленных мною станций расположены в удаленных местах, где мне нужно запросить доступ к владельцу, и все должно быть сделано как можно быстрее

Почему Ардуино?

Основные причины, по которым я решил использовать Arduino:

  • широкое распространение
  • огромное сообщество
  • документация
  • примеров везде
  • доступных библиотек для решения общих задач
  • низкая цена
  • доступен во многих странах
  • запитать Arduino легко и удобно (например,грамм. напрямую от USB power bank)
  • Датчики питания
  • очень просты, поскольку они имеют регулируемые выходы 3,3 В и 5 В, которые могут подавать до 150 мА (от 3,3 В) или 400 мА (от 5 В) при подключении через USB
  • Потребляемая мощность
  • на контакт позволяет 20 мА с максимумом 40 мА и 200 мА в сумме Итог, я думаю, что это упростит, если вы хотите изменить, расширить или улучшить текущее решение модуля Arduino
Модуль

Arduino подключается к приложению Android через Bluetooth.Приложение можно бесплатно скачать с Google Play

.

Некоторые из основных функций приложения OpenWeatherStation:

  • подключиться к модулю OWS, просмотреть и сохранить данные,
  • хранить образцы до 60 дней,
  • визуализировать графики в реальном времени,
  • доступ к историческим данным по дате и временным интервалам,
  • настроить до 2 серверов для загрузки данных о погоде,
  • настройте все общие пользовательские настройки API или используйте предварительно настроенный сервер
  • предварительно настроенных серверов доступны для WindGuru, Wunderground, Thingspeak и OpenWeatherMap
  • экспорт сохраненных данных в локальный файл (json)
  • отправить экспортированный файл данных по электронной почте
  • автоматическое переключение с Wi-Fi на сотовые данные, если в Wi-Fi нет интернета

Первоначальная настройка приложения

Чтобы начать работу, выполните следующие действия (для этого также есть видеоурок):

  • После загрузки приложения первое, что нужно сделать, это подключить его к OWS bluetooth.Зайдите в «Модуль OWS» в левом меню
  • Если вы не подключили Bluetooth, щелкните значок в правом верхнем углу, чтобы открыть настройки Bluetooth и выполнить сопряжение устройства.
  • После сопряжения вернитесь в приложение и обновите список устройств.
  • Из списка устройств выберите то, к которому вы хотите подключиться, и установите его как устройство OWS.
  • Вы можете проверить пакеты, полученные от модуля OWS, открыв монитор данных
  • При отправке данных в удаленную службу вы можете включить «Предотвратить LieFi» (вам необходимо включить как Wi-Fi, так и сотовую передачу данных)
    • В ситуации, когда соединение Wi-Fi работает, но нет Интернета, Android не будет автоматически переключаться на сотовые данные, в этом сценарии, если вы включили «Предотвратить LieFi», приложение отключит Wi-Fi и будет использовать сотовые пакеты данных до тех пор, пока Wi-Fi Интернет не будет назад, и приложение снова включит Wi-Fi... да, знаю ... пожалуйста: P
  • Все остальные настройки говорят сами за себя.

Если вы используете устройство Android для телеметрии, вы можете выполнить рутинг своего устройства, а также установить приложение удаленной перезагрузки (https://play.google.com/store/apps/details?id=ar.com.axones. удаленная перезагрузка). Это приложение будет действовать как сторожевой таймер, позволяя перезагружать Android удаленно с помощью SMS или с помощью конечной точки URL, чтобы все можно было начать заново.

Подключение других устройств

Поскольку модуль считывания Arduino передает данные каждую минуту, вы можете создать собственное решение, которое подключается к нему через Bluetooth и обрабатывает данные по своему усмотрению вместо использования предлагаемого приложения для Android.Например, реализация Raspberry может быть отличной альтернативой для достижения этой цели, или вы можете написать приложение для Windows 10 и подключиться к модулю со своим компьютером, просто чтобы упомянуть пару примеров. Однако эти альтернативы пока выходят за рамки текущего проекта.

Далее я излагаю некоторые рекомендации, чтобы вы могли шаг за шагом создать свой собственный модуль.

Youtube обучающие программы

В следующих видеороликах я подробно расскажу, как построить станцию ​​от 0 до 100%:

Принципиальная схема

Перечень материалов

Ниже приводится полный список материалов, необходимых для реализации станции со всеми ее функциями.В следующих разделах я расскажу, как собрать модуль OWS arduino с учетом идеального сценария со всеми компонентами, однако модуль все равно будет работать, если вы не подключите все датчики, поэтому, если вы хотите только измерить скорость ветра, например вы можете просто игнорировать датчики дождя, света или давления.

Арт. Кол-во Использовать
Красный или зеленый светодиод 1 индикатор состояния
Резистор 18 кОм 2 анемометр и схема защиты от дождя
Резистор 12 кОм 2 анемометр и схема защиты от дождя
Резистор 10 кОм 1 флюгер
Резистор 220 Ом 1 индикатор состояния
2.Резистор 2 кОм 1 блютуз
Резистор 1 кОм 2 блютуз
двойной разъем RJ11 (пример) 1 анемометр, флюгер и дождевые тросы
диод 2 анемометр и схема защиты от дождя
Конденсатор 1 мкФ 2 анемометр и схема защиты от дождя
NPN транзистор 1 блютуз
Односторонняя медная печатная плата 5 см x 7 см или больше (пример) 1 экран печатной платы для соединения компонентов
Arduino Uno R3 вместе с кабелем USB 1 блок обработки
Bh2750 Датчик освещенности 1 светильник
BME280 датчик давления, температуры, влажности (входной сигнал 5 В) 1 давление, температура, влажность
HC05 Bluetooth-модуль 1 связь Bluetooth
WS 1080 Запасной датчик анемометра (пример) 1 скорость ветра
WS 1080 Запасной датчик ветрового стекла (пример) 1 угол направления ветра
Запасной датчик дождемера WS 1080 (пример) 1 дождь
Комплект стандартных штифтов с вилкой (пример) 1 соединительные провода датчика
Комплект стандартных штифтов с внутренней резьбой (пример) 1 подключение модуля bluetooth
Комплект перемычек между гнездом и гнездом (пример) 1 проводка датчиков
портативное зарядное устройство Power Bank на 5000 мАч или аналогичное, которое работает без вмешательства пользователя - для его работы НЕ нужно нажимать кнопку 1 OWS резервное питание для Arduino
15x10x10 см или аналогичный, пластиковый корпус для установки вне помещений 1 защитить модуль OWS от элементов
Модуль зарядного устройства с двумя USB-разъемами 110/220 В (пример) 1 Источник питания USB OWS
Кабель питания 110/220 В (пример) 1 мощность
Анемометр WS 1080 и пластиковая опора флюгера (пример) 1 опора для датчиков ветра
WS 1080 пластиковая опора для дождемера (пример) 1 поддержка датчиков дождя

Пожалуйста, помните, что я включил все компоненты, необходимые для полной сборки модуля OWS Arduino, вы можете приобрести только те, которые связаны с датчиками, которые вы хотите реализовать, или даже создать свои собственные, если вы хотите снизить некоторые затраты (например, пластиковые опоры ветра и дождя).Реализация кода Arduino по-прежнему будет работать, если подключены только некоторые датчики.


Пайка и электромонтаж

У меня есть подробные пошаговые галереи изображений, по которым вы можете использовать ссылку для создания OWS от нуля до 100%:

В следующих разделах я объясню, как собрать и расположить компоненты, чтобы вы могли начать строительство своей собственной станции.

Травление печатной платы

Существует несколько методов создания схемы платы: от рисования схемы вручную с помощью перманентного маркера до метода передачи тона (https: // www.youtube.com/watch?v=QQupRXEqOz4). Поскольку существует множество видео и руководств о том, как это сделать, я позволю вам выбрать метод по своему усмотрению. Если вы выберете метод передачи тона, помните, что очень важно использовать глянцевую бумагу фотографического качества.

В любом случае вы можете использовать этот лист PDF или использовать следующее изображение медной схемы для изготовления печатной платы. У обоих есть ссылка на размер на левой стороне (50 мм), которую вы можете использовать, чтобы убедиться, что принтер не изменил свои первоначальные размеры, а также вспомните, что схема уже была зеркалирована для вашего удобства.

Сверление печатных плат

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

Поверхность припоя

Используйте следующую схему и список компонентов, чтобы припаять каждый элемент к печатной плате. Следует иметь в виду пару вещей:

  • «Квадраты» на каждой стороне схемы платы с кодами D2, D3, D9, D10, D12, D13, A5, A4, A2, GND и VCC должны подключаться к соответствующим контактам Arduino Uno, поэтому платите Припаяйте штырьковые контакты вниз и прикрепите плату к Arduino.
  • bht, bmp, stat, vane, anem и pluv - это штыревые разъемы, которые должны быть обращены вверх (противоположная сторона, которую вы подключаете к Arduino), чтобы позже подключить датчики. Конечно, вы можете припаять датчики прямо к плате, но таким образом вы можете быстро заменить любой элемент и упростить расположение компонентов в корпусе.

    • синий - это гнездовой разъем для подключения HC05 позже, красные кружки обозначают, что на этих контактах не требуется никакого соединения, поэтому пайка на самом деле не требуется
  • обратите особое внимание на полярность конденсаторов и направление диодов, как показано на схеме.Я припаял их на верхней стороне, чтобы было легче показать, как я это сделал, в пошаговой галерее, но было бы лучше припаять их на противоположной стороне, если вы хотите получить более красивую плату.

  • Штыри для пайки

    • Вы можете закончить печатную плату после того, как все будет на месте и протестировано с небольшим слоем прозрачного лака для ногтей (лака) для защиты открытых контактов и уменьшения окисления.

Арт. код сборки
Резистор 18 кОм R6, R2
Резистор 12 кОм R8, R4
Резистор 10 кОм R9
Резистор 220 Ом R10
2.Резистор 2 кОм R11
Резистор 1 кОм R12, R13
Электролитический конденсатор 1 мкФ C1, C2
диод D1, D2
NPN транзистор НПН
штыревой разъем для подключения к arduino (припой вниз, к arduino uno) D2, D3, D9, D10, D12, D13, A2, A4, A5, GND, VCC
штыревой разъем для подключения к датчикам (припой вверх) anem, pluv, stat, bmp, bht, лопасть
гнездовые штырьки для подключения к bluetooth (припой вверх) синий

После того, как вы припаяли все элементы, самое время подключиться к датчикам.

Скорость ветра, направление ветра и дождь

Эти датчики, которые являются запасными частями для метеостанции WS1080, используют телефонную линию (штекер RJ11), которую мы будем подключать к модулю Arduino OWS с помощью двойного разъема RJ11.

Анемометр и флюгер используют один разъем RJ11, где 2 центральных контакта (красный и зеленый кабели) соединяют анемометр, а 2 внешних (черный и желтый) относятся к флюгеру. Датчик дождя использует свои центральные контакты RJ11 (красный и зеленый) для подключения к датчику.

Для подключения разъема RJ11 к модулю Arduino используйте перемычки с гнездом (отрежьте один из наконечников, чтобы оставить кабель открытым), как показано в пошаговых изображениях галереи.

Давление, температура и влажность

Эти три параметра получены с использованием BME280, имейте в виду, что во многих местах BMP280 продается так, как если бы это был BME, но BMP НЕ будет измерять влажность, поэтому перед покупкой обратите особое внимание на характеристики чипа. В идеале BME должна быть моделью со стабилизатором напряжения 5 В, хотя я тестировал модели с 3.Входной канал 3 В без проблем, поэтому, если вы не можете найти 5 В, вы можете попробовать с 3,3 В и посмотреть, что произойдет;)

Подключите микросхему BME с помощью перемычек «мама-мама» к контакту «папа» «bme» на плате модуля.

Свет

Количество света, измеренное в люксах, получено с помощью датчика Bh2750. Подключите микросхему с помощью перемычек «мама-мама» к контакту «папа» на плате модуля.

Bluetooth

Модуль arduino, как объяснялось ранее, отправляет данные с помощью модуля Bluetooth HC05.Чтобы подключить его к плате, просто подключите HC05 к «синим» контактам «мама», как показано в галерее.

Светодиод состояния

Светодиод состояния представляет собой просто красный или зеленый светодиод, который мигает, указывая на то, что станция работает. Поэтому рекомендую размещать светодиод там, где он виден. Подключите светодиод с помощью перемычки «мама» к штырю штекера «stat» на плате модуля (вспомните, как подключить самый короткий вывод светодиода к контакту платы, который подключен к земле).

Для питания модуля подключите USB-кабель Arduino Uno к портативному блоку питания, а блок питания - к одному из 2 доступных USB-выходов на модуле настенного зарядного устройства, оставшийся выход можно использовать позже для подключения USB-кабеля Android. для питания смартфона.Если вы не хотите использовать внешний аккумулятор, чтобы модуль оставался включенным в случае потери питания, вы можете просто подключить usb-кабель Arduino непосредственно к модулю настенной розетки. Внешний аккумулятор должен соответствовать следующим характеристикам:

Модель
  • должна иметь энергопотребление, которое может обеспечить зарядное устройство, поэтому, если вы покупаете устройство, которому требуется вход 2 А (2000 мА), используйте зарядное устройство с не менее , выходная мощность
  • блок питания ДОЛЖЕН работать без вмешательства пользователя, после подключения к сети, если отключится электричество, вы не сможете нажать любую кнопку, чтобы включить его
  • , наконец, он должен иметь возможность питать устройство, одновременно заряжая его, некоторые блоки питания не будут выводить мощность во время зарядки

Модуль настенного зарядного устройства подключается к сети 110/220 В для подачи питания на модуль.Я рекомендую подключать его с помощью кабеля питания 110/220 В, чтобы впоследствии было легче подключить его к любой розетке. Вы также можете сделать то же самое с помощью обычного настенного зарядного устройства USB, но не забудьте защитить его внутри корпуса, так как обычно зарядные устройства не будут работать на открытом воздухе в течение длительного периода времени. Я использовал этот подход, когда не смог найти достойного модуля зарядного устройства с двумя розетками с выходом 2A и вместо этого использовал обычное зарядное устройство с двумя USB-портами (с выходом 2A).

Пошаговые изображения галереи показывают, как я размещаю модуль и все элементы внутри наружного пластикового корпуса, хотя вы можете попробовать свой собственный подход.Только имейте в виду, что вам нужно защитить всю электронику от непогоды (например, сильного ветра, града, дождя и т. Д.). Солнечный свет очень вреден для пластика, не защищенного от ультрафиолета, поэтому старайтесь использовать материалы, подготовленные для использования на открытом воздухе.

Некоторые предпочитают использовать для этой цели экран Стивенсона (https://en.wikipedia.org/wiki/Stevenson_screen).

BME280 должен быть открыт (но защищен) для правильного измерения температуры, давления и влажности, поэтому не рекомендуется заключать его в герметичную коробку (аналогично Bh2750 для измерения освещенности).Также помните о тепле, которое прямые солнечные лучи будут выделять на корпус и датчики, так как это может значительно повысить температуру электроники. Я протестировал OWS под прямыми солнечными лучами в течение нескольких дней при внутренней температуре корпуса около 60ºC без каких-либо проблем.

Прежде всего, вам необходимо загрузить программу Arduino. Внутри папки проекта «arduino» вы найдете еще одну папку с названием «open-weather-station», в которой находится файл программы .ino. Кроме того, внутри папки «arduino» я поместил библиотеки, которые вам понадобятся для конкретных датчиков, включите эти библиотеки в ваш проект arduino (https: // www.arduino.cc/en/Guide/Libraries), и он должен быть готов к компиляции.

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

О программных константах Arduino

  • ENABLE_DEBUG_SERIAL_OUTPUT : если true, данные будут выводиться на последовательный монитор. Я рекомендую использовать его сначала, чтобы узнать, правильно ли он работает и датчики собирают данные.Вы можете отключить его для производства.

  • ARDUINO_AUTOREBOOT_MINUTES : по истечении заданного в этой константе количества минут, arduino автоматически перезагрузится и сбросит настройки чипа bluetooth (выключится и снова включится). Этот таймер можно перезапустить, отправив команду модулю.

  • Параметры калибровки : модуль станции выполнит внутреннее вычисление и отправит данные о скорости ветра и дожде на основе параметров калибровки по умолчанию, которыми можно управлять, изменяя следующие константы:

    • ANEMOMETER_SPEED_FACTOR , коэффициент чашечного анемометра, если вы не знаете это значение, оставьте его как
    • ANEMOMETER_CIRCUMFERENCE_MTS , длина окружности полного цикла, рассчитанная от центральной точки чашки
    • ANEMOMETER_CYCLES_PER_LOOP , сколько «отсчетов» генерирует анемометр в полном цикле, обычно это 2, но может быть 1 в зависимости от вашего датчика
    • RAIN_BUCKET_MM_PER_CYCLE , сколько мм дождя эквивалентно для каждого отсчета датчика
    • ЛОПАТКА_AD... , флюгер имеет набор резисторов, которые меняются в зависимости от направления ветра, Arduino передает 5 В через датчик и выполняет аналого-цифровое (A / D) преобразование значения в диапазоне от 0 до 1023 в зависимости при ориентации лопатки значение A / D изменится. Таким образом, значения VANE_AD… являются совпадающими числами для каждого из направлений и откалиброваны для флюгера ws1080. Когда значение A / D получено, самое близкое совпадающее значение VANE_AD… используется для назначения направления ветра.

Остальные константы говорят сами за себя.

Частичные и полные выборки данных

По умолчанию модуль будет отправлять частичные образцы ветра каждые 5 секунд, что полезно, например, для отображения большего количества данных о ветре «в реальном времени», а затем каждую минуту модуль отправляет все данные с усредненными образцами ветра, порывами, температурой и т. Д. Частичные выборки отправляются из функции «sendWindPartialSample», а полные выборки отправляются из функции «sendFullSamples».Данные каждого датчика разделяются разделителем (настроенным в константах), и каждая передача завершается новой строкой. Взгляните на эти функции в коде Arduino, чтобы понять, как образцы помечаются и отправляются. Я настоятельно рекомендую включить константу вывода отладки, чтобы вы могли видеть данные в мониторе последовательного вывода Arduino, в противном случае вам нужно будет подключиться через Bluetooth, чтобы увидеть какие-либо данные.

Подключиться к модулю OWS по bluetooth

Для подключения к модулю есть несколько альтернатив.Я не буду вдаваться в подробности о том, как выполнить сопряжение и подключение к устройству Bluetooth с вашего ПК, Mac, ноутбука, Iphone или устройства Android, поскольку существует множество руководств, которые объясняют это более подробно (тем не менее, в пошаговой галерее вы найдете найти несколько изображений, к которым я подключаюсь с помощью своего ПК и телефона Android).

Просто имейте в виду, что устройство Bluetooth, которое вы используете для модуля Arduino OWS, при обнаружении будет указано как HC05, и если для сопряжения с устройством запрашивается код, HC05 обычно использует 1234 или 0000.Если вы подключены через приложение Bluetooth для Android (например, https://play.google.com/store/apps/details?id=project.bluetoothterminal), например, или даже через Putty к ноутбуку, используя COM-порт Bluetooth (http: //www.instructables.com/id/Remote-Control-Bluetooth-Arduino-PuTTY/), вы увидите на своем экране ту же полезную нагрузку данных, которую вы видите в последовательном мониторе Arduino IDE (при условии, что флаг вывода отладки установлен на правда).

Отправка команд в модуль OWS

Вы можете отправлять команды (один символ ascii в верхнем регистре), чтобы модуль выполнял некоторые действия.Функция arduino под названием «readCmdFromBluetooth» реализует эту функцию. Например, позволяет:

  • символ R : перезапускает Arduino
  • символ T : сбрасывает таймер, который будет выполнять автоматическую перезагрузку Arduino каждые ARDUINO_AUTOREBOOT_MINUTES
  • символ S : позволяет модулю отправлять частичные образцы
  • символ Q : отключает модуль для отправки частичных выборок и будет отправлять только полные выборки каждую минуту
  • , символ L : отправить все измерения, хранящиеся в энергозависимой памяти модулей за последние WIND_AVG_MINUTE_LOG_SIZE минут (напомним, что этот журнал стирается после перезагрузки модуля и, возможно, был обнулен)

Добавить солнечную энергию ко всему решению на самом деле очень просто.Вам понадобится солнечная панель (панели) 12 В / 20 Вт и понижающий понижающий преобразователь постоянного тока с двойным выходом USB, который имеет входной диапазон от 9 до 30 В и выводит 5 В через разъемы USB.

Чтобы питать станцию ​​энергией солнечной панели, вам нужно только подключить кабель от панели к понижающему входу, а затем просто подключить станцию ​​к USB-портам. Наведите панель на солнце, и все готово. В Кордове, Аргентина (где я живу) панель 12 В / 20 Вт отлично работает, обеспечивая достаточно энергии даже в пасмурный день зимой.Посмотрите видеоурок.

Поскольку Google Play не разрешает другие приложения, требующие доступа по SMS, я загрузил apk прямо в репозиторий, чтобы вы могли вручную установить его при необходимости. ТОЛЬКО УПРАВЛЯЕМЫЕ УСТРОЙСТВАМИ С помощью этого приложения вы можете установить время дня, и приложение будет автоматически перезагружать Android каждый день. Или вы можете настроить текст, который при получении по SMS на устройство будет перезагружать его. В качестве альтернативы вы можете установить удаленный URL-адрес и интервал проверки связи, и если ресурс вернет настроенный текст, устройство перезагрузится.Это можно использовать в качестве сторожевого пса, когда Android используется в качестве устройства телеметрии, например, в проекте https://openweatherstation.com, для которого это приложение было изначально разработано. Используйте его на свой страх и риск.

Загрузить удаленную перезагрузку

https://github.com/panchazo/open-weather-station/blob/master/app/RemoteReboot.apk?raw=true

Проект еще действителен и используется. Несколько человек по всему миру успешно реализовали его, и я благодарю тех, кто прислал мне несколько поздравлений и фотографий об их реализации.Ваше здоровье!

Комплект интеллектуальной метеостанции Arduino

Описание

Полноразмерные метеостанции - это невероятно важные объекты, которые измеряют атмосферные условия и предоставляют нам полезную информацию, такую ​​как прогнозы погоды или предупреждения о стихийных бедствиях. Однако вам не обязательно покупать большое и дорогое оборудование, чтобы построить собственную метеостанцию. Часто интеллектуальной метеостанции Arduino более чем достаточно, чтобы предоставить вам не только доступ к данным об окружающей среде в реальном времени, но и понимание того, что эти данные означают!

Grove DHT20 представляет собой прямую модернизацию датчика DHT11 и обеспечивает точные измерения температуры и влажности в окружающей среде.Датчик идеально работает при температурах от -40 ℃ до 80 ℃ с точностью ± 0,5 ℃. Что касается влажности, то здесь можно достоверно считывать значения влажности с погрешностью менее 3%. Если вам требуются показания давления для вашего проекта, вы можете вместо этого выбрать Grove BME280.

Вы можете воспользоваться учебными пособиями и библиотеками, которые мы предоставили, чтобы легко начать работу:

Руководства по проекту:

Учебные ресурсы

Характеристики

  • Создание полноценной интеллектуальной метеостанции Arduino с интеллектуальными возможностями
  • Highly Accurate Grove DHT20, с ± 0.Точность 5 ℃ для температуры и ± 3% для влажности
  • Простая в использовании модульная экосистема Grove ускоряет процесс создания прототипов оборудования
  • Выберите один из двух высокопроизводительных микроконтроллеров ARM Cortex-M
    • Терминал Wio - интегрированная платформа разработки с ЖК-дисплеем, кнопками, возможностью беспроводного подключения и т. Д.
    • Вы также можете выбрать Seeeduino XIAO в качестве платы микроконтроллера - Ультра крошечный, компактный микроконтроллер, который помещается на кончике вашего пальца
  • Воспользуйтесь существующими проектами сообщества и учебными пособиями, чтобы легко создать свою интеллектуальную метеостанцию ​​Arduino

Приложения

  • Метеостанция
  • Мониторинг окружающей среды
  • Умный дескриптор погоды
  • Интеллектуальное прогнозирование погоды

Документация

Почему TinyML

Машинное обучение может быть простым и крошечным.

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

Строительство метеостанции Arduino

См. Страницу для текстового описания или выберите для просмотра полного изображения.

Эмма Чард
Исследования окружающей среды

I. Введение

Создание портативной метеостанции Arduino имеет множество применений.Он может предоставить более точные показания погоды как в вашем собственном доме, так и в удаленных районах по всему миру. Поскольку они очень просты в использовании, вы можете настроить их так, как захотите. У вас могут быть датчики температуры, влажности, часы реального времени и даже экран WIFI для беспроводного использования. Это может быть дешевый способ записи данных. Возможным вариантом его дальнейшего развития может быть выход на международный уровень и размещение нескольких метеостанций в отдаленных районах, которые не получают точных показаний погоды, что может оказаться важным применением.Эти метеостанции также открывают возможность обучения для студентов, которые заинтересованы в том, чтобы научиться программировать и собирать метеостанции, что в конечном итоге может помочь нашей планете.

II. Методы

  • Шаг 1. Заказ необходимых запчастей для метеостанции
  • Шаг 2: Закодируйте и подключите Arduino и подключите к компьютеру с программным обеспечением Arduino
  • Шаг 3. После успешного кодирования проверьте, правильно ли считываются данные
  • Шаг 4: Соберите метеостанцию ​​
  • Шаг 5: По завершении начните сбор данных вне помещений в различных климатических зонах и регионах
  • Шаг 6: Повторите шаг 5, чтобы собрать больше данных для более точного считывания

Данные аэропорта Бойсе

III.Результат

Мне удалось добиться от метеостанции точной записи данных. Мне удалось собрать данные о температуре и влажности. Я успешно закодировал датчики с помощью однокурсницы Сары Уонлесс и профессора Пэм Эйшлин. С их помощью мы смогли полностью построить метеостанцию, чтобы вывести ее на улицу. Я смог сравнить данные из данных о температуре в аэропорту Бойсе за определенный период времени и обнаружил, что показания температуры были очень похожими, если не одинаковыми.

IV. Вывод

Убедившись, что эта метеостанция дает точные данные, мы можем в будущем передавать их в районы, где показания погоды неточны, и дать людям возможность получать точные метеорологические отчеты, что может помочь улучшить их повседневную жизнь. Он также обеспечивает более дешевый способ записи данных о погоде
, что может оказаться огромным преимуществом для любого, кто решит использовать метеостанции Arduino.

Благодарности

Я хотел бы поблагодарить Сару Ванлесс и профессора Пэм Айшлин за помощь в кодировании Arduino, построение станции и помощь в сборе данных.

Метеостанция

DIY с Raspberry Pi, Arduino | uBeac

Последние несколько статей были посвящены домашним системам безопасности и домашнему мониторингу. Были учебные пособия, показывающие, как сделать дымовые извещатели и системы пожарной сигнализации, чтобы предупредить вас о том, как добраться до безопасного места. Также были инструкции о том, как сделать камеры видеонаблюдения для наблюдения за злоумышленниками и другими опасностями вокруг вашего дома. Хотя эта статья не учит вас, как защититься от горящих предметов или злоумышленников, она помогает вам решить, что вы можете сделать в этот день.Используя Raspberry Pi, Arduinos и ESP8266, мы покажем вам несколько самодельных метеостанций, которые вы можете сделать и использовать дома.

Интернет-сообщества - отличное место для поиска хороших руководств. и вдохновение для проектов, включая метеостанции. Мы собираемся изучите некоторые из них более подробно.

Конструкции

Сделать своими руками метеостанция, необходимое оборудование немногочисленное и дешевое. Как показывает этот проект метеостанции, Raspberry Pi , датчик атмосферного давления и высоты BMP280 , макет и некоторые перемычки провода все необходимое оборудование.Это простой и легкий способ определить погоду в вашем доме. Тем не мение, в этом проекте оборудование остается открытым, что не идеально для внешнего использования.

В рамках этого проекта персональной метеостанции изготовлен контейнер для защиты свое оборудование от природы и использовал Arduino , ESP8266 , и датчики, такие как датчик температуры и влажности DHT11 и a BMP180 Датчик атмосферного давления датчик plus разъемы, заголовки и резисторы. Этот дизайн был разработан для использования внутри помещений, чтобы проверьте состояние конкретной комнаты в доме.

Все эти датчики которые могут обнаруживать изменения окружающей среды, небольшие, дешевые и полезные для наших домашних хозяйств. метеостанции. Однако, если поиск каждого датчика занимает слишком много времени, попробуйте с использованием Raspberry Pi Sense HAT , дополнительной платы для Raspberry Pi . В его состав входят следующие датчики: гироскоп , акселерометр , магнитометр , температура , барометрическое , давление и влажность .Это Также имеется светодиодная матрица 8х8 RGB и пятикнопочный джойстик. Raspberry Pi Sense HAT - очень полезное и доступное дополнение для всех ваших проектов, стоимостью около 35 долларов США. Использование этого с Raspberry Pi позволит вам сделать самую простую метеостанцию, как этот дизайнер сделал со своим Make Мини-метеостанция с учебником Raspberry Pi. Все, что им было нужно, было два указанных аппаратных средства и некоторое программирование для завершения их метеостанция.

Солнечная энергия!

Можно сделайте еще один шаг и обеспечьте свою метеостанцию ​​возобновляемыми источниками энергии.Этот дизайнер сделал солнечную батарею Arduino Weather Станция, которая состоит из двух основных частей для функционирования, части, которая остается на открытом воздухе. для сбора данных, и часть, которая остается в помещении, чтобы получать эти данные. Во-первых, это модуль передатчика, который оставался снаружи, собирая данные о погоде с использованием температуры , влажности , осадков , и датчики барометрического давления . Эта часть будет питаться от солнечная энергия и беспроводная отправка данных. Вторая часть представляла собой приемный модуль, который получил данные и отобразил их в помещении.Этот проект полезен для удаленных районы, в которых нет точных данных о погоде из крупных городов.

Мониторинг всего

Не хуже солнечный дизайн, вы можете избавиться от модуля приемника и просто использовать свой компьютер для мониторинга модуля передатчика. Фактически, все вышеперечисленные проекты можно отслеживать через компьютер, планшет или даже телефон. Ты только необходимо войти на платформу IoT, которая может отображать ваши данные в удобном для чтения приборная панель. Здесь на помощь приходит uBeac, упрощающий использование ваших проектов.Благодаря своей мощной платформе IoT uBeac позволяет визуализировать тенденции на основе данных, которые вы Собраны метеостанции. Он позволяет настроить панель управления так, чтобы все, что душе угодно, даже предоставляя виджет Raw , который позволяет создавать собственные виджеты с помощью HTML. uBeac - это IoT-сервис, который вы можете легко получить руки, подписавшись с бесплатной учетной записью.

Узнать больше о том, что uBeac может для вас сделать, и ознакомьтесь с нашей платформой. Удачного подключения!

kjordahl / Arduino-Weather-Station: RF-приемник для метеостанции LaCrosse, с давлением и температурой в помещении

Получите данные датчика погоды La Crosse TX4 с помощью Arduino и отправьте их на последовательный (USB) порт.Также рассчитывает точку росы по текущему температуры и относительной влажности, а также записывает температуру в помещении от цифровой датчик DS1631 и барометрическое давление от бортового BMP085 датчик давления. 5.255

Моя высота 139 м.

Этот проект основан на приемнике метеостанции из книги Практическая Arduino от Джона Оксера и Хью Блемингса и использует часть их исходного кода, который можно найти на GitHub. Способствовать помощь в декодировании пакетов данных поступила со страницы Жан-Поля Рубела на Датчики Лакросса. Код датчика давления BMP085 основан на коде из Interactive Matter (используется и перелицензируется под лицензией GPL с разрешение).

Формула точки росы:

Лоуренс, М., Связь между относительной влажностью и температура точки росы во влажном воздухе: простое преобразование и приложения, Бюллетень Американского метеорологического общества , 86 , 225–233, DOI: 10.1175 / БАМС-86-2-225, 2005

Дополнительная информация на http://kjordahl.net/weather.html.

Эти программы выпущены под лицензией GPLv3. См. Файл КОПИРОВАНИЕ или http://www.gnu.org/licenses для получения подробной информации.

Келси Джордаль kjordahl @ alum.mit.edu

Отметка времени: <вс, 19 февраля, 14:15:26 EST 2012>

README.org
Этот информационный файл
README.txt
Версия ASCII, экспортированная из README.org
lacrosse.pde
Код Arduino
logserial.py
Простой скрипт Python для входа через последовательный порт и добавления отметки времени
plotweather.py
скрипт Python для построения и загрузки данных на веб-сайт
template_py.html
пустой файл HTML, используемый в качестве шаблона plotweather.py
seriallogrotate
сценарий оболочки для поворота файлов журнала последовательного порта (запускается cron демон)
logserial.conf
файл для / etc / init для запуска logserial.py автоматически (для демона выскочки, используемого Ubuntu и дистрибутивы Debian Linux)

Требуемое оборудование для этого проекта - платформа, совместимая с Arduino. с РЧ-приемником 434 МГц, подключенным к цифровому выводу 8, резистор 10 кОм на аналоговом контакте 1 и датчик давления BMP085, подключенный к аналоговым контактам 4 и 5.Совместимый датчик температуры 434 МГц (например, La Crosse TX4) также предполагается. Пожалуйста, см. Ссылки выше для получения подробной информации подробности подключения этих компонентов.

Скетч Arduino lacrosse.pde при загрузке в Arduino отправить вывод на последовательный порт USB подключенного компьютера. Для автоматическое ведение журнала и построение графиков, используйте включенные файлы (которые имеют был протестирован в системе Ubuntu 10.10). Скопируйте файлы logserial.py и plotweather.py - / usr / local / bin или другой каталог в вашем дорожка. HTML-шаблон template_py.html следует хранить в каталог, который будет обновлен статической веб-страницей и графиком (например, / home / user / html / weather ). Чтобы запускать скрипты автоматически, скопируйте logserial.conf в / etc / init и seriallog поверните в /etc/cron.weekly . Чтобы запускать сценарий построения каждые 15 минут, вы возможно, вы захотите отредактировать ваш файл user crontab следующим образом:

 1,16,31,46 * * * * / usr / local / bin / plotweather.py -u
 

Возможно, вам потребуется отредактировать сценарии на нужные пути для logging и HTML-файлы в вашей системе.

v1.1.1 (19 февраля 2012 г.)
Сценарий обновления журнала
v1.1 (25 апреля 2011 г.)
Замена датчика температуры в помещении на DS1631
v1.0.6 (19 февраля 2011 г.)
plotweather.py принимает необязательные аргументы; этот файл README переформатирован в Emacs org-mode
v1.0.5 (7.01.2011)
Добавить файлы и инструкции для автоматического каротаж и построение
v1.0.4 (15 декабря 2010 г.)
перейти на более надежный скрипт Python для построения графиков
v1.0.3 (3 сентября 2010 г.)
улучшить построение графиков, включая давление и лучший автоматический выбор диапазона
v1.0 (14 августа 2010 г.)
Выпуск полной версии
v0.9.9 (3 августа 2010)
Добавлена ​​поддержка датчика давления BMP085 на борту
v0.9.2 (18 апреля 2010 г.)
Обновление скриптов построения графиков для дневных максимумов и минимумов температуры (по Фаренгейту).
v0.9.1 (14 марта 2010 г.)
Добавить сценарии построения графиков по Гринвичу и шаблон HTML
v0.9 (9 марта 2010 г.)
Первоначальный выпуск сценария Arduino

Метеостанция Arduino с цветным TFT-дисплеем ST7735

/ *

* Метеостанция Arduino с цветным TFT-дисплеем ST7735 (128x160 пикселей) и датчиком барометрического давления, температуры и влажности

* BME280.

* Это бесплатное программное обеспечение БЕЗ ГАРАНТИЙ.

* https: // простая схема.com /

* /

#include // включить графическую библиотеку Adafruit

#include // включить библиотеку Adafruit ST7735 TFT

#include

#define TFT_RST 8 // Вывод TFT RST подключен к выводу 8 Arduino

#define TFT_CS 9 // Вывод TFT CS подключен к выводу 9 arduino

#define TFT_DC 10 // TFT Вывод постоянного тока подключен к выводу 10 Arduino

// инициализировать библиотеку TFT ST7735

Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST);

// определение адреса I2C устройства: 0x76 или 0x77 (0x77 - адрес библиотеки по умолчанию)

#define BME280_I2C_ADDRESS 0x76

Adafruit_BME280 bme280; // инициализировать библиотеку Adafruit BME280

void setup (void)

{

tft.initR (INITR_BLACKTAB); // инициализируем микросхему ST7735S, черная вкладка

tft.fillScreen (ST7735_BLACK); // заливка экрана черным цветом

tft.drawFastHLine (0, 30, tft.width (), ST7735_WHITE); // рисуем горизонтальную белую линию в позиции (0, 30)

tft.setTextColor (ST7735_WHITE, ST7735_BLACK); // установить цвет текста на белый и черный фон

tft.setTextSize (1); // размер текста = 1

tft.setCursor (4, 0); // перемещаем курсор в позицию (4, 0) пиксель

tft.печать ("ARDUINO + ST7735 TFT");

tft.setCursor (19, 15); // перемещаем курсор в позицию (19, 15) pixel

tft.print ("ПОГОДНАЯ СТАНЦИЯ");

// инициализировать датчик BME280

if (bme280.begin (BME280_I2C_ADDRESS) == 0)

{// ошибка подключения или неверный адрес устройства!

tft.setTextColor (ST7735_RED, ST7735_BLACK); // установить цвет текста на красный и черный фон

tft.setTextSize (2); // размер текста = 2

tft.setCursor (5, 76); // перемещаем курсор в позицию (5, 76) пиксель

tft.print ("Connection");

tft.setCursor (35, 100); // перемещаем курсор в позицию (35, 100) пиксель

tft.print ("Ошибка");

при этом (1); // оставаться здесь

}

tft.drawFastHLine (0, 76, tft.width (), ST7735_WHITE); // рисуем горизонтальную белую линию в позиции (0, 76)

tft.drawFastHLine (0, 122, tft.width (), ST7735_WHITE); // рисуем горизонтальную белую линию в позиции (0, 122)

tft.setTextColor (ST7735_RED, ST7735_BLACK); // установить цвет текста на красный и черный фон

tft.setCursor (25, 39); // перемещаем курсор в позицию (25, 39) пиксель

tft.print ("TEMPERATURE =");

tft.setTextColor (ST7735_CYAN, ST7735_BLACK); // установить цвет текста на голубой и черный фон

tft.setCursor (34, 85); // перемещаем курсор в позицию (34, 85) пиксель

tft.print ("HUMIDITY =");

tft.setTextColor (ST7735_GREEN, ST7735_BLACK); // установить цвет текста на зеленый и черный фон

tft.setCursor (34, 131); // перемещаем курсор в позицию (34, 131) пиксель

tft.print ("PRESSURE =");

tft.setTextSize (2); // размер текста = 2

}

// основной цикл

void loop ()

{

char _buffer [8];

// считываем температуру, влажность и давление с датчика BME280

float temp = bme280.readTemperature (); // получить температуру в ° C

float humi = bme280.readHumidity (); // получить влажность в%

float pres = bme280.readPressure (); // получить давление в Па

// напечатать температуру (в ° C)

if (temp <0) // if temperature <0

sprintf (_buffer, "-% 02u.% 02u", (int ) abs (temp), (int) (abs (temp) * 100)% 100);

else // температура> = 0

sprintf (_buffer, "% 02u.% 02u", (int) temp, (int) (temp * 100)% 100);

tft.setTextColor (ST7735_YELLOW, ST7735_BLACK); // установить цвет текста на желто-черный фон

tft.setCursor (11, 54);

tft.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *