Оглавление:

Создание внутреннего датчика качества воздуха для Интернета вещей без облака: 10 шагов
Создание внутреннего датчика качества воздуха для Интернета вещей без облака: 10 шагов

Видео: Создание внутреннего датчика качества воздуха для Интернета вещей без облака: 10 шагов

Видео: Создание внутреннего датчика качества воздуха для Интернета вещей без облака: 10 шагов
Видео: Одесса. НАЧАЛОСЬ! 2024, Июнь
Anonim
Создайте собственный датчик качества воздуха для Интернета вещей, облако не требуется
Создайте собственный датчик качества воздуха для Интернета вещей, облако не требуется
Создайте собственный датчик качества воздуха для Интернета вещей, облако не требуется
Создайте собственный датчик качества воздуха для Интернета вещей, облако не требуется
Создайте собственный датчик качества воздуха для Интернета вещей, облако не требуется
Создайте собственный датчик качества воздуха для Интернета вещей, облако не требуется
Создайте собственный датчик качества воздуха для Интернета вещей, облако не требуется
Создайте собственный датчик качества воздуха для Интернета вещей, облако не требуется

Качество воздуха в помещении или на улице зависит от многих источников загрязнения, а также от погоды.

Это устройство фиксирует некоторые общие и некоторые из наиболее интересных параметров с помощью 2 сенсорных чипов.

  • Температура
  • Влажность
  • Давление
  • Органический газ
  • Микрочастицы

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

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

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

Запасы

Все, что вам нужно для создания этого проекта, - это плата на базе ESP8266, такая как плата nodemcu, и набор датчиков для измерения качества воздуха. Библиотека HomeDing, используемая в этом проекте, поддерживает некоторые из распространенных чипов датчиков температуры, влажности, давления и качества. Здесь используется микросхема BMP680.

  • Разъем USB и кабель micro-USB для питания.
  • 1 плата nodemcu с процессором ESP8266.
  • 1 плата подключения датчика BME680.
  • 1 лазерный датчик частиц воздуха PM2.5 типа PMS5003

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

Шаг 1. Подготовьте среду Arduino для ESP8266

Подготовьте среду Arduino для ESP8266
Подготовьте среду Arduino для ESP8266
  1. Установите последнюю версию Arduino IDE (текущая версия 1.8.2).
  2. Используйте Board Manager для установки поддержки esp8266. Подробную инструкцию можно найти здесь:
  3. Настройте параметры платы для NodeMCU 1.0 с файловой системой SPIFFS 1 МБ, как показано на снимке экрана.

Шаг 2. Включите необходимые библиотеки

Включить необходимые библиотеки
Включить необходимые библиотеки

Библиотека HomeDing полагается на некоторые общие дополнительные библиотеки для работы датчиков и дисплеев.

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

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

Более подробную информацию о необходимых библиотеках можно найти на веб-сайте документации по адресу

Это список текущих необходимых библиотек:

  • Адафрут NeoPixel
  • LiquidCrystal_PCF8574.h
  • Драйвер Oled ESP8266 и ESP32 для дисплея SSD1306
  • RotaryEncoder
  • Библиотека датчиков DHT для ESPx
  • OneWire

Лазерный датчик частиц в воздухе PMS5003 обменивается данными с помощью последовательного линейного сигнала со скоростью 9600 бод. Этот сигнал фиксируется с помощью библиотеки SoftwareSerial, которая поставляется с установкой инструментов ESP8266. Убедитесь, что старая версия не установлена в качестве библиотеки.

Шаг 3. Настройте стандартный пример эскиза

Настроить стандартный пример эскиза
Настроить стандартный пример эскиза

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

Это относится к датчику BME680, который поддерживается элементом BME680.

Датчик PMS5003 встречается реже, и его необходимо активировать путем включения элемента PMS в прошивку. Это делается путем определения #define HOMEDING_INCLUDE_PMS в разделе реестра элементов скетча.

#define HOMEDING_INCLUDE_BME680 # define HOMEDING_INCLUDE_PMS

Для простоты добавления нового устройства в сеть вы можете добавить SSID и кодовую фразу вашего домашнего Wi-Fi в файл secrets.h рядом с файлом эскиза standard.ino. Но вы также можете использовать встроенный WiFi Manager, чтобы добавить устройство в сеть без этой жестко заданной конфигурации.

Теперь все, что касается реализации скетча, сделано, прошивку можно скомпилировать и загрузить.

Шаг 4. Загрузите веб-интерфейс

Стандартный пример поставляется с папкой данных, содержащей все файлы для веб-интерфейса.

Перед загрузкой этих файлов вы можете добавить файлы env.json и config.json, которые вы можете найти в этой статье, потому что это упростит задачу.

Именно содержание этих файлов делает IoT-устройство особенным и выполняет функцию датчика качества воздуха. Подробно это объясняется в этой истории.

Используйте утилиту загрузки файлов ESP8266 и загрузите все файлы. Для активации конфигурации требуется перезагрузка.

Шаг 5: Добавьте датчик BME680

Добавьте датчик BME680
Добавьте датчик BME680
Добавьте датчик BME680
Добавьте датчик BME680
Добавьте датчик BME680
Добавьте датчик BME680

Датчик BME680 обменивается данными с платой по шине I2C.

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

"устройство": {

"0": {"name": "airding", "description": "Датчик качества воздуха",… "i2c-scl": "D2", "i2c-sda": "D1"}}

На макетной плате видны соединительные кабели к датчику: 3,3 В = красный, GND = черный, SCL = желтый, SDA = синий

Конфигурацию для BME680 можно использовать в config.json:

"bme680": {

"bd": {"address": "0x77", "readtime": "10s"}}

Мы добавим действия позже.

Чтобы проверить настройку, просто используйте браузер и откройте https://airding/board.htm, и вы увидите фактические значения отображаемого датчика, и они будут обновляться каждые 10 секунд:

Шаг 6: Добавьте датчик PMS5003

Добавьте датчик PMS5003
Добавьте датчик PMS5003

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

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

Данные с датчика передаются в стандартном последовательном формате 9600 бод, поэтому необходимо настроить контакты rx и tx и время считывания:

"pms": {

"pm25": {"description": "датчик частиц pm25", "pinrx": "D6", "pintx": "D5", "readtime": "10s"}}

Мы добавим действия позже.

Чтобы снова проверить настройку, просто перезагрузите устройство, используйте браузер и откройте https://airding/board.htm, и вы увидите фактическое значение pm35 показанного датчика, и они будут обновляться каждые 10 секунд, но обычно это значение не меняется часто.

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

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

Шаг 7: Добавление некоторых сетевых функций

Следующий фрагмент конфигурации в env.json включает

  • обновление прошивки по воздуху
  • позволяет обнаруживать сеть с помощью сетевого протокола SSDP и получать текущее время с сервера ntp.

{

… "Ota": {"0": {"port": 8266, "passwd": "123", "description": "Слушать" беспроводные "обновления OTA"}}, "ssdp": {"0 ": {" Производитель ":" ваше имя "}}," ntptime ": {" 0 ": {" readtime ":" 36h "," zone ": 2}}}

Вы должны настроить часовой пояс в соответствии с вашим местоположением. Если вы сомневаетесь, вы можете использовать веб-сайт https://www.timeanddate.com/, чтобы получить смещение от UTC / GMT. «2» подходит для Германии летом.

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

После перезапуска вы можете найти устройство для ретрансляции в сети, и после получения ответа от ntp-сервера будет доступно местное время.

Шаг 8: добавление журналов

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

В этой истории элемент Log и элемент NPTTime используются для записи истории значений датчиков в файл журнала, а карта веб-интерфейса для этого элемента может отображать его в виде графика.

Следующая конфигурация создает 2 элемента журнала для газа и частиц:

{

"log": {"pm": {"description": "Журнал pm25", "filename": "/pmlog.txt", "sizes": "10000"}, "aq": {"description": " Журнал качества газа "," имя файла ":" /aqlog.txt "," размер файла ":" 10000 "}}}

Шаг 9: Действия

Действия
Действия

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

Действия настраиваются на элементе, который испускает действия, требуется 2 записи:

  • Событие pms / p25 onvalue отправляет фактическое значение элементу log / pm с помощью действия значения.
  • Событие bme680 / bd ongas отправляет фактическое значение элементу log / pm с помощью действия значения.

{

"pms": {"pm25": {… "onvalue": "log / pm? value = $ v"}}, "bme680": {"bd": {… "ongas": "log / aq? value = $ v "}}}

Теперь все элементы настроены.

Шаг 10: изображения и файлы конфигурации

Изображения и файлы конфигурации
Изображения и файлы конфигурации
Изображения и файлы конфигурации
Изображения и файлы конфигурации
Изображения и файлы конфигурации
Изображения и файлы конфигурации

Вот фотография моего последнего датчика качества воздуха IoT.

Файлы конфигурации для загрузки перед загрузкой необходимо переименовать в *.json (без.txt).

Ссылки и ссылки

  • Репозиторий исходного кода HomeDing:
  • Документация:
  • Стандартный пример:
  • Элемент BME680:
  • Элемент PMS:
  • Элемент журнала:
  • Элемент NtpTime:

Рекомендуемые: