Kazalo:
- 1. korak: Zaloge in povezave
- Korak: Nastavitev PI
- 3. korak: Prenos in sestavljanje kode
- 4. korak: Uporabite ga
- 5. korak: Kako deluje koda
- 6. korak: prilagajanje in prijazna imena
Video: Relejni krmilnik Alexa Raspberry Pi: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Ustvaril sem ta Instructable, da bi delil svoje izkušnje z integracijo naprav IOT z Amazonovo Alexa.
Ta projekt omogoča krmiljenje relejne plošče, povezane z malinovim pi, s krmilnikom pametnega doma.
Preizkušeno je bilo z Alexa, vendar se zdi, da deluje tudi s Samsung Smartthings in drugimi nadzornimi vmesniki, saj posnema vrsto vtičnic Belkin Wemo.
Obstaja veliko primerov, ki temeljijo na odlični kodi FAUXMO, vendar je to pomenilo učenje pythona in mi ni dalo podrobnega nadzora, ki sem ga potreboval za svoje naprave, zato sem se odločil, da ga znova ustvarim iz nič z uporabo C kot osnovnega kodirajočega jezika.
Prav tako mi ni bilo treba iti v globino lambda kode na Amazon.com, zato sem ostal zelo preprost.
Vir in opombe sem objavil na Githubu:
github.com/Switchdoctorstu/StuPiMo
Vadnica res zajema, kako naj deluje, in objaviti svoje zapiske, če to pomaga drugim.
1. korak: Zaloge in povezave
Stvari, ki jih potrebujete, so na voljo na Amazon / EBay:
- Malina PI *
- Napajanje Pi
- Priključki Dupont
- Relejna plošča
- Stari mikro USB kabel (za prepolovitev napajanja relejne kartice)
Vsak malin Pi bo deloval, to sem preizkusil na modelih B in Zero.
*Če uporabljate Pi Zero, boste potrebovali omrežni adapter OTG (razen če kupite različico 'W' z vmesnikom WiFi)
Pi morate povezati z omrežjem.
S priključki dupont priključite relejno kartico na Pi.
Upoštevajte, da mora relejna kartica uporabljati zunanje napajanje (odstranite povezavo in se povežite z zunanjim 5V). Deloval bo z napajalnikom PI, vendar ni priporočljivo za proizvodnjo.
Za namestitev sem uporabil zunanje napajalno zvezdišče USB. To zagotavlja moč PI.
Odrezal sem tudi konec starega kabla USB in releje napajal iz druge povezave USB na pesto, da sem ostal varen. Moja "produkcijska" različica uporablja majhen 5V 5A stikalni napajalnik. Spet sem prepolovil USB kabel za napajanje Pi prek Micro-USB in odrezal dva priključka dupont za napajanje relejne plošče. V USB kabel so 4 žice, večina uporablja rdeče/črno za označevanje 5 -voltnega napajanja, če pa ste v dvomih, uporabite merilnik, da zagotovite, da dobite pravilne žice.
Relejski zatiči na plošči so povezani z ustreznimi zatiči GPIO na glavi PI.
Koda vam omogoča, da izberete zatiče GPIO, vendar sem privzeto uporabil:
- Rele rele 1 - ozemljitev
- Rele rele 2 - Rele 1 - GPIO 0
- Rele rele 3 - Rele 2 - GPIO 1
- Relejni pin 4 - Rele 3 - GPIO 2
- Rele rele Pin 5 - Rele 4 - GPIO 3
- Rele rele 6 - Rele 5 - GPIO 4
- Relejni pin 7 - Rele 6 - GPIO 5
- Rele rele 8 - Rele 7 - GPIO 6
- Relejni pin 9 - Rele 8 - GPIO 7
- Relejni pin 10 - +5v za logiko
Korak: Nastavitev PI
Ne bom ponovno ustvaril vadnice o tem, kako vzpostaviti in zagnati vaš PI ter ga povezati z omrežjem.
Obstaja veliko vodnikov, vključno z odličnimi navodili na:
www.instructables.com/id/Ultimate-Raspberr…
Morali boste priti do točke, kjer je PI viden v omrežju in se lahko povežete z njim.
Ni pomembno, ali gre za Ethernet ali Wireless.
Ta projekt je mogoče dokončati samo z Raspberry PI z urejevalnikom programov Geany, vendar meni osebno lažje pripravi kodo v računalniku z uporabo Visual Studio ali Eclipse (ali celo Notepad ++) in ga nato naložim v PI za odpravljanje napak z uporabo VNC povezava. Spet tega ne bom obravnaval, saj obstaja veliko odličnih navodil za nastavitev VNC na RPi.
Vse, kar potrebujete, je, da pridete do točke, kjer lahko naložite in sestavite kodo.
Pomembno je le, da mora upravljavec UPNP za večpredstavnost UDP uporabiti uporabljene vmesnike na način "Promiscuous".
To lahko storite v ukazni vrstici:
pi@raspberrypi: ~ $ ifconfig eth0 promisc
in / ali
pi@raspberrypi: ~ $ ifconfig wlan0 promisc
To mora biti trajno, zato sem uredil /etc/rc.local
sudo nano / etc / rc.local
vključiti vrstico:
sudo ifconfig eth0 promisc
po prvem nizu pasic # vrstic, da zagotovite, da so bili vmesniki nastavljeni ob zagonu.
3. korak: Prenos in sestavljanje kode
Koda sama sedi v mojem Github -u;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
čeprav obstajajo "pravilni" načini za kloniranje skladišča. lažje mi je bilo odpreti urejevalnik Geany na namizju Pi in vnesti kodo.
Podobno, če uporabljate ukazno vrstico;
Ustvarite nov imenik
mkdir Stu
Spremenite ga
cd Stu
Ustvarite novo besedilno datoteko
nano StuPiMo.c
Kopirajte kodo iz Github raw in jo prilepite v novo datoteko
Shrani in zapri.
Ko imate datoteko kot objekt izvorne kode C, jo lahko sestavite z uporabo
gcc -o StuPiMo StuPiMo.c -l ožičenjePi
upoštevajte, da je "-l wiringPi" potreben za zagotovitev, da se prevajalnik poveže v zahtevano knjižnico wiringPi.
Kodo lahko nato zaženete z uporabo
./StuPiMo
Še enkrat, če želite, da se to zažene ob zagonu, uporabite ukaz:
sudo nano /etc/rc.local
da dodate naslednjo vrstico
sudo/home/pi/Stu/StuPiMo &
v datoteko /etc/rc.local. Ne pozabite shraniti datoteke ob izhodu.
Upoštevajte, da sta '&' bistvena za zagotovitev, da se podproces sproži, da se zagotovi, da skript na tej točki ni blokiran.
4. korak: Uporabite ga
Ko zaženete kodo, prosite alexa, da odkrije odkrivanje naprav, naj najde vseh 8 virtualnih naprav Wemo.
Potem je samo primer reči: "Alexa vklopi vtičnico 1" ali "Alexa izklopi vtičnico 6" itd. In ustrezni rele se bo spremenil.
5. korak: Kako deluje koda
Koda deluje tako, da posnema vrsto vtičnih naprav Belkin Wemo.
Če želite to doseči, mora opraviti 2 glavni funkciji
- upravljavec oddajanja odkrivanja UPNP
- "upravljavec naprav" (en na virtualno napravo) za upravljanje ukazov, poslanih v napravo, in zahtevanih odzivov.
Bonusna funkcija je, da objavi tudi spletno stran, ki omogoča nadzor naprav.
Upravljavec UPNP
Upravljavec UPNP odpre vtičnico za spremljanje paketov protokola SSDP na vratih 239.255.255.250 1900.
Odzove se na vsa poizvedba 'M-SEARCH', ki prihaja z odzivnim paketom odkritja, ki vsakega prosilca obvesti posamezne emulatorje wemo.
Obdelovalec naprav
Obdelovalci naprav (eno na virtualno napravo) spremljajo vrsto vrat IP in se odzivajo na zahteve.
Na zahtevo bo poslal odgovor setup.xml
Na zahtevo bo služil datoteki z opisom dogodka
Odgovoril bo na zahtevo GETBINARYSTATE
Obdelal bo in odgovoril na zahtevo SETBINARYSTATE
Spletni strežnik
Spletni strežnik je preprosta rutina, ki ustvari obrazec HTML, ki vsebuje gumb na rele.
Odzval se bo na pritisnjene gumbe in ustrezno preklopil stanje releja.
6. korak: prilagajanje in prijazna imena
Nisem nor, da je koda preprosta in urejena.
Osnove lahko prilagodite z definicijami na začetku kode:
// globalne definicije#definiraj WEBPORT 5353 // vrata za izvajanje spletnega strežnika
#define NUMDEVICES 8 // Število navideznih naprav za ustvarjanje
#define PORTBASE 43450 // osnovna vrata IP za povečanje od
WEBPORT je številka vrat, na katerih deluje vgrajen spletni strežnik. To bi lahko postavili na 80, da bi olajšali stvari, vendar sem ugotovil, da je v nasprotju s tomcat ali drugimi lokalnimi storitvami.
NUMDEVICES določa število posameznih emulatorjev WEMO za zagon. Če imate 2 -portno relejsko kartico, nastavite to na 2, 4 vrata = 4 itd.
Prijazna imena naprav so nastavljena v rutini, imenovani setup_names:
int setup_names (char prijazno [NUMDEVICES] [NAMELEN]) {int i = 0;
// uporabite to zanko
za (i = 0; i <NUMDEVICES; i ++) {
sprintf (prijazno , "Vtičnica %d", i + 1);
}
// ali naslednjo ročno tabelo za vnos imen naprav
/*
strcpy (prijazno [0], "TV v spalnici");
strcpy (prijazno [1], "Električna odeja");
strcpy (prijazno [2], "Svetilka za spalnico");
strcpy (prijazno [3], "Vtičnica 4");
strcpy (prijazno [4], "Vtičnica 5");
strcpy (prijazno [5], "Vtičnica 6");
strcpy (prijazno [6], "Vtičnica 7");
strcpy (prijazno [7], "Vtičnica 8");
*/
vrniti i;
}
Uporabil sem zanko, da sem vsako napravo poklical 'Socket n', vendar lahko to zanko izbrišete in namesto tega dodate svoja prijazna imena (samo poskrbite, da dodate isto številko kot NUMDEVICES), če izbrišete / * * /
Če naredite kakršne koli spremembe, kodo znova sestavite.
Priporočena:
Televizijski krmilnik Alexa IoT ESP8266: 10 korakov (s slikami)
Televizijski krmilnik Alexa IoT ESP8266: Pred kratkim sem kupil Amazon Echo Dot v času Amazon Prime za ~ 20 €. Ti majhni glasovni pomočniki so poceni in odlični za avtomatsko domačo avtomatizacijo, če veste, kaj je mogoče in kako sestaviti pametne naprave. Imam Samsung Smart TV, vendar sem želel
DIY - Relejni modul: 8 korakov
DIY - Relejni modul: Relejni moduli, ki so na voljo na trgu, so združeni z neomejenimi neuporabnimi komponentami. Stavim, da če jih res ne uporabljate, boste morda vedno razmišljali, da bi jih vse izločili, preden jih uporabite v svojem projektu. No, če čutite potrebo po enostavnem
CSR1011 - Relejni sprožilec: 5 korakov
CSR1011 - Sprožilni rele: CSR1011 je enosmerni Bluetooth čip Bluetooth in ta vadnica prikazuje, kako dostopati do svojih GPIO in sprožiti rele
Arduino DIY krmilnik za igre - Arduino PS2 krmilnik iger - Predvajanje Tekkena z igralno ploščo Arduino DIY: 7 korakov
Arduino DIY krmilnik za igre | Arduino PS2 krmilnik iger | Igranje Tekken z igralno ploščo DIY Arduino: Pozdravljeni, igranje iger je vedno zabavno, vendar je igranje s svojim lastnim krmilnikom iger po meri bolj zabavno. Zato bomo v tem navodilu naredili krmilnik za igre z uporabo arduino pro micro
Krmilnik psov, ki ga nadzira Alexa: 6 korakov (s slikami)
Napajalnik psov Alexa pod nadzorom: To je naš pes Bailey. Je del Border Collieja in avstralskega govejega psa, zato je včasih pametnejša od njenega dobrega, še posebej, ko govori o času in ve, kdaj bi morala večerjati. Običajno jo poskušamo nahraniti okoli 18. ure