Tartalomjegyzék:

TheAir - gázérzékelő projekt: 10 lépés
TheAir - gázérzékelő projekt: 10 lépés

Videó: TheAir - gázérzékelő projekt: 10 lépés

Videó: TheAir - gázérzékelő projekt: 10 lépés
Videó: China's project in the Desert gave the American president goosebumps. 2024, Július
Anonim
TheAir - Gázérzékelő projekt
TheAir - Gázérzékelő projekt

Szén -monoxid és szén -dioxid, más néven CO és CO2. Gázok, amelyek színtelenek, szagtalanok, íztelenek és nyíltan veszélyesek nagy koncentrációban, zárt helyiségben. Ha például azt mondja, hogy egy diákszobában rosszul szigetelt, nincs jó légáramlás, és valamilyen okból kifolyólag a kenyérpirító furcsa hangot ad pirítós közben. Akkor érintkezhet ezekkel a gázokkal, és ha ez megtörténik, reméljük, hogy csak egy kis fejfájással végződik, mert nagy koncentrációban tehetetlenné válik, vagy akár meg is ölhet (bár nagyon ritkán).

Ezért úgy döntöttem, hogy előállok ezzel a projekttel. Az ötletem egyszerű, használj ventilátorokat légáramláshoz. Jó levegő be és rossz levegő, hogy úgy mondjam. Az extra hasznosság érdekében hozzáadtam egy extra hőmérséklet -érzékelőt, egy gombot a kézi aktiválású ventilátorokhoz, valamint egy weboldalt azok számára, akik szeretnek statisztikákat látni és/vagy aktiválni a ventilátorokat a számítógépről.

Diákként, szülőként, egyedülálló személyként vagy élőlényként. Ez az, amit általában el akarsz kerülni, amikor saját otthonodban élsz. Ez segít azoknak, akik szeretik egy kicsit megkönnyíteni az életüket.

Kellékek

  • Raspberry Pi 3+
  • Mini-USB töltő 5V/2,5A
  • Micro-sd kártya
  • Érzékelők

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (hőmérséklet)
  • 2 x 12V DC ventilátor
  • 2 x 2n2222 tranzisztor
  • LCD 16*2 kijelző
  • Nyomógomb
  • MCP3008
  • Logi szintváltó
  • Ethernet kábel (beállítási okokból)

1. lépés: A Raspberry Pi beállítása

Raspberry Pi beállítás
Raspberry Pi beállítás
Raspberry Pi beállítás
Raspberry Pi beállítás

Mielőtt az Rpi -vel dolgoznánk, szükségünk lesz néhány szoftverre.

  • WinSCP vagy FilleZilla (opcionális, ha fájlokat szeretne átvinni a számítógépről az Rpi -re)
  • Win32 lemez vagy Etcher (amelyiket inkább preferálja)
  • Putty vagy MobaXterm (amit jobban szeret)
  • Raspbian kép asztallal

Mielőtt elkezdeném, szeretném megemlíteni, hogy az oktatóanyag elkészítésekor, amikor egy programot választok a másik helyett, NEM azt jelenti, hogy ajánlom. Például szeretem az etchert használni, mert felhasználóbarátabb, de a Win32 -nek lehetősége van biztonsági mentésre. Most ez kimaradt a rendszeremből, kezdjük.

Ha már rendelkezik Rpi -vel, amely csatlakozik a wifi hálózatához, ugorjon a 3. lépésre.

Először az Etcher segítségével tesszük a Raspbian képet az SD -kártyára. Mielőtt elővesszük az sd kártyát, megváltoztatunk néhány "dolgot" a cmdline.txt fájlban, amely megtalálható a képen. Nyissa meg a.txt fájlt -> Adja hozzá ezt a sort "ip = 169.254.10.1" (nincs idézőjel) a sor végén (minden 1 sorban) -> Fájl mentése

Másodszor készítsen egy üres "ssh" nevű mappát a rendszerindító partícióban (idézőjelek nélkül).

Ezt követően biztonságosan kilökheti a Microsd -t és behelyezheti az Rpi -be.

A merev kódolású statikus IP oka az, hogy megkönnyíti az Rpi -hez való csatlakozást. Ha valamilyen oknál fogva az Rpi nem rendelkezik ip -vel DHCP -vel, akkor könnyen használhatja a statikus ip -t.

2. lépés: Csatlakozás létrehozása és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz

Csatlakozás és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz
Csatlakozás és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz
Csatlakozás és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz
Csatlakozás és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz
Csatlakozás és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz
Csatlakozás és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz
Csatlakozás és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz
Csatlakozás és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz

Elindítjuk az Rpi -t -> csatlakoztassuk az Ethernet -kábelt a számítógép és az Rpi között.

  1. Indítsa el a Putty -t, és töltse ki ezt:

    • Gazdagép neve (vagy IP -címe): 169.254.10.1
    • Port: 22
  2. Egy terminál jelenik meg, és beírja az alapértelmezett felhasználónevet és jelszót:

    • Felhasználónév: pi
    • Jelszó: málna

Most, hogy helyileg csatlakoztunk az rpi -hez, szeretnénk, ha az Rpi csatlakozna a wifi -hez.

  1. Extra: írja be a "sudo raspi-config" parancsot
  2. Itt meg kell változtatnia a pi felhasználó jelszavát (biztonsági okokból)
  3. Ezután lépjen a Lokalizálási beállítások -> Idő módosítása (válassza ki a megfelelőt) -> Ezután menjen a Wifi országba -> válassza ki az országot.
  4. Zárja be a raspi-configot, és indítsa újra.
  5. Bejelentkezéskor ideiglenesen tegye magát root felhasználóvá -> sudo -i
  6. Írja be ezt a parancsot, hogy hozzáadja a hálózatot az Rpi -hez (kód az alábbi listában)

    • password = "jelszó" (idézőjelekkel)
    • Hálózat neve = "SSID"
    • Ne felejtse el használni a dupla >>! Fontos!

echo "jelszó" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Most indítsa újra

Újracsatlakozáskor ellenőrizze az ip -t a következő beírásával:

ifconfig

és ellenőrizze a wlan0 -t, az inet mellett.

Most, hogy van internetkapcsolatunk, tegyünk egy "gyors" frissítést.

sudo apt frissítés

sudo apt dist -upgrade -y

Ez eltarthat egy ideig.

3. lépés: DS18B20 érzékelő (hőmérséklet)-1 vezetékes

DS18B20 érzékelő (hőmérséklet)-1 vezetékes
DS18B20 érzékelő (hőmérséklet)-1 vezetékes
DS18B20 érzékelő (hőmérséklet)-1 vezetékes
DS18B20 érzékelő (hőmérséklet)-1 vezetékes

Minden projektnél mindig lesz valami különleges, amit meg kell tenni, különben pillanatnyilag nem fog sikerülni.

Ezúttal a DS18B20 hőmérséklet-érzékelővel rendelkezünk, amelyhez 1 vezeték szükséges, de nem fogom megmagyarázni, miért, de elmagyarázom, hogyan kell legalább működni.

Ehhez vissza kell térnünk az Rpi-n lévő raspi-confighoz, a szép kék képernyőhöz.

  1. Lépjen az Interfész beállítások oldalra
  2. Válassza az 1 vezetékes lehetőséget, és válassza az engedélyezés lehetőséget.

Kész…

Csak viccel.

Most módosítanunk kell a /boot/config.txt fájlt

sudo nano /boot/config.txt

Adja hozzá ezt a sort alul.

# Enable onewire

dtoverlay = w1-gpio

Most sudo indítsa újra a dolgot, és most készen vagyunk.

Annak ellenőrzéséhez, hogy működik -e, csatlakoztassa az érzékelőt az Rpi -hez, majd menjen vissza a terminálhoz, és írja be ezt a kódot (lásd a következő lépést: Hardver a hőmérséklet -érzékelő csatlakoztatásáról).

cd/sys/bus/w1/devices/w1_bus_master1

ls

A bal felső sarokban sötétkék számokat és betűket kell látnia. Írja le ezt az információt később, amikor a github kódjával dolgozunk.

Ha valamilyen oknál fogva nem működik, ellenőrizze ezt a linket, amely mélyebbre hat.

4. lépés: MCP3008 - Analóg érzékelés

MCP3008 - Analóg érzékelés
MCP3008 - Analóg érzékelés
MCP3008 - Analóg érzékelés
MCP3008 - Analóg érzékelés

Ahogy a hőmérséklet -érzékelőt módosítottuk, a többi érzékelőn is változtatnunk kell, mivel analóg adatokban kell olvasni őket. Itt az MCP3008 jól jön, meg kell változtatnunk az SPI interfészt is.

sudo raspi-config

Lépjen az Interfészbeállítások -> SPI kiválasztása -> engedélyezés menüpontra.

Ezután fejezze be.

5. lépés: Hardver

Még nem végeztünk teljesen az Rpi -vel, de elég ahhoz, hogy elkezdhessük a hardver építését és összerakását.

Néhány tanács az, hogy alaposan ellenőrizze a kapcsolatokat az építés során, hogy megbizonyosodjon arról, hogy nem… felrobbantja az Rpi -t.

Ezenkívül a sémában észreveszi, hogy egyes összetevők csak egyszer vannak rajta, annak ellenére, hogy ugyanazon összetevővel több mint 1 -en fogunk dolgozni. Ez csak annyit jelent, hogy meg kell ismételnie ugyanazt a folyamatot az 1 komponens felépítése során. Egy kis kivétel van, az mq-x érzékelők nem igényelnek extra szintváltót vagy MCP3008-at. Csak adjon hozzá egy extra zöld kábelt (pdf -ben) a szintváltóhoz és az MCP3008 -hoz.

Extra szerkesztés: A ventilátoroknak tranzisztorokat kell használniuk kapcsolóként. 2n2222A tranzisztorokat használok 1 ventilátorhoz, mert 2 ventilátor nagy terhet jelenthet.

Ha olyan tranzisztorral rendelkezik, amely nagyobb áramot képes kezelni, akkor hagyja ki ennek a lépésnek az utolsó részét.

Ha nincs olyan, mint én, akkor ezt így kell tennie: 1 ventilátor = 1 tranzisztor, 2 ventilátor = 2 tranzisztor stb. (Minden ventilátor saját tranzisztor + dióda, mint a pdf -ben).

A 7. lépésben: Git -kód… később is hozzá kell adnia néhány kódot az app.py fájlhoz a backend_project fájlban.

6. lépés: Mariadb adatbázis létrehozása

Mariadb adatbázis létrehozása
Mariadb adatbázis létrehozása

Ahogy a cím is sugallja, létrehozunk egy adatbázist, hogy legyen helyünk az érzékelő adataink tárolására.

Először is töltse le a Mariadb -t az Rpi -ről.

sudo apt-get install mariadb-server

Telepítés után használjuk.

mysql -u root

A jelszó üres, így nincs mit beírni. Nyomd meg az Entert.

Most hozzunk létre egy felhasználót.

FELHASZNÁLÓ LÉTREHOZÁSA 'user'@'%' IDENTIFIED by 'userdb';

ÖSSZESÍTJEN MINDEN PRIVILEGÉT *. * A 'user'@'%' SZÁMÍTÁSI OPCIÓVAL;

FLUSH PRIVILEGES;

A kilépéshez és a szolgáltatás gyors újraindításához nyomja le a Ctrl + C billentyűkombinációt:

sudo szolgáltatás mysql újraindítása

Bejelentkezés felhasználónévvel: felhasználó és jelszó: userdb:

mysql -u felhasználó -p

Ideje létrehozni az adatbázist.

ADATBÁZIS LÉTREHOZÁSA project_db DEFAULT CHARACTER SET utf8;

USE project_db

Hozzon létre egy "historiek" (történelem) táblázatot.

TÁBLÁZAT LÉTREHOZÁSA, HA NEM LÉTEZIK "historiek" ("id" INT NOT NULL AUTO_INCREMENT, `sensorID` VARCHAR (5) NOT NULL,` nullapont` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `waarde` FLOAT (4) NULL DEFAULT 0, PRIMARY KEY (` id ')) MOTOR = InnoDB;

És íme, az adatbázis elkészült.

7. lépés: Github kód és tesztelés

Github kód és tesztelés
Github kód és tesztelés

Közeledünk a projekt végéhez.

Mielőtt megkapnánk a kódot, importálnunk kell néhány modult az Rpi -be:

pip3 telepítse a Flask_MySQL -t

pip3 telepítse a flask-socketio-t

pip3 install -U lombik -cors

pip3 install spidev

Most szükségünk van a kódra, hogy működjön, írja be a terminált:

git klón

Ellenőrizze, hogy a mappa ott van -e:

ls

Most 2 terminálra lesz szüksége, így praktikus, ha jobb egérgombbal kattint a terminálra, és rákattint a Duplicate session-re:

A cd paranccsal lépjen a backend_project és a hőmérséklet oldalra.

Mielőtt elkezdenénk a programokat tesztelés céljából. Emlékszel még a 3. lépésre az 1 vezetékes érzékelővel, ahol fel kell írnod néhány számot? Ne aggódjon, ha igen, csak nézzen meg egy gyors pillantást a 3. lépésre.

Ezeket a számokat hozzáadjuk a kódhoz, mert használatához ismernie kell a megfelelő érzékelőt.

A terminál a hőmérséklet mappával, megtalálja az app.py. Nyitni fogjuk.

sudo nano app.py

Keresse meg a "def hőmérséklet ():" nevű függvényt, ott a "**" -ot le kell cserélnie az Ön által felírt számokkal. Esetemben ezt a kódsort kapnám meg (minden szám egyedi).

sensor_file_name = '/sys/devices/w1_bus_master1/28-0316a4be59ff/w1_slave

Tesztelési idő. Mindkét terminál mind a backend_project, mind a hőmérséklet mappában írja be:

python3 app.py

Most emlékezzen az 5. lépésre: hardver, ahol kódot kell hozzáadnia, ha több ventilátort és tranzisztorot használ?

Jó, ha nem tér vissza az 5. lépésre.

Most hozzá kell adnunk a kódot, ahogy említettem az app.py fájlhoz a backend_project fájlban. Hogy megkönnyítsem, erre egy példát tettem a kódban. Minden megjegyzéskód sora, amelyben "fan1" van, hagyja figyelmen kívül ezeket a sorokat, és íme, most már 2 rajongót használhat.

Ha csak 2 ventilátort szeretne használni, másolja be és illessze be alá ugyanazt a kódot, de más számmal. Ennek hátránya, hogy személyesebb munka az Ön számára, és kevesebb gpio.pins érhető el. Ennek nincsenek előnyei, amiket ismerek.

8. lépés: Futtassa a kódot a rendszerindításkor

Futtassa a kódot rendszerindításkor
Futtassa a kódot rendszerindításkor

Azt akarjuk, hogy ez a 2 python -szkript azonnal fusson, amikor az Rpi elindul, és ha egy szkript összeomlik, akkor magától újra kell indulnia. Ennek érdekében 2 szolgáltatást végzünk.

Ehhez írja be:

sudo nano /etc/systemd/system/temperature.service

Másolja és illessze be ezt a hőmérséklethez. Szolgáltatás:

[Egység] Leírás = Hőmérséklet-szolgáltatás Utána = többfelhasználós.cél

[Szolgáltatás] Típus = egyszerű

ExecStart =/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py

StandardInput = tty-force

Újraindítás = hiba esetén

RestartSec = 60s

[Telepítés]

WantedBy = többfelhasználós.cél

Zárja be és tegye újra, de akkor egy backend_project.service szolgáltatáshoz:

Első nyitott szöveg:

sudo nano /etc/systemd/system/backend_project.service

Ezután másolja és illessze be újra:

[Unit] Leírás = backend_project szolgáltatás

Utána = multi-user.target

[Szolgáltatás]

Típus = egyszerű

ExecStart =/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py

StandardInput = tty-force

Újraindítás = hiba esetén

RestartSec = 60s

[Telepítés]

WantedBy = többfelhasználós.cél

Mentés és bezárás.

Az utolsó rész ezt írja:

sudo systemctl démon-reload

sudo systemctl engedélyezi a hőmérsékletet. szolgáltatás sudo újraindítása

Most a 2 python szkriptünknek automatikusan kell futnia a rendszerindításkor.

9. lépés: A webhely beállítása

Amikor letöltötte a lerakatot, meg kellett volna kapnia a front nevű mappát is. Itt található a weboldal tartalma.

Először is szükségünk van az apache -re, mielőtt használhatjuk a mappát. Kövesse az apache ezen a linken található útmutatóját.

Amikor kész vagy. Lépjen oda, ahol az elülső mappa található:

cd /Dokumentumok /nmct-s2-project-1-TheryBrian

Ezután írja be:

sudo mv front/var/www/html

Ha ez megtörtént, menjen a html mappába, készüljön fel egy fárasztó munkára (az én hibám).

cd/var/www/html/

majd lépjen be az elülső mappába, és kezdjen mindent áthelyezni a html mappába.

példa:

sudo mv css/var/www/html

Ezután törölje az elülső mappát.

És mindennel készen vagyunk.

Sok szerencsét:).

10. lépés: Opcionális - Miniatűr prototípus

Választható - miniatűr prototípus
Választható - miniatűr prototípus
Választható - miniatűr prototípus
Választható - miniatűr prototípus

Tesztelési okokból készítettem egy prototípust egy dobozból, benne az összes hardverrel, hogy lássam, minden rendben működik -e.

Általában ezt a projektet nagyobb léptékben hajtják végre. Például: szoba, ház, gyár, üzlet és így tovább…

De nyilvánvalóan mielőtt elkezdenénk lyukakat készíteni a falakba (szép rím). Először azt szeretnénk látni, hogy működik -e. Valójában nem kell dobozt készíteni a teszteléshez, de mindig szórakoztató a kézműveskedés.

Itt a példám.

Ajánlott: