Tartalomjegyzék:
- Kellékek
- 1. lépés: A Raspberry Pi beállítása
- 2. lépés: Csatlakozás létrehozása és az Rpi vezeték nélküli csatlakoztatása a helyi hálózathoz
- 3. lépés: DS18B20 érzékelő (hőmérséklet)-1 vezetékes
- 4. lépés: MCP3008 - Analóg érzékelés
- 5. lépés: Hardver
- 6. lépés: Mariadb adatbázis létrehozása
- 7. lépés: Github kód és tesztelés
- 8. lépés: Futtassa a kódot a rendszerindításkor
- 9. lépés: A webhely beállítása
- 10. lépés: Opcionális - Miniatűr prototípus
Videó: TheAir - gázérzékelő projekt: 10 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
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
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
Elindítjuk az Rpi -t -> csatlakoztassuk az Ethernet -kábelt a számítógép és az Rpi között.
-
Indítsa el a Putty -t, és töltse ki ezt:
- Gazdagép neve (vagy IP -címe): 169.254.10.1
- Port: 22
-
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.
- Extra: írja be a "sudo raspi-config" parancsot
- Itt meg kell változtatnia a pi felhasználó jelszavát (biztonsági okokból)
- 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.
- Zárja be a raspi-configot, és indítsa újra.
- Bejelentkezéskor ideiglenesen tegye magát root felhasználóvá -> sudo -i
-
Í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
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.
- Lépjen az Interfész beállítások oldalra
- 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
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
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
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
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
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:
Gimbal stabilizátor projekt: 9 lépés (képekkel)
Gimbal Stabilizer Project: Hogyan készítsünk egy kardántengelyt? Ismerje meg, hogyan készítsen kéttengelyes kardántengelyt az akciókamerájához. A mai kultúrában mindannyian szeretjük a videókat rögzíteni és megörökíteni a pillanatokat, különösen akkor, ha Ön olyan tartalomkészítő, mint én, biztosan szembesült azzal a problémával, hogy ilyen remegő videó
Automatizált EKG-BME 305 Végső projekt Extra jóváírás: 7 lépés
Automatizált EKG-BME 305 A végső projekt extra jóváírása: Egy elektrokardiogram (EKG vagy EKG) a dobogó szív által kibocsátott elektromos jelek mérésére szolgál, és nagy szerepet játszik a szív- és érrendszeri betegségek diagnosztizálásában és prognózisában. Az EKG -n szerzett információk egy része tartalmazza a ritmust
(IOT projekt) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával: 5 lépés
(IOT Project) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával: Ebben az utasításban egy egyszerű IOT projektet fogunk felépíteni, amelyben lekérjük városunk időjárási adatait az openweather.com/api webhelyről, és megjelenítjük azokat a Feldolgozó szoftver segítségével
CPE 133 Végső projekt decimális binárisra: 5 lépés
CPE 133 A végső projekt decimális binárisra: A bináris számok az első dolgok, amelyek eszünkbe jutnak, amikor a digitális logikára gondolunk. A bináris számok azonban nehéz fogalmak lehetnek azok számára, akik még nem ismerik ezt a projektet. Ez a projekt segít azoknak, akik újak és tapasztaltak a bináris számokkal
Dopamin doboz - a Mike Boydhoz hasonló projekt - Nem lévén Mike Boyd: 9 lépés
Dopamin doboz | a Mike Boydhoz hasonló projekt - Nem lévén Mike Boyd: Én szeretnék egyet! Szükségem van rá! Halogató vagyok! Nos, szeretnék egy dopamin dobozt … Programozás nélkül. Nincs hang, csak tiszta akarat