Uživatelské nástroje

Nástroje pro tento web


attiny84a

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
attiny84a [2021/08/08 23:16] – [Zapsání OWL bootloaderu] martinattiny84a [2021/08/20 22:36] (aktuální) – [Připojení displeje s řadičem SSD1306] martin
Řádek 67: Řádek 67:
    * Použít k tomu jakékoliv Arduino, návod je např [[https://www.arduino.cc/en/Tutorial/BuiltInExamples/ArduinoISP|tady]]    * Použít k tomu jakékoliv Arduino, návod je např [[https://www.arduino.cc/en/Tutorial/BuiltInExamples/ArduinoISP|tady]]
    * Jiná možnost, např pokud máte nějaky programátor na čipy Atmel    * Jiná možnost, např pokud máte nějaky programátor na čipy Atmel
 +   * Požádat někoho o již naprogramovaný čip i s bootloaderem
  
 ==== Vzdálené programování ATTINY84 přes WIFI ==== ==== Vzdálené programování ATTINY84 přes WIFI ====
Řádek 82: Řádek 83:
 </code> </code>
  
-Tento příkaz v adresáři ''transmissions'' vytvoří soubor ''mujprogram_iles84.hex'', který už může být přenesen přes WIFI do mikrokontroleru.+Tento příkaz v adresáři ''transmissions'' vytvoří soubor ''mujprogram_iles84.hex'', který už může být přenesen přes WIFI do mikrokontroleru. Jméno bootloaderu, který se používá pro náhrání každého programu do konkrétního čipu je ''iles84''.
  
 Stačí k tomu jakýkoliv program umožňující otevřít TCP/IP socket a poslat do něj soubor. Např. netcat: Stačí k tomu jakýkoliv program umožňující otevřít TCP/IP socket a poslat do něj soubor. Např. netcat:
Řádek 92: Řádek 93:
 kde 192.168.15.211 je IP adresa přidělená ESP. kde 192.168.15.211 je IP adresa přidělená ESP.
  
-Po zaslání programu do ESP, musí ESP ještě zresetovat ATTINY, aby se spustil bootloader. K tomu je využit pin GPIO2, který je připojen přímo k pinu RESET mikrokontroleru.+Po zaslání programu do ESP, musí ESP ještě zresetovat ATTINY, aby se spustil bootloader. K tomu je využit pin GPIO3 (RX), který je připojen přímo k pinu RESET mikrokontroleru. Volba tohoto pinu je na ESP-01 důležitá, protože během bootu ESP jsou piny GPIO0, GPIO1 a GPIO2 na malou schvilku shozeny na 0, což způsobí i reset ATTINY, který v tu chvíli nechceme. GPIO3 zůstavá v režimu čtení a ATTINY během bootu ESP neresetuje.
  
 ==== Alarm z centrály ==== ==== Alarm z centrály ====
Řádek 98: Řádek 99:
 Některé reakční prvky hry se potřebují dozvědět, že na stanovišti hry došlo ke změnám a logika řízení od nich vyžaduje reakci. Pokud by jedinou komunikací s centrální řídící jednotkou stanoviště bylo ESPNow, musel by každý reakční prvek pravidelně probouzet ESPNow, aby se dozvěděl, jestli se něco nestalo (polling). To je nepraktické kvůli zbytečnému plýtvání energie baterie a kvůli zpoždění, ke kterému by tím docházelo. Některé reakční prvky hry se potřebují dozvědět, že na stanovišti hry došlo ke změnám a logika řízení od nich vyžaduje reakci. Pokud by jedinou komunikací s centrální řídící jednotkou stanoviště bylo ESPNow, musel by každý reakční prvek pravidelně probouzet ESPNow, aby se dozvěděl, jestli se něco nestalo (polling). To je nepraktické kvůli zbytečnému plýtvání energie baterie a kvůli zpoždění, ke kterému by tím docházelo.
  
-Řešením tohoto problému je přidat k reakčním prvkům přijímač RF 433 MHz. Jeho jedinou funkcí bude přijmout alarm s určitým kódem konkrétního reakčního prvku nebo obecným kódem, který probouzí všechny. Po přijetí této zprávy od centrální jednotky si příjemce aktivuje ESP8266, kterým se už domluví s řídící jednotkou stanoviště na detailech, co je přesně potřeba udělat.+Řešením tohoto problému je přidat k reakčním prvkům přijímač RF 433 MHz. Jeho jedinou funkcí je přijmout alarm zprávu s určitým kódem konkrétního reakčního prvku nebo obecným kódem, který probouzí všechny. Po přijetí této zprávy od centrální jednotky si příjemce aktivuje ESP8266, kterým se už domluví s řídící jednotkou stanoviště na detailech, co je přesně potřeba udělat.
  
-Většina čidel tento přijímač nebude v průběhu hry potřebovat. Přesto může mít smysl ho instalovat, pokud předpokládáme, že čidlu budeme potřebovat aktualizovat firmware. Potom je možné firmware aktualizovat i bez nutnosti čidlo fyzicky aktivovat.+Většina čidel tento přijímač nebude v průběhu hry potřebovat. Přesto může mít smysl ho instalovat, pokud předpokládáme, že čidlu budeme potřebovat aktualizovat firmware, např. v průběhu vývoje. Potom je možné firmware čidla aktualizovat i bez nutnosti čidlo fyzicky aktivovat.
  
-=== Rušení a konflikty na RF 433 ===+=== Rušení a konflikty na RF 433 MHz ===
  
-Komunikace na frekvenci 433 MHz bývá zatížena rušením. Jedná se obvykle o velmi jednoduchou komunikaci, kdy se signál na frekvenci 433 MHz buď vysílá anebo nevysílá. Jednoduchým kódováním pomocí času a změn (vysílání a nevysílaní) signálu je možné poslat do okolí data.+Komunikace na frekvenci 433 MHz bývá zatížena rušením. Jedná se obvykle o velmi jednoduchou komunikaci, kdy se signál na frekvenci 433 MHz buď vysílá anebo nevysílá. Jednoduchým kódováním pomocí času a změn (vysílání a nevysílaní) signálu je možné poslat do okolí všesměrově data.
  
 Problém nastává v případě, že se dva účastníci komunikace rozhodnou vysílat současně - "překřikují se". Tomu obecně nelze zabránit a norma jen nedovoluje provozovat příliš silný vysílač. Tím ale bývá omezen dosah, který bývá v ideálních podmínkách okolo 100 m. Problém nastává v případě, že se dva účastníci komunikace rozhodnou vysílat současně - "překřikují se". Tomu obecně nelze zabránit a norma jen nedovoluje provozovat příliš silný vysílač. Tím ale bývá omezen dosah, který bývá v ideálních podmínkách okolo 100 m.
  
-Na stanovišti hry, zvlášť pokud bude na odlehlém míste někde v lese, ale není předpoklad přiliš velkého rušení od cizích zařízení na této frekvenci. +Na stanovišti hry, zvlášť pokud bude na odlehlém místě někde v lese, ale není předpoklad přiliš velkého rušení od cizích zařízení na této frekvenci. Tím spíše, že komunikace bude pouze jednocestná od řídicí jednotky směrem k jednotlivým prvkům hry a nehrozí tak, že bude docházet ke konfliktům.
- +
-Navíc komunikace bude pouze jednocestná od řídicí jednotky směrem k jednotlivým prvkům hry a nehrozí tak, že bude docházet k mnoha konfliktům.+
  
 === Vývoj a debug log === === Vývoj a debug log ===
Řádek 129: Řádek 128:
 ==== Schéma zapojení ==== ==== Schéma zapojení ====
  
-{{ :schematic_tiny84esp_2021-08-07_1_.png?400 |}} +{{ :schematic_tiny84esp_2021-08-10.png?600 |}}
  
 {{ ::zapojeni.png?400 |}} {{ ::zapojeni.png?400 |}}
 +
 +==== Uspávání a probouzení ESP-01 ====
 +
 +Existují následující možnosti, jak deaktivovat ESP-01, které je velmi energeticky náročné.
 +
 +  * **Uspávání funkcí ESP.deepsleep()**
 +  * Deaktivace ESP pomocí pinu CH_PD (chip powerdown)
 +  * Připojení regulovaného napětí jen v případě potřeby (Mosfet + optočlen)
 +
 +Při testování těchto možností je zatím funkční jen první varianta s Deep sleepem a následným resetem přes pin ATTINY.
 +
 +Při konkrétní implementaci je nutné brát do úvahy následující možné stavy:
 +
 +  * Oba čipy mohou být deaktivovány. ATTINY "spí" a ESP je také neaktivní
 +  * ATTINY pracuje, ale ESP není aktivní
 +  * Firmware ATTINY je programován, ESP je aktivní a ATTINY je v průběhu programování zresetován
 +  * Oba čipy jsou aktivní
 +
 +**Co nefunguje**
 +
 +  * ATTINY drží pin CH_PD ESP nahoře v době, kdy ho potřebuje. Tato konfigurace zneumožňuje propgramování ATTINY, protože po jeho resetu se shodí i ESP v roli programátora
 +  * GPIO0 a GPIO2 jako reset ATTINY pro programování. Tyto piny jsou na krátkou dobu při bootu ESP shozeny dolů. Pokud se tedy použijí ve funkci resetu pro programování, zresetuje se ATTINY při každém probuzení (bootu) ESP, což znemoňí předání nasbíranách dat centrální řídicí jednotce stanoviště.
 +
 +Pro reset ATTINY je tedy potřeba použít ping GPIO3 - ESP01. Ten zůstává i během bootu v modu vstupu a tedy neshodí ATTINY během probuzení. Tato vlastnost je potřeba k tomu, abychom při probuzení ESP nepřišli o nasbíraná data ze stanoviště.
 +
 +==== Připojení displeje s řadičem SSD1306 ====
 +
 +K ATTINY lze snadno připojit jednoduché jednobarevné OLED displeje přes sběrnici I2C na pinech PA6 (SDA) a PA4 (SCL). ATTINY84 disponuje částečnou hardwarovou podporou I2C sběrnice a komunikace je tedy dostatečně rychlá.
 +
 +Tyto displeje se dají sehnat kolem 40 Kč včetně dopravy.
 +
 +Jednobarevné OLED displeje zobrazují znaky po 8 bitech (1 sloupec řádku). Znakovou sadu můžeme uložit do programové flash paměti a zobrazovat znaky široké např. 6 sloupců.
 +
 +Pozor na konfiguraci na začátku je třeba správně nastavit několik parametrů podle počtu řádek displeje. Parametry se liší u 32 nebo 64 verze.
 +
 +   * SSD1306_SETCOMPINS
 +   * SSD1306_SETPRECHARGE
 +   * SSD1306_SETMULTIPLEX
 +   * SSD1306_SETDISPLAYCLOCKDIV
 +
 +{{ ::img_20210820_223139.jpg?400 |}}
 +==== Mapování pinů na desce čidla ====
 +
 +   * PA6, PA5 - I2C komunikace, UART nebo PWM řízení
 +   * PA4 - SPI sběrnice, je-li potřeba
 +   * PA7 - PWM výstup přes optočlen a tranzistor - OC0B - je-li osazen, jinak běžný vstup / výstup
 +   * PA3 - programování a 1-wire komunikace s ESP01, externí pull-up na 3.3 V
 +   * PA2 - AIN1 - analog komparator
 +   * PA0 - AREF - external analog reference
 +   * PA1 - Analog komparator AIN0
 +   * PB0 - připojení přijímače RF 433 MHz
 +   * PB1 - reset (probuzení) ESP-01
 +   * PB2 - PWM výstup přes optočlen a tranzistor - OC0A - je-li osazen, jinak běžný vstup / výstup
 +
 ==== Zajímavé knihovny ==== ==== Zajímavé knihovny ====
  
attiny84a.1628457390.txt.gz · Poslední úprava: autor: martin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki