Turinys:
- 1 žingsnis: reikmenys ir jungtys
- 2 žingsnis: PI sąranka
- 3 veiksmas: kodo atsisiuntimas ir sudarymas
- 4 žingsnis: naudokite
- 5 veiksmas: kaip veikia kodas
- 6 veiksmas: pritaikymas ir draugiški vardai
Video: „Alexa Raspberry Pi“relės valdiklis: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Sukūriau šią instrukciją, kad galėčiau pasidalinti savo patirtimi integruojant IOT įrenginius su „Amazon“„Alexa“.
Šis projektas leidžia valdyti relės plokštę, prijungtą prie aviečių pi, naudojant „smarthome“valdiklį.
Jis buvo išbandytas su „Alexa“, bet taip pat atrodo gerai veikiantis su „Samsung Smartthings“ir kitomis valdymo sąsajomis, nes imituoja „Belkin Wemo“lizdų seriją.
Yra daug pavyzdžių, pagrįstų puikiu FAUXMO kodu, tačiau tai reiškė „python“mokymąsi ir nesuteikė man išsamios kontrolės, reikalingos mano įrenginiams, todėl nusprendžiau jį sukurti iš naujo, naudodamas C kaip pagrindinę kodavimo kalbą.
Aš taip pat nenorėjau eiti į „lambda“kodo gelmes „Amazon.com“, todėl laikiau tai tikrai paprasta.
Aš paskelbiau šaltinį ir pastabas „Github“:
github.com/Switchdoctorstu/StuPiMo
Pamoka iš tikrųjų apima tai, kaip tai padaryti, ir paskelbti mano užrašus, jei tai padės kitiems.
1 žingsnis: reikmenys ir jungtys
Reikalingi dalykai yra lengvai prieinami „Amazon“/ „EBay“:
- Aviečių PI *
- Pi maitinimo šaltinis
- Dupont jungtys
- Estafetės lenta
- Senas „micro USB“laidas (perpus sumažinti relės kortelės maitinimą)
Bet koks „Raspberry Pi“veiks, aš tai išbandžiau su „B“ir „Zero“modeliais.
*Jei naudojate „Pi Zero“, jums reikės OTG tinklo adapterio (nebent perkate „W“versiją su „WiFi“)
Turėsite prijungti „Pi“prie tinklo.
Norėdami prijungti relės kortelę prie „Pi“, naudokite „dupont connetors“.
Atkreipkite dėmesį, kad relės kortelė turėtų naudoti išorinį maitinimą (nuimkite nuorodą ir prijunkite prie išorinio 5v). Jis veiks iš PI, bet nerekomenduojamas gamybai.
Sąrankai aš naudoju išoriškai maitinamą USB HUB. Tai suteikia galios PI.
Taip pat nukirpiau seno USB kabelio galą ir įjungiau relių maitinimą iš antrojo USB jungties į šakotuvą, kad būčiau saugus. Mano „gamybinėje“versijoje naudojamas mažas 5V 5A jungiklio režimo maitinimo šaltinis. Vėlgi, aš tik perpjoviau USB laidą per pusę, kad galėčiau maitinti „Pi“per „Micro-USB“, ir nutraukiau dvi „dupont“jungtis, kad įjungčiau relės plokštę. USB laide yra 4 laidai, dažniausiai 5V maitinimo šaltiniui žymėti naudojama raudona/juoda spalva, tačiau jei abejojate, naudokite matuoklį, kad įsitikintumėte, jog turite tinkamus laidus.
Lentos relės kaiščiai yra prijungti prie atitinkamų GPIO kaiščių PI antraštėje.
Kodas leidžia pasirinkti GPIO kaiščius, tačiau numatytasis aš naudoju:
- Relės kaištis 1 - įžeminimas
- 2 relės kaištis - 1 relė - GPIO 0
- Relės kaištis 3 - 2 relė - GPIO 1
- Relės kaištis 4 - 3 relė - GPIO 2
- Relės kaištis 5 - 4 relė - GPIO 3
- Relės kaištis 6 - 5 relė - GPIO 4
- Relės kaištis 7 - 6 relė - GPIO 5
- Relės kaištis 8 - 7 relė - GPIO 6
- Relės kaištis 9 - 8 relė - GPIO 7
- Relės kaištis 10 - +5v logikai
2 žingsnis: PI sąranka
Aš neketinu iš naujo kurti pamokos, kaip paleisti ir paleisti PI ir prijungti prie tinklo.
Yra daug vadovų, įskaitant puikius nurodymus:
www.instructables.com/id/Ultimate-Raspberr…
Turėsite patekti į tašką, kuriame tinkle matomas PI, ir galėsite prie jo prisijungti.
Nesvarbu, ar tai eternetas, ar belaidis.
Šį projektą galima užbaigti naudojant tik „Raspberry PI“naudojant „Geany“programuotojų redaktorių, tačiau man asmeniškai lengviau paruošti kodą kompiuteryje naudojant „Visual Studio“ar „Eclipse“(ar net „Notepad ++“) ir įkelti jį į PI derinimui naudojant VNC jungtis. Vėlgi, aš to nesakysiu, nes yra daug puikių instrukcijų, kaip nustatyti VNC RPi.
Viskas, ko jums reikia, yra pasiekti, kad galėtumėte įkelti ir surinkti kodą.
Viena svarbi pastaba yra ta, kad kadangi UPNP tvarkytojui reikalingas UDP daugiaadresis ryšys, naudojamos sąsajos turi būti nustatytos į „Promiscuous“režimą.
Tai galima padaryti komandų eilutėje:
pi@raspberrypi: ~ $ ifconfig eth0persc
ir (arba)
pi@raspberrypi: ~ $ ifconfig wlan0 perspc
Tai reikia padaryti nuolatine, todėl redagavau /etc/rc.local
sudo nano / etc / rc.local
įtraukti eilutę:
sudo ifconfig eth0 proc
po pirmojo antraštės # eilučių rinkinio, siekiant užtikrinti, kad sąsajos būtų nustatytos paleidžiant.
3 veiksmas: kodo atsisiuntimas ir sudarymas
Pats kodas yra mano „Github“saugykloje;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
nors yra „teisingų“būdų saugyklą klonuoti. man buvo lengviau tiesiog atidaryti „Geany“redaktorių „Pi“darbalaukyje ir įklijuoti kodą.
Panašiai, jei naudojate komandinę eilutę;
Sukurkite naują katalogą
mkdir Stu
Pakeiskite jį
cd Stu
Sukurkite naują teksto failą
nano StuPiMo.c
Nukopijuokite kodą iš „Github raw“ir įklijuokite jį į naują failą
Išsaugoti ir išeiti.
Kai turėsite failą kaip C šaltinio kodo objektą, galėsite jį kompiliuoti naudodami
gcc -o StuPiMo StuPiMo.c -l wiringPi
atkreipkite dėmesį, kad „-l wiringPi“reikalingas norint užtikrinti, kad kompiliatorius susietų reikiamą „wiringPi“biblioteką.
Tada kodą galima paleisti naudojant
./StuPiMo
Vėlgi, jei norite, kad tai būtų paleista paleidžiant, naudokite komandą:
sudo nano /etc/rc.local
pridėti šią eilutę
sudo/home/pi/Stu/StuPiMo &
į /etc/rc.local failą. Išeidami nepamirškite išsaugoti failo.
Atminkite, kad „&“yra būtinas siekiant užtikrinti, kad atsirastų papildomas procesas, siekiant užtikrinti, kad scenarijus šiuo metu nebūtų užblokuotas.
4 žingsnis: naudokite
Kai kodas bus paleistas, paprašykite alexos „Atrasti įrenginius“ir ji turėtų rasti visus 8 virtualius „Wemo“įrenginius.
Tada tiesiog sakoma: „Alexa įjunk 1 lizdą“arba „Alexa išjunk 6 lizdą“ir pan. Ir atitinkama relė bus pakeista.
5 veiksmas: kaip veikia kodas
Kodas veikia imituojant „Belkin Wemo“lizdo įrenginių seriją.
Kad tai pasiektų, jis turi atlikti 2 pagrindines funkcijas
- UPNP atradimų transliacijų tvarkyklė
- „įrenginio tvarkyklė“(po vieną kiekvienam virtualiam įrenginiui), skirta valdyti į įrenginį siunčiamas komandas ir reikiamus atsakymus.
„Papildoma“funkcija yra ta, kad ji taip pat skelbia tinklalapį, kad būtų galima valdyti įrenginius.
UPNP tvarkytojas
UPNP tvarkytojas atidaro lizdą SSDP protokolo paketams stebėti 239.255.255.250 prievade 1900.
Jis reaguoja į bet kokias „M-SEARCH“užklausas, pateikiamas su atradimo atsakymo paketu, kuris praneša kiekvienam klausiančiam individualius wemo emuliatorius.
Įrenginių tvarkytojas
Įrenginių tvarkytojai (po vieną kiekvienam virtualiam įrenginiui) stebi daugybę IP prievadų ir reaguoja į užklausas.
Kai bus paprašyta, jis pateiks „setup.xml“atsakymą
Kai bus paprašyta, jis pateiks įvykio aprašymo failą
Ji atsakys į GETBINARYSTATE užklausą
Ji apdoros ir atsakys į SETBINARYSTATE užklausą
Tinklapio serveris
Žiniatinklio serveris yra paprasta rutina, kurianti HTML formą, kurioje yra relės mygtukas.
Jis reaguos į paspaudžiamus mygtukus ir atitinkamai pakeis relės būseną.
6 veiksmas: pritaikymas ir draugiški vardai
Aš nesu pamišęs dėl kodo, kad jis būtų paprastas ir redaguojamas.
Pagrindus galima pritaikyti pagal apibrėžimus kodo pradžioje:
// bendrieji apibrėžimai#define WEBPORT 5353 // prievadas, kuriame bus paleistas žiniatinklio serveris
#define NUMDEVICES 8 // Kuriamų virtualių įrenginių skaičius
#define PORTBASE 43450 // bazinis IP prievadas, kurį reikia padidinti nuo
WEBPORT yra prievado numeris, kuriuo veikia įmontuotas žiniatinklio serveris. Kad būtų lengviau, būtų galima sėdėti 80 metų, bet pastebėjau, kad tai prieštarauja „Tomcat“ar kitoms vietinėms paslaugoms.
NUMDEVICES apibrėžia atskirų WEMO emuliatorių, kuriuos reikia paleisti, skaičių. Jei turite 2 prievadų relės kortelę, nustatykite ją į 2, 4 prievadus = 4 ir tt
Draugiški įrenginių pavadinimai nustatomi įprasta tvarka, vadinama setup_names:
int sąrankos_vardai (draugiškas char [NUMDEVICES] [NAMELEN]) {int i = 0;
// naudoti šią kilpą
(i = 0; i <NUMDEVICES; i ++) {
sprintf (draugiškas , „Socket %d“, i + 1);
}
// arba šią vadovo lentelę, kad užpildytumėte įrenginių pavadinimus
/*
strcpy (draugiškas [0], „Miegamojo televizorius“);
strcpy (draugiškas [1], „Elektrinė antklodė“);
strcpy (draugiškas [2], „Miegamojo lempa“);
strcpy (draugiškas [3], „Socket 4“);
strcpy (draugiškas [4], „Socket 5“);
strcpy (draugiškas [5], „6 lizdas“);
strcpy (draugiškas [6], „Socket 7“);
strcpy (draugiškas [7], „Lizdas 8“);
*/
grąžinti i;
}
Aš naudoju kilpą, kad visus įrenginius pavadinčiau „Socket n“, bet jūs galite ištrinti šią kilpą ir vietoj to pridėti draugiškus vardus (tiesiog įsitikinkite, kad pridėjote tą patį numerį kaip NUMDEVICES), jei ištrinate / * * /
Nepamirškite iš naujo sukompiliuoti kodo, jei atliksite kokių nors pakeitimų.
Rekomenduojamas:
„Alexa Smart Home“sistema naudojant „NodeMCU“relės modulį: 10 žingsnių
„Alexa Smart Home“sistema, naudojant „NodeMCU“relės modulį: Šiame „IoT“projekte aš sukūriau „Alexa Smart Home Automation“sistemą, naudodamas „NodeMCU ESP8266 & Relės modulis. Naudodami balso komandą galite lengvai valdyti šviesą, ventiliatorių ir kitus buitinius prietaisus. Norėdami prijungti išmanųjį garsiakalbį „Echo Dot“su
„Arduino“balsu valdomas IOT relės jungiklis (palaikomas „Google Home“ir „Alexa“): 11 žingsnių
„Arduino“balsu valdomas IOT relės jungiklis (palaikomas „Google Home“ir „Alexa“): Šiame projekte aprašoma, kaip sukurti „Arduino“pagrindu valdomą balsu valdomą IOT relės jungiklį. Tai relė, kurią galite įjungti ir išjungti nuotoliniu būdu, naudodami „iOS“ir „Android“skirtą programą, taip pat susieti ją su IFTTT ir valdyti balsu naudodami „Google“
Namų automatizavimas naudojant „Raspberry Pi“naudojant relės lentą: 7 žingsniai
Namų automatizavimas naudojant „Raspberry Pi“naudojant relės lentą: Dauguma žmonių nori didelio komforto, tačiau už priimtiną kainą. Jaučiamės tingūs apšviesti namus kiekvieną vakarą, kai saulė nusileidžia, ir kitą rytą, vėl išjungdami šviesą arba įjungdami/išjungdami oro kondicionierių/ventiliatorių/šildytuvus
„Arduino“pagrindu sukurtas „pasidaryk pats“žaidimų valdiklis - „Arduino PS2“žaidimų valdiklis - Žaidimas „Tekken“naudojant „pasidaryk pats“„Arduino“žaidimų pultą: 7 žingsniai
„Arduino“pagrindu sukurtas „pasidaryk pats“žaidimų valdiklis | „Arduino PS2“žaidimų valdiklis | Žaidimas „Tekken“naudojant „pasidaryk pats“„Arduino Gamepad“: Sveiki, vaikinai, žaisti žaidimus visada smagu, tačiau žaisti su savo „pasidaryk pats“žaidimo valdikliu yra smagiau. Taigi, mes padarysime žaidimų valdiklį naudodami „arduino pro micro“šioje instrukcijoje
YABC - dar vienas „Blynk“valdiklis - „IoT“debesų temperatūros ir drėgmės valdiklis, ESP8266: 4 žingsniai
YABC - Dar vienas „Blynk“valdiklis - „IoT“debesų temperatūros ir drėgmės valdiklis, ESP8266: Sveiki, kūrėjai, neseniai pradėjau auginti grybus namuose, austrių grybus, bet jau turiu 3 kartus šių valdiklių namuose, kad galėčiau kontroliuoti savo namų alaus fermentacijos temperatūrą, žmona dabar taip pat daro šį „Kombucha“dalyką ir yra šilumos termostatas