En un artículo anterior escribimos sobre habilitar la puerta serial en el Raspberry Pi, en este artículo veremos como usar nuestro Raspberry Pi para aplicaciones inalámbricas a traves de XBee.
El ejemplo que veremos a continuación se basa en otro artículo publicado en este blog.
XBee es una familia de módulos de RF diseñados para su fácil implementación. Nosotros usamos la serie 2 que tiene más features de lo que necesitamos en esta prueba.
Lo que haremos es tener dos módulos
- Módulo Remoto: Conectar el XBee remoto con Teensy y un sensor.
- Módulo Central: XBee conectado en la puerta serial al Raspberry Pi
Despues del salto, la información completa
Materiales
- Teensy
- Raspberry Pi
- 2 x XBee Serie 2
- Adaptador XBee
- Conector Raspberry Pi
- Cables
- 2 x Protoboard
- Sensor ADXL335
Objetivo
El objetivo es capturar información desde el Teensy y enviar esa información via puerta serial a través de Xbee hacia la Raspberry Pi. Por el lado de la Raspberry Pi esa información se captura vía otro módulo Xbee y puede ser procesada posteriormente.
Para la implementación en el lado del Teensy usaremos una puerta ADC , la puerta A3, para realizar muestreo. El sensor utilizado en este caso es medir un eje del sensor acelerómetro ADXL335. La información será recibida por la Raspberry Pi, se muestra por pantalla y se almacena en un archivo.
Procedimiento
Como primer paso se deben configurar los módulos XBee, esot se describe en varios tutoriales disponible en línea, como por ejemplo aquí artículo
Para realizar lo indicado, se carga el siguiente código en el Teensy,
HardwareSerial Uart1 = HardwareSerial();
void setup()
{
Serial.begin(9600);
Uart1.begin(9600);
}
int val;
void loop()
{
val = analogRead(3);
Uart1.print("analog 3 is: ");
Uart1.println(val);
delay(1000);
}
Para la Raspberry Pi debemos seguir las indicaciones que están aqui para habilitar la puerta serial
Por el lado de la unidad central en el Raspberry Pi usaremos Python
# website: www.iot.cl
#
#
# Purpose : basic use of serial port
#
# Date : 2013–06–06
from serial import Serial
s = Serial('/dev/ttyAMA0', 9600, timeout=2)
f = open("data", "w")
while True:
try:
a = s.readline()
print a
f.writelines(a)
except KeyboardInterrupt:
break
s.close()
f.close()
Para conectar el Hardware se debe seguir usar los siguientes pines
XBee | Teensy |
Tx | Rx Pin0 |
Rx | Tx Pin1 |
3V | 3,3V output |
En el Teensy podemos conectar el sensor que queramos, nosotros usamos en un eje del acelerómetro ADXL335 conectado en la puerta A3 para medir. El acelerometro por su parte se alimenta desde la puerta Vin del Teensy 3. Todos los conectores de Tierra deben estar conectados entre si.
Las fotos muestran el setup, primero la unidad remota luego la unidad central