Moje WiFi ESP8266 - silniční semafor

Pro oblast výuky (algoritmizace, programování atd.) jsem ze skutečného vyřazeného semaforu sestrojil ovládání přes Wi-Fi pomocí TCP, nebo Udp. Jedná se o první díl zařízení (které je autonomní a dá se bez problémů ovládat například přes telefon), ke kterému bude připojeno druhé ESP8266 jako klient, který bude přes Wi-Fi a Udp kopírovat na semafor stav vstupních pinů. Piny (5 vodičů) budou propojeny s deskou Arduino UNO do které bude nahráván kód uživatele (například ovládání křižovatky). Konstrukce tedy zajišťuje prodlouženou ruku uživatele k ovládání barev semaforu (žádné přemisťování semaforu, nebo tahání vodičů do desek)...

První část - semafor s ESP8266 webový server

Po zapnutí napájení až naběhne ESP8266 se spustí demo režim 1 (bliká oranžová v cyklu on-1s-off-1s) a tím nás jako uživatele informuje, že můžeme připojit klienta pro ovládání (telefon, tablet, jiné ESP8266...) ESP8266 je nastaven jako přístupový bod AP (Aces Point), který si vytvoří svoji vlastní Wi-Fi síť s názvem SSID: SEMAFOR. Následně se čeká na data z klienta na portu 80 pro TCP spojení, nebo 12345 pro Udp spojení.

K ESP8266 je připojen posuvný registr 74HC595 (pomocí 4 vodičů: data, clock, latch, output enable) který je napájen z desky ESP8266 napětím 3,3V (deska s ESP8266 má stabilizátor z 5V na 3,3V). K registru jsou přes optočleny připojeny triaky pro spínání žárovek 230V semaforu.

Pozor! Před manipulací se zařízením je nutné ho odpojit od sítě a vybít kondenzátory ve spínaném zdroji (nebo nějaký čas počkat)! Na zdroji a výstupech (triaky) je vysoké napětí a není odděleno od sítě. Je nutné zamezit jejímu doteku. Zařízení stavíte na vlastní nebezpečí, autor nebere za případné újmy žádnou zodpovědnost.

  • Program (*.bin) semaforu lze vyměnit v případě potřeby pohodlně přes webové rozhraní (není nutné připojovat počítač přímo k sériovému portu ESP, ale stačí otevřít prohlížeč a přiložit soubor). Na webu je zobrazena aktuální verze software v ESP8266.

ZDARMA

  • bin pro procesor ESP8266 verze 1.0.0 22.11.2017

DONATE

  • schéma (Eagle), zdroj a bin pro Arduino IDE ESP8266 od verze 1.0.0 výše

Verze FW

  • 1.0.0 výchozí verze.
  • 1.0.1 přidána zpětná odezva o stavu výstupů 1-5 (stavy výstupů je vidět on-line na webu bez nutnosti refreshe stránky - vše běží na pozadí), přepracována data z json na xml formát 192.168.4.1/data, kosmetická úprava home, přidána informace o verzi fw a status načítání (timeout).
  • 1.0.2 přidán captive portal (DNS) pro automatické přesměrování na home stránku po přihlášení k Wi-Fi síti. Kosmetika ve vzhledu na home stránce.

Pohled na webovou stránku na mobilním telefonu (verze: 1.0.1)

Semafor - foto

DSC 1780

DSC 1781

DSC 1736

DSC 1732

V semaforu jsou použity žárovky 230V/75W - nové křižovatky jsou již osazovány pomocí LED žárovek (musí být použita jiná optika skel - nestačí pouze vyměnit žárovku za LED namísto žárovky)

DSC 1782

DSC 1783

DSC 1784

DSC 1785

DSC 1786

DSC 1787

DSC 1818

DSC 1820

DSC 1819

DSC 1828

Schéma zapojení semaforu

ESP8266 má připojený posuvný registr na těchto pinech

  • pin připojen na RCLK registru (pin 12 u 74HC595)
    ESP GPIO 14
  • pin připojen na SRCLK registru (pin 11 u 74HC595)
    ESP GPIO 15
  • pin připojen na Data registru (pin 14 u 74HC595)
    ESP GPIO 12
  • pin Output Enable (pin 13 u 74HC595)
    ESP GPIO 13

Proč jsem použil posuvný registr (4 vodiče do ESP) a nepřipojil 5 žárovek přímo na ESP8266 (5 vodičů)? Protože ESP má omezený počet vývodů, které se dají smysluplně použít (na jednom je bootování, na druhém reset pro probouzení ze sleep, sériová linka atd.) V případě rozšíření křižovatky bude stačit doosadit zbylé výstupy z registru 74HC595 6-8 nebo osadit další registr a výstupy větvit n-obvodů 74HC595 * 8 výstupů :-) to by ESP samo o sobě nedokázalo.

schema

ESP 12F pins

Bastl deska - využita nepoužitá deska hw1 ze zalévače trávníku + naroubované ESP8266 + zdroj adaptér 230V/ 5V

DSC 1812

DSC 1813

Video  - demo 1 (cyklus křižovatka)

Video  - demo 2 (cyklus oranžová)

Ovládání semaforu - přes web (http - TCP)

ESP8266 je nakonfigurován jako přístupový bod (AP) tedy server webových stránek.

Na mobilním zařízení (notebook, tablet, telefon...) se připojíme k Wi-Fi síti s názvem

SSID: SEMAFOR

heslem: 123456789

a následně otevřeme webový prohlížeč kde zadáme stránku semaforu

http://192.168.4.1

telefon

V sekci "auta" můžeme ovládat červenou, oranžovou a zelenou barvu na semaforu pro automobily. V sekci "chodci" můžeme ovládat červenou a zelenou barvu pro chodce. V sekci "demo" lze spustit demo režim křižovatka - cyklus (auto 1) a režim žlutá světla (auto 2). Tlačítkem "vyp" můžeme semafor zhasnout.

Protože je Wi-Fi připojení zabezpečeno heslem tak není pro ovládání semaforu vyžadováno heslo. Pokud chceme semafor ovládat například z jiného zařízení (arduino, espxxx) odešleme na adresu

192.168.4.1/set?

následující příkazy:

a=1 sepne rudou pro auta

b=1 sepne oranžovou pro auta

c=1 sepne zelenou pro auta

d=1 sepne rudou pro chodce

e=1 sepne zelenou pro chodce

x=1 sepne demo režim 1

y=1 sepne demo režim 2

z=1 vypne všechna světla

  • Příklad pro sepnutí zelené barvy pro automobily a červené barvy pro chodce

192.168.4.1/set?c=1&d=1

  • Příklad pro sepnutí demo režimu 1

192.168.4.1/set?x=1

Ovládání semaforu - přes Udp

Pokud chceme semafor ovládat pomocí Udp protokolu (má svoje výhody i nevýhody), který je oproti TCP rychlejší (nemusí se odesílat obsáhlá webová stránka a kontrolovat spojení) zadáme následující příkazy například přes program https://packetsender.com/

nebo z jiného systému (například ESP8266 v režimu klienta - bude následovat jako pokračování tohoto článku).

Připojíme se k Wi-Fi síti

SSID: SEMAFOR

heslem: 123456789

spustíme program Packet Sender a vyplníme kolonku adresa, port a ASCII (8 byte data). Následně do semaforu pomocí tlačítka "Send" můžeme data odeslat.

Semafor přijímá vždy 8 byte (pokud se do semaforu bude odesílat více než 8 byte semafor na >8 byte nebude reagovat a zbytečně zvyšujeme provoz komunikace).

Příkazy byte 0 - byte 7 použité v Udp vycházejí z TCP ovládání (stejná logika ovládání semaforu):

1 byte = 1 sepne rudou pro auta

2 byte = 1 sepne oranžovou pro auta

3 byte = 1 sepne zelenou pro auta

4 byte = 1 sepne rudou pro chodce

5 byte = 1 sepne zelenou pro chodce

6 byte = 1 sepne demo režim 1

7 byte = 1 sepne demo režim 2

8 byte = 1 vypne všechna světla

  • Příklad (8 bytů) pro sepnutí zelené barvy pro automobily a červené barvy pro chodce

Udp ASCII 00110000 na adresu 192.168.4.1 a port 12345

 

packet