|
|
(Není zobrazeno 31 mezilehlých verzí od 1 uživatele.) |
Řádka 1: |
Řádka 1: |
− | [[Category:VSE]][[Category:Informatika]][[Category:Letní IoT]] | + | [[Category:VSE]][[Category:Informatika]][[Category:Letní IoT]][[Category:IoT]] |
− | | + | |
− | = Úvod =
| + | |
| | | |
| == Co je to IoT == | | == Co je to IoT == |
− | [http://jurasek.wz.cz/index.php/iot1/7-getstarted začínáme s IoT] | + | [[IoT: Co je to IoT| Co je to IoT?]] — Řekneme si co je to IoT a k čemu nám to je. |
− | [http://jurasek.wz.cz/index.php/iot1/8-how-to-get-smart Jak udělat z "blbé" věci tu "chytrou"] | + | |
| | | |
| == Základy elektrotechniky == | | == Základy elektrotechniky == |
− | Používáme zde USB napájení - tedy 5V - GPIO piny poskytují 3.3V (3V3).
| + | [[IoT: Základy elektrotechniky | Základy elektrotechniky ]] — Jak správně zapojit el. obvod? Co vše musíme vědět? Co je to LED dioda a jak ji zapojit? |
− | Než cokoliv zapojíte, tak si dobře zkontrolujte
| + | |
− | [http://jurasek.wz.cz/index.php/iot1/9-electrotechnics Základy elektrotechniky] | + | |
− | | + | |
− | == Samostatné úkoly ==
| + | |
− | '''POZOR, NEŽ ZAPNEŠ NAPÁJENÍ, ZAVOLEJ LEKTORA, ABY TI TO ZKONTROLOVAL'''
| + | |
− | # Obvod s LEDkou (3V3 - rezistor - LEDka - GND)
| + | |
− | # Obvod 2 LEDky sériově za sebou
| + | |
− | # Obvod 2 LEDky paralelně
| + | |
− | # Obvod LEDka s tlačítkem
| + | |
− | | + | |
− | = Vývojové prostředí =
| + | |
− | | + | |
− | == Instalace a nastavení desky ==
| + | |
− | | + | |
− | * [[ESP: Nastavení IDE|Návod na instalaci]]
| + | |
− | * Instalační soubory: [https://oauh-my.sharepoint.com/:f:/g/personal/simunek_oauh_cz/EqVd0y8VqdxGsVGRapXnI0EB64byG95Cu-mBGxS04ESBbw?e=mFcdPP složka s instalačními soubory]
| + | |
− | | + | |
− | == Základní seznámení ==
| + | |
− | | + | |
− | Při vytvoření nového souboru tam máte dvě metody.
| + | |
− | | + | |
− | //zde se definují proměnné, importují knihovny, apod:
| + | |
− |
| + | |
− | void setup() {
| + | |
− | // put your setup code here, to run once:
| + | |
− | // zde napište to, co se má spustit na začátku:
| + | |
− | }
| + | |
− |
| + | |
− | void loop() {
| + | |
− | // put your main code here, to run repeatedly:
| + | |
− | // zde napište to, co má běžet pořád dokola:
| + | |
− | }
| + | |
− | | + | |
− | | + | |
− | = LEDka =
| + | |
− | | + | |
− | Jako první věc si zkusíme rozsvítit a zhasnout LEDku.
| + | |
− | | + | |
− | Budeme potřebovat:
| + | |
− | Vývojovou desku, USB kabel, nepájivé pole,
| + | |
− | 2 LEDky (červenou a modrou), 5 káblíků, 2 rezistory
| + | |
− | | + | |
− | //obrázek//
| + | |
− | | + | |
− | [https://www.hranol.cz/storage/201102052109_led.png]
| + | |
− | | + | |
− | //popis zapojení//
| + | |
− | | + | |
− | #define ''nazev'' ''číslo GPIO pinu'';
| + | |
− | | + | |
− | [https://www.iotwithus.com/wp-content/uploads/2018/11/esp8266-wemos-d1-mini-nodemcu-pinout.png Wemos pinout]
| + | |
− | | + | |
− | takže my budeme mít....
| + | |
− | | + | |
− | #define modra 18;
| + | |
− | #define cervena 17;
| + | |
− | | + | |
− | Toto dáme úplně na začátek dokumentu
| + | |
− | | + | |
− | Toto je ale jen jeden ze způsobů, můžete se setkat i s
| + | |
− | #define modra 5;
| + | |
− | #define modra D1;
| + | |
− | const char modra = 5;
| + | |
− | char modra 5;
| + | |
− | int modra = D1;
| + | |
− | const char modra = 5;
| + | |
− | | + | |
− | Způsobů zápisu je více, každý má své výhody i nevýhody - #define zabírá méně místa, Dněco vidíte na desce...
| + | |
− | | + | |
− | v void setup() musíme říct, že je to výstupní
| + | |
− | | + | |
− | pinMode(modra, OUTPUT);
| + | |
− | pinMode(cervena, OUTPUT);
| + | |
− | | + | |
− | a teď nám jen rozsvítit a zhasnout LEDku | + | |
− | | + | |
− | k tomu používáme metodu "digitalWrite(název, HIGH - zapnuto / LOW - vypnuto);"
| + | |
− | | + | |
− | digitalWrite(modra, HIGH); - modrá LEDka se rozsvítí
| + | |
− | digitalWrite(modra, LOW); - modrá LEDka zhasne
| + | |
− | | + | |
− | jelikož tyto věci trvají velmi krátkou dobu - lidské oko si toho nevšimne, dáme tam nějakou prodlevu
| + | |
− | k tomu se využívá delay(čas v milisekundách);
| + | |
− | | + | |
− | takže si kód doplníme o 2s prodlevy
| + | |
− | | + | |
− | digitalWrite(modra, HIGH);
| + | |
− | delay(2000);
| + | |
− | digitalWrite(modra, LOW);
| + | |
− | delay(2000);
| + | |
− | | + | |
− | == Samostatný úkol ==
| + | |
− | Každá LEDka musí být zapojena zvlášť.
| + | |
− | | + | |
− | # modrá i červená LEDka se rožne na 3 s a pak 3 s nebudou svítit
| + | |
− | # modrá ledka se rozsvítí na 4 s, pak zhasne a zároveň se rozsvítí červená ledka, ta zhasne po 4s a znovu se rozsvítí modrá
| + | |
− | # modrá LEDka bude svítit 5 sekund a dvě a půl svítit nebude
| + | |
− | | + | |
− | | + | |
− | = Proměnné =
| + | |
− | | + | |
− | == Obecně ==
| + | |
− | | + | |
− | Jsou různé datové typy, my budeme využívat nejvíce:
| + | |
− | * čísla - int
| + | |
− | * text - String
| + | |
− | * ano / ne - boolean
| + | |
− | | + | |
− | == Práce s intem ==
| + | |
− | | + | |
− | int cislo; definuji proměnnou s názvem číslo
| + | |
− | ins cislo = 6; definuji proměnnou s názvem číslo a dám ji číslo 6
| + | |
− | cislo = 8; proměnné cislo dám číslo 8
| + | |
− | cislo++; proměnná cislo se zvýší o 1
| + | |
− | cislo--; proměnná cislo se sníží o 1
| + | |
− | delay(cislo); počká to tolik, kolik je to číslo (když 1000 - tak sekundu)
| + | |
− | delay(2 * cislo); počká to dvojnásobek
| + | |
− | | + | |
− | == Práce s booleanem ==
| + | |
− | boolean je datový typ, který má 2 stavy, 0 / 1, ne / ano, false / true
| + | |
− | | + | |
− | boolean splneno = true;
| + | |
− | boolean splneno = false;
| + | |
− | spleno = true;
| + | |
− | spleno = false
| + | |
− | spleno = !splneno; //nastaví se to na opak
| + | |
− | | + | |
− | == Proměnná v delay ==
| + | |
− | | + | |
− | V některých případech máme prodlevu vždy stejnou a opakuje se nám tam vícekrát - když se rozhodneme, že ji změníme, tak to musíme celé přepisovat.
| + | |
− | To je vcelku nepraktické, co?... Takže využijeme proměnné. Chceme, aby se proměnná jmenovala prodleva a byla na 2 sekudny - tj. 2000 ms.
| + | |
− | | + | |
− | int prodleva = 2000;
| + | |
− | | + | |
− | == Samostatný úkol ==
| + | |
− | # Předělej úkoly na ledky za použití proměnné v delay();
| + | |
− | # LEDka se rozsvítí na 1 s, 1 s nebude svítit, LEDka se rozsvítí na 2 s, 2 s nebude svítit, LEDka se rozsvítí na 3 s ... a tak dále
| + | |
− | | + | |
− | = Sériový výstup =
| + | |
− | | + | |
− | Inicializuju sériovou komunikaci - zvolím si rychlost
| + | |
− | Serial.begin(9600);
| + | |
− | | + | |
− | K vypsání do konzole se používá
| + | |
− | | + | |
− | Serial.print("Text"); - vypíše text v uvozovkách
| + | |
− | Serial.println(cislo); - vypíše proměnou číslo a udělá nový řádek (následující výpis bude na novém řádku)
| + | |
− | | + | |
− | = Cykly =
| + | |
− | | + | |
− | Cykly nám slouží k tomu, že se něco opakuje dokud není něco splněno...
| + | |
− | | + | |
− | | + | |
− | == For cyklus ==
| + | |
− | | + | |
− | for(int i = 0; i < 10; i++)
| + | |
− | {
| + | |
− | ...kód...
| + | |
− | }
| + | |
− |
| + | |
− | for(int i - proměnná i; i < 10 - dokud je i menší než 10; i++ - pokaždé se i zvýší o jedno)
| + | |
− | | + | |
− | buď tam dáme i < 10, nebo i <= 9
| + | |
− | můžeme dát také
| + | |
− | | + | |
− | for(int i = 10; i > 1; i--)
| + | |
− | {
| + | |
− | ...kód...
| + | |
− | }
| + | |
− | | + | |
− | V některých případech se to může hodit
| + | |
− | | + | |
− | == Samostatný úkol ==
| + | |
− | # Vypište (Serial.println()) čísla od 0 do 10 (se sekundovou prodlevou)
| + | |
− | # LEDka blikne (rozsvítí se na sekundu a pak zhasne na sekundu) a pak 3 sekundy nesvítí, 2 × blikne, 3 ... 10 × blikne
| + | |
− | # LEDka se rozsvítí na sekundu, zhasne na sekundu, rozsvítí se na dvě sekundy, zhasne na dvě sekundy, rozsvítí se na 3... zhasne na 10 sekund, rozsvítí se na sekundu
| + | |
− | | + | |
− | = LEDka =
| + | |
− | | + | |
− | Metodu ''digitalWrite();'' jsme si již ukázali. Ta je k rožnutí, či zhasnutí LEDky.
| + | |
− | Ale co když chceme LEDku rožnout jen částečně? ... či aby se postupně rozžíhala?
| + | |
− | | + | |
− | K tomu nám slouží metoda ''analogWrite(nazevLedky, cislo);''
| + | |
− | nazevLedky - ten název, co jsme dali u ''#define nazevLedky 15''
| + | |
− | cislo - jak má svítit - v našem případě je to v rozmezí 0 - 1024
| + | |
− | | + | |
− | takže, chceme rozsvítit LEDku napůl jen - ''analogWrite(ledka, 512);''
| + | |
− | | + | |
− | == Příklad ==
| + | |
− | | + | |
− | LEDka se během 5ti sekund rožne.
| + | |
− | | + | |
− | #define ledka 15
| + | |
− |
| + | |
− | void setup() {
| + | |
− |
| + | |
− | pinMode(ledka, OUTPUT);
| + | |
− | }
| + | |
− |
| + | |
− | void loop() {
| + | |
− |
| + | |
− | for(int i = 0; i < 1024; i++)
| + | |
− | {
| + | |
− | analogWrite(ledka, i);
| + | |
− | delay(5);
| + | |
− | }
| + | |
− | }
| + | |
− | | + | |
− | == Samostatný úkol ==
| + | |
− | # Během pěti sekund se LEDka rožne, sekundu zůstane rožnutá na maximum, 5 sekund se bude zhasínat a sekundu zůstane zhasnutá
| + | |
| | | |
| + | == Vývojové prostředí == |
| + | [[IoT: Vývojové prostředí | Vývojové prostředí]] — jeho zprovoznění. |
| | | |
− | = Podmínka =
| + | [[IoT: Seznámení | Seznámení]] — se s vývojovým prostředím. |
| | | |
− | if(jeSplneno)
| + | == LED dioda == |
− | {
| + | [[IoT: LED dioda | LED dioda ]] — rožnutí pomocí GPIO pinů. |
− | toto se provede, pokud je podmínka splněna
| + | Zkusíme si samostatné úkoly. |
− | }
| + | |
− | else
| + | |
− | {
| + | |
− | toto se provede, když podmínka není splněna
| + | |
− | }
| + | |
| | | |
− | Co může být v ''if()''?
| + | == Proměnné == |
− | * boolean
| + | |
− | ** if(spleno) { Serial.print("splneno"); } else { Serial.print("nesplneno"); }
| + | |
− | * int
| + | |
− | ** if(teplota > 20) { ... rozsviť LEDku; }
| + | |
| | | |
| + | [[IoT: Seznámení #Proměnné | Proměnné]] — co je to proměnná a jak s nimi pracujeme. |
| | | |
− | = Tlačítko = | + | == Sériová komunikace == |
| + | [[IoT: Sériová komunikace | Sériová komunikace]] — jak vypsat něco do konzole. |
| | | |
− | [http://jurasek.wz.cz/index.php/iot1/15-ovladani-pres-tlacitko Tlačítko] | + | == Závěrečné opakování == |
| + | Na závěr dnešního dne si zkusme tento krátký |
| + | [https://forms.gle/LwteaRwchMSZdD6U6 testík]. |