Sisukord:
- Samm: tarvikud ja ühendused
- Samm: PI seadistamine
- Samm: koodi allalaadimine ja koostamine
- 4. samm: selle kasutamine
- Samm: kuidas kood töötab
- 6. samm: kohandamine ja sõbralikud nimed
Video: Alexa Raspberry Pi releekontroller: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Lõin selle juhendi, et jagada oma kogemusi IOT -seadmete integreerimisel Amazoni Alexaga.
See projekt võimaldab vaarika pi -ga ühendatud releeplaati juhtida nutikodu kontrollerist.
Seda on testitud Alexaga, kuid tundub, et see töötab hästi ka Samsung Smartthingsi ja muude juhtimisliidestega, kuna see jäljendab Belkin Wemo pistikupesade seeriat.
Suurepärase FAUXMO-koodi põhjal on PALJU näiteid, kuid see tähendas pythoni õppimist ega andnud mulle üksikasjalikku kontrolli, mida ma oma seadmete jaoks vajasin, ja seega otsustasin selle nullist uuesti luua, kasutades baaskodeerimiskeelena C.
Samuti ei tahtnud ma Amazon.com lambda koodi sügavustesse minna, nii et olen selle tõesti lihtsaks teinud.
Olen postitanud allika ja märkmed Githubisse:
github.com/Switchdoctorstu/StuPiMo
Õpetus hõlmab tõesti selle toimimise saavutamist ja minu märkmete avaldamist juhuks, kui see teisi aitab.
Samm: tarvikud ja ühendused
Vajalikud asjad on Amazonist / EBayst hõlpsasti saadaval:
- Vaarika PI *
- Pi toiteallikas
- Duponti pistikud
- Teatelaud
- Vana mikro -USB -juhe (releekaardi toite pooleks vähendamiseks)
Iga vaarika Pi töötab, olen seda testinud mudelitel B ja Zero.
*Kui kasutate Pi Zero, on teil vaja OTG -võrguadapterit (kui te ei osta W -versiooni, mille WiFi -ühendus on buit)
Peate Pi võrguga ühendama.
Releekaardi ühendamiseks Pi -ga kasutage dupont -konnetoreid.
Pange tähele, et releekaart peaks kasutama välist toiteallikat (eemaldage link ja ühendage väline 5v). See töötab PI toitega, kuid seda ei soovitata tootmiseks käitada.
Seadistamiseks kasutasin välise toitega USB HUB -i. See annab PI -le toite.
Lõikasin ära ka vana USB -kaabli otsa ja toitsin releed teise USB -ühenduse kaudu jaoturile, et see oleks ohutu. Minu "tootmis" versioon kasutab väikest 5V 5A lülitusrežiimi toiteallikat. Jällegi lõikasin lihtsalt USB-juhtme pooleks, et toita Pi mikro-USB kaudu, ja katkestasin kaks duponti pistikut releeplaadi toiteks. USB -juhtmes on 4 juhet, enamik kasutab 5v toite tähistamiseks punast/musta, kuid kahtluse korral kasutage õigete juhtmete hankimiseks mõõturit.
Tahvlil olevad releenõelad on ühendatud PI päises olevate GPIO tihvtidega.
Kood võimaldab teil valida GPIO tihvte, kuid vaikimisi kasutasin järgmist:
- Relee tihvt 1 - maandus
- Relee tihvt 2 - relee 1 - GPIO 0
- Relee tihvt 3 - relee 2 - GPIO 1
- Relee tihvt 4 - relee 3 - GPIO 2
- Relee tihvt 5 - relee 4 - GPIO 3
- Relee tihvt 6 - relee 5 - GPIO 4
- Relee tihvt 7 - relee 6 - GPIO 5
- Relee tihvt 8 - relee 7 - GPIO 6
- Relee tihvt 9 - relee 8 - GPIO 7
- Relee pin 10 - +5v loogika jaoks
Samm: PI seadistamine
Ma ei hakka uuesti koostama õpetust selle kohta, kuidas oma PI käivitada ja võrku ühendada.
Seal on palju juhendeid, sealhulgas suurepärane juhendatav:
www.instructables.com/id/Ultimate-Raspberr…
Peate jõudma punkti, kus PI on võrgus nähtav, ja saate sellega ühenduse luua.
Pole tähtis, kas see on Etherneti või traadita ühenduse kaudu.
Selle projekti saab lõpule viia ainult Raspberry PI -ga, kasutades Geany programmeerijate redigeerijat, kuid mul on isiklikult lihtsam koodi ette valmistada arvutis Visual Studio või Eclipse'i (või isegi Notepad ++) abil ja seejärel laadida see silumiseks PI -sse VNC ühendus. Jällegi, ma ei kavatse seda siin käsitleda, kuna RPI -le VNC seadistamiseks on palju suurepäraseid juhiseid.
Kõik, mida vajate, on jõuda punkti, kus saate koodi üles laadida ja kompileerida.
Üks oluline märkus on see, et kuna UPNP -käitleja nõuab UDP multisaadet, tuleb kasutatavad liidesed seada režiimile Promiscuous.
Seda saab teha käsurealt:
pi@raspberrypi: ~ $ ifconfig eth0persc
ja / või
pi@raspberrypi: ~ $ ifconfig wlan0 perspektc
See tuleb muuta püsivaks, nii et muutsin /etc/rc.local
sudo nano / etc / rc.local
lisada rida:
sudo ifconfig eth0 perspektc
pärast esimest ribareklaami # rida, et tagada liideste seadistamine käivitamisel.
Samm: koodi allalaadimine ja koostamine
Kood ise asub minu Githubi hoidlas;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
samas on hoidla kloonimiseks „õigeid” viise. Leidsin, et on lihtsam avada Pi töölaual Geany redaktor ja kleepida kood sisse.
Samamoodi, kui kasutate käsurea;
Looge uus kataloog
mkdir Stu
Muutke seda
cd Stu
Tehke uus tekstifail
nano StuPiMo.c
Kopeerige kood toorelt Githubist ja kleepige see uude faili
Salvesta ja välju.
Kui olete faili C lähtekoodi objektina saanud, saate selle kompileerida
gcc -o StuPiMo StuPiMo.c -l juhtmestikPi
pange tähele, et "-l wiringPi" on vajalik tagamaks, et kompilaator lingib nõutud wiringPi teegis.
Seejärel saab koodi käivitada, kasutades
./StuPiMo
Jällegi, kui soovite, et see käivitumisel käivituks, kasutage käsku:
sudo nano /etc/rc.local
järgmise rea lisamiseks
sudo/home/pi/Stu/StuPiMo &
oma /etc/rc.local faili. Ärge unustage väljumisel oma faili salvestada.
Pange tähele, et „&” on hädavajalik, et tagada alamprotsessi sünd, tagamaks, et skript pole praegu blokeeritud.
4. samm: selle kasutamine
Kui olete koodi käivitanud, paluge alexal seadmeid avastada ja ta peaks leidma kõik 8 virtuaalset Wemo seadet.
Siis tuleb lihtsalt öelda: "Alexa lülitage pesa 1 sisse" või "Alexa lülitage pesa 6 välja" jne ja vastavat releed muudetakse.
Samm: kuidas kood töötab
Kood toimib Belkin Wemo pistikupesaseadmete seeria jäljendamisel.
Selle saavutamiseks peab ta täitma 2 peamist funktsiooni
- UPNP avastusülekande käitleja
- „seadme käitleja” (üks virtuaalse seadme kohta) seadmesse saadetud käskude ja nõutavate vastuste haldamiseks.
Boonusfunktsioon on see, et see avaldab ka veebilehe, et võimaldada seadmete juhtimist.
UPNP -käitleja
UPNP -käitleja avab pesa SSDP -protokollipakettide jälgimiseks 239.255.255.250 pordil 1900.
See vastab kõigile M-SEARCH päringutele, mis tulevad koos avastusvastuste paketiga, mis teatab individuaalsetest emulooride emulaatoritest kõigile, kes seda küsivad.
Seadme käitleja
Seadmetöötlejad (üks virtuaalseadme kohta) jälgivad mitmeid IP -porte ja vastavad päringutele.
See küsib setup.xml vastust, kui seda küsitakse
See esitab sündmuse kirjelduse faili, kui seda küsitakse
See vastab GETBINARYSTATE päringule
See töötleb SETBINARYSTATE taotlust ja vastab sellele
Veebiserver
Veebiserver on lihtne rutiin, mis loob relee kohta nuppu sisaldava HTML -vormi.
See reageerib nuppude vajutamisele ja muudab vastavalt relee olekut.
6. samm: kohandamine ja sõbralikud nimed
Ma pole hulluks läinud, et kood oleks lihtne ja muudetav.
Põhitõdesid saab koodi alguses määratluste järgi kohandada:
// globaalsed definitsioonid#define WEBPORT 5353 // port, kus veebiserverit käitada
#define NUMDEVICES 8 // Loodavate virtuaalsete seadmete arv
#define PORTBASE 43450 // baas -IP -port, mida suurendada
WEBPORT on pordi number, millel sisseehitatud veebiserver töötab. Asja hõlbustamiseks võiks selle istuda 80 -ni, kuid leidsin, et see on vastuolus tomcati või muude kohapeal töötavate teenustega.
NUMDEVICES määratleb käivitatavate üksikute WEMO -emulaatorite arvu. Kui teil on 2 -portiline releekaart, määrake see väärtuseks 2, 4 port = 4 jne.
Seadmete sõbralikud nimed määratakse rutiinis nimega setup_names:
int setup_names (sümbolisõbralik [NUMDEVICES] [NAMELEN]) {int i = 0;
// kasuta seda tsüklit
jaoks (i = 0; i <NUMDEVICES; i ++) {
sprintf (sõbralik , "Pesa %d", i + 1);
}
// või järgnev manuaalne tabel seadmete nimede sisestamiseks
/*
strcpy (sõbralik [0], "Magamistuba TV");
strcpy (sõbralik [1], "Elektritekk");
strcpy (sõbralik [2], "Magamistoa lamp");
strcpy (sõbralik [3], "Pesa 4");
strcpy (sõbralik [4], "Pesa 5");
strcpy (sõbralik [5], "Pesa 6");
strcpy (sõbralik [6], "Pesa 7");
strcpy (sõbralik [7], "Pesa 8");
*/
tagasta i;
}
Kasutasin silmust, et helistada igale seadmele „Socket n”, kuid saate selle silmuse kustutada ja selle asemel lisada oma sõbralikud nimed (veenduge, et lisate sama numbri kui NUMDEVICES), kui kustutate / * * /
Ärge unustage muudatuste tegemisel koodi uuesti kompileerida.
Soovitan:
Kontrolli elutuba Alexa ja Raspberry Pi abil: 12 sammu
Hallake elutuba Alexa ja Raspberry Pi abil: kontrollige oma elutoa telerit, tulesid ja ventilaatorit Alexa (Amazon Echo või Dot) ja Raspberry Pi GPIO abil
Raspberry Pi Alexa+Google'i nutikas kõlar: 6 sammu
Raspberry Pi Alexa+Google'i nutikas kõlar: Selles projektis õpetan teile, kuidas teha eelarvelist nutikat kõlarit. Selle projekti maksumus peaks sõltuvalt materjalidest ja täiendavatest osadest maksma ainult umbes 30–50 dollarit
Alexa hääljuhtimisega Raspberry Pi droon IoT ja AWS -iga: 6 sammu (koos piltidega)
Alexa hääljuhtimisega Raspberry Pi droon IoT ja AWS -iga: Tere! Minu nimi on Armaan. Olen 13-aastane Massachusettsi poiss. See õpetus näitab, nagu saate pealkirjast järeldada, kuidas Raspberry Pi drooni ehitada. See prototüüp näitab, kuidas droonid arenevad, ja ka seda, kui suurt osa nad võivad mängida
Lisage kohandatud Alexa Control Raspberry Pi projektile: 5 sammu
Lisage Raspberry Pi projektile kohandatud Alexa Control: see projekt on mõeldud kõigile, kellel on Raspberry Pi projekt, mis kasutab Pythoni ja kes soovivad lisada hääljuhtimist oma olemasolevate Amazon Echo seadmete kaudu. Te ei pea olema kogenud programmeerija, kuid teil peaks olema mugav seda kasutada
Rääkige koos Alexa ja Google'i assistendiga Raspberry Pi -s: 4 sammu
Rääkige koos Alexa ja Google'i assistendiga Raspberry Pi -s: käivitage Amazon Alexa ja Google'i assistent korraga Raspberry Pi -s. Helistage mõlemale nimele, nad lülitavad reageerimiseks sisse oma LED -id ja helisevad. Siis esitate mõne taotluse ja nad vastavad teile vastavalt. Saate teada nende iseloomu