Satura rādītājs:
- 1. darbība: Piegādes un savienojumi
- 2. darbība: PI iestatīšana
- 3. darbība: koda lejupielāde un apkopošana
- 4. solis: tā izmantošana
- 5. darbība. Kā darbojas kods
- 6. darbība. Pielāgošana un draudzīgi vārdi
Video: Alexa Raspberry Pi releja kontrolieris: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Es izveidoju šo pamācību, lai dalītos savā pieredzē par IOT ierīču integrēšanu ar Amazon Alexa.
Šis projekts ļauj kontrolēt releja dēli, kas savienots ar aveņu pi, no smarthome kontroliera.
Tas ir pārbaudīts ar Alexa, bet, šķiet, darbojas arī ar Samsung Smartthings un citām vadības saskarnēm, jo tas atdarina virkni Belkin Wemo kontaktligzdu.
Ir daudz piemēru, kuru pamatā ir izcilais FAUXMO kods, taču tas nozīmēja python apguvi un nedeva man detalizētu kontroli, kas man bija nepieciešama manām ierīcēm, un tāpēc es nolēmu to izveidot no jauna, izmantojot C kā galveno kodēšanas valodu.
Es arī negribēju, lai man būtu jādodas uz lambda koda dziļumiem vietnē Amazon.com, tāpēc esmu to saglabājis patiešām vienkāršu.
Esmu ievietojis avotu un piezīmes vietnē Github:
github.com/Switchdoctorstu/StuPiMo
Apmācība patiešām aptver, kā to panākt, un publicē manas piezīmes, ja tā palīdz citiem.
1. darbība: Piegādes un savienojumi
Nepieciešamās lietas ir viegli pieejamas vietnē Amazon / EBay:
- Aveņu PI *
- Pi barošanas avots
- Dupont savienotāji
- Stafetes dēlis
- Vecs mikro USB vads (uz pusi samazināt releja kartes jaudu)
Jebkurš aveņu Pi derēs, es to pārbaudīju modelī B un nulle.
*Ja izmantojat Pi Zero, jums būs nepieciešams OTG tīkla adapteris (ja vien neiegādājaties “W” versiju ar buit WiFi)
Jums būs jāpievieno Pi tīklam.
Izmantojiet dupont connetors, lai savienotu releja karti ar Pi.
Ņemiet vērā, ka releja kartei jāizmanto ārēja barošana (noņemiet saiti un pievienojiet ārējam 5v). Tas darbosies no PI, bet nav ieteicams ražošanai.
Iestatīšanai es izmantoju ārēji darbināmu USB HUB. Tas nodrošina jaudu PI.
Es arī nogriezu vecā USB kabeļa galu un darbināju relejus no otrā USB savienojuma ar centrmezglu, lai paliktu drošībā. Mana “ražošanas” versija izmanto nelielu 5V 5A slēdža režīma barošanas avotu. Atkal es vienkārši pārgriezu USB vadu uz pusi, lai darbinātu Pi, izmantojot Micro-USB, un samazināju divus no dupont savienotājiem, lai barotu releja plati. USB vadā ir 4 vadi, lielākā daļa no tiem izmanto sarkano/melno, lai apzīmētu 5v barošanu, bet, ja rodas šaubas, izmantojiet skaitītāju, lai pārliecinātos, ka esat ieguvis pareizos vadus.
Plāksnes releja tapas ir savienotas ar attiecīgajām GPIO tapām PI galvenē.
Kods ļauj jums izvēlēties GPIO tapas, bet noklusējuma es izmantoju:
- 1. releja tapa - zemējums
- 2. releja tapa - 1. relejs - GPIO 0
- 3. releja tapa - 2. relejs - GPIO 1
- 4. releja tapa - 3. relejs - GPIO 2
- 5. releja tapa - 4. relejs - GPIO 3
- 6. releja tapa - 5. relejs - GPIO 4
- Releja tapa 7 - Relejs 6 - GPIO 5
- Releja tapa 8 - Relejs 7 - GPIO 6
- Releja tapa 9 - Relejs 8 - GPIO 7
- Releja tapa 10 - +5v loģikai
2. darbība: PI iestatīšana
Es netaisos atkārtoti izveidot pamācību par to, kā sākt darboties un izveidot savienojumu ar tīklu.
Ir daudz ceļvežu, tostarp lieliska pamācība:
www.instructables.com/id/Ultimate-Raspberr…
Jums vajadzēs nokļūt līdz vietai, kur PI ir redzams tīklā, un jūs varat izveidot savienojumu ar to.
Nav svarīgi, vai tas notiek caur Ethernet vai bezvadu.
Šo projektu var pabeigt, izmantojot tikai Raspberry PI, izmantojot Geany programmētāju redaktoru, bet man personīgi ir vieglāk sagatavot kodu, izmantojot datoru, izmantojot Visual Studio vai Eclipse (vai pat Notepad ++), un pēc tam augšupielādēt to PI atkļūdošanai, izmantojot VNC savienojums. Atkal es to neaplūkošu, jo ir daudz lielisku pamācību par VNC iestatīšanu RPi.
Viss, kas jums nepieciešams, ir nokļūt līdz vietai, kur varat augšupielādēt un apkopot kodu.
Viena piezīme, kas ir svarīga, ir tā, ka, tā kā UPNP apstrādātājam ir nepieciešama UDP multicast, izmantotajām saskarnēm jābūt iestatītām “Promiscuous” režīmā.
To var izdarīt komandrindā:
pi@raspberrypi: ~ $ ifconfig eth0persc
un / vai
pi@raspberrypi: ~ $ ifconfig wlan0 perspektc
Tas ir jāpadara pastāvīgs, tāpēc es rediģēju /etc/rc.local
sudo nano / etc / rc.local
iekļaut rindu:
sudo ifconfig eth0 perspektc
pēc pirmā reklāmkaroga # rindu komplekta, lai pārliecinātos, ka saskarnes tika iestatītas startēšanas laikā.
3. darbība: koda lejupielāde un apkopošana
Kods pats atrodas manā Github krātuvē;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
lai gan ir “pareizi” veidi, kā klonēt repozitoriju. man bija vieglāk vienkārši atvērt Geany redaktoru Pi darbvirsmā un ielīmēt kodu.
Līdzīgi, ja izmantojat komandrindu;
Izveidojiet jaunu direktoriju
mkdir Stu
Mainīt uz to
cd Stu
Izveidojiet jaunu teksta failu
nano StuPiMo.c
Nokopējiet kodu no neapstrādātas Github un ielīmējiet to jaunajā failā
Saglabāt un iziet.
Kad fails ir C avota koda objekts, varat to apkopot, izmantojot
gcc -o StuPiMo StuPiMo.c -l wiringPi
ņemiet vērā, ka "-l wiringPi" ir nepieciešams, lai nodrošinātu, ka apkopotājs saista nepieciešamo wiringPi bibliotēku.
Pēc tam kodu var palaist, izmantojot
./StuPiMo
Atkal, ja vēlaties, lai tas darbotos startēšanas laikā, izmantojiet komandu:
sudo nano /etc/rc.local
lai pievienotu šādu rindu
sudo/home/pi/Stu/StuPiMo &
uz /etc/rc.local failu. Neaizmirstiet saglabāt failu, izejot.
Ņemiet vērā, ka & ir būtisks, lai nodrošinātu apakšprocesa izveidi, lai nodrošinātu, ka skripts šajā brīdī netiek bloķēts.
4. solis: tā izmantošana
Kad esat palaidis kodu, palūdziet alexai "Atklāt ierīces", un viņai jāatrod visas 8 virtuālās Wemo ierīces.
Tad vienkārši jāsaka: "Alexa ieslēdz ligzdu 1" vai "Alexa izslēdz ligzdu 6" utt., Un attiecīgais relejs tiks mainīts.
5. darbība. Kā darbojas kods
Kods darbojas, emulējot vairākas Belkin Wemo ligzdas ierīces.
Lai to panāktu, tai ir jāpilda 2 galvenās funkcijas
- UPNP atklāšanas apraides apstrādātājs
- “ierīces apstrādātājs” (viens katrai virtuālajai ierīcei), lai pārvaldītu uz ierīci nosūtītās komandas un nepieciešamās atbildes.
Papildu funkcija ir tā, ka tā arī publicē tīmekļa lapu, lai ļautu kontrolēt ierīces.
UPNP apstrādātājs
UPNP apstrādātājs atver ligzdu, lai uzraudzītu SSDP protokola paketes 239.255.255.250 portā 1900.
Tas atbild uz visiem “M-SEARCH” vaicājumiem, kas tiek saņemti, izmantojot atklāšanas atbilžu paketi, kas izsludina individuālos wemo emulatorus ikvienam, kas jautā.
Ierīču apstrādātājs
Ierīču apstrādātāji (viens katrai virtuālajai ierīcei) pārrauga virkni IP portu un atbild uz pieprasījumiem.
Kad tas tiks prasīts, tas sniegs atbildi setup.xml
Pēc pieprasījuma tas kalpos notikuma apraksta failam
Tā atbildēs uz GETBINARYSTATE pieprasījumu
Tā apstrādās un atbildēs uz SETBINARYSTATE pieprasījumu
Tīmekļa serveris
Tīmekļa serveris ir vienkārša rutīna, kas izveido HTML veidlapu, kurā ir viena releja poga.
Tas reaģēs uz nospiestajām pogām un attiecīgi pārslēgs releja stāvokli.
6. darbība. Pielāgošana un draudzīgi vārdi
Es neesmu sajukusi prātā ar kodu, lai tas būtu vienkāršs un rediģējams.
Pamatus var pielāgot pēc definīcijām koda sākumā:
// globālās definīcijas#define WEBPORT 5353 // ports, kurā palaist tīmekļa serveri
#define NUMDEVICES 8 // Izveidojamo virtuālo ierīču skaits
#define PORTBASE 43450 // bāzes IP ports, lai palielinātu no
WEBPORT ir porta numurs, kurā darbojas iebūvētais tīmekļa serveris. To varētu likt sēdēt 80 gadu vecumā, lai atvieglotu lietas, taču es atklāju, ka tas ir pretrunā ar runci vai citiem pakalpojumiem, kas darbojas lokāli.
NUMDEVICES nosaka palaižamo atsevišķo WEMO emulatoru skaitu. Ja jums ir 2 portu releja karte, iestatiet to uz 2, 4 porti = 4 utt.
Ierīču draudzīgie nosaukumi ir iestatīti rutīnā ar nosaukumu setup_names:
int setup_names (simbolam draudzīgs [NUMDEVICES] [NAMELEN]) {int i = 0;
// izmantot šo cilpu
par (i = 0; i <NUMDEVICES; i ++) {
sprintf (draudzīgs , "Socket %d", i + 1);
}
// vai šo rokasgrāmatas tabulu, lai aizpildītu ierīču nosaukumus
/*
strcpy (draudzīgi [0], "Guļamistabas TV");
strcpy (draudzīgs [1], "Elektriskā sega");
strcpy (draudzīgs [2], "Guļamistabas lampa");
strcpy (draudzīgs [3], "Socket 4");
strcpy (draudzīgs [4], "Socket 5");
strcpy (draudzīgs [5], "ligzda 6");
strcpy (draudzīgs [6], "Socket 7");
strcpy (draudzīgs [7], "Socket 8");
*/
atgriezties i;
}
Es izmantoju cilpu, lai izsauktu katru ierīci “Socket n”, bet jūs varat izdzēst šo cilpu un pievienot savus draudzīgos vārdus (vienkārši pārliecinieties, vai pievienojat tādu pašu numuru kā NUMDEVICES), ja izdzēšat / * * /
Neaizmirstiet atkārtoti apkopot kodu, ja veicat izmaiņas.
Ieteicams:
Alexa IoT TV kontrolieris ESP8266: 10 soļi (ar attēliem)
Alexa IoT TV kontrolieris ESP8266: Nesen Amazon Prime dienas laikā par ~ 20 € nopirku Amazon Echo Dot. Šie mazie balss palīgi ir lēti un lieliski piemēroti DIY mājas automatizācijai, ja zināt, kas ir iespējams un kā veidot viedās ierīces. Man ir Samsung viedtelevizors, bet es gribēju
Alexa viedās mājas sistēma, izmantojot NodeMCU releja moduli: 10 soļi
Alexa viedās mājas sistēma, izmantojot NodeMCU releja moduli: Šajā IoT projektā esmu izveidojis Alexa viedās mājas automatizācijas sistēmu, izmantojot NodeMCU ESP8266 & Releju modulis. Jūs varat viegli kontrolēt gaismu, ventilatoru un citu sadzīves tehniku, izmantojot balss komandu. Lai savienotu viedo skaļruni Echo Dot ar
Arduino balstīts balss kontrolēts IOT releja slēdzis (tiek atbalstīta Google sākumlapa un Alexa): 11 soļi
Ar Arduino balstīts balss kontrolēts IOT releja slēdzis (tiek atbalstīts pakalpojums Google sākumlapa un Alexa): Šis projekts apraksta, kā izveidot ar Arduino balstītu balss vadītu IOT releja slēdzi. Šis ir relejs, kuru varat attālināti ieslēgt un izslēgt, izmantojot iOS un Android lietotni, kā arī piesaistīt to IFTTT un vadīt to ar savu balsi, izmantojot Goog
DIY spēļu kontrolieris uz Arduino bāzes - Arduino PS2 spēļu kontrolieris - Spēlējot Tekken ar DIY Arduino Gamepad: 7 soļi
DIY spēļu kontrolieris uz Arduino bāzes | Arduino PS2 spēļu kontrolieris | Spēlēt Tekken ar DIY Arduino Gamepad: Sveiki, puiši, spēlēt spēles vienmēr ir jautri, bet spēlēt ar savu DIY pielāgoto spēļu kontrolieri ir jautrāk. Tāpēc šajā instrukcijā mēs izveidosim spēles kontrolieri, izmantojot arduino pro micro
YABC - vēl viens Blynk kontrolieris - IoT mākoņa temperatūras un mitruma kontrolieris, ESP8266: 4 soļi
YABC - Vēl viens Blynk kontrolieris - IoT mākoņa temperatūras un mitruma kontrolieris, ESP8266: Sveiki, Makers, es nesen sāku audzēt sēnes mājās, austeru sēnes, bet man jau ir 3x no šiem kontrolieriem mājās, lai raudzētu temperatūras kontroli savai mājas brūvei, sieva arī tagad dara šo Kombucha lietu un kā siltuma termostatu