Obsah:

Kontrola Polution třídy CPC: 10 kroků
Kontrola Polution třídy CPC: 10 kroků

Video: Kontrola Polution třídy CPC: 10 kroků

Video: Kontrola Polution třídy CPC: 10 kroků
Video: The Simple Solution to Traffic 2024, Listopad
Anonim
Kontrola Polution třídy CPC
Kontrola Polution třídy CPC
Kontrola Polution třídy CPC
Kontrola Polution třídy CPC
Kontrola Polution třídy CPC
Kontrola Polution třídy CPC

Dobrý den, jsem student z Belgie a toto je můj první velký projekt pro bakalářské studium! This Instructable is about how to make an airpolution meter for closed rooms, obzvlášť učebny!

Slyšel jsem vás přemýšlet, proč tento projekt? Všechno to začalo, když jsem šel na střední školu. Odpoledne po dobrém obědě a přestávce začíná výuka znovu. Ale je tu problém, učitel zapomněl otevřít okno, když jsme měli oběd, takže je horko, zpoceno a nemůžete se soustředit, protože usínáte. Je to proto, že ve vzduchu je mnoho CO2.

Můj projekt to vyřeší a zvýší koncentraci všech studentů během jejich výuky.

Zásoby

1 x Raspberry Pi 4 (55 EUR)

1 x steppenmotor s ovladačem (5 €)

2 x 12V 6800 mAh baterie (2x 20 €)

2 x stepdown modul (2x 5 €)

1 x 16x2 LCD (1,5 EUR)

Senzory: 1x MQ8, 1x MQ4, 1x MQ7, 1x MQ135, 1x HNT11, 1x TMP36 (1 x 23 EUR)

Integrované obvody: 1x MCP3008, 2x 74hc595AG (1x 2,30 EUR, 2x 0,40 EUR)

LED diody: 2x zelená, 2x červená, 3x žlutá (nachází se v nějakém starém hardwaru, normálně 0,01 EUR za kus)

Konektor pro baterie (2 x 0,35 EUR)

40 konektorových kabelů f-to-f (1,80 EUR)

40 konektorových kabelů f-to-m (1,80 EUR)

20 konektorových kabelů m-to-m (1,80 EUR)

2 x PCB na pájení (2x 0,70 EUR)

Nástroje:

Páječka (nejlépe 60 W)

Cín k pájení

Hliníkový plech 50x20

Pouzdro (použil jsem starý malý počítačový kufřík)

Klidně to může být nějaký MDF nebo vlastní nápady.

Krok 1: Nastavení RPi

Nastavení RPi
Nastavení RPi

V tomto produktu je tedy naše srdce, náš mozek a naše duše. Ohrožujte to dobře, protože vám to může nějakým způsobem ublížit. Používám RPi 4B 4 GB, ostatní modely by měly fungovat dobře. U starších modelů byste mohli očekávat větší zpoždění.

Z naší školy jsme získali operační systém s nějakým předinstalovaným softwarem, jako je phpMyAdmin.

Nejprve se ujistěte, že se můžete připojit k vašemu Raspberry Pi přes ssh, budeme to potřebovat spoustu času.

Nejprve bychom tedy měli povolit sběrnici SPI, piny GPIO a deaktivovat další sběrnice, nebudeme je potřebovat.

To lze provést v nabídce raspi-config. Přejděte na Rozhraní a povolte GPIO a SPI normálně to nebude nutné. Když jste tady, rozšiřte své úložiště tak, že přejdete na pokročilé a poté na Enter rozšíříte úložiště.

Nyní restartujte. Budeme potřebovat nějaká rozšíření, abychom mohli používat VS Code na našem pí, ke spuštění našeho serveru a databáze.

Proces instalace rozšíření VS Code najdete zde.

Nyní nainstalujeme rozšíření pro náš server a databázi. Použijte terminál a zadejte „python install flask, flask-cors, mysql-python-connector, eventlet“počkejte na dokončení.

Nyní můžeme začít s přípravou projektu.

Krok 2: MCP3008 + TMP36

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

Máme tedy 6 senzorů: 4 plynové, 1 vlhkost + teplota a 1 teplotní senzor. Je skutečným úkolem, aby byly všechny funkční. Všechny snímače jsou analogové, takže musíme převést analogový signál na digitální. Důvodem je, že RPi (Rasberry Pi) může „rozumět“pouze digitálním signálům. Pro více informací klikněte zde.

K dokončení tohoto úkolu budete potřebovat MCP3008, bude to fungovat skvěle!

Má 16 portů, počítá se shora (malá bublina) doleva, dolů, z druhé strany a nahoru. Pin1-8 jsou vstupy pro analogový signál z našich senzorů. Pin 9 na druhé straně je GND, který musí být připojen ke GND celého obvodu, jinak by to nefungovalo. Pin 10-13 musí být zapojen pečlivěji, budou přenášet data do az RPi. Pin 14 je další GND a kolíky 15 a 16 jsou VCC, tyto musí být připojeny k kladné straně obvodu.

Toto je rozložení kabeláže:

  • MCP3008 VDD na externí 3,3 V MCP3008 VREF na externí 3,3 V
  • MCP3008 AGND na externí GND
  • MCP3008 DGND na externíGND
  • Pin MCP3008 CLK na Raspberry Pi 18
  • MCP3008 DOUT na pin Raspberry Pi 23
  • Pin MCP3008 DIN na Raspberry Pi 24
  • Pin MCP3008 CS/SHDN na Raspberry Pi 25

Toto je také vhodný čas pro připojení GND z RPI k externímu GND. Díky tomu bude proudit proud z RPi.

Zde je návod, jak to správně připojit.

Ujistěte se, že jste připojili správnou cestu, jinak můžete vše zkratovat!

Zde přichází na místo první část kódu.

Můžete zkopírovat můj kód z mého projektu github pod models. Analog_Digital.

Ve spodní části stránky najdete zdrojový kód, aby fungoval.

Potřebujeme ale náš první senzor, abychom mohli testovat.

Potřebujeme vyzkoušet náš senzor, jestli funguje. Připojte 3,3 V nebo 5 V napájecí zdroj na kladnou stranu TMP36. Nezapomeňte jej také připojit k GND, možná se stane něco hloupého, ale věřte mi. To je realita;). Pomocí multimetru můžete vyzkoušet výstup senzoru, toto je prostřední pin. Pomocí této jednoduché rovnice můžete kontrolovat teplotu ve ° C. ((milivolty*vstupní napětí) -500)/10 a voila donne! Sbohem! Žádný hahah, potřebujeme MCP3008. Připojte analogový pin pro váš TMP36 k prvnímu vstupnímu pinu MCP3008. Toto je pin 0.

Pro tuto třídu MCP můžete použít ukázkový kód v dolní části. Nebo něco, co najdete online, bude fungovat dobře.

Krok 3: Databáze

Takže teď, když můžeme číst v našem prvním senzoru, musíme jej přihlásit do databáze. Toto je paměť našeho mozku. Tuto databázi jsem navrhl tak, aby byla rozšiřitelná a snadno upravitelná pro budoucí změny.

Nejprve si tedy musíme promyslet, co získáme jako vstupy, a pokud potřebujeme zaznamenávat konkrétní věci, jako jsou stavy určitých objektů.

Moje odpověď by byla: vstup ze 6 senzorů, takže potřebujeme vytvořit tabulku senzorů, pomocí těchto senzorů vytvoříme hodnoty. Co je spojeno s hodnotou? Pro mě je to stav okna, je otevřené nebo je zavřené, zatímco senzor měřil hodnotu. Ale poloha je také faktorem mé hodnoty, takže to přidáme. Důležitý je také čas a datum hodnoty, takže to přidám.

Pro budoucí rozšíření jsem přidal uživatelskou tabulku.

Jaká je tedy moje představa pro tabulky: hodnoty tabulky, adresa tabulky (propojeno s pokojem), stolní místnost (propojeno s hodnotou), okno tabulky (spojeno s hodnotou), tabulkový senzor (spojeno s hodnotou) a tabulka ve volné přírodě pro uživatelé.

Pokud jde o propojení tabulek dohromady. Každá hodnota potřebuje jeden senzor, jedno okno, hodnotu pro senzor, ID, abychom mohli hodnotu učinit jedinečnou, časové razítko, kdy byla hodnota vytvořena, a jako poslední nepotřebujeme místnost, takže je volitelná, ale může být přidal.

Takhle to teď vypadá. To je to, co používám pro zbytek svého projektu.

Krok 4: HNT11, pro skutečné chlapce

Protože jsme nesměli používat žádný druh knihoven. Všechno si musíme naprogramovat sami.

HNT11 je jednovodičový systém, takže to znamená, že máte GND a VCC jako jakékoli jiné elektronické zařízení, ale 3pinový je vstupní a výstupní kolík. Je to tedy zvláštní, ale hodně jsem se toho naučil.

Připojte VCC k externímu 3.3V a GND k externímu GND.

Datový list DHT11 obsahuje vše pro použití těchto senzorů.

Můžeme určit, že vysoký bit obsahuje nízký a vysoký bit. Trvání vysoké části však určuje bit pro skutečné. Pokud je vysoká část emitována déle než 100 µs (normálně 127 µs), bit je vysoký. Je bit kratší než 100 µs (normálně kolem 78 µs), bit je nízký.

Když je HNT11 aktivován, začne vysílat signály. To je vždy 41 bitů. Začíná to start bitem, který nic neznamená, takže tento můžeme přeskočit. Prvních 16 bitů/ 2 bajtů je celočíselná a plovoucí část pro vlhkost. Je to stejné pro poslední 2 bajty, ale nyní je to pro teplotu.

Stačí tedy vypočítat trvání každého bitu a pak jsme hotovi.

Ve zdrojovém kódu pod DHT11 najdete moji metodu řešení tohoto problému.

Krok 5: Senzory plynu (pouze legendy)

Senzory plynu (pouze legendy)
Senzory plynu (pouze legendy)
Senzory plynu (pouze legendy)
Senzory plynu (pouze legendy)

Na začátku projektu jsem si řekl, že by bylo skvělé použít mnoho senzorů. Přemýšlejte, než budete jednat a nakupovat na místě, ušetří vám to mnoho času na spaní! Protože můžete začít dříve a díky tomu budete ochotnější jít do toho.

Mám tedy 4 senzory plynu. MQ135, MQ8, MQ4 a MQ7 všechny tyto senzory mají specifické plyny, které měří nejlépe. Ale všechny se liší ve své konfiguraci.

Nejprve jsem tedy použil datový list, což mi nedělalo žádné přání. Pak jsem hledal příklady kódu. Co jsem našel, byla jedna knihovna od Adafruit. Snažil jsem se to co nejlépe replikovat. Fungovalo to s jedním ze čtyř senzorů.

Nechal jsem to chvíli odpočinout a vrátil se k tomu.

Co jsem udělal, aby to fungovalo pro ten jeden senzor, je:

- Pomocí datového listu jsem označil body plynu, který jsem chtěl změřit. Takže 1 ro/rs až 400ppm, 1,2 až 600ppm…

- Pak jsem všechny ty body dal do excelu a extrahoval vzorec pro křivku. Uložil jsem to do své databáze.

- Z datového listu jsem také vyčetl normální odpor a odpor čistého vzduchu. Tyto hodnoty byly také uloženy v databázi.

Nalil jsem to všechno do nějakého kódu, najdete to jako poslední tři funkce ve třídě MCP3008. Ale to ještě není hotové, bohužel jsem neměl dost času.

Krok 6: Regulátor řazení, 74HC595AG

Regulátor řazení, 74HC595AG
Regulátor řazení, 74HC595AG
Regulátor řazení, 74HC595AG
Regulátor řazení, 74HC595AG
Regulátor řazení, 74HC595AG
Regulátor řazení, 74HC595AG
Regulátor řazení, 74HC595AG
Regulátor řazení, 74HC595AG

Takže tohle je IC. A dělá něco zvláštního, s tímto zařízením je možné použít méně GPIO výstupů pro stejný výstupní signál. Použil jsem to pro LCD (Liquid Crystal Display) a mé LED diody. Ukážu IP adresu na LCD, aby každý mohl surfovat na web.

LED diody vybírají moudře 2 červené, 3 žluté a 2 zelené. To kdykoli ukáže kvalitu vzduchu v místnosti.

Shiftregister je paralelní výstupní zařízení, takže není možné v určitém časovém období vysílat různé signály. To by bylo možné, pokud by bylo naprogramováno zvenčí, ale není nativně zálohováno.

Jak používat IC? Máte 5 vstupů a 9 výstupů. 8 logických výstupů pro 8 pinů a poté 9. pin pro odeslání zbývajících dat do jiného registru posunů.

Takže připojíme pin 16 k externímu VCC, další pin je první výstup, takže pro LCD to budeme potřebovat.. Pin 14 je datová linka, sem budeme posílat data. 13. kolík je spínač, zapnutý nízký signál, IC vyžaduje vysoký signál k jeho vypnutí. Pin 12 je pin, kde můžeme určit, kdy byl bit odeslán, když tento pin stáhnete dolů, takže z vysokého na nízký přečte stav signálu na pinu 13 a uloží jej do své 8bitové paměti. Pin 11 je podobný, když je tento pin nastaven vysoko, pak nízko, na výstup vyvede 8 bitů. A poslední pin, pin 10 je hlavní reset, tento pin musí zůstat vysoký, jinak nebude fungovat. Poslední připojení je GND pin 8, který potřebujeme k připojení tohoto externího GND.

Takže teď připojte kolíky, jak se vám bude líbit, k malinovému pi. Způsob, jakým jsem to udělal, bylo spojit je co nejblíže k sobě, abych se ujistil, že vím, kde jsou.

Když získáte správný výstup. Můžete to pájet na PCB pomocí LED. a 220 Ohm odpory. Pájejte výstup IC na odpovídající LED. Nyní byste měli mít něco takového.

Můj testovací kód najdete zde pod Shiftregister. Když pracujete s 74HC595N, nebudete potřebovat MR, takže jej můžete nechat nepřipojený.

LCD je téměř stejný. Je docela snadné jej použít s registrem posunu, protože vstup pro LCD je přesně vstupem pro registr řazení.

Pro LCD existuje nějaký jiný kód, aby to fungovalo, ale je to docela stejné jako jen posuvný registr. Testovací kód najdete zde pod LCD.

Krok 7: Frontend, cenná lekce

Takže tady budu bloudit, toto je část toho, jak byste to měli udělat. To je něco velmi velmi cenného, co jsme se naučili.

Vytvořte frontend před backendem !!!!

Udělal jsem to obráceně. Zbytečně jsem telefonoval do své databáze, trávím tím hodně času.

Na úvodní stránce jsem potřeboval aktuální teplotu a vlhkost a hodnoty všech plynových senzorů v pěkném grafu. Také musím ukázat IP adresu RPi.

Na stránce senzorů potřebuji výběr jednoho senzoru a čas výběru. Vybral jsem pro výběr jeden den a poté období od toho dne. To mi to hodně usnadnilo, protože jsem to mohl více ovládat.

Na poslední stránce nastavení je možné spravovat určité hodnoty, jako jsou zdravé nebezpečné nebo nebezpečné úrovně plynu a teploty. Pokud to cítíte, můžete také provést restart RPi.

Nejprve jsem tedy vytvořil design, abych mohl snadno začít pracovat na kódovací části. Postupně jsem postupoval po jedné věci. Úkol byl nejprve mobilní, takže se nejprve zaměřím na to. Pak se dostanu na větší obrazovky.

Moje stránky, css a js najdete v mém Githubu.

Krok 8: Backend

Tato část je část, kterou jsem smíchal s frontendem. Když jsem vytvořil něco pro frontend, fungovalo to na backendu. Revizi později by tedy nepotřeboval. To bylo něco, co jsem v první řadě neudělal, a kvůli tomu jsem ztratil určitě 2 týdny času. Já hlupák! Ale lekci, kterou si s radostí beru pro jiné projekty.

Takže když děláte backend, vytvořte něco, co použijete. Ale udělejte z něj důkaz budoucnosti tím, že ho uděláte opakovaně použitelným a ne pevně kódovaným. Když tedy potřebuji posledních 50 hodnot svého DHT11, zkontroluji, zda se vytvářejí hodnoty? Ano, jak je zařadím do databáze. Jak je dostanu z databáze. Jak to ukážu? Graf, graf nebo jen prostá data? Poté vytvořím novou trasu s různými parametry a vlastnostmi, jako jsou data, konkrétní názvy senzorů nebo to, co budu volat. Mám na mysli zavolat všechny hodnoty ze senzorů MQ nebo zavolat všechny senzory s MQ v názvu? Pak jsem vložil nějaké zpracování chyb. Když je požadavek z volání správnou metodou, pak může pokračovat, jinak se zobrazí pěkná chyba.

Také zde jsou umístěna vlákna, jedná se o části softwaru, které vám umožňují spouštět paralelní kód. Dalo by se spustit volání z webových stránek, funkce pro vytváření hodnot a led+shiftregister. Tyto funkce běží zcela nezávisle na sobě.

Takže za ledky. Udělal jsem spodní/ zdravou hodnotu pro CO2. Tato hodnota pochází z několika gouvernementálních zdrojů. Zdravá hodnota pro třídy je pod 600 ppm CO2 na metr krychlový. Nezdravá hodnota je vše nad 2000 ppm. LED diody tedy tvoří most. Pokud je hodnota senzoru MQ4 1400, automaticky vypočítá, v jaké míře nebezpečí se nachází. 2000 - 600 = 1400, takže celkový rozsah je 1400 /7 = 200. Takže když hodnota dosáhne 550, zobrazí se zelená LED. 750 ukazuje 2 zelené LED diody, 950 1 žlutá 2 zelené LED diody. A tak dále.

Když hodnota přesáhne střed, otevře se okno. Kvůli vysokému točivému momentu a přesnosti jsem použil steppenmotor. A když hodnota přesáhne 2000, spustí se malý alarm. To má poplašit lidi uvnitř místnosti.

Můžeme také detekovat kouřové plyny, takže když dojde k požáru. I to registruje. Když překročí určitou hodnotu, spustí se alarm a LED bliká.

LCD je hlavně k tomu, aby zobrazoval IP adresu, abyste mohli surfovat na web.

Všechno + kód najdete v mém Githubinu app.py

Krok 9: Výroba pouzdra

Výroba případu
Výroba případu
Výroba případu
Výroba případu
Výroba případu
Výroba případu

Našel jsem malou počítačovou skříň pro všechny své součásti.

Řezal jsem hliníkový plech na míru. A vyvrtal několik otvorů, kde by list spočíval. To odpovídá otvorům na základní desce.

Pak jsem se podíval, jak se všechno vejde do pouzdra. Všechno jsem rozložil a dal se do pohybu.

Když jsem se spokojil s tím, jak to bude fungovat, začal jsem označovat otvory, které jsem potřeboval pro senzory, RPi, PCB, powermodules a modul steppenmotor. Otvory jsou pro distanční podložku desky plošných spojů, díky čemuž bude dostatek místa, aby se kovové části nedostaly do kontaktu s hliníkovým plechem. To také dává pěkný vzhled.

Z každého IC nebo jiného zařízení jsem popadl kabely a svázal je dohromady. To proto, že jsem viděl, jaké kabely jsou k čemu. Každé jsem všechno pěkně umístil na nějaké podpěry a pomocí několika matic a šroubů vše pěkně držel na svém místě.

K napájení toho všeho jsem použil 2 baterie. Poskytují spoustu energie, ale stále se jedná o baterie, takže se časem vybijí. Tyto jsem připevnil suchým zipem. Použil jsem suchý zip, protože pak jsem mohl baterie snadno vyměnit nebo se jich zbavit.

Steppenmotor, LCD a LED diody budou vycházet z horní části skříně. Opatrně jsem tedy položil kryt kufru nahoru a označil otvory a vyvrtal je vrtákem. Vše tedy můžeme snadno vidět.

Když je případ hotový, musíme vše zapojit, zde najdete schéma zapojení.

Krok 10: Vyhodnocení a závěr

Vyhodnocení a závěr
Vyhodnocení a závěr

Toto je/byl můj první projekt.

Myslím, že to vypadá dobře.

Naučil jsem se spoustu nových věcí, naučil jsem se skvělou i špatnou stránku projektového řízení. Opravdu to byla cenná lekce. Přiklonil jsem se, že se nemůžeš dočkat, opravdu musíš dávat dál. Musíte zdokumentovat každý pohyb (téměř velmi pohyb) a že to musíte udělat, když jste to právě udělali.

Soustřeďte se na 1 věc najednou. Chcete teplotu na obrazovce? Udělejte to, tohle a tamto. Nečekejte a zkuste to nechat projít. Nepomůže to. A přijde o vás tak drahocenný čas.

Také 4 týdny se zdají být hodně času. Ale méně je pravda. To prostě není správné. Máte jen 4 týdny. První 2 týdny opravdu nebyl tak velký tlak. Dokončení 3 týdnů a 4 týden bezesné noci. Takto byste to neměli dělat.

Byl jsem možná trochu ambiciózní: mám super malé pouzdro, žádné snadno použitelné senzory, baterie … Udělejte to mnohem jednodušší a pak to postupně ztěžujte a ztěžujte, jen tak získáte dobrý prototyp/ produkt.

Doporučuje: