Chytrá WiFi zásuvka Sonoff S26
Chytrá domácnost umožňuje ovládat elektrické spotřebiče na dálku. A přesně to umožní zásuvka Sonoff S26.
V tomto návodu navážeme na minulý týden, kdy jsme si nainstalovali operační systém Raspbian na naše Raspberry Pi. Ukážeme si, jak můžeme Raspberry Pi ovládat přes síť z druhého počítače, jak změnit základní heslo, a nakonec si zkusíme zablikat LED diodou.
Pokud se Vám podařilo minulý týden nainstalovat OS Raspbian a dostali jste se na plochu, tak jste si určitě všimli použitého rozmístění obrazovky. Vidíme tedy, že horní lišta obsahuje zleva vstup do hlavní nabídky aplikací a nastavení, dále několik zkratek na základní aplikace, místo pro otevřené aplikace, systémové ikony, a nakonec hodiny s tlačítkem pro odpojení připojených zařízení.
Co se týká připojení Raspberry do sítě, tak máme více možností podle použité desky. Já u svého Raspberry Pi 3 mám možnosti dvě, LAN konektor a WiFi. Pokud bych chtěl využít bezdrátového připojení, stačí kliknout na ikonu dvou protijdoucích šipek v liště napravo, čímž se nám zobrazí bezdrátové sítě v našem okolí. Po výběru naší sítě pak už jen zadáme heslo a Raspberry by se mělo připojit.
Já využiji LAN kabelu, který zapojím do Raspberry Pi a po automatickém přidělení IP adresy jsem připojen jak do domácí sítě, tak zároveň do Internetu. A jak jsem zmínil v úvodu, ukážeme si nyní, jak povolit vzdálené připojení. Pro toto nastavení si otevřeme nabídku ikonkou maliny vlevo, najedeme myší na nabídku Preferences a zvolíme aplikaci „Raspberry Pi Configuration“.
Jak si můžete všimnout na otevřené záložce System, máme zde několik možností pro přizpůsobení Raspberry Pi. Jako první krok bych doporučil z bezpečnostních důvodů změnit heslo, což je možné po stisknutí tlačítka „Change Password“. Poté můžete změnit název „Hostname“, který udává název našeho Raspberry v síti. Z ostatních možností si po připojení vzdáleně budete chtít pravděpodobně upravit rozlišení pomocí tlačítka „Set Resolution“.
Pro povolení síťového přístupu se přepneme na záložku Interfaces, kde změníme volby SSH a VNC na Enabled. SSH slouží pro připojení skrze příkazovou řádku, zatímco VNC je grafické rozhraní (něco jako Vzdálená plocha na Windows). Pokud si budete chtít později zkoušet připojovat různé moduly k Raspberry pomocí sběrnic I2C, SPI či OneWire, zde budete moci vše povolit či zakázat.
Pokud jste ukončili nastavení, stačí vše potvrdit tlačítkem OK.
Nyní si můžeme vyzkoušet vzdálené připojení k Raspberry Pi. Pokud jste se připojili do sítě, je ještě důležité zjistit IP adresu, kterou nám router přidělil. Na to můžeme využít Terminal, který má černou ikonku uprostřed na horní liště vlevo. Po jeho otevření do něj stačí napsat příkaz „ifconfig“.
Po zavolání tohoto příkazu uvidíte podobný výpis jako na obrázku. Pokud jste připojili Raspberry pomocí ethernetové přípojky, bude Vás zajímat IP adresa přidělená na rozhraní eth0. Pokud jste připojeni přes WiFi, je adresa u rozhraní wlan0. Zde z obrázku si tedy pro další krok zapamatuji svoji adresu „192.168.1.11“.
V tomto kroku je nutné stáhnout do počítače program, který nám umožní vzdálené připojení pomocí VNC. Já doporučuji program VNC Viewer, který je zároveň nainstalovaný i v Raspberry Pi. Po jeho stažení a instalaci ho můžeme spustit a přidat si nové připojení na naše Raspberry. To uděláme jednoduše tak, že do horní lišty napíšeme zjištěnou IP adresu a stiskneme Enter.
Po tomto kroku na nás vyskočí hláška o souhlasu s certifikátem, kterou potvrdíme.
A také se objeví hláška pro přihlášení do Raspberry Pi. Pokud jste v předchozím kroku nezměnili heslo, po instalaci je přihlašovací jméno „pi“ a heslo „raspberry“. Po vyplnění přihlašovacích údajů se nám již otevře obrazovka Raspberry Pi, kde můžeme ovládat celý počítač tak, jako kdybychom byli připojeni klávesnicí a myší napřímo.
Nyní si tedy vyzkoušíme slíbené blikání LED diodou. Pro začátek bude dobré si ukázat propojovací lištu s GPIO piny (General Purpose Input Output). Pro zobrazení přímo na Raspberry Pi stačí do Terminálu zadat příkaz "pinout".
Jak si můžete všimnout na obrázku, máme k dispozici celkem 40 pinů. Z tohoto počtu máme 8 pinů pro zem GND, 2 piny pro napájení +5V a 2 piny pro napájení +3,3V. Zbytek tvoří digitální propojovací GPIO piny, kde některé z nich ještě mají speciální vlastnosti jako například zmíněné rozhraní I2C atd.
Je důležité upozornit na to, že GPIO piny Raspberry Pi (podobně jako ESP32) pracují na napětí 3,3 Voltu a připojení 5V modulů by mohlo vést k poškození celé desky. Pokud se chcete dozvědět více o GPIO pinech, doporučuji tuto stránku.
Pro naše zablikání jsem vybral příhodně krajní piny 39 a 40, kde je pin GND a GPIO21. Pro jednoduché zablikání tedy stačí zapojit LED diodu tak, že její anodu (delší nožička) zapojíme na pin GPIO21 a druhou nožičku na pin GND. A nyní můžeme přejít na samotný program.
Na Raspberry Pi máme mnoho možností, jak psát programy, kdy já jsem pro tento jednoduchý příklad vybral jazyk Python. Pro jeho nahrání a testování můžeme využít již nainstalované programovací prostředí Python 3 (IDLE). To najdeme v nabídce aplikací ve skupině „Programming“.
Po jeho spuštění se nám otevře okno Python Shell, v kterém bude probíhat spouštění programů. Abychom ale mohli nějaký vytvořit, zvolíme v nabídce File možnost „New File“, která nám otevře v novém okně nový soubor. Ten si můžeme rovnou uložit pomocí nabídky File-Save například na Plochu (Desktop) a nazvat si ho Blink. Po jeho uložení se nám objeví na ploše skript „Blink.py“.
A nyní tedy k samotnému programu. Jak si můžete všimnout, na začátku provedeme připojení modulu pro práci s GPIO piny a také modulu pro práci s časem, abychom mohli používat zpoždění.
Jako další si vytvoříme proměnnou LedPin, do které nastavíme naše číslo pinu s LED diodou.
Následně si vytvoříme definici (def) podprogramu setup, v kterém nastavíme nejprve číslování BCM, aby nám čísla pinů seděla s dříve uvedeným schématem. Druhá možnost je použít číslování BOARD, kdy by se náš pin změnil na číslo 40. A poté nastavíme náš LedPin jako výstupní.
V dalším kroku si vytvoříme podprogram blink, který bude obsahovat naši hlavní funkci – blikání. Toho je dosaženo tak, že nejprve vytvoříme podmínku „while True“, která bude donekonečna opakovat v ní uvedené příkazy (jako podprogram loop u Arduina). V ní umístíme následující příkazy. První příkaz nastaví na LedPin logickou jedničku, aby rozsvítil LED diodu. Poté uspíme program na jednu sekundu a nastavíme logickou nulu. Po druhé pauze se pak smyčka while opakuje, co pro nás znamená blikající diodu se změnou každou sekundu.
Jako další je ještě vytvořen podprogram ukonci. Ten je důležitý, protože při ukončení našeho blikání musíme uvolnit všechny použité GPIO piny, abychom je neblokovali pro jiné programy. Toto je dosaženo dvojicí příkazů pro vypnutí LED diody a následně vyčištění pomocí funkce cleanup.
Na konci programu je pak popsáno chování celého programu. Po zahájení si tedy můžeme všimnout, že jako první zavoláme podprogram setup. Následně budeme volat podprogram blink, před kterým je ale uveden příkaz try, který říká programu, co má dělat, respektive hlavně v části except co má udělat, pokud se objeví nějaká výjimka. My zde máme uvedenou přímo vyjímku „KeyboardInterrupt“, která označuje přerušení pomocí klávesové zkratky Ctrl+C. Pokud tedy budeme chtít ukončit blikání, stačí stisknout uvedené klávesy v Python Shell konzoli a dojde ke správnému ukončení programu.
# Pripojeni modulu pro praci s GPIO piny import RPi.GPIO as GPIO # Pripojeni modulu pro praci s casem import time LedPin = 21 # Cislo LED pinu def setup(): # Podprogramu setup, provede se na zacatku GPIO.setmode(GPIO.BCM) # Cislovani pinu - BCM nebo BOARD GPIO.setup(LedPin, GPIO.OUT) # Nastaveni pinu jako vystupu def blink(): # Podprogram blink, ktery se bude vykonavat while True: # Nekonecna smycka, jako loop u Arduina GPIO.output(LedPin, GPIO.HIGH) # Zapnuti LED diody pomoci prikazu GPIO.HIGH time.sleep(1) # Pauza po dobu 1 sekundy (delay) GPIO.output(LedPin, GPIO.LOW) # Vypnuti LED diody pomoci prikazu GPIO.LOW time.sleep(1) # Pauza po dobu 1 sekundy (delay) def ukonci(): # Podprogram, ktery bude zavolan pri ukonceni programu GPIO.output(LedPin, GPIO.LOW) # Vypnuti LED diody GPIO.cleanup() # Uvolneni vsech GPIO portu pro dalsi pouziti if __name__ == '__main__': # Program zacina ZDE setup() # Zavolani podprogramu setup try: # Zavolani podrogramu blink s osetrenim vyjimky nize blink() except KeyboardInterrupt: # Pri stisku zkratky 'Ctrl+C' se vykona podprogram ukonci ukonci()
Po nakopírování uvedeného programu do souboru Blink.py ho uložíme a můžeme přejít ke spuštění. To můžete udělat buď pomocí tlačítka F5 nebo zavoláním v nabídce „Run-Run Module“. Nyní byste měli vidět blikající LED diodu a v konzoli Python Shell informaci o restartu skriptu Blink.py. A také si můžete vyzkoušet, že když v konzoli Python Shell stisknete klávesovou zkratku Ctrl+C, blikání se ukončí. Případně lze ukončení vyvolat v nabídce „Shell-Interrupt Execution“.
V tomto návodu jsme si ukázali jednoduché blikání LED diodou, na které v budoucích návodech můžeme navázat jak s prací s tlačítkem, tak i nějakým složitějším modulem.
Zmíněné Raspberry Pi desky na eshopu:
Raspberry Pi 3 B:
https://dratek.cz/arduino/1385-raspberry-pi-3-model-b-quad-core-1-2-ghz-64bit-cpu-1gb-ram-wifi-bluetooth-4-1-1473147122.html
Raspberry Pi 3 B+:
https://dratek.cz/arduino/3067-raspberry-pi-3-model-b-64-bit-1gb-ram.html
Raspberry Pi Zero:
https://dratek.cz/arduino/3106-raspberry-pi-zero-h.html
Chytrá domácnost umožňuje ovládat elektrické spotřebiče na dálku. A přesně to umožní zásuvka Sonoff S26.
e-Paper displeje už jsou dostupné i pro bastlení za rozumné ceny a pro jejich ovládání se hodí tento Driver.