pondělí 15. prosince 2014

WiFi modulek za 90 Kč

Náhodou jsem na eBay narazil na malý ale šikovný WiFi modulek Wi07c. Dokáže pracovat v režimech AP, jako klient a nebo obojí najednou. Po rozbalení stačilo připojit napájení, Rx a Tx a vývod CH_PD na +3,3 V.





Ve výchozím nastavení modulek komunikuje rychlostí 9600 Bd a očekává \n na konci řádků.
Po update firmwaru modemu komunikuje ve výchozím nastavení rychlostí 115200 Bd.

První je jednoduchý test, stačí do terminálu napsat AT a znak \n, modul odpoví echem a OK.
Po update FW modulu chutnají i \r kombinace \r\n. Dále je tedy možné si sním povídat pomocí PuTTY.

Dotaz na verzi FW (původní byla: 0018000902-AI03):
AT+GMR

00170901

OK

A nyní již k samotnému ovládání modulku, nejprve zvolíme jeden ze tří režimů (Client = 1, AP = 2, hybrid = 3). Pro jednoduchost zvolíme režim klient a pokusíme se připojit k APčku.
AT+CWMODE=1

Pomocí následujícího příkazu si necháme vypsat dostupné bezdrátové sítě, druhou hodnotou je SSID, tedy název bezdrátové sítě (první v tomto případě nalezená WiFi má asi skryté SSID) další je hodnotu RSSI dále následuje MAC adresa WiFi karty APčka a číslo kanálu na kterém je síť provozována. Modul podporuje šifrovací standardy WPA i WPA2.

AT+CWLAP
+CWLAP:(0,"",0,b8:55:ff:3f:00:00,0)
+CWLAP:(2,"JFila_test",-28,XX:XX:XX:XX:XX:XX,1)
+CWLAP:(3,"yyyy",-74,XX:XX:XX:XX:XX:XX,6)
+CWLAP:(3,"yyyyyy",-93,XX:XX:XX:XX:XX:XX,6)
+CWLAP:(3,"yyyy",-85,XX:XX:XX:85:cf:e8,11)
+CWLAP:(1,"yyyyy",-92,XX:XX:XX:XX:XX:XX,11)

OK

Nyní stačí se jen připojit pomocí následujícího příkazu, první je hodnota SSID uzavřená v závorkách a dále následuje heslo k bezdrátové síti taktéž uzavřená v závorkách.

AT+CWJAP="JFila_test","heslo"

Pomocí příkazu AT+CIFSR se zeptáme na aktuální IP adresu zařízení (patrně není možné si ji v modulu nadefinovat napevno ale je nutné si ji nechat přidělovat od DHCP). Nyní si můžeme PINGnout na odečtenou adresu, modul by měl odpovídat.

Dále pokračujeme volbou CIPMUX, tedy zda chceme provozovat modulek v režimu více spojení najednou nebo v Single režimu. Pro jednoduchost zatím volíme Sigle Connection, tedy 0.
AT+CIPMUX=0

Na počítači si spustíme TCP server na portu 8000 a zadáme příkaz:
AT+CIPSTART="TCP","192.168.1.103",8000

OK
Linked

Nádhera připojeno, nyní už můžeme přijímat a posílat data, při odeslání dat z PC nám modulek zašle následující řetězec, trojka reprezentuje počet znaků zaslaných druhou stranou, v našem případě se jedná o řetězec "kuk".

+IPD,3:kuk
OK

Stejně hloupě můžeme protistraně odpovědět pomocí příkazu CIPSEND, nyní již stačí počkat na výzvu k odeslání znaků a po odeslání zadaného počtu bajtů je odeslání potvrzeno odpovědí SEND OK.
AT+CIPSEND=4
> ahoj
SEND OK

Multiconnection mód je v podstatě stejný s tím rozdílem, že máme k dispozici několik kanálů najednou a je tedy nutné při odesílání a dalších operací příkaz doplnit ještě o číslo kanálu. Dále následuje příklad kdy se nejprve připojíme k serveru v počítači a poté ještě spustíme server. K tomuto serveru se připojí ještě jiný klient a každý pošle data. Z modulu jim každému pošleme odpověď.
AT+CIPMUX=1

OK
AT+CIPSTART=0,"TCP","192.168.1.103",5060

OK
Linked
AT+CIPSERVER=1,80

OK
Link

+IPD,1,10:od klienta
OK

+IPD,0,10:od serveru
OK

AT+CIPSEND=0,14
> nazdar Servere
SEND OK

AT+CIPSEND=1,14
> nazdar Cliente
SEND OK

Modul si také může stáhnout z Internetu nový FW, přehrávání spustíme při asociaci s APčkem pomocí příkazu AT+CIPUDATE.

AT+CIUPDATE
+CIPUPDATE:1
+CIPUPDATE:2
+CIPUPDATE:3
+CIPUPDATE:4

OK

 ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x40100000, len 212, room 16
tail 4
chksum 0x5e
load 0x3ffe8000, len 788, room 4
tail 0
chksum 0x1c
load 0x3ffe8314, len 72, room 8
tail 0
chksum 0x55
csum 0x55
jump to user2

ready

Na konec si ještě ukážeme jednoduchý http dotaz na seznam.cz. Navážeme spojení a odešleme, no někde se nezadařilo ale chybová odpověď od Seznamu je také odpověď, server nám poslal chybovou stánku o 232 bajtech.

AT+CIPSTART="TCP","www.seznam.cz",80

OK
Linked
AT+CIPSEND=22
> GET / HTTP/1.1
SEND OK

+IPD,323:HTTP/1.1 400 Bad Request
Server: nginx/1.6.0
Date: Mon, 15 Dec 2014 20:02:25 GMT
Content-Type: text/html
Content-Length: 172
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.6.0</center>
</body>
</html>

OK

OK
Unlink

Další zajímavostí je, že modul je dodáván s kompletním SDK, je tedy možné si do něho napsat vlastní FW nebo alespoň upravit ten dodávaný. Třeba příště.

http://www.electrodragon.com/w/Wi07c
http://blog.electrodragon.com/cloud-updating-your-wi07c-esp8266-now/
http://mcuoneclipse.com/2014/10/15/cheap-and-simple-wifi-with-esp8266-for-the-frdm-board/

Žádné komentáře:

Okomentovat