Autor Tema: duda con modulo esp8266 + pic  (Leído 3382 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
duda con modulo esp8266 + pic
« en: 11 de Julio de 2016, 18:35:45 »
hola a todos estoy experimentando con el modulo esp8266 para prender un led desde la PC por wifi y el problema que tengo es que cuando desde la pc le mando un caracter al modulo la interrupcion no se ejecuta y no toma el caracter que le envie, este es el codigo:
Código: [Seleccionar]
#include <16F88.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                    //Internal RC Osc
#FUSES PUT                      //Power Up Timer
#FUSES PROTECT                  //Code protected from reads
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#byte PORTA=0X05
#use delay(int=4000000,RESTART_WDT)
#use rs232(uart1, baud=9600)//usart1 -->ajuste de XMIT y RCV para la USART 1
int i=0;
char Cadena[60]="";
char ch;
int1 Detectado=0,Detectado2=0;
void setup()
{
printf("AT+CWMODE=3\r\n");
         Delay_ms(500);
printf("AT+CIPMUX=1\r\n");
         Delay_ms(500);
printf("AT+CIPSERVER=1,1336\r\n");
         Delay_ms(500);
}
#int_rda
void rd_isr(void)//función de interrupción por recepción de datos USART
{
   ch=getc();
   //output_TOGGLE(PIN_B1);
   Cadena[i]=ch;
   i++;
   if(i>600)i=0;
   if(ch=='\n')i=0;
   
}
void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   set_tris_b(0x04);            //portb como salida
   set_tris_a(0x21);   //porta como Entrada
   enable_interrupts(int_rda);
   enable_interrupts(GLOBAL);   //activadas interrupciones
   output_Low(PIN_B1);
   output_Low(PIN_B0);
   while(1){
         if((Cadena[0]=='+')&&(Cadena[1]=='P'))
         if(Detectado==1)
        {
        output_high(PIN_B1);
        Detectado=0;
        }
        if((Cadena[9]=='O')&&(Cadena[10]=='F')&&(Cadena[11]=='F')) Detectado2=1;
         if(Detectado2==1)
        {
        output_low(PIN_B1);
        Detectado2=0;
        }
         printf("AT+CWMODE=3\r\n");
         Delay_ms(500);
         printf("AT+CIPMUX=1\r\n");
         Delay_ms(500);
         printf("AT+CIPSERVER=1,1336\r\n");
         Delay_ms(1000);
         printf("AT+CIPSEND=0,1\r\n");
         Delay_ms(500);
         printf("H\r\n");
         Delay_ms(500);
      }
 }

« Última modificación: 11 de Julio de 2016, 21:05:18 por soymoe »

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:duda con modulo esp8266 + pic
« Respuesta #1 en: 14 de Julio de 2016, 18:51:49 »
Alguien me da una mano?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:duda con modulo esp8266 + pic
« Respuesta #2 en: 14 de Julio de 2016, 19:04:45 »
Solo mirando veo varias cosas:

Código: C
  1. Cadena[i]=ch;
  2.    i++;
  3.    if(i>600)i=0;
Código: C
  1. char Cadena[60]

- meter 600 caracteres en 60 lugares significa buffer overflow.

- Luego tenes la forma de comparar cadenas como que tenes MUY seguro donde van a estar ubicados los caracteres. Lo cual no siempre es asi, pero que tambien me puedo equivocar.

- Tu forma de comunicarte con el modulo sin siquiera saber si el modulo respondio correctamente o no

- Y finalmente Todo esto suponiendo que estes configurando el ESP correctamente y realmente estes recibiendo.

- Luego cosas menores como estas usando "ch" una variable que no tiene sentido y solo estas ocupando un byte mas. Lo cual veo que se te complica lo que es la programacion en C.

- Usando set_tris, luego de los setup_x, imagino que estarias sobreescribiendo lo que ya el codigo de setup_x hizo. Y ademas no sirve de nada por que no estas usando FAST_IO y CCS va a hacer lo que quiera con el tris.

- El codigo setup() nunca se llama.

Es lo que encuentro ahora, y que pienso que tendrias que arreglar. Pero eso queda a decision tuya.
« Última modificación: 14 de Julio de 2016, 19:21:58 por KILLERJC »

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:duda con modulo esp8266 + pic
« Respuesta #3 en: 15 de Julio de 2016, 09:54:22 »
Gracias por responder, es posible que no conozca todos los secretos del lenguaje en C ya que lo aprendi sin la ayuda de nadie, por mi cuenta, por ejemplo eso de fast io no se que sentido tiene

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:duda con modulo esp8266 + pic
« Respuesta #4 en: 15 de Julio de 2016, 11:24:20 »
yo lo que veo es que nunca pones informacion suficiente para ayudarte. Ya lo intenté en el pasado y no funcionó.

Se me ocurren 5 conexiones distintas entre el modulo wifi y el pic. No explicas como está conectado.
No explicas cual de los esp8266 tenes (hay mas de 12)
No explicas que firmware tiene el esp, si tiene el webserver, si esta como AP, si tiene nodeMCU....

En fin para mi es imposible siquiera imaginarme lo que estas conectando, mucho menos como podrías resolverlo y por supuesto, imposible intentar ver que estás haciendo mal...

Saludos
-
Leonardo Garberoglio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:duda con modulo esp8266 + pic
« Respuesta #5 en: 15 de Julio de 2016, 12:02:47 »
Gracias por responder, es posible que no conozca todos los secretos del lenguaje en C ya que lo aprendi sin la ayuda de nadie, por mi cuenta, por ejemplo eso de fast io no se que sentido tiene

No son secretos, son "facilidades" que da el compilador CCS para la gente nueva. Facilidades que lo unico que hacen es complicarla. Pero te sugiero que bajes el manual de CCS, ( busca "CCS manual" en google) ahi tendras todas las funciones y preprocesadores. Y no te preocupes creo que el 80 o 90% aprendio por su cuenta C.

Opino igual que elgarbe, pero yo ya en eso no puedo ayudarte, ya que tengo nula experiencia con este modulo.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:duda con modulo esp8266 + pic
« Respuesta #6 en: 16 de Julio de 2016, 17:45:26 »
El modulo que uso es la version 01, tengo conectado vcc a 3.3v y tambien el pin de habliltacion que no me acuerdo cual era, ademas tengo conectado el modulo al rx y tx al la uart del pic 16f88.
lo estoy haciendo andar en modo servidor, el modulo funciona porque lo probe conectadolo a la PC o sea esta bien conectado ademas logro conectarme desde mi PC por wifi al modulo en modo servidor, uso el programa hercules para conectarme al modulo, he probado mandar  unos caracteres al modulo para ver que me tira y en funcion de eso determine la posicion de los caracteres que busco en la cadena, el firmware el uno que encontre que me permite trabajar a 9600 buadios y parece aceptar todos los comandos at. es cierto que no hago la verificacion de la respuesta del modulo pero la voy a implementar.
Gracias por responder


 

anything