Mostrando las entradas con la etiqueta ESP. Mostrar todas las entradas
Mostrando las entradas con la etiqueta ESP. Mostrar todas las entradas

viernes, 24 de febrero de 2017

esp8266 - Estacion metereologica sensores + api-json openweathermap

Este proyecto nacio por mi interes por el cambio climatico que estamos teniendo, aunque se dice que el efecto invernadero es mentira sin palabras ja.

 Esta estacion metereologica comenzo con sensores reales

Servidor estacion de modo local
microcontrolador 24bits / esp-8266 esp-12
Medicion de temperatura y humedad: DHT-22
Medicion de presion atmosferica: BMP-180
Punto de rocio a presion atmosferica - Calculado
Pronostico - Calculado (mejorar)




 Obtencion de request a API
No me agradan las API pero luego de leer un muy buen post

 https://cirujadigital.wordpress.com/2017/01/11/obteniendo-informacion-de-internet-para-nuestro-proyecto-iot-apis-del-clima-geolocalizacion-fechahora-and-other-issues/

como que me dio curiosidad y admito que tiene una potencia increible pero dependemos de tener internet.

Api Geolocalizacion de google
Obtenemos los datos de georeferencia latitud y longitud desde donde generemos la peticion ip, o torre celular (funciona bien en mi caso no detecta antena pero me da la posicion por ip bastante acertada)

request(post-https) --->devuelve un json -->lo parseamos con arduino-json

Api Openweathermap
Obtenemos los datos del clima  a partir de pasarle la latitud y longitud obtenida de la api de google

request(get-http)  --->devuelve un json -->lo parseamos con arduino-json

Herramientas a usar
Rest Clinet para firefox para hacer las pruebas


Deben registrarse en ambas api para obtener las api_key y revisar la documentacion par obtener los datos.

openweathermap  http://openweathermap.org/api

GET http://api.openweathermap.org/data/2.5/weather?lat=XXX&lon=XXX&APPID=(aca va su api_key)e&units=metric&lang=es


Geolocalizacion api google  https://console.developers.google.com

Documentacion de su uso
https://developers.google.com/maps/documentation/geolocation/intro?hl=en_US

Esta es diferente usamos el metodo POST

POST https://www.googleapis.com/geolocation/v1/geolocate?key=("aca va su api_key")
Head
Content-Type: application/json
Body


{
  "homeMobileCountryCode": 310,
  "homeMobileNetworkCode": 410,
  "radioType": "gsm",
  "carrier": "Vodafone",
  "considerIp": "true",
  "cellTowers": [
    // See the Cell Tower Objects section below.
  ],
  "wifiAccessPoints": [
    // See the WiFi Access Point Objects section below.
  ]
}


Ahora con los datos de respuesta en formato JSON usamos la libreria arduino-json el cual tambien tiene un generador de variables dinamicas

https://bblanchon.github.io/ArduinoJson/assistant/




Aca dejo la implementacion de las api para la estacion metereologica no finalizada aun.



Estacion con sensores
sudo git clone https://github.com/pablinn/est_met.git
https://github.com/pablinn/est_met

Uso de API
sudo git clone https://github.com/pablinn/api_google.git

https://github.com/pablinn/api_google

Version final implementar todo mejorar la geolocalizacioncon un GPS real..

Saludos..


Mejoras implemente el modo deepsleep gracias a la ayuda del grupo esp8266 de facebook, con buenos resultados pero en el grupo me comentaban que el consumo deberia ser menor del orden de los uA

modo normal conectado 80mA
modo deepsleep 8mA deberia ser 10uA
Pero el regulado as1117 drena alrededor de 7.5 a 8 mAlo que nos da una vida de bateria aprox.

Segun este blog
http://arduinoamuete.blogspot.com.ar/2017/01/modo-deep-sleep-en-esp8266.html

ESP.deeepsleep( uint32_t uS,int modo de reinicio)

Machete :)
1 minuto --> 60 segundos S
1 minuto ->  60000 milisegundos mS (60exp3)
1 minutos -> 60000000 microsegundos uS (60exp6)

 
El maximo valor uint32_t seria 2^32 = 4294967296 uS = 71min , 32 seg

 4294967296/ 60000000=71 minutos
 
//*gpio16 conectado a reset

if (millis() >= 60000) {//1 min
      ESP.deepSleep(300 * 1000000, WAKE_RF_DEFAULT);//3min
    
     }
//*


v_BAT [v] * a_BAT [ah] / vc_BAT [v] * ac_BAT  [a]
7.4 V * 0.850 AH / 3.3 V * 0.082 A =23.2 Hs
7.4 V * 0.850 AH / 3.3 V * 0.008 A =238 Hs  :)
las 238 hs son en teoricas ya que el consuma oscilaria entre 8mA a 80mA por lo que depende del tiempo

t <tiempo de actividad (mayor consumo 80mA)
t >tiempo de deepsleep (menor consumo 8mA)

En teoria este calculo lo saque de un blog
=(v_bat / corr_work ) * (tiempo_sleep / tiempo_work)

=(850mAH /80mA )* (300s / 60s)

=53 Hs
Si extendemos el tiempo de deepsleep aumentamos las horas de autonomia

=(850 /80 )* (600 / 60)
=106hs

=(850 /80 )* (2000 / 10)  --->2000/60 = 33 minutos sleep x 10 seg work
=2125 hs



Probando la api de thingspeak esta bastante buena y podemos para realizar tendencias..


martes, 29 de marzo de 2016

Framework Platformio + Geany + Raspberry PI

Hace un tiempo me quede sin PC sin notebook y buscanba la forma de programar diferentes microcontroladores usando el IDE de arduino bajo RPI (Raspberry PI) pero no hay version del cross-compiler para arm para poder programar los ESP.
Buscando encontre de casualidad Platformio un cross-compiler desde linea de comandos para diferentes entornos de trabajo Atmel, esspresif entre otros y la verdad es que me sorprendio logre programar arduinos y esp8266 sin problemas desde un RPI.
Tiene un excelente control de librerias e instalacion de lo que nesecites es mas que recomendable.
Tiene un par de inconvenientes el IDE grafico para RPI estoy usando GEANY debe haber otro pero realmente estoy comodo programando de esta forma.

Estube realizando pruebas con arduino uno, mega y un esp-01 y andubo perfecto, podemos cargar el firmware de OTA o webupdate y actualizar los esp de forma remota configurando la IP.


Instalacion siguiendo la info de la pagina web http://platformio.org/#/ y otros blogers
***********************************************
si no esta instalado easy_install
sudo apt-get install python-setuptools
luego
sudo easy_install pip (gestor de paquetes en python)
sudo pip install platformio
***********************************************

Tiene algunas complicaciones porque hay q usar la terminal pero es mas de mi agrado:
Crear la carpeta

***********************************************
sudo mkdir arduino/proy_01 (CARPETA DE PROYECTOS)
***********************************************

inicializar la placa tiene muchas opciones pero las podes listar y ver cual necesitas

***********************************************
platformio init --board esp01-1M (ESP8266 CON 1M ojo las esp-01 de color azul claro son de 512K)
***********************************************

otro ejemplo:
***********************************************
platformio init --board uno  (arduino uno)
***********************************************


poner el codigo en la carpeta genera un .ini y dos carpetas src y lib

***********************************************
-platformio.ini (archivo de configuracion)
-src(adentro va el .ino o .cpp)
-lib(librerias externas o propias)
***********************************************

Compilar generar el firmware en modo local.
***********************************************
platformio run
***********************************************

Subir o descargar el firmware al uC
***********************************************
platformio run --target upload
***********************************************

Limpiar archivos compiladodos y temporales.
***********************************************
platformio clean
***********************************************

Todo esto se puede hacer desde geany y compilar desde ahi... :) solo hay que configurar en opciones de compilacion.

compile=platformio run
build=platformio run --target upload
make object=platformio clean

y seleccionar la sintaxis de color de C++ y compilar seleccionando el archivo .ini









Voy a ir actualizando porque me siento bastante comodo con platformio y raspberry PI.
Sldos...

Siguiendo con las pruebas me consegui un esp-12, me costo programarlo pero funciono bien, unos de los problemas es la memoria no sabes si tienen 512K-1M o 4M y vienen con el protector para EMF el cual no te deja ver la flash a menos que lo desarmes.

Voy a tratar de analizar y probar un poco la arquitectura asi me queda en el blog...

Tamaños de memoria SPI

***********esto es del foro del esp822 *******************************
# SPI_SIZE_MAP
# 0 : 512 KB (256 KB + 256 KB)
# 1 : 256 KB
# 2 : 1024 KB (512 KB + 512 KB)
# 3 : 2048 KB (512 KB + 512 KB)
# 4 : 4096 KB (512 KB + 512 KB)
# 5 : 2048 KB (1024 KB + 1024 KB)
# 6 : 4096 KB (1024 KB + 1024 KB)
*******************************************************

esp8266-01 azul claro 512k (no funcionan para OTA)



esp8266-01 negro o verde obscuro  1M (si funcionan pero tienen poco espacio)


esp8266-12 azul claro (1M - no estoy seguro si alguien lo sabe he visto q les cambian la memoria de 512k a 1M  no hay mucha info muchas dudas, yo le descargue con la opcion esp01_1m pero no estoy seguro ya que hice una prueba con un DHT11 y me muestra un float y no hay conversion a entero esto lo tengo que revisar creo q son de 512k)


esp8266-12E verde oscuro AI (4M de memoria eeprom)
esp12E - Pinout

Diagrama de ingenieria inversa de la version de AI-Thinker


esta bueno agregarla un capacitor en la alimentacion por pequeñas variaciones en los consumos de corriente para evitar se active el WDT y se resetee.

Programando el esp12



Programando el esp12E(no lo probe aun)



Bueno programe un esp12 como indica el datasheet

1-reset no lo use aun pero es necesario una ves descargas el firmware, sacar jumper y debes resetearlo
2-ADC (convertidor analogico a digital soporta 1v)
3-CH_PD (enable chip va a 1 yo use una resist. 101R - 100ohm)
4-GPIO16 usado para el modo deep_sleep (no probado aun)
5-GPIO14
6-GPIO12
7-GPIO13
8-VCC (3.3 Vcc) va a 1
9-GND
10-102R smd a GND va a 0
11-GPIO2
12-GPIO0 este se usa para ponerlo en modo programacion va a 0 con un jumper
13-GPIO5
14-GPIO4
15-TX aca va cruzado a RX (en los datasheet sale diferente chequear)
16-RX aca va cruzado a TX (en los datasheet sale diferente chequear)

Entonces:
*******************************************************
Flash Mode
vcc CH_PD  GPIO0 GPIO15
 1        1           0            0

Boot Mode
vcc CH_PD GPIO0  GPIO15
1        1             X        0

X- a nada libre o a VCC
*******************************************************

Funciono asi es mas al GPIO2 lo use para leer un DHT11 otra cosa que lei y lo voy a poner en practica es el modo bajo consumo o "deep sleep mode" algo que es muy util bajar el consumo tambien tiene un WDT (watdog timer) muy util cuando se cuelga el uP.

La idea es ponerlo a dormir y despertarlo (deep sleep mode) por decirlo asi con:

un timer interno (que lea cada 1hs un DHT22 ej. )
una interrupcion externa(arduino - rpi)
via UART (Arduino - RPI - uP - uC - PC con ftdi )
WDT (bueno este es interesante teoricamente se genera un pulso el cual si no existe resetea el uC lo he usado en PLC se genera el pulso sobre un rele/timer si falla el PLC chau pulso y activa una proteccion, aca es algo diferente porque es interno pero se podria crear un WDT con un GPIO generas el pulso y con algun arduino si deja de leerlo activar el respaldo)

Administracion de energia(sacado del datasheet de espressif)



OFF
si se pone a 0 CH_PD el RTC se desabilita y se borran los registros.

DEEP_SLEEP
Solo el RTC se alimenta el resta esta desconectado y mantiene datos basicos dela coneccion WIFI

SLEEP
El RTC queda operando algun evento para despertarlo (MAC - host - RTC timer - ext int) lo pone en modo de funcionamiento

WAKEUP
en este modo funciona el crystal oscilador y los PLL todo habilitado

ON
EN este modo el clock opera a toda velocidad se puede usar la instruccion WAITI para operar a velocidad minima.

:) mas que interesante no ?




Detalles a tener en cuenta para programar(no hacer lo que yo jaja)

Algunos errores al descargar el firmware con PlatformIO, fueron ocasionados por el cableado arme
todo en una plaqueta y funciona bien, tambien fallo la descarga por que tenia una terminal serie abierta leyendo por el puerto usb /dev/USB0, o sea usaba el archivo, (terminal minicom no aconsejada pero funciona ya encontrare alguna mejor).

*usar plaquetas para prototipos
*usar el menor cableado posible y que este bien firme
*no dejar abierta las consolas serie (arduino ide - minicom - putty etc.)

Saludos....

lunes, 3 de agosto de 2015

Arduino - Comunicación con SIM800l GPRS/GSM

Resumen de funcionamiento shield sim800l, como interface arduino, esp8266, esp32 u otro microcontrolador, se puede utilizar para un sistema de seguridad, comunicacion gsm, scanner, etc.

Ejemplos  y casos de uso.

1)Sistema de seguridad
PIR --> Arduino ---> sim800L    )))  (gprs/gsm)   (((( "celular 3G"

2)Sistema de seguridad 2(nodos wifi bajo consumo )

PIR_1 -->esp-01 -))))        ((((--router_wifi_red_domotica--)))     ((((-esp-12--sim800l-)))) celular 3G
PIR_2 --->esp-01-))))                                                                                 
PIR_3 --->esp-01-))))

3)Sistema de comunicacion y reconocimiento de voz

maple_mini --->sim800l  ))) gprs/gsm/internet
                      --->esp-12  )))wifi P2P/router
                      --->easy-VR "reconocimiento de voz"
                      -->HC-05 programacion por bluetooth o conexion a celulares
                      --->GPS
                      ---->RF transceiver de rf 2.4ghz red domotica

Este es el breakout sim800l con comunicacion serie el cual se puede conectar a un uC 'microcontrolador', arduino, esp8266, raspberry pi etc, o a un programador usb-rs232
Hay varias versiones de este  CI , sim800, sim900 y el adaptador para smd, se puede armar pero ya hay breakout desarroladas, por costos muy bajos.
El breakout sim800l que consegui no tiene salida ni entrada de audio por lo cual me limita solo a realizar llamadas y enviar y recibir mensajes.

Hoja de datos
http://www.seeedstudio.com/wiki/LoNet_-_GSM/GPRS/GPS_Breakout


  • Quad-band 850/900/1800/1900MHz( cuatribanda para 2G y 3G)
  • GPRS multi-slot class12 connectivity: max. 85.6kbps(down-load/up-load)
  • GPRS mobile station class B
  • Controlled by AT Command (3GPP TS 27.007, 27.005 and SIMCOM enhanced AT Commands)
  • Supports charging control for Li-Ion battery
  • Supports Real Time Clock
  • Supply voltage range 3.4V ~ 4.4V (muy importante recomendado 4.2)
  • Integrated GPS/CNSS and supports A-GPS
  • Supports 3.0V to 5.0V logic level (conversion TTL 3vcc a 5vvcc)
  • Low power consumption, 1mA in sleep mode
  • Supports GPS NMEA protocol
  • Compact size 27mm x 46mm x 10mm
  • Standard SIM Card



  • Diagrama de conexion
    este diagrama de conexion es bastante bueno tuve inconvenientes para hacerlo funcionar consejo hay que alimentarlo con una fuente estable alrededor de 4.2vcc@800mA ya sea una bateria LIPO o una fuente regulada no usar la alimentacion de arduino porque funciona pero no adecuadamente ya que el sim800 tiene un ESD el cual si detecta baja o alta tension se desconecta o reinicia... (Proteccion por alto o vajo voltaje) el cual es muy buena funcion ya que nos asegura no dañarlo muy importanto leer lo que responde por la consola serie


    Fuente switching  ---->sim800l -->arduino o esp8266



    El primer ejemplo lo conectas direscto al uC le bajas el codigo de FONA o el tuyo y ya esta.
    El segundo te conectas con un USB-FT232 y desde una consola ya sea en win o linux abris la terminal en /dev/usb te conectas con baudrate 9600 y tenes que ingrasar los comandos AT.


    PDF con todos los comandos AT
    http://www.seeedstudio.com/wiki/images/5/51/SIM800_ATCommand_Manual_V1.02.pdf

    Aca hay muhca info.
    http://www.seeedstudio.com/wiki/LoNet_-_GSM/GPRS/GPS_Breakout

    En cuanto a librerias deberian descargar la ultima verision del IDE para arduino ya que hubieron muchos cambios en las librerias y soporte para hardware han agregado el soporte para los esp8266 esta mi querido souliss(framework domotica) y muchas otras placas

    Esta libreria de ADAFRUIT es recomenda ya que esta completa poder realizar llamadas enviar sms y conectarte a internet solo funciona con la version del IDE nueva de arduino
    https://github.com/adafruit/Adafruit_FONA_Library (ya tiene implementado los comandos AT)
    este es un codigo de ejemplo para mi alrma ya que fona tiene cosas que no voy a ocupar pero para hacer pruebas y sacar el codigo que necesitas te sirve.

    https://github.com/pablinn/sim800_v2

    Video demo de sim800l usando FONA_Library


    Sldos.....


    Agregado de protocolos TCP
    Desarrollo de libreria con soporte "HTTP GET y POST" le falta mucho pero me gusta como esta quedando.

    *modo debug o logico(ver las respuestas AT o solo los estado True o False) para poder hacer tu programa basado en estados(maquina de estados )
    *generar una clase
    *soporte para TCP/IP o UDP/IP
    *"HTTP GET o POST "

    https://github.com/pablinn/sim800v3.git


    Saludos....

    Envio de mensajes
    Una forma simple y sencilla de mandar mensaje con la librería que estoy haciendo de ultima borra el resto y deja la que necesitas me imagino que es para automatización.

    4.2@800mA (estables con esto y ya lo charle en el grupo de whatsapp debe ser fijo no debe variar sino se desconecta de la red)

    AT+CBC   --> indica la tension 0,100,4212 (0, 100 % carga de la bateria , tension en milivolt)

     una vez conecatado a la red demora 3 segundos revisar con

    AT+COPS=? redes disponibles
    AT+COPS?  red conectada
    AT+CGREG?

    Mandar mensaje conectado a la red movil (unifon - movistar / CTImovil - claro)

    AT+CMGF=1
    AT+CMGS=\"+54299xxxxx\"  (el cel es con cod \"+pais-area-celular\")
    te devuelve >
    mandas el msj y terminas con control Z
    escribir (0x1A)

    en la libreria sim800v3 el cual esta funcionando la probamos en varios celulares un compañero colombiano logro automatizar una cerradura desde su celular asi que funciona si no es otra cosa..
    Ademas te podes conectar a internet usando TCP/IP UDP/IP HTTP  FTP EMAIL POP funciones de RADIO FM :) aun no termino ya estoy mareado :O

        //CMGS_SMS("+54299xxxxx","Hola Mundo");

    tener en cuenta la tension revisar con AT+CBC varias veces no debe variar o se resetea o desconecta.

    Saludos.

    Bueno nada nuevo a lo mucho que hay solo el montaje final un arduino nano los dos PIR por las interrupciones del nano para ponerlo en modo sleep y ahorrar el consumo de la bateria.



    Saludos..

    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...


    
    

    miércoles, 4 de marzo de 2015

    esp8266 - Descargando codigo en C


    Hola dejo este aporte para todos los que tienen un esp8266 esp-01 y si tienen el esp-12 mejor aun esta basado en el trabajo de cnLohr es una guia de como hacer nuestros propios firmware en C para descargar al esp8266 o sea no se nesecita un arduino para hacerlo funcionar esta basado en los SDK del esp8266 y un cross-compiler en C yo lo probe en ubuntu y funciona vi otro trbajo hecho en windows pero no lo he probado.







    esta es la guia de instalacion del cross-compiler para linux esta muy bien explicada y resumida hacerlo con la info oficial es imposible lleva tiempo pero funciona muy bien con esta guia :)

    https://github.com/cnlohr/ws2812esp8266

    esto lo encontre hace poco es la info del SDK y API que ya tiene incorporado para programar en C 

    https://drive.google.com/file/d/0Bwm4smy8r1hOMzl0ajNtQVdVTVk/view?usp=sharing

    bueno espero relizar mas avances con la version esp-12...