Obsah:
- Krok 1: Spotrebný materiál a pripojenia
- Krok 2: Nastavenie PI
- Krok 3: Stiahnutie a kompilácia kódu
- Krok 4: Používanie
- Krok 5: Ako kód funguje
- Krok 6: Prispôsobenie a priateľské mená
Video: Ovládač relé Alexa Raspberry Pi: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Tento návod som vytvoril, aby som sa podelil o svoje skúsenosti s integráciou zariadení IOT s Alexou od Amazonu.
Tento projekt umožňuje ovládanie reléovej dosky pripojenej k malinovému pi z inteligentného ovládača.
Bol testovaný s Alexou, ale zdá sa, že funguje dobre aj so Samsung Smartthings a inými ovládacími rozhraniami, pretože napodobňuje sériu zásuviek Belkin Wemo.
Existuje veľa príkladov založených na vynikajúcom kóde FAUXMO, ale to znamenalo naučiť sa python a nedalo mi podrobnú kontrolu, ktorú som potreboval pre svoje zariadenia, a tak som sa rozhodol znova ho vytvoriť od začiatku pomocou C ako základného kódovacieho jazyka.
Tiež som nechcel ísť do hĺbky lambda kódu na Amazon.com, takže som to zjednodušil.
Zverejnil som zdroj a poznámky na Github:
github.com/Switchdoctorstu/StuPiMo
Tento tutoriál má skutočne pokryť to, ako funguje, a zverejniť svoje poznámky v prípade, že to pomôže iným.
Krok 1: Spotrebný materiál a pripojenia
Veci, ktoré potrebujete, sú ľahko dostupné na Amazon / EBay:
- Malinový koláč *
- Napájací zdroj Pi
- Dupont konektory
- Reléová doska
- Starý kábel micro USB (na zníženie napájania reléovej karty na polovicu)
Akákoľvek malinová Pi bude fungovať, testoval som to na modeli B a Zero.
*Ak používate Pi Zero, budete potrebovať sieťový adaptér OTG (pokiaľ si nekúpite verziu „W“s podporou WiFi)
Budete musieť pripojiť Pi k sieti.
Na pripojenie reléovej karty k Pi použite dupontové konektory.
Všimnite si toho, že reléová karta by mala používať externé napájanie (odstráňte prepojenie a pripojte k externému 5v). Bude fungovať s napájaním z PI, ale nie je odporúčané pre spustenie výroby.
Na svoje nastavenie som použil externe napájaný USB HUB. To poskytuje výkon PI.
Tiež som prerušil koniec starého USB kábla a napájal relé z druhého USB pripojenia k rozbočovaču, aby som zostal v bezpečí. Moja „produkčná“verzia používa malý 5V 5A spínaný zdroj. Opäť som skrátil kábel USB na polovicu, aby som napájal Pi cez Micro-USB a vyrezal dva dupontové konektory na napájanie reléovej dosky. V kábli USB sú 4 vodiče, väčšina používa červenú/čiernu na označenie napájania 5 V, ale v prípade pochybností použite merač, aby ste sa uistili, že dostanete správne vodiče.
Reléové piny na doske sú prepojené s príslušnými GPIO pinmi na hlavičke PI.
Kód vám umožňuje vybrať piny GPIO, ale predvolené nastavenie, ktoré som použil, bolo:
- Reléový kolík 1 - uzemnenie
- Pin relé 2 - relé 1 - GPIO 0
- Pin relé 3 - Relé 2 - GPIO 1
- Pin relé 4 - Relé 3 - GPIO 2
- Kolík relé 5 - relé 4 - GPIO 3
- Pin 6 relé - relé 5 - GPIO 4
- Pin 7 relé - relé 6 - GPIO 5
- Kolík relé 8 - relé 7 - GPIO 6
- Pin relé 9 - Relé 8 - GPIO 7
- Reléový kolík 10 - +5v pre logiku
Krok 2: Nastavenie PI
Nebudem znova vytvárať návod, ako uviesť váš PI do prevádzky a pripojiť sa k sieti.
Existuje mnoho sprievodcov vrátane vynikajúceho návodu na:
www.instructables.com/id/Ultimate-Raspberr…
Budete sa musieť dostať do bodu, kedy je PI v sieti viditeľné a môžete sa k nemu pripojiť.
Nezáleží na tom, či je to prostredníctvom ethernetového alebo bezdrôtového pripojenia.
Tento projekt je možné dokončiť iba pomocou Raspberry PI pomocou editora Geany Programmers Editor, ale mne osobne je jednoduchšie pripraviť si kód na počítači pomocou programu Visual Studio alebo Eclipse (alebo dokonca pomocou programu Poznámkový blok ++) a potom ho nahrať do PI na ladenie pomocou Pripojenie VNC. Opäť to nebudem pokrývať, pretože existuje veľa vynikajúcich inštrukcií o nastavení VNC na RPi.
Všetko, čo potrebujete, je dostať sa do bodu, kedy môžete nahrať a skompilovať kód.
Jedna poznámka, ktorá je dôležitá, je, že pretože obslužný program UPNP vyžaduje multicast UDP, použité rozhrania musia byť nastavené na 'promiskuitný' režim.
To je možné vykonať na príkazovom riadku:
pi@raspberrypi: ~ $ ifconfig eth0 promisc
a / alebo
pi@raspberrypi: ~ $ ifconfig wlan0 promisc
Toto musí byť trvalé, preto som upravil súbor /etc/rc.local
sudo nano / etc / rc.local
zahrnúť riadok:
sudo ifconfig eth0 promisc
po prvom súbore bannerových # riadkov, aby ste sa uistili, že rozhrania boli nastavené pri spustení.
Krok 3: Stiahnutie a kompilácia kódu
Samotný kód sa nachádza v mojom úložisku Github;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
zatiaľ čo existujú „správne“spôsoby klonovania úložiska. pre mňa bolo jednoduchšie otvoriť editor Geany na ploche Pi a vložiť kód.
Podobne, ak používate príkazový riadok;
Vytvorte nový adresár
mkdir Stu
Zmeň to
cd Stu
Vytvorte nový textový súbor
nano StuPiMo.c
Skopírujte kód z Github raw a vložte ho do nového súboru
Uložiť a ukončiť.
Akonáhle budete mať súbor ako objekt zdrojového kódu C, môžete ho skompilovať pomocou
gcc -o StuPiMo StuPiMo.c -l zapojeniePi
všimnite si "-l wiringPi", aby sa zabezpečilo, že prekladač prepojí požadovanú knižnicu wiringPi.
Kód je potom možné spustiť pomocou
./StuPiMo
Ak chcete, aby to bežalo aj pri štarte, použite príkaz:
sudo nano /etc/rc.local
pridať nasledujúci riadok
sudo/home/pi/Stu/StuPiMo &
do vášho súboru /etc/rc.local. Nezabudnite súbor uložiť pri výstupe.
Všimnite si toho, že '&' je nevyhnutné na zabezpečenie spustenia podprocesu, aby sa zabezpečilo, že skript v tomto mieste nie je zablokovaný.
Krok 4: Používanie
Akonáhle spustíte kód, požiadajte Alexu o „Objavte zariadenia“a mala by nájsť všetkých 8 virtuálnych zariadení Wemo.
Potom stačí povedať: „Alexa zapne zásuvku 1“alebo „Alexa vypne zásuvku 6“atď. A príslušné relé sa zmení.
Krok 5: Ako kód funguje
Kód funguje tak, že napodobňuje sériu zásuvkových zariadení Belkin Wemo.
Aby to bolo možné dosiahnuť, musí zvládnuť 2 hlavné funkcie
- obslužný program zisťovania vysielania UPNP
- „obsluha zariadenia“(jedna na virtuálne zariadenie) na správu príkazov odoslaných do zariadenia a požadovaných odpovedí.
„Bonusovou“funkciou je, že publikuje aj webovú stránku, ktorá umožňuje ovládanie zariadení.
Obsluha UPNP
Obslužný program UPNP otvára zásuvku na monitorovanie paketov protokolu SSDP na porte 239.255.255.250 1900.
Reaguje na všetky otázky typu „M-SEARCH“, ktoré prichádzajú s balíčkom odpovedí na zistenie, ktorý jednotlivým emulátorom wemo oznámi každého, kto sa pýta.
Handler zariadenia
Obslužné zariadenia zariadení (jeden na virtuálne zariadenie) monitorujú sériu portov IP a reagujú na požiadavky.
Na požiadanie poslúži odpovedi setup.xml
Na požiadanie bude slúžiť súboru s popisom udalosti
Odpovie na požiadavku GETBINARYSTATE
Spracuje a odpovie na požiadavku SETBINARYSTATE
Webový server
Webový server je jednoduchá rutina, ktorá vytvára formulár HTML obsahujúci tlačidlo na relé.
Reaguje na stlačenie tlačidiel a podľa toho prepne stav relé.
Krok 6: Prispôsobenie a priateľské mená
Nezbláznil som sa z kódu, aby bol jednoduchý a upraviteľný.
Základy je možné prispôsobiť definíciami na začiatku kódu:
// globálne definície#definujte port WEBPORT 5353 //, na ktorom chcete spustiť webový server
#define NUMDEVICES 8 // Počet virtuálnych zariadení, ktoré sa majú vytvoriť
#define PORTBASE 43450 // základný IP port na zvýšenie o
WEBPORT je číslo portu, na ktorom vstavaný webový server beží. Dalo by sa to urobiť aj na 80, aby bolo všetko jednoduché, ale zistil som, že je to v rozpore s Tomcat alebo inými službami bežiacimi lokálne.
NUMDEVICES definuje počet spustenia jednotlivých emulátorov WEMO. Ak máte reléovú kartu s 2 portami, nastavte ju na 2, 4 porty = 4 atď.
Popisné názvy zariadení sa nastavujú v rutine s názvom setup_names:
int setup_names (char friendly [NUMDEVICES] [NAMELEN]) {int i = 0;
// použite túto slučku
pre (i = 0; i <NUMDEVICES; i ++) {
sprintf (spriatelený , "zásuvka %d", i + 1);
}
// alebo nasledujúca manuálna tabuľka na vyplnenie názvov zariadení
/*
strcpy (priateľský [0], "TV v spálni");
strcpy (priateľský [1], „elektrická deka“);
strcpy (priateľský [2], „lampa do spálne“);
strcpy (priateľský [3], "Zásuvka 4");
strcpy (priateľský [4], "zásuvka 5");
strcpy (priateľský [5], "zásuvka 6");
strcpy (priateľský [6], "Zásuvka 7");
strcpy (priateľský [7], "Zásuvka 8");
*/
vrátiť i;
}
Použil som slučku na to, aby som každé zo zariadení nazval „Zásuvka n“, ale túto slučku môžete odstrániť a namiesto toho pridať svoje vlastné priateľské mená (uistite sa, že zadáte rovnaké číslo ako NUMDEVICES), ak odstránite / * * /
Ak urobíte akékoľvek zmeny, nezabudnite kód znova skompilovať.
Odporúča:
Ovládač televízora Alexa IoT ESP8266: 10 krokov (s obrázkami)
Alexa IoT TV-ovládač ESP8266: Nedávno som si kúpil Amazon Echo Dot počas dňa Amazon Prime za ~ 20 €. Tieto malé hlasové asistentky sú lacné a skvelé pre domácu automatizáciu, ak viete, čo je možné a ako stavať inteligentné zariadenia. Mám inteligentnú televíziu Samsung, ale chcel som
Ovládač krokového motora Raspberry Pi, Python a TB6600: 9 krokov
Ovládač krokového motora Raspberry Pi, Python a TB6600: Tento návod postupuje podľa krokov, ktoré som vykonal pri pripojení Raspberry Pi 3b k regulátoru krokového motora TB6600, napájaniu 24 VDC a 6 -vodičovému krokovému motoru. Som asi ako mnoho z vás a náhodou mám " brašnu " zvyšných nominálnych hodnôt
Obvod modulu relé relé Lora Arduino: 12 krokov
Obvod riadiaceho reléového modulu Lora Arduino: V tomto projekte Lora uvidíme, ako ovládať vysokonapäťové zariadenia pomocou riadiaceho obvodu relé LoRa Arduino. V tomto projekte Arduino Lora použijeme modul Reyax RYLR896 Lora, Arduino a 12v reléový modul na ovládanie 5 domácich spotrebičov s
DIY herný ovládač založený na Arduine - Herný ovládač Arduino PS2 - Hra Tekken s gamepadom DIY Arduino: 7 krokov
DIY herný ovládač založený na Arduine | Herný ovládač Arduino PS2 | Hranie Tekkenu s gamepadom pre domácich majstrov Arduino: Dobrý deň, chlapci, hranie hier je vždy zábavné, ale hranie s vlastným ovládačom pre vlastnú potrebu je zábavnejšie. Preto v tomto návode vytvoríme herný ovládač pomocou arduino pro micro
Komunikačný box s integrovaným relé UCL a relé: 5 krokov
Komunikačný box s integrovaným relé UCL: Hlavnou myšlienkou tohto projektu je ovládanie sady dvoch relé a senzora DHT11 pomocou aplikácie Blynk pomocou komunikácie WiFi a mikroovládača Nodmcu esp8266