MANDO DE LA PLAY STATION POR RADIO FRECUENCIA

Anuncio
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:
Descargar