attiny84a
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| attiny84a [2021/08/08 23:15] – [Zapsání OWL bootloaderu] martin | attiny84a [2021/08/20 22:36] (aktuální) – [Připojení displeje s řadičem SSD1306] martin | ||
|---|---|---|---|
| Řádek 59: | Řádek 59: | ||
| </ | </ | ||
| - | Tím dojde k vygenerování bootloaderu pomocí něhož budeme dále nahrávat program do mikrokontroleru. Vygenerovaný soubor iles84.hex najdete v podadresáři targets. Tento soubor je nyní potřeba nahrát do mikrokontroleru. | + | Tím dojde k vygenerování bootloaderu pomocí něhož budeme dále nahrávat program do mikrokontroleru. Vygenerovaný soubor |
| Nahrání bootloaderu do mikrokontroleru proběhne pouze jednorázově a pak už je možné nahrávat programy přes WIFI prostřednictvím ESP. Bootloader také nemůže být běžným programem poškozen. | Nahrání bootloaderu do mikrokontroleru proběhne pouze jednorázově a pak už je možné nahrávat programy přes WIFI prostřednictvím ESP. Bootloader také nemůže být běžným programem poškozen. | ||
| Řádek 67: | Řádek 67: | ||
| * Použít k tomu jakékoliv Arduino, návod je např [[https:// | * Použít k tomu jakékoliv Arduino, návod je např [[https:// | ||
| * 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: | ||
| </ | </ | ||
| - | Tento příkaz v adresáři '' | + | Tento příkaz v adresáři '' |
| 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á, |
| ==== 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í, | 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í, | ||
| - | Řešením tohoto problému je přidat k reakčním prvkům přijímač RF 433 MHz. Jeho jedinou funkcí | + | Řešením tohoto problému je přidat k reakčním prvkům přijímač RF 433 MHz. Jeho jedinou funkcí |
| - | 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, | + | 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, |
| - | === 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í |
| Problém nastává v případě, že se dva účastníci komunikace rozhodnou vysílat současně - " | Problém nastává v případě, že se dva účastníci komunikace rozhodnou vysílat současně - " | ||
| - | Na stanovišti hry, zvlášť pokud bude na odlehlém | + | Na stanovišti hry, zvlášť pokud bude na odlehlém |
| - | + | ||
| - | Navíc | + | |
| === Vývoj a debug log === | === Vývoj a debug log === | ||
| Řádek 129: | Řádek 128: | ||
| ==== Schéma zapojení ==== | ==== Schéma zapojení ==== | ||
| - | {{ : | + | {{ : |
| {{ :: | {{ :: | ||
| + | |||
| + | ==== 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 " | ||
| + | * ATTINY pracuje, ale ESP není aktivní | ||
| + | * Firmware ATTINY je programová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í, | ||
| + | |||
| + | 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 | ||
| + | |||
| + | {{ :: | ||
| + | ==== 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.1628457320.txt.gz · Poslední úprava: autor: martin
