diff --git a/lessons/micropython/micropython/ampy.md b/lessons/micropython/micropython/ampy.md new file mode 100644 index 0000000000..ca03472d7a --- /dev/null +++ b/lessons/micropython/micropython/ampy.md @@ -0,0 +1,67 @@ +## Práce se soubory + +Jak začneš psát trochu složitější programy, +mohlo by se stát, že tě konzole MicroPythonu začne trochu štvát. +Špatně se v ní opravují chyby a automatické odsazování funguje jen většinou. +Pojďme se podívat, jak naštvání předejít. + +Nejdřív si do virtuálního prostředí nainstaluj program Ampy od Adafruitu. + +```console +(env)$ python -m pip install adafruit-ampy +``` + +Doporučuji si větší kousky kódu – a určitě takové, +ve kterých je nějaký cyklus, podmínka či funkce – +psát v textovém editoru a do modulu pak posílat celý soubor. + +Zkus si to. Do souboru `blikajici_led.py` dej následující kód: + +```python +from machine import Pin +from time import sleep +pin_diody = Pin(14, Pin.OUT) +while True: + pin_diody.value(0) + sleep(1/2) + pin_diody.value(1) + sleep(1/2) +``` + +Potom zavři konzoli (`picocom`, PuTTY nebo `screen`). + +Ke spuštění budeš potřebovat znát port: + +* Linux: port používáš v příkazu `picocom`, např. `/dev/ttyUSB0` +* Windows: port používáš v PuTTY, např. `COM13` +* macOS: port používáš v příkazu `screen`, např. `/dev/tty.usbmodem*` + +`ampy` spusť následujícím příkazem, jen za `PORT` doplň svůj port: + +```console +(venv)$ ampy -p PORT run blikajici_led.py +``` + +Program by měl blikat diodou. +Využívá k tomu funkci `time.sleep()`, která počká daný počet vteřin – +tedy `time.sleep(1/2)` zastaví program na půl sekundy. + +Podobně je možné na destičku soubory i nahrávat, jen je potřeba místo +`run` použít `put`. + +```console +(venv)$ ampy -p PORT put blikajici_led.py +``` + +Pokud navíc budeš chtít, aby se program na destičce automaticky spouštěl, musí +se soubor s programem na destičce jmenovat `main.py`. `ampy` umí soubor při +kopírování i přejmenovat, když mu při kopírování zadáš i druhé (nové) jméno. + +```console +(venv)$ ampy -p PORT put blikajici_led.py main.py +``` + +Po úspěšném kopírování máš na destičce nahraný náš program ze souboru +`blikajici_led.py` do souboru `main.py`. Teď už bude tvůj program fungovat +i bez počítače, takže stačí destičku připojit např. k powerbance +a dioda se rozbliká. diff --git a/lessons/micropython/micropython/flashing.md b/lessons/micropython/micropython/flashing.md new file mode 100644 index 0000000000..1af76c200d --- /dev/null +++ b/lessons/micropython/micropython/flashing.md @@ -0,0 +1,29 @@ +## Flashování + +Na našich destičkách je MicroPython už nahraný, ale kdyby sis koupil{{a}} +vlastní NodeMCU nebo chtěl{{a}} firmware aktualizovat, budeš ho potřebovat umět +nahrát. + +K tomu je potřeba nástroj `esptool`, který se dá nainstalovat pomocí: + +```console +(env)$ python -m pip install esptool +``` + +Po instalaci esptool si stáhni nejnovější stabilní firmware pro ESP8266 +z [micropython.org/download](http://micropython.org/download#esp8266) a zadej: + +```console +(env)$ esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash 0 esp8266-20161110-v1.8.6.bin +``` + +Hodnotu pro `--port` opět doplň podle svého systému – např. `/dev/tty.wchusbserial1420` na Macu, `COM3` na Windows. + +> [note] +> Destiček s čipem ESP8266 se vyrábí celá řada různých typů a některé mohou +> potřebovat odlišné nastavení při flashování. +> Popis všech možností nastavení je k nalezení v [dokumentaci k esptool](https://github.com/espressif/esptool#usage). + +Je-li na desce nahraný MicroPython, tento příkaz by měl fungovat. U jiného +firmware, (případně u poškozeného MicroPythonu), je potřeba při zapojování +destičky do USB držet tlačítko FLASH. diff --git a/lessons/micropython/micropython/index.md b/lessons/micropython/micropython/index.md new file mode 100644 index 0000000000..5a706943f9 --- /dev/null +++ b/lessons/micropython/micropython/index.md @@ -0,0 +1,87 @@ +# MicroPython na malém zařízení + +> [note] Tahle sekce bohužel nejde jednoduše projít z domu. +> Využíváme speciální vybavení, které je potřeba nejdřív +> sehnat. Máš-li možnost se dostat na sraz, nebo +> aspoň kontaktovat organizátory, doporučujeme shánět +> spíš tímto způsobem. +> Případně jde daný hardware objednat přes Internet, +> typicky z čínských e-shopů. + +{{ figure( + img=static('nodemcu-devkit.jpg'), + alt='LoLin NodeMCU v3 – Vývojová deska s čipem ESP8266', + float='right', +) }} + +Dnes budeme programovat malé zařízení – +tak malé, že se ho pohodlně schováš v ruce. +Konkrétně budeme používat „chytrou destičku”, modul zvaný +*NodeMCU Devkit*, která by měla ležet před tebou. +Než ji vyndáš z obalu, měl{{a}} by ses *vybít*: +dotkni se něčeho kovového, co je spojeno se zemí, +třeba radiátoru nebo kovové části schránky nějakého +spotřebiče, který je zapojený do zásuvky. +Tím se zbavíš statické elektřiny, která by mohla +malinké zařízení poškodit. +Pak přístroj vyndej z obalu. Snaž se ho držet za +hrany a příliš se nedotýkat elektroniky a kovových +částí. + +> [note] +> Obal bude nejspíš roztržený, protože organizátoři +> na destičku před začátkem kurzu nainstalovali +> MicroPython. + +> [warning] +> Obal je vodivý a nesmí přijít do styku se zapojenou destičkou, +> protože by mohl zkratovat její vývody a tím ji zničit. +> Proto obal raději hned schovej a používej ho jen k transportu destičky. + +Teď, když destičku držíš v ruce, si +pojďme projít její základní součásti. + +
+ +{{ figure( + img=static("nodemcu-popisky.svg"), + alt='Obrázek desky NodeMCU DevKit', + float='left', +) }} + +Nejdůležitější část vývojové desky je v oplechované +krabičce s logem "Wi-Fi" a "FCC": +mikroprocesor ESP8266. +To je „mozek” celého zařízení, který – když je +správně naprogramován – umí provádět pythonní +příkazy a programy. +Procesor sedí na malé destičce, na které je ještě +anténa, kterou +přístroj může komunikovat s okolím. + +Tahle malá destička se dá použít i samostatně; +všechno ostatní, co kolem ní zabírá tolik místa, +nám jen ulehčí hraní a umožní se zařízením +jednoduše komunikovat a krmit ho elektřinou. + +Komunikace a „krmení” se děje přes +mikro-USB konektor, +do kterého zapojíš kabel ze svého počítače. +Když je modul naprogramovaný, stačí ho místo do +počítače zapojit do nabíječky či externího zdroje +(powerbanky) a bude fungovat samostatně. + +Kolem USB konektoru jsou dvě tlačítka: +RST, kterým se destička restartuje +(skoro jako kdybys ho odpojila a zase zapojila, což +se hodí, když něco uděláš špatně a modul „zamrzne”), +a FLASH, o kterém si povíme později. + +Po stranách modulu jsou dvě řady +„nožiček”, na které +se dá napojit celá řada nejrůznějších hraček. +Zkontroluj si, jestli jsou všechny nožičky rovné; +kdyby byla některá ohnutá, tak ji (nejlépe s pomocí +kouče) narovnej nebo si vezmi jinou destičku. + +
diff --git a/lessons/micropython/micropython/info.yml b/lessons/micropython/micropython/info.yml new file mode 100644 index 0000000000..903f9f3eb1 --- /dev/null +++ b/lessons/micropython/micropython/info.yml @@ -0,0 +1,26 @@ +title: MicroPython +style: md +attribution: +- Pro PyLadies Brno napsal Petr Viktorin, 2016-2017. +- Diagramy s LED vytvořeny pomocí [Fritzing](http://fritzing.org). +license: cc-by-sa-40 +css: | + .part-green { outline: 2px solid hsla(113, 100%, 50%, 1); + background-color: hsla(113, 100%, 50%, 0.25); } + .part-cyan { outline: 2px solid hsla(180, 100%, 50%, 1); + background-color: hsla(180, 100%, 50%, 0.25); } + .part-blue { outline: 2px solid hsla(236, 100%, 50%, 1); + background-color: hsla(236, 100%, 50%, 0.25); } + .part-yellow { outline: 2px solid hsla( 60, 100%, 50%, 1); + background-color: hsla( 60, 100%, 50%, 0.25); } + .part-orange { outline: 2px solid hsla( 42, 100%, 50%, 1); + background-color: hsla( 42, 100%, 50%, 0.25); } + .part-red { outline: 2px solid hsla( 0, 100%, 50%, 1); + background-color: hsla( 0, 100%, 50%, 0.25); } + .pull-right, .pull-left { margin: 1em; } + .highlight { background-color: hsla( 0, 100%, 50%, 0.1); } + .img-fluid { max-width: 100%; } + .highlight-nocolor{ background-color: hsla( 60, 100%, 50%, 0.75); } + .highlight-red { background-color: hsla( 0, 100%, 50%, 0.25); } + .highlight-green { background-color: hsla(113, 100%, 50%, 0.25); } + .highlight-blue { background-color: hsla(236, 100%, 50%, 0.25); } diff --git a/lessons/micropython/micropython/input.md b/lessons/micropython/micropython/input.md new file mode 100644 index 0000000000..307d5e4bda --- /dev/null +++ b/lessons/micropython/micropython/input.md @@ -0,0 +1,33 @@ +## Vstup + +MicroPython na malé destičce obsahuje některé +moduly, které jinde nenajdeš. Ten hlavní se jmenuje +`machine` a zpřístupňuje základní funkce zařízení. Zkus si: + +```python +from machine import Pin +pin = Pin(0, Pin.IN) +print(pin.value()) +``` + +Zmáčkni a drž tlačítko `FLASH` vedle USB konektoru. +Přitom pusť `print(pin.value())` znovu. +Jak se hodnota změní? + +Jak tomuhle kódu rozumět? +Třída `Pin` ti umožňuje ovládat jednotlivé +„nožičky”, kterými zařízení komunikuje s vnějším +světem: buď na nich nastavovat napětí, nebo zkoumat +jestli na nich nějaké napětí je. + +`Pin(0, Pin.IN)` vytvoří objekt třídy Pin, +který bude načítat data z „nožičky” číslo 0. +(`IN` znamená načítání – informace jdou *do* procesoru). +Funkce `pin.value()` změří napětí na dané +„nožičce” a vrátí buď 1 nebo 0 podle toho, jestli nějaké naměřila. + +No a „nožička” číslo 0 je připojená k tlačítku `FLASH`, +kterým se tak dá ono napětí ovládat. +Informace o tom, která nožička je kam připojená, +máš na [taháku](https://pyvec.github.io/cheatsheets/micropython/nodemcu-cs.pdf) – +můžeš si zkontrolovat, že Pin(0) u sebe má poznámku FLASH. diff --git a/lessons/micropython/micropython/install.md b/lessons/micropython/micropython/install.md new file mode 100644 index 0000000000..5cc1bb8308 --- /dev/null +++ b/lessons/micropython/micropython/install.md @@ -0,0 +1,122 @@ +## Instalace + +Nejdříve propoj modul s počítačem přes USB kabel, +jako kdybys připojoval{{a}} třeba mobil. + +> [note] +> Je potřeba použít kvalitní datový kabel. +> Nekvalitní kabely (např. spousta kabelů k +> nabíječkám) jsou často nepoužitelné. + +Dál postupuj podle operačního systému na svém počítači. +Kdyby něco nefungovalo, poraď se s koučem. +Původní (anglický) návod k této části je na +stránkách MicroPythonu. + + +### Linux + +Na správně nastaveném počítači stačí zadat: + +```console +$ picocom -b 115200 --flow n /dev/ttyUSB0 +``` + +Pokud příkaz neskončí s chybou, stiskni tlačítko `RST` na modulu. +Měly by se nakonec objevit tři zobáčky, `>>>`. + +Většina počítačů ale na komunikaci s malými zařízeními nastavená není. +Skončí-li příkaz `picocom` s chybou, +oprav ji podle následujícího návodu a zkus to znova. +(Možná bude potřeba vyřešit víc než jednu chybu.) + +* Nemáš-li příkaz `picocom` nainstalovaný, + je potřeba ho nainstalovat (např. + `sudo dnf install picocom` nebo + `sudo apt-get install picocom`). +* Pokud `picocom` skončil s chybou + `No such file or directory`, pravděpodobně + je potřeba k zařízení přistupovat přes jiný soubor. + Použij příkaz `dmesg | tail`, který vypíše něco jako: + +
+  $ dmesg | tail
+  [703169.886296] ch341 1-1.1:1.0: device disconnected
+  [703176.972781] usb 1-1.1: new full-speed USB device number 45 using ehci-pci
+  [703177.059448] usb 1-1.1: New USB device found, idVendor=1a86, idProduct=7523
+  [703177.059454] usb 1-1.1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
+  [703177.059457] usb 1-1.1: Product: USB2.0-Serial
+  [703177.060474] ch341 1-1.1:1.0: ch341-uart converter detected
+  [703177.062781] usb 1-1.1: ch341-uart converter now attached to ttyUSB0
+  
+ + Máš-li místo `ttyUSB0` něco jiného, v příkazu `picocom` to použij místo + `ttyUSB0`. + +* Pokud `picocom` skončil s chybou `Permission denied`, potřebuješ získat + přístup k souboru zařízení. + To znamená přidat se do příslušné skupiny: + + ```console + $ sudo usermod -a -G dialout $(whoami) + ``` + + Poté je potřeba se znovu přihlásit, třeba příkazem: + + ```console + $ su - $(whoami) + ``` + + Pro ověření spusť příkaz `groups`; v jeho výstupu by mělo být `dialout`. + Například: + + ```console + $ groups + kristyna lp wheel dialout mock + ``` + + +### Windows + +MicroPython se přihlásí jako COM port. Otevři +správce zařízení a zjisti, který COM port to je (kouč s tím pomůže). + +Nebylo-li zařízení nalezeno, je potřeba nainstalovat +*driver*, který je ke stažení třeba +[z tohoto blogu](https://iotta.cz/ovladace-pro-ch340g/). + +Pak si nainstaluj program +[PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) +(`putty.exe`) a spusť ho. +V konfiguračním okýnku zaškrtni *Connection Type: Serial* a +do *Serial line:* zadej svůj COM port. +Pak přepni v seznamu vlevo na *Serial* (úplně dole) a nastav *Speed* na *115200* +a *Flow Control* na *None*: + +{{ figure( + img=static("putty-config.jpg"), + alt='Obrázek nastavení PuTTY', +) }} + +Potom zpátky v kategorii *Session* můžeš nastavení uložit pro příště: +do políčka *Saved Sessions* zadej *MicroPython* a klikni OK. + +Nakonec klikni *Open*. Mělo by se otevřít +okýnko podobné konzoli, kde se, když zmáčkneš +na modulu `RST`, objeví nakonec tři zobáčky: `>>>`. + + +### macOS + +V příkazové řádce zadej: + +```console +$ screen /dev/tty.usbmodem* 115200 +``` + +a stiskni Enter. +Pak na modulu zmáčkni `RST`. +Měly by se nakonec objevit tři zobáčky, `>>>`. + +Nejde-li to, je možná potřeba nainstalovat driver. Ten se dá stáhnout +z [tohoto blogu](https://iotta.cz/ovladace-pro-ch340g/). diff --git a/lessons/micropython/micropython/intro.md b/lessons/micropython/micropython/intro.md new file mode 100644 index 0000000000..c45b23aef0 --- /dev/null +++ b/lessons/micropython/micropython/intro.md @@ -0,0 +1,61 @@ +## MicroPython – taky Python + +Tak jako máš na počítači nainstalovaný operační +systém, na vývojové desce je takzvaný *firmware*, +program, který ovládá všechny ty drátky, +čipy a světýlka, co v ní jsou. +My používáme firmware zvaný *MicroPython*, +který navíc rozumí jazyku Python a umí provádět pythonní příkazy. Zkus si to! +Tři zobáčky, které vyskočily v minulém kroku, přišly +ze zařízení, které teď netrpělivě čeká na příkaz. + +```pycon +>>> 1+1 +2 +>>> print('Hello World') +Hello World +``` + +Téměř vše, co používáš v Pythonu na počítači, +umí MicroPython taky: čísla, řetězce, seznamy, třídy, +výjimky, moduly a tak dál. +Některé detaily ale jsou trochu osekané, aby se všechno +vešlo do extrémně malého prostoru. +Zkus si, jak se liší efekt následujících příkazů +od „velkého” Pythonu: + +```pycon +>>> print +>>> import math +>>> math.pi +``` + +Nejdůležitější věc, která je osekaná, je *standardní +knihovna* – většina modulů, které na +počítači můžeš naimportovat, v MicroPythonu chybí. +U modulů jako `turtle` je to pochopitelné, +ale v rámci šetření místem chybí i moduly jako `random`. +Většinou to příliš nevadí – malá zařízení se používají +na jiné věci než ty velké – ale je potřeba si na to +dát pozor. + +Některé věci ze standardní knihovny se dají najít +ve zjednodušené formě na jiných místech. +Například ačkoliv modul `random` chybí, +náhodné číslo od 0 do 255 se dá získat pomocí: + +```pycon +>>> from os import urandom +>>> urandom(1)[0] +61 +``` + + +## Ovládání konzole + +Při psaní složitějšího kódu si všimneš, že konzole MicroPythonu automaticky odsazuje. +To je pro malé programy pohodlné, ale umí to i znepříjemnit život – hlavně když chceš +kód do konzole zkopírovat odjinud. + +Proto má konzole MicroPythonu speciální vkládací mód, který automatické odsazování vypíná. +Aktivuje se pomocí Ctrl+E a ukončuje se pomocí Ctrl+D. diff --git a/lessons/micropython/micropython/output.md b/lessons/micropython/micropython/output.md new file mode 100644 index 0000000000..2cb11fea3d --- /dev/null +++ b/lessons/micropython/micropython/output.md @@ -0,0 +1,129 @@ +## Obvod + +Teď na chvíli necháme programování a postavíme si elektrický obvod. +Vezmi si modrou svítivou diodu (LED, „světýlko”) a +nepájivé pole („hloupou destičku”). +Zkusíme světýlko rozsvítit. + +LED rozsvítíš tak, že ji připojíš ke *zdroji napětí*, například k baterce. + +Jako zdroj napětí můžeme použít i náš modul. +Ten bere elektřinu přes USB a dává nám ji k dispozici +na některých svých „nožičkách”: +konkrétně plus na nožičce označené `3V` +a mínus na nožičce označené `G`. +Na tyhle nožičky musíš zapojit diodu. + +Připojování diody má jeden háček: +musíš ji zapojit správným směrem – plus na plus, mínus na mínus. +Opačně dioda svítit nebude. Dobrá zpráva je, že +když diodu otočíš špatně, nic se jí nestane. + +> [note] +> Základní vlastnost *diody* je ta, že pustí +> elektrický proud jen jedním směrem. Svítící dioda +> – *angl. Light Emitting Diode, LED* – ještě k +> tomu navíc svítí. + +Je potřeba rozpoznat rozdíl mezi nožičkami diody. +*Katoda* (`-`) je ta kratší nožička. +Pouzdro diody je u katody trochu seříznuté +a vevnitř v pouzdře, když se pozorně podíváš, uvidíš +u katody větší plíšek. +Té druhé nožičce se říká anoda (`+`). + +Tak, teď víš, kam diodu zapojit: katodu (kratší nožičku) +na `G` a anodu na `3V`. + +Držení nožiček diody u nožiček modulu by ti nejspíš +zaměstnalo obě ruce. Aby sis je uvolnila, použij +*nepájivé pole* (angl. *breadboard*). +Je v něm spousta dírek, do kterých se dají strkat dráty. +V rámci každé poloviny destičky je každá řada dírek – +tedy každá pětice – spojená dohromady. +Když zapojíš drátky do stejné řady, spojíš je tím. + +Zasuň modul do nepájivého pole. Pak připoj katodu +do dírky ve stejné řadě, kde je nožička +`3V` modulu, a podobně anodu k `G`. +Mělo by to vypadat jako na tomto obrázku: + +{{ figure( + img=static("circuits/led_bb.svg"), + alt="diagram zapojení", +) }} + +Potom zapoj USB kabel. Dioda by se měla rozsvítit! + +Zkus si, co se stane, když obě nožičky diody zapojíš ke `G`. + +{{ figure( + img=static("circuits/led_bb_off.svg"), + alt="diagram zapojení", +) }} + +Aby dioda svítila, musí být připojená na dvě místa, +mezi kterými je takzvaný *potenciálový rozdíl* — napětí. +Na nožičce `G` je 0 voltů; na nožičce +`3V` jsou 3,3 volty – je tedy mezi nimi rozdíl 3,3 V, přesně tolik, +kolik modrá LED potřebuje ke svícení. + +> [note] +> Samotná hodnota napětí nedává smysl – například +> říct, že je na jednom místě 3,3 V je nepřesné. +> Hodnota ve voltech se vždycky musí k něčemu vztahovat; +> vyjadřuje rozdíl mezi dvěma místy. +> V elektronice používáme rozdíl oproti „zemi” – napětí +> na nožičce `G`. Stanovíme si, že tam je +> 0 voltů a ostatní napětí počítáme vzhledem k ní. +> Na nožičce `3V` je tedy napětí 3,3 V vzhledem k zemi. + + +## Výstup + +Proč jsme diodu na to, aby se rozsvítila, +připojili k modulu a ne jen k baterce? +Ten modul je trošku složitější zařízení než baterka a jedna důležitá věc, +kterou umí navíc, je nastavovat napětí na různých nožičkách. +Umí zařídit, aby se nožička chovala jednou jako `3V` a jindy jako `G`. +Když připojíš diodu mezi `G` a takovou +přepínatelnou nožičku, můžeš nastavit, kdy svítí a kdy ne. + +Přepoj anodu diody z `3V3` na `D5`. Katodu nech na `G`. + +Máš-li zapojeno, znovu se připoj k MicroPythonu a zadej následující kód: + +```python +from machine import Pin +pin = Pin(14, Pin.OUT) +pin.value(0) +pin.value(1) +``` + +Když objekt Pin vytvoříš s `Pin.OUT`, MicroPython na něm bude nastavovat +napětí – buď 3,3 V (`value(1)`) nebo 0 V (`value(0)`). +A tak se dá s diodou blikat. + +> [note] +> Číslování nožiček je bohužel dvojí – nožička +> označená jako `D5` má v procesoru přiřazené číslo 14. +> Třída `Pin` v MicroPythonu používá číslování procesoru. +> Naštěstí máš [tahák](https://pyvec.github.io/cheatsheets/micropython/nodemcu-cs.pdf), +> kde snadno dohledáš že `D5` a `Pin(14)` jsou dvě jména stejné nožičky. + +Zvládneš napsat program, který zařídí, aby dioda +svítila pouze když je zmáčknuté tlačítko `FLASH` a jinak ne? + +> [note] +> Nápověda: Můžeš pořád dokola zjišťovat stav tlačítka +> a nastavovat podle něj stav LED. + +{% filter solution %} +```python +from machine import Pin +pin_diody = Pin(14, Pin.OUT) +pin_tlacitka = Pin(0, Pin.IN) +while True: + pin_diody.value(1 - pin_tlacitka.value()) +``` +{% endfilter %} diff --git a/lessons/micropython/micropython/piezo.md b/lessons/micropython/micropython/piezo.md new file mode 100644 index 0000000000..b1a83ebaf3 --- /dev/null +++ b/lessons/micropython/micropython/piezo.md @@ -0,0 +1,34 @@ +## Tóny a melodie + +Vezmi si další součástku – piezobudič, neboli „bzučítko”. + +Tahle malá věc obsahuje speciální materiál, který se, +když ho připojíš ke zdroji napětí, trošku roztáhne. +Roztažením zatlačí na okolní vzduch a vytvoří tlakovou +vlnu, která může doputovat až k tvým uším. + +Zkus si to – když bzučítko připojíš na `3V` +a `G` (tentokrát je jedno kterým směrem), uslyšíš tiché lupnutí. +A podobné lupnutí uslyšíš když součástku zase odpojíš. + +Co se stane, když budeš napětí připojovat a odpojovat, řekněme, 32× za vteřinu? + +Nebo 65×? + +Nebo některou z těchto frekvencí? +Hz – [Hertz](https://en.wikipedia.org/wiki/Hertz) – je jednotka frekvence; +„49 Hz“ znamená „49× za sekundu“. + +| Nota | Frekvence | +|:-----|----------:| +| C1 | 32,70 Hz | +| D | 36,71 Hz | +| E | 41,20 Hz | +| F | 43,65 Hz | +| G | 49,00 Hz | +| A | 55,00 Hz | +| H | 61,74 Hz | +| C2 | 65,41 Hz | + +Naprogramuj písničku! Potřebuješ-li víc not, pusť si [program](static/noty.py), +který vypočítá další frekvence. diff --git a/lessons/micropython/micropython/pwm.md b/lessons/micropython/micropython/pwm.md new file mode 100644 index 0000000000..039168ce99 --- /dev/null +++ b/lessons/micropython/micropython/pwm.md @@ -0,0 +1,100 @@ +## Velice rychle blikat + +Jedna z nevýhod „našeho” čipu ESP8266 je, že na svých +nožičkách umí nastavovat jen dvě hodnoty – 3,3 V a zem, jedničku a nulu. +Dioda tak buď svítí, nebo nesvítí – nedá se +nastavit poloviční intenzita, nedá se plynule rozsvěcet nebo zhasínat. + +Tuhle nevýhodu ale můžeme obejít s využitím dvou faktů. +Ten první je, že diodám – na rozdíl od žárovek nebo +zářivek – nevadí časté vypínání a zapínání. +Opotřebovávají se spíš svícením a časem. +Druhý je, že lidské oko nestačí zaznamenat pohyby a +změny, které probíhají rychleji než zhruba za +setinu vteřiny. + +Pojďme tedy velice rychle blikat – a oblafnout tak naše oči a mozky! + +```python +from machine import Pin +from time import sleep + +pin_diody = Pin(14, Pin.OUT) +while True: + pin_diody.value(0) # vypnout LED + sleep(2/100) # počkat dvě setiny vteřiny + pin_diody.value(1) # zapnout LED + sleep(1/100) # počkat jednu setinu vteřiny +``` + +Zkus si pohrát s hodnotami pro `time.sleep`. + +> [note] +> Takhle fungují prakticky všechna stmívatelná LED +> světla – rychlé blikání je ekonomičtější a přesnější +> než např. nastavování nižšího napětí. + +Dokážeš napsat program, který diodu postupně, plynule rozsvítí? + +{% filter solution %} +```python +from machine import Pin +from time import sleep + +pin_diody = Pin(14, Pin.OUT) + +while True: + x = 0 + while True: + x = x + 1 + pin_diody.value(0) + sleep((100-x)/10000) + pin_diody.value(1) + sleep(x/10000) + + if x > 100: + break +``` + +Princip je úplně stejný, jen proměnná `x` se neustále mění a tím ovlivňuje +intenzitu svícení. +{% endfilter %} + + +Protože je takovéhle rychlé blikání užitečné ve spoustě +různých situací, obsahuje MicroPython speciální funkci: umí blikat samostatně. +Nastavíš, jak rychle má blikat a jak dlouho má trvat +každé bliknutí, a MicroPython pak bude blikat automaticky, +zatímco tvůj program se může věnovat něčemu jinému. + +Téhle funkci se říká *pulzně šířková modulace* – +angl. *Pulse Width Modulation*, neboli *PWM*. +Z MicroPythonu jde tahle funkce ovládat pomocí třídy +`machine.PWM`. +Každý objekt téhle třídy umí ovládat jednu nožičku +a dají se u něj nastavit dva parametry: + +* `freq` – frekvence, tedy kolikrát za sekundu se LED rozsvítí a zase zhasne a +* `duty` – anglicky *duty cycle*, česky *střída*, nastavuje „šířku pulzu”, + tedy jak dlouho bude dioda při každém bliknutí svítit. + Hodnota `duty` může být od 0, kdy LED + nesvítí vůbec, do 1023, kdy svítí celou dobu. + Nastavíš-li `duty=512`, bude dioda + svítit s poloviční intenzitou (512 = 1024/2). + +Nastavíš-li `PWM(freq=50, duty=512)`, dioda bude blikat 50× za sekundu. +Vždycky jednu setinu vteřiny bude svítit a na jednu +setinu vteřiny zhasne. + +```python +from machine import Pin, PWM + +pin_diody = Pin(14, Pin.OUT) +pwm = PWM(pin_diody, freq=50, duty=512) +``` + +Zkus nastavit i nižší frekvenci, třeba 3 nebo 1, ať blikání vidíš přímo! + +PWM se dá zrušit metodou `pwm.deinit()`. +Jako s otvíráním souborů, je dobré po sobě uklidit – +i když zatím můžeš jednoduše restartovat celé zařízení. diff --git a/lessons/micropython/micropython/rgb_leds.md b/lessons/micropython/micropython/rgb_leds.md new file mode 100644 index 0000000000..28d34dfd9a --- /dev/null +++ b/lessons/micropython/micropython/rgb_leds.md @@ -0,0 +1,55 @@ + +## Barevná světýlka + +Je čas na novou hračku! +Tentokrát to bude LED pásek. + +Na pásku máš 8 malých čtverečků. +Každý z nich obsahuje docela hodně elektroniky: +tři barevné LED (červenou, zelenou a modrou) +a čip, který je umí ovládat pomocí informací, +které dostane přes jediný drátek z modulu. + +Takové pásky se prodávají po metrech a dají se +nastříhat – mezi jednotlivými světýlky si všimni čárky, +která naznačuje, kde máš střihnout. +Energie z USB stačí zhruba na osm světýlek, proto jsi jich dostal{{a}} tolik. + +Tenhle LED pásek je stavěný na pět voltů. Naštěstí ale potřebuje 5 V jen +na napájení; řídící signál s informacemi o barvičkách může mít 3,3 V. + +Pojďme pásek zapojit: + +* `GND` pásku (bílý drátek) připoj na `G` +* `DI` (*data in* – zelený drátek) připoj na `D4` +* `+5V` (červený drátek) připoj: + * na `VU`, má-li tvoje destička tuhle nožičku, + * jinak na `VIN`. + +Nožička `VU`/`VIN` poskytuje 5 voltů. +Pozor na ni: nepřipojuj na ni zařízení, které se s pěti volty nevyrovnají. + +Máš-li zapojeno, můžeš začít programovat. +„Jazyk”, kterým „mluví” tenhle LED pásek je trošku +složitější než signál PWM, ale MicroPython obsahuje +speciální knihovnu, která s páskem komunikovat umí. +Vypadá to nějak takhle: + + +
+from machine import Pin
+from neopixel import NeoPixel
+
+POCET_LED = 8
+pin = Pin(2, Pin.OUT)
+np = NeoPixel(pin, POCET_LED)
+np[0] = (255, 255, 255)
+np.write()
+
+ + +Co znamenají ta čísla (`0` a `255`), na to už jistě přijdeš sám/sama. +Jen při experimentování nezapomeň zavolat +`np.write()`, tím se informace pošlou do LED pásku. + +Zvládneš naprogramovat semafor? diff --git a/lessons/micropython/micropython/servo.md b/lessons/micropython/micropython/servo.md new file mode 100644 index 0000000000..232331782d --- /dev/null +++ b/lessons/micropython/micropython/servo.md @@ -0,0 +1,92 @@ +## Servomotor + +Čas na další součástku! Tentokrát to bude *servomotor*. + +Servomotor je součástka, která má v sobě zabudovaný +ovladač, se kterým si naše zařízení může povídat +jednoduchým „elektronickým jazykem” – *protokolem*. +Motorku můžeš posílat impulzy a podle délky impulzu +se servomotor natočí. +Při krátkých impulzech se natočí víc na jednu stranu, +při dlouhých na druhou. +Impulzy musíš posílat neustále, jinak se servomotor +vypne. + +Na rozdíl od bzučítka, kde o výšce tónu rozhodovala +frekvence (`freq`) – kolikrát za vteřinu +se ozve lupnutí – a LED, kde o intenzitě rozhodovala +střída (`duty`) – poměr mezi dobou kdy +dioda svítí a kdy nesvítí, u servomotoru rozhoduje +tzv. *šířka pulzu*: jak dlouho se napětí udrží +na 3,3 V, než se přepne zpátky na 0 V. + + + +V praxi to znamená, že můžeš nastavit `freq` +na 50 Hz, a `duty` měnit cca od 35 +(úplně vlevo) přes 77 (uprostřed) po 120 (úplně vpravo). + +Dost ale teorie, pojďme si to vyzkoušet! Napřed musíš motorek zapojit: + +* hnědý drát (zem) na `G`, +* červený drát (napájení) na `3V` a +* oranžový drát (data) na `D4`. + +Nožička `D4` odpovídá `Pin(2)`, takže kód k otáčení motorku je: + +```python +from machine import Pin, PWM + +pin_motorku = Pin(2, Pin.OUT) +pwm = PWM(pin_motorku, freq=50, duty=77) +pwm.duty(35) +``` + +Zkus motorkem otáčet nastavováním `duty` na 35 do 120. +Kdyby se náhodou stalo, že se modul restartuje a +konzole přestane fungovat, zkus ho odpojit a znovu +připojit. Kdyby to nepomohlo, motorek ti dneska +nebude fungovat. Za chvíli si řekneme proč; zatím (jsi-li na kurzu) +se přidej do dvojice k někomu, komu to funguje. + +## Poznámka o napájení a napětí + +K tomu, aby se otočil motor, je potřeba mnohem víc +energie, než k rozsvícení světýlka. +Z USB z počítače té energie dostaneš docela málo, +proto můžou být s motorkem problémy. + +Jak to řešit, až si přestaneš hrát a budeš chtít motorkem otáčet „doopravdy”? + +Elektronika, která je na našem modulu mimo +malou destičku s „mozkem” má dva hlavní úkoly: + +* Převádět *komunikaci* z USB, která je + celkem složitě zakódovaná, na něco čemu + malé zařízení rozumí + (konkrétně protokol [UART](https://en.wikipedia.org/wiki/UART) přes nožičky `TX` a `RX`). +* Převádět napětí 5 V, které poskytuje USB, + na 3,3 V které potřebuje modul. + +Když energie z USB přestane stačit, dá se koupit +zařízení, které zvládne převádět komunikaci +a napájení vyřešit z jiného zdroje 5 V. +Kdybys to někdy zkoušel{{a}}, příslušné zařízení +koupíš pod názvem *USB-TTL adapter* a vypadá +nejčastěji takhle: + +{{ figure( + img=static("usb-ttl.png"), + alt="USB-TTL adapter", +) }} + +K modulu pak tento převodník a zdroj napětí připojíš takto: + + +* `GND` na převodníku – `G` na desce +* `RX` na převodníku – `TX` (!) na desce +* `TX` na převodníku – `RX` (!) na desce +* `+5V` na zdroji napětí na `VIN` na desce +* Zem na zdroji napětí na `G` na desce + +Pozor, 5V nepřipojuj jinam než na `VIN`! diff --git a/lessons/micropython/micropython/socket.md b/lessons/micropython/micropython/socket.md new file mode 100644 index 0000000000..855dc085fe --- /dev/null +++ b/lessons/micropython/micropython/socket.md @@ -0,0 +1,33 @@ +## Komunikace + +Pro komunikaci po síti můžete použít nízkoúrovňovou knihovnu `socket`, +nebo protokol pro „internet of things“ (jako MQTT), ale +MicroPython pro ESP8266 má zabudouvanou i knihovnu pro HTTP: +ořezanou verzi známých Requests. +Následující kód stáhne data ze stránky +[api.thingspeak.com/channels/1417/field/2/last.txt](http://api.thingspeak.com/channels/1417/field/2/last.txt), +kde se objevuje poslední barva tweetnutá s hashtagem `#cheerlights`. + +Výslednou hodnotu lze použít jako barvu modul v LED pásku. + +```python +import urequests + +url = 'http://api.thingspeak.com/channels/1417/field/2/last.txt' + +def download_color(): + response = urequests.get(url) + text = response.text + + if text and text[0] == '#': + color = text[1:7] + + red = int(color[0:2], 16) + green = int(color[2:4], 16) + blue = int(color[4:6], 16) + + return red, green, blue + return 0, 0, 0 +``` + +Opravdové projekty používají lehčí protokoly než HTTP, například MQTT. diff --git a/lessons/micropython/micropython/static/circuits/led.fzz b/lessons/micropython/micropython/static/circuits/led.fzz new file mode 100644 index 0000000000..2bbd3e36cf Binary files /dev/null and b/lessons/micropython/micropython/static/circuits/led.fzz differ diff --git a/lessons/micropython/micropython/static/circuits/led_bb.svg b/lessons/micropython/micropython/static/circuits/led_bb.svg new file mode 100644 index 0000000000..48d1d957d1 --- /dev/null +++ b/lessons/micropython/micropython/static/circuits/led_bb.svg @@ -0,0 +1,4537 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D0 + D1 + D2 + D3 + D4 + 3V + G + D5 + D6 + D7 + D8 + RX + TX + G + 3V + Vin + G + RST + EN + 3V + G + SK + S0 + SC + S1 + S2 + S3 + VU + G + A0 + + + + + + FLASH + RST + + + + + + + + + + + + + + + + + + + + NodeMCU + + . + + + + + + diff --git a/lessons/micropython/micropython/static/circuits/led_bb_off.svg b/lessons/micropython/micropython/static/circuits/led_bb_off.svg new file mode 100644 index 0000000000..b1f7ff6cf0 --- /dev/null +++ b/lessons/micropython/micropython/static/circuits/led_bb_off.svg @@ -0,0 +1,4528 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D0 + D1 + D2 + D3 + D4 + 3V + G + D5 + D6 + D7 + D8 + RX + TX + G + 3V + Vin + G + RST + EN + 3V + G + SK + S0 + SC + S1 + S2 + S3 + VU + G + A0 + + + + + + FLASH + RST + + + + + + + + + + + + + + + + + + + + NodeMCU + + . + + + + + diff --git a/lessons/micropython/micropython/static/nodemcu-devkit.jpg b/lessons/micropython/micropython/static/nodemcu-devkit.jpg new file mode 100644 index 0000000000..d9342a91e7 Binary files /dev/null and b/lessons/micropython/micropython/static/nodemcu-devkit.jpg differ diff --git a/lessons/micropython/micropython/static/nodemcu-popisky.svg b/lessons/micropython/micropython/static/nodemcu-popisky.svg new file mode 100644 index 0000000000..743022faaf --- /dev/null +++ b/lessons/micropython/micropython/static/nodemcu-popisky.svg @@ -0,0 +1,2911 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/lessons/micropython/micropython/static/noty.py b/lessons/micropython/micropython/static/noty.py new file mode 100644 index 0000000000..92fd30932c --- /dev/null +++ b/lessons/micropython/micropython/static/noty.py @@ -0,0 +1,8 @@ +nazvy = 'A', 'A#', 'H', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#' + +for i in range(88): + frekvence = 27.5 * 2.**(i/12.) + oktava = (i+9) // 12 + nota = '{:2} {}'.format(nazvy[i%12], oktava) + if __name__ == '__main__': + print("{}: {:7.2f}".format(nota, frekvence)) diff --git a/lessons/micropython/micropython/static/putty-config.jpg b/lessons/micropython/micropython/static/putty-config.jpg new file mode 100644 index 0000000000..5dbf3f8fa2 Binary files /dev/null and b/lessons/micropython/micropython/static/putty-config.jpg differ diff --git a/lessons/micropython/micropython/switch.md b/lessons/micropython/micropython/switch.md new file mode 100644 index 0000000000..8a5232a196 --- /dev/null +++ b/lessons/micropython/micropython/switch.md @@ -0,0 +1,12 @@ +## Další tlačítko + +Teď si vezmi tlačítko a připoj ho k modulu: +`GND` vždycky na `G`, `VCC` vždycky na `3V` a +`OUT` na `D1`. + +Tlačítko funguje tak, že `OUT` spojí buď s `VCC` (`3V`) +nebo `GND`, podle toho, jestli je tlačítko stisknuté. +(A navíc to taky teda svítí, ale to je teď vedlejší.) + +Zkus si, jestli se zvládneš MicroPythonu zeptat, jestli je tlačítko zapnuté. +Mělo by to být podobné jako u příkladu s tlačítkem `FLASH`. diff --git a/lessons/micropython/micropython/thermometer.md b/lessons/micropython/micropython/thermometer.md new file mode 100644 index 0000000000..37165863fc --- /dev/null +++ b/lessons/micropython/micropython/thermometer.md @@ -0,0 +1,49 @@ +## Teploměr + +Poslední součástkou, kterou si dnes ukážeme, bude jednoduchý teploměr DS18B20. +Tento teploměr se vyrábí v několika provedeních a je velmi populární především +pro jednoduchost použití a velmi nízkou cenu. + +Stejně jako si MicroPython pomocí speciálního „jazyka” rozumí s LED páskem, ovládá +i „jazyk” pro komunikaci s teploměrem a řadou dalších zařízení. 1-wire sběrnice +má navíc tu výhodu, že se na jednu nožičku naší destičky dá připojit hned +několik teploměrů a číst teploty z každého z nich. + +Otoč teploměr tak, aby jeho „břicho” směřovalo směrem od tebe a takto jej zapoj +do nevyužité části nepájivého pole. Následně propoj nožičky teploměru +s destičkou takto: + +* Levou nožičku propoj s `G` +* Prostřední nožičku propoj s `D2` +* Pravou nožičku propoj s `3V` + +> [note] +> Po zapojení drž teploměr na chvíli mezi prsty. Pokud je zapojený špatně začne +> se velmi rychle zahřívat a v takovém případě jej okamžitě odpoj. + +Pokud je vše zapojeno správně, můžeme přistoupit k měření teploty. + +```python +from time import sleep +from machine import Pin +import onewire +from ds18x20 import DS18X20 + + +pin = Pin(4, Pin.IN) +ow = DS18X20(onewire.OneWire(pin)) + +sensory = ow.scan() +ow.convert_temp() +sleep(1) +teplota = ow.read_temp(sensory[0]) +print("Teplota je", teplota) +``` + +Nejdříve si opět připravíme nožičku (pin) pro komunikaci a následně si na ní +připravíme komunikační protokol OneWire. Prvním krokem k teplotě je nalezení +všech dostupných teploměrů na dané sběrnici, což nám zajistí metoda `ow.scan()`, +která nám vrátí seznam identifikátorů nalezených teploměrů. +Metoda `ow.convert_temp()` pak pošle všem teploměrům příkaz, aby změřily +teplotu. Po tomhle rozkazu musíme alespoň vteřinu počkat a následně můžeme +teplotu z našeho čidla přečíst. diff --git a/lessons/micropython/micropython/webrepl.md b/lessons/micropython/micropython/webrepl.md new file mode 100644 index 0000000000..a6c1ffda16 --- /dev/null +++ b/lessons/micropython/micropython/webrepl.md @@ -0,0 +1,49 @@ +## WebREPL + +ESP8266 byl původně navržen i jako čip pro WiFi a i s MicroPythonem se umí připojit k síti. +Dokonce se přes WiFi dá i ovládat. + +Otevři si stránku [micropython.org/webrepl](http://micropython.org/webrepl/), +přes kterou budeš po připojení s destičkou komunikovat. + +Poté se buď připoj k existující WiFi síti (Eduroam fungovat nebude) nebo +použij destičku jako samostatný *access point*: + +```python + +# Existující síť: + +ESSID = ... +PASSWORD = ... + +import network +wlan = network.WLAN(network.STA_IF) +wlan.active(True) +if not wlan.isconnected(): + print('connecting to network...') + wlan.connect(ESSID, PASSWORD) + while not wlan.isconnected(): + pass +print('network config:', wlan.ifconfig()) + +# AP: + +ESSID = ... +PASSWORD = ... +CHANNEL = 3 + +import network +ap_if = network.WLAN(network.AP_IF) +ap_if.active(True) +ap_if.config(essid=ESSID, password=PASSWORD, authmode=network.AUTH_WEP, channel=CHANNEL) +print('network config:', ap_if.ifconfig()) + +# Nastavení WebREPL: + +import webrepl_setup +``` + +S počítačem se připoj na stejnou síť a na stránce webrepl otevřené výše +se připoj k IP vypsané z `ifconfig()`. Měl{{a}} bys dostat konzoli, jako přes +USB. Pomocí WebREPL lze nejen zadávat interaktivní příkazy, ale i nahrávat +soubory.