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.
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.
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.
:\ :\
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
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!
Gracias por el dato YO.
Saludos
HJ
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:
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.
Gracias David, la duda era con el vendedor ya que he tenido malas experiencias con compras a través de mercado libre...
Perdonenme muchachos, nunca tengo suerte, o las ofertas finalizan o pongo algo que no sirve :rayo: __bobin__ >:[|
Aca les paso otra direccion
http://articulo.mercadolibre.com.ar/MLA-563339638-wifi-esp-8266-esp8266-esp-07-serie-antena-gpio-arduino-ptec-_JM
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 loopLo 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)
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.
Felicitaciones ok!
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.
Entonces la pagina va grabada en la memoria interna del esp8266.
Si, y eso lo hace mucho más rápido. :\
Eso es Perfecto, también ahorras mucho circuito y código.
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
Excelente, ya compre un modulo asi que estas pruebas tuyas me vienen
como anillo al dedo. ok! :\
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.
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.
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.
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 loopEs 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)
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.
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ó.
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.
Gracias por el dato.
Lo voy a chequear. ok!