Съдържание:

Изградете вътрешен IoT сензор за качество на въздуха Не се изисква облак: 10 стъпки
Изградете вътрешен IoT сензор за качество на въздуха Не се изисква облак: 10 стъпки

Видео: Изградете вътрешен IoT сензор за качество на въздуха Не се изисква облак: 10 стъпки

Видео: Изградете вътрешен IoT сензор за качество на въздуха Не се изисква облак: 10 стъпки
Видео: Tech Treasures: How to Score Big with Used Servers! 2024, Юни
Anonim
Изградете вътрешен IoT сензор за качество на въздуха, който не изисква облак
Изградете вътрешен IoT сензор за качество на въздуха, който не изисква облак
Изградете вътрешен IoT сензор за качество на въздуха, който не изисква облак
Изградете вътрешен IoT сензор за качество на въздуха, който не изисква облак
Изградете вътрешен IoT сензор за качество на въздуха, който не изисква облак
Изградете вътрешен IoT сензор за качество на въздуха, който не изисква облак
Изградете вътрешен IoT сензор за качество на въздуха, който не изисква облак
Изградете вътрешен IoT сензор за качество на въздуха, който не изисква облак

Качеството на вътрешния или външния въздух зависи от много източници на замърсяване, а също и от времето.

Това устройство улавя някои от често срещаните и някои от най -интересните параметри, като използва 2 сензорни чипа.

  • Температура
  • Влажност
  • Налягане
  • Органичен газ
  • Микрочастици

Използваните тук сензори са BME680 за получаване на стойности на температура, влажност, налягане и органичен газ и PMS5003 за получаване на плътност на микрочастиците.

С помощта на библиотеката HomeDing е лесно да се изгради устройство, което е свързано само с вашата домашна мрежа и може да бъде достигнато и контролирано от всеки браузър в мрежата. Той идва с подбор от елементи, които позволяват използването на най -често срещаните сензорни чипове, устройства и други услуги.

Той също така предлага цялостно решение за хостване на уеб страна вътре в устройството, вместо да използва облачно решение за показване на сензорните данни и взаимодействие с устройството.

Консумативи

Всичко, от което се нуждаете, за да изградите този проект, е платка, базирана на ESP8266, като платката nodemcu и набор от сензори за измерване на качеството на въздуха. Библиотеката HomeDing, използвана в този проект, поддържа някои от общите сензорни чипове за температура, влажност, налягане и качество. Тук се използва чипът BMP680.

  • USB щепсел и микро-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 с 1MByte SPIFFS файлова система, както е показано на екрана

Стъпка 2: Включете необходимите библиотеки

Включете задължителни библиотеки
Включете задължителни библиотеки

Библиотеката HomeDing разчита на някои общи допълнителни библиотеки, за да работят сензорите и дисплеите.

Когато инсталирате библиотеката HomeDing, ще видите изскачащ прозорец с тези необходими библиотеки, които могат да бъдат инсталирани автоматично, както е показано на снимката и е лесно да ги инсталирате всички.

Понякога (с неизвестни причини) инсталирането на библиотеките се проваля, така че всички необходими библиотеки трябва да бъдат инсталирани ръчно.

Повече подробности за необходимите библиотеки могат да бъдат намерени на уебсайта за документация на адрес

Това е списъкът с настоящите необходими библиотеки:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • ESP8266 и ESP32 Oled драйвер за SSD1306 дисплей
  • Ротационен енкодер
  • Библиотека DHT сензори за ESPx
  • OneWire

Лазерният сензор за въздушни частици PMS5003 комуникира, използвайки сигнал от серийна линия от 9600 бода. Този сигнал се улавя с помощта на библиотеката SoftwareSerial, която се доставя с инсталирането на инструментите ESP8266. Уверете се, че нямате инсталирана по -стара версия като библиотека.

Стъпка 3: Персонализирайте стандартната примерна скица

Персонализирайте стандартната примерна скица
Персонализирайте стандартната примерна скица

Стандартният пример вече включва някои от по -често срещаните сензори като елементи, така че ще се изисква само някаква конфигурация.

Това се отнася за сензора BME680, който се поддържа от BME680 Element.

Сензорът PMS5003 е по -рядко срещан и трябва да бъде активиран чрез включване на PMS Element във фърмуера. Това става чрез дефиниране на #define HOMEDING_INCLUDE_PMS в раздела регистър на елементи на скицата

#define HOMEDING_INCLUDE_BME680#define HOMEDING_INCLUDE_PMS

За по -лесно добавяне на новото устройство към мрежата можете да добавите SSID и парола за вашия домашен WiFi във файла 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": "Sensor Quality Air Sensor",… "i2c-scl": "D2", "i2c-sda": "D1"}}

На чертежа можете да видите свързващите кабели към сензора: 3.3V = червено, 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 Element се използват за записване на историята на стойностите на сензора в лог файл и картата на уеб потребителския интерфейс за този елемент може да го покаже като графика.

Следната конфигурация създава двата елемента от дневник за газ и частици:

{

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

Стъпка 9: Действия

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

Сега трябва да прехвърлим действителните стойности в лог елементите, като използваме действия. Действията използват URL нотация, за да предадат кай и стойност на целевия елемент. Много елементи поддържат излъчващи действия при определени събития, които се случват като улавяне на нова стойност на сензора.

Действията са конфигурирани в елемента, който излъчва действия Изискват се 2 записа:

  • Събитието onvalue на pms/p25 изпраща действителната стойност на елемента log/pm, като използва действие за стойност.
  • Събитието bme680/bd ongas изпраща действителната стойност до елемента log/pm, като използва действие за стойност.

{

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

Сега всички елементи са конфигурирани.

Стъпка 10: Снимки и конфигурационни файлове

Снимки и конфигурационни файлове
Снимки и конфигурационни файлове
Снимки и конфигурационни файлове
Снимки и конфигурационни файлове
Снимки и конфигурационни файлове
Снимки и конфигурационни файлове

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

Конфигурационните файлове за изтегляне трябва да бъдат преименувани на *.json (no.txt), преди да бъдат качени.

Връзки и препратки

  • Хранилище на изходния код на HomeDing:
  • Документация:
  • Стандартен пример:
  • BME680 елемент:
  • PMS елемент:
  • Елемент на дневника:
  • Елемент NtpTime:

Препоръчано: