|   |   | 
| (Není zobrazeno 42 mezilehlých verzí od 2 uživatelů.) | 
| Řá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 == | 
|  | + | [[IoT: Co je to IoT| Co je to IoT?]] — Řekneme si co je to IoT a k čemu nám to je. | 
|  |  |  |  | 
| − | === Co je to IoT === | + | == Základy elektrotechniky == | 
| − | [http://jurasek.wz.cz/index.php/iot1/7-getstarted začínáme s IoT] | + | [[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? | 
| − | [http://jurasek.wz.cz/index.php/iot1/8-how-to-get-smart Jak udělat z "blbé" věci tu "chytrou"]
 | + |  | 
| − |   | + |  | 
| − | === Základy elektrotechniky===
 | + |  | 
| − | Používáme zde USB napájení - tedy 5V - GPIO piny poskytují 3.3V (3V3).
 | + |  | 
| − | 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ě
 | + |  | 
|  |  |  |  | 
|  | == Vývojové prostředí == |  | == Vývojové prostředí == | 
|  | + | [[IoT: Vývojové prostředí | Vývojové prostředí]] — jeho zprovoznění. | 
|  |  |  |  | 
| − | === Instalace a nastavení desky ===
 | + | [[IoT: Seznámení | Seznámení]] — se s vývojovým prostředím. | 
|  |  |  |  | 
| − | [[ESP: Nastavení IDE]]
 | + | == LED dioda == | 
| − |   | + | [[IoT: LED dioda | LED dioda ]] — rožnutí pomocí GPIO pinů. | 
| − | === Základní seznámení === | + | Zkusíme si samostatné úkoly. | 
| − |   | + |  | 
| − | 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//
 | + |  | 
| − |   | + |  | 
| − | //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
 | + |  | 
| − |   | + |  | 
| − | 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 sitoho 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 ===
 | + |  | 
| − | # 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é == |  | == Proměnné == | 
|  |  |  |  | 
| − | === Obecně ===
 | + | [[IoT: Seznámení #Proměnné | Proměnné]] — co je to proměnná a jak s nimi pracujeme. | 
| − |   | + |  | 
| − | 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 abyla 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 ==
 | + |  | 
| − |   | + |  | 
| − | K vypsání do konzole se používá
 | + |  | 
| − |   | + |  | 
| − |  Serial.print("Text"); - vypíše text v uvozovkách
 | + |  | 
| − |  Serial.println(cislo); - na nový řádek vypíše proměnnou cislo
 | + |  | 
| − |   | + |  | 
| − | == 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á
 | + |  | 
| − |   | + |  | 
| − | == Podmínka ==
 | + |  | 
| − |   | + |  | 
| − |  if(jeSplneno)
 | + |  | 
| − |  {
 | + |  | 
| − |    toto se provede, pokud je podmínka splněna
 | + |  | 
| − |  }
 | + |  | 
| − |  else
 | + |  | 
| − |  {
 | + |  | 
| − |    toto se provede, když podmínka není splněna
 | + |  | 
| − |  }
 | + |  | 
| − |   | + |  | 
| − | Co může být v ''if()''?
 | + |  | 
| − | * boolean
 | + |  | 
| − | ** if(spleno) { Serial.print("splneno"); } else { Serial.print("nesplneno"); }
 | + |  | 
| − | * int
 | + |  | 
| − | ** if(teplota > 20) { ...rozsviť LEDku; }
 | + |  | 
|  |  |  |  | 
| − | == 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]. |