Sadržaj:
- Korak 1: Potrošni materijal i veze
- Korak 2: PI postavljanje
- Korak 3: Preuzimanje i sastavljanje koda
- Korak 4: Upotreba
- Korak 5: Kako kôd radi
- Korak 6: Prilagođavanje i prijateljska imena
Video: Relejni kontroler Alexa Raspberry Pi: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Napravio sam ovaj Instructable kako bih podijelio svoja iskustva s integracijom IOT uređaja s Amazonovom Alexa.
Ovaj projekt omogućuje upravljanje relejnom pločom spojenom na malinovo pi s kontrolera pametnog doma.
Testirano je s Alexa, ali čini se i da radi dobro sa Samsung Smartthings i drugim upravljačkim sučeljima jer oponaša niz Belkin Wemo utičnica.
Postoji mnogo primjera temeljenih na izvrsnom FAUXMO kodu, ali to je značilo učenje pythona i nije mi dalo detaljnu kontrolu koja mi je potrebna za moje uređaje, pa sam odlučio ponovno stvoriti jedan od nule koristeći C kao svoj osnovni jezik kodiranja.
Također nisam želio ići u dubinu lambda koda na Amazon.com pa sam to držao vrlo jednostavnim.
Objavio sam izvor i bilješke na Githubu:
github.com/Switchdoctorstu/StuPiMo
Vodič doista pokriva kako to funkcionirati i objaviti moje bilješke u slučaju da drugima pomogne.
Korak 1: Potrošni materijal i veze
Stvari koje trebate su dostupne na Amazonu / EBayu:
- PI maline *
- Pi napajanje
- Dupont konektori
- Relejna ploča
- Stari mikro USB kabel (za prepolovljenje radi napajanja relejne kartice)
Bilo koji malina Pi će raditi, ovo sam testirao na modelima B i Zero.
*Ako koristite Pi Zero, trebat će vam OTG mrežni adapter (osim ako ne kupite "W" verziju s ugrađenim WiFi -om)
Morat ćete povezati Pi na mrežu.
Pomoću dupont konektora spojite relejnu karticu na Pi.
Imajte na umu da bi relejna kartica trebala koristiti vanjsko napajanje (uklonite vezu i spojite se na vanjski 5v). Radit će s PI -jem, ali se ne preporučuje za proizvodnju.
Za svoje postavljanje koristio sam USB HUB s vanjskim napajanjem. To daje snagu PI -u.
Također sam odrezao kraj starog USB kabela i napajao releje s druge USB veze na čvorište kako bih ostao siguran. Moja 'proizvodna' verzija koristi malo napajanje s 5V 5A sklopkom. Opet sam samo prepolovio USB kabel za napajanje Pi preko Micro-USB-a i presjekao dva dupont konektora za napajanje relejne ploče. U USB vodiču postoje 4 žice, većina koristi crvenu/crnu za označavanje napajanja od 5 V, ali ako ste u nedoumici, upotrijebite mjerač kako biste bili sigurni da ste dobili ispravne žice.
Igle releja na ploči spojene su na odgovarajuće GPIO pinove na PI zaglavlju.
Kôd vam omogućuje odabir GPIO pinova, ali zadana vrijednost koju sam koristio bila je:
- Relej Pin 1 - Uzemljenje
- Relej Pin 2 - Relej 1 - GPIO 0
- Relejni pin 3 - Relej 2 - GPIO 1
- Relejni pin 4 - Relej 3 - GPIO 2
- Relej Pin 5 - Relej 4 - GPIO 3
- Relejni pin 6 - Relej 5 - GPIO 4
- Relejni pin 7 - Relej 6 - GPIO 5
- Relejni pin 8 - Relej 7 - GPIO 6
- Relejni pin 9 - Relej 8 - GPIO 7
- Relejni pin 10 - +5v za logiku
Korak 2: PI postavljanje
Neću ponovno stvarati vodič o tome kako svoj PI pokrenuti i povezati s mrežom.
Postoji mnogo vodiča, uključujući izvrsne instruktore na:
www.instructables.com/id/Ultimate-Raspberr…
Morat ćete doći do točke gdje je PI vidljiv na mreži i možete se povezati s njim.
Nije važno radi li se o Ethernetu ili bežičnoj mreži.
Ovaj se projekt može dovršiti samo pomoću Raspberry PI -a pomoću Geany Programmers Editor -a, ali meni je osobno lakše pripremiti kod na računalu koristeći Visual Studio ili Eclipse (ili čak Notepad ++), a zatim ga prenijeti u PI radi otklanjanja pogrešaka pomoću VNC veza. Opet to neću pokrivati ovdje jer postoji mnogo izvrsnih uputa o postavljanju VNC -a na RPi.
Sve što trebate je doći do točke gdje možete učitati i sastaviti kôd.
Jedna napomena koja je važna je da budući da UPNP rukovatelj zahtijeva UDP multicast, sučelja koja se koriste moraju biti postavljena na 'Promiscuous' način.
To se može učiniti u naredbenom retku:
pi@raspberrypi: ~ $ ifconfig eth0 promisc
i / ili
pi@raspberrypi: ~ $ ifconfig wlan0 promisc
To treba učiniti trajnim pa sam uredio /etc/rc.local
sudo nano / etc / rc.local
uključiti redak:
sudo ifconfig eth0 promisc
nakon prvog skupa banner # linija kako biste bili sigurni da su sučelja postavljena pri pokretanju.
Korak 3: Preuzimanje i sastavljanje koda
Kôd se nalazi u mojem Github -ovom repsoitoriju;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
iako postoje "ispravni" načini kloniranja spremišta. Bilo mi je lakše samo otvoriti uređivač Geany na Pi radnoj površini i zalijepiti kôd.
Slično, ako koristite naredbeni redak;
Izradite novi direktorij
mkdir Stu
Promijenite ga
cd Stu
Napravite novu tekstualnu datoteku
nano StuPiMo.c
Kopirajte kôd iz Github raw -a i zalijepite ga u novu datoteku
Spremi i izađi.
Nakon što imate datoteku kao objekt izvornog koda C, možete je sastaviti pomoću
gcc -o StuPiMo StuPiMo.c -l ožičenjePi
imajte na umu da je "-l wiringPi" potreban kako bi se osiguralo da se kompajler spoji u potrebnu knjižnicu wiringPi.
Kôd se tada može pokrenuti pomoću
./StuPiMo
Opet, ako želite da se ovo pokreće pri pokretanju, upotrijebite naredbu:
sudo nano /etc/rc.local
da biste dodali sljedeći redak
sudo/home/pi/Stu/StuPiMo &
u vašu /etc/rc.local datoteku. Ne zaboravite spremiti datoteku pri izlazu.
Imajte na umu da su znakovi '&' ključni za osiguravanje pokretanja podprocesa kako biste bili sigurni da skripta u ovom trenutku nije blokirana.
Korak 4: Upotreba
Nakon što pokrenete kôd, zamolite aleksu da "otkrije uređaje" i trebala bi pronaći svih 8 virtualnih Wemo uređaja.
Tada se samo može reći: "Alexa uključi utičnicu 1" ili "Alexa isključi utičnicu 6" itd., A relej će se promijeniti.
Korak 5: Kako kôd radi
Kod funkcionira emulirajući niz Belkin Wemo utičnica.
Da bi to postigao, mora se nositi s 2 glavne funkcije
- upravljač emitiranja UPNP otkrivanja
- "rukovatelj uređaja" (jedan po virtualnom uređaju) za upravljanje naredbama poslanim na uređaj i potrebnim odgovorima.
Bonusna značajka je ta što također objavljuje web stranicu kako bi omogućila kontrolu uređaja.
UPNP rukovatelj
UPNP rukovatelj otvara utičnicu za nadgledanje paketa SSDP protokola na 239.255.255.250 portu 1900.
Odgovara na sve upite 'M-SEARCH' koji dolaze s paketom odgovora za otkrivanje koji najavljuje pojedine wemo emulatore svakome tko to zatraži.
Rukovatelj uređaja
Rukovatelji uređaja (po jedan na virtualni uređaj) nadziru niz IP portova i odgovaraju na zahtjeve.
Poslužit će odgovor setup.xml na upit
Poslužit će datoteku opisa događaja kada se to od vas zatraži
Odgovorit će na zahtjev GETBINARYSTATE
Obradit će i odgovoriti na zahtjev SETBINARYSTATE
Web poslužitelj
Web poslužitelj je jednostavna rutina koja gradi HTML obrazac koji sadrži gumb po releju.
On će reagirati na pritisnute gumbe i prema tome promijeniti stanje releja.
Korak 6: Prilagođavanje i prijateljska imena
Nisam poludio zbog koda kako bi bio jednostavan i uređen.
Osnove se mogu prilagoditi definicijama na početku koda:
// globalne definicije#definiraj WEBPORT 5353 // port za pokretanje web poslužitelja
#define NUMDEVICES 8 // Broj virtualnih uređaja za stvaranje
#define PORTBASE 43450 // osnovni IP port za povećanje s
WEBPORT je broj porta na kojem radi ugrađeni web poslužitelj. Ovo bi se moglo natjerati da sjedne na 80 da olakša stvari, ali otkrio sam da je to u sukobu s tomcat -om ili drugim lokalnim uslugama.
NUMDEVICES definira broj pojedinačnih WEMO emulatora za pokretanje. Ako imate 2 portnu relejnu karticu, postavite je na 2, 4 port = 4 itd.
Prijateljski nazivi uređaja postavljeni su u rutini koja se naziva setup_names:
int setup_names (char friendly [NUMDEVICES] [NAMELEN]) {int i = 0;
// koristiti ovu petlju
za (i = 0; i <NUMDEVICES; i ++) {
sprintf (friendly , "Socket %d", i + 1);
}
// ili sljedeću ručnu tablicu za popunjavanje naziva uređaja
/*
strcpy (prijateljski [0], "TV u spavaćoj sobi");
strcpy (prijateljski [1], "Električna deka");
strcpy (prijateljski [2], "Lampa za spavaću sobu");
strcpy (prijateljski [3], "Utičnica 4");
strcpy (prijateljski [4], "Utičnica 5");
strcpy (prijateljski [5], "Utičnica 6");
strcpy (prijateljski [6], "Utičnica 7");
strcpy (prijateljski [7], "Socket 8");
*/
povratak i;
}
Koristio sam petlju za pozivanje svakog od uređaja 'Socket n', ali možete izbrisati ovu petlju i umjesto toga dodati svoja prijateljska imena (samo pazite da dodate isti broj kao NUMDEVICES) ako izbrišete / * * /
Ne zaboravite ponovno sastaviti kôd ako napravite bilo kakve promjene.
Preporučeni:
Relejni prekidač s dvije tipke: 3 koraka
Relejni prekidač s dvije tipke: Ovaj članak prikazuje kako uključiti i isključiti prekidač s pritiskom na gumb. Ovaj se krug može učiniti s dva prekidača. Pritisnete jedan prekidač i žarulja se uključi. Pritisnite drugi prekidač i žarulja se isključuje. Međutim, ovaj Ins
Alexa pametni kućni sustav koji koristi relejni modul NodeMCU: 10 koraka
Alexa pametni kućni sustav koji koristi NodeMCU relejni modul: U ovom IoT projektu napravio sam Alexa Alexa automatizacijski sustav pomoću NodeMCU ESP8266 & Relejni modul. Glasovnom naredbom možete jednostavno kontrolirati svjetlo, ventilator i druge kućanske aparate. Za povezivanje pametnog zvučnika Echo Dot s
IOT relejni prekidač s glasovnim upravljanjem temeljen na Arduinu (Google Home i Alexa podržani): 11 koraka
IOT relejni prekidač s glasovnim upravljanjem temeljen na Arduinu (Google Home i Alexa podržani): Ovaj projekt opisuje kako napraviti relejni prekidač baziran na Arduinu, glasovnim upravljanjem. Ovo je relej koji možete daljinski uključiti i isključiti pomoću aplikacije za iOS i Android, kao i povezati ga s IFTTT -om i upravljati glasom pomoću Googa
Arduino kontroler za igre DIY - Arduino PS2 kontroler igre - Igranje Tekkena s DIY Arduino gamepadom: 7 koraka
Arduino kontroler za igre DIY | Arduino PS2 kontroler igre | Igranje Tekkena s DIY Arduino gamepad -om: Zdravo dečki, igranje igara uvijek je zabavno, ali igranje sa vlastitim DIY prilagođenim kontrolorom igara je zabavnije. Zato ćemo u ovim uputama napraviti kontroler igre pomoću arduino pro micro
YABC - Još jedan kontroler Blynk - IoT kontroler temperature i vlažnosti u oblaku, ESP8266: 4 koraka
YABC - Još jedan kontroler Blynk - IoT kontroler temperature i vlažnosti u oblaku, ESP8266: Zdravo proizvođači, nedavno sam počeo uzgajati gljive kod kuće, gljive kamenice, ali već sam 3 puta imao ove kontrolere kod kuće za kontrolu temperature fermentatora za moju domaću marinu, supruga sada radi i ovu stvar Kombucha, a kao termostat za toplinu