sábado, 8 de noviembre de 2014

Bluetooth controlado con movimiento o giro de Smartphone "Rocketbot Robot Controller"

Bluetooth

Vamos a conectar a nuestra placa picaxe, un módulo bluetooth que nos permita comunicarnos con un smartphone.

Para ello en primer lugar muestro como está constituido este pequeño módulo:

-Vcc: Positivo.
-GND: Negativo.
-TXD: Receptor de datos.
-RXD: Emisor de datos.
-Key:Configuración.
-Led: Indicador luminoso.

Bluetooth HC-05



Para esta primera práctica solo necesitaremos, Vcc, GND y TXD.
  
Las conexiones a la placa debemos hacerlas del siguiente modo:

  • Vcc a positivo.
  • GND a negativo.
  • TXD a entrada analógica (C.0 por ejemplo)
Picaxe con Bluetooth


 Además hemos conectado como salidas 4 Leds para que encienda uno u otro en función del giro del smartphone.



Una vez conectado, tenemos que disponer de una aplicación que nos permita la comunicación con el módulo Bluetooth. En nuestro caso hemos descargado del Play Store. Rocketbot Robot Controller. (Aplicación de pago 1,46€)






















 Los pasos a seguir para la conexión son:
 -Activar Bluetooth del móvil.
-Escanear dispositivos bluetooth del entorno. "Scan"
-Aparecerá HC-05. Selecciónalo y se conectará. (Cambiará el parpadeo del dispositivo bluetooth).
-Habremos enlazado el móvil con el módulo bluetooth.

Vídeo de funcionamiento de la aplicación




Ya sólo queda programar el código para establecer la comunicación y controlar los Leds.

setfreq m8

inicio:
serin C.0, T9600_8,w0,w1,w2,w3 'w0=b1:b0 w1=b3:b2 w2=b5:b4 w3=b7:b6
pause 50
debug b2  'X o L
debug b6  'Y o R

if b2>100 and b6>100 then goto verde
if b2<100 and b6<100then goto amarillo
if b2>100 and b6<100 then goto azul
if b2<100 and b6>100 then goto blanco

verde:
high B.0
serout B.5, T9600_8,(" verde")
pause 2000
low B.0
goto inicio

amarillo:
high B.1
serout B.5, T9600_8,(" amarillo")
pause 2000
low B.1
goto inicio

azul:
high B.2
serout B.5, T9600_8,(" azul")
pause 2000
low B.2
goto inicio

blanco:
high B.3
serout B.5, T9600_8,(" blanco")
pause 2000
low B.3
goto inicio

jueves, 16 de octubre de 2014

Módulo Bluetooth HC-05

Conexionado de Bluetooth a Smartphone

Vamos a conectar a nuestra placa picaxe, un módulo bluetooth que nos permita comunicarnos con un smartphone.

Para ello en primer lugar muestro como está constituido este pequeño módulo:

-Vcc: Positivo.
-GND: Negativo.
-TXD: Receptor de datos.
-RXD: Emisor de datos.
-Key:Configuración.
-Led: Indicador luminoso.

Bluetooth HC-05



Para esta primera práctica solo necesitaremos, Vcc, GND y TXD.
  
Las conexiones a la placa debemos hacerlas del siguiente modo:

  • Vcc a positivo.
  • GND a negativo.
  • TXD a entrada analógica (C.0 por ejemplo)
Picaxe con Bluetooth


 Además, hemos conectado como salidas 3 Leds, para que encienda uno u otro en función de la tecla que pulsemos.

Picaxe con Bluetooth


Una vez conectado, tenemos que disponer de una aplicación que nos permita la comunicación con el módulo Bluetooth. En nuestro caso hemos descargado del Play Store. Bluetooth Controller. (Aplicación gratuita)


Bluetooth controller


 Los pasos a seguir para la conexión del Bluetooth son:
 -Activar Bluetooth del móvil.
-Escanear dispositivos bluetooth del entorno. "Scan"
-Aparecerá HC-05. Selecciónalo y se conectará. (Cambiará el parpadeo del dispositivo bluetooth).
-Habremos enlazado el móvil con el módulo bluetooth.

 Para configurar la aplicación solo debemos hacer.
 -Entrar en Set Keys.
-Asignar a cada tecla un nombre. Key Name: (Ej: Arriba, Abajo, Luz...)
-Configurar cada tecla (Data of Key), asignándole una letra que será el dato que enviará el móvil.
-El dato enviado es en código ASCII, por lo que hay que obtener el equivalente decimal a dicho caracter.
-Ejemplo: Asignamos a la tecla "Arriba" el valor F(ASCII) = 70 (Decimal). Así, al programar, utilizaremos el 70 como el valor que se introduce al programa al pulsar dicha tecla.

Ya sólo queda programar el código para establecer la comunicación y controlar los Leds.


Bluetooth con Picaxe


Vídeo del funcionamiento


 

  
CÓDIGO DEL PROGRAMA
  
setfreq m8 'Cambiamos la frecuencia a 8MHz.

inicio:

serin C.0, T9600_8,b0 'Comunicamos serie por entrada C.0 y almacena en b0
debug b0 'Mostramos en pantalla

 if b0=83 then goto mezcla 'Pulsa tecla Mezcla asociada a S (S en ASCII equivale a 83 en decimal)
 if b0=82 then goto Blanca 'Pulsa tecla Blanca asociada a letra R
 if b0=74 then goto Azul 'Pulsa teclaAzul asociada a letra  J
 if b0=73 then goto Verde 'Pulsa tecla Verde asociada a letra  I

Blanca: 
for b1=1 to 4
high B.3
pause 200
low B.3
pause 100
next b1
goto inicio

Azul:
for b1=1 to 3
high B.2
pause 1000
low B.2
pause 200
next b1
goto inicio

Verde:
for b1=1 to 5
high B.1
pause 400
low B.1
pause 150
next b1
goto inicio

Mezcla:
for b1=1 to 5
high B.3
pause 1500
high B.2
pause 400
low B.3
high B.1
pause 250
low B.2
high B.3
low B.1
pause 200
low B.3
pause 100
high B.2
high B.3
high B.1
pause 250
low B.2
low B.3
low B.1
pause 150
next b1
goto inicio







lunes, 1 de septiembre de 2014

Motor paso a paso unipolar

Generalidades
El motor paso a paso es un dispositivo electromecánico que convierte una serie de impulsos eléctricos en desplazamientos angulares discretos, lo que significa que es capaz de avanzar una serie de grados (paso) dependiendo de sus entradas de control.
El motor paso a paso se comporta de la misma manera que un conversor digital-analógico (D/A) y puede ser gobernado por impulsos procedentes de sistemas lógicos.
Este motor presenta las ventajas:
  • Alta precisión.
  • Repetitividad en cuanto al posicionamiento.
Estos motores suelen tener 5 ó 6 cables de salida dependiendo de su conexionado interno.
Este tipo se caracteriza por ser más simple de controlar, estos utilizan un cable común a la fuente de alimentación y posteriormente se van colocando las otras líneas a tierra en un orden específico para generar cada paso, si tienen 6 cables es porque cada par de bobinas tiene un común separado, si tiene 5 cables es porque las cuatro bobinas tiene un solo común.
En esta imagen tenemos un motor unipolar con reductora de engranajes de 6 cables obtenido de una vieja impresora.
Motor paso a paso unipolar de impresora
Identificación de los cables
Para la identificación del orden en el que debe enviarse los pulsos al motor, hay que emplear el polímetro ya que nos va a arrojar valores de resistencias entre cables que serán los que nos sirvan para identificar el positivo o positivos común y los grupos de cables que vamos a formar.
Cuando el motor tiene 6 cables, va a haber 2 cables comunes que uniremos y formaremos un único común.
En la siguiente imagen podemos ver el detalle de unión de los 2 cables positivos que coinciden en ser los rojos.
Motor paso a paso unipolar 6 cables
En el siguiente vídeo podemos ver como se identifican los cables para ordenarlos posteriormente y obtener un movimiento continuo.
   
  Resumen de la identificación en caso de ser 6 cables:

Tomamos un cable cualquiera y medimos la resistencia con los demás.
  1. Los que arrojen un resultado de resistencia formarán parte del grupo.
  2. Los restantes formarán otro grupo entre sí.
  3. En cada grupo. El cable que ofrezca una menor resistencia  al unirlo con los otros (la mitad) será el positivo.
  4. Realizamos la misma operación en el otro grupo.
  5. Unimos ambos positivos.
  6. Establecemos el orden de secuencia tomando un cable alternativamente de cada grupo.
 Conexión a la placa Picaxe
Para conectarlo a la placa Picaxe podemos hacerlo de 2 formas:
  • Conectarlos en el orden obtenido previamente a las salidas B.4, B.5, B.6 y B.7 tanto en las clemas azules de conexión de salida o en los pines que están en la parte central de la placa.
  • Conectarlos a las salidas B.0, B.1, B.2 y B.3 pero sólo podemos hacerlo en los pines de la parte central de la placa ya que si los conectamos en las clemas de conexión de salida tenemos el problema que son conexiones con buffer y no funcionarían, por lo que hay que sacarlas directamente de la salida del chip picaxe que se encuentra en los pines de la zona central.
Conexión motor paso a paso a placa picaxe
Funcionamiento

En este vídeo podemos ver el funcionamiento continuo de forma indefinida de un motor paso a paso con gran reducción.




Programación
El funcionamiento de un motor paso a paso es muy sencillo. Básicamente hay que hacer 2 cosas:
  • Indicar que las conexiones son de salida (output)
  • Emplear el comando let pins con el estado de cada salida, es decir, todas las conexiones desconectadas excepto la que esté en uso en ese momento.
Nota: Recuerda que desconexión o apagado es un "0" excepto en las conexiones B.4, B.5, B.6 y B.7 que van al contrario porque pasan por el chip L293D que invierte la señal. Por lo tanto en dichas conexiones se emplea un "1" para desconectar.
Si hubieramos sacado las conexiones de la parte central sería como siempre ya que es directo del chip, sin pasar por el L293D.
Programa básico:
'%%%%%%%%%%%%%%MOTOR PASO A PASO%%%%%%%%%%%
output B.0    'Conexiones puestas como salidas
output B.1
output B.2
output B.3
output B.4
output B.5
output B.6
output B.7
inicio:   ' Funcionamiento indefinido del motor paso a paso
let pins =%11100000  'Orden  B.7......B.0  (Conectamos B.4, las demás apagadas)
pause 50  ' No es inprescindible. Solo hace que vaya algo mas despacio.
let pins =%11010000  'Orden B.7......B.0  (Conectamos B.5, las demás apagadas)
pause 50 
let pins =%10110000  'Orden B.7......B.0  (Conectamos B.6, las demás apagadas)
pause 50 
let pins =%01110000  'Orden B.7......B.0  (Conectamos B.7, las demás apagadas)
pause 50 
goto inicio   ' Vuelta a empezar

martes, 29 de julio de 2014

Practicas con sensor de Ultrasonidos HC-SR04

Funcionamiento

El HC-SR04 es un sensor ultrasónico, este utiliza el sonar para determinar la distancia a un objeto. Ofrece una precisión excelente y lecturas estables. Su funcionamiento no se ve afectado por la luz solar o materiales oscuros.
HC-SR04

Su comportamiento es estable y tiene mucha exactitud en sus mediciones.

Su funcionamiento es con una frecuencia de 8MHz o bien 16MHz cuando lo empleamos junto a un servomotor.
También se puede realizar con la frecuencia por defecto 4MHz aunque habitualmente se ha ido realizando a 8MHz.
Para emplear junto con servomotres, emplear la frecuencia por defecto 4MHz.


Características

  • Voltaje de alimentacion: 5V DC
  • Angulo efectivo: 15°
  • Distancia efectiva de medicion: 2cm – 500 cm
  • Resolucion: 0.3 cm.
  • Frecuencia 8MHz (setfreq m8) o 16MHz (setfreq m16). 
  • Frecuencia por defecto 4MHz (No se usa ningún comando especial).


  • Nombres de las conexiones del sensor:

    - VCC = +5VDC
    - Trig = Entrada de Trigger de sensor. Emite pulso
    - Echo = Salida de Echo de sensor. Recibe pulso.
    - GND = Tierra 0V.

    La forma de conectarlo puede ser de 2 formas diferentes:

    1. Uniendo Echo y Trigger mediante una resistencia de 4,7K.
    2. Con 2 cables independientes Echo y Trigger.



    Uniendo Echo y Trigger mediante una resistencia de 4,7K o 10K

    A continuación vamos a explicar la primera forma de conexión.
    Para su correcto funcionamiento según el montaje realizado por mí, es necesario soldar una resistencia de 4,7kOhm entre Echo y Trigger.

    HC-SR04 con placa Picaxe
    Resistencia soldada a las conexiones Echo y Trigger.

    HC-SR04


    De sesta forma ahorremos un cable a la hora de conectarlo. Resulta  muy cómodo.

     Conexión a la placa Picaxe

    La conexión a la placa Picaxe es muy simple. Sólo es necesario:

    • Vcc: Positivo de la placa
    • GND: Negativo de la placa
    • Trigger: Conexión que sea reversible (Input y Output) y analógica. En este caso hemos tomado C.1, aunque podríamos haber cogido C.0 o C.2.
    • Echo: Está conectada indirectamente a través de la resistencia de 4,7KOhm o 10KOhm.
    HC-SR04 con placa Picaxe


    Esquema de conexiones con Resistencia de 4,7K entre Echo y Trigger

    Vídeo explicativo

    Esta es una práctica básica para entender el funcionamiento y conexión del sensor a la placa.





    Consideraciones:
    Para programar este sensor con el chip Picaxe 18M2+, lo que hay que hacer es básicamente:

    - Cambiar la frecuencia a 8MHz aunque también puede funcionar a 16MHZ
    - Enviar un pulso de 2ms mediante pulsout (Trigger).
    - Recibir el pulso durante 1ms (Echo) y almacenar el valor capturado en una variable w0.
    - Operar para transformar ese valor en la distancia al objeto en cm.
    - Visualizarlo en pantalla, si fuera necesario.

    Códigos de programación con distintas frecuencias

    'Control HCSR04 con un cable y Frecuencia por defecto 4MHz
     
                     '(USAR ESTA FRECUENCIA CON SERVO)

    symbol Distancia = w0
    symbol operaciondistancia = w1

    let Distancia = 0
    let operaciondistancia = 0
     ultrasonidos:
       pulsout C.0,2 'Emitimos pulso en la entrada C.0
       pulsin C.0,1,operaciondistancia 'Recibimos pulso

       pause 10
       Distancia=operaciondistancia*5/29 ' Obtenemos la distancia en cm
       debug
       pause 200
    goto ultrasonidos 'Repetimos la medición



    'Control HCSR04 con un cable y Frecuencia 8MHz
    symbol Distancia = w0
    symbol operaciondistancia = w1
    let Distancia = 0
    let operaciondistancia = 0
     setfreq M8  'Frecuencia 8MHz incompatible con servo ultrasonidos:
       pulsout C.0,2 'Emitimos pulso en la entrada C.0
       pulsin C.0,1,operaciondistancia 'Recibimos pulso   pause 10
       Distancia=operaciondistancia*5/58 ' Obtenemos la distancia en cm
       debug
       pause 200
    goto ultrasonidos 'Repetimos la medición



    'Control HCSR04 con un cable y Frecuencia 16MHz
    symbol Distancia = w0
    symbol operaciondistancia = w1
    let Distancia = 0
    let operaciondistancia = 0
     setfreq M16  'Frecuencia 16MHz ultrasonidos:
       pulsout C.0,2 'Emitimos pulso en la entrada C.0
       pulsin C.0,1,operaciondistancia 'Recibimos pulso   pause 10
       Distancia=operaciondistancia*5/116 ' Obtenemos la distancia en cm
       debug
       pause 200
    goto ultrasonidos 'Repetimos la medición


    Programación con todas las frecuencias posibles. Es similar a lo anterior



    Programación con Blockly


    Código con frecuencia 8MHz


    Código con frecuencia 16MHz



    Código con frecuencia por defecto

    La segunda forma de conectarlo es con 2 cables independientes, uno para Trigger y otro para Echo.

    No hay que olvidar que Trigger debe ser una salida. Al ser reversibles muchas de las conexiones del chip 18M2+, podemos utilizar C.1 como salida aunque habitualmente sea una entrada analógica.

    En la siguiente imagen podemos ver cómo conectarlo.

    Con 2 cables independientes.
    Código de programación
    '#####PICAXE 18M2+ con sensor ultrasonidos HC-SR04#####
    'C.1 emisor Trigger. Si empleamos B.0 no hay que configurarla en blockly como output
    'C.0 receptor ultrasonido Echo

    symbol medida=w1        'asignamos a la variable w1 el nombre "medida"
    setfreq m8                       'frecuencia a 8MHz aunque podríamos usar 16MHz o por defecto
                                            'en tal caso no se pondría este comando.
    inicio:

    pulsout C.1,2                 'Emitimos ultrasonido durante 2ms en entrada C.1 (Trig)
    pulsin C.0,1,w0             'Recibe ultrasonido en C.0 en 1ms y grabamos en w0 (Echo)
    pause 10

    medida=w0*5/58          'Operamos para obtener distancia en cm en la variable w1
    debug w1                      'Mostramos en pantalla
    pause 100

    goto inicio


    
    Programa HC-SR04 con 2 cables para Echo y Trigger
    

    Si empleamos como Trigger a cualquier salida habitual como B.0, no habría que configurarla con el comando output, como hemos hecho con C.1.
    Esto es debido a que esas son salidas por defecto (B.0-B.7)  y C.1 es entrada por defecto.