MANDO DE LA PLAY STATION POR RADIO … CPU se ocupa básicamente de coger las instrucciones del...

23
30/05/2011 MANDO DE LA PLAY STATION POR RADIO FRECUENCIA Miguel Colomina Benedet

Transcript of MANDO DE LA PLAY STATION POR RADIO … CPU se ocupa básicamente de coger las instrucciones del...

30/05/2011

MANDO DE LA PLAY STATION POR RADIO FRECUENCIA

Miguel Colomina Benedet

ÍNDICE

1 - Objetivos y Estudio estado del arte

2 - Estudio de viabilidad

3 - Planificación

4 - Esquema del proyecto (Schematic)

5 - PCB del proyecto (Layout)

6 - Imagen real del prototipo

7 - Software (Programa)

8 - Conclusiones

1 Objetivos y Estudio del arte.

1.1 Objetivos

El objetivo es hacer un mando a distancia por radiofrecuencia para el control de un coche o de un robot sencillo, aunque se podría usar para controlar otros dispositivos eléctricos.

Mi motivación principal es que al desarrollar un mando basado en enlaces de radiofrecuencia, este podría ser utilizado en otros proyectos diferentes.

Aprender un poco sobre comunicación inalámbrica entre microcontroladores.

1.2 Estado del arte

Existen algunos proyectos ya realizados basados en la misma tecnología con la que se pretende llevar a cabo el presente proyecto.

A continuación se describen brevemente dichos proyectos

1.2.1 - Comunicación con módulos RF entre dos Pics. [1]

El siguiente proyecto está basado en la comunicación de dos microcontroladores Pics16f628A del fabricante microchip de forma inalámbrica con dos módulos RF de 433,92 MHz en modulación ASK: el TLP434A y RLP434A, del fabricante LAIPAC, que son el transmisor y el receptor respectivamente.

El sistema descrito anteriormente enviar un cuarteto de bits, que se consiguen con cuatro pulsadores, que posteriormente se puede ver en el microcontrolador receptor mediante 4 leds conectados a este.

La programación del microcontrolador, se ha implementado en lenguaje C.

La estructura de este es el proyecto es muy similar al proyecto que se pretende desarrollar ya que usa dos Pics, un emisor y un receptor RF en ASK y 4 botones que enciende unos leds. Ver figuras 1 y 2.

Figura 1 Figura 2

1.2.2 - Manejo de un robot humanoide (figura 3) con el mando de Nintendo Wii. [2]

En este proyecto el cual está en venta, consta de un mando de la consola de Nintendo Wii, un ordenador y un software descargable gratuito, un USB Bluetooth y otro USB de infrarrojos, para el control de un robot humanoide.

El funcionamiento de este proyecto se basa en la conexión de un USB bluetooth para conectar de forma inalámbrica el mando de la Wii con el ordenador y el software, y con el de infrarrojos se manda al robot inalámbrico.

Figura 3

1.2.3 - Manejo de un robot hexápodo (figura 4) con mando de la Play 2 inalámbrico (no oficial) o mando de la Wii. [3] Web donde aparecen los videos del proyecto con los dos mandos diferentes. [4] Web del fabricante del robot.

Es parecido al anterior, también en venta. Pero en lugar de ser un robot humanoide es un hexápodo el cual se ha adaptado para controlarlo con el mando de la Wii y un mando inalámbrico comercial, no oficial de la Play 2.

En el caso del control con el mando de la Play el fabricante del robot proporciona el software correspondiente. El cual se programa desde un ordenador. Pero el control con el mando de la Wii ha sido desarrollado por un usuario particular por su cuenta.

Figura 4

1.3 Descripción del proyecto

1.3.1 Explicación breve

Para el desarrollar el proyecto, usare un mando viejo de la Play Station, se prefiere utilizar este modelo porque es un mando muy conocido y con muchos botones, ya con el espacio y los huecos para los joysticks y cómodo para cogerlo, así que se aprovechara la carcasa y los botones de éste. Para el control de los botones, los joysticks y del protocolo de comunicación con un microcontrolador Pic 16f876, un modulo emisor de radiofrecuencia de 433MHz en ASK del fabricante AUREL, los dos joysticks analógicos que venían en el mando y también han sido reutilizados, y una pila de 9v para la alimentación del circuito pasando por un regulador de tensión LM2575 de National Semiconductors, para regular los 9V a los 5v que consume el Pic. La programación se implementará en lenguaje PIC BASIC

Si se hubiese dispuesto de más tiempo de desarrollo. El mando hubiera comandado un coche o robot sencillo. En cualquiera de los dos casos, estará alimentado con pilas. Este contara también con otro Pic 16f876, un modulo receptor como el emisor de 433,92 MHz en ASK del fabricante AUREL, motores i o servos y el regulador o reguladores de voltaje correspondientes. Ademas algún sensor para evitar que choque contra objetos o que pueda funcionar autónomo sin necesidad de que esté controlado por el mando.

La programación se implementará en lenguaje PIC BASIC

1.3.1 Esquema de bloques (Figura 5)

Figura 5

1.4 Componentes principales

1.4.1 Microcontroladores (Figura 6):

Un microcontrolador es un circuito integrado o chip el cual podemos comparar con un ordenador pero muy simple, pequeño y barato, el cual se puede programar fácilmente para que hagan funciones específicas que el programador desee. Y se pueden programar con diferentes lenguajes de programación.

Incluye en su interior las tres unidades funcionales de un ordenador: unidad central de procesamiento, memoria y unidades de E/S (entrada/salida). Los microcontroladores se usan en automoción, en quipos de comunicación y de telefonía, en instrumentos eléctricos, en equipos médicos e industriales de todo tipo, en electrodomésticos, en juguetes, etc.

La CPU es el “cerebro” del microcontrolador y actúa bajo el control del programa almacenado en la memoria. La CPU se ocupa básicamente de coger las instrucciones del programa almacenadas en la memoria, interpretarlas y hacer que se ejecuten.

Memoria: Es donde se guarda el programa del microcontrolador, lo que ejecuta la CPU para su funcionamiento. También es donde se guardan los datos que necesita el programa para funcionar.

Figura 6: Familia de microcontroladores PIC16F...

Entradas y salidas: También conocidos como puertos de E/S, generalmente agrupadas en puertos de 8 bits de longitud, permiten leer datos del exterior o escribir en ellos desde el interior del microcontrolador, el destino habitual es el trabajo con dispositivos como relés, leds, pantallas, sensores de temperatura, humedad o cualquier otra cosa que se le ocurra al programador.

Algunos puertos de E/S tienen características especiales que le permiten manejar salidas con determinados requerimientos de corriente, o incorporan mecanismos especiales de interrupción para el procesador.

Típicamente cualquier pin de E/S puede ser considerada E/S de propósito general, pero como los microcontroladores no pueden tener infinitos pines, ni siquiera todos los pines que queramos, las E/S de propósito general comparten los pines con otros más específicos como conversores analógico/digital. Para usar un pin con cualquiera de las características a él asignadas debemos configurarlo mediante los registros destinados a ellos.

También disponen de puertos de comunicación para comunicarse con otros microcontroladores, ordenadores y otros equipos diversos. Como el Bus I2c, el USART, etc.

1.4.2 Módulos RF (Figura 7):

Los módulos RF permiten el envió de información y por tanto la comunicación entre dispositivos de manera inalámbrica.

Esto se consigue porque se envía una onda electromagnética de un punto a otro. Algunas de sus frecuencias pueden ser por ejemplo: 315 MHz; 433,92 MHz; 2,4 GHz.

Existen los sistemas analógicos y los digitales, los analógicos. En los analógicos la información se envía directamente pasando por todos los estados posibles. Mientras que en el digital esta información se codifica en “1” y “0”, es decir solo dos estados posibles. La analógica puede ser AM (amplitud modulada) [6] y FM (frecuencia modulada) [7]. En el sistema digital los más comunes son los ASK (amplitud modulada) y FSK (frecuencia modulada). Los de amplitud modulada lo que hace es variar la amplitud de la onda que se envía y el segundo frecuencia modulada lo que se hace es en lugar de variar la amplitud de la onda, lo que se varia es la frecuencia de esta onda que enviamos.

Bibliografía:

Figura 7

[1]http://www.ucontrol.com.ar/wiki/index.php?title=Comunicaci%C3%B3n_inal%C3%A1mbrica_entre_PICs

[2] http://www.robodance.com/nintendo-wii-i-sobot.php

[3] http://hackaday.com/2009/04/05/wiimote-controlled-hexapods/

[4] http://www.lynxmotion.com/c-117-phoenix.aspx

- Microcontroladores:

[5] http://es.wikipedia.org/wiki/Microcontrolador

- Módulos RF:

[6] http://en.wikipedia.org/wiki/Amplitude-shift_keying

[7] http://en.wikipedia.org/wiki/Frequency-shift_keying

2 Estudio de viabilidad.

2.1 Componentes:

1x Mando Play Station

2x joysticks analógicos

1x pilas 9V

1x Conector bornes pila 9V

1x Regulador de tensión LM2575 (SMD)

1x Pic 16f876A (SMD)

1x Cristal de 20 MHz (SMD)

1x Conector banda plana (SMD)

1x tira pins hembra

1x tira de pins macho

Condensadores: 2x 22pF (SMD)

1x 100nF (SMD)

1x 100µF

1x 330µF

Bobinas: 1x 330µH, 0,9 A

Diodos: 1x 1N5819

1x 1N4007

1x Diodo led rojo cuadrado

Resistencias SMD: 2x 0Ω, puentes

1x 150Ω

18x 10KΩ

Módulos emisor y receptor de RF de la casa AUREL 433.92 MHz (ASK)

Placa de fibra de vidrio doble cara.

Cable

2.2 Herramientas (hardware y software)

2.2.1 Hardware necesario:

Realización de la pcb:

Impresora.

Papel trasparente.

Insoladora del taller de electrónica de la caparrella.

Revelador y atacador del taller de electrónica de la caparrella.

Minitaladro

Brocas de entre 0,75mm a 2mm, propias.

Soldador

Estaño

Desarrollo del software del proyecto:

Programador Pickit 2 clone, propio.

Ordenador propio.

Pruebas y medidas:

Tester y osciloscopio, el primero propio, el segundo del taller de electrónica.

Placa protoboard, propia.

2.2.2 Software:

Desarrollo de esquema eléctrico y layout: Proteus Profesional

Desarrollo de software: Pic simulator IDE

Grabador de microcontroladores: PICKIT 2

2.3 Conocimientos:

Necesarios para el desarrollo de esquema eléctrico y layout, con “Proteus”, Adquirido el curso pasado del ciclo

Programación del proyectó “Pic Basic”, con “Pic simulator IDE”, adquirido el curso pasado del ciclo y programación de los módulos RF adquisición del mismo en un futuro, este 2º curso en el crédito Diseño de prototipos.

2.4 Estudio de costes:

Producto RS Amidata Farnell mse bilbaoCódigo Precio

sin IVAPrecio

con IVACódigo Precio

sin IVAPrecio

con IVAPrecio sin IVA

Precio con IVA

Cristal 20MHz

1 226-1869 1,6 € 1,88 € 1640878 1,70 €2,01 €

interruptor 1 702-3634 0,458 € 0,54 € 1123876 1,06 € 1,25 €Emisor RF

Aurel1 11,50 € 13,57 €

Receptor RF Aurel

1 6 € 7,08 €

LM2575 1 460-972 6,00 € 7,08 € 1469170 6,80 € 8,02 €Condensador

22pF2 211-4886 0,071 €

0,08 €71464 0,05 €

0,06 €

Condensador 100µF

1 1855321 0,48 €0.57 €

Condensador 100µF

1 703-7396 0,864 €1,02 €

1144642 1,28 €1,51 €

Condensador 330µF

1 703-7242 0,343 €0,40 €

1144688 0,42 €0,50 €

Bobina 330µH

1 715-6781 4,29 €5,06 €

1077018 4,50 €5,31 €

Resistencias 10KΩ

18 1739026 0.12 €0.14 €

Diodo 1N5819

1 486-4460 0,20 €0,24 €

9801219 0,192 €0,23 €

TOTALCantidades resaltadas son las

que se han adquirido40,25

El resto de los componentes ya los poseía con anterioridad o se han pedido en sample, como es el caso del PIC16F876A (soic 300).

3 Planificación.

4 Esquema del proyecto (Schematic).

5 PCB del proyecto (Layout).

5 Imagen real del prototipo.

Placa principal mando

Placa principal mando

7 Software (Programa).

‘ Configuración de puertos, conversores analógico- digital, frecuencia 20MHz‘**************************************************************Define CLOCK_FREQUENCY = 20Hseropen 4800ADCON1 = 0x0eConfig PORTB = InputTRISC = %10111111Config PORTA = Input

‘Definición de variables‘*************************************************************Dim xi As WordDim yi As WordDim xd As WordDim yd As WordDim tri As ByteDim cir As ByteDim cua As ByteDim x As ByteDim arr As ByteDim aba As ByteDim izq As ByteDim der As ByteDim sel As ByteDim str As ByteDim ana As ByteDim l3 As ByteDim r3 As ByteDim l1 As ByteDim l2 As ByteDim r1 As ByteDim r2 As ByteDim contador As ByteDim grupo1 As ByteDim grupo2 As ByteDim envio1 As ByteDim envio2 As Byte‘ inicialización de variablesgrupo1 = 0grupo2 = 0envio1 = 0envio2 = 0

inicio: ‘inicio programa

grupo2 = 0grupo1 = 0

Gosub leerjoystick ‘subrutina de leer joystick analogicos

If PORTA.4 = 0 Then l3 = 1 ‘relacionar cada Puerto del pic con el boton del mandoIf PORTA.5 = 0 Then r3 = 1 ‘si esta el puerto a 0 el botón esta apretadoIf PORTB.0 = 0 Then r2 = 1If PORTB.1 = 0 Then r1 = 1If PORTB.2 = 0 Then tri = 1If PORTB.3 = 0 Then cir = 1If PORTB.4 = 0 Then x = 1If PORTB.5 = 0 Then cua = 1If PORTB.6 = 0 Then sel = 1If PORTB.7 = 0 Then str = 1If PORTC.0 = 0 Then l2 = 1If PORTC.1 = 0 Then der = 1If PORTC.2 = 0 Then arr = 1If PORTC.3 = 0 Then l1 = 1If PORTC.4 = 0 Then ana = 1If PORTC.5 = 0 Then izq = 1If PORTC.7 = 0 Then aba = 1

Gosub leerrl ‘subrutina este grupo de botones englobado en una variable.Gosub leerflebot ‘subrutina este grupo de botones englobado en una variable.Gosub enviar ‘ subrutina envió de las variables anteriores y el valor de joysticks

If PORTA.4 = 1 Then l3 = 0 ‘si esta el puerto a 0 el botón esta apretadoIf PORTA.5 = 1 Then r3 = 0If PORTB.0 = 1 Then r2 = 0If PORTB.1 = 1 Then r1 = 0If PORTB.2 = 1 Then tri = 0If PORTB.3 = 1 Then cir = 0If PORTB.4 = 1 Then x = 0If PORTB.5 = 1 Then cua = 0If PORTB.6 = 1 Then sel = 0If PORTB.7 = 1 Then str = 0

If PORTC.0 = 1 Then l2 = 0If PORTC.1 = 1 Then der = 0If PORTC.2 = 1 Then arr = 0If PORTC.3 = 1 Then l1 = 0If PORTC.4 = 1 Then ana = 0If PORTC.5 = 1 Then izq = 0If PORTC.7 = 1 Then aba = 0

Goto inicio ‘vuelta al inicioEnd ‘ fin de programa

leerjoystick: ‘ leer cada señal analogical de los joysticks y ponerla en su respective variable.

Adcin 0, xdAdcin 1, ydAdcin 2, xiAdcin 3, yi

Return leerflebot: 'Flechas y simbolos, inplementacion de los botones en una única variable

grupo1 = 0grupo2 = 0

If tri = 1 Thengrupo1 = 1grupo2 = grupo2 + grupo1

Endif

If cua = 1 Thengrupo1 = 2grupo2 = grupo2 + grupo1

Endif

If cir = 1 Thengrupo1 = 4grupo2 = grupo2 + grupo1

Endif

If x = 1 Thengrupo1 = 8grupo2 = grupo2 + grupo1

Endif

If arr = 1 Thengrupo1 = 16grupo2 = grupo2 + grupo1

Endif

If der = 1 Thengrupo1 = 32grupo2 = grupo2 + grupo1

Endif

If izq = 1 Thengrupo1 = 64grupo2 = grupo2 + grupo1

Endif

If aba = 1 Thengrupo1 = 128grupo2 = grupo2 + grupo1

Endif

envio1 = grupo2 ‘ igualar la variable resultante a la que se envia

Return

leerrl: 'botones "L", "R", "str", "sel , igual que los botones anteriores

grupo1 = 0grupo2 = 0

If r1 = 1 Thengrupo1 = 1grupo2 = grupo2 + grupo1

EndifIf r2 = 1 Then

grupo1 = 2grupo2 = grupo2 + grupo1

Endif

If r3 = 1 Thengrupo1 = 4grupo2 = grupo2 + grupo1

EndifIf str = 1 Then

grupo1 = 8grupo2 = grupo2 + grupo1

EndifIf l1 = 1 Then

grupo1 = 16grupo2 = grupo2 + grupo1

EndifIf l2 = 1 Then

grupo1 = 32grupo2 = grupo2 + grupo1

EndifIf l3 = 1 Then

grupo1 = 64grupo2 = grupo2 + grupo1

Endif

If sel = 1 Thengrupo1 = 128grupo2 = grupo2 + grupo1

Endifenvio2 = grupo2

Return enviar: ‘envio de las variables por el RFWaitMs 10Hserout "WI", envio1, "FI"WaitMs 10Hserout "WI", envio2, "FI"WaitMs 10Hserout "WI", xd, "FI"WaitMs 10Hserout "WI",yd, "FI"WaitMs 10Hserout "WI", xi, "FI"WaitMs 10Hserout "WI", yi, "FI"WaitMs 10

Return

8 Conclusiones: