Robot Arduino controlado mediante sensores y con...

48

Click here to load reader

Transcript of Robot Arduino controlado mediante sensores y con...

Page 1: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

Robot Arduino controlado mediante sensores y con respuestas sobre actuadores Asier Pérez de Lazarraga Mangado Grado en Tecnologías de Telecomunicación Arduino José López Vicario Pere Touset Peiró Junio de 2017

Page 2: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

Esta obra está sujeta a una licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 España de Creative Commons

Page 3: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

i

FICHA DEL TRABAJO FINAL

Título del trabajo: Robot Arduino controlado mediante sensores y con respuestas sobre actuadores

Nombre del autor: Asier Pérez de Lazarraga Mangado

Nombre del consultor/a: José López Vicario

Nombre del PRA: Pere Touset Peiró

Fecha de entrega (mm/aaaa): 06/2017

Titulación: Grado de Tecnologías de Telecomunicación

Área del Trabajo Final: Arduino

Idioma del trabajo: Castellano

Palabras clave Arduino. Robótica. Sensórica.

Resumen del Trabajo (máximo 250 palabras):

Las tecnologías IT hoy en día están amplia y totalmente asentadas en ámbitos domésticos y empresariales. En este contexto, están surgiendo nuevos conceptos como el Big Data o el Internet of Thinks en los que la sensórica ha adquirido un papel fundamental. Y es que los sensores son los encargados de definir el entorno tomando todo tipo de datos de él.

Estos datos como tal no serían de mayor utilidad sin su análisis y/o procesamiento. Microcontroladores o microprocesadores son usados para transformarlos a información útil con la que se pueda tomar alguna decisión con el fin de realizar alguna acción. De esta forma, con una interconexión y comunicación entre dispositivos adecuada, se automatizan simples o complejas tareas, en función de las variables de entrada.

Con todo ello, en este trabajo se implementa un robot gobernado por un microcontrolador Arduino que actúa en función de las señales que reciba como entradas. Además, pretende realizar un estudio de las posibilidades que actualmente hay en el mercado para la ampliación de este robot o el desarrollo de sistemas más complejos, visto que las oportunidades de crecimiento en ésta u otra solución son enormemente amplias.

Y es que, por todo lo expuesto, se concluye que la automatización de procesos o trabajos tiene un recorrido enorme en las que las tecnologías de información y telecomunicación son parte fundamental. Existen además muchas necesidades que pueden ser cubiertas por soluciones que pueden ser desarrolladas con herramientas que están al alcance de todo el mundo.

Page 4: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

ii

Abstract (in English, 250 words or less):

Nowadays IT technologies are very present at home and in most enterprises. In this context, new concepts such as Big Data or Internet of Thinks are emerging, in which sensory has acquired a fundamental role. This is because the sensors are the ones in charge of defining the environment taking all type of data from it. That data would be useless without its analysis and / or processing. Microcontrollers or microprocessors are used to transform the data into useful information with which a decision can be made in order to perform some action. In this way, with an appropriate interconnection and communication between devices, simple or complex tasks, are automated depending on the input variables. With this in mind, a robot controlled by an Arduino microcontroller is implemented in this work. This robot acts in function of the signals received as inputs. Additionally, it is intended to perform a study of the possibilities that currently exist in the market for the expansion of this robot, or the development of more complex systems. Growth opportunities in this or another solution are very big. And because of all the above, it is concluded that processes or task automation in which information and telecommunication technologies are fundamental has an extremely promising future. And there are also a lot of needs that can be covered by solutions that can be developed with tools that are accessible to everyone.

Page 5: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

iii

Índice

1. Introducción .................................................................................................... 1 1.1 Contexto y justificación del Trabajo ........................................................... 1 1.2 Objetivos del Trabajo ................................................................................. 1 1.3 Enfoque y método seguido ........................................................................ 2 1.4 Planificación del Trabajo ........................................................................... 3

1.5 Breve sumario de productos obtenidos ..................................................... 4 1.6 Breve descripción de los otros capítulos de la memoria............................ 4

2. Microcontrolador vs microprocesador ............................................................ 5 3. Robot .............................................................................................................. 7

3.1 Módulo Bluetooth ...................................................................................... 8

3.1.1 Diferentes estándares de Bluetooth .................................................. 9 3.1.2 Otras alternativas inalámbricas ....................................................... 10

3.2 Sensórica ................................................................................................ 10 3.2.1 Sensores integrados en la placa ..................................................... 10 3.2.2 Sensores equipados al robot conectados por RJ25 ........................ 12 3.2.3 Otros tipos de sensores en el mercado .......................................... 15

3.3 Actuadores .............................................................................................. 20 3.3.1 Actuadores integrados en la placa .................................................. 20 3.3.2 Actuadores equipados al robot ....................................................... 20 3.3.3 Otros tipos de actuadores en el mercado ....................................... 21

3.4 Puertos de expansión .............................................................................. 21

3.5 Puerto serie ............................................................................................. 22 4. Entorno de programación ............................................................................. 25

4.1 mBlock ..................................................................................................... 25 4.2 Makeblock ............................................................................................... 26

4.3 Arduino .................................................................................................... 28 4.3.1 Código Arduino ............................................................................... 29

5. Obtención y procesamiento de datos ........................................................... 33 6. Valoración económica del trabajo ................................................................ 34

7. Conclusiones ................................................................................................ 35 8. Glosario ........................................................................................................ 36 9. Bibliografía ................................................................................................... 37 10. Anexos ....................................................................................................... 38

Page 6: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

iv

Lista de figuras

Figura 1: Raspberry Pi 3 Model B ...................................................................... 6

Figura 2: Robot gobernado por placa MeAuriga ................................................. 7 Figura 3: Placa ME Auriga [5]............................................................................. 8 Figura 4: MPU-6050. Orientación de ejes ........................................................ 12 Figura 5: Sensor de ultrasonidos ...................................................................... 13 Figura 6: Limitaciones en el sensor de ultrasonidos ......................................... 14

Figura 7: Sensor seguimiento de línea (LED+fotodiodo) .................................. 14 Figura 8: Sensor fotoeléctrico como detector de paso ..................................... 15 Figura 9: Sensor PIR. Principio de funcionamiento. ......................................... 17 Figura 10: Sensor inductivo. Principio de funcionamiento. ............................... 18

Figura 11: Sensor capacitivo. Principio de funcionamiento. ............................. 18 Figura 12: Final de carrera de palanca con rodillo ........................................... 19 Figura 13: Final de carrera de varilla ................................................................ 19

Figura 14: LED’s RGB ...................................................................................... 20 Figura 15: Arduino Mega (izq.) & ME Auriga (der.) pinout [5] ........................... 21 Figura 16: Puertos serie Bluetooth ................................................................... 23 Figura 17: Conexión Bluetooth con el robot ..................................................... 24

Figura 18: Monitor serie IDE Arduino ............................................................... 24 Figura 19: Programación Scratch en entorno mBlock ...................................... 25

Figura 20: Proyecto en Makeblock para Android .............................................. 26 Figura 21: Selección visual de puerto en Makeblock Android .......................... 27 Figura 22: Código scratch asociado a un objeto .............................................. 27

Figura 23: IDE Arduino ..................................................................................... 29 Figura 24: Programa de captura de tráfico serie RealTerm ............................. 33

Figura 25: Software de trazado y visualización de datos Kst ........................... 34

Page 7: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

v

Lista de ecuaciones

Ecuación 1: Velocidad del sonido en cm/s ....................................................... 13

Ecuación 2: Distancia sensor de ultrasonidos .................................................. 13

Lista de tablas

Tabla 1: Microprocesador vs microcontrolador ................................................... 5 Tabla 2: Bluetooth clásico vs BLE ...................................................................... 9

Tabla 3: Puertos de expansión RJ25 ............................................................... 22 Tabla 4: Presupuesto del Proyecto .................................................................. 34

Page 8: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

1

1. Introducción 1.1 Contexto y justificación del Trabajo

En la actualidad hay infinidad de sensores que pueden medir casi la totalidad de las magnitudes físicas o químicas que definen el entorno en el que se encuentran. Este hecho hace que estas mediciones puedan alimentar con gran cantidad de información sistemas ad-hoc o de propósito general. En base a este conocimiento del medio, el sistema puede definirlo con gran exactitud en cada instante con variables que le resulten de interés, y a partir de ello reaccionar de una forma o de otra. Y tanto es así que la sensórica es un pilar fundamental en conceptos como el internet de las cosas (Internet of Things en inglés y a menudo conocido por sus siglas IoT), Industria 4.0 o Smart Cities que tanto futuro tienen en el mundo de las IT (Tecnologías de la Información por las siglas en inglés de Information Technology). La robótica y la automatización son a su vez, ramas de la ingeniería que pueden aprovecharse de forma más natural de estas funciones. Por sus características, pueden ejercer fácilmente sobre actuadores que modifiquen de forma mecánica (y también eléctrica) manipulando objetos físicos a su alcance. Y es que estos dos campos han evolucionado de los movimientos repetitivos de los que principalmente se basaban en el pasado a interactuar según las variables de entrada en cada momento. Por otra parte, se ha extendido el movimiento “hágalo usted mismo” (DIY por sus siglas Do It Yourself) en el ámbito científico. Su expansión ha posibilitado que surja y se desarrolle Hardware libre con una comunidad muy amplia que da apoyo y soporte a diversas iniciativas de esta índole. Este hecho ha propiciado mejoras constantes y que exista cantidad de información y de repositorios para este tipo de material electrónico. Un claro exponente de estas ideas, y uno de los sistemas que más aceptación ha tenido, es Arduino. Por tanto, uniendo todos estos conceptos, se pretende construir un robot que se desplace controlado por Arduino capaz de interactuar con el medio. Este prototipo podrá ser desarrollado para tareas más complejas en el futuro incluyendo más inputs y outputs progresivamente según las necesidades que se vayan detectando.

1.2 Objetivos del Trabajo

Los objetivos principales del proyecto de este Trabajo de Fin de Grado son:

Construir un dispositivo robot controlado por Arduino que tenga capacidad de desplazamiento.

Page 9: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

2

Implementar una aplicación capaz de controlar sus movimientos de forma pasiva/preventiva o activa.

Además, se definen los siguientes objetivos secundarios:

El equipo deberá estar dotado de varios sensores de diferente tipo y estar interconectado y ser accesible mediante tecnología inalámbrica, por medio de Bluetooth.

Para conseguir la interactividad, se desarrollará una aplicación a cargar en el Arduino que defina las salidas en función de las entradas.

Debe ser ampliable. Es decir, que el sistema sea capaz de adaptarse fácilmente a nuevas necesidades que surjan a posteriori. Por tanto debe ser un sistema abierto que deberá estar bien documentado para su mantenimiento, versiones posteriores e incluso posibles modificaciones.

1.3 Enfoque y método seguido

Se ha optado por adquirir el conjunto de la placa y robot en un paquete cerrado comercializado por una empresa especializada en ello. La construcción de principio a fin de un robot que se moviese hubiera conllevado complicaciones sobre todo en el diseño de la parte mecánica. El proyecto, por consiguiente, ha consistido en montar y adaptar un producto existente y en desarrollar a partir de él varias alternativas y programas con el fin de conseguir los objetivos marcados. La cantidad de información relativa a Arduino que se encuentra en internet ha ayudado a avanzar hacia dicho propósito. Se ha aprovechado también para explorar en sectores que tienden a sacar partido de campos que se estudian en el sector de las telecomunicaciones. Así, este trabajo ha servido al autor (y puede servir a las personas que estén interesadas en ello) para la investigación, y puede servir como elemento de apoyo para la consulta y como punto de partida para el desarrollo de sistemas y proyectos de mayor alcance.

Page 10: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

3

1.4 Planificación del Trabajo

A continuación se presenta la planificación mediante diagrama de Gantt del Trabajo Fin de Grado:

Page 11: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

4

1.5 Breve sumario de productos obtenidos

Al finalizar el Proyecto se habrá desarrollado un robot controlado por un microcontrolador Arduino que será capaz de desplazarse e interactuar con el medio de una forma u otra en función de los parámetros de entrada que irá recogiendo mediante sensores conectados. Así mismo, deberá también responder con salidas luminosas o acústicas según se den las entradas.

1.6 Breve descripción de los otros capítulos de la memoria

En los siguientes capítulos de este documento se detallarán los elementos que han intervenido en la consecución de este trabajo: En el primer apartado de introducción se hace un repaso del contexto, estado del arte, objetivos y planificación seguida. En el segundo apartado se estudian las diferentes alternativas que existen a la hora de seleccionar el elemento central del robot: microcontroladores o microprocesadores. El tercer apartado se centra en el propio robot. Se detalla el hardware instalado para su interconexión inalámbrica con otros dispositivos, los sensores y actuadores que se instalan o pudieran ser instalados y las capacidades de expansión. Además se estudia el puerto serie que es fundamental para la comunicación del Arduino con otros dispositivos. En el cuarto capítulo se muestran diferentes entornos en los que podemos programar el equipo. Se repasan los propietarios del fabricante donde existe también una aplicación para dispositivos móviles, y el propio sistema de Arduino, con las diferencias que existen en cada uno de ellos. En el quinto apartado se verá, sin entrar en detalle, la posibilidad existente de capturar y procesar los datos con software ajeno al propio Arduino desde el ordenador. En el sexto apartado se muestra el presupuesto que se ha empleado para este proyecto. En el séptimo apartado, se reflejarán las conclusiones que se han sacado en la puesta en marcha de este proyecto. En los capítulos octavo, noveno y décimo están para consultar como referencia el glosario, la bibliografía y los anexos, respectivamente. En éste último, se recogen entre otras, partes de especificaciones de componentes.

Page 12: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

5

2. Microcontrolador vs microprocesador

Con la expansión del fenómeno maker se han ampliado enormemente las posibilidades de elección de todo tipo de componentes electrónicos. Una de las primeras decisiones que se deben tomar en la mayoría de proyectos de esta naturaleza es la de gobernar el dispositivo con un microprocesador o con un microcontrolador. En la siguiente tabla se hace un resumen de las principales características enfrentadas entre dos de los equipos de hardware (HW) libre más difundidos en la actualidad: el microprocesador Raspberry PI 3 y el microcontrolador Arduino Mega 2560:

Microprocesador (Raspberry Pi 3)

Microcontrolador (Arduino MEGA 2560)

CPU 4× ARM Cortex-A53, 1.2GHz ATmega2560. 16MHz

Memoria RAM 1GB LPDDR2 (900 MHz) en un circuito integrado aparte

8KB en el propio circuito integrado

Arquitectura 64 bits 8 bits

Velocidad de Operación

Rápida Lenta en comparación

Propósito Propósito general Propósito más específico

Entradas/Salidas digitales

40 GPIO pins E/S digitales: 54, de las cuales 15 PWM

Salidas analógicas

0 16

Video Broadcom VideoCore IV HDMI

N/A

Sistema Operativo

Raspberry: Raspbian, Windows CE…

N/A

Consumo eléctrico

Mayor Menor

Coste Mayor Menor

Interferencias

Más susceptibles a la interferencia electromagnética debido a su tamaño y a su menor nivel de integración

El alto nivel de integración reduce la interferencia electromagnética

Tabla 1: Microprocesador vs microcontrolador

Como puede comprobarse en la tabla 1, los microprocesadores son más potentes y más flexibles, y tienen mucha mayor capacidad de computación que los microcontroladores. Los microcontroladores, a su vez, están más enfocados a la electrónica y están más orientados al manejo de entradas y salidas. Así, en sistemas IoT, los equipos conectados a los sensores suelen estar gobernados por microcontroladores (recogida de datos), mientras que los equipos

Page 13: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

6

encargados a procesar la cantidad de información de entrada suelen ser microprocesadores. Por todo lo expuesto, para el propósito del presente Proyecto, se determina que un dispositivo Arduino es más óptimo que un microprocesador debido a que no se necesita un alto grado de computación ni de operaciones aritméticas con la información que se va a recoger, y sí una gran robustez a la hora de tomar los datos de las diferentes entradas y de producir los efectos requeridos en las diferentes salidas. El hecho de que no tenga un sistema operativo, hace que Arduino sea más sólido. En cualquier caso, en otro tipo de proyectos ambos conceptos son compatibles y pueden convivir perfectamente realizando cada uno de ellos tareas diferentes. Y tanto es así que existen módulos de expansión para interconectar de manera más sencilla placas Arduino y Raspberry.

Figura 1: Raspberry Pi 3 Model B

Page 14: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

7

3. Robot

Según la Real Academia Española (RAE), un robot es una “máquina o ingenio electrónico programable, capaz de manipular objetos y realizar operaciones antes reservadas solo a las personas”. En la figura 2 se muestra el robot construido en una de sus posibles formas.

Figura 2: Robot gobernado por placa MeAuriga

Éste está gobernado por una placa base Me Auriga basada en el microcontrolador Arduino Mega 2560, con 10 puertos de expansión RJ25 y varios sensores y módulos integrados. El detalle de la misma se refleja en la siguiente figura 3:

Page 15: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

8

Figura 3: Placa ME Auriga [5]

3.1 Módulo Bluetooth La placa ME Auriga cuenta con un módulo para conexión inalámbrica Bluetooth (es reemplazable) que soporta los protocolos Bluetooth 2.1, 3.0 y 4.0 y comunicación output a través del puerto serie. Su frecuencia de funcionamiento es de 2,4GHz, y hasta 115200 baudios y una distancia de operatividad de 10-15m en campo abierto. Las características del módulo son válidas para las necesidades del proyecto. Además Bluetooth es un estándar ampliamente extendido y compatible con los otros dispositivos que se utilizan (portátil y smartphone) con lo que facilita la compatibilidad. Alternativas como Zigbee son descartadas por este motivo. El módulo cuenta con un LED de color azul que se mantiene parpadeando cuando está a la escucha. Para conectarse vía Bluetooth lo primero que se tiene que hacer desde el PC o dispositivo móvil es activar el Bluetooth para buscar dispositivos cercanos. Si encuentra el BT del robot, el siguiente paso es enlazar los dispositivos. Al emparejarlos se solicitará una clave que se debe aceptar. Posteriormente, si se realiza la conexión, el LED del módulo pasará a azul fijo.

Page 16: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

9

3.1.1 Diferentes estándares de Bluetooth

El módulo BT equipado, como se ha comentado anteriormente, soporta diferentes estándares entre los que se encuentra el BT 4.0 en cuya especificación se encuentra el BLE (Bluetooth Low Energy). Esta variedad difiere de las clásicas en la finalidad para la que ha sido concebida. Mientras que en las antiguas versiones principalmente se buscaba la mayor velocidad de datos, en ésta, se pretende rebajar el consumo. Esta filosofía de bajo consumo aun a costa de reducción de velocidad está pensada para redes de sensores o IoT debido a que generalmente los datos a transmitir no deben ser de grandes volúmenes pero sí cada cierto tiempo y en equipos con baterías limitadas. De esta forma, el BLE se puede ajustar mejor a este tipo de entornos donde importa más el bajo consumo para que el dispositivo tenga más autonomía que la velocidad de transmisión. A continuación se recogen en una tabla las características enfrentadas entre un Bluetooth clásico tipo y BLE

Especificación BT clásico BLE

Frecuencia de uso 2.4GHz 2.4GHz

Rango de distancia 100m >100m

Tasa 1 – 3Mbps 125kbps – 1Mbps

Througput de aplicación

0.7 – 2.1Mbps 300kbps

Nodos esclavos activos 7 ilimitado

Latencia (desde la no conexión a envío de

datos) 100+ ms <6ms

Tiempo mínimo total para enviar datos

100ms 3ms

Voz permitida Sí No

Consumo de potencia 1W

(normalizado)

0.01 – 0.5W (dependiendo

aplicación)

Pico de consumo <30mA <15mA

Tabla 2: Bluetooth clásico vs BLE [8]

Por tanto, revisando las especificaciones, se podrías determinar que ambas opciones son buenas. BLE encaja mejor porque no existe necesidad de transmitir grandes volúmenes de información y haría que la autonomía del robot fuera mayor. Sin embargo, los equipos con los que se ha trabajado, no son compatibles con el BT4.0 por lo que se han conectado los equipos usando el estándar del Bluetooth clásico anterior a la versión 4.0.

Page 17: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

10

3.1.2 Otras alternativas inalámbricas

Wifi: existen módulos Wifi para Arduino. Con ellos, se consiguen velocidades mucho mayores y se pueden construir redes de dispositivos. Para el propósito de este TFG no son necesarias ninguna de las características que nos puede ofrecer. Además el consumo de Wifi es mucho mayor al del BT, con lo que se descartaría esta opción por ser menos adecuada.

NFC: esta tecnología queda descartada por la distancia de operación (<20cm) que no es compatible con las necesidades del proyecto.

ZigBee: se trata de una tecnología de bajo consumo y no alta velocidad de transferencia de datos muy similar a BLE y con distancias indoor de hasta 20m. Además tiene la ventaja de que puede ser configurado punto a multipunto [14]. El inconveniente reside en que la mayoría de dispositivos smartphones y ordenadores no están equipados para soportar esta tecnología, por lo que queda descartado en este proyecto, pero sí se considera buena alternativa para otro tipo de trabajos.

Tras analizar las alternativas más conocidas del mercado se determina que Bluetooth es la mejor solución de interconexión inalámbrica para este proyecto. Además, el robot ya viene equipado con un módulo por lo que no es necesario adquirir material extra que aumentase el presupuesto.

3.2 Sensórica

Según la RAE, un sensor es un “dispositivo que detecta una determinada acción externa, temperatura, presión, etc., y la transmite adecuadamente”. Se explican en este apartado los elementos de este tipo que se integran en el robot y algunos de los otros más extendidos que se pudieran integrar en mejoras o ampliaciones del robot.

3.2.1 Sensores integrados en la placa

Sensor de sonido: se trata de un sensor que se fundamenta en un micrófono de condensador electret cuyo principal componente es un amplificador de baja potencia LM386 de Texas Instruments. Con él se puede encender o apagar el robot con, por ejemplo, la voz, de la misma forma que si fuera un interruptor.

2 sensores de luminosidad: se basan en transistores fotoeléctricos cuya resistencia disminuye a medida que aumenta la intensidad luminosa. Por tanto, propician que las variaciones de luz puedan ser convertidas en variaciones de señal eléctrica analógica.

Page 18: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

11

Este tipo de componentes puede ser de gran utilidad en un amplio número de campos en donde se requiera saber el nivel de luz existente para, por ejemplo, encender o no luminaria. Así, dentro del concepto de “Smart Cities” este tipo de elementos ayudan a controlar el apagado o encendido del alumbrado público en función de la luz ambiente (y otros factores como la presencia de gente), ayudando a ahorrar energía (lo que supone también ahorro económico) y mejorando el descanso y bienestar de los vecinos.

Sensor de temperatura: pequeño termómetro que se fundamenta en un termistor. Un termistor (Thermally Sensitive Resistor) es un semiconductor que varía se resistencia con la temperatura. Algunas de las funciones que se pueden implementar según su entrada pueden ser: Activar o desactivar la climatización o aire acondicionado en un

recinto en función de la temperatura que se esté midiendo. Esto implica un aumento de confort en la gente y control a tiempo real en la energía que gastan esos aparatos.

El control de la temperatura es fundamental en determinados procesos industriales para asegurar el correcto funcionamiento de los equipos, evitando por ejemplo sobrecalentamientos que puedan conllevar mal funcionamiento o acortar vida útil del equipamiento.

El elemento que incluye la placa es un sensor de temperatura ambiente (que mide desde 0º a 50º con una precisión de 2º), pero también los puede haber con contacto o sumergibles, que se comentarán más adelante.

Acelerómetro de 3 ejes y sensor de giro: se fundamenta en un circuito integrado MPU-6050 [9] que combina un giroscopio de 3 ejes, un acelerómetro de 3 ejes y un procesador digital de movimientos patentado por el fabricante (InvenSense). Sus sensores internos miden las aceleraciones lineales y angulares, y su procesador es capaz de realizar cálculos en tiempo real proporcionando los ángulos de inclinación con respecto a los 3 ejes principales, que son de mayor utilidad.

Page 19: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

12

Figura 4: MPU-6050. Orientación de ejes

Un acelerómetro es un dispositivo que mide la aceleración de un elemento. Generalmente, el acelerómetro mide la aceleración mediante la medida de cuánto presiona la masa sobre algo cuando una fuerza actúa sobre ella. Un giroscopio es un dispositivo de medida de la orientación, basado en los principios de conservación del momento angular (Coriolis). Aplicaciones que se pueden dar según la entrada de este elemento pueden ser: Activar un airbag si se detecta un cambio muy brusco en la

aceleración negativa de un vehículo. Girar una pantalla en función de en qué orientación esté

posicionada. Suelen usarse como sistemas de posicionamiento inerciales (INS).

Un INS es una ayuda a la navegación que usa un procesador y sensores de movimiento para seguir continuamente la posición, la orientación y la velocidad de un elemento sin necesidad de referencias externas. Se basa en el principio de que, si se conoce la posición inicial y se registran todos los movimientos, la posición en cada momento es conocida. Cabe comentar que en la actualidad la gran mayoría de smartphones incorporan estos sistemas. Como de por sí mismos no son muy precisos, suelen usarse como complemento a sistemas inalámbricos donde existen zonas de sombra en sistemas de posicionamiento interiores [10]

No entra dentro de los objetivos ni en el alcance de este proyecto el analizar sistemas de unidad de medición inercial (IMU) ni se usará este sensor de forma específica en el robot que se construye en el presente Proyecto.

3.2.2 Sensores equipados al robot conectados por RJ25

Sensor de ultrasonidos: mide la distancia que hay hasta un objeto que está enfrente, con un rango de 3cm a 4m, en un ángulo de 30º y una precisión de 1cm. Se compone de un emisor y receptor de sonidos de

Page 20: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

13

alta frecuencia no audibles por el oído humano. Su fundamenta en el tiempo que transcurre desde que se emite hasta que se recibe la señal, al ser conocida la velocidad del sonido en la atmósfera:

Ecuación 1: Velocidad del sonido en cm/s

Por tanto, sabiendo que se tardan 29,2μs en recorrer cada centímetro, y teniendo en cuenta que la onda recorre dos veces la distancia al obstáculo (ida y vuelta):

Ecuación 2: Distancia sensor de ultrasonidos

Figura 5: Sensor de ultrasonidos

Uno de los mayores inconvenientes de este tipo de dispositivos, como se muestra en la parte derecha de la Figura 6, es que no recibirán la onda reflejada si el objeto enfrentado forma un ángulo de incidencia con una desviación superior a la marcada en las especificaciones. Se podrían plantar dos soluciones para evitar este inconveniente: Montar dos sensores ultrasónicos, en lugar de uno, desplazados

cierto ángulo sobre la dirección de la marcha del robot, para así cubrir más área.

Montar un único sensor de ultrasonidos pero que mediante un servomotor fuera girando en abanico recorriendo el ángulo en el que pudiera haber objetos con los que pudiera chocar.

Page 21: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

14

Figura 6: Limitaciones en el sensor de ultrasonidos

No es el objetivo de este proyecto que el robot evite todos los objetos, con lo que se asume que el robot pueda chocar en determinadas condiciones con determinados obstáculos.

A pesar también de que no son tan precisos en la medición de distancias, ni tienen la velocidad de respuesta de los sensores ópticos (estos por el contrario tienen un rango de medición más limitado y son más inmunes al polvo por ejemplo), su rango de exactitud de 1cm y su frecuencia de 42kHz es más que suficiente para el propósito del robot del presente proyecto.

Sensor infrarrojo IR: en el robot construido funciona como un sensor de seguimiento de línea. Su funcionamiento es muy similar al del sensor ultrasónico, pero tiene un rango de detección menor, de 1-2cm. El dispositivo TCRT5000 [5] se compone por un diodo LED emisor de IR y un fototransistor sensible a los rayos IR a esa longitud de onda (λ=960nm). Si la superficie a la que está enfrentada es clara reflejará mayor cantidad de rayos IR que si es oscura, tal y como se muestra en la figura 7.

Figura 7: Sensor seguimiento de línea (LED+fotodiodo)

Colocando dos pares de estos sensores separados una determinada distancia, se puede verificar si el robot deja de seguir la línea marcada y, en consecuencia, programar para corregir ese desvío. Esta utilidad también puede servir por ejemplo para cortar una chapa, con un láser o una cuchilla, previamente marcada. Además de las de seguimiento de línea, entre las distintas funciones que puede tener este tipo de sensores (o sensores ópticos, también pueden ser equipados con láseres) se pueden citar las de detectar

Page 22: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

15

objetos enfrente de él como en los típicos detectores de los ascensores, o usarse como sensor de posición en encoders rotatorios [11].

Figura 8: Sensor fotoeléctrico como detector de paso

Las barreras fotoeléctricas, muy extendidas como medidas de seguridad que pueden emplearse para parar la máquina cuando un operario entra en el área de operación de alguna máquina, están formadas por estos elementos.

3.2.3 Otros tipos de sensores en el mercado

En el mercado se pueden encontrar gran cantidad de sensores capaces de medir la gran mayoría de magnitudes físicas del entorno en el cual se instalan. Son muy frecuentes en sectores industriales, donde además de su precisión, los rangos de funcionamiento en los que pueden operar cobran vital importancia. Y es que en este tipo de escenarios se necesitan dispositivos de gran robustez frente a temperaturas extremas, productos químicos, polvos... Así pues debido a la importancia que están adquiriendo se citan algunos de los más utilizados tanto en la industria como en otros ámbitos:

Sensor de temperatura sumergible: termómetros sumergibles en líquidos muy útiles para medir la temperatura de un líquido. Un dispositivo típico para Arduino o Raspberry es el basado en el termómetro digital DS18B20. Tiene una resolución ajustable de 9 a 12 bytes y solo requiere de 1 pin digital para la comunicación. Su rango de medición de temperaturas es de entre -55º y 125º con una precisión de 0,5º de -10º a 85º. Hay que prestar especial cuidado a que aunque se pueda medir ese rango, el cable que lo conecta con la placa también lo soporte.

Sensor de humedad: detectan la humedad en el ambiente o en el entorno.

Page 23: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

16

Una de las posibles aplicaciones que se le puede dar es la de la gestión de parques y jardines públicos, haciendo que el regado sea cuando realmente la tierra lo necesite y durante el tiempo justo. Cuando el sensor detecte la humedad adecuada de la tierra, los aspersores dejarán de regar el espacio. Estos sensores pueden ajustar el riego y así ahorrar un bien tan preciado como el agua.

Sensor de llama: en determinados escenarios industriales es factible que determinadas máquinas puedan generar llamas, y por tanto, son elementos ampliamente usados en la industria como dispositivos de seguridad haciendo posible detener cualquier proceso en caso de detectar algún indico de combustión. La elección del dispositivo en la industria debe determinarse en función de la seguridad que se requiera, la sensibilidad y fiabilidad necesaria. Por ello, en entornos industriales se necesitarán sensores más profesionales que eviten falsas alarmas que puedan parar procesos (con el coste que eso conlleva) o no detecten rápidamente el fuego (con el coste y peligro que ello conlleva). Algunas de las especificaciones a tener en cuenta son (entre paréntesis valores típicos de en sensores Arduino):

o Banda espectral que detecta (840-1200nm). Se debe asegurar que se cubren todos los tipos de fuegos que se pueden causar en el proceso.

o Ángulo de detección (60º). o Tiempo de respuesta (15μs). Este tiempo de respuesta es

vital en seguridad. Cuanto menor es el tiempo más rápido se detecta y mejor puede ser la respuesta.

o Temperatura de operación (-25º a 80º y se recomienda no estar muy cerca de la llama para evitar deterioros). Este rango de operaciones puede no ser suficiente en industrias con elevadas temperaturas, como pueden ser fundiciones.

Sensor de gas: de la misma forma que una llama, la detección de determinados gases puede ser vital para la seguridad en entornos industriales y domésticos. Existen diferentes sensores de este tipo que generalmente dan como salida una señal analógica. Su sensibilidad puede ser modificada en función de las necesidades. Cada dispositivo puede detectar ciertos tipos de gases. Dentro de la familia de sensores de gas MQ existen diferentes tipos dependiendo del gas al que sean sensibles: MQ-2 (metano, butano, LPG, humo), MQ-3 (alcohol, etanol, humo), MQ-4 (metano, gas CNG), MQ-5 (gas natural, LPG), MQ-6 (LPG, gas butano), MQ-7 (monóxido de carbono), MQ-8 (gas hidrogeno), MQ-9 (monóxido de carbono, gases inflamables), MQ131 (ozono), MQ135 (benceno, alcohol, humo), MQ136 (gas de sulfuro de hidrógeno), MQ137 (amoniaco), MQ138 (benceno, tolueno, alcohol, acetona, propano, gas formaldehído, gas hidrógeno), MQ214 (metano, gas natural), MQ216 (gas natural, gas de carbón), MQ303A (alcohol, etanol, humo), MQ306A (GLP, gas butano), MQ307A (monóxido de carbono), MQ309A (monóxido de carbono, gases inflamables.), MG811 (dióxido de carbono CO2),

Page 24: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

17

AQ-104 (calidad del aire), AQ-2 (gases inflamables, humo), AQ-3 (alcohol, benzina), AQ-7 (monóxido de carbono).

Sensor de movimiento PIR: se trata de un sensor de movimiento que mide la luz infrarroja radiada por los objetos situados en su campo de visión. Todos los seres vivos y la mayoría de máquinas eléctricas o mecánicas que se mueven desprenden calor, y ese calor se emite a la atmósfera en forma de radiación infrarroja. La variación en el tiempo y/o espacio de esa radiación puede ser detectada por los sensores PIR dando una salida. Características de estos elementos que se deben tener en cuenta a la hora de diseñar un sistema dependiendo del uso que se le quiera dar y el entorno en donde se instalan, y que se podrán consultar en las especificaciones, son (con valores típicos entre paréntesis para sensores PIR Arduino):

o Tensión nominal (5V). o Temperatura de trabajo (-20º a 70º) o Niveles de tensión de salida (5V – 0V) o Tiempo de respuesta (2s). Puede que en sistemas más

críticos se deba rebajar este tiempo. o Ángulo de detección (120º). Si fuera insuficiente se podrían

instalar más sensores para que de esta forma abarquen un mayor ángulo: instalando dos con un determinado ángulo haría que se doblase ese ángulo de detección.

o Distancia de detección máxima (6m).

Figura 9: Sensor PIR. Principio de funcionamiento.

Page 25: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

18

Aplicaciones típicas se dan en domótica, haciendo encender luces al paso de personas.

Sensores inductivos: su funcionamiento se basa en la detección de elementos metálicos gracias al campo magnético que producen. Debido a este principio, son útiles para aplicaciones de posicionamiento como de detección de elementos formados mayoritariamente por hierro, tanto por contacto como sin contacto (aunque a distancias cortas).

Figura 10: Sensor inductivo. Principio de funcionamiento.

Sensores capacitivos: su principio de funcionamiento es muy

similar al de los inductivos, pero usan un campo eléctrico para detectar objetos enfrentados a él. Debido a esta diferencia, estos dispositivos detectan tanto objetos metálicos como no metálicos.

Figura 11: Sensor capacitivo. Principio de funcionamiento.

Page 26: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

19

Finales de carrera: en el mundo de la sensórica industrial tradicional, los finales de carrera son de los elementos más utilizados históricamente. Son interruptores que operan mediante accionamiento mecánico. Dan una señal dependiendo de si se producía contacto físico o no dependiendo la configuración en la que se diseñasen:

o Normalmente abierto: cuando no se actúa sobre él (posición de reposo) el circuito está abierto.

o Normalmente cerrado: cuando no se actúa sobre él (posición de reposo) el circuito está cerrado. Un caso típico de esta configuración son los paros de emergencia o setas de seguridad: abren el circuito si son pulsados para que se detenga todo el proceso con un reset.

Dependiendo de la forma en que sean atacados por el objeto (puertas, compuertas...), pueden ser de diverso tipo y determinar presencia, ausencia, posicionamiento del elemento...

Figura 12: Final de carrera de palanca con rodillo

Un interruptor de contacto de palanca se podría implementar en las paredes del robot para detectar y hacer un conteo de cuántas veces se choca contra paredes u otro tipo de obstáculos. Uno de varilla podría utilizarse para detectar y contar, por ejemplo, postes (instalados como balizas físicas) que estuvieran en los costados del camino que recorre el robot.

Figura 13: Final de carrera de varilla

Page 27: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

20

Quizá no sean elementos con mucha utilidad en un robot Arduino, pero se veía la necesidad de citar estos elementos tan presentes en sistemas de automatización.

3.3 Actuadores

3.3.1 Actuadores integrados en la placa

Zumbador: es un buzzer pasivo que emite un sonido diferente en función de la frecuencia con la que se le haga vibrar. Que sea pasivo significa que no contiene un oscilador, con lo que la frecuencia se determina en función de la señal de salida que marque el controlador. Con este dispositivo se podrán generar diferentes tipos de señales acústicas.

LED’s RGB: la placa cuenta con un módulo de 12 LED’s RGB. La particularidad de estos diodos LED es que se pueden regular cada uno de los tres colores primarios directamente y de forma independiente, dando mucha intensidad de luz y también un alto espectro de colores combinándolos.

Figura 14: LED’s RGB

De esta forma, sobre el mismo diodo se puede producir un código de colores que de forma visual pueda ser interpretado por un observador externo.

3.3.2 Actuadores equipados al robot

Motores: el robot puede ser equipado con diversos tipos de motores como pueden ser motores paso a paso, motores DC, motores de encóder ópticos… El pack Ranger incluía motores de encóder ópticos de 3.7W que es con los que se ha equipado el robot.

Page 28: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

21

3.3.3 Otros tipos de actuadores en el mercado

Existen gran número de actuadores y periféricos de salida que se pueden conectar al Arduino: diversos tipos de motores, pantallas LCD, displays numéricos, pantallas táctiles, pulsadores, interruptores, relés… Al conectarse elementos, se debe tener en cuenta que la máxima corriente para cada pin de entrada/salida (I/O) es de 40mA y de 20mA de forma continua en las placas Arduino Mega 2560. Además de a actuadores, los datos pueden enviarse a otros dispositivos para que sean procesados como pueden ser PC’s, smartphones... o almacenados en ficheros, alimentar bases de datos...

3.4 Puertos de expansión

La placa ME Auriga cuenta con 10 puertos RJ25 y dos conectores 2.54mm “dupont” para la conexión de los motores. La finalidad de los puertos RJ25 es facilitar la modularidad haciendo más cómodo el remplazo de los elementos que se conectan a la placa evitando los pines de las placas Arduino. Así, no es necesario conectar los cables hacia los pines de la placa, basta con conectar directamente el RJ25 de la misma forma que un teléfono fijo. En la figura 15 se muestra la relación entre los pinouts de las placas Arduino Mega y ME Auriga.

Figura 15: Arduino Mega (izq.) & ME Auriga (der.) pinout [5]

Page 29: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

22

Además, a simple vista se puede conocer el uso que se puede dar a cada puerto según su color, sabiendo así de forma rápida qué dispositivo se debe conectar en qué puerto. La correspondencia se recoge en la tabla 3:

Puertos Color Función Tipos de módulos compatibles

1-4 Rojo Tensión de salida continua de 6-12V

Todo tipo de motores

5 Gris Puerto serie Bluetooth (BT) Módulo 2.4G

Raspberry Pi. GPIO.

6-10

Amarillo Interfaz digital single

Diversos sensores y actuadores analógicos y digitales

Azul Interfaz digital dual

Negro Interfaz analógica

single/dual

Blanco Puerto I2C

Tabla 3: Puertos de expansión RJ25

Los puertos del 1 al 4 pueden suministrar continuamente una

corriente de salida de 3,5A (y picos de hasta 5A). Soportan protección a cortocircuitos y sobrecorrientes prolongadas de hasta 3,5A.

Los puertos del 5 al 10 pueden suministrar continuamente una tensión de 5V y corriente de salida de 2,4A (y picos de hasta 3A). Soportan protección a cortocircuitos y sobrecorrientes prolongadas de hasta 3A.

3.5 Puerto serie Existe un apartado de referencia sobre el puerto serie en Arduino que se encuentra en la web [3] para su consulta. Un puerto es el nombre genérico con que se denomina a los interfaces físicos o virtuales que permiten la comunicación entre dos dispositivos. La comunicación serie es la que se usa generalmente para comunicar el Arduino con el ordenador u otro dispositivo mediante por ejemplo Bluetooth. La comunicación serie en los pines TX/RX usa los niveles lógicos de referencia de TTL (transistor-transistor logic) que varían dependiendo de la placa desde los 3.3V a los 5V. Estos valores no son compatibles con los +/- 12V a los que opera el puerto serie RS232 con lo que no se deben conectar directamente a él para no dañar la placa. Todos las placas Arduino tienen por lo menos un puerto serie (también conocido como UART o USART): Serial, que se comunica mediante los pines digitales 0 (RX) y 1 (TX) y a través del ordenador vía USB. Por tanto, hay que tener en cuenta que si se utilizan estas

Page 30: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

23

funciones no se pueden usar también los pines 0 y 1 para conexiones de entradas y salidas digitales. La placa Arduino Mega, que es en la que se basa la Me Auriga de este proyecto, cuenta con tres puertos serie adicionales: Serial1 en los pines 19 (RX) y 18 (TX), Serial2 en los pines 17 (RX) y 16 (TX) y Serial3 en los pines 15 (RX) y 14 (TX). Estos puertos adicionales no están conectados al USB del Arduino. Al emparejar el robot vía Bluetooth al ordenador, se puede observar en las opciones de Bluetooth que el sistema operativo asigna un par de puertos serie al robot para comunicarse con él:

Figura 16: Puertos serie Bluetooth

En la siguiente imagen se puede observar en el IDE mBlock, que se analizará más adelante, al ordenador conectado al robot mediante el puerto COM4 que es el que nos había dado previamente el sistema operativo para esta conexión inalámbrica con el robot llamado Makeblock. Con el miniprograma se consigue conectar con el robot de forma inalámbrica y hacerlo mover para adelante presionando la tecla de flecha arriba del teclado. Además, como puede apreciarse, también se recogen de forma inalámbrica los datos que se envían desde un sensor inalámbrico de ultrasonidos configurado en el robot.

Page 31: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

24

Figura 17: Conexión Bluetooth con el robot

El entono IDE de Arduino también cuenta con un monitor serie en donde se muestran los datos que se recogen desde el robot, y también se habilita una línea para enviar datos al robot. En la siguiente captura se recogen los valores del sensor de ultrasonidos en un código desarrollado durante la realización de este proyecto:

Figura 18: Monitor serie IDE Arduino

Además este IDE de Arduino también incorpora en sus últimas versiones un Serial Plotter donde se muestran los datos numéricos recogidos en formato de gráfica. Esto puede ser útil en determinadas ocasiones para determinar tendencias o ver evolución de las medidas registradas.

Page 32: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

25

4. Entorno de programación El fabricante dispone de un entorno de programación (IDE) propietario llamado mBlock basado en Scratch 2.0 y muy similar al propio Scratch donde se puede programar con este lenguaje. Además también se da la posibilidad de seleccionar un modo Arduino.

4.1 mBlock Desde el entorno propietario se da la posibilidad de programar en Scratch, que es un lenguaje de programación visual abierto desarrollado por el MIT (Massachusetts Institute of Technology) Media Lab. Su codificación en bloques hace que sea muy intuitivo. Tanto es así que está principalmente orientado a la educación y enseñanza.

Figura 19: Programación Scratch en entorno mBlock

En la figura 19 se muestra un código en lenguaje Scratch que, en función de la intensidad luminosa recogida por el sensor de la placa, enciende todos los diodos de la matriz con máxima intensidad en color blanco (los 3 colores activos al máximo) si no hay mucha luz, enciende los LEDs en color azul con una intensidad luminosa ambiental, o los enciende con baja intensidad en rojo si se recibe mucha luz. Como comentario, se han tenido que apagar todos los diodos antes de que se realizasen las sucesivas mediciones para que su propia emisión de luz no desvirtuase la medición de la intensidad lumínica en ese momento. De no haberse realizado de esta manera, la medición del sensor siempre hubiera detectado una intensidad lumínica elevada debido a la propia luz que se emitía desde los diodos.

Page 33: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

26

En el código de la figura 19 también se puede comprobar que las mediciones se han guardado en una lista donde se puede comprobar, de ser necesario, el registro de mediciones. La programación en este entorno con Scratch únicamente ofrece la posibilidad de ejecutar el programa que se ha creado online, es decir, no se queda cargado en la placa Arduino. Las órdenes que se envían al robot y las entradas que se reciben de él se ejecutan directamente desde el programa. Pero también existe la opción de cargar el código en el hardware, seleccionando el “Modo Arduino”. Una vez seleccionado este modo si existe código Scratch generado en IDE, el propio IDE hace una traducción de código a Arduino (lenguaje C) para poder ser subido a la placa. Para poder usarse de nuevo la opción online, si hubiera algo cargado en el microcontrolador, se debe actualizar el firmware del robot para que pueda entenderse con mBlock permitiendo la comunicación entre la placa Me Auriga y el ordenador dentro del software.

4.2 Makeblock El fabricante también ha desarrollado una aplicación para dispositivos móviles smartphones compatible con Android 4.3 o superior, o el iOS 9.0 o superior de Apple, que pueden ser descargadas desde Google Play o iTunes respectivamente, ambas de forma gratuita. Desde ella se pueden desarrollar proyectos para controlar el robot y recoger datos del mismo. En la siguiente figura se puede apreciar un proyecto implementado en el trascurso de este TFG en el que se han incluido botones para activar procesos, y elementos de visualización para printar entradas tomadas del bluetooth. Con ello se consigue desplazar al robot, hacer que se iluminasen LED’s y que el altavoz emitiese una nota, y visualizar los datos recogidos por los sensores en forma numérica y de forma gráfica:

Figura 20: Proyecto en Makeblock para Android

Page 34: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

27

Los diferentes tipos de bloques (visualizadores, paletas de printado, interruptores, pulsadores…) se pueden eliminar o incluir en el programa de forma muy intuitiva desde una paleta que está habilitada para ello. Para cada objeto asociado a un puerto, se puede seleccionar de forma muy visual en cuál se está conectado (en esta imagen el puerto 10):

Figura 21: Selección visual de puerto en Makeblock Android

Además, seleccionando la opción de “Código” en cada objeto editable, éste se puede programar en un lenguaje basado en Scratch. Para ello, se habilita una barra de herramientas a la izquierda de la pantalla principal de donde se pueden arrastrar los módulos con los que construir el código.

Figura 22: Código scratch asociado a un objeto

Page 35: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

28

Se describen las opciones que hay en cada elemento de la barra:

Begin: Se indica cuándo se ejecuta el código: Al empezar, cuando se presione una tecla, cuando se deslice la barra…

Move: Acciones asociadas al movimiento del robot propio de la placa: avanzar, girar, parar… Con la velocidad a la que se indique. También es posible actuar sobre motores en otros puertos.

Display: Ejecuta acciones sobre actuadores visuales o acústicos de los que se tendrá que definir el puerto en el que están y el valor que se les quiere dar.

Event: Eventos que pueden generar acciones: se agita el Smartphone, el Smartphone se inclina hacia algún lado, se detecta un evento del tipo indicado en el puerto indicado, se activa interruptor o botón indicado en el proyecto en curso…

Detect: Captura el valor de algún sensor del tipo que se le indique en el puerto que se le indique o el valor indicado en algún objeto que se haya incluido en el proyecto.

Math: Operaciones matemáticas: o Sumas, restas, multiplicaciones… o Igual a, diferente, mayor, mayor igual… o AND, OR. o Negar o Números aleatorios o Redondear o Manipulación de elementos: añadir, establecer… o Operaciones trigonométricas o …

Controls: Controles de flujo: o Condicionales: if, if else… o Bucles infinitos, bucles de repetición de X veces, repetir

hasta, for… o Delays

De la misma forma que sucedía en mBlock, el código se ejecuta online sin ser cargado en la placa. Si se vuelve a encender el Arduino, este programa no estará grabado en él.

4.3 Arduino

Al ser un sistema basado en Arduino, también se puede programar la placa en este entorno de programación. Para preparar el entorno se deben seguir los siguientes pasos:

1. Descargar las librerías Arduino para los módulos Makeblock desde: https://github.com/Makeblock-official/Makeblock-Libraries Github es una plataforma de desarrollo colaborativo de software donde desarrolladores alojan software con el fin de su difusión y soporte a usuarios.

Page 36: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

29

Además Github es un repositorio para el control de versiones con lo que periódicamente se cuelgan nuevas revisiones con mejoras o correcciones de bugs.

2. Copiar la carpeta “makeblock” a la ruta de librerías de Arduino. De esta forma la carpeta de librerías de Arduino debe tener la siguiente forma en Windows: [directorio de instalación de Arduino]\libraries\makeblock\src

3. Abrir el IDE Arduino. 4. Incluir la librería correspondiente a la placa que se vaya a utilizar

en la parte superior del código. En nuestro proyecto se deberá incluir #include <MeAuriga.h>

Figura 23: IDE Arduino

Arduino se programa en un lenguaje de programación derivado del lenguaje C. A continuación se pega el código cargado al robot para que trate de no chocarse con objetos, avise acústicamente cuando va marcha atrás, y encienda los LED’s de uno u otro color en función de la luz ambiente que detecte.

4.3.1 Código Arduino

#include <Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> #include <MeAuriga.h> //Auriga libraries //Encoder Motor MeEncoderOnBoard Encoder_1(SLOT1); MeEncoderOnBoard Encoder_2(SLOT2);

Page 37: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

30

void isr_process_encoder1(void) { if(digitalRead(Encoder_1.getPortB()) == 0){ Encoder_1.pulsePosMinus(); }else{ Encoder_1.pulsePosPlus(); } } void isr_process_encoder2(void) { if(digitalRead(Encoder_2.getPortB()) == 0){ Encoder_2.pulsePosMinus(); }else{ Encoder_2.pulsePosPlus(); } } void move(int direction, int speed) { int leftSpeed = 0; int rightSpeed = 0; if(direction == 1){ leftSpeed = -speed; rightSpeed = speed; }else if(direction == 2){ leftSpeed = speed; rightSpeed = -speed; }else if(direction == 3){ leftSpeed = -speed; rightSpeed = -speed; }else if(direction == 4){ leftSpeed = speed; rightSpeed = speed; } Encoder_1.setTarPWM(leftSpeed); Encoder_2.setTarPWM(rightSpeed); } void moveDegrees(int direction,long degrees, int speed_temp) { speed_temp = abs(speed_temp); if(direction == 1) { Encoder_1.move(-degrees,(float)speed_temp); Encoder_2.move(degrees,(float)speed_temp); } else if(direction == 2) { Encoder_1.move(degrees,(float)speed_temp); Encoder_2.move(-degrees,(float)speed_temp); } else if(direction == 3)

Page 38: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

31

{ Encoder_1.move(-degrees,(float)speed_temp); Encoder_2.move(-degrees,(float)speed_temp); } else if(direction == 4) { Encoder_1.move(degrees,(float)speed_temp); Encoder_2.move(degrees,(float)speed_temp); } } double angle_rad = PI/180.0; double angle_deg = 180.0/PI; void sensor_ultrasonidos(); MeUltrasonicSensor ultrasonic_10(10); MeBuzzer buzzer; void sensur_luz(); MeRGBLed rgbled_0(0, 12); MeLightSensor lightsensor_12(12); void sensor_ultrasonidos() { if((ultrasonic_10.distanceCm()) > (50)){ move(1,100); }else{ if((ultrasonic_10.distanceCm()) < (20)){ if(((random(1,(2)+1))==(1))){ move(4,50); }else{ move(3,50); } }else{ move(2,50); buzzer.tone(262, 500); delay(20); } } } void sensur_luz() { rgbled_0.setColor(0,0,0,0); rgbled_0.show(); _delay(0.1); if((lightsensor_12.read()) < (300)){ rgbled_0.setColor(0,255,255,255); rgbled_0.show(); _delay(1); }else{ if((lightsensor_12.read()) < (500)){ rgbled_0.setColor(0,0,255,0); rgbled_0.show(); _delay(1); }else{

Page 39: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

32

rgbled_0.setColor(0,20,0,0); rgbled_0.show(); _delay(1); } } } void setup(){ attachInterrupt(Encoder_1.getIntNum(), isr_process_encoder1, RISING); attachInterrupt(Encoder_2.getIntNum(), isr_process_encoder2, RISING); buzzer.setpin(45); rgbled_0.setpin(44); //Set Pwm 8KHz TCCR1A = _BV(WGM10); TCCR1B = _BV(CS11) | _BV(WGM12); TCCR2A = _BV(WGM21) | _BV(WGM20); TCCR2B = _BV(CS21); BT.begin(9600); Serial.begin(9600); } void loop(){ sensur_luz(); sensor_ultrasonidos(); Serial.print("Distance : "); Serial.print(ultrasonic_10.distanceCm() ); Serial.println(" cm"); delay(100); /* the minimal measure interval is 100 milliseconds */ _loop(); } void _delay(float seconds){ long endTime = millis() + seconds * 1000; while(millis() < endTime)_loop(); } void _loop(){ Encoder_1.loop(); Encoder_2.loop(); }

A diferencia de lo que sucedía en los entornos mBlock y Makeblock, este código se carga en el microcontrolador. De esta forma, estará disponible cada vez que el Arduino sea encendido, cosa que no pasaba en los dos primeros, que ejecutaban el código online.

Page 40: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

33

5. Obtención y procesamiento de datos Los datos que se envían desde el Arduino pueden ser recogidos a través de un software de escaneo y captura de datos como RealTerm. Este programa permite leer los datos del puerto serie y capturarlos almacenándolos en un archivo.

Figura 24: Programa de captura de tráfico serie RealTerm

Los datos previamente almacenados en un fichero (txt en este proyecto) son recogidos por un software de trazado y visualización de datos a tiempo real. De esta forma se consigue una monitorización instantánea de los parámetros que van reportando los sensores o el propio Arduino en sus actuadores.

Page 41: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

34

Figura 25: Software de trazado y visualización de datos Kst

Las funciones de captura y monitorización están también integradas en el IDE Arduino (o en el del propio mBlock), pero se testean otro tipo de soluciones para constatar la no dependencia del puerto serie con el IDE Arduino, y para comprobar también las posibilidades de procesamiento de los datos recogidos que proporciona esta recogida de datos.

6. Valoración económica del trabajo La finalidad del trabajo no era económica, sino más bien de investigación y como punto de partida para el desarrollo de proyectos y sistemas de mayor alcance. En cualquier caso, se reflejan el presupuesto que se ha empleado para este TFG:

Producto PVP

Robot Makeblock Ranger 169 €

Pilas AA (pack de 6) 4,95 €

IDE mBlock 0 €

IDE Arduino 0 €

PVP TOTAL 173.95€

Tabla 4: Presupuesto del Proyecto

Cabe destacar que se podrían haber conseguido los objetivos con menos inversión, pero hubiera supuesto mayor tiempo que no se hubiera dedicado al proyecto en sí.

Page 42: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

35

7. Conclusiones

Con este trabajo se ha constatado las infinitas posibilidades que se presentan en el futuro dentro de los campos de la sensórica, la automatización y la robótica. Puede decirse que son los pilares fundamentales de las nuevas tecnologías con más presente y futuro de hoy en día. Existen multitud de tareas y procesos que se pueden automatizar con las herramientas que se disponen en la actualidad. Por tanto, es un mundo con mucho recorrido en los que los profesionales de las IT tienen mucho que aportar. Por otra parte, con este proyecto se han conseguido de una manera o de otra los objetivos inicialmente marcados. En lugar de haberse implementado un código que englobase todas las funciones y depurarlo hasta dar con un programa a la medida, se ha optado por explorar más a fondo cada una de las alternativas que se disponían. En internet hay infinidad de código que se puede aprovechar para la aplicación concreta con la que se vaya a trabajar, por ello se ha decidido por conocer mejor las herramientas que se disponen para poder aprovechar la plataforma. De haberse planeado de otra forma, se hubieran integrado en el robot nuevos módulos para completar las tareas y realizar otro tipo de pruebas y test. Hay diversas empresas que comercializan con bloques para Arduino y los pedidos llegan en pocos días. De haberse tenido más tiempo, se podrían haber presentado de mejor forma los datos recogidos del robot, desarrollando el apartado 5 más en profundidad. Se ha recogido en el documento la posibilidad de que existía, y del potencial que esto puede implicar, pero no se ha trabajado más en ello. Como líneas de trabajo futuro se pueden mencionar:

La presentación de los datos en algún sistema de bases de datos, procesándolos en Excel con algún tipo de macro…

Controlar el robot mediante alguna plataforma de desarrollo de diseño de sistemas como puede ser LabView.

Desarrollar un código más potente y depurado a cargar en el robot mediante el IDE Arduino.

Las líneas que se abren son muchas y en muchas de las ocasiones solo falta la idea de qué es lo que se pretende obtener, ya que las herramientas y el conocimiento en el mundo maker están al alcance de toda la comunidad.

Page 43: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

36

8. Glosario

BLE: Bluetooth Low Energy

BT: Bluetooth

DIY: Do it yourself.

GPIO: General Purpose Input-Output

HW: hardware.

I/O: Input / Output

IDE: entorno de desarrollo integrado.

IMU: unidad de medición inercial, Inertial Measurement Unit en inglés.

INS: Inertial Navigation Systems

IoT: Internet de las Cosas, Internet of Things en inglés.

IR: infrarrojo, infrared en inglés.

IT: tecnologías de la información.

LED: Light-Emitting Diode en inglés.

MIT: Massachusetts Institute of Technology

NFC: Near field communication

PIR: Passive InfraRed

RAE: Real Academia Española

RFID: Radio Frequency IDentification

RX: Recepción

TTL: Transistor-Transistor logic

TX: Transmisión.

UART: Universal Asynchronous Receiver-Transmitter

USB: Universal Serial Bus

Page 44: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

37

9. Bibliografía

[1] https://www.arduino.cc/ [Marzo 2017]

[2] https://create.arduino.cc/ [Marzo 2017]

[3] https://www.arduino.cc/en/Reference/Serial [Marzo 2017]

[4] http://learn.makeblock.com/en/ [Marzo 2017]

[5] http://learn.makeblock.com/en/me-auriga/ [Marzo 2017]

[6] Datasheet. Reflective Optical Sensor with Transistor Output TCRT5000: http://www.vishay.com/docs/83760/tcrt5000.pdf

[7] Nieminen, J. y otros autores. IPv6 over BLUETOOTH(R) Low Energy. Internet Engineering Task Force (IETF). Universitat Politecnica de Catalunya/i2CAT; Octibre 2015. Disponible en: https://tools.ietf.org/pdf/rfc7668.pdf

[8] https://es.wikipedia.org/wiki/Bluetooth [Mayo 2017]

[9] https://en.wikipedia.org/wiki/Bluetooth_Low_Energy [Mayo 2017]

[10] Datasheet. MPU-6050 Six-Axis (Gyro + Accelerometer) MEMS MotionTracking™ Devices. Disponible en: https://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/

[11] Rovira Jofre, J. Geotelemática. Posicionamiento y navegación. Barcelona: Universitat Oberta de Catalunya; 2012.

[12] Castaño Sánchez, M. Design of a Position Encoder Using Infrared Sensors. Universitat Politècnica de Catalunya, Master Thesis; Mayo 2015.

[13] Benzi, M. Getting Started with Arduino. 3ª ed. Editorial O’Reilly. Sebastopol, CA (USA); Septiembre 2012.

[14] Evans, B. Arduino Programming Notebook. 1ª ed. San Francisco, CA (USA); Agosto 2007.

[15] https://blogs.deusto.es/aplicaciones-tic/zigbee-vs-bluetooth-low-energy/ [Abril 2017]

[16] https://www.raspberrypi.org/ [Abril 2017]

Page 45: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

38

10. Anexos

Page 46: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

D D

C C

B B

A A

PG5/OC0B1

PE0/RX0/PCINT82

PE1/TX03

PE2/XCK0/AIN04

PE3/OC3A/AIN15

PE4/OC3B/INT46

PE5/OC3C/INT57

PE6/T3/INT68

PE7/CLKO/ICP3/INT79

VCC10

GND11

PH0/RX212

PH1/TX213

PH2/XCK214

PH3/OC4A15

PH4/OC4B16

PH5/OC4C17

PH6/OC2B18

PB0/SS/PCINT019

PB1/SCK/PCINT120

PB2/MOSI/PCINT221

PB3/MISO/PCINT322

PB4/OC2A/PCINT423

PB5/OC1A/PCINT524

PB6/OC1B/PCINT625

PB7/

PCIN

T7/O

C1C/

OC

0A26

PH7/

T427

PG3/

TOSC

228

PG4/

TOSC

129

RESE

T30

VC

C31

GN

D32

XTA

L233

XTA

L134

PL0/

ICP4

35

PL1/

ICP5

36

PL2/

T537

PL3/

OC

5A38

PL4/

OC

5B39

PL5/

OC

5C40

PL6

41

PL7

42

PD0/

SCL/

INT0

43

PD1/

SDA

/INT1

44

PD2/

RX1/

INT2

45

PD3/

TX1/

INT3

46

PD4/

ICP1

47

PD5/

XCK

148

PD6/

T149

PD7/

T050

PG0/WR 51PG1/RD 52PC0/A8 53PC1/A9 54PC2/A10 55PC3/A11 56PC4/A12 57PC5/A13 58PC6/A14 59PC7/A15 60VCC 61GND 62PJ0/RX3/PCINT9 63PJ1/TX3/PCINT10 64PJ2/XCK3/PCINT11 65PJ3/PCINT12 66PJ4/PCINT13 67PJ5/PCINT14 68PJ6/PCINT15 69PG2/ALE 70PA7/AD7 71PA6/AD6 72PA5/AD5 73PA4/AD4 74PA3/AD3 75

PA2/

AD

276

PA1/

AD

177

PA0/

AD

078

PJ7

79V

CC80

GN

D81

PK7/

AD

C15/

PCIN

T23

82PK

6/A

DC1

4/PC

INT2

283

PK5/

AD

C13/

PCIN

T21

84PK

4/A

DC1

2/PC

INT2

085

PK3/

AD

C11/

PCIN

T19

86PK

2/A

DC1

0/PC

INT1

887

PK1/

AD

C9/P

CIN

T17

88PK

0/A

DC8

/PCI

NT1

689

PF7/

AD

C7/

TD1

90PF

6/A

DC

6/TD

091

PF5/

AD

C5/

TMS

92PF

4/A

DC4

/TCK

93PF

3/A

DC3

94PF

2/A

DC2

95PF

1/A

DC1

96PF

0/A

DC0

97A

REF

98G

ND

99A

VCC

100

D4/PWMD0/RX0D1/TX0

D5/PWMD2/PWMD3/PWM

D17/RX2D16/TX2

D6/PWMD7/PWMD8/PWMD9/PWMD53/SSD52/SCKD51/MOSID50/MISOD10/PWMD11/PWMD12/PWM

D13

/PW

M

RES

ET

XTA

L1X

TAL2

D49

D48

D47

D46

/PW

MD

45/P

WM

D44

/PW

MD

43D

42D

21/S

CLD

20/S

DA

D19

/RX

1D

18/T

X1

D38

D30D31D32D33D34D35D36D37D40D41

D25D26D27D28D29D39

D14/TX3D15/RX3

ARE

FA

0A

1A

2A

3A

4A

5A

6A

7A

8A

9A

10A

11A

12A

13A

14A

15

D22

D23

D24

MCU1

MEGA2560

AO11

AO12

PGND13

PGND14

AO25

AO26

BO27

BO28

PGND29

PGND210

BO111

BO112 VM2 13VM3 14PWMB 15BIN2 16BIN1 17GND 18STBY 19VCC 20AIN1 21AIN2 22PWMA 23VM1 24U4

TB6612

PGND

M1+

M1-C30

100nF

C34

100nF

PGND

GND

5V

C26

100nF

GND

V34

UD+5

UD-6

GND1

TXD2

RXD3 RTS# 14

DTR# 13

RI# 11

DSR# 10

CTS# 9XO8 XI7

VCC 16

R232 15

DCD# 12

U3 CH340G

DTR_CH340

C22

100n

F

GND

C16

100nF

DPDN

VBUS

5V

GND

C17 100nF

R22

10k

+ 1D - 2D+ 3- 4USB1USB-B

VBUS

R30

RL06

03E0

05M

R31

RL06

03E0

05M

C1510uF

D0/RX0D1/TX0

C25

470uF/16V

PGND V-M

V-M

C29

10uF

PGND

USB供电

123456

M2

MHDR1X6

F3 1A

F4 1A123456

M1

MHDR1X6

M2-

M2+

5V

5V

C27

100nF

C32100nF

GND

R36 51RR37 51R

R41 51RR42 51R

GND

3

1

2

Q1S9013

5V

LS1BUZZER

R13

1kD45/BEEP

R1051R

D21N4148

R510k

GND

C1100nF 8

1

4

3

2

1

U1ALM2904DR

84

75

6

2

U1B

LM2904DR

GND

MK1

MIC

R2 10k

R1510K

R910k

GND

R851k

C310uF

R710k

GND

A1/SOUNDR4

51R

蜂鸣器

声音

温度

t?

NCP18XH103F03RB 0603 1%

RT1

NCP

18X

H10

3F03

RB 0

603

1%

R1210K

13

2

Y2

16M

GND

C5

100nF

GND

5V

A0/TEMP

1 23 45 6

ICSP1

Header 3X2

D50/MISOD52/SCKRESET

D51/MOSI

GND

5V

RESE

T

D51/MOSID50/MISO

D52/SCKD

21/S

CL

D20

/SD

A

D16/TX2/RJD17/RX2/RJ

A8/

RJ

A9/

RJ

ARE

F

XTAL1XTAL2

D53/SS

D0/RX0

D1/TX0

RESET

DTR_BLE C7100nF R18 1k

R2010k

RST_BLE

RX1

TX2

GND3

VCC4

DTR 5

GND 6

RST 7

U2

BLE

程序更新&无线遥控

D12

LED

_RED

R34

20k D13

LED

_BLU

E

D15

LED_BLUE

R43 20k

D16

LED_RED

GND

GND

ENCODER_编码电机驱动

GND

SCL 1

SDA 2

V-M 3

S1 5

S2 6

GND 4

J2

RJ25/RED

SCL 1

SDA 2

V-M 3

S1 5

S2 6

GND 4

J1

RJ25/RED

SCL 1

SDA 2

5V 4

S1 5

S2 6

GND 3

J8

RJ25

SCL 1

SDA 2

5V 4

S1 5

S2 6

GND 3

J10

RJ25

SCL 1

SDA 2

5V 4

S1 5

S2 6

GND 3

J9

RJ25

SCL 1

SDA 2

5V 4

S1 5

S2 6

GND 3

J5

RJ25

GNDGND5V

GND

GNDGNDGND GND

D21/SCLD20/SDA

D21/SCLD20/SDA

D21/SCLD20/SDA

D21/SCLD20/SDA

D21/SCLD20/SDA

D21/SCLD20/SDA

D21/SCLD20/SDA

D45

/BEE

P

D9/RJ

D3/RJ

D44

/RG

B

D13

D2/RJ

D8/RJ

A7/

RJ

A6/

RJ

D16/TX2/RJD17/RX2/RJ

ENA

_B

ENA

_A

ENB_

B

ENB_

AEN_PWMA

EN_D

IRA

1EN

_DIR

A2

EN_D

IRB2

EN_D

IRB1

EN_PWMB

D4/RJ

兼容RJ25平台

D5/RJ

ENA_BENA_A

ENB_BENB_A

EN_PWMA

EN_DIRA1EN_DIRA2

EN_DIRB1EN_DIRB2EN_PWMB

D6/RJD7/RJ

1234

P1

Header 4

5V

D14/TX3D15/RX3

C12100nF

C10100nF

GNDC910uF

C2410uFC2310uF

C20100nF

C1910uF

C8

100nF

5V

GND

5V

5V

GND

GND

5V

GND

5V

GND

板载传感器和蜂鸣器

R3910K

D14

LED

_BLU

E

R28 5.1kR29 5.1k

C18

100nFC2110uF

D4/RJD5/RJ

D2/RJD3/RJ

D6/RJD7/RJ D9/RJ

D8/RJ

SCL 1

SDA 2

V-M 3

S1 5

S2 6

GND 4

J4

RJ25/RED

SCL 1

SDA 2

V-M 3

S1 5

S2 6

GND 4

J3

RJ25/RED

GND

C6

10uF

SCL 1

SDA 2

5V 4

S1 5

S2 6

GND 3

J7

RJ25

GND

D21/SCLD20/SDA SCL 1

SDA 2

5V 4

S1 5

S2 6

GND 3

J6

RJ25

GND

D21/SCLD20/SDA

D0/RX0

D1/TX0

1 3

2

Y1

12M

D9LED_RED

D6LED_BLUE

R16

1k5V

D0/RX0

D1/TX0

A1/

SOU

ND

5V5V

5V

5V

A5/

RJ

C06

100nF

D5V1

GND2

RGB3

LIGHT14

LIGHT25

KEY6

D12V7 GND 8GND 9

GND 10GND 11RGB1

RGB_SCREENGND

5V

GND

A3/

LIG

HT1

A3/LIGHT1

KEY

V-BAT

RESET

R01 1K

R033 51RR032 51R

R011 51R

5V

R01

451R

R01

551R

R029 51RR028 51R

V-M

23

45

67

89

123456789

10

P_PWM

EXTENSION1

123456789

10

P_ANALOG

EXTENSION2

4523

6789

A2/LIGHT2

A2/

LIG

HT2

GND

S1

复位按键

1 23 45 67 89 10

P_DIGITAL

EXTENSION3

D41 D40

D30D31D32D33D34D35D36D37

D30D31D32D33D34D35D36D37D40D41

V-M V-M V-MV-M

5V 5V 5V 5V

D44/RGB

RGB灯效板

A4/

VO

L_B

AT

接口引出

GND

R2120k

CLK

IN1

NC

2

NC

3

NC

4

NC

5

AU

X_D

A6

AUX_CL 7VLOGIC 8AD0 9REGOUT 10FSYNC 11INT 12

VD

D13

NC

14N

C15

NC

16N

C17

GN

D18

RESV19

CPOUT20

RESV21

RESV22

SCL23

SDA24

UM9MPU6050

CM2

100nF

D3.3V

CM1 2.2nF

GND

CM4 100nF

RM1 1KRM2 1K

5V

CM3 10nF

GND

RM3

10KMPU_AD0

CM510uF

GND

MPU_INT

D3.3V

VSS1

VO

UT

2V

IN3

UM1

XC6

206P

332M

R

GND

5V

D3.3V

A1 K 2D0101N4148

一上电就为高,发 DTR才拉低

3

1

2

Q3S8550

5V

GND

R017

1k

D0121N4148

R012 51R

D00

1SM

AJ1

2A

MTR2+

MTR1-

MTR1- MTR2+

Vin

Vout=Vp+(Vp-Vin)R1/R2

V+

D00

2SM

AJ1

2A

D00

3SM

AJ1

2A

D00

4SM

AJ1

2A

D+D-

A0/

TEM

P

A8/RJ A9/RJA7/RJA6/RJA12/RJ

A10/RJ

A11/RJ A14/RJA13/RJ A15/RJ

A11

/RJ

A14

/RJ

A13

/RJ

A15

/RJ

上拉,区分外置

D3.3V

A12

/RJ

L001 BEAD,2A

L002BEAD,2A

L003BEAD,2A

L004

BEAD,2AMTR2-

MTR

1+

MTR1+ MTR2-

C101

100nF

C102

100nF

C103

100nF

C104

100nF

C105

10uF

C106

10uF

C107

10uF

C108

10uF

GND

1234

P_SERVO V-M

GND

C28

470u

F/16

V

1

32

JP1

D17

SMA

J13A

C31

100nF

GND

VBUSF2 0.5A 3

1

2Q6 CJ3401

R5020K

R49

5.1k

C37

100n

F

C38

10uF

5V

F11.5A

C39

1uF

R4820k

D19

LED_RED

4

1

3Q2

AOD4185

R1910K

GND

C35

10uF

R471.1M

D81N4148

3

1

2

Q4S90133

1

2

Q5S9013

R465.1M

R4430K

D5

1N4148 R401K

KEY

V-BAT

S2

R58

100k

R59

51kGNDA

4/V

OL_

BA

T

C48

1uF

V-M

加电容

加电容

加二极管防反向D05SS34

C78

10uF

C79

10uF

GND

C75

1uF

C7610uF

C8010uF GND

R03010K

D06SS54

F023.5A

Rup10k

5V

RG

0KGNDPGND

C11470uF/16V

C13100nF

GND

5V

BOOT1

VIN2

EN3

SS4 VSENSE 5COMP 6GND 7PH 8U5+

TPS54331C2

10nF

C4+100nF

D10SS34

C28+

120pF

C29+

68pF

R2529.4k

L3 6.8uH

R35

10k

R17

1.91k

GNDGND

5V

D7

SMAJ5.0A

R02 1KR03 1KR04 1K

R05 1KR06 1K

R07 1KR08 1K

RSCL

10K

SCL

10K

5V

A10

/RJ

GND

GND

PGND

L2Cpi100nF

GND

A12/RJ

A15/RJ

A11/RJ

A14/RJA8/RJ

A9/RJ

A7/RJ

A6/RJ

A10/RJ

A13/RJ

D17/RX2/RJD16/TX2/RJ

D17/RX2/RJD16/TX2/RJ

12

PG1

Female_Header

12

PG2

Female_Header

1234567

PRGB

Female_Header 7

1234

PRT

Female_Header 4

123

PPower

Female_Header 3

此部分为下面 RGB_SCREEN的位号说明

此部分为U2 BLE模块所需物料的

位号说明,在导出 BOM中有体现

在导出BOM中有体现

此模块不参与 BOM,BOM被PG1、PG2PRGB 取代

U2部分不参与BOM,被PRT和PPower取代

GNDR0

20k

D0

LED_RED

PIC101 PIC102 COC1

PIC201

PIC202

COC2

PIC301

PIC302 COC3

PIC4001 PIC4002

COC40

PIC501 PIC502 COC5

PIC0601

PIC0602

COC06 PIC601

PIC602

COC6

PIC701 PIC702 COC7 PIC801

PIC802 COC8

PIC901

PIC902 COC9

PIC1001

PIC1002 COC10

PIC1101

PIC1102

COC11

PIC1201

PIC1202 COC12

PIC1301

PIC1302 COC13

PIC1501

PIC1502 COC15

PIC1601

PIC1602 COC16

PIC1701 PIC1702 COC17

PIC1801 PIC1802 COC18

PIC1901

PIC1902 COC19

PIC2001

PIC2002 COC20

PIC2101 PIC2102

COC21

PIC2201 PIC2202

COC22

PIC2301

PIC2302 COC23

PIC2401

PIC2402 COC24

PIC2501 PIC2502

COC25

PIC2601

PIC2602 COC26 PIC2701

PIC2702 COC27

PIC2801 PIC2802 COC28

PIC28001

PIC28002

COC280

PIC2901

PIC2902 COC29

PIC29001

PIC29002

COC290

PIC3001

PIC3002 COC30

PIC3101

PIC3102 COC31

PIC3201 PIC3202

COC32 PIC3401 PIC3402

COC34

PIC3501

PIC3502

COC35 PIC3701

PIC3702 COC37

PIC3801

PIC3802 COC38

PIC3901

PIC3902 COC39

PIC4801 PIC4802

COC48

PIC7501 PIC7502

COC75

PIC7601 PIC7602 COC76

PIC7801

PIC7802

COC78 PIC7901

PIC7902

COC79

PIC8001 PIC8002 COC80

PIC10101

PIC10102 COC101 PIC10201

PIC10202 COC102 PIC10301

PIC10302 COC103 PIC10401

PIC10402 COC104

PIC10501

PIC10502 COC105 PIC10601

PIC10602 COC106 PIC10701

PIC10702 COC107 PIC10801

PIC10802 COC108

PICM101 PICM102 COCM1

PICM201

PICM202

COCM2

PICM301 PICM302 COCM3

PICM401 PICM402 COCM4

PICM501 PICM502 COCM5

PICpi01

PICpi02 COCpi

PID001 PID002

COD0

PID00101 PID00102

COD001 PID00201 PID00202

COD002

PID201 PID202

COD2

PID00301 PID00302

COD003 PID00401 PID00402

COD004

PID0501 PID0502

COD05

PID501 PID502

COD5

PID0601 PID0602

COD06

PID601 PID602 COD6

PID701 PID702

COD7

PID801 PID802

COD8

PID901 PID902 COD9

PID01001 PID01002 COD010

PID1001 PID1002

COD10

PID01201 PID01202 COD012

PID1201 PID1202 COD12 PID1301

PID1302 COD13

PID1401 PID1402 COD14

PID1501 PID1502 COD15 PID1601

PID1602 COD16

PID1701 PID1702

COD17

PID1901 PID1902

COD19

PIF101 PIF102

COF1

PIF0201 PIF0202

COF02

PIF201 PIF202

COF2

PIF301 PIF302 COF3

PIF401 PIF402

COF4

PIICSP101 PIICSP102 PIICSP103 PIICSP104

PIICSP105 PIICSP106

COICSP1

PIJ101 PIJ102

PIJ103

PIJ104 PIJ105

PIJ106

COJ1

PIJ201 PIJ202

PIJ203

PIJ204 PIJ205

PIJ206

COJ2

PIJ301 PIJ302

PIJ303

PIJ304 PIJ305

PIJ306

COJ3

PIJ401 PIJ402

PIJ403

PIJ404 PIJ405

PIJ406

COJ4

PIJ501 PIJ502

PIJ503

PIJ504 PIJ505

PIJ506

COJ5

PIJ601

PIJ602

PIJ603

PIJ604

PIJ605 PIJ606

COJ6

PIJ701

PIJ702

PIJ703

PIJ704

PIJ705 PIJ706

COJ7

PIJ801 PIJ802

PIJ803

PIJ804

PIJ805 PIJ806

COJ8

PIJ901 PIJ902

PIJ903

PIJ904

PIJ905 PIJ906

COJ9

PIJ1001 PIJ1002

PIJ1003

PIJ1004

PIJ1005 PIJ1006

COJ10

PIJP101

PIJP102

PIJP103

COJP1

PIL00101 PIL00102 COL001

PIL00201

PIL00202 COL002

PIL201 PIL202 COL2

PIL00301 PIL00302

COL003

PIL301 PIL302

COL3

PIL00401 PIL00402 COL004

PILS101

PILS102

COLS1

PIM101 PIM102

PIM103

PIM104

PIM105

PIM106

COM1

PIM201

PIM202 PIM203

PIM204

PIM205

PIM206

COM2

PIMCU101 PIMCU102

PIMCU103

PIMCU104 PIMCU105

PIMCU106

PIMCU107

PIMCU108 PIMCU109

PIMCU1010

PIMCU1011

PIMCU1012

PIMCU1013

PIMCU1014

PIMCU1015 PIMCU1016

PIMCU1017

PIMCU1018 PIMCU1019

PIMCU1020

PIMCU1021

PIMCU1022 PIMCU1023

PIMCU1024

PIMCU1025

PIMCU1026 PIMCU1027 PIMCU1028 PIMCU1029 PIMCU1030 PIMCU1031 PIMCU1032 PIMCU1033 PIMCU1034 PIMCU1035 PIMCU1036 PIMCU1037 PIMCU1038 PIMCU1039 PIMCU1040 PIMCU1041 PIMCU1042 PIMCU1043 PIMCU1044 PIMCU1045 PIMCU1046 PIMCU1047 PIMCU1048 PIMCU1049 PIMCU1050

PIMCU1051

PIMCU1052

PIMCU1053

PIMCU1054 PIMCU1055

PIMCU1056

PIMCU1057

PIMCU1058 PIMCU1059

PIMCU1060

PIMCU1061 PIMCU1062

PIMCU1063

PIMCU1064

PIMCU1065

PIMCU1066

PIMCU1067

PIMCU1068 PIMCU1069

PIMCU1070

PIMCU1071

PIMCU1072 PIMCU1073

PIMCU1074

PIMCU1075

PIMCU1076 PIMCU1077 PIMCU1078 PIMCU1079 PIMCU1080 PIMCU1081 PIMCU1082 PIMCU1083 PIMCU1084 PIMCU1085 PIMCU1086 PIMCU1087 PIMCU1088 PIMCU1089 PIMCU1090 PIMCU1091 PIMCU1092 PIMCU1093 PIMCU1094 PIMCU1095 PIMCU1096 PIMCU1097 PIMCU1098 PIMCU1099 PIMCU10100 COMCU1

PIMK101 PIMK102

COMK1

PIP101

PIP102

PIP103

PIP104

COP1

PIP0ANALOG01

PIP0ANALOG02 PIP0ANALOG03

PIP0ANALOG04

PIP0ANALOG05 PIP0ANALOG06

PIP0ANALOG07

PIP0ANALOG08 PIP0ANALOG09

PIP0ANALOG010

COP0ANALOG

PIP0DIGITAL01 PIP0DIGITAL02

PIP0DIGITAL03 PIP0DIGITAL04 PIP0DIGITAL05 PIP0DIGITAL06

PIP0DIGITAL07 PIP0DIGITAL08

PIP0DIGITAL09 PIP0DIGITAL010

COP0DIGITAL

PIP0PWM01

PIP0PWM02 PIP0PWM03

PIP0PWM04

PIP0PWM05 PIP0PWM06

PIP0PWM07

PIP0PWM08 PIP0PWM09

PIP0PWM010

COP0PWM

PIP0SERVO01

PIP0SERVO02

PIP0SERVO03

PIP0SERVO04

COP0SERVO

PIPG101 PIPG102

COPG1

PIPG201 PIPG202

COPG2

PIPPower01 PIPPower02

PIPPower03

COPPower

PIPRGB01

PIPRGB02 PIPRGB03

PIPRGB04

PIPRGB05

PIPRGB06 PIPRGB07

COPRGB

PIPRT01

PIPRT02 PIPRT03

PIPRT04

COPRT

PIQ101

PIQ102

PIQ103 COQ1

PIQ201

PIQ203 PIQ204

COQ2

PIQ301

PIQ302

PIQ303 COQ3

PIQ401

PIQ402

PIQ403 COQ4

PIQ501

PIQ502

PIQ503 COQ5

PIQ601 PIQ602 PIQ603

COQ6

PIR001 PIR002

COR0

PIR0101 PIR0102 COR01

PIR101 PIR102

COR1

PIR0201 PIR0202 COR02

PIR201 PIR202 COR2

PIR0301 PIR0302 COR03

PIR0401 PIR0402 COR04

PIR401 PIR402 COR4

PIR0501 PIR0502 COR05

PIR501

PIR502 COR5

PIR0601 PIR0602 COR06

PIR0701 PIR0702 COR07

PIR701

PIR702 COR7

PIR0801 PIR0802 COR08

PIR801

PIR802

COR8 PIR901

PIR902

COR9

PIR1001

PIR1002 COR10

PIR01101 PIR01102 COR011

PIR01201 PIR01202 COR012

PIR1201

PIR1202 COR12

PIR1301 PIR1302 COR13

PIR01401

PIR01402 COR014

PIR01501

PIR01502 COR015

PIR1601 PIR1602 COR16

PIR01701 PIR01702 COR017

PIR1701 PIR1702 COR17

PIR1801 PIR1802 COR18

PIR1901

PIR1902 COR19

PIR2001

PIR2002 COR20

PIR2101

PIR2102 COR21

PIR2201 PIR2202 COR22

PIR2501

PIR2502

COR25

PIR02801 PIR02802 COR028

PIR2801 PIR2802 COR28

PIR02901 PIR02902 COR029

PIR2901 PIR2902 COR29

PIR03001

PIR03002 COR030

PIR3001

PIR3002

COR30 PIR3101

PIR3102

COR31

PIR03201 PIR03202 COR032

PIR03301 PIR03302 COR033

PIR3401 PIR3402 COR34

PIR3501 PIR3502 COR35

PIR3601 PIR3602 COR36

PIR3701 PIR3702 COR37

PIR3901

PIR3902

COR39

PIR4001

PIR4002 COR40

PIR4101 PIR4102 COR41 PIR4201 PIR4202

COR42

PIR4301 PIR4302

COR43

PIR4401

PIR4402 COR44

PIR4601

PIR4602 COR46

PIR4701

PIR4702 COR47

PIR4801

PIR4802 COR48

PIR4901 PIR4902 COR49

PIR5001

PIR5002

COR50

PIR5801 PIR5802

COR58 PIR5901 PIR5902

COR59

PIRG01 PIRG02 CORG

PIRGB101

PIRGB102

PIRGB103 PIRGB104

PIRGB105

PIRGB106 PIRGB107 PIRGB108

PIRGB109

PIRGB1010

PIRGB1011

CORGB1

PIRM101 PIRM102 CORM1

PIRM201 PIRM202 CORM2

PIRM301 PIRM302

CORM3

PIRSCL01

PIRSCL02 CORSCL

PIRT101

PIRT102

CORT1

PIRup01

PIRup02 CORup PIS101 PIS102

COS1

PIS201 PIS202 COS2

PISCL01

PISCL02 COSCL

PIU101

PIU102

PIU103

PIU104

PIU108

COU1A PIU104 PIU105

PIU106

PIU107

PIU108

COU1B

PIU201

PIU202

PIU203

PIU204

PIU205

PIU206

PIU207

COU2

PIU301

PIU302

PIU303

PIU304 PIU305

PIU306

PIU307 PIU308 PIU309

PIU3010 PIU3011

PIU3012

PIU3013 PIU3014

PIU3015

PIU3016

COU3

PIU401

PIU402

PIU403

PIU404

PIU405

PIU406 PIU407

PIU408

PIU409

PIU4010 PIU4011

PIU4012 PIU4013

PIU4014

PIU4015 PIU4016

PIU4017

PIU4018

PIU4019 PIU4020

PIU4021

PIU4022

PIU4023

PIU4024

COU4

PIU5001 PIU5002

PIU5003

PIU5004 PIU5005 PIU5006

PIU5007

PIU5008

COU50

PIUM101

PIUM102

PIUM103 COUM1

PIUM901 PIUM902 PIUM903 PIUM904 PIUM905 PIUM906

PIUM907 PIUM908

PIUM909

PIUM9010 PIUM9011

PIUM9012

PIUM9013 PIUM9014 PIUM9015 PIUM9016 PIUM9017 PIUM9018

PIUM9019

PIUM9020

PIUM9021 PIUM9022

PIUM9023

PIUM9024

COUM9

PIUSB101 PIUSB102

PIUSB103

PIUSB104

PIUSB105

PIUSB106 COUSB1

PIY101

PIY102

PIY103

COY1

PIY201

PIY202

PIY203

COY2

PIJ206

PIP0PWM08

PIR0401

NL2

PIJ205

PIP0PWM07

PIR0301

NL3

PIJ106

PIP0PWM010

PIR0201

NL4

PIJ105

PIP0PWM09

PIR0101

NL5

PIC0602 PIC602

PIC901 PIC1001

PIC1101 PIC1301

PIC1802

PIC1902 PIC2002

PIC2102

PIC2301 PIC2401

PIC2902 PIC3002

PIC3702 PIC3802

PICpi01

PID202

PID702

PIICSP102

PIJ504

PIJ604 PIJ704 PIJ804 PIJ904 PIJ1004

PIL201

PIL302

PILS101

PIM103

PIM203

PIMCU1010

PIMCU1031

PIMCU1061

PIMCU1080

PIP101

PIQ602

PIR501

PIR802

PIR1202

PIR1601

PIR01701

PIR2002

PIR2201

PIR2801 PIR2901

PIR3501

PIR4802

PIRGB101

PIRSCL02

PIRup02

PISCL02

PIU108

PIU204

PIU4019 PIU4020

PIUM103

NL5V

PIJ306

PIP0PWM04

PIR0601

NL6

PIJ305

PIP0PWM03

PIR0501

NL7

PIJ406

PIP0PWM02

PIR0801

NL8

PIJ405

PIP0PWM01

PIR0701

NL9

PIC501

PIMCU1097

PIR1201 PIRT101

NLA00TEMP PIMCU1096

PIU106

PIU107 NLA10SOUND

PIMCU1095

PIRGB105

NLA20LIGHT2 PIMCU1094

PIRGB104

NLA30LIGHT1

PIC4801

PIMCU1093

PIR5802 PIR5901

NLA40VOL0BAT

PIMCU1092 NLA50RJ

PIJ1005

PIMCU1091

PIP0ANALOG02 NLA60RJ

PIJ905

PIMCU1090

PIP0ANALOG04 NLA70RJ

PIJ805

PIMCU1089

PIP0ANALOG06 NLA80RJ

PIJ705

PIMCU1088

PIP0ANALOG08 NLA90RJ

PIJ605

PIMCU1087

PIP0ANALOG010 NLA100RJ

PIJ1006

PIMCU1086

PIP0ANALOG01 NLA110RJ

PIJ906

PIMCU1085

PIP0ANALOG03 NLA120RJ

PIJ806

PIMCU1084

PIP0ANALOG05 NLA130RJ

PIJ706

PIMCU1083

PIP0ANALOG07 NLA140RJ

PIJ606

PIMCU1082

PIP0ANALOG09 NLA150RJ

PIC802

PIMCU1098 NLAREF

PID602

PID01001

PIMCU102

PIR01201

PIRup01

NLD00RX0

PID902

PIMCU103

PIR01101

PIU303

NLD10TX0

PIMCU106

PIR0402 NLD20RJ

PICM301

PICM401

PICM501

PIRM302

PIUM102

PIUM908

PIUM9013

PIMCU107

PIR0302 NLD30RJ

PIMCU101

PIR0202

NLD40RJ

PIMCU105

PIR0102

NLD50RJ

PIMCU1015

PIR0602 NLD60RJ

PIMCU1016

PIR0502 NLD70RJ

PIMCU1017

PIR0802 NLD80RJ

PIMCU1018

PIR0702 NLD90RJ

PIMCU1026 PIR3902 NLD13

PIP103

PIR02902

PIR2902 NLD140TX3

PIP104

PIR02802

PIR2802 NLD150RX3

PIJ505

PIP0PWM05

PIP0SERVO02

PIR03201

NLD160TX20RJ

PIJ506

PIP0PWM06

PIP0SERVO01

PIR03301

NLD170RX20RJ

PIJ102 PIJ202 PIJ302 PIJ402

PIJ602 PIJ702 PIJ802 PIJ902 PIJ1002

PIR01501

PIRM201

PISCL01

NLD200SDA

PIJ101 PIJ201 PIJ301 PIJ401

PIJ601 PIJ701 PIJ801 PIJ901 PIJ1001

PIR01401

PIRM101

PIRSCL01

NLD210SCL

PIMCU1060

PIP0DIGITAL02 NLD30

PIMCU1059

PIP0DIGITAL01 NLD31

PIMCU1058

PIP0DIGITAL04 NLD32

PIMCU1057

PIP0DIGITAL03 NLD33

PIMCU1056

PIP0DIGITAL06 NLD34

PIMCU1055

PIP0DIGITAL05 NLD35

PIMCU1054

PIP0DIGITAL08 NLD36

PIMCU1053

PIP0DIGITAL07 NLD37

PIMCU1052

PIP0DIGITAL010 NLD40

PIMCU1051 PIP0DIGITAL09 NLD41

PIMCU1040

PIRGB103

NLD440RGB

PIMCU1039

PIR1301

NLD450BEEP

PIICSP101 PIMCU1022 NLD500MISO PIICSP104 PIMCU1021

NLD510MOSI PIICSP103

PIMCU1020 NLD520SCK

PIMCU1019 NLD530SS

PIR3102

PIU305 PIUSB103 NLD0 NLDP

PIR3002 PIU306 PIUSB102

NLD0 NLDN

PIC701 PIU205 NLDTR0BLE

PIC1701

PID01202

PIU3013 NLDTR0CH340

PIMCU1036 PIU4021

NLEN0DIRA1 PIMCU1035

PIU4022

NLEN0DIRA2 PIMCU1037

PIU4017

NLEN0DIRB1 PIMCU1038 PIU4016

NLEN0DIRB2

PIMCU1024

PIU4023

NLEN0PWMA PIMCU1023

PIU4015

NLEN0PWMB

PIMCU1045 PIR3602

NLENA0A

PIMCU1042 PIR3702

NLENA0B

PIMCU1046 PIR4102 NLENB0A

PIMCU1041

PIR4202

NLENB0B

PIC202

PIC301

PIC502

PIC0601 PIC601

PIC801

PIC902 PIC1002

PIC1102

PIC1202

PIC1302

PIC1502 PIC1602

PIC1801

PIC1901 PIC2001

PIC2101

PIC2201

PIC2302 PIC2402

PIC2802 PIC29002

PIC2901 PIC3001

PIC3101

PIC3502 PIC3701 PIC3801

PIC3901

PIC4802

PIC7602

PIC7801 PIC7901

PIC8002

PICM102

PICM202

PICM302

PICM402

PICM502

PICpi02

PID002

PID701 PID1001

PID1402

PID1701

PID1902

PIICSP106

PIJ104 PIJ204 PIJ304 PIJ404 PIJ503

PIJ603 PIJ703 PIJ803 PIJ903 PIJ1003

PIJP102

PIJP103

PIM104

PIM204

PIMCU1011

PIMCU1032

PIMCU1062

PIMCU1081 PIMCU1099

PIMK102

PIP102

PIP0SERVO03

PIQ102

PIQ303

PIQ402 PIQ502

PIR701 PIR902

PIR1702

PIR2101

PIR2502

PIR03001

PIR3001 PIR3101

PIR4701

PIR5002

PIR5902

PIRG02

PIRGB102

PIRGB108

PIRGB109

PIRGB1010

PIRGB1011

PIRT102

PIS101

PIU104

PIU203

PIU301

PIU4018

PIU5007

PIUM101

PIUM901

PIUM9011

PIUM9018

PIUSB104

PIUSB105

PIUSB106

PIY102

PIY202

NLGND

PID501

PIR4602

PIRGB106

PIS202 NLKEY

PIL00102

PIU401

PIU402 NLM10

PIF302 PIU405

PIU406 NLM10

PIF402

PIU407

PIU408 NLM20

PIL00401

PIU4011

PIU4012

NLM20

PIRM301 PIUM909 NLMPU0AD0

PIUM9012 NLMPU0INT

PIC2701

PIC10101 PID00102

PIL00101

PIM106

PIR3401

NLMTR10

PIC2702

PIC10201 PID00202

PID1201 PID1302 PIL00202 PIM105

NLMTR10

PIC3201

PIC10301 PID00302

PIL00302

PIM206

PIR4301

NLMTR20

PIC3202

PIC10401 PID00402

PID1501 PID1602 PIL00402 PIM205

NLMTR20

PIC101 PIR201 PIC102 PIMK101 PIR502

PIC201 PIU5004

PIC302 PIR401 PIR702 PIU105

PIC4001

PIU5001

PIC4002

PID1002 PIL301 PIU5008

PIC702 PIR1801

PIC1201 PIL202

PIMCU10100

PIC2202

PIU304

PIC28001 PIC29001 PIU5006

PIC28002 PIR2501

PIC2801

PIC3102

PIF101 PIU5002

PIC3501

PIQ501

PIR4601

PIR4702

PIC3902

PIQ601 PIR4901 PIR5001

PIC7502 PIQ201 PIR1901 PIR4002

PIC7601

PIQ401

PIQ503 PIR03002

PIR4401

PIC8001

PID0501

PID0601

PID801 PIQ204

PIR002

PIR4902

PIR5801

PICM101 PIUM9020 PICM201 PIUM9010

PID001 PIR001

PID201 PILS102 PIR1002

PID0502 PIF102

PID502

PID802

PIR4402

PID601 PIR1602

PID0602 PIF0202

PID901 PIR01702

PID01002

PIU302

PID1202 PID1301 PIR3402

PID1401 PIR3901

PID1502 PID1601 PIR4302

PID1901

PIR4801

PIF201 PIQ603

PIF301 PIL00201

PIF401 PIL00301

PIJ501 PIJ502

PIM101 PIR3701 PIM102 PIR3601

PIM201 PIR4201

PIM202 PIR4101

PIMCU104

PIMCU108 PIMCU109

PIMCU1012 PIR03302

PIMCU1013 PIR03202

PIMCU1014

PIMCU1025

PIMCU1027 PIMCU1028 PIMCU1029 PIMCU1043 PIR01402

PIMCU1044 PIR01502

PIMCU1047 PIMCU1048 PIMCU1049 PIMCU1050

PIMCU1063 PIR02801

PIMCU1064 PIR02901

PIMCU1065

PIMCU1066

PIMCU1067

PIMCU1068 PIMCU1069

PIMCU1070

PIMCU1071

PIMCU1072 PIMCU1073

PIMCU1074

PIMCU1075

PIMCU1076 PIMCU1077 PIMCU1078 PIMCU1079

PIPG101 PIPG102

PIPG201 PIPG202

PIPPower01 PIPPower02

PIPPower03

PIPRGB01

PIPRGB02 PIPRGB03

PIPRGB04

PIPRGB05

PIPRGB06 PIPRGB07

PIPRT01

PIPRT02 PIPRT03

PIPRT04

PIQ101 PIR1302

PIQ103 PIR1001

PIQ301 PIR1802 PIR2001 PIR2102

PIQ403 PIR4001

PIR101

PIR202 PIU102

PIR102

PIR402 PIU101

PIR801 PIR901 PIU103

PIR01102 PIU201

PIR01202 PIU202

PIR1701 PIR3502

PIU5005

PIRM102 PIUM9023

PIRM202 PIUM9024

PIU206

PIU307 PIY101 PIU308 PIY103 PIU309

PIU3010 PIU3011

PIU3012

PIU3014

PIU3015

PIU5003

PIUM902 PIUM903 PIUM904 PIUM905 PIUM906

PIUM907

PIUM9014 PIUM9015 PIUM9016 PIUM9017

PIUM9019

PIUM9021 PIUM9022

PIC2502 PIC2601

PIC3401

PIC10102 PIC10202 PIC10302 PIC10402

PIC10502 PIC10602 PIC10702 PIC10802 PID00101 PID00201 PID00301 PID00401

PIRG01

PIU403

PIU404

PIU409

PIU4010

NLPGND

PIC1702

PIICSP105

PIMCU1030

PIQ302

PIR2202

PIS102

NLRESET

PID01201 PIU207 NLRST0BLE

PIC7501 PIC7802 PIC7902

PID1702

PIJP101 PIQ203 PIR1902

PIRGB107

PIS201

PIC2501 PIC2602

PIC3402 PIC10501 PIC10601 PIC10701 PIC10801

PIF0201

PIJ103 PIJ203 PIJ303 PIJ403

PIP0SERVO04

PIU4013

PIU4014

PIU4024

NLV0M

PIC1501 PIC1601

PIF202

PIU3016

PIUSB101

PIMCU1034 PIY203

NLXTAL1

PIMCU1033 PIY201

NLXTAL2

Page 47: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas

3x2M

+5V

GND

+5V

GND

8x1F-H8.5

GND

+5V

GND

47u 47u

GND GND

GN

D

GND

GREEN

GN

D

+5V

M7

GND

NCP1117ST50T3G

100n

GND100n

100n

8x1F-H8.5

8x1F-H8.5

+3V3

+5V

+5V

ATMEGA2560-16AU

100n100n

8x1F-H8.5

22p

+5V

GND

100n

GND

1u

YELLOW

YELLOW

USB-B_TH

MF-MSMF050-2 500mA

+5V

100n

GND

YELLOW

GN

D

100n

FDN340P

GND

100n

GND

+5V

100n

+5V

GND

1u

+5V

ATMEGA16U2-MU

3x2M

+5V

GND

GND

GND

BLM21

CG

0603

MLC

-05E

CG

0603

MLC

-05E

CSTCE16M0V53-R0 16MHZ

GN

D

1M

1k

1k

1k

1k

10K

10K

10K

10K

10K

10K

10K

10K

1k

1k

1k

1k

22R

22R

22R

22R

TS42031-160R-TR-7260

1M

GND

16M

Hz

22p

22p

GN

D

2x2M

- N

M

LMV358IDGKR

LMV358IDGKR

CD

1206

-S01

575

18x2F-H8.5

+5V

GN

D

10x1F-H8.5

8x1F-H8.5

CD

1206

-S01

575

ICSP1 23 45 6

12345678

PWML

PC1 PC2

OND1

11

22

3 3

1

IN3 OUT 42

IC1

C3

C6

C2

12345678

ADCL

12345678

COMMUNICATION

GNDGNDGND

VCCVCC

VCC

(A8)PC0 53(A9)PC1 54(A10)PC2 55(A11)PC3 56(A12)PC4 57(A13)PC5 58(A14)PC6 59(A15)PC7 60

(AD0)PA0 78(AD1)PA1 77(AD2)PA2 76(AD3)PA3 75(AD4)PA4 74(AD5)PA5 73(AD6)PA6 72(AD7)PA7 71

(ADC0)PF0 97(ADC1)PF1 96(ADC2)PF2 95(ADC3)PF3 94(ADC4/TCK)PF4 93(ADC5/TMS)PF5 92(ADC6/TDO)PF6 91(ADC7/TDI)PF7 90

(ALE)PG2 70

(CLKO/ICP3/INT7)PE7 9

(ICP1)PD4 47

(MISO/PCINT3)PB3 22

(MOSI/PCINT2)PB2 21

(OC0A/OC1C/PCINT7)PB7 26

(OC0B)PG5 1

(OC1A/PCINT5)PB5 24(OC1B/PCINT6)PB6 25

(OC2A/PCINT4)PB4 23

(OC3A/AIN1)PE3 5(OC3B/INT4)PE4 6(OC3C/INT5)PE5 7

(RD)PG1 52

(RXD0/PCIN8)PE0 2

(RXD1/INT2)PD2 45

(SCK/PCINT1)PB1 20

(SCL/INT0)PD0 43(SDA/INT1)PD1 44

(SS/PCINT0)PB0 19

(T0)PD7 50

(T1)PD6 49

(T3/INT6)PE6 8

(TOSC1)PG4 29

(TOSC2)PG3 28

(TXD0)PE1 3

(TXD1/INT3)PD3 46

(WR)PG0 51

(XCK0/AIN0)PE2 4

(XCK1)PD5 48

AGND99

AREF98

AVCC100

GND11326281

PH0(RXD2)12 PH1(TXD2)13 PH2(XCK2)14 PH3(OC4A)15 PH4(OC4B)16 PH5(OC4C)17 PH6(OC2B)18 PH7(T4)27

PJ0(RXD3/PCINT9)63 PJ1(TXD3/PCINT10)64 PJ2(XCK3/PCINT11)65 PJ3(PCINT12)66 PJ4(PCINT13)67 PJ5(PCINT14)68 PJ6(PCINT15)69 PJ779

PK0(ADC8/PCINT16)89 PK1(ADC9/PCINT17)88 PK2(ADC10/PCINT18)87 PK3(ADC11/PCINT19)86 PK4(ADC12/PCINT20)85 PK5(ADC13/PCINT21)84 PK6(ADC14/PCINT22)83 PK7(ADC15/PCINT23)82

PL0(ICP4)35 PL1(ICP5)36 PL2(T5)37 PL3(OC5A)38 PL4(OC5B)39 PL5(OC5C)40 PL641 PL742

RESET30

VCC10316180

XTAL134

XTAL233

IC3

C5C4

12345678

ADCH

C1

C8

C13

RX

TX

X21234P

$1P

$1P

$2P

$2

F1

C9

L

C7

T1

C12C11

21

RESET-EN

C10

IC4

(AIN0/INT1)PD1 7

(AIN2/PCINT11)PC2 5

(CTS/HWB/AIN6/TO/INT7)PD7 13

(INT4/ICP1/CLK0)PC7 22

(INT5/AIN3)PD4 10

(OC0B/INT0)PD0 6

(OC1A/PCINT8)PC6 23

(PCINT5)PB5 19(PCINT6)PB6 20(PCINT7/OC0A/OC1C)PB7 21

(PCINT9/OC1B)PC5 25

(PCINT10)PC4 26

(PD0/MISO/PCINT3)PB3 17

(PDI/MOSI/PCINT2)PB2 16

(RTS/AIN5/INT6)PD6 12

(RXD1/AIN1/INT2)PD2 8

(SCLK/PCINT1)PB1 15

(SS/PCINT0)PB0 14

(T1/PCINT4)PB4 18

(TXD1/INT3)PD3 9

(XCK/AIN4/PCINT12)PD5 11

AVCC32

D+29 D-30

GND3

PAD33

RESET(PC1/DW)24

UCAP27

UGND28

UVCC31

VCC4

XTAL11

XTAL2(PC0)2

ICSP11 23 45 6

L1

Z1 Z2

21

GROUND

Y1

R1

RN4A1 8

RN4B2 7

RN4C3 6

RN4D4 5

RN

5A1

8

RN

5B 27

RN

5C3

6R

N5D

45

RN1A1 8

RN

1B2

7

RN

1C3

6

RN1D4 5

RN3A1 8

RN3B27

36

RN3C

45

RN

3D

RN2A18

RN2B2 7

RN2C3 6

RN2D45

RESET

12

34

5

R2

IN1

ON/OFF3

NC/FB 4

OUT 5

GND2

Y2

21

C14

C15

JP51

23

4

IC7A

2

31

IC7B

6

57

84

D3

XIO

123456789101112131415161718192021222324252627282930313233343536

JP6123456789

10

12345678

POWER

D2

+5V

+5V

GNDAREF

AREF

AREF

RESET

RESET

RESET

RESET

RESET

VIN

VIN

VIN

M8RXD

M8RXD

M8TXD

M8TXD

PWRIN

ADC0

ADC2ADC1

ADC3ADC4ADC5ADC6ADC7

+3V3

+3V3

+3V3

SDA

SDA

SDA

SCL

SCL

SCL

ADC9ADC8

ADC10ADC11ADC12ADC13ADC14ADC15

PB3

PB3

PB3

PB2

PB2

PB2

PB1

PB1

PB1

PB5PB4

PE5

PE5PE4

PE4PE3

PE3

PE1 PE1

PE1

PE0 PE0

PE0

DTR

USBVCC

USBVCC

USBVCC

GATE_CMD

CMP

PB6

PH3

PH3

PH4

PH4

PH5

PH5

PH6

PH6

PG5

PG5

RXD1TXD1RXD2

RXD2

RXD3

RXD3

TXD2

TXD2

TXD3

TXD3

PC0

PC0

PC1

PC1

PC2

PC2

PC3

PC3

PC4

PC4

PC5

PC5

PC6

PC6

PC7

PC7

PB0

PB0

PG0

PG0

PG1

PG1

PG2

PG2

PD7PD7

PA0

PA0

PA1

PA1

PA2

PA2

PA3

PA3

PA4

PA4

PA5

PA5

PA6

PA6

PA7

PA7 PL0

PL0

PL1

PL1

PL2

PL2

PL3

PL3

PL4

PL4

PL5

PL5

PL6PL6 PL7PL7

PB7

VUCAP

RD-

RD-

RD+

RD+

RESET2

RESET2

MISO2

MISO2

MOSI2

MOSI2

SCK2

SCK2

XVCC

RXLTXL

D-D+

UG

ND

UGND

USH

IELD

XTAL2

XTAL1

XTAL1

XT2

XT1

8PB7

8PB6

8PB5

8PB4

L13

+ +

X1POWERSUPPLY_DC21MMX

US

B

01234567

8910111213

Arduino MEGA 2560

15161718192021

14

(SCK)(MISO)

(MOSI)

pwmpwmpwmpwm

pwmpwmpwm

pwmpwmpwmpwmpwm

pwmpwmpwm

(TX0)(RX0)

515253

pwmpwm

pwm

pwmpwm

(MISO)

(SCK)(MOSI)

(SS)(MOSI)

(SCK)(MISO)

222324252627282930323436

31333537

494745434139

50484644424038

pwmpwmpwm

USB

boo

t En

TM

Reference Designs ARE PROVIDED "AS IS" AND "WITH ALL FAULTS. Arduino DISCLAIMS ALL OTHER WARRANTIES, EXPRESS OR IMPLIED,

Arduino may make changes to specifications and product descriptions at any time, without notice. The Customer must notREGARDING PRODUCTS, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE

rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Arduino reservesthese for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them.The product information on the Web Site or Materials is subject to change without notice. Do not finalize a design with this information.

ARDUINO is a registered trademark.

Page 48: Robot Arduino controlado mediante sensores y con ...openaccess.uoc.edu/webapps/o2/bitstream/10609/65306/7/lazarragaTF… · Robot Arduino controlado mediante sensores y con respuestas