Ez a cikk megmutatja, hogyan használhatja a Raspberry Pi és az 5V relés kapcsolót a villanykörte be- és kikapcsolásához mobileszközéről. A cikk tartalmaz egy webalkalmazást, amelyet a hálózat bármely eszközéről elérhet, és vezeték nélkül vezérelheti az otthoni AC-készülékeket. Tehát kezdjük el az egyszerű Raspberry Pi otthoni automatizálási kísérletünket.
Amire szüksége lesz
Ha fej nélküli fejhallgatót szeretne használni (SSH vagy VNC segítségével), akkor a következő dolgokra lesz szüksége:
1) Raspberry Pi 3 vagy Raspberry Pi 4.
2) 5V relés kapcsoló.
3) Elektromos vezetékek.
4) 3 nő-nő összekötő vezeték.
5) AC villanykörte.
6) AC villanykörte tartó.
7) AC csatlakozó.
8) Wirecutter és stripper eszköz.
9) CR-V 3 csavarhúzó.
10) Mikro-USB (Raspberry Pi 3) vagy C típusú USB (Raspberry Pi 4) hálózati adapter.
11) 16 vagy 32 GB-os Raspberry Pi operációs rendszerrel rendelkező microSD-kártya villog.
12) Hálózati kapcsolat a Raspberry Pi-n.
13) Laptop vagy asztali számítógép VNC távoli asztali vagy SSH hozzáféréshez a Raspberry Pi-hez.
Ha nem akarja távolról elérni a Raspberry Pi-t az SSH vagy a VNC segítségével, akkor a következőkre is szüksége lesz:
14) Monitor.
15) HDMI vagy mikro-HDMI kábel.
16) Billentyűzet.
17) Egér.
Ha segítségre van szüksége a Raspberry Pi OS képének a microSD-kártyára történő villogtatásával kapcsolatban, olvassa el a Raspberry Pi Imager telepítése és használata című cikket.
Ha Ön Raspberry Pi kezdő vagy, és segítségre van szüksége a Raspberry Pi OS telepítéséhez a Raspberry Pi-hez, olvassa el a Raspberry Pi OS telepítése a Raspberry Pi 4-re című cikket.
Ezenkívül, ha segítségre van szüksége a Raspberry Pi fej nélküli beállításához, olvassa el a Raspberry Pi operációs rendszer telepítése és konfigurálása a Raspberry Pi 4 készülékre külső monitor nélkül című cikket.
Az összes szükséges eszköz képe alább található.
A Raspberry Pi bekapcsolása
Ezután csatlakoztassa a tápkábelt a Raspberry Pi-hez, majd kapcsolja be a Raspberry Pi-t.
A Raspberry Pi bekapcsolása után VNC-n vagy SSH-n keresztül csatlakozhat a Raspberry Pi-hez. Vagy csatlakoztathat billentyűzetet, egeret és monitort a Raspberry Pi-hez, hogy közvetlenül hozzáférhessen hozzájuk.
5 V-os relé csatlakozók
A relé alapvetően kapcsoló. De a hagyományos kapcsolóval ellentétben a relét kis mennyiségű egyenfeszültséggel lehet vezérelni.
Az 5V-os relét nagyon könnyű használni. Két oldala van: az egyik oldalt a relé kisfeszültségű DC-n keresztüli vezérléséhez használják (a Raspberry Pi-től), a másikat pedig a nagyfeszültségű AC (i.e., a villanykörte), a relé állapotától függően.
Az egyik oldalon a relének két LED-je van (egy piros és egy zöld) és három csap (IN, GND, és VCC). Ezt a három csapot használják a Raspberry Pi reléjének vezérlésére.
A másik oldalon található első két csap az AC háztartási készülék vezérlésére szolgál.
Az 5 V-os relé csatlakoztatása a Raspberry Pi-hez
Az 5 V-os relé Raspberry Pi-hez való csatlakoztatásához három nő-nő összekötő vezetékre lesz szükség.
Csatlakoztassa az összekötő vezetékek egyik oldalát a vezetékhez BAN BEN (sárga vezeték), GND (fekete drót), és VCC (piros vezeték) csapok az 5V-os relében, az alábbiak szerint.
A vezetékek másik oldala a Raspberry Pi GPIO fejléc csapjaiba kerül, amint az az alábbi képen látható.
A piros vezetéknek be kell mennie a vezetékbe PIN 2 (VCC) málna Pi.
A fekete vezetéknek be kell mennie a vezetékbe PIN 6 (GND) málna Pi.
A sárga vezetéknek be kell mennie a vezetékbe PIN 7 (GPIO 4) málna Pi.
Miután az 5V-os relét csatlakoztatta a Raspberry Pi-hez, annak az alábbi képen látható módon kell kinéznie.
GPIO hozzáférés engedélyezése a belépő felhasználó számára
A GPIO csapokhoz való hozzáférés engedélyezéséhez a Raspberry Pi OS alapértelmezett bejelentkezési felhasználója pi hozzá kell adni a gpio csoport.
Hozzáadhatja a pi felhasználó a gpio csoportot a következő paranccsal:
$ sudo usermod -aG gpio $ (whoami)
A változások életbe lépéséhez indítsa újra a Raspberry Pi alkalmazást a következő paranccsal:
Projektkönyvtár létrehozása
Célszerű az összes projektfájlt rendben tartani.
A projektfájlok rendezettségének megőrzéséhez hozza létre a projekt könyvtárat ~ / www és a szükséges alkönyvtárakat a következő paranccsal:
$ mkdir -pv ~ / www / sablonok, statikus
A projektkönyvtár létrehozása után lépjen a projektkönyvtárba az alábbiak szerint:
Az 5 V-os relé kapcsolása a Raspberry Pi-ről
Most, hogy az 5V-os relét a Raspberry Pi-hez csatlakoztatta, a Python programozási nyelv használatával átkapcsolja a Raspberry Pi-t.
JEGYZET: Átkapcsolás az elektronikában használt kifejezés. A kapcsolás vezérlést jelent (azaz.e. be / ki) egy bizonyos elektronikus eszköz.
A relé Python programozási nyelv használatával történő átkapcsolásával kísérletezzen az új Python parancsfájl teszt létrehozásával.py a projekt könyvtárban az alábbiak szerint:
$ nano teszt.py
Írja be a következő kódsorokat a tesztbe.py Python szkript.
az időből importál
míg True:
relé = LED (4)
nyomtatás ("Relé: Be")
alvás (5)
relé.Bezárás()
nyomtatás ("Relé: Ki")
alvás (5)
Ha végzett, nyomja meg a gombot
Itt az 1. sor importál VEZETTE tól gpiozero könyvtár, a 2. sor pedig a alvás függvény a idő könyvtár.
A 6–14. Sor végtelen hurkon belül van.
A 6. vonal inicializálja a LED-et a GPIO 4 málna Pi, amely kapcsolódik a BAN BEN a relé csapja.
A 8. sor bekapcsolja a relét a tovább() módszer.
A 9. sor a konzol segítségével nyomtat ki egy üzenetet a konzolon nyomtatás() funkció.
A 10. sor öt másodpercig késlelteti a következő kódsor végrehajtását a alvás() funkció.
A 12-es vonal kikapcsolja a relét a Bezárás() módszer.
Ugyanígy a 9. sor is kinyomtat egy üzenetet a konzolon a nyomtatás() funkció és a 10. sor késlelteti a következő kódsor végrehajtását 5 másodpercig a alvás() funkció.
Ezután futtassa a teszt.py Python szkript az alábbiak szerint:
A teszt.py A Python szkriptnek el kell kezdenie az 5 V-os relé kapcsolását. Öt másodpercenként kattanást kell hallania. Amikor a relé állapotot kapcsol (be- vagy kikapcsol, vagy ki-be), kattanási hangot ad. Ez azt jelenti, hogy a relé megfelelően működik.
Ha a relé kikapcsolt állapotban van (normál üzem - a váltóáramú terhelés ki van kapcsolva), akkor csak a piros A LED-nek világítania kell, amint az az alábbi képen látható.
Ha a relé bekapcsolt állapotban van (váltakozó áramú terhelés van csatlakoztatva), akkor mind a zöld LED és a piros A LED-nek világítania kell, amint az az alábbi képen látható.
A teszt befejezése után nyomja meg a gombot
Az AC villanykörte csatlakoztatása az 5V-os reléhez
Az 5V-os relének most megfelelően kell működnie. Most csatlakoztatja a váltóáramú háztartási készülékét (ebben az esetben egy villanykörtét) az 5 V-os reléhez.
Először vágja le a villanykörtéhez csatlakoztatott fekete elektromos vezetéket drótvágóval.
Miután a villanykörtéhez csatlakoztatott fekete elektromos vezetéket drótvágóval elvágták, annak az alábbi képen látható módon kell kinéznie.
Ezután szüntesse meg a külső réteget, hogy az elektromos vezeték kb. 1/2 hüvelykje legyen, amint az az alábbi képen látható.
Ezután hajtsa be a szabadon lévő vezetékeket, az alábbi képen látható módon.
Lazítsa meg a relé megjelölt csavarjait CV-3 csavarhúzóval.
Helyezze a korábban csupaszított és összehajtott szabad vezetékeket a két csavaros kapocsba, és húzza meg a csavarokat egy CV-3 csavarhúzóval.
A relé kapcsolásának tesztelése az AC terhelés csatlakoztatása után
Miután a váltakozó áramú terhelés csatlakozik az 5 V-os reléhez, csatlakoztassa a villanykörtét a fali aljzathoz.
Futtassa a teszt.py Python szkript a projekt könyvtárból az alábbiak szerint:
A teszt.py A Python szkriptnek el kell kezdenie az 5 V-os relé kapcsolását, amely viszont öt másodperces időközönként kapcsolja a nagyfeszültségű váltakozó áramú villanykörtét. A váltakozó áramú villanykörtének öt másodpercig működnie kell, majd öt másodpercig ki kell kapcsolnia stb.
A villanykörte ki van kapcsolva az alábbi képen.
A villanykörte az alábbi képen világít.
Mint látható, kapcsolhatjuk a relét és vezérelhetjük a nagyfeszültségű váltakozó áramú villanykörtét a Python programozási nyelv segítségével. Tehát nyomja meg
Most térjünk át a következő szakaszra.
A Home Automation webalkalmazás írása
Ebben a részben megmutatom, hogyan kell API-alapú webalkalmazást írni a Python programozási nyelv segítségével. A webalkalmazás segítségével vezérelheti a relét és a váltóáramú háztartási készülék (ek) et vagy a reléhez csatlakoztatott elektromos eszközt (ek) egy webböngészőből.
JEGYZET: Az ebben a szakaszban bemutatott összes kód elérhető a GitHub tárhelyemben: shovon8 / raspberry-pi-home-automation. Ha szeretné, klónozhatja a GitHub-adattáramat, és kihagyhatja az összes kódot.
Hozza létre a szervert.py Python szkript a projekt könyvtárban az alábbiak szerint:
$ nano szerver.py
Írja be a következő kódsorokat a szerver.py Python szkript.
a gpiozero import LED-től
az uuid importból uuid4
szobák =
szobák ['1. szoba'] = [
'id': uuid4 (),
'név': '1. fény,
'icon': 'fa fa-villanykörte',
'status': hamis,
'relayPin': 4,
'relayInstance': hamis
,
'id': uuid4 (),
'name': 'Fan 1',
'icon': 'fa fa-fan',
'status': hamis,
'relayPin': 6,
'relayInstance': Hamis
]
szobák ['Fürdőszoba 1'] = [
'id': uuid4 (),
'név': '1. fény,
'icon': 'fa fa-villanykörte',
'status': hamis,
'relayPin': 5,
'relayInstance': Hamis
]
app = Lombik (__ név__)
kb.config ['SEND_FILE_MAX_AGE_DEFAULT'] = 0
@app.útvonal('/')
def home ():
vissza render_template ('./index.html ', szobák = szobák)
def toggle_appliance_status (id):
a szobák szobáihoz:
helyiségekben [helyiségekben] használt készülékekhez:
if str (készülék ['id']) == id:
ha készülék ['relayInstance']:
készülék ['relayInstance'].Bezárás()
appliance ['relayInstance'] = Hamis
más:
appliance ['relayInstance'] = LED (készülék ['relayPin'])
készülék ['relayInstance'].tovább()
készülék ['status'] = nem készülék ['status']
return True
return False
@app.útvonal ('/ appliance / toggle /
def appliance_toggle (id):
return jsonify ('status': toggle_appliance_status (id))
Ha végzett, nyomja meg a gombot
Itt az 1-3. Sorok importálják az összes szükséges komponenst a megfelelő könyvtárukból.
Az 5. sor üreset hoz létre szobák szótár. Ebben a szótárban tároljuk az összes olyan hálózati eszközt, amelyet a webalkalmazásból ellenőrizni szeretnénk.
A szobák a részletek a 7–29. sorokban vannak tárolva.
Beszéljük meg az egyik szoba adatszerkezetét.
Itt lesz a helyiség neve 1. szoba. Így, 1. szoba a kulcsa a szobák szótár.
A 1. szoba kulcs egy tömböt tart értékként. A tömbelemek száma megegyezik a szobában lévő AC háztartási készülékek számával, amelyeket a webalkalmazásból is vezérelni szeretne. Ebben az esetben két váltóáramú háztartási készülékünk van, amelyeket ellenőrizni akarunk: 1. fény és 1. ventilátor.
Minden háztartási készülék definíciónak van egy id. A id egy véletlenszerűen generált UUID. Ez arra szolgál, hogy azonosítsuk, melyik helyiséget akarjuk irányítani az API segítségével.
A háztartási készülék az alábbiak mindegyikével rendelkezik:
- név (1. fény ebben az esetben)
- ikon (Font Awesome ikon osztály, mivel a Font Awesome-t fogjuk használni az ikonokhoz)
- állapot (Igaz ha tovább és Hamis ha ki)
- relayPin (a váltóáramú háztartási készülékhez csatlakoztatott relé vezérléséhez használt GPIO PIN-kód)
- reléInstance (az inicializált VEZETTE tárgya gpiozero a megfelelő GPIO pin vezérléséért felelős könyvtár - relayPin)
A 31. sor inicializálja a lombik Python webkiszolgálóját.
A 32. sor konfigurálja a lombik webkiszolgálóját.
A 34-36. Sorok küldik a index.html fájl a sablonok / könyvtárat, amikor felkeresi az otthoni automatizálás webalkalmazást.
Lombik használ Jinja2 sablonnyelv a index.html fájl. Szóval, túlléptem a szobák szótár a index.html fájl. Jinja2 a kezdőlapot a szobák adat.
A funkció toggle_appliance_status () a 39-52. sorokban a háztartási készülék bekapcsolására szolgál, ha ki van kapcsolva, és a háztartási készülék kikapcsolására, ha be van kapcsolva id.
Visszatér Igaz ha a váltási művelet sikeres. Ha hiba történik, az visszatér Hamis.
Az 55–57. Sorok az otthoni készülék váltására szolgálnak a / appliance / toggle / A webszerver API-végpontja. Itt, id a háztartási készülék azonosítója.
Hozza létre a index.html fájl a sablonok / a projekt könyvtárát az alábbiak szerint:
Írja be a következő kódsorokat a index.html forgatókönyv.
Raspberry Pi otthoni automatizálás
% szoba szobáihoz%
szoba
% készülékek helyiségekben [szoba]%
készülék ['név']
% endfor%
% endfor%
Ha végzett, nyomja meg a gombot
Hozzon létre egy stílus.css fájl a statikus/ a projekt könyvtárát az alábbiak szerint:
Írja be a következő kódsorokat a stílus.css fájl.
*
margó: 0;
párnázás: 0;
font-family: 'BenchNine', sans-serif;
#content> h1
háttér: lineáris gradiens (jobbra, rgb (112, 24, 163), rgb (86, 127, 240));
szín: #fff;
text-align: center;
párnázás: .5em 0;
div.szoba
árrés: .5em;
határ: 2px szilárd rgb (112, 24, 163);
határ-sugár: 5px;
div.h2 szoba
/ * háttér: rgb (9, 76, 121); * /
háttér: lineáris gradiens (jobbra, rgb (112, 24, 163), rgb (86, 127, 240));
párnázás: 0 0 0 .5em;
szín: #fff;
div.készülékek
árrés: .5em .5em 0 0;
kijelző: flex;
flex-wrap: csomagolás;
div.készülék
határ: 2px szilárd rgb (112, 24, 163);
határ-sugár: 5px;
szélesség: 110px;
magasság: 120px;
text-align: center;
margó: 0 0 .5em .5em;
kijelző: flex;
hajlítási irány: oszlop;
div.készülék i.fa
betűméret: 4em;
rugalmas növekedés: 1;
padding-top: 0.3em;
szín: rgb (204, 50, 50);
div.készülék [data-active = "active"] i.fa
szín: rgb (32, 177, 51);
div.készülék span
kijelző: blokk;
betű súlya: félkövér;
háttér: rgb (112, 24, 163);
szín: #fff;
Ha végzett, nyomja meg a gombot
Hozzon létre egy kb.js fájl a statikus/ a projekt könyvtárát az alábbiak szerint:
Írja be a következő kódsorokat a kb.js fájl.
függvény main ()
function toggleApplianceState (e)
var id = e.útvonal [1].id;
var http = új XMLHttpRequest ();
http.onreadystatechange = function ()
ha ez.readyState === 4 && ez.állapot === 200)
ha (JSON.elemzés (ez.responseText).állapot === igaz)
ha (pl.útvonal [1].hasAttribute ('data-active'))
e.útvonal [1].removeAttribute ('data-active')
más
e.útvonal [1].setAttribute ('aktív-aktív', 'aktív')
http.open ("GET", '/ appliance / toggle / $ id', true);
http.Küld();
var devices = dokumentum.getElementsByClassName ('készülék');
mert (i = 0; i < appliances.length; i++)
készülékek [i].addEventListener ('click', toggleApplianceState);
Ha végzett, nyomja meg a gombot
Itt az 1. sor fut a fő() funkció, amikor a weboldal befejezi a betöltést.
Ban,-ben index.html fájl, minden háztartási készüléket egy készülék osztály. A 26-29. Sorok segítségével minden háztartási készüléket kiválaszthat a weboldalról, és csatolja a kattintson eseményt a készülékre. Amikor valaki rákattint egy háztartási készülékre a weboldalról, a toggleApplianceState () funkció futni fog.
A 4–23. Sorokban a toggleApplianceState () függvény a / appliance / toggle / a webszerver végpontja a kattintott otthoni készülék állapotának megváltoztatásához. A kérés a háttérben történik az AJAX-on keresztül. Miután megkapta a választ, a weboldal ennek megfelelően frissül.
Navigáljon a statikus/ könyvtárat a projekt könyvtárában az alábbiak szerint:
Töltse le a Awesome betűtípust a következő paranccsal:
A Font Awesome letöltése után meg kell találnia az új zip fájlt fantasztikus-mentes-5.15.1-web.postai irányítószám ban,-ben statikus/ Könyvtár.
Csomagolja ki a fantasztikus-mentes-5.15.1-web.postai irányítószám fájl a következő paranccsal:
A fantasztikus-mentes-5.15.1-web.postai irányítószám a fájlt most kibontani kell.
Az új könyvtár fantasztikus-mentes-5.15.1-web / a static / könyvtárban kell létrehozni, amint az az alábbi képernyőképen látható.
Nevezze át a könyvtárat fantasztikus-mentes-5.15.1-web / nak nek fantasztikus / a következő paranccsal:
$ mv -v fantasztikus-mentes-5.15.1 webes fantasztikus
Most már nincs szüksége a fantasztikus-mentes-5.15.1-web.postai irányítószám fájl. Tehát, távolítsa el a fantasztikus-mentes-5.15.1-web.postai irányítószám fájl a következő paranccsal:
A statikus/ a könyvtárstruktúrának az alábbi képernyőképen látható módon kell kinéznie.
Lépjen vissza a projekt könyvtárba ~ / www alábbiak szerint:
A Home Automation webalkalmazás tesztelése
Az otthoni automatizálás webalkalmazás teszteléséhez futtassa a következő parancsot a projektkönyvtárban:
$ FLASK_APP = szerver.py lombik fut
A webalkalmazásnak elérhetőnek kell lennie a Raspberry Pi 5000-es portján.
A Chromium böngészőben keresse fel a http: // localhost: 5000 webhelyet. Az otthoni automatizálás webalkalmazásnak betöltődnie kell.
Kattintson az alábbi képen látható villanykörte ikonra.
Az AC villanykörtét be kell kapcsolni. Az ikon színének szintén zöldre kell váltania, jelezve, hogy a villanykörte be van kapcsolva.
Tehát az otthoni automatizálás webalkalmazása működik. nyomja meg
Systemd szolgáltatás létrehozása az otthoni automatizálás webalkalmazáshoz
Ebben a részben bemutatom, hogyan hozhat létre systemd szolgáltatásfájlt az otthoni automatizálási webalkalmazáshoz, hogy az automatikusan elinduljon indításkor.
Először hozza létre a raspi-home-automatizálás.szolgáltatás fájlt a projekt könyvtárában az alábbiak szerint:
$ nano raspi-home-automatizálás.szolgáltatás
Írja be a következő sorokat a raspi-home-automation programba.szolgáltatás fájl.
[Mértékegység]Leírás = Raspberry Pi otthoni automatizálási webszolgáltatás
Után = hálózat.cél
[Szolgáltatás]
WorkingDirectory = / home / pi / www
Környezet = FLASK_APP = szerver.py
Környezet = FLASK_ENV = termelés
ExecStart = / usr / bin / flask run --host = 0.0.0.0
StandardOutput = örökli
StandardError = örökli
Újraindítás = mindig
Felhasználó = pi
[Telepítés]
WantedBy = többfelhasználós.cél
Ha végzett, nyomja meg a gombot
Másolja a raspi-home-automatizálás.szolgáltatás fájl a / etc / systemd / system / könyvtár a következő paranccsal:
Töltse be újra a systemd démonokat, hogy a változtatások az alábbiak szerint lépjenek életbe:
Add hozzá a raspi-home-automatizálás szolgáltatás a Raspberry Pi OS rendszerindításához a következő paranccsal:
Indítsa újra a Raspberry Pi alkalmazást a következő paranccsal:
Miután a Raspberry Pi csizmát vet, az raspi-home-automatizálás A szolgáltatásnak aktívnak / futónak kell lennie, amint az az alábbi képernyőképen látható.
A Home Automation webalkalmazás elérése más eszközökről
Ahhoz, hogy az otthoni hálózat más eszközeiről hozzáférhessen az otthoni automatizálási webalkalmazáshoz, ismernie kell a Raspberry Pi készülékének IP-címét.
A Raspberry Pi 4 eszköz IP-címét az otthoni útválasztó webkezelő felületéről találhatja meg. Esetemben az IP-cím 192.168.0.103. Ez más lesz számodra. Tehát mindenképpen cserélje le IP-jemet a tiédre.
Ha hozzáfér a Raspberry Pi konzolhoz, akkor a következő paranccsal futtathatja az IP-címet is.
Miután megtudta a Raspberry Pi készülékének IP-címét, az otthoni hálózat bármely eszközéről elérheti.
Amint az alábbi képernyőképen láthatja, Android okostelefonomról léptem be az otthoni automatizálás webalkalmazásába.
Ügyeljen arra, hogy a villanykörtét dugja be a fali aljzatba.
A villanykörtét alapértelmezés szerint ki kell kapcsolni.
Ha megérinti a villanykörte ikont az otthoni automatizálás webalkalmazásában, akkor a villanykörte ikonjának színe zöldre változik, jelezve, hogy a villanykörte be van kapcsolva.
Amint az alábbi képen látható, a villanykörte be van kapcsolva.
Következtetés
Ez a cikk bemutatta, hogyan lehet egy 5 V-os relét használni a Raspberry Pi nagyfeszültségű váltóáramú elektromos eszközének vezérléséhez a Python programozási nyelv segítségével. A cikk azt is bemutatta, hogyan írhat API-alapú Python lombik webalkalmazást a webböngészőből származó relé vezérléséhez. Ez a cikk segíthet az otthoni automatizálás megkezdésében a Raspberry Pi használatával.