Ejercicio 32: Radioenlace

El robot envía al puerto serie del ordenador información sobre sus movimientos para que pueda ser monitorizado a distancia.

Novedades hardwareNovedades software
Emisor y receptor de radio 

Requisitos:

  • Chasis del robot, circuito de potencia
  • Emisor y receptor de coche teledirigido
  • Una segunda tarjeta Arduino
  • 4optoacopladores, 4 resistencias de 220 ohmios.

Planteamiento: El robot nos envía saludos y dice que cuándo le cambiamos las pilas.

Presentación de: Enlace por radio con el ordenador.

En el montaje del simón? aprendimos a activar un aparato externo que funcione con poca corriente y se controle con un pulsador.

Un emisor y un receptor de radio de un pequeño ( y barato) cochecito teledirigido entran en esa categoría.

Sólo tenemos que configurar un par de salidas digitales para activar con ellas dos optoacopladores que puentearán a los dos pulsadores del emisor.

Para simular el pulsado basta con añadir un digitalWrite HIGH seguido de uno LOW en esa salida y tenemos una señal de radio. Puedes escribir un simple procedimiento que podrás situar donde prefieras.

Podemos combinar la señal con cualquier actividad del robot. Una opción evidente es aprovechar los dos pulsadores que traen los coches más baratos para asociar uno con un giro a la izquierda y el otro con el giro a la derecha.

También podemos asociar el envío de la señal con una colisión.

Para recibir las señales montamos un circuito inverso al de envío: conectamos las salidas que van a los motores del coche desde el receptor con dos entradas digitales de la tarjeta Arduino a través de otro par de optoacopladores para tener una señal digital nítida.

Un pequeño programa enviará una palabra por el puerto de serie hasta el monitor serie de la IDE cada vez que lea una señal en la entrada.

Variantes:

  • Prueba a establecer la comunicación inversa: programa el robot para que esté escuchando y mándale señales

CÓDIGO FUENTE

 Copyright (C) 2006  Juan Carlos Alonso de Mena
 This program is free software; you can redistribute it and/or modify it under the terms
 of the GNU General Public License as published by the Free Software Foundation;
 See the GNU General Public License for more details?

 void setup(){
   pinMode(8,INPUT);
   pinMode(10,INPUT);
   beginSerial(19200);
 }
 void loop(){
   if(digitalRead(8)==HIGH){
     printString("izquierda");
     delay(100);
   }
   if(digitalRead(10)==HIGH){
     printString("derecha");
    delay(100);
   }
 }

Volver?

  Copyright (c) 2006  Juan Carlos Alonso de Mena

  Permission is granted to copy, distribute and/or modify this document under the terms of 
 the GNU Free Documentation License, Version 1.2 or any later version published by the
 Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
 Back-Cover Texts.  A copy of the license is included in the section entitled 
 GNU Free Documentation License?.