Съдържание:

CPC клас проверка на замърсяването: 10 стъпки
CPC клас проверка на замърсяването: 10 стъпки

Видео: CPC клас проверка на замърсяването: 10 стъпки

Видео: CPC клас проверка на замърсяването: 10 стъпки
Видео: 美国如何迅速鉴定出谁是申请美签的中共党员?新冠病毒是乙肝艾滋加流感纳米级智能机器人?How US quickly identify a CCP member applying for visa? 2024, Ноември
Anonim
CPC клас проверка на замърсяването
CPC клас проверка на замърсяването
CPC клас проверка на замърсяването
CPC клас проверка на замърсяването
CPC клас проверка на замърсяването
CPC клас проверка на замърсяването

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

Чувам ви как мислите защо този проект? Е, всичко започна, когато отидох в гимназията. Следобед след добър обяд и почивка уроците започват отново. Но има проблем, учителят забрави да отвори прозореца, докато обядвахме, така че е горещо, изпотено и не можете да се концентрирате, защото заспивате. Това е така, защото във въздуха има много CO2.

Моят проект ще разреши това и ще направи всички ученици по -концентрирани по време на уроците си.

Консумативи

1 xRaspberry Pi 4 (55 евро)

1 x степ двигател с водач (5 евро)

2 x 12v 6800 mAh батерии (2x € 20)

2 x понижаващ модул (2x € 5)

1 x 16x2 LCD (1,5 евро)

Сензори: 1x MQ8, 1x MQ4, 1x MQ7, 1x MQ135, 1x HNT11, 1x TMP36 (1 x € 23)

IC: 1x MCP3008, 2x 74hc595AG (1x € 2.30, 2x € 0.40)

Светодиоди: 2x зелено, 2x червено, 3x жълто (намира се в някой стар хардуер, обикновено по 0,01 евро всеки)

Конектор за батерии (2 x 0,35 €)

40 съединителни кабела f-to-f (1,80 €)

40 съединителни кабела f-to-m (1,80 €)

20 m-to-m съединителни кабели (1,80 €)

2 x печатни платки за запояване (2x 0,70 €)

Инструменти:

Поялник (за предпочитане 60 вата)

Калай към спойка

Алуминиев лист 50x20

Корпус (използвах стара мини компютърна кутия)

Това може лесно да бъде някакъв MDF или собствени идеи.

Стъпка 1: Настройка на RPi

Настройване на вашия RPi
Настройване на вашия RPi

Така че сърцето, мозъкът и душата ни са в този продукт. Заплашвайте го добре, защото може да ви нарани по един или друг начин. Използвам RPi 4B 4gb, други модели трябва да се справят добре. Можете да очаквате повече изоставане при по -старите модели.

Получихме операционната система от нашето училище с предварително инсталиран софтуер като phpMyAdmin.

Първо се уверете, че можете да се свържете с вашия Raspberry Pi чрез ssh, ще ни трябва много време.

Така че първо трябва да активираме SPI шината, GPIO пиновете и да деактивираме други шини, няма да имаме нужда от тях.

Можете да направите това в менюто raspi-config. Придвижете се до Интерфейси и активирайте GPIO и SPI нормално, няма да е необходимо да. Докато сте тук, разширете хранилището си, като отидете на разширени и след това натиснете enter за разширяване на хранилището.

Сега рестартирайте. Ще ни трябват някои разширения, за да използваме VS Code на нашия pi, за да стартираме нашия сървър и база данни.

Процесът на инсталиране на VS Code Extension може да се намери тук.

Сега ще инсталираме разширенията за нашия сървър и база данни. Използвайте терминала и въведете „python install flask, flask-cors, mysql-python-конектор, eventlet“изчакайте, докато бъде финализиран.

Сега можем да започнем с изработването на проекта.

Стъпка 2: MCP3008 + TMP36

MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36
MCP3008 + TMP36

Така че имаме 6 сензора: 4 газ, 1 влажност + температура и 1 температурен сензор. Истинска задача е да ги накарате да работят. Всички сензори са аналогови сензори, така че трябва да преобразуваме аналоговия сигнал в цифров сигнал. Това е така, защото RPi (Rasberry Pi) може само да "разбира" цифрови сигнали. За повече информация щракнете тук.

За да изпълните тази задача, ще ви е необходим MCP3008, това ще свърши чудесна работа!

Той има 16 порта, като се брои отгоре (малкото мехурче) вляво, надолу, от другата страна и нагоре. Pin1-8 са входовете за аналоговия сигнал от нашите сензори. Пин 9 от другата страна е GND, който трябва да бъде свързан към GND на цялата верига, в противен случай това няма да работи. Пин 10-13 трябва да бъдат свързани по-внимателно, те ще предават данни към и от RPi. Пин 14 е друг GND, а щифтовете 15 и 16 са VCC, те трябва да бъдат свързани към положителната страна на веригата.

Това е оформлението за окабеляване:

  • MCP3008 VDD към външни 3.3V MCP3008 VREF към външни 3.3V
  • MCP3008 AGND към външен GND
  • MCP3008 DGND към външенGND
  • MCP3008 CLK към Raspberry Pi пин 18
  • MCP3008 DOUT към Raspberry Pi пин 23
  • MCP3008 DIN към Raspberry Pi пин 24
  • MCP3008 CS/SHDN към Raspberry Pi пин 25

Това също е подходящ момент за свързване на GND от RPI към външния GND. Това ще доведе до изтичане на електричество от RPi.

Ето как да го свържете по правилния начин.

Не забравяйте да свържете правилния начин, в противен случай можете да направите късо съединение на всичко!

Първото парче код идва на мястото си тук.

Можете да копирате моя код от моя проект github под models. Analog_Digital.

В долната част на страницата ще намерите изходния код, за да работи.

Но имаме нужда от първия ни сензор, за да можем да тестваме.

Трябва да тестваме нашия сензор, ако работи. Свържете захранване 3.3V или 5V към положителната страна на TMP36. Не забравяйте да го свържете и към GND, това може би ще се случи нещо глупаво, но повярвайте ми. Това е реалността;). Можете да тествате с вашия мултицет изхода на сензора, това е средният щифт. С това просто уравнение можете да проверите температурата в ° C. ((миливолта*входно напрежение) -500)/10 и voila donne! Чао! Ами не хахах имаме нужда от MCP3008. Свържете аналоговия щифт за вашия TMP36 към първия входен извод на MCP3008. Това е пин 0.

Можете да използвате примерния код в долната част за този MCP-клас. Или нещо, което ще намерите онлайн, ще свърши добре работата.

Стъпка 3: База данни

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

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

Моят отговор ще бъде: вход от 6 сензора, така че трябва да направим сензорна таблица, с тези сензори ще правим стойности. Какво е свързано със стойност? За мен това е състоянието на прозореца, отворен ли е или е затворен, докато сензорът измерва стойността. Но местоположението също е фактор за моята стойност, така че ще добавим това към. Часът и датата за стойност също са важни, затова ще добавя това.

За бъдещо разширяване добавих потребителска таблица.

И така, каква е моята идея за таблици: стойности на таблицата, адрес на таблицата (свързана със стая), стая с таблица (свързана със стойност), прозорец на таблица (свързана със стойност), сензор за таблица (свързан със стойност) и таблица в дивата природа за потребители.

Що се отнася до свързването на таблиците заедно. Всяка стойност се нуждае от един сензор, един прозорец, стойност за сензора, идентификатор, за да можем да направим стойността уникална, времева отметка за кога е направена стойността и за последно нямаме нужда от стая, така че да е по избор, но може да бъде добавено.

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

Стъпка 4: HNT11, за истинските момчета

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

HNT11 е едножична система, така че това означава, че имате GND и VCC, като всяко друго електронно устройство, но 3-ият щифт е вход и изход. Така че е малко странно, но научих много от него.

Свържете VCC към външния 3.3V и GND към външния GND.

Информационният лист на DHT11 съдържа всичко за използване на тези сензори.

Можем да определим, че висок бит съдържа нисък и висок бит. Но продължителността на високата част определя бита за реално. Ако високата част се излъчва по -дълго от 100 μs (обикновено 127 μs), битът е висок. Битът е по -къс от 100 μs (нормално около 78 μs), битът е нисък.

Когато HNT11 е активиран, той ще започне да излъчва сигнали. Това винаги е 41 бита. Започва с начален бит, това не означава нищо, така че можем да пропуснем този. Първите 16 бита/ 2 байта са целочислената и плаващата част за влажността. Същото е за последните 2 байта, но сега е за температурата.

Така че трябва само да изчислим продължителността на всеки бит и тогава сме готови.

В изходния код под DHT11 ще намерите моя метод за решаване на този проблем.

Стъпка 5: Сензори за газ (само легенди)

Сензори за газ (само легенди)
Сензори за газ (само легенди)
Сензори за газ (само легенди)
Сензори за газ (само легенди)

Затова си помислих в началото на проекта, че би било чудесна идея да използвам много сензори. Помислете, преди да действате и купувайте на местно ниво, това ще ви спести много часове на сън! Защото можете да започнете по -рано и това ще направи по -охотно да го направите.

Така че имам 4 сензора за газ. MQ135, MQ8, MQ4 и MQ7 всички тези сензори имат специфични газове, които те измерват най -добре. Но всички те са различни по своята конфигурация.

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

Оставих го да почине известно време и се върнах към него.

Това, което направих, за да работи за този един сензор, е:

- Използвах листа с данни, за да отбележа точките на газа, които исках да измервам. Така 1 ro/rs до 400ppm, 1.2 до 600ppm …

- След това поставих всички тези точки в excell и извадих формулата за кривата. Запазих това в моята база данни.

- От листа с данни прочетох и нормалното съпротивление и съпротивлението на чистия въздух. Тези стойности също бяха записани в базата данни.

Изсипах всичко това в някакъв код, можете да намерите това като последните три функции в класа MCP3008. Но това все още не е приключило, за съжаление нямах достатъчно време.

Стъпка 6: Регистърът Shift, 74HC595AG

Регистърът Shift, 74HC595AG
Регистърът Shift, 74HC595AG
Регистърът Shift, 74HC595AG
Регистърът Shift, 74HC595AG
Регистърът Shift, 74HC595AG
Регистърът Shift, 74HC595AG
Регистърът Shift, 74HC595AG
Регистърът Shift, 74HC595AG

Така че това е IC. И прави нещо специално, с това устройство е възможно да се използват по -малко GPIO изходи за същия изходен сигнал. Използвах това за LCD (дисплей с течни кристали) и моите светодиоди. Ще покажа ip адреса на LCD, така че всеки да може да сърфира в сайта.

Светодиодите се избират разумно 2 червени, 3 жълти и 2 зелени. Това ще покаже по всяко време качеството на въздуха в стаята.

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

Как да използвате IC? Имате 5 входа и 9 изхода. 8 логически изхода за 8 -те пина и след това 9 -ия пин за изпращане на останалите данни към друг регистър за смяна.

Така че ние свързваме щифт 16 към външния VCC, следващият извод е първият изход, така че за LCD ще имаме нужда от него. Пин 14 е линията за данни, тук ще изпращаме данни до. 13 -ият щифт е включен на превключвателя, нисък сигнал позволява на IC, а висок сигнал е необходим, за да го изключите. Пин 12 е щифтът, където можем да определим кога е изпратен бит, когато издърпате този щифт надолу от високо до ниско, той чете състоянието на сигнала на щифт 13 и го съхранява в неговата 8 -битова памет. Пин 11 е подобен, когато този щифт е настроен високо, а след това нисък, той извежда 8 -те бита към своя порт. И последният щифт, щифт 10 е главното нулиране, този щифт трябва да остане висок или няма да работи. Последната връзка е GND пин 8, който трябва да свържем с външния GND.

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

Когато получите правилен изход. Можете да запоите това към печатна платка със светодиодите. и 220 ома резистори. Запоявайте изхода на IC към съответния светодиод. Сега трябва да имате нещо подобно.

Можете да намерите моя тест код тук под Shiftregister. Когато работите със 74HC595N, няма да имате нужда от MR, така че можете да го оставите без връзка.

LCD дисплеят е почти същият. Доста лесно е да го използвате с shiftregister, защото входът за LCD е точно вход за shiftregister.

За LCD има някакъв друг код, който да го накара да работи, но той е почти същият като само shifregister. Можете да намерите тестовия код тук под LCD.

Стъпка 7: Frontend, ценен урок

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

Направете интерфейса преди бекенда !!!!

Направих го обратното. Извърших безполезни обаждания за моята база данни, прекарвам много време в това.

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

На страницата на сензорите имам нужда от избора на един сензор и времето за избор. Избрах за избор един ден и след това периода от този ден. Това ми направи много по -лесно, защото можех да го контролирам повече.

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

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

Можете да намерите моите страници, css и js в моя Github.

Стъпка 8: Бекендът

Тази част е частта, която смесих с интерфейса. Когато направих нещо за интерфейса, го накарах да работи на бекенда. Така че няма да се нуждае от преразглеждане по -късно. Това беше нещо, което не направих на първо място и поради това загубих със сигурност 2 седмици време. Глупавият аз! Но урок, който случайно вземам за други проекти.

Така че, когато правите бекенд, направете нещо, което ще използвате. Но направете го бъдещо доказателство, като го направите за многократна употреба и не е трудно кодиран. Така че, когато се нуждая от последните 50 стойности на моя DHT11, ще проверя дали се правят стойности? Да, как да ги поставя в базата данни. Как да ги извадя от базата данни. Как да го покажа? Диаграма, графика или просто обикновени данни? След това правя нов маршрут с различните параметри и свойства, като дати, конкретни сензорни имена или това, което ще извикам. Искам да кажа, извикам ли всички стойности от сензорите MQ или извикам всички сензори с MQ в името си. След това въвеждам някои грешки. Когато искането от повикването е правилният метод, само тогава може да продължи, в противен случай получава хубава грешка.

Също така тук се намират нишките, това са части от софтуера, които ви позволяват да стартирате паралелен код. Можете да стартирате обажданията на уебсайтовете, функцията за създаване на стойност и led+shiftregister. Тези функции работят напълно независимо една от друга.

Така че за светодиодите. Направих дънна/ здравословна стойност за CO2. Тази стойност идва от множество източници на гувернемента. Здравословната стойност за класните стаи е под 600 ppm CO2 на кубичен метър. Нездравословната стойност е всичко над 2000 ppm. Така че светодиодите правят моста. Ако стойността на сензора MQ4 е 1400, той автоматично ще изчисли кое ниво на опасност представлява. 2000 - 600 = 1400, така че общият диапазон е 1400 /7 = 200. Така че когато стойността достигне 550, тя показва зелен светодиод. 750 показва 2 зелени светодиода, 950 1 жълти 2 зелени светодиода. И така нататък.

Когато стойността надхвърли средата, прозорецът се отваря. Използвах степ двигател поради високия въртящ момент и прецизност. И когато стойността надхвърли 2000, се включва малка аларма. Това е за да алармира хората в стаята.

Също така можем да открием димни газове, така че когато има пожар. Той регистрира и това. Когато надхвърли определена стойност, алармата се включва и светодиодът мига.

LCD е основно там, за да покаже IP адреса, за да можете да сърфирате в сайта.

Можете да намерите всичко + код вътре в моя Githubin app.py

Стъпка 9: Изграждане на случая

Изготвяне на случая
Изготвяне на случая
Изготвяне на случая
Изготвяне на случая
Изготвяне на случая
Изготвяне на случая

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

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

Тогава погледнах как всичко ще се побере вътре в кутията. Изложих всичко и започнах да се движа.

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

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

За да захранвам всичко това, използвах 2 батерии. Те осигуряват много енергия, но това все още са батерии, така че те ще се изтощят с времето. Монтирах ги с велкро. Използвах велкро, защото тогава лесно можех да сменя или да се отърва от батериите.

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

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

Стъпка 10: Оценка и заключение

Оценка и заключение
Оценка и заключение

Така че това е/беше първият ми проект.

Изглежда добре, предполагам.

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

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

Също така 4 седмици изглеждат много време. Но по -малко е вярно. Това просто не е правилно. Имате само 4 седмици. Първите 2 седмици всъщност не са толкова голям натиск. 3 -седмично завършване и 4 -седмичната безсънна нощ. Ето как не трябва да го правите.

Може би бях малко амбициозен: аз съм супер малък калъф, няма лесни за използване сензори, батерии … Направете го много по -опростен и след това го направете постепенно по -трудно и по -трудно, само тогава ще получите добър прототип/ продукт.

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