Meteorología Fácil

Instrumental, estaciones y tecnología => Programación de microcontroladores. => JAL => Mensaje iniciado por: David Met en Junio 06, 2015, 10:58:43 PM

Título: Mis pasos con el módulo ESP8266
Publicado por: David Met en Junio 06, 2015, 10:58:43 PM
Hoy comencé mis pruebas con el módulo. ¿Qué creen?  <:[| Una terrible pérdida de tiempo. No pude hacer una comunicación.
Probé haciendo un adaptador USB-Serial con el PIC. No solo no logré comunicación sino que tuve que lidiar con que la PC no me reconocía al PIC  >:[| >:[|

Mi amigo, que tiene Arduino, me hizo el favor de probarlo con los ejemplos que tiene, y mi módulo anda muy bien. Con la propia terminal que trae el Arduino, era hermoso verlo funcionar. Mi módulo vino de fábrica con una velocidad de 9600 baudios; en cambio el módulo de mi amigo, vino a 115200 baudios. :me callo:

Hace escasos minutos, probé con un adaptador USB-SERIAL que compré hace meses, con que me logro conectar con un GPS viejo. Tampoco he podido hacerlo comunicar. El tema es que, cuando me deja enviar datos, no me respeta lo que escribo. Por ejemplo, si presiono la T me manda / . Muchas veces, no me deja mandar nada.

Primer prueba fallida.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: Ricber en Junio 07, 2015, 04:24:04 PM
Nunca es perdida de tiempo siempre se aprende algo de todo y en general siempre es así, nunca funciona la primera vez, pero ya se va a solucionar, hay que insistir y probar y probar y probar hasta que funcione.
Seguro que en el próximo comentario vas tener mejores noticias.
Yo voy a comprar uno pero todavia no lo tengo como para probar a la par tuya y poder ayudarte.
Suerte amigo.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Junio 07, 2015, 09:56:02 PM
Con lo de pérdida de tiempo, me refería a que no logré nada.

Ahora traigo buenas noticias. Al parecer, eran las terminales que estaba usando. Ni el Putty ni el TeratermPro sirven para esto. Me descargué el Advance Serial Port Terminal y anda de 10. Solo que tengo un pequeño programa, le mando un comando y me responde de igual manera, pero sin el OK. No se si es un error de mi software en el PIC (ahora lo estoy usando como adaptador USB-Serial) o el módulo solo me está respondiendo con lo que escribo.
Me parece que hay un comando que desabilita la función espejo. Lo voy a buscar y comento.

EDITO: Lo probé con la terminal de Arduino (me descargué el software) y anda de 10. Me responde muy bien, ya que esta terminal tiene una función que habilita Nueva Línea y Retorno de Carro. Esto lo debe enviar cuando presiono enter.

Ya es tarde para mi. Mañana con tiempo, subiré fotos y el programa que estoy utilizando.
  :\ :\
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: HJ en Junio 08, 2015, 12:04:50 AM
Estoy muy interesado en este modulito, sigo atentamente tus pasos.
Aunque programas en JAL, tu experiencia siempre será útil para todos.

Recuerdo que dijiste mas o menos cuanto costaba en Argentina en uno de los primeros menssajes.
¿donde lo compraste?¿fue por internet?

Saludos
HJ
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: YO en Junio 08, 2015, 08:22:31 AM
Hola a todos!!

CitarRecuerdo que dijiste mas o menos cuanto costaba en Argentina en uno de los primeros menssajes.
¿donde lo compraste?¿fue por internet?

Hola HJ
fijate acá:

Citarhttp://articulo.mercadolibre.com.ar/MLA-560907093-modulo-wifi-esp8266-esp-1-con-stack-tcp-ip-arduino-arm-pic-_JM

Saludos!
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: HJ en Junio 08, 2015, 08:30:13 AM
Gracias por el dato YO.

Saludos
HJ
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: Ricber en Junio 08, 2015, 08:53:38 AM

En esta pagina rusa http://esp8266.ru/esplorer/ hay un programa exclusivo (por lo que entendi) para el modulo ESP8266.
El programa se llama ESPlorer – Integrated Development Environment (IDE) for ESP8266 developers.

(http://i0.wp.com/esp8266.ru/wp-content/uploads/ESPlorer-panels.png?resize=625%2C364)


Funcionara dudo:
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Junio 08, 2015, 01:12:13 PM
Cita de: YO en Junio 08, 2015, 08:22:31 AM
Hola a todos!!

CitarRecuerdo que dijiste mas o menos cuanto costaba en Argentina en uno de los primeros menssajes.
¿donde lo compraste?¿fue por internet?

Hola HJ
fijate acá:

Citarhttp://articulo.mercadolibre.com.ar/MLA-560907093-modulo-wifi-esp8266-esp-1-con-stack-tcp-ip-arduino-arm-pic-_JM

Saludos!

Tal como te indicó YO.
Se lo compré a este vendedor http://articulo.mercadolibre.com.ar/MLA-557498557-arduino-esp8266-serial-wifi-modulo-pic-atmel-_JM

El link que puse anterior (y que YO se tomó la gran amabilidad de buscarlo e indicarte cual fue, ya finalizó) es el articulo re lanzado por el mismo vendedor.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: HJ en Junio 08, 2015, 01:48:56 PM
Gracias David, la duda era con el vendedor ya que he tenido malas experiencias con compras a través de mercado libre...
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: YO en Junio 08, 2015, 04:37:57 PM
Perdonenme muchachos, nunca tengo suerte, o las ofertas finalizan o pongo algo que no sirve   :rayo: __bobin__ >:[|
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: Ricber en Junio 08, 2015, 05:16:16 PM
Aca les paso otra direccion
http://articulo.mercadolibre.com.ar/MLA-563339638-wifi-esp-8266-esp8266-esp-07-serie-antena-gpio-arduino-ptec-_JM
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Junio 09, 2015, 01:19:24 AM
Primer paso exitoso.

Lo que estoy utilizando son:

1) Placa entrenadora (Felixls de Ucontrol). La misma tiene una fuente de 3V3; y conexión USB.
2) Pic 18F4550
3) Módulo ESP8266

La conexión física es de la siguiente manera:

Obtengo 3V3 de la placa entrenadora y alimento al módulo. También a 3V3 coloco el pin CH_PD para habilitar al módulo.
El PIC 18F4550; trabaja a 5V, por lo que hay que garantizar la misma masa para que trabajen en forma correcta. El pin TX del PIC (RC6) va directamente al pin RX del módulo (si, así es, trabaja a 5V); y el pin RX del PIC (RC7) va al pin TX del módulo.
Yo utilizo un protorboard para hacer puentes.

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1030)

Al PIC le grabo el siguiente programa:

-- ------------------------------------------------------------------------------------------------
-- ------------------------------------------------------------------------------------------------
-- Adaptador Serie - USB
-- ------------------------------------------------------------------------------------------------

-- ------------------------------------------------------------------------------------------------
-- Creado Leo Persi
--
-- Iniciado el 6 de Junio de 2.015
--
-- Adaptador USB-Serial
--
-- ------------------------------------------------------------------------------------------------
-- TÍTULO: Adaptador Serie - USB.
-- VERSIÓN: 1.0.
-- AUTOR: Leo D. Persi
-- PROGRAMA PARA PIC: Leo D. Persi.
-- PROGRAMA PARA PC:
-- FECHA: 6 de junio de de 2.015.
--
-- DESCRIPCIÓN:
-- ------------
-- Genera una conexión Serie virtual en la PC.
--
-- ------------------------------------------------------------------------------------------------
--
-- Este programa ha sido generado por jallib.py
-- Plataforma Entrenadora Felixls.
--
-- ------------------------------------------------------------------------------------------------
-- INICIO DEL PROGRAMA.
-- --------------------

include 18f4550 -- Incluímos la librería para controlar nuestro PIC.

-- Aunque el cristal externo es 20 MHz, la configuración es tal que el reloj de la CPU
-- se deriva de reloj PLL 96 Mhz (div2),
-- por lo tanto, establecer la frecuencia de destino para 48 MHz
pragma target clock       48_000_000


-- FUSIBLES:
-- ---------
pragma target PLLDIV        P5          -- divide by 5 - 20MHZ_INPUT
pragma target CPUDIV        P1          -- [primary oscillator src: /1][96 mhz pll src: /2]
pragma target USBPLL        F48MHZ      -- CLOCK_SRC_FROM_96MHZ_PLL_2
pragma target OSC           HS_PLL
pragma target FCMEN         DISABLED
pragma target IESO          DISABLED
pragma target PWRTE         DISABLED    -- power up timer
pragma target VREGEN        ENABLED     -- USB voltage regulator
pragma target VOLTAGE       MINIMUM     -- brown out voltage
pragma target BROWNOUT      DISABLED    -- no brownout detection
pragma target WDTPS         P32K        -- watch dog saler setting
pragma target WDT           CONTROL     -- no watchdog
pragma target CCP2MUX       ENABLED    -- CCP2 pin C1
pragma target PBADEN        DIGITAL     -- digital input port<0..4>
pragma target LPT1OSC       LOW_POWER   -- low power timer 1
pragma target MCLR          EXTERNAL    -- master reset on RE3
pragma target STVR          DISABLED    -- reset on stack over/under flow
pragma target LVP           DISABLED    -- no low-voltage programming
pragma target XINST         ENABLED     -- extended instruction set
pragma target DEBUG         DISABLED    -- background debugging
pragma target CP0           DISABLED    -- code block 0 not protected
pragma target CP1           DISABLED    -- code block 1 not protected
pragma target CP2           DISABLED    -- code block 2 not protected
pragma target CP3           DISABLED    -- code block 3 not protected
pragma target CPB           DISABLED    -- bootblock code not write protected
pragma target CPD           DISABLED    -- eeprom code not write protected
pragma target WRT0          DISABLED    -- table writeblock 0 not protected
pragma target WRT1          DISABLED    -- table write block 1 not protected
pragma target WRT2          DISABLED    -- table write block 2 not protected
pragma target WRT3          DISABLED    -- table write block 3 not protected
pragma target WRTB          DISABLED    -- bootblock not write protected
pragma target WRTD          DISABLED    -- eeprom not write protected
pragma target WRTC          DISABLED    -- config not write protected
pragma target EBTR0         DISABLED    -- table read block 0 not protected
pragma target EBTR1         DISABLED    -- table read block 1 not protected
pragma target EBTR2         DISABLED    -- table read block 2 not protected
pragma target EBTR3         DISABLED    -- table read block 3 not protected
pragma target EBTRB         DISABLED    -- boot block not protected
-- ------------------------------------------------------------------------------------------------
-- CONFIGURACIÓN GENERAL DEL PIC:
-- ------------------------------
include usb_serial -- Incluimos la librería.
usb_serial_init() -- Iniciamos el puerto.
-- ------------------------------------------------------------------------------------------------
-- INCLUIMOS LIBRERÍAS:
-- --------------------
-- ---------------------------
-- Incluimos la librería serie
-- ---------------------------
const bit usart_hw_serial = TRUE -- Modo asincrono
const serial_hw_baudrate = 9600 -- Conexión a 9.600 baudios.
include serial_hardware -- Incluimos la librería.
serial_hw_init() -- Iniciamos el puerto.
-- ---------------------------
include print -- Incluimos la librería Print.

-- ------------------------------------------------------------------------------------------------
-- VARIABLES:
-- -----------
var byte ch -- Recupera el valor recibido por USB
var byte char -- Recupera el valor recibido por el puerto serie.

-- ------------------------------------------------------------------------------------------------
-- MENU PRINCIPAL.
-- ---------------
forever loop
usb_serial_flush() -- Mantengo viva la conexión USB.
   
     if usb_serial_read(ch) then -- Si hay datos recibidos por el USB, lo copio
serial_hw_data = ch -- Y pego en el puerto Serie RS232
end if

if (serial_hw_read(char)) then -- Si hay datos recibidos por el puerto serie RS232 lo copio
usb_serial_data = char -- y pego en el puerto USB
end if

end loop


Lo que hace este programa es crear un adaptador USB-Serial; tal como se compran por internet.
Hay dos configuraciones a tener en cuenta en dicho programa. La primera es la del USB. Con la librería de JALv2, sin manipularlo, la comunicación es de 9600 baudios, 1 bit de parada, sin paridad y 8 bit de datos (no hay noveno bit).
La segunda configuración, que si podemos configurar es la del puerto serie. La elegida fue a 9600 baudios. Se puede modificar en la constante: const serial_hw_baudrate = 9600
La razón de esta velocidad, es porque mi módulo vino configurado con dicha velocidad, pero la de un amigo vino configurada a 12.900 baudios. Si no les anda deben re compilar el programa modificando las velocidades hasta encontrar la correcta.

Una vez cargado el PIC con dicho programa; lo que debemos hacer es conectarla a la PC por USB, chequear el puerto que la PC le dio y abrir la terminal o monitor serie de Arduino. Importante es no tener energizado el módulo (solo para ver la primera conexión y tener la sensación de alegría por el buen funcionamiento).
Hasta lograr hacerlo andar con otra terminal, o si alguien lo logra hacer, debemos descargar el software de arduino solo para trabajar con la terminal.

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1032)
(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1034)

La Terminal debe de estar configurado de la siguiente manera:

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1036)

Esto es para que el monitor se pueda comunicar con el PIC, no con el módulo.
Una vez establecido la comunicación con el PIC, energizaremos al módulo y nos debe aparecer lo siguiente:

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1038)
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Junio 09, 2015, 02:13:26 AM
Lo primero que vamos a enviar es el comando AT. Escribimos en la parte superior AT y presionamos Enter. Nos deberá responder con un OK

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1040)

Lo siguiente, es enviar el siguiente comando AT+CWMODE=3 (tal como lo acabo de escribir) y nos podrá responder con un OK (hizo el cambio) o No change diciéndono que el módulo ya estaba configurado así.

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1042)

Ahora, vamos a buscar nuestra red WiFi, para ello enviaremos el siguiente comando AT+CWLAP; y al cabo de algunos segundos, nos listará las redes que puede encontrar.
Para más información del presente comando (y los demás que veremos) visitar el siguiente link Comando AT 1 (http://meteorologiafacil.com.ar/foros/index.php?topic=916.msg5679#msg5679) y Comando AT 2 (http://meteorologiafacil.com.ar/foros/index.php?topic=916.msg5686#msg5686)

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1044)

Una vez que nos aseguramos de que puede recibir nuestra red, enviaremos el siguiente comando AT+CWJAP="mired","micontraseña" donde mired es el nombre de la red SSID y micontraseña es la contraseña correspondiente. Noten que deben ponerlo entre comillas dobles ""; esto indica que lo que enviaremos es una cadena (string). Luego de unos segundos, nos responderá con un OK si logró unirse a la red o un ERROR si no pudo hacerlo. En caso de que les haya dado error, asegurarse de que hallamos escrito correctamente ambas cosas (SSID y contraseña). Si aún así sigue dándonos error, acercarse más al router (por cuestiones obvias, borré el nombre de la red y su contraseña).

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1046)

Ahora vamos a conocer que IP nos dio.

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1048)

Notaremos que hay dos IP. La primera es la IP propia de nuestro IP. Recordemos que al hacerlo trabajar en cliente y en servidor, tendremos la IP de acceso al módulo como servidor. La segunda IP, es la que nos asignó el router a nuestro módulo.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: Ricber en Junio 09, 2015, 03:05:09 PM
Felicitaciones  ok!
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Junio 09, 2015, 06:50:17 PM
Cita de: Ricber en Junio 08, 2015, 08:53:38 AM

En esta pagina rusa http://esp8266.ru/esplorer/ hay un programa exclusivo (por lo que entendi) para el modulo ESP8266.
El programa se llama ESPlorer – Integrated Development Environment (IDE) for ESP8266 developers.

(http://i0.wp.com/esp8266.ru/wp-content/uploads/ESPlorer-panels.png?resize=625%2C364)


Funcionara dudo:

Si, funciona. Lo que hay que tener en cuenta, es que trabajas directamente con el microprocesador que tiene el módulo. Por ahora desconozco cuanta capacidad de memoria de programa y de memoria RAM para uso personal.
Justamente este módulo es completamente autónomo; ya que no requiere de ningún microprocesador externo, tal como lo estoy usando yo.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: Ricber en Junio 10, 2015, 11:33:20 AM
Entonces la pagina va grabada en la memoria interna del esp8266.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Junio 10, 2015, 11:55:20 AM
Si, y eso lo hace mucho más rápido. :\
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: Ricber en Junio 10, 2015, 12:24:06 PM
Eso es Perfecto, también ahorras mucho circuito y código.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Julio 19, 2015, 01:33:23 AM
Antes de continuar, tengo que hacer una salvedad. Desde el primer paso hasta hoy, hice algunos cambios en mi vida informática. A mi notebook la particioné y le agregué Ubuntu y mantuve windows. Desde ahora voy a trabajar en linux, pero la interface será la misma. Seguiré trabajando con el monitor serie de arduino. Así que todo seguirá igual. Solo van a notar que en la parte superior izquierda, no aparece más el COM10, sino otra leyenda; y las tipografía son diferentes, pero aquel que quiera seguirme con windows, podrá hacerlo sin ningún problema.

Continuación del primer paso.

Lo siguiente que vamos a realizar, es crear un pequeño servidor web. Para ello enviaremos estos dos comando:

AT+CIPMUX=1
AT+CIPSERVER=1,80

El primero es para configurar conexiones múltiples y el segundo habilita el servidor y abre el puerto 80 de la sesión. En ambos casos, nos debe responder con un OK.
NOTA: Para habilitar el servidor, es necesario habilitar las conexiones múltiples, sino al enviar AT+CIPSERVER=1,80 nos dará error.

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1058)

Una vez enviado los comando; podremos ingresar al servidor. Para ello deberán dirigirse hacia un navegador (ya sea de PC o teléfono; lo importante es que estén en la misma red) y tipear la IP que le asignó el router al ESP8266. En el navegador no se verá nada; pero en la terminal serie, veremos algo así:

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1060)

Como puede observar, cuando un navegador se conecta a un servidor, éste le envía ciertos datos al servidor. Por ejemplo, que navegador y su versión estamos utilizando; que lenguaje de navegador tiene; que SO estamos usando; la IP, ect. Son datos que nos pueden ser útil o no.

Como verán, cuando alguien se conectar al servidor, al final de los datos de nuestro navegador, veremos la palabra Link. Esto nos dice que estamos conectado; y por cada refresco o petición que hace el navegador, nos responderá con un Link. Por otra parte, si se corta la conexión, el servidor ESP8266 nos enviará Unlink, indicando que la conexión se ha terminado.

Por ahora, lo más importante es que presten atención al principio de toda la información que nos da el servidor. Nuestro servidor (ESP8266) empieza con la línea +IPD

+IPD,0,368:GET / HTTP/1.1

En este caso, nos dice que la conexión es echa con la sesión 0; que a continuación recibiremos 368 caracteres; para luego informarnos de todo lo demás antes mencionado.

¿Qué pasa si pido con dos navegadores en forma simultánea? Veremos:

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1062)

Simplemente genial. Hasta informa que tipo de celular estoy utilizando. LG-E465g
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: Ricber en Julio 19, 2015, 02:55:28 PM
Excelente, ya compre un modulo asi que estas pruebas tuyas me vienen
como anillo al dedo. ok! :\
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Julio 19, 2015, 04:27:40 PM
Tengo problemas con JAL nuevamente a la hora de hacer un puerto serie virtual por USB. Agrego una función y la PC no me lo reconoce print_string(serial_hw_data,dato) Estoy viendo dos cosas.

a) encontrar el error de porqué no me lo reconoce.
b) pasarme a C18.

Pero me parece que terminaré en el plan b.
Yo se que teniendo el servidor funcionando, no tiene sentido tener una conexión USB con la PC, pero lo necesito para saber como me está enviando los datos; ya que no logro enviar nada a un navegador.

Veremos que pasa.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: Ricber en Julio 20, 2015, 09:17:09 AM
Cambiar de lenguaje de programación no es nada practico, si es solo para
hacer algunas pruebas tal vez podrías usar la puerta serie y un adaptador
rs232 a usb.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Julio 20, 2015, 10:37:33 AM
Si, tienes mucha razón.
De todas maneras, logré hacerlo andar, pero no del todo bien. Mi idea es saber como acepta un comando enviado desde el PIC (vah, es igual desde la terminal, pero como las terminales incluyen, al final, algunos datos como retorno de carro y nueva línea, necesitaba verlo por mi mismo).

Ahora subo los avances.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Julio 20, 2015, 09:52:30 PM
Segundo paso. Servidor básico.

El objetivo de este paso, es lograr que el PIC 18F4550 configure, sin intervención nuestra, al ESP8266 como servidor web. Para ello, debe enviar diferentes comandos y de la forma correcta.
Primero podré el programa completo, y luego explicaré las partes más importantes:

-- ------------------------------------------------------------------------------------------------
-- Servidor web básico
-- ------------------------------------------------------------------------------------------------

-- ------------------------------------------------------------------------------------------------
-- Creado Leo Persi
--
-- Iniciado el 19 de Julio de 2.015
--
-- ------------------------------------------------------------------------------------------------
-- TÍTULO: Servidor web básico con adaptador Serie - USB.
-- VERSIÓN: 1.0.
-- AUTOR: Leo D. Persi
-- PROGRAMA PARA PIC: Leo D. Persi.
-- PROGRAMA PARA PC:
-- FECHA: 20 de julio de de 2.015.
--
-- DESCRIPCIÓN:
-- ------------
-- Configura al módulo ESP8266 en forma de servidor. Además, genera una conexión Serie virtual en la PC.
--
-- ------------------------------------------------------------------------------------------------
--
-- Este programa ha sido generado por jallib.py
-- Plataforma Entrenadora Felixls.
--
-- ------------------------------------------------------------------------------------------------
-- INICIO DEL PROGRAMA.
-- --------------------
include 18f4550 -- Incluímos la librería para controlar nuestro PIC.

-- Aunque el cristal externo es 20 MHz, la configuración es tal que el reloj de la CPU
-- se deriva de reloj PLL 96 Mhz (div2),
-- por lo tanto, establecer la frecuencia de destino para 48 MHz
pragma target clock       48_000_000


-- FUSIBLES:
-- ---------
pragma target PLLDIV        P5          -- divide by 5 - 20MHZ_INPUT
pragma target CPUDIV        P1          -- [primary oscillator src: /1][96 mhz pll src: /2]
pragma target USBDIV        P2          -- CLOCK_SRC_FROM_96MHZ_PLL_2
pragma target OSC           HS_PLL
pragma target FCMEN         DISABLED
pragma target IESO          DISABLED
pragma target PWRTE         DISABLED    -- power up timer
pragma target VREGEN        ENABLED     -- USB voltage regulator
pragma target VOLTAGE       MINIMUM     -- brown out voltage
pragma target BROWNOUT      DISABLED    -- no brownout detection
pragma target WDTPS         P32K        -- watch dog saler setting
pragma target WDT           CONTROL     -- watchdog software controlled
pragma target CCP2MUX       pin_C1      -- CCP2 on pin C1
pragma target PBADEN        DIGITAL     -- digital input port<0..4>
pragma target LPT1OSC       LOW_POWER   -- low power timer 1
pragma target MCLR          EXTERNAL    -- master reset on RE3
pragma target STVR          DISABLED    -- reset on stack over/under flow
pragma target LVP           DISABLED    -- no low-voltage programming
pragma target XINST         ENABLED     -- extended instruction set
pragma target DEBUG         DISABLED    -- background debugging
pragma target CP0           DISABLED    -- code block 0 not protected
pragma target CP1           DISABLED    -- code block 1 not protected
pragma target CP2           DISABLED    -- code block 2 not protected
pragma target CP3           DISABLED    -- code block 3 not protected
pragma target CPB           DISABLED    -- bootblock code not write protected
pragma target CPD           DISABLED    -- eeprom code not write protected
pragma target WRT0          DISABLED    -- table writeblock 0 not protected
pragma target WRT1          DISABLED    -- table write block 1 not protected
pragma target WRT2          DISABLED    -- table write block 2 not protected
pragma target WRT3          DISABLED    -- table write block 3 not protected
pragma target WRTB          DISABLED    -- bootblock not write protected
pragma target WRTD          DISABLED    -- eeprom not write protected
pragma target WRTC          DISABLED    -- config not write protected
pragma target EBTR0         DISABLED    -- table read block 0 not protected
pragma target EBTR1         DISABLED    -- table read block 1 not protected
pragma target EBTR2         DISABLED    -- table read block 2 not protected
pragma target EBTR3         DISABLED    -- table read block 3 not protected
pragma target EBTRB         DISABLED    -- boot block not protected

WDTCON_SWDTEN = OFF                     -- disable watchdog

-- ------------------------------------------------------------------------------------------------
-- CONFIGURACIÓN GENERAL DEL PIC:
-- ------------------------------
include usb_serial -- Incluimos la librería.
usb_serial_init() -- Iniciamos el puerto.
-- ------------------------------------------------------------------------------------------------
-- INCLUIMOS LIBRERÍAS:
-- --------------------
-- ---------------------------
-- Incluimos la librería serie
-- ---------------------------
const bit usart_hw_serial = TRUE -- Modo asincrono
const serial_hw_baudrate = 9600 -- Conexión a 9.600 baudios.
include serial_hardware -- Incluimos la librería.
serial_hw_init() -- Iniciamos el puerto.
-- ---------------------------
include print -- Incluimos la librería Print.
include delay

-- ------------------------------------------------------------------------------------------------
-- VARIABLES:
-- -----------
var byte ch -- Recupera el valor recibido por USB
var byte char -- Recupera el valor recibido por el puerto serie.

-- ------------------------------------------------------------------------------------------------
-- CADENAS VARIAS:
-- ---------------
-- CONFIGURACIÓN ESP8266
-- ---------------------
const byte modo[] = "AT+CWMODE=3\r\n"
const byte mulconex[] = "AT+CIPMUX=1\r\n"
const byte servidor[] = "AT+CIPSERVER=1,80\r\n"
const byte unirse[] =  "AT+CWJAP=\"nombreRED\",\"Contraseña\"\r\n"

-- ------------------------------------------------------------------------------------------------
-- MENU PRINCIPAL.
-- ---------------
delay_1ms(500)
usb_serial_flush()
delay_1ms(500)
print_string(serial_hw_data,modo)
delay_1ms(500)
print_string(serial_hw_data,mulconex)
delay_1ms(500)
print_string(serial_hw_data,servidor)
delay_1ms(500)
print_string(serial_hw_data,unirse)

forever loop
usb_serial_flush()

    if usb_serial_read(ch) then -- Si hay datos recibidos por el USB, lo copio
serial_hw_data = ch -- Y pego en el puerto Serie RS232
end if
if (serial_hw_read(char)) then -- Si hay datos recibidos por el puerto serie RS232 lo copio
usb_serial_data = char -- y pego en el puerto USB
end if

end loop


Es poco lo que se ha modificado.
Lo primero que hice es crear varias cadenas con la configuración necesaria para el ESP8266. Las cadenas son sencillas:

const byte modo[] = "AT+CWMODE=3\r\n"
const byte mulconex[] = "AT+CIPMUX=1\r\n"
const byte servidor[] = "AT+CIPSERVER=1,80\r\n"
const byte unirse[] =  "AT+CWJAP=\"nombreRED\",\"Contraseña\"\r\n"


Hay que tener en cuenta dos cosas muy importante:

1)\r\n
  Esto, es interpretado por JALv2 y envía el valor correcto en ASCII para enviar retorno de carro; y nueva línea. Es necesario que sea establecido en ese órden

2) Para poder enviar las comillas, se debe anteponer la contra barra \ De ahí la rara configuración de la cadena unirse[]

Esto es necesario llamarlas una cola vez, por lo que se debe excluir del bucle principal del programa. Le he dado una demora, para que se configure el ESP8266 antes de enviarle el otro comando. No es la forma correcta, ya que deberíamos chequear si nos envía un OK, ERROR. En todo caso, se debería actuar en la forma correcta. No lo he podido hacer así, porque me consume ciclos, y la PC no me reconoce al PIC; por lo que lo dejaremos para más adelante, cuando no utilicemos al PIC como adaptador USB-SERIAL

Cuando conecté todo y el PIC empezó a enviar datos, también recibía datos; y esto hizo que la PC (en UBUNTU) tarde en reconocer al PIC. No obstante, una vez terminado todo el proceso, la PC lo reconocío.
Lo primero que hice fue enviar el comando AT+CIFSR para saber que IP tengo. Al principio me envió un OK ¿? pero al enviarlo por segunda vez, me respondió en forma correcta:

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1064)

Acto seguido, entré a un navegador y accedí a la dirección del ESP8266 y por el monitor serie, recibí la información correcta:

(http://meteorologiafacil.com.ar/foros/index.php?action=dlattach;topic=917.0;attach=1066)

Lo importante es que ya sabemos como el PIC debe enviar los comandos para configurar al módulo. Paso siguiente, será armar una web muy básica para que muestre un dato una vez que se ingresa con un navegador. Y en un tercer paso, será hacer lo mismo pero sin la particularidad de que el PIC sea un adpatador SERIE - USB. Esto nos permitirá un mejor programa (y que además, es inútil tenerlo para esto)
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Agosto 04, 2015, 06:59:25 PM
Lamentablemente, no logro hacer andar la web.
He decidido no hacer una página web en el pic y que al mismo tiempo sea un adaptador USB-SERIAL. Veré si logro hacerlo funcionar.

Lo que voy a hacer, es cargar el primer programa, pedirle al ESP8266 que me informe su MAC, y desde el router, fijarle una IP; así siempre sabré a que dirección conectarme.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Agosto 11, 2015, 06:56:37 PM
Y sigo.
Por alguna razón que no entiendo, el ESP8266 no me informa que MAC tiene. Probé con con estos comandos pero nada. Siempre me responde con un ERROR:

AT+CIPSTAMAC?

AT+CIPSTAMAC? = mac

donde mac es un string que equivale a la MAC del dispositivo.
Intenté asignárselo yo, pero tampoco me funcionó.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: Ricber en Agosto 12, 2015, 09:47:29 AM
Hola David

Estuve mirando algunos tutoriales y encontré que ese comando que estas probando
no funciona bien si el firmware es 00160901

Note:
This command doesn't seem to work on firmware 00160901

Con AT+GMR  deberías ver la version del firmware tal vez sea ese el problema.
Título: Re:Mis pasos con el módulo ESP8266
Publicado por: David Met en Agosto 12, 2015, 11:10:28 AM
Gracias por el dato.
Lo voy a chequear. ok!