IoT

Po drobném uvážení jsem se rozhodl zveřejnit nějaký drobný vzorek ze své dílny...

Pro své osvojování různých technologií a zařízení si v první fázi vytvářím drobné projekty. Cílem těchto projektů je ověření teorie v praxi. Jednak při samotné realizaci těchto drobných projektů se mohou vyskytnout neprobádaná místa a je možné zavčasu myšlenku opustit s ohledem na minimalizaci nákladů.

Rozhodl jsem se více experimentovat a vybudovat si Mesh síť a vyzkoušet si ji v praxi. Pro tyto účely jsem hledal nějaký přijatelný prostředek, s kterým budu moc vizuálně verifikovat a snadno monitorovat svou mesh síť.

Pro tyto účely jsem přišel s nápadem vybudovat si malý izolovaný objekt, který půjde snadno sledovat. Tím vznikla myšlenka na vybudování dopravního semaforu. Myšlenky začaly mít tvar a s tím se zrodil projekt Semafor.

3D model: 4x TF_panel.igs, 2x TF_cover.igs
pozn k 3d tisku: pokud budete tisknout podstavy i panely ze stejného materiálu, bude smrštění stejné. Při užití různých - nemusí. To může být komplikací při sestavení

Rozhodl jsem se vytvořit deadbug obvod s použitím minimálních prostředků, tak aby měl smysl a řadu možností, které budu schopen do budoucna rozvíjet. Za účelem rozvoje je k minimální konfiguraci potřeba několik dalších dílů, které nejsou pro běžný provoz potřeba, ale jsou zde především pro možnost snadného a opakovatelného nahrání programu na čip. Seznam verzí programu je v kapitole Change log. Zatím nemám v úmyslu program zvěřejňovat. Nicméně je pravděpodobné, že soupis verzí bude aktualizován s každými většími úpravami.

Tento obvod "hezky" zabalit do nějakého obalu - 3D tisk. A vyvedení možnosti napájení. Model semaforu tedy bude ideálně zcela soběstačný a ovladatelný buď svým programem nebo vnějšími pokyny(UDP). Web-base administrací pro nastavení Wifi připojení a zbylého parametrizovaného chování (DNS + HTTP GET & POST). Semafor bude rozeznávat UDP příkazy (Bytes, json/text), kterými se bude řídit. Jediné, co bude semafor ke svému životu potřebovat, bude "nějaký ten proud".

Po představení prototypu modelu semaforu, vznikl o semafor zájem a to mě motivovalo k sofistikovanějšímu pojetí celého projektu. Aktuálně je několik zájemců o "building kit", ve kterém jsou dodány pouze součástky s naprogramovaným čipem (bez spotřebního materiálu, drátů a nářadí).

"Simple" schéma popisuje pouze nezbytné zapojení. Tak, aby se naprogramovaný semafor uvedl do provozu. Úplně první uvedení do provozu a při zcela nově nahraném programu na čipu zabere i několik desítek vteřin vteřin (obvykle do 40sec). Opětovné zapnutí semaforu je v řádech milisekund. Pokud se k vám dostala součástka již naprogramovaná a zcela vylučujete možnost budoucího přeprogramování či opravy, je možné využít schéma zapojení "Simple" (není mnou preferované). V ostatních případech je mnou doporučené zapojení v následující kapitole Schéma zapojení "benefits"

Seznam součástek:

  • 1x ESP8266-12F (E)
  • 1x Voltage regulator 5v -> 3V3 module (LM3940, AMS117)
  • 3x 10kΩ Resistor
  • 12x RGB LED Neopixel, WS2812B, SMD 5050, 5V
  • (1x USB Male - v závislosti na způsobu napájení)

"benefits" schéma popisuje dvě zapojení. Pro funkci semaforu je potřeba první. Druhé je určené pro mnou preferované nahrávání programu za pomocí Převodníku USB na TTL modulu (RS232) CP2102, který není součástí semaforu.

Výhody zapojení "benefits" dávají možnost snadného nahrávání programu. Možnost ladit a zachytávat výstup skrze Seriovou linku s výstupem na terminál v reálném čase. Nedochází ani k významně velkému množství součástek. Je potřeba zvolit vhodnou strategii a dispozici součástek si zvolit dle svých preferecí. Na obrázcích bude vidět dispozice, kterou jsem zvolil, a umožnil jsem tak snadno vytvořit prostor mezi součástkami, které vyzařují teplo.

Seznam součástek:

  • 1x ESP8266-12F (E)
  • 1x Voltage regulator 5v -> 3V3 module (LM3940, AMS117)
  • 3x 10kΩ Resistor
  • 12x RGB LED Neopixel, WS2812B, SMD 5050, 5V
  • 1x 2x4 female header connector
  • (1x USB Male - v závislosti na způsobu napájení)

Seznam součástek "modulu pro připojení semaforu k převodníku":

  • 2x Spínač
  • 1x 1x7 pin male header connector
  • 1x 1x4 pin female header connector
  • 1x bcp

Přehled dílů určených pro kompletaci semaforu.

zleva doprava: 2x čtvercová podstava, 3x resistor 10kΩ, 4x panel semaforu, 1x regulátor napětí 5V -> 3.3V, 1x esp8266-12f, 12x WS2812B, 1x USB Male, 1x 2x4pin female connector

A - Vylámeme led diody na jednotlivé díly. B - každý dílek očistíme pilníkem po obvodu, ALE NE PŘÍLIŠ!, tak aby šel vpresovat do připraveného otvoru "na těsno". C - Led dioda je vtlačena až na na dno připraveného otvoru. Led dioda nesmí vypadávat(pokud ano, je potřeba lepit a počkat). Při vsazování led diod je opodstatněné dbát na jejich orientaci (to usnadní jejich následné zapojení). Pro orientaci lze užít trojúhelníček v rohu diody (oranžová šipka).

Na předchozím obrázku (červené písmeno A) je vidět fragment diody ze spodní strany. Je na nem 6 kontaktních ploch. V páru jsou zde kontakty pro GND a pro 5V pro nejrůznejší způsoby zapojení. Důležité jsou pro nás rozlišit prostřední pár kontaktních ploch. Jedna je označena Din (Data IN), a druhá Dout (Data Out). Led0 je tedy spojena s esp8266(GPIO14) na Din. Dále je LED0 spojena s následující LED1(Din) z Dout.

Zapojení panelu (obrázek níže). Červeně = 5V. Zelená = GND, Modrá = GPIO14. Napájení panelů je zajištěno přímo ze zdroje bez regulátoru. To jakým světlem se Led dioda rozsvítí záleží na datech, které přijme. Zapojení Led diod musí být řešeno jako řetěz.

Řetěz začíná LED0 (na obrázku zcela v pravo nahoře), jedná se o vrchni světlo semaforu(červené světlo).

Druhá dioda LED1 (Oranžové světlo) je uprostřed na stejném panelu.

Třetí dioda LED2 (zelené světlo) je posledním stejném panelu.

Odtud řetěz pokračuje na diodu LED3, která je na sousedním panelu první z vrchu (červená). Pokud si představíte, že se díváte na sestavený semafor zepředu, tak sousední panel je ten z pravé strany.

Taktímto způsobem zepojte zbylá LED3 - LED11. Přičemž z LED11 již dále propojení dat nepokračuje a zde končí.

Symbolický způsob zapojení

Obrázek zapojení je správný (fotodokumentace obsahuje chybu, kde jsou jednotlivé panely zapojeny opačným směrem). Pro verzi programu semaforu V2021.0202 to nemá příliš vysoký význam, nicméne v dalších verzích programu pro semafor a jejich synchronizaci to bude mít pravděpodobně vliv na další plánované funkcionality.

Příklad možného zapojení (GND); zapojení prvního panelu

Před použitím regulátoru napětí doporučuji provés následující dvě úpravy:

Odstranění resistoru v levé horní části, která zapřičiní, že integrovaná led zůstane nepoškozená, ale nezapojená, a tedy uvnitř semaforu nebude emitováno žádné zbytečné světlo.

Odpájení osazeného trojpinu z modulu. Tím bude snažší integrovat všechny součástky dovnitř semaforu.

Esp8266 chip osadíme resistory "deadbug" způsobem zapojení. Konkrétně pull_up resistor na pinu RST a EN. Pull_down resistor osadíme mezi pin GPIO15 a GND.

Podstavu na fotodokumentaci připravuji pro možnost zavěšení semaforu. Toto má výhodu, že můžeme semafor pohodlně pokládat na podložku a je v přirozené poloze. Pokud se rozhodnete semafor umístit například na sloupek, zvažte, zda-li nebude vhodnější provést přípravu spodní podstavy.

Pro zapojení podle diagramu "Simple" je vizualizace možného provedení, která je opravdu snadná. Nyní stačí propojit GPIP14 s připraveným vstupem do prvního panelu semaforu a připevnit napájení panelů. Jelikož kontakty čipu jsou po obvodu prakticky celého čipy, doporučuji použití smršťovací folie, která izoluje chip od otevřených kontaktů, které budou po vnitřní ploše semaforu. Před složením a zakrytím jednotlivých částí je rozumné semafor otestovat spuštěním.

Za předpokladu, že jste si vybrali variantu "Simple", tak vám mohu Pogratulovat!. Nyní stačí "střeva" semaforu zavřít dovnitř všech stěn, a jste připraveni se seznámit s Administrací a obsluhou.

Zcela plynule je možné z připravených částí pro zapojení "Simple" přejít k zapojení rozšiřující sběrnice, která nám do budoucna umožní se snáze dostat k dalším možnostem, které nám široké spektrum funkcionalit chipu ESP8266, přináší.

V praxi se jedná o to, že k a do konstrukce semaforu přiděláme konektor, ke kterému se v případě potřeby budeme moci snadno připojit. Zbylé komponenty, budou stále mimo semafor a jsou plně na vaši preferenci a volbě.

Jelikož neplánujeme využívat zcela vše, co nám je k dispozici (například I2C ani ADC), zaměříme se nyní na dvě následující funkcionality. První je možnost Restartování a Firmware Reset. Druhou je možnost ladění pomocí seriové linky. Kombinace těchto dvou funkcionalit automaticky přináší možnost zavedení nového programu do chipu a tedy "přeflashování" aktuálního programu jiným. (Toto je hlavní smysl celého modelu, mít možnost program snadno aktualizovat a měnit. V dalších verzích tohoto modelu je plánovaná komunikace, která umožní, aby se jednotlivé semafory mohly mezi sebou dorozumívat a bylo možné simulovat například řízenou dopravu. Další funkčností můžou být vizuální notifikace v rámci domácí automatizace + další zatím nezveřejněný záměr:))

Myslím, že opodstatněných důvodů, proč neskončit u "Simple" zapojení, zaznělo dost, a nyní ke mnou vybranému způsobu rozšíření.

Cílem je zpřístupnit následující rozhraní: TX, RX, GPIO0, RST, GND, 5V [+3.3V]. Celkem tedy 7 porů. Pro tyto účely je součástí balení 2x4 pinový konektor. Který je potřeba lehce upravit, tak aby se nám lépe využil omezený prostor uvnitř semaforu.

Před modifikací.
Po modifikaci. Jeden pin byl z konektoru vyňat, tím je snažší rozeznat orientaci konektoru na fotografiích. Budu tedy o konektoru dále mluvit jako o spodní (4pinové řadě) a o horní (3pinové řadě) z pohledu, kdy je vidět na otvory, do kterých patří protikus.

Pohled do konektoru:

horní řada:
5V
3.3V
GND
-
spodní řada:
GPIO0
TX
RX
RST

Po úpravě nožiček konektoru lze konektor spojit se spodní částí chipu, provést propojení mezi piny chipu a konektorem ve spodní části.

Horní část konektoru nám poslouží pěkně jako držák regulátoru napětí a zároveň zajistí aretaci, aby esp8266 a regulátor napětí nebyly v přímém kontaktu a bylo tak možné odvádět trochu tepla do okolí.

Tímto je provedena kompletace semaforu, kdy můžeme snadno sejmout spodní podstavu a semafor připojit na modul sloužící jako terminál pro shodně zapojené semafory. Modul disponuje tlačítkem pro reset a tlačítkem pro GPIO0-LOW. Na modul se připojí například převodník RS232, kterým Semafor může komunikovat s PC.

Ilustrativní foto semaforu, postaveného na modul s převodník.

Semafor je navržen a naprogramován tak, aby po zapojení a zapnutí k napájení byl samostatně funkční. První zapnutí a uvedení do provozu pro čerstvě nahraný čip trvá přibližně 40 vteřin. Každé další zapnutí je pak v řádech desítek milisekund.

Inicializační sekvence rozsvíti všechny ledky na zeleno a vzápěti je po jedné přebarví na červeno. Po této inicializaci je jednoduché rozeznat, zda je vše zapojeno správně a každá ledka nějak reaguje. Vzápětí se uvede do režimu 18 (mode = 18).

  • Mode 0: Tento režim připomíná vypnutý semafor dopravního značení. V pravidelných intervalech nesvítí a nebo svítí prostřední světlo každáho panelu oranžovou barvou.
  • Mode 1: Režim nám umožní nastavit individuálně barvu každé led diody na semaforu. Tedy až 12 individuálních barev.
  • Mode 2: Režim pro ovládání individuálě liché a sudé strany semaforu najednou. Tedy je možné nastavit až 6 individuálních barev, které se automaticky zrcadlí na protější straně semaforu. Jedná se o relativně jednoduchou, efektivní, manuální obsluhu semaforu.
  • Mode 4: Nastavení barev jednoho panelu a ostatní panely jej kopírují. Jedná se o snazší způsob ovládání semaforu.
  • Mode 8: Umožňuje vybrat jedinou barvu, kterou rozsvítí celý semafor.
  • Mode 16: Tento režim je analogický s běžným fungováním dopravního semaforu. Při aktivaci tohoto režimu jsou automaticky přenastaveny barvy světel, tak aby odpovídaly barvám semaforu. Zároveň je aktivován krokový režim, který po uplynutí určitého času posune světla o další fázi. Po nastavení modu je možné individuálně ovlivnit barvu, která bude signalizována - nikoliv její pozici.
  • Mode 18 (16+2): Jedná se o kombinaci modu 16 a zjednodušené úpravy barev na protilehlých panelech
  • další režimy se připravují..., budou sloužit k identifikaci hlavního a podřízených semaforů, případně k barevným efekům, nebo povolení zpracování notifikace atd., v rámci verze V2021.0202 ještě nejsou:)

Každý semafor se chová jako jednoduchý WiFi hot-spot, ke kterému se lze připojit například prostřednictvím mobilního telefonu. Lze se takto na jeden semafor připojit až 4 zařízeními nezávisle. Současně je možné, aby se sám semafor připojil k jinému WiFi Access Pointu - například k domácímu Routeru. (Do budoucna i k jinému semaforu.)

Semafor disponuje vlastní http servisou, která se dá analogicky přirovnat k administrativní stránce domácího routeru. výsledkem je jednoduchá webová stránka, která vám umožní měnit konfiguraci vašeho semaforu.

Semafor umí odpovědět na dotazy typu Ping.

Semafor umí přijímat/odesílat UDP pakety.

Jednotlivé telefony a systémy se chovají trochu odlišně. Obecně lze popsat tak, že telefon může nabídnout po připojení k semaforu ještě nutnost Web-autorizace. Otevřením této stránky se dostáváte prakticky ihned do administrace semaforu a jeho nastavování. Pokud se tak nestane a vaše zařízení se připojí a po chvíli vás notifikuje, že připojení k internetu není k dispozici - Radujte se!, semafor internet nemá. V tomto případě stačí otevřít jakýkoliv prohlížeč, kterým běžně surfujete po internetu a zadat "nějakou" http:// adresu (Pozor, ne adresu začínající https://). Zkuste například http://semafor.com. Semafor by vás měl nasměřovat na stejné místo jako je web-autorizace.

Každý semafor má přiřazeno individuální jméno pro usnadnění orientace. Tento semafor se jmenuje TFGray.

(číslo) vyjadřuje počet "tiků", které chip od posledního restartu vykonal ve chvíli, když připravoval stránku administrace. (orientačně 1000tiků = 1 vteřina)

Tlačítko se zatočenou šipkou funguje jako obnovení stránky.

Box Mode je určen ke změně režimu. Podle aktuálního režimu je zvýrazněno aktivně související.

Box Power umožnuje nastavit intenzitu led diod. Funkční hodnoty jsou 0 - zhasnuto až 255 - maximální svítivost.

Vybraný režim 18 nám v dalším poli umožnuje přizpůsobit barevnost liché a sudé strany semaforu.

Box Mode 0 je nyní neaktivní.

Box Mode 16 nám umožnuje změnit dobu trvání jednotlivé fáze. Fáze je vizualizována z pohledu na první panel. Ostatní panely se tímto panelem řídí. Intervaly je možné nastavit v řádu celých stovek milisekund v rozsahu 0 - 255. (0 zde znamená nekonečně, 255 je přibližně 25 vteřin)


Box Mode signalizuje aktivní režim 0.

Barva prostředních světel je nastavena na oranžovou.

Box Mode 0 má aktivní rám a je zde možné volit interval jednotivých fází.

Zcela na spodku ztránky je k dispozici tlačítko Wifi Nastavení, které nás přesune k nastavení WiFi sítě.

Tlačítko debug funguje jako přepínač, které aktivuje výstup rozšiřujících zpráv. Tyto zprávy obsahují pomocné informace, jimiž lze monitorovat očekávané chování. Rozšiřující zprávy se zobrazí jak v administrací(stránce), tak se o jejich přítomnost rozšíří přenos po seriovém rozhraní.

Semafor se primárně chová jako samostatná jednotka. Je možné, aby se semafor přihlásil do Wifi (2.4GHz) sítě a v rámci ní komunikoval. Webová administrace pak bude přístupná přes IP adresu, která bude semaforu přidělena. Pro přihlášení k vaší wifi síti uveďte přesně informace pro připojení. Pro skryté sítě je nutné vybrat Hidden: 1.

Druhý box nám umožňuje donastavit podružné chování semaforu

Zapnutím "Povolit připojování k AP" zajistíte, že pokud semafor není po 30 vteřin připojen k nasavené wifi síti, pokusí se skenovat dostupné sítě a vybrat z nich síť, kterou zná a pokusí se k ní připojit. Aktuálně publikovaná verze semaforu neumožnuje nastavit více různých sítí na rodíl od nepublikované verze. Pravděpodobně lepšího chování bude dosaženo s vypnutím touto volbou.

Zapnutím "Povolit změnu modu při ztrátě AP připojení" zajistíte, že semafor bude periodicky kontrolovat své připojení k wifi. Pakliže je v době kontroly semafor od sítě odpojen, bude režim semaforu změněn na uvedenou hodnotu v poli "Po Ztrátě změnit na:".

Povolit změnu modu při AP připojení = Po navázání spojení s wifi je ihned aktivován režim uvedený v poli "Po Navázání změnit na:".

Touto konfigurací lze například semafor nechat automaticky přepínat režim semaforu a tím jednoduše vizuálně rozpoznat, zda je připojen k Wifi.

Vysvětlivka barev:
  • Obecná informace
  • Popis chování
  • Souvisí s hardwarem, fyzickým rozhraním
  • Funkcionalita
  • WiFi, AP, GUI - Webové rozhraní (prvek, změna)

Verze:

  • V2021.0202 -

    • Byl přidán "hostname", který se zobrazuje na úrovni síťové komunikace.
    • Byla provedena oprava a nastavení výchozí hodnoty pro režim 0. Fáze černá 800ms, fáze oranžová 1200ms. Při factory resetu budou tyto hodnoty také obnoveny.
  • V2021.0130 -

    • Konstrukce semaforu je složena ze 4 stěn a dvou podstav. Napájecí kabel je veden horní podstavou. Spodní odnímatelná pro přehrávání programu. viz foto
    • Factory Reset = Vynutí obnovení výchozího nastavení, které přeuloží do lokálního souboru konfigurace.
    • "debug", pokud je aktivní, zajištuje propis ladících instrukcí na rozhraní seriové linky.
    • Vytvoření lokálního souboru konfigurace na zařízení. Vždy pokud je formát v konfiguračním souboru poškozen. Je připraveno pro "Factory Reset".
    • Výchozí údaje pro připojení k semaforu:
      ssid: TF<jméno_semaforu>
      pw: zvyk.com
    • Web-base administrace je přístupná bez hesla na kterékoliv http:// adrese (port 80). semafor překládá všechny dns dotazy na lokální a odpovídá na ně. Naopak nereaguje na https (443).
      např: http://semafor.cz. Pokud se připojíte například telefonem na semafor, je zcela v pořádku, že připojení je označeno jako bez přístupu k internetu, také že wifi se bude chovat tak, že je potřebné provést webové přihlášení. Toto vše je očekáváné.
    • Seriove rozhraní TX(6), RX(7) je vyvedeno pouze v "benefits" zapojení. Komunikace na tomto rozhraní je k dispozici od inicializace zařízení v rychlosti 115200.
    • Factory Reset = Vynutí obnovení výchozího nastavení, které přeuloží do lokálního souboru konfigurace. Tato funkcionalita je spjata se spínačem označeným GPIO0. Po nastartování semaforu je port GPIO0 nastaven na čtení aktivním interním PULL_UP resistorem. Pokud dojde ke krátkému sepnutí (GPIO0 na LOW(GND)), bude aktivován "debug" režim. GPIO0 na LOW trvající déle než 7vteřin způsobí obnovení nastavení.
    • Semafor je možné nakonfigurovat na připojení k WiFi AP. Pro tyto účely je k dispozici konfigurace pod tlačítkem "Show wifi settings".

      První část dialogu umožnuje zadat přihlašovací údaje WiFi AP, kam se má semafor jako Station připojit. SSID = Jmeno přístupového bodu, PW = heslo, Hidden: 0 (pokud je sít standardně viditelná pro vyhledávání) / 1 (pokud je skrytá). Tlačítkem Save Preferred Wifi je konfigurace uložena. Zařízení v tento okamžik nejdříve odpojí veškerou komunikaci. Pokud není aktivována volba "Povoleno připojování" zařízení se nezačne připojovat a také zůstane Wifi Rozhraní vyplé do dalšího startu.

      Druhá část dialogu upravuje chování semaforu a jeho WiFi připojováním (jako klienta na jinou sít).

  • V2021.0129 - Tato verze semaforu je oživením čipu, umí se připojit do Wifi sítě, má několik režimů a nemá zcela odladěné chování. Předností této verze je, že pokud se připojí úspěšně do wifi sítě, pravidelně přepíná červené - oranžové - zelené světlo, tak jak jsme v ČR zvyklí. Má dostupné web-based gui rozhraní s omezenými možnosti nastavování. Lze definovat inviduálně barvu každého světla. Konstrukce semaforu je složena ze 4 stěn, dvou podstav. Navrženo, aby semafor za napájecí kabel mohl viset, spodní podstava odnímatelná pro přehrávání programu.