MANDO DE LA PLAY STATION POR RADIO FRECUENCIA Miguel Colomina Benedet 30/05/2011 Í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. Figura 6: Familia de microcontroladores PIC16F... 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. 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. Figura 7 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: [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 Cristal 20MHz interruptor Emisor RF Aurel Receptor RF Aurel LM2575 Condensador 22pF 1 1 1 RS Amidata Código Precio Precio sin IVA con IVA 226-1869 1,6 € 1,88 € 1640878 Farnell Precio sin IVA 1,70 € 702-3634 1123876 1,06 € 0,458 € 0,54 € Código Precio con IVA 2,01 € 1,25 € 1 1 2 460-972 211-4886 6,00 € 0,071 € 7,08 € 0,08 € 1469170 71464 6,80 € 0,05 € mse bilbao Precio Precio sin IVA con IVA 8,02 € 0,06 € 11,50 € 13,57 € 6€ 7,08 € Condensador 1 100µF Condensador 1 703-7396 100µF Condensador 1 703-7242 330µF Bobina 1 715-6781 330µH Resistencias 18 10KΩ Diodo 1 486-4460 1N5819 TOTAL Cantidades resaltadas son las que se han adquirido 1855321 0,48 € 0.57 € 0,864 € 1144642 1,28 € 1,02 € 0,343 € 1,51 € 1144688 0,42 € 0,40 € 4,29 € 0,50 € 1077018 4,50 € 5,06 € 5,31 € 1739026 0.12 € 9801219 0,192 € 0.14 € 0,20 € 0,24 € 0,23 € 40,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 = 20 Hseropen 4800 ADCON1 = 0x0e Config PORTB = Input TRISC = %10111111 Config PORTA = Input ‘Definición de variables ‘************************************************************* Dim xi As Word Dim yi As Word Dim xd As Word Dim yd As Word Dim tri As Byte Dim cir As Byte Dim cua As Byte Dim x As Byte Dim arr As Byte Dim aba As Byte Dim izq As Byte Dim der As Byte Dim sel As Byte Dim str As Byte Dim ana As Byte Dim l3 As Byte Dim r3 As Byte Dim l1 As Byte Dim l2 As Byte Dim r1 As Byte Dim r2 As Byte Dim contador As Byte Dim grupo1 As Byte Dim grupo2 As Byte Dim envio1 As Byte Dim envio2 As Byte ‘ inicialización de variables grupo1 = 0 grupo2 = 0 envio1 = 0 envio2 = 0 inicio: ‘inicio programa grupo2 = 0 grupo1 = 0 Gosub leerjoystick ‘subrutina de leer joystick analogicos If PORTA.4 = 0 Then l3 = 1 ‘relacionar cada Puerto del pic con el boton del mando If PORTA.5 = 0 Then r3 = 1 ‘si esta el puerto a 0 el botón esta apretado If PORTB.0 = 0 Then r2 = 1 If PORTB.1 = 0 Then r1 = 1 If PORTB.2 = 0 Then tri = 1 If PORTB.3 = 0 Then cir = 1 If PORTB.4 = 0 Then x = 1 If PORTB.5 = 0 Then cua = 1 If PORTB.6 = 0 Then sel = 1 If PORTB.7 = 0 Then str = 1 If PORTC.0 = 0 Then l2 = 1 If PORTC.1 = 0 Then der = 1 If PORTC.2 = 0 Then arr = 1 If PORTC.3 = 0 Then l1 = 1 If PORTC.4 = 0 Then ana = 1 If PORTC.5 = 0 Then izq = 1 If 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 If PORTA.5 = 1 Then r3 = 0 If PORTB.0 = 1 Then r2 = 0 If PORTB.1 = 1 Then r1 = 0 If PORTB.2 = 1 Then tri = 0 If PORTB.3 = 1 Then cir = 0 If PORTB.4 = 1 Then x = 0 If PORTB.5 = 1 Then cua = 0 If PORTB.6 = 1 Then sel = 0 If PORTB.7 = 1 Then str = 0 ‘si esta el puerto a 0 el botón esta apretado If PORTC.0 = 1 Then l2 = 0 If PORTC.1 = 1 Then der = 0 If PORTC.2 = 1 Then arr = 0 If PORTC.3 = 1 Then l1 = 0 If PORTC.4 = 1 Then ana = 0 If PORTC.5 = 1 Then izq = 0 If PORTC.7 = 1 Then aba = 0 Goto inicio End ‘vuelta al inicio ‘ fin de programa leerjoystick: ‘ leer cada señal analogical de los joysticks y ponerla en su respective variable. Adcin 0, xd Adcin 1, yd Adcin 2, xi Adcin 3, yi Return leerflebot: 'Flechas y simbolos, inplementacion de los botones en una única variable grupo1 = 0 grupo2 = 0 If tri = 1 Then grupo1 = 1 grupo2 = grupo2 + grupo1 Endif If cua = 1 Then grupo1 = 2 grupo2 = grupo2 + grupo1 Endif If cir = 1 Then grupo1 = 4 grupo2 = grupo2 + grupo1 Endif If x = 1 Then grupo1 = 8 grupo2 = grupo2 + grupo1 Endif If arr = 1 Then grupo1 = 16 grupo2 = grupo2 + grupo1 Endif If der = 1 Then grupo1 = 32 grupo2 = grupo2 + grupo1 Endif If izq = 1 Then grupo1 = 64 grupo2 = grupo2 + grupo1 Endif If aba = 1 Then grupo1 = 128 grupo2 = 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 = 0 grupo2 = 0 If r1 = 1 Then grupo1 = 1 grupo2 = grupo2 + grupo1 Endif If r2 = 1 Then grupo1 = 2 grupo2 = grupo2 + grupo1 Endif If r3 = 1 Then grupo1 = 4 grupo2 = grupo2 + grupo1 Endif If str = 1 Then grupo1 = 8 grupo2 = grupo2 + grupo1 Endif If l1 = 1 Then grupo1 = 16 grupo2 = grupo2 + grupo1 Endif If l2 = 1 Then grupo1 = 32 grupo2 = grupo2 + grupo1 Endif If l3 = 1 Then grupo1 = 64 grupo2 = grupo2 + grupo1 Endif If sel = 1 Then grupo1 = 128 grupo2 = grupo2 + grupo1 Endif envio2 = grupo2 Return enviar: ‘envio de las variables por el RF WaitMs 10 Hserout "WI", envio1, "FI" WaitMs 10 Hserout "WI", envio2, "FI" WaitMs 10 Hserout "WI", xd, "FI" WaitMs 10 Hserout "WI",yd, "FI" WaitMs 10 Hserout "WI", xi, "FI" WaitMs 10 Hserout "WI", yi, "FI" WaitMs 10 Return 8 Conclusiones: