Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola,
quería saber si había que tener algo especial en cuenta para comunicar mi PIC16f84a (NO TIENE PUERTO SERIE) con un módulo XBEE. Mi código lo adjunto a continuación, lo he probado y estoy casi seguro que no falla el HW ya que se conectan muy facilmente los dos. ¿Alguien puede ayudarme a encontrar un error en el código? Se supone que emulo el puerto serie no? ¿Hay alguien que haya trabajado con estos módulo? Gracias y Un saludo.
#include "C:Documents and SettingsDavid Crespo RamírezEscritorioUniRobóticaROVIROVI CROVI_h"
#include <stdio.h>
#BYTE TRISA=0x85
#BYTE PORTA=0x05
#BYTE TRISB=0x86
#BYTE PORTB=0x06
void main()
{
char orden;
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
orden='5';
TRISB=0b00000000; /*Para envío de órdenes a los motores*/
TRISA=0b00000010; /*Activo el pin RA1 para recepción de los bits mandados por ZigBee y pin RA0 Para transmitir información al ZigBee*/
printf("Adelante ROVI");
while(TRUE)
{
orden=getc();
/*RB3 RB2 RB1 RB0*/
/*IA ID DA DD*/
if (orden=='8') PORTB=0b00000101; /*00101*/
if (orden=='2') PORTB=0b00001010; /*01010*/
if (orden=='4') PORTB=0b00001001; /*01001*/
if (orden=='6') PORTB=0b00000110; /*00110*/
if (orden=='5') PORTB=0b00000000; /*00000*/
putc(orden);
}
}
#include <16F84A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#use delay(clock=8000000)
#use rs232(baud=19200,parity=N,xmit=PIN_A0,rcv=PIN_A1,b its=8,invert)
Muy buenas David, si no me equivoco creo que te conozco, podías haberte pasado por ESIBot para pedir una ayudita, jeje. Bueno, antes que nada creo que deberías asegurarte de tener ambos módulos configurados para que se puedan comunicar de forma correcta. También asegurarte de que el baudrate es el correcto. Al menos es lo primero que yo revisaría. Aquí tienes información general (aunque sea de la página de arduino): http://www.arduino.cc/en/Main/ArduinoXbeeShield " onclick="window.open(this.href);return false;
Un saludo.
Hola,
puede ser sí que me conozcas. Verás es que es para un proyecto en la escuela y no quería molestar. Creía que iba a poder solo pero me parece que no voy a ser capaz de hacerlo porque no conozco ningún profesor que realmente entienda de ZigBees.
Un saludo
Buenas de nuevo, ahora mismo estoy yo soldando unas plaquitas adaptadoras para 3 módulos Xbee que tenemos en la asociación. Unas chicas van a hacer un trabajo con los Zigbees y las placas que hicimos en la asociación el año pasado (basadas en un 18F4550). Si quieres cuando tengan algo avanzado les puedo decir que te lo pasen. En cualquier caso debe de ser alguna tontería, ya que los Xbee son muy fáciles de usar, en principio como un puerto serie. Por curiosidad, ¿usas algún adaptador o lo conectas directamente todo?
Un saludo.
Juass, antes hablo antes me tengo que callar... Llevo desde ayer intentando conectar los malditos Xbee a la placa que usamos en la asociación y todo sin éxito...
Por un lado conecto un Xbee al PC (usando la herramienta UART del Pickit 2) y puedo hablar con el Xbee bien, puedo ejecutar comandos y demás. Por otro lado el Xbee lo conecto al PIC 18F4550 y voy imprimiendo una cadena, la cadena se imprime bien, ya que si conecto el PIC al PC directamente puedo ver cómo se imprime, pero cuando meto los Xbee de por medio nada...
Estas pruebas las he realizado tanto con los Xbee como vienen de fábrica, como usando estas configuraciones (siempre a 9600bps):
PC -> ATID3332,DH0,DL0,NI1,WR,CN
PIC -> ATID3332,DH0,DL1,NI0,WR,CN
Nada más alimentar al Xbee se enciende el led que tengo puesto en ASSOC, pero el que tengo puesto en RSSI está siempre apagado. Uso una placa adaptadora propia que convierte niveles entre PIC y Xbee de 5V a 3.3V y viceversa.
¿Alguien tiene idea de qué puede estar pasando?
Vale, cambiando el firmware de uno de ellos para que sea "coordinator" todo funciona a la perfección. Los únicos parámetros que he cambiado son el "node identifier" y el "PAN ID".