Proyectos


Comunicación mediante radiofrecuencia
Lorenzo M. Oliver (webmaster@todomicrostamp.com)

Usaremos una pareja de transceptores de radiofrecuencia de Parallax (un emisor y un receptor), Parallax 433 MHz RF Transceiver Package. Son unos dispositivos muy pequeños y fascinantes por cuanto en una pequeña plaquita de circuito impreso, con muy pocos componentes y una antena diminuta, encierran alta tecnología que un servidor ya hubiera deseado tener entre las manos años atrás.

Estos dispositivos utilizan la frecuencia de 433,92 MHz (UHF) y trabaja en un radio de cobertura de 150 metros (dependiendo de las condiciones de propagación de la señal).

Conexiones en el Transmisor

El Transmisor lo insertamos en una Home Work (por ejemplo, que es más liviana); el Receptor lo insertaremos en una Board Of Education que la destinamos para recoger la señal que transmite la otra tarjeta y que, conectada con cable RS232 (o USB, según la versión de la tarjeta), nos la mostrará mediante el comando DEBUG.

Tanto el Transmisor como el Receptor son muy fáciles de instalar: las patillas del circuito se ajustan perfectamente a los agujeros del área de prototipos de la Home Work o BOE, están perfectamente identificadas (en el Transmisor: PDN, DATA, 5V y GND; en el Receptor: RSSI, PDN, DATA, 5V y GND) y para la programación del código usaremos unas pocas líneas y los comandos del PBASIC SEROUT y SERIN.

Estas son las conexiones en el Transmisor:

PIN
NOMBRE FUNCIÓN
1
PDN Se usa para reducir el consumo del dispositivo, colocando al Transmisor en un estado casi "dormido". No lo usaremos en nuestro proyecto.
2
DATA Salida de datos
3
5V Alimentación de +5V (Vdd)
4
GND Conexión a masa (Vss)


Y estas son las conexiones del Receptor:

PIN
NOMBRE FUNCIÓN
1
RSSI Indicador de la intensidad de la señal. No lo usaremos en nuestro proyecto.
2
PDN Se usa para reducir el consumo del dispositivo, colocando al Receptor en un estado casi "dormido". No lo usaremos en nuestro proyecto.
3
DATA Entrada de datos
4
5V Alimentación de +5V (Vdd)
5
GND Conexión a masa (Vss)


Transmitiendo datos

Podemos obtener del sensor ultrasónico, a través del comando PULSIN, un valor que al calcularlo lo convertíamos en la distancia entre el sensor y un objeto cualquiera que se hallase situado enfrente de este. Ahora este dato, la distancia en centímetros, lo transmitiremos en formato estándar asincrónico RS-232 mediante el comando SEROUT

SEROUT Tpin{\Fpin},Baudmode,{Timeout,Tlabel,}[OutData]

Un ejemplo de lo sencillo que resulta usar este comando lo podemos ver a continuación:

SEROUT 16, 16468,[“Hola Mundo”]

Esta línea de código envía por el puerto de programación 16 (o cualquier otro puerto) el texto "Hola Mundo".

grados VAR BYTE
grados = 90
SEROUT 1, 16468,[“La temperatura es:”, dec3 grados, “C”]

Estas otras líneas de código sirven para envíar por el puerto 1 el texto "La temperatura es:" y el valor de la variable grados, con 3 dígitos de decimal, seguido del caracter "C".

El valor "16468" corresponde a 9600 de velocidad, 8 bit invertido, según la tabla de formatos que podemos encontrar en el manual de programación del PBASIC.

Recibiendo datos

Para recibir estos y otros datos que nos pudieran interesar, usaremos el comando SERIN.

SERIN Rpin{\Fpin},Baudmode,{Plabel,}{Timeout,Tlabel,}[InputData]

Otro ejemplo del uso sencillo de estos comandos lo podemos ver en estas otras líneas de código:

Dato_Recivido VAR BYTE
SERIN 1, 16468,[Dato_Recibido]

Aquí, el comando SERIN espera a recibir el dato (sin ningún formato específico y cualquier valor ASCII de forma natural). De manera que si enviamos el caracter "A", la variable Dato_recibido almacenará "65", que es el valor ASCII de esa letra.

Dato_Recivido VAR BYTE
SERIN 1, 16468,[DEC Dato_Recibido]

Este segundo ejemplo es para aceptar un valor decimal.

LISTADO DEL CÓDIGO

Bueno, visto todo esto, vamos a escribir el programa completo usando un sensor ultrasónico PING de Parallax (PING))) Ultrasonic Sensor) en la Home Work con el transmisor, para que tome algunos datos para transmitir:


' Rastreador_TX2.bs2
' {$STAMP BS2}
' {$PBASIC 2.5}

tiempo VAR Word

DO
PULSOUT 9, 5
PULSIN 9, 1, tiempo
tiempo = tiempo ** 2251
PAUSE 100

PULSOUT 8, 1200
SEROUT 8, 16468, [ "MED", tiempo]
PAUSE 10
LOOP

Hemos añadido una línea con PULSOUT, para enviar un pulso de sincronización para el Receptor. Después empleamos el comando SEROUT con lo que hará posible el envío del valor almacenado en la variable tiempo. La etiqueta "MED" (podría ser cualquier otra) la usamos para identificar ese envío de datos, de manera que el receptor pueda filtrarlo de cualquier otra fuente espúrea de datos recibidos por rediofrecuencia en la banda que opera.

La BOE con el Receptor y un LED de estado:

' Rastreador_RX2.bs2
' {$STAMP BS2}
' {$PBASIC 2.5}

tiempo VAR Word

DO
LOW 0
SERIN 7, 16468, [WAIT("MED"), tiempo ]
HIGH 0
DEBUG HOME, DEC4 tiempo
LOOP

Vemos de que forma el comando SERIN lo empleamos en la forma de que reciba, en la variable tiempo, los datos enviados en cada momento, pero filtrados, puesto que únicamente tendrá en cuenta las ráfagas identificadas con la etiqueta "MED". Interesante ¿verdad? El sistema se presta para transmitir y recibir envíos discriminados.

Además, hemos añadido un LED en nuestro circuito, conectado en serie con su correspondiente resistencia, al puerto 0. En el programa, permanecerá apagado (LOW 0) hasta que se ejecute el comando SERIN (que lo hará si recibe datos) y por lo tanto se encenderá (HIGH 0). Sólo es una forma sencilla de visualizar el momento en que el receptor recibe datos, aunque mediante el comando DEBUG y nuestra BOE conectada a nuestro ordenador, será posible visualizar los datos.

También es posible hacer uso de la patilla "RSSI" si queremos obtener una respuesta analógica para leer la intensidad de la señal recibida.


Más información:

- Hoja técnica del Transmisor (PDF): 433 mHz Parallax RF Transmitter Manual
- Hoja técnica del Receptor (PDF): 433 mHz Parallax RF Receiver Manual





Robótica con microcontroladores BASIC Stamp de Parallax. Cualquier nombre de productos o marcas registradas que puedan aparecer en este sitio web, aparecen con fines de identificación y están registradas por sus respectivas compañías. 'BASIC Stamp' es una marca registrada de Parallax, Inc. Aviso legal