robot controlado por infrarojo
TRANSCRIPT
-
8/18/2019 Robot Controlado Por Infrarojo
1/15
Robot controlado por Infrarrojos
Para empezar debemos identificar todas las partes que necesitaremos para la
construcción de un robot de tipo vehículo:
- Chasis y ruedas: Todo robot necesita un cuerpo, un chasis que le dé
estabilidad y robustez y que permitirá que se unan el resto de piezas para
formar el conjunto del robot. n mi caso, tal y como se ve en la si!uiente ima!en, he
dise"ado e impreso en #$ un chasis en plástico P%&, perfecto para sujetar '
servomotores y un &rduino ()*. $ispone de un peque"o cajón trasero para poder
!uardar una batería de + y justo debajo de dicho cajón -&unque no se ve en la
ima!en, una rueda loca. $el mismo modo necesitará unas ruedas para desplazarse.
)o es necesario que sean tan bestias como las que utilizo yo :D.- Microcontrolador: )ecesitará un cerebro para poder controlarlo, en mi caso
utilizo un Arduino UNO, aunque cualquier otro &rduino o microcontrolador es
válido.
- Motores: Todo vehículo necesita de motor, yo voy a utilizar 2 servomotores
trucados de modo que sean capaces de irar !"#$. Podemos ver como
trucar un servomotor para que !ire #/01 en este tutorial: %C&mo trucar servos
'utaba (!##!)*
- +river de potencia para motores: Para poder alimentar los motores
independientemente del control, deberemos utilizar un driver de potencia que permita
el !iro en ambos sentidos de los motores. 2isten muchos drivers de potencia,
el ,2!+ es un driver formado interiormente por un doble puente en 3 capaz de
manejar car!as peque"as como por ejemplo, motores de corriente continua. s muy
sencillo de utilizar, económico y suficiente para este proyecto. &quí podemos ver su
datasheet: ,2!+ .uadruple /al0-/ +rivers
- Alimentaci&n del con1unto: stos robots normalmente necesitan de
varias tensiones de alimentaci&n para poder alimentar correctamente todas
las partes. 4omo no es muy eficaz disponer de ' o # baterías para alimentar unmismo conjunto, he realizado un 5shield casero6 para &rduino ()* donde conectar7
una batera de 3 como la de la ima!en.
ste shield diri!irá por una parte los + de la batería al pin in de &rduino. ste pin
in acepta tensiones recomendadas de entre 8 y 9', que posteriormente re!ulará
a para la alimentación del microcontrolador &tme!a#';P.
http://electronicavm.wordpress.com/2011/11/18/como-trucar-servos-futaba-s3003/http://electronicavm.wordpress.com/2011/11/18/como-trucar-servos-futaba-s3003/http://electronicavm.wordpress.com/2011/11/18/como-trucar-servos-futaba-s3003/http://www.ti.com/lit/ds/symlink/l293.pdfhttp://www.ti.com/lit/ds/symlink/l293.pdfhttp://electronicavm.wordpress.com/2011/11/18/como-trucar-servos-futaba-s3003/http://electronicavm.wordpress.com/2011/11/18/como-trucar-servos-futaba-s3003/
-
8/18/2019 Robot Controlado Por Infrarojo
2/15
& su vez, el shield dispone de un reulador de tensi&n ,M45#", que re!ulará
los + de la batería a / para la alimentación de los motores.
-
8/18/2019 Robot Controlado Por Infrarojo
3/15
%a construcción del robot es a elección de cada uno evidentemente, yo decidí poner
los servomotores en la parte delantera y una rueda loca detrás.
(na vez construido el robot, entremos en la electrónica que hará funcionar el
conjunto.
9l microcontrolador en mi caso es una placa Arduino UNO sobre la
que va montado un shield casero que he realizado, veamos el esquema
electr&nico de dicho shield:
&quí pod7is descar!ar los archivos del dise"o del shield, tanto el esquema electrónico
como el layout de la placa: Shield para robot controlado por infrarrojos en
OrCAD 10.5.
(Link actualiado !5"0!"!015#.
https://mega.co.nz/#!Kc1nWZzK!nmdI8oow3ienTqJjOoS3y51QWcmHHKOnlL-GlBQQ0PAhttps://mega.co.nz/#!Kc1nWZzK!nmdI8oow3ienTqJjOoS3y51QWcmHHKOnlL-GlBQQ0PAhttps://mega.co.nz/#!Kc1nWZzK!nmdI8oow3ienTqJjOoS3y51QWcmHHKOnlL-GlBQQ0PAhttps://mega.co.nz/#!Kc1nWZzK!nmdI8oow3ienTqJjOoS3y51QWcmHHKOnlL-GlBQQ0PA
-
8/18/2019 Robot Controlado Por Infrarojo
4/15
4omo he hecho otras veces, he dividido el esquema electrónico en # partes
numeradas:
9l cuadro n;mero
-
8/18/2019 Robot Controlado Por Infrarojo
5/15
numerando los pines observamos los si!uientes:
-
-
8/18/2019 Robot Controlado Por Infrarojo
6/15
cumplirán los valores dados en la tabla u ocurrirá e2actamente lo contrario a lo que
e2plica la tabla.
- y B /9A (7ND AN+ >6OUN+: stos pines irán conectados a @)$?
-
8/18/2019 Robot Controlado Por Infrarojo
7/15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Twitter: @iPadNanito
#include
#include // i!reria "nrarro$os
// Pin donde va conectado el sensor T%&P1'()
#deine "*P"N +,
// "nstancia de la li!reria "*
NE"*rcv ir"*P"N
// Pines de los motores
#deine motor1Pin1
#deine motor1Pin2 10
#deine motor2Pin1 ,
#deine motor2Pin2
// odi3os correspondientes a los !otones del mando a distancia
#deine +E+NTE 4144,22)0
#deine +T*+% 4010)(,)40#deine E*E5+ 42')222'20
#deine "678"E*+ ()102,)0
#deine %T&P 40'')2,0
unsi3ned lon3 ircode // 9aria!le para almacenar el codi3o reci!ido
void setup
// eclaramos los motores como salida
pin;odemotor1Pin1< &8TP8T
pin;odemotor1Pin2< &8TP8T
pin;odemotor2Pin1< &8TP8T
pin;odemotor2Pin2< &8TP8T
ir.!e3in // "niciamos la recepcion inrarro$a
=
void loop
w>ile ir.availa!le // ;ientras ?ue el sensor este disponi!le...
// eemos almacenamos el codi3o en la varia!le ircode
ircode A ir.read
i ircode AA +E+NTE adelante //%i el codi3o reci!ido A +E+NTE
i ircode AA +T*+% atras //9amos >acia adelanteB ... i ircode AA E*E5+ derec>a
i ircode AA "678"E*+ iC?uierda
else i ircode AA %T&P parar
=
=
void adelante // "r adelante
-
8/18/2019 Robot Controlado Por Infrarojo
8/15
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
di3italDritemotor1Pin1< 5"5
di3italDritemotor1Pin2< &D
di3italDritemotor2Pin1< 5"5
di3italDritemotor2Pin2< &D
=
void atras // "r atras
di3italDritemotor1Pin1< &D
di3italDritemotor1Pin2< 5"5
di3italDritemotor2Pin1< &D
di3italDritemotor2Pin2< 5"5
=
void derec>a // "r a la derec>a
di3italDritemotor1Pin1< &D
di3italDritemotor1Pin2< 5"5
di3italDritemotor2Pin1< 5"5
di3italDritemotor2Pin2< &D
=
void iC?uierda // "r a la iC?uierda
di3italDritemotor1Pin1< 5"5
di3italDritemotor1Pin2< &D di3italDritemotor2Pin1< &D
di3italDritemotor2Pin2< 5"5
=
void parar // Parar motores
di3italDritemotor1Pin1< &D
di3italDritemotor1Pin2< &D
di3italDritemotor2Pin1< &D
di3italDritemotor2Pin2< &D
=
sto es todo, un robot sencillo y muy Etil si lo utilizamos de un modo didactico.
4ualquier duda, crítica o corrección, en los comentarios.
-
8/18/2019 Robot Controlado Por Infrarojo
9/15
VIDEO DEL ROBOT: https://www.youtube.co/watch! "#$$%fO&'(o)I
6ecepci&n 76 con Arduino*
3ace tiempo que ven!o queriendo toquetear un poco las tecnolo!ías inalámbricas, yaque nos permiten la transmisión de datos entre dos puntos sin necesidad de utilizar
cables para conectarlos, lo que es una !ran ventaja en muchos proyectos.
3oy por hoy, hay muchos tipos de tecnolo!ía inalámbrica como Jifi, bluetooth,
radiofrecuencia, infrarrojos, !prs, !sm, etc. Fo me voy a centrar en los in0rarro1os.
sta tecnolo!ía conocida como 7r+A -7n0rared +ata
AssociationI es desarrollada por 3P, D>< y =3&GP allá por 9++# y está basada
en rayos de luz que se mueven en el espectro infrarrojo.-Dnvisible a los ojos humanos.
=e trata de mediante emisores y receptores -normalmente leds de ondas infrarrojas,
establecer comunicación desde un punto al otro. s necesario que emisor y receptor
se 5vean6, sin obstáculos de por medio.
2isten muchos protocolos de comunicación infrarroja, ya que este tipo de tecnolo!ía
inalámbrica se ha utilizado en muchos dispositivos como portátiles, móviles, P$&Ks, y
los que más conocemos y se!uro todos tenemos en casa, los mandos de 3.
Fo voy a utilizar el protocolo )4, protocolo que utilizan los mandos universales de
T.
(iue leyendoKK
http://electronicavm.wordpress.com/2011/09/20/recepcion-ir-con-arduino-protocolo-nec/http://electronicavm.wordpress.com/2011/09/20/recepcion-ir-con-arduino-protocolo-nec/
-
8/18/2019 Robot Controlado Por Infrarojo
10/15
Para empezar, necesitamos de un receptor de infrarrojos. Fo en mi caso, destroz7 un
T de ';6 hace tiempo para reciclaje electrónico, y uno de los componentes
reciclados fue un receptor (O8
-
8/18/2019 Robot Controlado Por Infrarojo
11/15
BI l comando J5 bitsI
"I l inverso ló!ico del comando J5 bitsI
4I (n pulso de /'. Ms para indicar el final de la transmisión del mensaje.
%a si!uiente ima!en ilustra perfectamente el mensaje transmitido en la pulsación de
una tecla de un mando a distancia para una dirección 00000000b y un
comando 90990909b.
Para mi suerte, e2iste una librería para &rduino que se encar!a de recibir esta se"al y
entre!arnos un códi!o he2adecimal a partir de los B bytes -#' bits enviados por el
mando para poder distin!uir cada una de las teclas que hemos pulsado y así poder
confi!urar las teclas del mando a nuestro antojo.
%a librería en cuestión, se llama N9C76rcv y podemos descar!arla de aquí:
'C)*rc+
&parcamos la librería un momento y procedemos al montaje del circuito, utilizando el
esquema que viene en el datasheet del receptor T=*P9'#; para conectarlo al
&rduino.
http://lemio.nl/files/necirrcv.ziphttp://lemio.nl/files/necirrcv.zip
-
8/18/2019 Robot Controlado Por Infrarojo
12/15
$ondevemos que el DG Geceiver -T=*P9'#; se conecta por su pin s a una resistencia
-900O valen y esta a . l pin @)$ conectado a masa. F el pin *(T, al
microcontrolador, que en nuestro caso será el &rduino.
%isto el circuito y conectado al &rduino, el si!uiente paso será recibir los c&dios
de los botones del mando que vayamos a utilizar en nuestro proyecto, por lo
que car!amos en el entorno de &rduino el e1emplo que viene en la
librería N9C76rcv y lo ejecutamos.
ste ejemplo viene preparado para mostrar por el =erial
-
8/18/2019 Robot Controlado Por Infrarojo
13/15
Fa utilizando estos códi!os o su correspondiente en decimal -&l mostrarlos por el
serial monitor quitamos el formateo en he2adecimal de modo que
quede: (erial.println-ircode podemos controlar cualquier tipo de elemento
conectado al &rduino con un mando de T.
Fo sin complicarme mucho, conect7 un led 6>= al Arduino y con el mando a
distancia podemoscontrolar el apaado y encendido de los distintos
colores del led.
stá pro!ramado para controlar el led de la si!uiente manera.
Q 4on el botón E8oerF del mando apa!amos el led.
Q 4on el botón E
-
8/18/2019 Robot Controlado Por Infrarojo
14/15
Q &rchivos librería protocolo )4 para &rduino: 'C)*rc+
L 4ódi!o ejemplo de control de un led G@> con mando a distancia: Led*)*.pde
,ed6>=76*pde// %Fetc> para controlar un led *G con un
// mando a distancia "* con protocolo NE
#include HDPro3ram.>I
#include HNE"*rcv.>I //i!reria del protocolo NE
#deine "*P"N ) // Pin del receptor "*
NE"*rcv ir"*P"N
int ro$o A //Pin del color *&J& del led *G
int verde A 10 //Pin del color 9E*E del led *G
int aCul A 11 //Pin del color +68 del led *G
lon3 power A 422)0)')0 //odi3o correspondiente al !oton P&DE* del
mando a distancia
lon3 !utro$o A 4112400 //odi3o correspondiente al !oton 1 del mando
a distancia
lon3 !utverde A 4144(20 //odi3o correspondiente al !oton 2 del mando
a distancia
lon3 !utaCul A 41'',240 //odi3o correspondiente al !oton ( del mando
a distancia
void setup
//%erial.!e3in00 //"niciamos comunicacion serie
ir.!e3in //"niciamos la recepcion "*
pin;odero$o< &8TP8T
pin;odeverdeile ir.availa!le
ircode A ir.read //eemos el codi3o del !oton pulsado
i ircode AA power //%i el !oton de power... apa3amos el led
di3italDritero$o< &D
di3italDriteverde< &D
di3italDriteaCul< &D
=
else i ircode AA !utro$o di3italDritero$o
-
8/18/2019 Robot Controlado Por Infrarojo
15/15
else i ircode AA !utaCul di3italDriteaCul