- Потребне компоненте:
- Шема и објашњење:
- Објашњење:
- Објашњење кода:
- "; веб страница + =" Квалитет ваздуха је "; веб страница + = квалитета ваздуха; веб страница + =" ППМ "; веб страница + ="
";
Следећи код ће позвати функцију која се зове сендДата и послат ће низове података и порука на веб страницу да се прикажу.
сендДата (ципСенд, 1000, ДЕБУГ); сендДата (веб страница, 1000, ДЕБУГ); ципСенд = "АТ + ЦИПСЕНД ="; ципСенд + = цоннецтионИд; ципСенд + = ","; ципСенд + = вебпаге.ленгтх (); ципСенд + = "\ р \ н";
Следећи код ће исписати податке на ЛЦД екрану. Применили смо различите услове за проверу квалитета ваздуха, а ЛЦД ће штампати поруке у складу са условима, а зујалица ће се огласити и ако загађење пређе 1000 ППМ.
лцд.сетЦурсор (0, 0); лцд.принт („Квалитет ваздуха је“); лцд.принт (квалитета_ ваздуха); лцд.принт ("ППМ"); лцд.сетЦурсор (0,1); иф (аир_куалити <= 1000) {лцд.принт ("Фресх Аир"); дигиталВрите (8, ЛОВ);
Коначно, доња функција ће послати и приказати податке на веб страници. Подаци које смо сачували у низу под називом 'веб страница' биће сачувани у низу под називом 'наредба' . ЕСП ће затим прочитати знак један по један из „команде“ и исписати га на веб страници.
Стринг сендДата (Стринг наредба, цонст инт тимеоут, боолеан дебуг) {Стринг респонсе = ""; есп8266.принт (наредба); // послати прочитани знак на есп8266 лонг инт тиме = миллис (); вхиле ((тиме + тимеоут)> милис ()) {вхиле (есп8266.аваилабле ()) {// Есп има податке па прикажи свој излаз у серијски прозор цхар ц = есп8266.реад (); // прочитати следећи знак. одговор + = ц; }} иф (отклањање грешака) {Сериал.принт (одговор); } одговор на повратак; }
- Тестирање и резултати пројекта:
У овом пројекту ћемо направити ИоТ заснован систем за праћење загађења ваздуха у којем ћемо надгледати квалитет ваздуха преко веб сервера који користи интернет и активираће аларм када квалитет ваздуха падне изнад одређеног нивоа, значи када има довољне количине штетних гасова присутни су у ваздуху попут ЦО2, дима, алкохола, бензена и НХ3. Приказаће квалитет ваздуха у ППМ на ЛЦД-у, као и на веб страници, тако да га можемо врло лако надгледати.
Раније смо изградили ЛПГ детектор помоћу сензора МК6 и детектор дима помоћу сензора МК2, али овог пута смо користили сензор МК135 као сензор за квалитет ваздуха, што је најбољи избор за праћење квалитета ваздуха, јер може да детектује најштетније гасове и може да мери њихову количину тачно. У овом ИОТ пројекту можете да надгледате ниво загађења са било ког места помоћу рачунара или мобилног уређаја. Овај систем можемо да инсталирамо било где, а такође можемо да покренемо неки уређај када загађење пређе неки ниво, као што можемо да укључимо испушни вентилатор или да пошаљемо упозорење СМС-ом / поруком кориснику.
Потребне компоненте:
- МК135 Сензор за гас
- Ардуино Уно
- Ви-Фи модул ЕСП8266
- 16Кс2 ЛЦД
- Бреадбоард
- 10К потенциометар
- Отпорници од 1К охма
- Отпор од 220 ома
- Зујалица
Све горе наведене компоненте можете купити одавде.
Шема и објашњење:
Пре свега повезаћемо ЕСП8266 са Ардуином. ЕСП8266 ради на 3.3В и ако му дате 5В од Ардуина, тада неће радити исправно и може наштетити. Повежите ВЦЦ и ЦХ_ПД са 3,3В пином Ардуина. РКС пин ЕСП8266 ради на 3.3В и неће комуницирати са Ардуином када га повежемо директно са Ардуином. Дакле, за њега ћемо морати да направимо делилац напона који ће претворити 5В у 3,3В. То се може постићи повезивањем три отпорника у серију као што смо то учинили у колу. Повежите ТКС пин ЕСП8266 са пин 10 Ардуина и РКС пин есп8266 са пин 9 Ардуино кроз отпорнике.
Ви-Фи модул ЕСП8266 омогућава вашим пројектима приступ Ви-Фи-ју или Интернету. То је врло јефтин уређај и ваше пројекте чини веома моћним. Може да комуницира са било којим микроконтролером и водећи је уређај у ИОТ платформи. Овде сазнајте више о коришћењу ЕСП8266 са Ардуином.
Тада ћемо повезати сензор МК135 са Ардуином. Повежите ВЦЦ и контакт за уземљење сензора са 5В и масом Ардуина и аналогни пин сензора са А0 Ардуина.
Спојите зујалицу на иглицу 8 Ардуина која ће почети да оглашава звук када стање постане тачно.
На крају ћемо повезати ЛЦД са Ардуином. Конекције ЛЦД-а су следеће
- Спојите иглу 1 (ВЕЕ) са земљом.
- Повежите пин 2 (ВДД или ВЦЦ) на 5В.
- Повежите пин 3 (В0) са средњим пином 10К потенциометра, а друга два краја потенциометра повежите са ВЦЦ и ГНД. Потенциометар се користи за контролу контраста екрана ЛЦД-а. Потенциометар вредности осим 10К такође ради.
- Повежите пин 4 (РС) на пин 12 Ардуина.
- Повежите пин 5 (читање / писање) са земљом Ардуино. Овај клин се не користи често па ћемо га повезати са земљом.
- Повежите пин 6 (Е) са пин 11 Ардуина. РС и Е пин су контролне игле које се користе за слање података и знакова.
- Следећа четири пина су пинови за податке који се користе за комуникацију са Ардуином.
Повежите пин 11 (Д4) са иглом 5 Ардуина.
Повежите пин 12 (Д5) са пином 4 Ардуина.
Повежите пин 13 (Д6) са пином 3 Ардуина.
Повежите пин 14 (Д7) са пин 2 Ардуина.
- Повежите пин 15 на ВЦЦ кроз отпор од 220 ома. Отпор ће се користити за подешавање осветљености задњег светла. Веће вредности ће позадинско светло учинити много тамнијим.
- Прикључите пин 16 на масу.
Објашњење:
МК135 сензор може осетити НХ3, НОк, алкохол, бензен, дим, ЦО2 и неке друге гасове, тако да је савршен сензор за гас за наш пројекат праћења квалитета ваздуха. Када га повежемо са Ардуином, тада ће осетити гасове и добићемо ниво загађења у ППМ (делови на милион). Сензор за гас МК135 даје излаз у облику напонских нивоа и морамо га претворити у ППМ. Дакле, за претварање излаза у ППМ, овде смо користили библиотеку за сензор МК135, што је детаљно објашњено у одељку „Објашњење кода“ испод.
Сензор нам је давао вредност 90 када у близини није било плина, а сигуран ниво квалитета ваздуха је 350 ППМ и не би требало да прелази 1000 ППМ. Када премаши ограничење од 1000 ППМ, тада почиње да изазива главобољу, поспаност и стајаћи, устајали, загушљив ваздух, а ако премаши преко 2000 ППМ, то може проузроковати повећани пулс и многе друге болести.
Када је вредност мања од 1000 ППМ, тада ће се на ЛЦД екрану и веб страници приказати „Свеж ваздух“. Кад год се вредност повећа 1000 ППМ, зујало ће почети оглашавати и ЛЦД и веб страница ће приказати „Лош ваздух, отворени прозори“. Ако се повећа за 2000, зујало ће наставити да се оглашава, а на ЛЦД-у и веб страници ће се приказати „Опасност! Померите се на свеж ваздух ”.
Објашњење кода:
Пре почетка кодирања за овај пројекат, прво морамо калибрирати сензор гаса МК135. Много је прорачуна укључених у претварање излаза сензора у вредност ППМ, ми смо то већ радили у нашем претходном пројекту Детектор дима. Али овде користимо Библиотеку за МК135, ову библиотеку МК135 можете преузети и инсталирати овде: хттпс://гитхуб.цом/ГеоргК/МК135.
Користећи ову библиотеку можете директно добити вредности ППМ-а, само користећи доња два реда:
МК135 гасСенсор = МК135 (А0); флоат аир_куалити = гасСенсор.гетППМ ();
Али пре тога морамо калибрисати сензор МК135, за калибрацију сензора пренесите доле дати код и пустите га да ради 12 до 24 сата, а затим добијемо вредност РЗЕРО .
#инцлуде "МК135.х" воид сетуп () {Сериал.бегин (9600); } воид лооп () {МК135 гасСенсор = МК135 (А0); // Прикачити сензор на пин А0 флоат рзеро = гасСенсор.гетРЗеро (); Сериал.принтлн (рзеро); кашњење (1000); }
Након добијања вредности РЗЕРО . Ставите вредност РЗЕРО у датотеку библиотеке коју сте преузели "МК135.х": #дефине РЗЕРО 494.63
Сада можемо започети стварни код за наш пројекат праћења квалитета ваздуха.
У коду смо пре свега дефинисали библиотеке и променљиве за сензор за гас и ЛЦД. Коришћењем софтверске серијске библиотеке можемо направити било који дигитални пин као ТКС и РКС пин. У овом коду направили смо пин 9 као РКС пин, а пин 10 као ТКС пин за ЕСП8266. Затим смо укључили библиотеку за ЛЦД и дефинисали пинове за исти. Такође смо дефинисали још две променљиве: једну за аналогни пин сензора и другу за чување вредности ваздуха_квалитете .
#инцлуде
Тада ћемо пин 8 прогласити излазним пином на који смо спојили зујалицу. л цд.бегин (16,2) наредба ће покренути ЛЦД да прима податке, а затим ћемо поставити курсор у први ред и исписат ће 'склопни сажетак' . Затим ћемо поставити курсор у други ред и исписат ћемо „Загревање сензора“ .
пинМоде (8, ИЗЛАЗ); лцд.бегин (16,2); лцд.сетЦурсор (0,0); лцд.принт ("цирцуитдигест"); лцд.сетЦурсор (0,1); лцд.принт ("Загревање сензора"); кашњење (1000);
Тада ћемо поставити брзину преноса података за серијску комуникацију. Различити ЕСП-ови имају различите брзине преноса па их напишите према брзини преноса вашег ЕСП-а. Тада ћемо послати команде за подешавање ЕСП-а за комуникацију са Ардуином и приказивање ИП адресе на серијском монитору.
Сериал.бегин (115200); есп8266.бегин (115200); сендДата ("АТ + РСТ \ р \ н", 2000, ДЕБУГ); сендДата ("АТ + ЦВМОДЕ = 2 \ р \ н", 1000, ДЕБУГ); сендДата ("АТ + ЦИФСР \ р \ н", 1000, ДЕБУГ); сендДата ("АТ + ЦИПМУаир_куалити = 1 \ р \ н", 1000, ДЕБУГ); сендДата ("АТ + ЦИПСЕРВЕР = 1,80 \ р \ н", 1000, ДЕБУГ); пинМоде (сенсорПин, ИНПУТ); лцд.цлеар ();
За штампање резултата на веб страници у веб прегледачу мораћемо да користимо ХТМЛ програмирање. Дакле, створили смо низ под називом веб страница и у њега ускладиштили излаз. Од излаза одузимамо 48, јер функција реад () враћа АСЦИИ децималну вредност, а први децимални број који је 0 почиње на 48.
иф (есп8266.аваилабле ()) {иф (есп8266.финд ("+ ИПД,")) {кашњење (1000); инт цоннецтионИд = есп8266.реад () - 48; Стринг веб страница = "
ИОТ систем за надзор загађења ваздуха
"; веб страница + =""; веб страница + =" Квалитет ваздуха је "; веб страница + = квалитета ваздуха; веб страница + =" ППМ "; веб страница + ="
";
Следећи код ће позвати функцију која се зове сендДата и послат ће низове података и порука на веб страницу да се прикажу.
сендДата (ципСенд, 1000, ДЕБУГ); сендДата (веб страница, 1000, ДЕБУГ); ципСенд = "АТ + ЦИПСЕНД ="; ципСенд + = цоннецтионИд; ципСенд + = ","; ципСенд + = вебпаге.ленгтх (); ципСенд + = "\ р \ н";
Следећи код ће исписати податке на ЛЦД екрану. Применили смо различите услове за проверу квалитета ваздуха, а ЛЦД ће штампати поруке у складу са условима, а зујалица ће се огласити и ако загађење пређе 1000 ППМ.
лцд.сетЦурсор (0, 0); лцд.принт („Квалитет ваздуха је“); лцд.принт (квалитета_ ваздуха); лцд.принт ("ППМ"); лцд.сетЦурсор (0,1); иф (аир_куалити <= 1000) {лцд.принт ("Фресх Аир"); дигиталВрите (8, ЛОВ);
Коначно, доња функција ће послати и приказати податке на веб страници. Подаци које смо сачували у низу под називом 'веб страница' биће сачувани у низу под називом 'наредба' . ЕСП ће затим прочитати знак један по један из „команде“ и исписати га на веб страници.
Стринг сендДата (Стринг наредба, цонст инт тимеоут, боолеан дебуг) {Стринг респонсе = ""; есп8266.принт (наредба); // послати прочитани знак на есп8266 лонг инт тиме = миллис (); вхиле ((тиме + тимеоут)> милис ()) {вхиле (есп8266.аваилабле ()) {// Есп има податке па прикажи свој излаз у серијски прозор цхар ц = есп8266.реад (); // прочитати следећи знак. одговор + = ц; }} иф (отклањање грешака) {Сериал.принт (одговор); } одговор на повратак; }
Тестирање и резултати пројекта:
Пре отпремања кода, уверите се да сте повезани на Ви-Фи свог ЕСП8266 уређаја. Након отпремања отворите серијски монитор и он ће приказати ИП адресу као што је приказано доле.
Унесите ову ИП адресу у прегледач, приказаће вам излаз као што је приказано доле. Мораћете поново да освежите страницу ако желите да видите тренутну вредност квалитета ваздуха у ППМ.
Подесили смо локални сервер да демонстрира свој рад, видео запис можете погледати у наставку. Али да бисте надзирали квалитет ваздуха са било ког места на свету, морате да проследите порт 80 (који се користи за ХТТП или Интернет) на вашу локалну или приватну ИП адресу (192.168 *) вашег уређаја. Након прослеђивања порта све долазне везе биће прослеђене на ову локалну адресу и горе приказану веб страницу можете отворити једноставним уносом јавне ИП адресе вашег интернета са било ког места. Порт можете проследити тако што ћете се пријавити на свој рутер (192.168.1.1) и пронаћи опцију за подешавање прослеђивања порта.