Obsah:

Kontrola evolúcie triedy CPC: 10 krokov
Kontrola evolúcie triedy CPC: 10 krokov

Video: Kontrola evolúcie triedy CPC: 10 krokov

Video: Kontrola evolúcie triedy CPC: 10 krokov
Video: How early life experience is written into DNA | Moshe Szyf 2024, November
Anonim
Kontrola evolúcie triedy CPC
Kontrola evolúcie triedy CPC
Kontrola evolúcie triedy CPC
Kontrola evolúcie triedy CPC
Kontrola evolúcie triedy CPC
Kontrola evolúcie triedy CPC

Dobrý deň, som študent z Belgicka a toto je môj prvý veľký projekt pre bakalárske štúdium! Tento návod sa týka toho, ako vyrobiť merač rozpustnosti vzduchu v uzavretých miestnostiach, najmä v triedach!

Počul som, že si hovoríte, prečo tento projekt? No všetko sa to začalo, keď som išiel na strednú školu. Popoludní po dobrom obede a prestávke sa hodiny začínajú znova. Ale je tu problém, učiteľ zabudol otvoriť okno, kým sme obedovali, takže je horúco, spotené a nemôžete sa sústrediť, pretože zaspávate. Dôvodom je, že vo vzduchu je veľa CO2.

Môj projekt to vyrieši a zvýši koncentráciu všetkých študentov počas vyučovania.

Zásoby

1 x Raspberry Pi 4 (55 €)

1 x steppenmotor s ovládačom (5 €)

2 x 12v 6800 mAh batéria (2x 20 €)

2 x stepdown modul (2x 5 €)

1 x 16x2 LCD (1,5 €)

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

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

LED diódy: 2x zelená, 2x červená, 3x žltá (nachádza sa v nejakom starom hardvéri, bežne každá 0,01 €)

Konektor pre batérie (2 x 0,35 EUR)

40 konektorových káblov f-to-f (1,80 €)

40 konektorových káblov f-to-m (1,80 €)

20 konektorových káblov m-to-m (1,80 €)

2 x PCB na spájkovanie (2x 0,70 €)

Náradie:

Spájkovačka (najlepšie 60 W)

Cín na spájku

Hliníkový plech 50x20

Skriňa (použil som starú malú počítačovú skriňu)

Pokojne to môže byť nejaký MDF alebo vlastné nápady.

Krok 1: Nastavenie RPi

Nastavenie RPi
Nastavenie RPi

V tomto produkte je teda naše srdce, náš mozog a naša duša. Ohrozte to dobre, pretože vám to môže nejakým spôsobom ublížiť. Používam RPi 4B 4 GB, ostatné modely by mali fungovať dobre. Na starších modeloch by ste mohli očakávať ďalšie oneskorenie.

OS sme získali z našej školy s nejakým predinštalovaným softvérom, ako je phpMyAdmin.

Najprv sa uistite, že sa môžete pripojiť k svojmu Raspberry Pi cez ssh, budeme na to potrebovať veľa času.

Najprv by sme teda mali povoliť zbernicu SPI, piny GPIO a deaktivovať ostatné zbernice, nebudeme ich potrebovať.

Môžete to urobiť v ponuke raspi-config. Prejdite na Rozhrania a povoľte GPIO a SPI, zvyčajne to nebude potrebné. Keď ste tu, rozšírte svoje úložisko prechodom na pokročilé a potom kliknite na Enter na rozšírení úložiska.

Teraz reštartujte. Na používanie kódu VS na našom pí, na spustenie servera a databázy, budeme potrebovať niekoľko rozšírení.

Proces inštalácie rozšírenia VS Code nájdete tu.

Teraz nainštalujeme rozšírenia pre náš server a databázu. Použite terminál a zadajte príkaz „python install flask, flask-cors, mysql-python-connector, eventlet“, počkajte na dokončenie.

Teraz môžeme začať s tvorbou projektu.

Krok 2: MCP3008 + TMP36

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

Máme teda 6 senzorov: 4 plynové, 1 vlhkosť + teplota a 1 teplotný senzor. Je skutočnou úlohou nechať ich fungovať. Všetky snímače sú analógové, preto musíme analógový signál previesť na digitálny. Dôvodom je, že RPi (Rasberry Pi) dokáže iba „porozumieť“digitálnym signálom. Pre viac informácií kliknite sem.

Na splnenie tejto úlohy budete potrebovať MCP3008, bude to fungovať skvele!

Má 16 portov, ktoré počítajú zhora (malá bublina) vľavo, dole, na druhej strane a hore. Pin1-8 sú vstupy pre analógový signál z našich senzorov. Pin 9 na druhej strane je GND, ktorý musí byť pripojený k GND celého obvodu, inak by to nefungovalo. Pin 10-13 je potrebné prepojiť opatrnejšie, pretože tým sa budú prenášať údaje do a zo zariadenia RPi. Pin 14 je ďalší GND a kolíky 15 a 16 sú VCC, tieto musia byť pripojené k kladnej strane obvodu.

Toto je rozloženie pre zapojenie:

  • 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 tiež vhodný čas na pripojenie GND z RPI k externému GND. Vďaka tomu bude prúdiť elektrická energia z RPi.

Tu je návod, ako to správne pripojiť.

Pripojte sa správnym spôsobom, inak môžete všetko skratovať!

Tu prichádza na rad prvý kus kódu.

Môj kód môžete skopírovať z môjho projektu github pod models. Analog_Digital.

V spodnej časti stránky nájdete zdrojový kód, aby to fungovalo.

Potrebujeme však náš prvý senzor, aby sme mohli testovať.

Potrebujeme otestovať náš senzor, či funguje. Pripojte napájací zdroj 3,3 V alebo 5 V k kladnej strane TMP36. Nezabudnite ho pripojiť aj k GND, možno sa stane niečo hlúpe, ale verte mi. To je realita;). Na multimetri môžete otestovať výstup senzora, toto je stredný kolík. Pomocou tejto jednoduchej rovnice môžete kontrolovať teplotu v ° C. ((milivolty*vstupné napätie) -500)/10 a voila donne! Zbohom! Nie, hahah, potrebujeme MCP3008. Pripojte analógový kolík pre váš TMP36 k prvému vstupnému kolíku MCP3008. Toto je pin 0.

Pre túto triedu MCP môžete použiť ukážkový kód v spodnej časti. Alebo niečo, čo nájdete online, bude túto prácu vykonávať dobre.

Krok 3: Databáza

Takže teraz, keď môžeme čítať v našom prvom senzore, musíme ho prihlásiť do databázy. Toto je pamäť nášho mozgu. Túto databázu som navrhol tak, aby bola rozšíriteľná a ľahko upraviteľná pre budúce zmeny.

Najprv si teda musíme premyslieť, čo dostaneme ako vstupy, a ak potrebujeme zaznamenať konkrétne veci, ako napríklad stavy určitých objektov.

Moja odpoveď by bola: vstup zo 6 senzorov, takže musíme vytvoriť tabuľku senzorov, pomocou ktorých vyrobíme hodnoty. Čo je spojené s hodnotou? Pre mňa je to stav okna, je otvorené alebo je zatvorené, kým senzor meral hodnotu. Ale poloha je tiež faktorom mojej hodnoty, takže to pridáme. Čas a dátum hodnoty sú tiež dôležité, preto ich doplním.

Pre budúce rozšírenie som pridal užívateľskú tabuľku.

Aká je teda moja predstava pre tabuľky: hodnoty tabuliek, adresa tabuľky (prepojená s miestnosťou), stolová miestnosť (prepojená s hodnotou), okno tabuľky (prepojené s hodnotou), tabuľkový senzor (prepojené s hodnotou) a tabuľka vo voľnej prírode pre používateľov.

Pokiaľ ide o prepojenie tabuliek dohromady. Každá hodnota potrebuje jeden senzor, jedno okno, hodnotu pre senzor, ID, aby sme mohli hodnotu urobiť jedinečnou, časovú pečiatku, kedy bola hodnota zadaná a ako poslednú nepotrebujeme miestnosť, takže je voliteľná, ale môže byť dodal.

Takže takto to teraz vyzerá. To je to, čo používam pre zvyšok svojho projektu.

Krok 4: HNT11 pre skutočných chlapcov

Pretože nám nebolo dovolené používať žiadny druh knižníc. Všetko si musíme naprogramovať sami.

HNT11 je jednovodičový systém, takže to znamená, že máte GND a VCC ako akékoľvek iné elektronické zariadenie, ale tretí kolík je vstupný a výstupný kolík. Je to zvláštne, ale veľa som sa z toho naučil.

Pripojte VCC k externému 3.3V a GND k externému GND.

Dátový list DHT11 obsahuje všetko, čo je možné použiť tieto senzory.

Môžeme určiť, že vysoký bit obsahuje nízky a vysoký bit. Trvanie vysokej časti však určuje bit skutočne. Ak je vysoká časť emitovaná dlhšie ako 100 µs (normálne 127 µs), bit je vysoký. Je bit kratší ako 100 µs (normálne okolo 78 µs), bit je nízky.

Keď je HNT11 aktivovaný, začne vydávať signály. Toto je vždy 41 bitov. Začína sa to štartovacím bitom, ktorý nič neznamená, takže tento môžeme preskočiť. Prvých 16 bitov/ 2 bajtov je celočíselná a plávajúca časť vlhkosti. Je to rovnaké pre posledné 2 bajty, ale teraz je to pre teplotu.

Stačí nám teda vypočítať trvanie každého bitu a potom sme hotoví.

V zdrojovom kóde pod DHT11 nájdete moju metódu riešenia tohto problému.

Krok 5: Senzory plynu (iba legendy)

Senzory plynu (iba legendy)
Senzory plynu (iba legendy)
Senzory plynu (iba legendy)
Senzory plynu (iba legendy)

Na začiatku projektu som si povedal, že by bolo skvelé použiť veľa senzorov. Myslite na to, než budete konať a nakúpiť na miestnej úrovni, ušetrí vám to veľa hodín na spanie! Pretože môžete začať skôr, a tým sa stanete ochotnejšími do toho ísť.

Mám teda 4 senzory plynu. MQ135, MQ8, MQ4 a MQ7, všetky tieto senzory majú špecifické plyny, ktoré merajú najlepšie. Ale všetky sa líšia svojou konfiguráciou.

Najprv som teda použil údajový list, ale nerobilo mi to starosti. Potom som hľadal príklady kódu. To, čo som našiel, bola jedna knižnica od spoločnosti Adafruit. Snažil som sa to replikovať čo najlepšie. Fungovalo to s jedným zo štyroch senzorov.

Nechal som to chvíľu odpočívať a vrátil som sa k tomu.

Čo som urobil, aby to fungovalo pre tento jeden snímač, je:

- Pomocou údajového listu som označil body plynu, ktoré som chcel merať. Takže 1 ro/rs až 400 ppm, 1,2 až 600 ppm…

- Potom som všetky tieto body vložil do programu Excel a extrahoval som vzorec pre krivku. Uložil som to do svojej databázy.

- Z technického listu som tiež prečítal normálny odpor a odpor čistého vzduchu. Tieto hodnoty boli tiež uložené v databáze.

Toto všetko som nalial do nejakého kódu, ktorý nájdete ako posledné tri funkcie v triede MCP3008. Ale toto ešte nie je dokončené, bohužiaľ som nemal dostatok času.

Krok 6: Shiftregister, 74HC595AG

Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG
Shiftregister, 74HC595AG

Takže toto je IC. A robí niečo špeciálne, s týmto zariadením je možné použiť menej GPIO výstupov na rovnaký výstupný signál. Použil som to pre LCD (displej z tekutých kryštálov) a moje LED diódy. Na LCD displeji ukážem IP adresu, aby mohol každý surfovať na stránke.

LED diódy vyberajú múdro 2 červené, 3 žlté a 2 zelené. Toto kedykoľvek ukáže kvalitu vzduchu v miestnosti.

Register posunov je paralelné výstupné zariadenie, takže nie je možné v určitom časovom období vydávať rôzne signály. To je možné, ak je naprogramované zvonku, ale nie je natívne podporované.

Ako používať IC? Máte 5 vstupov a 9 výstupov. 8 logických výstupov pre 8 kolíkov a potom 9. kolík na odoslanie zvyšných údajov do iného registra posunov.

Takže pripojíme pin 16 k externému VCC, ďalší pin je prvý výstup, takže pre LCD ho budeme potrebovať. Pin 14 je dátový riadok, sem budeme posielať údaje na. 13. kolík je vypínač, nízky signál povoľuje IC a na vypnutie je potrebný vysoký signál. Pin 12 je pin, kde môžeme určiť, kedy bol bit odoslaný, keď tento pin potiahnete nadol, tak z vysokého na nízky, číta stav signálu na pine 13 a uloží ho do svojej 8 -bitovej pamäte. Pin 11 je podobný, keď je tento pin nastavený vysoko, potom nízko, na výstup privádza 8 bitov. A posledný pin, pin 10 je hlavný reset, tento pin musí zostať vysoký, alebo nebude fungovať. Posledným pripojením je pin 8 GND, ktorý potrebujeme na pripojenie tohto k externému GND.

Takže teraz spojte kolíky, ako sa vám budú páčiť, s malinovým pi. Urobil som to tak, že som ich spojil čo najbližšie k sebe, aby som sa uistil, že viem, kde sú.

Keď získate správny výstup. Môžete to spájkovať na PCB pomocou LED diód. a rezistory 220 ohmov. Spájkujte výstup IC na zodpovedajúcu LED. Teraz by ste mali mať niečo také.

Môj testovací kód nájdete tu v časti Shiftregister. Keď pracujete s 74HC595N, nebudete potrebovať MR, aby ste ho mohli nechať nepripojený.

LCD je skoro rovnaký. Je celkom jednoduché ho použiť s registrom posunu, pretože vstup pre LCD je presne vstupom pre register posunu.

Pokiaľ ide o LCD, existuje nejaký iný kód, aby to fungovalo, ale je to úplne rovnaké ako iba register registrov. Testovací kód nájdete tu pod LCD.

Krok 7: Frontend, cenná lekcia

Tu sa teda zatúlam, toto je časť toho, ako by ste to mali urobiť. Je to niečo veľmi veľmi cenné, čo sme sa naučili.

Vytvorte frontend pred backendom !!!!

Ja som to urobil naopak. Zbytočne som telefonoval do svojej databázy, trávim tým veľa času.

Na vstupnej stránke som potreboval aktuálnu teplotu a vlhkosť a hodnoty všetkých plynových senzorov v peknom grafe. Tiež musím ukázať ip adresu RPi.

Na stránke senzorov potrebujem výber jedného senzora a čas výberu. Vybral som si na výber jeden deň a potom obdobie od toho dňa. To mi to veľmi uľahčilo, pretože som to mohol ovládať viac.

Na poslednej stránke s nastaveniami je možné spravovať určité hodnoty, ako sú zdravé nebezpečné alebo nebezpečné hladiny plynu a teploty. Ak to cítite, môžete tiež reštartovať RPi.

Najprv som teda urobil dizajn, aby som mohol ľahko začať pracovať na kódovacej časti. Postupne som napredoval po jednej veci. Úloha bola najskôr mobilná, takže sa najskôr zameriam na to. Potom sa dostanem na väčšie obrazovky.

Moje stránky, CSS a js nájdete v mojom Githube.

Krok 8: Backend

Táto časť je časť, ktorú som zmiešal s frontendom. Keď som urobil niečo pre frontend, nechal som to fungovať na backende. Neskôr by to teda nepotrebovalo revíziu. To bolo niečo, čo som v prvom rade neurobil, a kvôli tomu som stratil určite 2 týždne času. Ja hlupák! Ale lekciu, ktorú si happely beriem pre iné projekty.

Takže keď robíte backend, vytvorte niečo, čo použijete. Ale urobte z toho dôkaz budúcnosti tým, že ho urobíte opakovane použiteľným a nie pevne zakódovaným. Takže keď potrebujem posledných 50 hodnôt svojho DHT11, skontrolujem, či sa robia hodnoty? Áno, ako ich zaradím do databázy. Ako ich dostanem z databázy. Ako to ukážem? Graf, graf alebo iba obyčajné údaje? Potom urobím novú trasu s rôznymi parametrami a vlastnosťami, ako sú dátumy, konkrétne názvy senzorov alebo ako budem volať. Mám na mysli zavolať všetky hodnoty zo senzorov MQ alebo zavolám všetky senzory s MQ v názve. Potom vložím spracovanie chýb. Keď je požiadavka na hovor správnou metódou, potom môže pokračovať, inak sa zobrazí pekná chyba.

Tiež tu sú umiestnené vlákna, toto sú časti softvéru, ktoré vám umožňujú spúšťať paralelný kód. Môžete spustiť volania na webové stránky, funkciu vytvárania hodnôt a register+shiftregister. Tieto funkcie fungujú úplne nezávisle od seba.

Takže pre LED diódy. Urobil som najnižšiu/ zdravú hodnotu CO2. Táto hodnota pochádza z viacerých vládnych zdrojov. Zdravá hodnota pre triedy je nižšia ako 600 ppm CO2 na meter kubický. Nezdravá hodnota je všetko nad 2 000 ppm. LED diódy teda tvoria most. Ak je hodnota snímača MQ4 1400, automaticky vypočíta, v akej miere nebezpečenstva sa nachádza. 2000 - 600 = 1400, takže celkový rozsah je 1400 /7 = 200. Takže keď hodnota dosiahne 550, zobrazí sa zelená LED. 750 zobrazuje 2 zelené LED diódy, 950 1 žlté 2 zelené LED diódy. A tak ďalej.

Keď hodnota prekročí stred, otvorí sa okno. Steppenmotor som použil kvôli vysokému krútiacemu momentu a presnosti. A keď hodnota prekročí hodnotu 2000, spustí sa malý alarm. Toto má poplašiť ľudí v miestnosti.

Dokážeme detekovať aj dymové plyny, takže ak dôjde k požiaru. Aj to registruje. Keď prekročí určitú hodnotu, spustí sa alarm a LED dióda bliká.

Displej LCD slúži predovšetkým na zobrazenie adresy IP, aby ste mohli surfovať na webe.

Všetko + kód nájdete v mojom Githubine app.py

Krok 9: Výroba puzdra

Výroba prípadu
Výroba prípadu
Výroba prípadu
Výroba prípadu
Výroba prípadu
Výroba prípadu

Našiel som malú počítačovú skrinku pre všetky svoje súčiastky.

Rezal som hliníkový plech na mieru. A vyvŕtal niekoľko dier, kde by plech spočíval. To zodpovedá otvorom na základnej doske.

Potom som sa pozrel na to, ako sa všetko zmestí do puzdra. Rozložil som všetko a dal sa do pohybu.

Keď som bol spokojný s tým, ako to bude fungovať, začal som označovať otvory, ktoré som potreboval pre senzory, RPi, PCB, powermodules a modul steppenmotor. Otvory slúžia na oddelenie dosky plošných spojov, čím sa uvoľní miesto, aby sa kovové časti nedostali do kontaktu s hliníkovým plechom. Tiež to dáva pekný vzhľad.

Z každého integrovaného obvodu alebo iného zariadenia som chytil káble a zviazal ich o niečo nižšie. Je to preto, že som videl, na čo sú káble. Každý som všetko pekne umiestnil na nejaké stojky a pomocou matíc a skrutiek všetko pekne držal na svojom mieste.

Na napájanie tohto všetkého som použil 2 batérie. Poskytujú veľa energie, ale stále ide o batérie, takže sa časom vybijú. Tieto som namontoval na suchý zips. Použil som suchý zips, pretože potom som mohol batérie ľahko vymeniť alebo sa ich zbaviť.

Steppenmotor, LCD a LED diódy budú vystupovať z hornej časti puzdra. Opatrne som teda položil kryt puzdra na vrch a označil otvory a vyvŕtal ich vŕtačkou. Všetko teda môžeme ľahko vidieť.

Keď je prípad hotový, musíme všetko prepojiť, tu nájdete schému zapojenia.

Krok 10: Hodnotenie a záver

Vyhodnotenie a záver
Vyhodnotenie a záver

Toto je/bol môj prvý projekt.

Hádam to vyzerá v poriadku.

Naučil som sa veľa nových vecí, naučil som sa skvelú aj zlú stránku projektového riadenia. Naozaj to bola cenná lekcia. Sklonil som sa, že sa nemôžeš dočkať, naozaj musíš dávať ďalej. Každý pohyb (takmer veľmi pohyb) musíte zdokumentovať a musíte to urobiť hneď, ako ste to urobili.

Sústreďte sa na jednu vec naraz. Chcete teplotu na obrazovke? Urob to, toto a tamto. Nečakajte ani sa nepokúšajte nechať to plynúť. To nepomôže. A stratí tak drahocenný čas.

Tiež 4 týždne sa zdajú veľa času. Ale menej je pravda. Toto jednoducho nie je správne. Máte iba 4 týždne. Prvé 2 týždne nie je taký veľký tlak. Dokončenie 3 týždňov a 4 týždne bezsenná noc. Takto by ste to nemali robiť.

Bol som možno trochu ambiciózny: mám veľmi malé puzdro, žiadne ľahko použiteľné senzory, batérie … Urobte to oveľa jednoduchšie a potom postupne ťažšie a ťažšie, až potom získate dobrý prototyp/ produkt.

Odporúča: