jueves, 9 de abril de 2015

esp8266 - Resumen de shield

1)Esta es el esp8266 version esp-01 tiene un consumo elevado de alrededor de los 3.3V@200mA por lo que funciona con el adaptador USB-RS232 pero para montajes finales hay que usar una fuente externa.
La conexion de GPIO0 se usa solo para ponerlo en modo de programacion para actualizar el firmware o bajarle un firmware propio.
El firmware original utiliza comandos AT a 115200 BAUD (115200-8N1) funciona pero los comandos AT son muy lentos.

Modificacion para poder programarlo para otros firmware no es necesario pero es una mejora.








Una ves todo armado te conectas con una terminal serie bajo win o lin y seleccionas la /dev/ttyUSB0 a 115200 y para probar ingresas los comandos AT

Lista de comandos at especificaciones y soft para descargarles firmwares.

Otra guia de comandos AT

AT te responde OK
AT+GMR ->te muestra la version del firmware
AT+CWMODE=1 ->modo de la estacion
AT-CWLAP -->lista los accespoint wifi
AT+CWJAP="nodo","contraseña" -->join to acces point se conecta al AP DHCP
AT+CIFSR ->nos muestra la ip dhcp del AP
AT+CIPMUX=1 ->cant de conexiones multiples :) creo soporta 5
AT+CIPSTART="TCP","ip",80 --> protocolo(tcp/udp) - ip - puerto
AT+CIPSEND=50 -->envia un paquete de longitud 50
AT+CIPCLOSE -->finaliza la coneccion
Versiones de librerias para arduino usando lo comandos AT hay varias se pueden clonar desde github y probralas y usar la que mas les guste pero la verdad que todas van a ser bastante lentas por los comandos AT la otra opcion es descargarle otro frimware o actualizarlo por alguna falla o tener la ultima version.

descargar el firmware

foro oficial

pagina oficial con firmware actualizados para comandos AT

ultimo firmware que descargue y funciona a 115200 otras versiones creo a 9600 tiene cuatro archivos .bin para subir al esp8266

guia muy buena para bajar el sdk para desarrollo en C + el esptool.py para subir el frimware nuevo bajo linux

Forma rapida y sencilla de hacerlo con esptool.py desde linux yo uso un make file por las direcciones de memoria.
Makefile
PORT:=/dev/ttyUSB0
ESPTOOL_PY:=~/esp8266/esptool/esptool.py

FW_FILE_1:=boot_v1.1.bin
FW_FILE_2:=user1.bin
FW_FILE_3:=esp_init_data_default.bin
FW_FILE_4:=blank.bin
dir_1:=0x00000
dir_2:=0x01000
dir_3:=0x7C000
dir_4:=0x7E000

burn:
($(ESPTOOL_PY) --port $(PORT) write_flash $(dir_1) $(FW_FILE_1) $(dir_2) $(FW_FILE_2) $(dir_3) $(FW_FILE_3) $(dir_4) $(FW_FILE_4))||(true)


para win vi este tutorial no lo he probado
https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware
Bueno tristemente encontre un post interesante el cual menciona que los firmware funcionan mas rapido que la libreria softwareSerial de arduino por el cual esto es un inconveniete para poder debuguear la terminal una opcion para bajarle el baudrate es un frimware de electrodragon o este
http://www.rei-labs.net/esp8266-update-firmware-to-change-the-baudrate/

o usar la libreria recomendada por Dario que utiliza una libreria AltSoftserial que no tiene problema con las velocidades del esp-8266
https://github.com/ssokol/esp8266

Implementacion al ide de arduino para poder programarlo des de ahi como a un arduino
http://makezine.com/2015/04/01/installing-building-arduino-sketch-5-microcontroller/

Prueba y error hay demasiado para estas placas pero son impresionantes,

Sldos...
Ejemplo de uso del esp-01 con un usb-rs232 conexion TCP a google con http protocol usando GET usando la imaginacion podria hacerse muchas cosas usando TCP/IP o UDP/IP y los protocolos de aplicaciones programarlalos con las librerias para comandos AT bajo arduino sobre el esp8266.

Para conectarlo a arduino tenemos que usar un conversor logico 3.3@5.5 y una fuente externa de 200mA aprox.asi que a soldar se ha dicho posteare resultados......

Bueno ahora si funciono :) agregando el logic converter pero aun falta porque el codigo resetea la conexion y no muestra demasiada informacion mañana lo vere ya tengo sueño...

esp-01 ->ttl_logic_conv->arduino_uno(pin 0 y pin 1)
usb-rs232-->arduino_uno(pin 8 - pin 9 - pin gnd)






Codigo de prueba usando esta libreria https://github.com/ssokol/esp8266 por el soporte UDP..


#include "ESP8266.h"
#include <AltSoftSerial.h>
AltSoftSerial debuger;

ESP8266 wifi(WIFI_MODE_STA,115200);
bool cone=false;

int dataCallback(char *data)
{
//data callback
debuger.println(data);
}
void connectCallback(){
cone=true;
}
void setup()
{
debuger.begin(9600);
debuger.println("Inicializacion ESP8266");
  int ret;
char* ret1;
ret = wifi.initializeWifi(&dataCallback,&connectCallback);
ret = wifi.connectWifi("ssid","contraseña");
  ret1 = wifi.ip();
debuger.println(ret1);
ret = wifi.startClient("www.google.com.ar",80,25000);//puerto y timeout
ret = wifi.send("GET /search?q=arduino HTTP/1.1");

wifi.enableBeacon("Mi_ESP");
 }

void loop()
{
wifi.run();
 }
Bueno siguiendo con los avance hay dos modos interesantes de ocupar el modulo como clinte o server de modo standalone o en modo AP
STA (cliente-server) -->AP --dhcp->notebook
AP(dhcp+cliente/server) ---> notebook




#include "SoftwareSerial.h"
//#include "string.h"
SoftwareSerial debug(8,9);
int del=5000 ;


char *esp_at(char *at_cmd){
int i=0;
char cad[300]="\0";
char c;

Serial.write("AT\r\n");
delay(del);

if (Serial.available()){

Serial.write(at_cmd);
delay(del);
while(Serial.available()>0)
{
c=Serial.read();
cad[i]=c;
i++;
}

}

return(cad);
cad[0]='\0';
}


void setup()
{
debug.begin(9600);
Serial.begin(115200);


//stand alone
/*
debug.print(esp_at("AT+CWMODE=1\r\n"));
delay(del);
debug.print(esp_at("AT+CWJAP=\"ssid\",\"pass\"\r\n"));
delay(del);
/*debug.print(esp_at("AT+CIFSR\r\n"));
delay(del);*/
/*
debug.print(esp_at("AT+CIPMUX=0\r\n"));
delay(del);
debug.print(esp_at("AT+CIPSTART=0,\"UDP\",\"192.168.2.255\",8888\r\n"));
delay(del);
debug.print(esp_at("AT+CIPSEND=0,9\r\n"));
delay(del);
debug.print(esp_at("123456789\r\n"));
delay(del);
*/

//AP
debug.print(esp_at("AT+CWMODE=3\r\n"));
delay(del);
debug.print(esp_at("AT+CWSAP=\"ESP\",\"hola\",11,0\r\n"));
delay(del);
debug.print(esp_at("AT+CWDHCP=0,0\r\n"));
delay(del);
debug.print(esp_at("AT+CIPMUX=1\r\n"));
delay(del);
debug.print(esp_at("AT+CIPSTART=1,\"UDP\",\"192.168.4.255\",8888\r\n"));
delay(del);
debug.print(esp_at("AT+CIPSEND=1,9\r\n"));
delay(del);
debug.print(esp_at("123456789\r\n"));
delay(del);


}

void loop(){

}
Tengo un par de problemas con el control de datos enviados en modo broadcast pero funciona :)



********************************30/12/2015***************************************

Esto ya es obsoleto ya una implementacion en el IDE de arduino con el cual ya podemos programar las placas ESP8266 via USART, se viene y ya es posible usar OTA programacion a traves de la conexion WIFI sin cables.
Les recomiendo usar la ultima version del IDE para arduino el cual soporta los esp averiguen sobre OTA.

Y se viene el ESP32 tiene wifi - bluetooth - rf - adc - dac - spi - usart - i2c -i2s - pwm etc gran placa....



SLdos...





No hay comentarios.:

Publicar un comentario