On Github sabas1080 / PresentacionArduinoDay2015
Created by Andres Sabas / @sabasacustico
y gatos ingenieros
Modulo Tranceptor Wifi Serie SoC.
- It's a wireless SoC -It has GPIO, I2C, ADC, SPI, PWM and some more -It's running at 80MHz -64KBytes of instruction RAM -96KBytes of data RAM -64KBytes boot ROM -It's a RISC architecture -The ESP8266 chip is made by Espressif
-802.11 b/g/n protocol -Wi-Fi 2.4 GHz, support WPA/WPA2 -Super small module size (11.5mm x 11.5mm) -Integrated 10-bit ADC -Integrated TCP/IP protocol stack (ipv4 only at the moment) - +20dBm output power in 802.11b mode -Deep sleep power -Integrated low power 32-bit MCU - SDIO 2.0, SPI, UART, I2C
Diferentes modelos.
ESP-01 Version 2.
Mas GPIO Disponibles.
Con Certificacion FCC.
¿Como se conecta?
Comandos predefinidos con los que podemos controlar el modulo via serial.
AT: Comandos predefinidos con los que podemos controlar el modulo via serial.
Compilado: SDK
Perzonalizado: LUA, Frankensteinn y otros
ESP8266.
Convertidor USB-Serial FTDI
Arduino
Fuente de 3.3v
./esptool.py --port /dev/ttyUSB0 write_flash 0x00000 eagle.app.v6.flash.bin 0x40000 eagle.app.v6.irom0text.bin
/* *Andres Sabas *Sketch para comprobar funcionamiento del ESP8266 *Firmware: 0.9.2 *Fecha: 14 de Marzo del 2015 */ #include <softwareserial.h> #define SSID "XXXXXXXXXXX" #define PASS "XXXXXX" #define DST_IP "220.181.111.85" SoftwareSerial dbgSerial(10, 11); // RX, TX void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); //Serial.setTimeout(5000); dbgSerial.begin(9600); //can't be faster than 19200 for softserial dbgSerial.println("ESP8266 Demo"); //test if the module is ready Serial.println("AT+RST"); delay(1000); if(Serial.find("OK")) { dbgSerial.println("Module is ready"); } else { dbgSerial.println("Module have no response."); while(1); } delay(1000); //connect to the wifi boolean connected=false; for(int i=0;i<5;i++) { if(connectWiFi()) { connected = true; break; } } if (!connected){while(1);} delay(5000); //print the ip addr /*Serial.println("AT+CIFSR"); dbgSerial.println("ip address:"); while (Serial.available()) dbgSerial.write(Serial.read());*/ //set the single connection mode Serial.println("AT+CIPMUX=0"); } void loop() { String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += DST_IP; cmd += "\",80"; Serial.println(cmd); dbgSerial.println(cmd); if(Serial.find("Error")) return; cmd = "GET / HTTP/1.0\r\n\r\n"; Serial.print("AT+CIPSEND="); Serial.println(cmd.length()); if(Serial.find(">")) { dbgSerial.print(">"); }else { Serial.println("AT+CIPCLOSE"); dbgSerial.println("connect timeout"); delay(1000); return; } Serial.print(cmd); delay(2000); //Serial.find("+IPD"); while (Serial.available()) { char c = Serial.read(); dbgSerial.write(c); if(c=='\r') dbgSerial.print('\n'); } dbgSerial.println("===="); delay(1000); } boolean connectWiFi() { Serial.println("AT+CWMODE=1"); String cmd="AT+CWJAP=\""; cmd+=SSID; cmd+="\",\""; cmd+=PASS; cmd+="\""; dbgSerial.println(cmd); Serial.println(cmd); delay(5000); if(Serial.find("OK")) { dbgSerial.println("OK, Connected to WiFi."); return true; }else { dbgSerial.println("Can not connect to the WiFi."); return false; } } </softwareserial.h>
Codigo en github Sabas1080.
Toolchain ESP8266 Wiki.
-- Use the code as needed. Bits and pieces snarfed -- from various online sources. -- Find an open AP and turn on GPIO 2 -- To see debug or any output to the com port set debug -- equal to 1. Otherwise leave set to 0. debug=0 gpio.mode(3,gpio.OUTPUT) gpio.mode(4,gpio.OUTPUT) gpio.write(3,gpio.LOW) gpio.write(4,gpio.LOW) function network_open() gpio.write(pin,gpio.HIGH) tmr.delay(1000) --gpio.write(pin,gpio.LOW) tmr.delay(1000) gpio.write(pin,gpio.HIGH) tmr.delay(1000) --gpio.write(pin,gpio.LOW) tmr.delay(1000) gpio.write(pin,gpio.HIGH) tmr.delay(1000) --gpio.write(pin,gpio.LOW) tmr.delay(1000) if debug==1 then print("gpio 0 on") end end function network_close() --gpio.write(pin,gpio.HIGH) --tmr.delay(1000) gpio.write(pin,gpio.LOW) --tmr.delay(1000) if debug==1 then print("gpio 2 on") end end function network_not() pin=4 gpio.mode(pin,gpio.OUTPUT) gpio.write(pin,gpio.LOW) if debug==1 then print("gpio 0 off") end end function checkap() -- no ap found ap=0 function listap(t) for k,v in pairs(t) do --print(k.." : "..v) --print(v) a=string.sub (v, 0 , 1 ) print(a) if debug==1 then print(a) end if a=="0" or a=="1" then print("Found open node" , k) -- found at least one open Ap.. network_open() else print ("No open nodes found") network_close() end end end wifi.sta.getap(listap) end -- send data every X ms to thing speak tmr.alarm(0, 10000, 1, function() checkap() end )