• No se han encontrado resultados

Diseño hardware y desarrollo de librerías para la implementación de una plataforma open source basada en un microcontrolador PIC como alternativa a la plataforma Arduino UNO

N/A
N/A
Protected

Academic year: 2020

Share "Diseño hardware y desarrollo de librerías para la implementación de una plataforma open source basada en un microcontrolador PIC como alternativa a la plataforma Arduino UNO"

Copied!
133
0
0

Texto completo

(1)Trabajo Final de Grado. GRADO EN INGENIERÍA ELECTRÓNICA INDUSTRIAL Y AUTOMÁTICA. Diseño hardware y desarrollo de librerías para la implementación de una plataforma open source basada en un microcontrolador PIC como alternativa a la plataforma Arduino UNO.. IKER RAMÍREZ GOROSTIZAGA. Tutor Cristian Carmona Gómez. Escuela Politécnica Superior Universidad de las Islas Baleares Palma, 2 de septiembre de 2016.

(2)

(3) Í NDICE GENERAL. Índice general. i. Índice de figuras. iii. Índice de cuadros. v. Resumen. vii. 1. INTRODUCCIÓN 1.1 Estado del arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Motivación del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1 1 3. 2. PLATAFORMA ARDUINO 2.1 Comunidad Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Proyectos basados en Arduino . . . . . . . . . . . . . . . . . . . . . . . . .. 7 9 10. 3. BASES DE DISEÑO 3.1 Bases de diseño hardware . . . 3.1.1 Microcontrolador . . . 3.1.2 Etapa de comunicación 3.1.3 Etapa de comunicación 3.1.4 Nivel básico . . . . . . . 3.1.5 Nivel avanzado . . . . . 3.1.6 Tabla comparativa . . . 3.2 Bases de diseño software . . . . 3.2.1 Lenguaje Ensamblador 3.2.2 Lenguaje JAVA . . . . . . 3.2.3 Lenguaje C y C++ . . . . 3.2.4 Concepto de librería . .. . . . . . . . . . . . .. 13 13 13 14 17 18 21 23 24 24 25 25 25. . . . . . .. 29 29 30 31 31 33 35. 4. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . .. ARDUINO UNO 4.1 Etapa de comunicación . . . . . . . . . 4.1.1 UART TTL . . . . . . . . . . . . 4.1.2 ICSP . . . . . . . . . . . . . . . 4.2 Etapa de potencia . . . . . . . . . . . . 4.2.1 Método de conversión a 5 V . 4.2.2 Método de conversión a 3,3 V i. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . ..

(4) ii. 5. 6. ÍNDICE GENERAL DESARROLLO HARDWARE 5.1 Selección del microcontrolador alternativo . . . . . . . . . . . 5.2 Sección de comunicación . . . . . . . . . . . . . . . . . . . . . 5.3 Sección de potencia . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Elementos de seguridad y protección . . . . . . . . . . . . . . 5.4.1 Seguridad y protección ante sobrecargas de corriente 5.4.2 Seguridad y protección ante ruido . . . . . . . . . . . . 5.5 Diseño asistido por computador . . . . . . . . . . . . . . . . . 5.5.1 CADSOFT EAGLE PCB . . . . . . . . . . . . . . . . . . . 5.5.2 Archivo .SCH (Schematic) . . . . . . . . . . . . . . . . . 5.5.3 Archivo .BRD (Board) . . . . . . . . . . . . . . . . . . . DESARROLLO SOFTWARE 6.1 MPLAB . . . . . . . . . . . . . . 6.1.1 MPLAB 8.X . . . . . . . 6.1.2 MPLAB X . . . . . . . . . 6.2 Librerías . . . . . . . . . . . . . . 6.2.1 I/O digital . . . . . . . . 6.2.2 Módulo ADC . . . . . . 6.2.3 Módulo PWM . . . . . . 6.2.4 Módulo USART . . . . . 6.2.5 Temporizador . . . . . . 6.3 Gestor de arranque . . . . . . . 6.3.1 Tiny Multi Bootloader+. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . .. 39 39 46 48 50 51 52 54 54 54 63. . . . . . . . . . . .. 69 69 70 70 71 71 76 82 85 91 95 97. 7. CONCLUSIÓN: PLATAFORMA FINAL 101 7.0.1 Información técnica . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7.0.2 Comparativa final . . . . . . . . . . . . . . . . . . . . . . . . . . . 103. 8. ANEXO I: PRUEBAS REALIZADAS 8.1 Parpadeo de led con selección de frecuencia . . . . . . 8.2 Comprobación de potencia . . . . . . . . . . . . . . . . 8.2.1 Regulador a 5 V . . . . . . . . . . . . . . . . . . . 8.2.2 Regulador a 3,3 V . . . . . . . . . . . . . . . . . . 8.3 Salida de voltaje a partir del módulo PWM . . . . . . . 8.4 Lectura de entrada analógica a partir del módulo ADC. 9. Acrónimos. Bibliografía. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. 105 105 108 108 109 110 112 117 121.

(5) Í NDICE DE FIGURAS. 2.1. Arduino UNO Rev3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8. Arduino MICRO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arduino NANO: (izquierda) vista frontal, (derecha) vista trasera. Arduino UNO Rev3. . . . . . . . . . . . . . . . . . . . . . . . . . . Arduino 101. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arduino PRO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arduino MEGA 2560. . . . . . . . . . . . . . . . . . . . . . . . . . Arduino DUE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arduino ZERO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. 18 19 19 20 20 21 22 22. 4.1 4.2 4.3. Cabezal de cable Jack de 2,1mm. . . . . . . . . . . . . . . . . . . . . . . . . . Esquemático: Etapa de regulación de tensión a 5 V. . . . . . . . . . . . . . . Esquemático: Etapa de regulación de tensión a 3,3 V. . . . . . . . . . . . . .. 32 33 35. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15. Plataforma de búsqueda de Microchip. . . . . . . . . . . . Plataforma de búsqueda de Microchip®. . . . . . . . . . PIC18F25K80. . . . . . . . . . . . . . . . . . . . . . . . . . . Chip FT232R. . . . . . . . . . . . . . . . . . . . . . . . . . . Conector USB tipo mini-B. . . . . . . . . . . . . . . . . . . Pulsador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conector Jack de 2,1mm hembra. . . . . . . . . . . . . . . Gráfica de comportamiento de un condensador. . . . . . Diagrama esquemático del microcontrolador. . . . . . . Diagrama esquemático de la etapa de conversión a 3,3 V. Diagrama esquemático de la etapa de conversión a 5 V. . Diagrama esquemático de la fase de comunicación USB. Plataforma finalizada. . . . . . . . . . . . . . . . . . . . . . Resultado del diseño de la placa mediante Eagle. . . . . . Plataforma finalizada conectada al PICKIT3. . . . . . . .. . . . . . . . . . . . . . . .. 41 43 44 47 47 48 50 52 55 57 59 61 64 65 67. 6.1 6.2. Ciclo de trabajo de la señal PWM. . . . . . . . . . . . . . . . . . . . . . . . . . Software de gestión del gestor de arranque. . . . . . . . . . . . . . . . . . . .. 82 98. 7.1 7.2. Plataforma final. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Relación de los cabezales de la plataforma con los pines del MCU. . . . . . 102. 8.1. Parpadeo de led con selección de frecuencia. . . . . . . . . . . . . . . . . . . 107 iii. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . . . .. 7.

(6) iv 8.2 8.3 8.4 8.5. Índice de figuras Alimentación externa de 7,5 V y alimentación de placa de 5 V. . . . . . . . . Alimentación externa de 7,5 V y alimentación de placa de 3,3 V. . . . . . . . Proceso seguido por el módulo PWM en su progreso de 0 V a 5 V. . . . . . . Visualización por el terminal de datos de los valores analógicos de entrada.. 108 109 112 113.

(7) Í NDICE DE CUADROS. 3.1 3.2. Tabla comparativa. Sección: Nivel básico (entry level). . . . . . . . . . . . . . Tabla comparativa. Sección: Nivel avanzado (enhanced features). . . . . . .. 23 23. 4.1. Tabla comparativa: Microcontrolador convertidor de UART a USB de Arduino UNO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 31. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10. Tabla de propiedades del microcontrolador ATmega328P. . . . . . . . Tabla de requisitos mínimos del microcontrolador Microchip. . . . . Tabla de comparativa: ATmega328P y PIC18F25K80. . . . . . . . . . . Tabla de características: ON SEMICONDUCTOR NCP1117ST50T3G. Tabla de características: Texas Instruments LP2985-33DBVR. . . . . . Tabla de características: Texas Instruments LMV358IDGKR. . . . . . Tabla de características: NPX-NX2301P. . . . . . . . . . . . . . . . . . . Tabla de características: Fairchild-S1M. . . . . . . . . . . . . . . . . . Tabla comparativa de pines entre el microcontrolador y la placa. . . Pines del microcontrolador sin relación con las salidas de la placa. .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. 40 40 45 49 49 49 50 51 56 57. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 6.18 6.19 6.20. Tabla de funciones: I/O digital. . . . . . . . . . . . Función initDIG. . . . . . . . . . . . . . . . . . . . . Función ReadDIG. . . . . . . . . . . . . . . . . . . . Función WriteDIG. . . . . . . . . . . . . . . . . . . . Función ToogleDIG. . . . . . . . . . . . . . . . . . . Tabla de funciones: Módulo ADC. . . . . . . . . . . Función initADC. . . . . . . . . . . . . . . . . . . . Función OnADC. . . . . . . . . . . . . . . . . . . . . Función StartADC. . . . . . . . . . . . . . . . . . . . Función StopADC. . . . . . . . . . . . . . . . . . . . Función BusyADC. . . . . . . . . . . . . . . . . . . . Función GetValueADC. . . . . . . . . . . . . . . . . Tabla de funciones: Módulo PWM. . . . . . . . . . Función initPWM. . . . . . . . . . . . . . . . . . . . Función StartPWM. . . . . . . . . . . . . . . . . . . Función StopPWM. . . . . . . . . . . . . . . . . . . Tabla de configuración del registro del baud rate. . Tabla de funciones: Módulo USART. . . . . . . . . Función initUART. . . . . . . . . . . . . . . . . . . . Función BusyUART. . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. 72 73 73 74 74 79 79 80 80 80 80 81 83 83 84 84 87 87 88 88. v. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . ..

(8) vi. Índice de cuadros. 6.21 6.22 6.23 6.24 6.25 6.26 6.27 6.28. Función PutUART. . . . . . . . . . . . . Función PutsUART. . . . . . . . . . . . Función DataReceivedUART. . . . . . . Función ReadUART. . . . . . . . . . . . Relación de tiempos y registro TMR0. . Tabla de funciones: Temporizador 0. . Función initT0. . . . . . . . . . . . . . . Función T0start. . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. 88 89 89 89 93 93 94 94. 7.1. Tabla de comparativa: ATmega328P y PIC18F25K80. . . . . . . . . . . . . . . 103.

(9) R ESUMEN. En este proyecto, por un lado se ha diseñado una plataforma electrónica de desarrollo que permite la realización de proyectos electrónicos tanto a nivel usuario como a nivel profesional y, por otro lado se han desarrollado cinco librerías básicas para la utilización de la misma. El proyecto está basado en la plataforma ampliamente conocida: Arduino UNO, con la particularidad de estar diseñada con un microcontrolador PIC de la marca Microchip. La innovación en este sentido viene de la necesidad palpable en el mundo de la electrónica de disponer de una plataforma multifuncional para diseños electrónicos que reciba todo el soporte de Microchip, cosa que a día de hoy no existe. Arduino fue creado por David Cuartielles, ingeniero electrónico, y Massimo Banzi, diseñador y desarrollador web, en 2005 en Italia. Surgió por la necesidad de poder acceder a una plataforma de desarrollo de proyectos electrónicos de bajo coste, funcional y para múltiples usos y en base a esta motivación se creó lo que ahora conocemos como Arduino. Arduino, como marca, ofrece un amplio catálogo de placas de desarrollo con las cuales abarca un gran nicho de mercado en cuanto a diseño electrónico se refiere. Dentro de todos los productos que Arduino ofrece, podemos encontrar desde placas básicas multifuncionales, como es la conocida Arduino UNO, hasta robots sobre ruedas, como el Arduino Robot. La plataforma PIC resultante de la realización de este proyecto integra en su interior un microcontrolador PIC18F25K80 que, además de incluir todos los módulos disponibles en la plataforma Arduino UNO, integra en su interior un módulo de comunicación CAN-Controller Area Network y más memoria RAM, factores que hacen de esta plataforma una implementación superior a la plataforma Arduino UNO. La plataforma PIC resultante del desarrollo de este proyecto utiliza un gestor de arranque llamado Tiny Multi Bootloader+ que nos ofrece una manera rápida y sencilla de programar el microcontrolador sin necesidad de disponer de hardware o software adicional más que la plataforma y un cable conector de USB. Además, Microchip nos ofrece una herramienta de desarrollo software gratuita conocida como MPLAB que integra la información pertinente de cada uno de los microcontroladores PIC, este dispone de diferentes compiladores tanto para lenguaje C/C++ como para ensamblador o assembler. La programación externa de la plataforma, sin utilizar el gestor de arranque, corre a cargo de un dispositivo hardware, proporcionado también por Microchip, que. vii.

(10) viii. RESUMEN. nos permite programar el microcontrolador a partir del puerto de comunicación ICSPIn-Circuit Serial Programming. En este proyecto se desarrollan cinco librerías que se pueden considerar fundamentales para la utilización de cualquier plataforma electrónica. • IODigital: Se encarga de gestionar todo lo relativo a los pines de entrada y salida configurados como digitales. • UART: Encargada de facilitar la comunicación serie utilizando el protocolo UART. • ADC: Nos ofrece una interfaz sencilla para poder leer valores de tensión provenientes de una fuente externa. • PWM: Nos permite obtener una salida de tensión regulable por software en uno de los pines de la plataforma. • T0: Nos permite configurar lapsos programables de tiempo y hacer uso de la rutina de servicio de interrupción..

(11) CAPÍTULO. 1. INTRODUCCIÓN. 1.1 Estado del arte El número de personas capaces de acceder a una plataforma de diseño de sistemas electrónicos y de hacer un uso práctico de las mismas ha crecido exponencialmente desde el nacimiento de internet. Internet provee a un ingente número de personas la capacidad de aprender cualquier cosa imaginable y, dentro de ellas, se encuentra, por supuesto, el diseño de sistemas electrónicos. En la red podemos aprender de forma autodidacta lenguajes de programación, obtener información de primera de mano de las plataformas más utilizadas, con más prestaciones y más adecuadas, así como las últimas novedades o últimos proyectos realizados, por ello es una herramienta fundamental a la hora de analizar el nicho de mercado al cual va dirigido este tipo de artículos. A raíz de internet, de la curiosidad y motivación de mucha gente corriente con gran ingenio que hace algunos años no podían imaginar el hecho de programar un microcontrolador, así como la motivación de muchos profesionales en el campo de la electrónica, nació lo que hoy en día se conoce como Maker Movement[2] o movimiento maker. El movimiento maker describe una de las tendencias que está redefiniendo la relación entre las personas y la tecnología. Hace unos años, la innovación tecnológica era cosa de grandes compañías que invertían fortunas en I+D+i para encontrar aquello que toda persona necesita y sacar un beneficio económico a cambio, pero hoy en día todas las personas tienen a su disposición las herramientas y la metodología necesaria para crear sus propios productos. La base de este movimiento es, sin duda, el conocimiento abierto. El conocimiento abierto se puede entender como un sentimiento altruista de la gente que compone dicho movimiento, y que ofrecen sus avances e ideas de forma gratuita para que toda 1.

(12) 1. INTRODUCCIÓN persona interesada pueda aprender e incluso mejorar los sistemas diseñados hasta el momento. De esta forma se promueve que la gente realice dichos diseños por su cuenta, bajo el concepto DIY - Do It Yourself [3] (hazlo tú mismo), término acuñado por Chris Anderson en 2010, y de esta manera conseguir que un producto final haya surgido del trabajo en equipo de mucha gente cooperando por el mismo fin. A partir de la globalización producida por la aparición de internet surgió el concepto de crowdsourcing[4], que se podría definir como la externalización de tareas que una empresa delega en un grupo de personas o comunidad a través de una convocatoria abierta a todo el mundo. De esta forma, a través de la red, puedes tener en contacto directo a un indeterminado número de personas expertas en el problema planteado, aumentando así las posibilidades de encontrar la mejor solución posible, mediante la colaboración de todos los interesados. A medida que avanza la tecnología, avanza también la forma en que entendemos nuestra vida diaria. Es por ello que, hoy en día, no imaginamos pasar un día separados de nuestros teléfonos inteligentes o smartphones, ya que nos sentimos totalmente desamparados si salimos de la tela de araña que se ha creado en el mundo para tenernos a todos conectados los unos a los otros en cualquier momento o situación. La tecnología avanza a pasos agigantados y, cada vez más, se precisan herramientas más potentes para mantener la oferta tecnológica equiparada con los avances que ofertan los laboratorios de investigación. Por ello, es fundamental la rapidez de adaptación a este ritmo frenético de crecimiento tecnológico. Hay que tener en cuenta que, cada una de las innovaciones que salen a la luz, abre un nuevo nicho de mercado al cual va dirigido y, hoy en día, pequeños detalles marcan la diferencia entre el triunfo y el fracaso. Por ello, es imprescindible saber analizar qué necesidades se están creando continuamente en nuestra sociedad a causa de los avances tecnológicos que vivimos y satisfacerla lo antes posible, ya que esto te da experiencia en el sector y exclusividad. Hace unos años, cuando internet todavía se encontraba en fase de desarrollo y solo unos pocos privilegiados podían acceder a él, ya existían expertos tecnológicos como ingenieros informáticos o electrónicos que desarrollaban proyectos a gran escala, pero que no tenían un canal fluido para transmitir sus conocimientos al resto del mundo. Es por ello que ahora, donde internet es la herramienta más utilizada mundialmente y nos interconecta a todos, el acceso a prácticamente cualquier tipo de información está en la palma de nuestras manos y, cómo no, hay una ingente cantidad de expertos en diversos campos tecnológicos dispuestos a compartir toda su información teórica en relación a sus especialidades. El problema que se plantea es que con internet cualquier persona puede aprender un lenguaje de programación desde su casa, qué es un microcontrolador o como funciona el sistema binario, es decir, se puede aprender, pero resulta más difícil ser capaz de desarrollar. Esto se debe a que, al final, cualquier idea, proyecto o diseño que se te ocurra precisa de un componente físico que muchas veces no es el ordenador que tienes en casa, sino que se trata de un sistema hardware específico que, en ocasiones, requiere una inversión económica tal que ninguna persona amateur en este campo esta dispuesta a gastar.. 2.

(13) 1.2. Motivación del proyecto Además de este sector social, existe una necesidad real y palpable en el sector profesional. Hoy en día, en cualquier laboratorio podemos encontrar un gran número de computadoras a disposición de los investigadores o desarrolladores, y esto es algo que todo el mundo da por hecho y por ello, a la hora de diseñar un proyecto ya cuentas con que dispones de un ordenador con el que podrás acceder a todo el software que precises. En cambio, a la hora de diseñar o plasmar un proyecto relacionado con la electrónica todavía existe la necesidad de diseñar primero la plataforma donde configurar tu proyecto. Es decir, en muchos casos, no solo debes preocuparte de desarrollar el proyecto en sí, sino que debes preocuparte también de crear una plataforma donde se sustente dicho proyecto. La conclusión de este análisis es que existen varios nichos de mercado por explotar, relacionados con la tecnología, que hacen referencia a toda esa gente nutrida intelectualmente de internet que no pueden desarrollar al cien por cien su potencial por falta de un medio de aplicación físico donde plasmar su idea, así como la gente experta en diseños electrónicos que encuentra un impedimento en el desarrollo de sus proyectos por la falta de una plataforma que incorpore un microcontrolador PIC y que les sirva de base para su diseño. Para tratar de satisfacer esta necesidad se ha creado lo que comúnmente se conoce como plataforma multifunción, que provee al usuario de un determinado número de entradas y salidas, tanto analógicas como digitales, así como un microcrontrolador y diversos puertos de comunicación que, de forma generalizada, permiten realizar prácticamente cualquier proyecto electrónico.. 1.2 Motivación del proyecto Como ya hemos avanzado en el capítulo de resumen, basaremos el desarrollo del proyecto tomando como base y referencia la plataforma Arduino. Dicha plataforma incluye un entorno de desarrollo con entradas y salidas, tanto analógicas como digitales, que facilitan el diseño y montaje de sistemas electrónicos basados en un lenguaje de programación de código abierto. Al tratarse de una plataforma open source[5], tanto su diseño como distribución puede realizarse libremente sin necesidad de licencia. La intención y motivación de este proyecto es realizar el diseño y la implementación de una alternativa a la, ya existe, plataforma Arduino UNO. Se trata de la versión más utilizada de Arduino por su equilibro entre prestaciones y tamaño, aspecto que le da una versatilidad difícil de igualar. Al analizar toda la oferta que tiene Arduino en sus productos, parece difícil imaginar que una alternativa a este diseño pueda salir rentable, pero hay un detalle que hace que Arduino sea exclusivo y que a su vez deja en el aire una posible implementación alternativa con hueco en este nicho de mercado: el microcontrolador utilizado. La marca más importante de microcontroladores podría decirse, de forma generalizada, que es Microchip[6]. Microchip tiene una serie de productos en su catálogo, de entre los cuales destacan los mundialmente conocidos microcontroladores PIC-Periphereal Interface Controller. Además, Microchip ofrece un programa llamado 3.

(14) 1. INTRODUCCIÓN MPLAB, que sirve para programar absolutamente todas las familias de microcontroladores de la casa. Entre los expertos en programación de microcontroladores existe una necesidad específica que no ha sido satisfecha a nivel mundial, que es la existencia de una plataforma multifunción con componentes Microchip. Arduino integra en todas sus plataformas microcontroladores de la casa Atmel, pero la comparación no se establece únicamente en la marca utilizada o en la calidad de ambos microcontroladores, ya que tanto los de la casa Microchip como los de la casa Atmel son microcontroladores fiables y con un gran soporte por parte de sus empresa. La cuestión es que Arduino ha querido facilitar tanto el trabajo a los diseñadores y desarrolladores, creando una interfaz de usuario y un lenguaje propio de programación orientado a sus plataformas, que han dejado de lado a esa ingente cantidad de desarrolladores de sistemas electrónicos que son expertos en programación de microcontroladores y que utilizan microcontroladores PIC para integrar en sus proyectos debido al enorme apoyo social que tienen dichos microcontroladores dentro del ámbito de la electrónica profesional. Por este motivo se venden millones de microcontroladores de la marca Microchip para desarrollo de proyectos electrónicos y, aun así, no existe ninguna plataforma de alcance mundial que integre estos microcontroladores. Es por ello que se hace necesario el diseño de una plataforma multifunción alternativa a la ofrecida por Arduino y que integre componentes Microchip. Cabe destacar en esta sección algunas de las ventajas que ofrecen los microcontroladores de la casa Microchip respecto a sus competidores[7].. • Eficiencia de código, ya que permite una gran compactación de los programas gracias a los compiladores específicos que nos ofrece el software de programación MPLAB. • Gran velocidad de procesamiento de datos. Es cierto que todas las marcas tienen microcontroladores que ofrecen altas velocidades de reloj, pero al comparar microcontroladores equivalentes en prestaciones dentro de las diversas opciones del mercado, se observa una superioridad de Microchip en cuanto a velocidad de procesamiento de datos. • Número reducido de instrucciones que facilitan el aprendizaje y la programación. Microchip es una de las compañías más grandes en cuanto a venta de microcontroladores y, es por ello, que han desarrollado un sistema de instrucciones para sus microcontroladores muy logrado y sencillo en cuanto al número. • Compatibilidad de código y pines entre diferentes versiones. Este es un factor muy importante en cuanto a diferenciación entre Microchip y otras marcas. En el caso de que tengas programado un sistema electrónico con un microcontrolador específico, pero tengas la necesidad de incrementar alguna de sus propiedades, como la memoria o la velocidad de procesamiento, es posible encontrar microcontroladores compatibles en cuanto a pines y a código, pero con propiedades diferentes. Por tanto, sería tan fácil como cambiar el microcontrolador y no tener que adaptar ni el sistema ni el código de programación de un dispositivo a otro. 4.

(15) 1.2. Motivación del proyecto • Abundantes herramientas de desarrollo hardware y software. Este es un factor que marcará la diferencia en nuestro proyecto, ya que, al tratarse de una de las empresas más importantes en venta de microcontrolador, también disponen de una comunidad de desarrolladores muy grande dando soporte tanto hardware como software a los usuarios de dichos dispositivos. Por tanto, como conclusión, en este proyecto vamos a diseñar una plataforma multifunción y multiusos que integre un microcontrolador de la marca Microchip. Dicha plataforma será la alternativa equivalente a la plataforma Arduino UNO, que se puede considerar la plataforma estándar por antonomasia de la marca Arduino.. 5.

(16)

(17) CAPÍTULO. 2. PLATAFORMA ARDUINO. [1]Como ya se ha expuesto en el apartado de resumen, Arduino fue creado por David Cuartielles, ingeniero electrónico, y Massimo Banzi, diseñador y desarrollador web, en 2005 en Italia. La idea surgió por la necesidad de poder acceder a una plataforma para desarrollo de proyectos electrónicos de bajo coste, funcional y para múltiples usos y en base a esta motivación se creo lo que ahora conocemos como Arduino. Arduino, como marca, tiene una oferta de productos muy amplia que va desde placas multifunción, como la que es objeto de este estudio, hasta impresoras 3D. En este apartado analizaremos todos los aspectos a tener en consideración por parte de la marca Arduino así como las alternativas existentes en el mercado[8]. Arduino se podría considerar la plataforma más utilizada en cuanto a diseño electrónico debido a que han enfocado el desarrollo de la plataforma a un público tanto básico como experto. Por ello, dentro del sector de desarrollo amateur, esta plataforma es la más conocida y más utilizada, pero dentro del sector profesional encontramos alternativas igual de válidas aunque requieran unos conocimientos más avanzados de electrónica. Dentro de las alternativas más conocidas destacan: Figura 2.1: Arduino UNO Rev3. 7.

(18) 2. PLATAFORMA ARDUINO. Raspberry Pi [9]Raspberry Pi es un ordenador de placa reducida o SBC-Single Board Computer de bajo coste desarrollada por la fundación británica con el mismo nombre. La placa dispone de un microprocesador Broadcom BCM2835 de 700 MHz con un procesador gráfico y una memoria RAM de 512 MB. En lugar de disco duro, utiliza una tarjeta SD y dispone de dos puertos USB, uno Ethernet y una salida HDMI. Todo integrado en una placa con un tamaño de 8,5 x 5,3 cm. De entre los proyectos potencialmente realizables con este micro ordenador se puede destacar el montaje de un acceso Wi-Fi dentro de una casa, diseñar una pantalla táctil o, incluso, llevar a cabo el control de un robot. BeagleBone [10]BeagleBone integra un microprocesador ARM A8 Cortex a 700 MHz de velocidad de procesamiento de datos con una memoria RAM de 256 MB. Dispone de ranura para tarjetas microSD, tiene un puerto USB y un puerto micro USB, así como un conector Ethernet, un conector RJ45 y un tamaño de 9 x 5,5 cm. Lo que hace exclusivo en su sector a esta plataforma es que funciona con Linux. De esta manera cualquier desarrollador puede hacer su propio software en una gran variedad de lenguajes de programación (C, C++, Java, Python, etc). Además, es compatible con sistemas operativos como Android, Ubuntu o Debian. MinnowBoard MAX [11]Se trata de la opción low cost de Intel, en conjunción con CircuitCo, que lanzaron una plataforma con un microprocesador Intel Atom de 64 bits a 1,46 GHz y con 1 GB de memoria RAM. En este caso todos los ficheros de diseño se encuentran bajo licencia, por lo que no se podría definir como open source. Nanode [12]Nanode es un proyecto open source donde se diseñó una placa evolutiva a Arduino con la peculiaridad de que era capaz de conectarse a internet a través de un navegador. Esto permite a cualquier desarrollador utilizarlo como servidor privado o como conexión con otros dispositivos. Como vemos, existen varias alternativas a las placas Arduino, pero como podemos apreciar en el análisis de cada una de ellas se trata de plataformas enfocadas a un uso semi profesional. Por ejemplo, con Arduino es muy sencillo aprender a programar plataformas multifunción y diseñar sistemas electrónicos sencillos como un sistema de encendido de led, uso de temporizadores o comunicación en serie a partir del módulo UART, pero en el caso de Raspberry Pi es más complicado saber cómo funciona un microprocesador o cómo configurar correctamente un puerto HDMI o Ethernet. En cualquier caso, con este análisis queda claro el objetivo y el motivo del triunfo de Arduino: llevar la electrónica profesional al terreno amateur, adaptándolo para que uso sea sencillo y global. 8.

(19) 2.1. Comunidad Arduino. 2.1 Comunidad Arduino Como hemos expuesto en el capítulo de introducción, estamos viviendo un momento de aumento sin freno del libre comercio de información por internet hasta el punto de ser capaces de encontrar solución prácticamente a cualquier problema que te puedas plantear en tu vida cotidiana, desde cómo arreglar el microondas de tu casa a cómo cambiar la caja de cambios de tu coche. Esto ha provocado que, en la red, se creen foros y comunidades de desarrollo o de intercambio de conocimientos de forma parecida a cómo se dividen los sectores industriales en gremios de especialización, donde se crean foros de debate y ayuda con gente profesional en esos campos dispuesta a ayudar de forma libre y gratuita a cualquier persona que solicite información. En el caso de Arduino se creó un foro[13] de debate de aspectos relacionados con sus plataformas. Este foro se ha convertido en la herramienta de uso mayoritario en cuanto a desarrollo de proyectos con Arduino se refiere puesto que siempre habrá alguien que haya tenido el mismo problema que tú con anterioridad y sepa resolverlo. De esta manera se crea un feedback que hace que tú, en un futuro, puedas ayudar a resolver los problemas de los demás. Dentro del foro de Arduino hay un apartado que tiene una importante relevancia tanto para nuestro proyecto como para entender mejor el concepto de open source. Este apartado se denomina Development o Desarrollo, y se compone de los siguientes apartados: 1. Sugerencias para el proyecto Arduino: En este apartado Arduino pone a tu disposición un foro de debate de las cosas que consideras que puede o deben ser mejoradas. De esta manera, te ofrecen una herramienta para exponer tanto las características que crees que deben tener las plataformas como los bugs o fallos que encuentres mientras utilizas sus productos. Esto es de vital importancia a la hora de ofrecer un producto cuyo diseño software y hardware es gratuito, ya que al no cobrar por él no hay fondos económicos para contratar a expertos que revisen tus productos. De esta manera, consigues averiguar los fallos que van apareciendo en las plataformas y, además, adquieres información de primera mano acerca de las necesidades de tus clientes para poder ofrecer nuevos productos en un futuro. 2. Desarrollo de hardware alternativo: En este apartado Arduino te ofrece un foro donde puedes exponer cualquier tipo de shield o módulo que hayas podido crear tú personalmente para desarrollar una función que no está contemplada por los diseñadores de Arduino de forma que cualquier persona pueda ver tu diseño y utilizar tu aportación. Además sirve de foro de sugerencias para futuros productos de la marca. 3. Desarrollo de software alternativo: En este apartado de la sección de desarrollo te ofrecen la posibilidad de publicar cualquier modificación de software que hayas realizado con la finalidad de mejorar las aplicaciones que ofrece Arduino para el desarrollo de proyectos electrónicos con sus plataformas. Además te permite compartir con los demás usuarios de Arduino mejores gestores de arranque 9.

(20) 2. PLATAFORMA ARDUINO y, lo más importante, librerías alternativas que se encarguen de predefinir funciones relacionadas con el microcontrolador o periféricos, y que no hayan sido desarrolladas por Arduino. Además de lo expuesto, en el foro general podemos encontrar gran variedad de subforos donde se debaten temas relacionados con el uso general de Arduino, tutoriales de instalación y solución de problemas, ámbitos tecnológicos de aplicación de las plataformas y, cómo no, un subforo independiente para cada una de las plataformas que oferta Arduino. Como conclusión podemos afirmar que Arduino vende plataformas de desarrollo electrónico, pero es de vital importancia su foro donde la comunidad experta en diseños con plataformas Arduino se encarga de solucionar gran cantidad de problemas y aportar una enorme cantidad de información práctica y útil acerca de sus productos sin que ellos, directamente, deban preocuparse de gestionar todo el asesoramiento técnico de sus plataformas.. 2.2 Proyectos basados en Arduino De forma teórica sabemos que las plataformas Arduino tienen un abanico de usos prácticamente infinito, donde es más importante el hecho de tener una idea novedosa, que las limitaciones que pueda tener la plataforma electrónica. Por ello, a modo de referencia es importante señalar algunos de los proyectos que se han desarrollado con plataformas Arduino, para entender mejor la gran variedad de usos que se le puede dar a una plataforma multifunción: • Alternativa para la detección y monitorización de amenazas sísmicas basadas en Arduino[14]: En este proyecto se utiliza el hardware libre de Arduino para recopilar datos de movimientos sísmicos con sensores especiales y procesar la información utilizando una plataforma Arduino para la detección de amenazas sísmicas. • Desarrollo de un prototipo controlador para un sistema domótico:[15] En este proyecto, se utiliza una plataforma Arduino para utilizarla como cerebro de una instalación domótica, de modo que la información de los sensores de la casa llegan a la plataforma y, esta, procesa los datos y recibe comandos externos para realizar determinadas acciones. • Sistema de control para la estabilidad y orientación de un helicóptero quadrotor[16]: En este proyecto se utiliza una plataforma Arduino como Unidad Central de Procesamiento para el control de estabilidad de un helicóptero con cuatro hélices. De esta forma, la plataforma adquiere los datos relacionados con la posición actual del helicóptero, por medio de acelerómetros y brújulas, y ejecuta las acciones necesarias para que la posición del helicóptero se mantenga estable. • Vehículo submarino no tripulado de bajo coste para inspección oceanográfica[17]: En este proyecto se lleva a cabo la construcción de un submarino con una plata10.

(21) 2.2. Proyectos basados en Arduino forma Arduino, que será el cerebro del submarino, y a partir de la cual podremos tanto gobernar el submarino, como recopilar datos del fondo marino. • Prototipo de robot semiautónomo especializado en fumigación agrícola bajo la tecnología Arduino[18]: En este proyecto se ha utilizado una plataforma Arduino para el diseño de un robot encargado de fumigar campos de cultivos de forma automática. • Evaluación de la plataforma arduino e implementación de un sistema de control de posición horizontal[19]: En este caso se hace uso de la plataforma hardware de Arduino para la implementación de un sistema de control de posición horizontal. Esto es, la orientación de un vehículo en el plano tierra. Para ello se hace uso de un servo motor conectado a la placa Arduino, donde se encuentra programado el controlador de posición. Como vemos, los campos donde se aplican plataformas Arduino son muy variados y, en realidad, lo expuesto es solo una ínfima parte de la gran variedad de proyectos que se han realizado utilizando plataformas basadas en un microcontrolador. Esta es una prueba más de la necesidad real que existe actualmente por disponer de este tipo de plataformas para el desarrollo de cualquier sistema electrónico, y de la versatilidad de este tipo de plataformas, ya que permiten el desarrollo de proyectos en prácticamente cualquier medio, tanto acuático, aéreo y terrestre.. 11.

(22)

(23) CAPÍTULO. 3. BASES DE DISEÑO. 3.1 Bases de diseño hardware En esta sección se va a exponer toda la información relacionada con los aspectos hardware que hemos tenido en consideración a la hora de diseñar nuestra placa. Por un lado analizaremos las partes fundamentales en que se divide una plataforma multifunción para concluir analizando cada una de las opciones ofertadas por la marca Arduino. A la hora de realizar dicho análisis, vamos a dividir el conjunto de componentes hardware de una plataforma multifunción en tres grupos fundamentales: el microcontrolador o MCU, cerebro de cualquier sistema electrónico; la etapa de comunicación, que nos proveerá de un sistema de transmisión y recepción de datos entre la placa y el exterior; y la etapa de potencia, que definirá el funcionamiento de la plataforma en cuanto a lo que alimentación eléctrica se refiere.. 3.1.1 Microcontrolador Para definir el concepto de microcontrolador es necesario analizar las partes fundamentales de las que se compone una computadora, así como la diferencia entre microcontrolador[20] y microprocesador[21]. Las partes fundamentales de una computadora son: la memoria (tanto RAM como ROM), la CPU o Unidad Central de Procesamiento y los periféricos de entrada/salida. Dentro de la computadora, un microprocesador se podría entender como sinónimo de CPU, ya que solo integra en su interior la Unidad Central de Procesamiento de manera que, externamente, se debe incorporar la memoria y los periféricos de entrada/salida para formar un sistema completo de computación. En cambio, un microcontrolador integra en su interior tanto la CPU como la memoria, de forma que podría ser definido como: «Circuito integrado programable, el cual incorpora en su interior una CPU, memoria (tanto RAM como ROM) y pines de entrada/salida (tanto digital como 13.

(24) 3. BASES DE DISEÑO analógico).» De esta manera se hace posible la creación de sistemas electrónicos en un espacio reducido y sin necesidad de incorporar dispositivos adicionales. Un microcontrolador es indispensable en cualquier proyecto electrónico y será el encargado de procesar los datos provenientes de los sensores y de ejecutar las acciones requeridas por la aplicación a través de los actuadores. Además, nos ofrecerá una serie de pines que podremos utilizar tanto para interactuar con el microcontrolador como para que el propio microcontrolador sea capaz de interactuar con el exterior.. 3.1.2 Etapa de comunicación Otro aspecto importante a tener en consideración a la hora de diseñar un sistema electrónico es la manera en que el microcontrolador se comunicará con el exterior. Comunicarse con el exterior se puede entender como la manera en que la Unidad Central de Procesamiento intercambiará información con dispositivos externos a la propia plataforma. Este concepto engloba tanto a otras plataformas que podrían estar interconectadas a través de un bus CAN, como la interfaz de usuario que se encargue de monitorizar los datos del sistema, donde podríamos optar por una comunicación serie como UART, entre otras. Los módulos más comunes y que son de utilidad a la hora de diseñar un sistema electrónico son: UART, ICSP y USB[22].. UART (Universal Asynchronous Receiver-Transmitter) Se trata de unos de los protocolos serie más utilizados, ya que la mayoría de microcontroladores disponen de dicho módulo. Se diseñó para transformar las señales que maneja la CPU (tensiones, señales de control, etc.) y adaptarlas a fin de poder transmitir o recibir información. Además, es necesaria la transformación de señales en paralelo a serie y viceversa. Utiliza una línea de datos simples para transmitir y otra simple para la recepción de los mismos. La información se transmite en bytes, bloques de ocho bits, y los mensajes contienen un bit de inicio (nivel bajo - ’0’) precedido de un bit opcional de paridad y un bit de final de trama (nivel alto - ’1’). Funciona con un voltaje de 5 V o 3,3 V dependiendo del microcontrolador, aunque para distancias largas de comunicación es conveniente aumentar dicho voltaje de manera que si alcanzamos una diferencia de potencial mínima de ± 6 V nos encontraremos ante el famoso protocolo de comunicaciones serie RS232. Un punto donde flaquea este protocolo de comunicación es en el hecho de que se trata de un protocolo asíncrono, el cual se basa en la transmisión de caracteres, normalmente de un byte de tamaño, donde cada carácter debe ser delimitado individualmente. Esto motivó el diseño del protocolo USART (Universal Synchronous/Asynchronous Receiver- Transmitter) que puede ser utilizado en modo asíncrono, pero también como protocolo de comunicación sincronizado donde una vez establecida la comunicación 14.

(25) 3.1. Bases de diseño hardware entre dos dispositivos, la información se envía en tramas pudiendo estas incorporar un gran número de caracteres en su interior. Un parámetro característico de este tipo de módulo es el baud rate, que informa acerca del número de señales de datos que se envían o reciben por segundo. Es un parámetro muy importante ya que, en modo asíncrono, tanto el dispositivo emisor como el dispositivo receptor deben estar configurado con el mismo baud rate para que puede intercambiar información. Los baud rate más utilizados son 2400, 9600, 19 200, 57 600 y 115 200. ICSP (In-Circuit Serial Programming) Se podría decir que ICSP es la propiedad que tienen algunos microcontrolador de ser programados cuando ya se encuentran instalados en un sistema y, así, no tener la necesidad de ser programados previamente. De esta manera se ahorra mucho dinero y tiempo en la depuración de sistemas electrónicos, ya que podemos construir la instalación e ir programando y depurando el sistema in situ. Antes de la aparición de este sistema de programación de microcontroladores las empresas tenían que pedir a los distribuidores de circuitos impresos que programaran los dispositivos por ellos, de manera que los diseñadores electrónicos recibían el dispositivo programado y eran incapaces de programarlos de nuevo si, a la hora de realizar la comprobación del sistema, se daban cuenta de algún error en el diseño software. La marca Microchip fue la primera en ofrecer este protocolo en sus microcontroladores. Este sistema hace uso de cinco (5) señales: 1. VPP: Voltaje del modo programación. Cuando aplicamos un voltaje específico en el pin MCLR del PIC este entra en modo programación. 2. VDD: Voltaje de alimentación. 3. VSS: Referencia de tierra. 4. ICSPCLK: Reloj de la transferencia de datos. 5. ICSPDAT: Línea de datos. Este es un protocolo de gran importancia para la comunidad relacionada con los microcontroladores PIC, ya que Microchip ofrece un dispositivo hardware conocido como PICKIT que, conectado con su programa MPLAB, permite la programación de microcontroladores de la firma Microchip. USB (Universal Serial Bus) [23]Se trata de un estándar que define los cables, conectores y protocolos usados para conectar, comunicar y proveer de alimentación eléctrica a periféricos y a dispositivos electrónicos. Se creó de forma global con la intención de unificar la manera de conectar los periféricos a los ordenadores y, a día de hoy, ha sustituido prácticamente a todos los tipos de conectores existentes. 15.

(26) 3. BASES DE DISEÑO La primera especificación completa, la versión 1.0, se publicó en 1996, pero no fue hasta 1998 con la versión 1.1 que comenzó a utilizarse de forma masiva. A pesar de que el estándar USB empezó a diseñarse hace muchos años y hay muchas versiones del mismo, las últimas tres versiones son las que utilizan la gran mayoría de dispositivos. En nuestro proyecto haremos uso de un puerto mini USB 2.0, por tanto, basaremos el análisis en dicha versión. USB 2.0 Es la primera versión que se considera de alta velocidad admitiendo una tasa de transferencia de hasta 480 Mbits/s. Casi todos los dispositivos actuales trabajan bajo esta versión aunque, cada vez más a menudo, los diseñadores de computadores empiezan a implementar la siguiente versión. Esta versión de USB es la utilizada en periféricos como ratones, teclados, impresoras, cámaras, etc. Aun siendo la versión más utilizada, encontró su limitación con la incorporación al mercado de dispositivos en alta definición o con muy alta capacidad de información, ya que su velocidad de transmisión es demasiado pequeña como para transmitir un alto volumen de datos en un espacio de tiempo razonable. Para solventar dicha limitación surgió la versión 3.0 que transfiere datos a 600 MB/s. En cualquier caso, si consideramos ambas versiones en relación a las aplicaciones que tiene una plataforma multifunción, no resulta importante la velocidad de transmisión, ya que no se van a realizar transmisiones de información muy elevadas, sino que la transmisión es de tramas relativamente simples de forma que la versión 2.0 de USB es más que suficiente y, por ello, es la versión que hemos escogido para nuestra plataforma. La versión 2.0, que vamos a incorporar en nuestra plataforma, dispone de cuatro señales: • VDD: Señal de alimentación por la cual, el puerto USB, nos proporciona 5 V de tensión y una corriente de hasta 900 mA, dependiendo de la versión. • DATA+: Señal de datos positiva. • DATA-: Señal de datos negativa. • GND: Referencia de tierra. El protocolo USB se caracteriza por ser diferencial en cuanto a la señal de datos, esto significa que la señal que viaja por DATA+, viajará por DATA-, pero invertida. De esta forma, las alteraciones electromagnéticas que pueda sufrir el medio de transmisión afectará a ambas señalas por igual, y la diferencia entre dichas señales se mantendrá constante. Esta diferencia entre DATA+ y DATA-, se corresponderá con la señal original que se pretende transmitir. 16.

(27) 3.1. Bases de diseño hardware. 3.1.3 Etapa de comunicación En cuanto al sistema de alimentación que precisa nuestra plataforma debemos analizar los voltajes de alimentación que utilizan cada uno de los dispositivos que utilicemos. Una vez sepamos con qué voltaje se van a alimentar cada uno de ellos debemos analizar qué fuentes de alimentación tendremos conectadas a nuestro sistema, tanto fuentes de alimentación externas como el propio puerto USB, y dotar a nuestro sistema con los reguladores de tensión LDO-Low-DropOut Regulator adecuados que nos conviertan el voltaje de alimentación a un rango adecuado para alimentar los dispositivos de la placa. También podemos ofrecer salidas de alimentación desde la placa al exterior para alimentar dispositivos externos como, por ejemplo, motores o cualquier tipo de actuador. Por ello es común dotar a las plataformas con una salida de 5 V y con otra de 3,3 V. De forma complementaria, todos los sistemas de alimentación precisan de protecciones ante diferentes aspectos eléctricos por lo que existen tres dispositivos que todo sistema electrónico debe incorporar: • Diodo rectificador: Existen diferentes puntos sensibles en toda etapa de alimentación, como las entradas de voltaje, que necesitan un diodo rectificador que impida el paso de corriente eléctrica en contra dirección, ya que esto podría quemar la fuente de alimentación. Por ello es necesario colocar diodos rectificadores que permitan el paso de la corriente eléctrica en una sola dirección e impidan el flujo de corriente en dirección opuesta a la deseada. • Fusible: Todo sistema electrónico debe incorporar un fusible que limite el voltaje que alimenta la plataforma. Hay que tener en cuenta que los dispositivos soldados en la placa tienen un rango específico de voltaje de funcionamiento y, sobrepasar dicho límite podría quemar determinados componentes. • Resistencias: Siguiendo el principio de la ley de Ohm, donde el voltaje es igual al producto de la resistencia y la intensidad, es fácil deducir que con un determinado valor de resistencia y un rango de voltaje podemos limitar la intensidad de entrada de nuestros circuitos integrados. Por tanto, de la misma forma que existen protecciones ante voltaje, existen protecciones ante intensidad y una resistencia es necesaria en determinados dispositivos.. 17.

(28) 3. BASES DE DISEÑO Una vez concluida la exposición de toda la información acerca del hardware en el diseño de plataformas multifunción vamos a proceder a realizar un análisis completo de todas las plataformas ofertadas por la casa Arduino[24]. Antes de empezar con el análisis de productos debemos destacar el hecho de que Arduino tiene varias empresas encargadas del diseño de placas. Es por ello que, en ocasiones, existen placas aparentemente parecidas en cuanto a prestaciones y tamaño y, en las cuales, la diferencia primordial recae en la empresa que ha realizado el diseño de la placa. Las placas realizadas en Italia están diseñadas por la empresa Smart Projects, pero otras han sido diseñadas en EE.UU. bajo el nombre de SparkFun Electronics o Gravitech. Separaremos el análisis diferenciando dos grandes familias de placas: Entry Level o nivel básico, y Enhanced Features o nivel avanzado.. 3.1.4 Nivel básico Esta sección se centra en productos básicos y sencillos con los que podemos empezar a manejar el mundo de las placas multifunción y realizar nuestros primeros proyectos electrónicos, así como establecer una toma de contacto con la programación de microcontroladores.. Arduino MICRO La plataforma Arduino MICRO es la placa más pequeña y sencilla con plena funcionalidad que existe en el mercado de Arduino, junto con la Arduino NANO. Es una plataforma pensada para prestar una gran autonomía en un tamaño muy reducido. En ocasiones existen proyectos que no requieren una gran potencia de procesamiento de datos y cuya programación es ligera, por lo que no requieren gran cantidad de memoria. En este caso, la plataforma Arduino MICRO es la mejor opción. Para conseguir un espectacular tamaño de 48mm x 18mm han integrado en la placa un microcontrolador ATmega32u4 con un módulo USB integrado (built-in), por lo que no tienen la necesidad de incorporar un segundo chip para comunicarse por USB. En cuanto a especificaciones, dispone de veinte (20) pines digitales (doce (12) de ellos configurables como entradas analógicas). Incorpora 32 KB de memoria flash, 2,5 KB de memoria RAM y 1 KB de memoria EEPROM.. Figura 3.1: Arduino MICRO.. 18.

(29) 3.1. Bases de diseño hardware. Arduino NANO La plataforma Arduino NANO tiene unas especificaciones parecidas a la Arduino MICRO, ya que son placas de tamaño muy reducido en las que la calidad del diseño recae en aumentar la autonomía y disminuir el tamaño, y no en aumentar únicamente las prestaciones. La diferencia básica entre las dos placas recae en el fabricante, ya que la plataforma Arduino NANO ha sido diseñada por la empresa estadounidense Gravitech. El tamaño de esta placa es de 43,2mm x 18,5mm y dispone de un microcontrolador ATmega328 que nos ofrece catorce (14) pines digitales y ocho (8) pines analógicos. Esta plataforma monta un chip de la marca FTDI que se encarga de convertir las señales UART a USB y viceversa, que podemos encontrar en la parte trasera de la placa, y que utilizamos para establecer la comunicación por USB. Además nos ofrece 32 KB de memoria flash, 2 KB de memoria RAM y 1 KB de memoria EEPROM.. Figura 3.2: Arduino NANO: (izquierda) vista frontal, (derecha) vista trasera.. Arduino UNO La plataforma Arduino UNO es la más utilizada de toda la familia de productos de Arduino. Es la placa más robusta y sencilla con la que empezar a programar un microcontrolador y realizar nuestros primeros proyectos electrónicos. Está considerada como una plataforma estándar de referencia por la comunidad de diseñadores electrónicos y está diseñada con un microcontrolador ATmega328P que ofrece catorce (14) pines de entrada/salida Figura 3.3: Arduino UNO Rev3. digitales, seis (6) entradas analógicas, además de todo tipo de conectores tanto para comunicación, por USB y ICSP, como para alimentación, a través del conector Jack, batería o el mismo puerto USB. En cuanto a memoria, encontramos 32 KB de memoria flash, 2 KB de memoria RAM y 1 KB de memoria EEPROM. Esta plataforma tiene especial relevancia en nuestro estudio, ya que se trata de la placa que utilizaremos como referencia para el diseño de nuestro proyecto, pero con componentes de marca Microchip.. 19.

(30) 3. BASES DE DISEÑO. Arduino 101 La plataforma Arduino 101 ha sido diseñada conjuntamente con Intel y ha sido bautizada como la sucesora de la plataforma Arduino UNO. Se trata de una actualización de la misma que incorpora un microcontrolador de la casa Intel y que dispone de una tecnología mucho más avanzada que su antecesora. Dentro de las mejoras relevantes encontramos reFigura 3.4: Arduino 101. conocimiento de gestos, acelerómetro y giroscopio de seis ejes, así como un sistema bluetooth para controlar la placa con un smartphone. Esta placa nos ofrece catorce (14) pines de entrada/salida digitales, seis (6) entradas analógicas, conector USB para comunicación en serie y programación, conector Jack de 2,1 mm, conectores para programar el microcontrolador a través de ICSP y pines específicos para comunicación SPI-Serial Periphereal Interface. Además dispone de 196 KB de memoria flash y 24 KB de memoria RAM. Arduino PRO Por último encontramos la plataforma Arduino PRO. Esta ha sido diseñada por SparkFun Electronics y, a pesar de tener el calificativo PRO, no destaca en exceso por sus especificaciones con respecto a otros productos como la Arduino UNO, sino que se denomina PRO debido a que la placa te ofrece diferentes posibilidades y eres tú el que, en relación a tus necesidades, debes soldar en la placa los componentes que precises. La placa está penFigura 3.5: Arduino PRO. sada para instalaciones permanentes. Como se puede apreciar en la figura 3.5, la placa no tiene cabezales soldados en los pines ni el conector Jack de 2,1 mm. De esta manera la placa tiene un margen de diseño personal. Así, eres tú el que, dependiendo de las necesidades de tu instalación diseñas la versión final de la plataforma. En cuanto a sus especificaciones, tiene incorporado un microcontrolador ATmega328 que nos proporciona catorce (14) pines de entrada/salida digital y seis (6) pines de entrada analógica. Además, disponemos de 32 KB de memoria flash, 2 KB de memoria RAM y 1 KB de memoria EEPROM.. 20.

(31) 3.1. Bases de diseño hardware. 3.1.5 Nivel avanzado En esta sección vamos a encontrar plataformas con una sustancial mejora en cuanto a prestaciones. Veremos que el punto común de dichas ampliaciones recaen en la cantidad tanto del número de pines como de conexiones; y el microcontrolador, en relación a la velocidad de procesamiento de datos o a la capacidad de memoria. Este tipo de plataformas están orientadas a proyectos complejos que precisan más potencia y velocidad. Se podrían considerar placas avanzadas, las cuales precisan conocimientos superiores en cuanto a dispositivos electrónicos y programación. Arduino MEGA 2560 La plataforma Arduino MEGA se podría ver como la hermana mayor de la placa Arduino UNO, ya que sigue la misma filosofía pero con un mayor número de pines y algo más de potencia de procesamiento, aunque conservando una arquitectura de 8-bit en el microcontrolador. Esta sería la plataforma multifunción idónea para incorporar a la impresora 3D de Arduino. En comparación a su hermana pequeña, Figura 3.6: Arduino MEGA 2560. la versión MEGA de Arduino nos proporciona cincuenta y cuatro (54) pines de entrada/salida digital y dieciséis (16) entradas analógicas, así como 256 KB de memoria flash, 8 KB de memoria RAM y 4 KB de memoria EEPROM integrado en un chip ATmega2560. Además dispone de las mismos módulos de comunicación que la placa Arduino UNO: cuatro módulos UART, comunicación por USB y permite la programación a través del protocolo ICSP.. 21.

(32) 3. BASES DE DISEÑO. Arduino DUE La plataforma Arduino DUE es la primera plataforma de Arduino basada en una arquitectura de 32-bit con un microcontrolador SAM3X8E ARM Cortex-M3. Esta placa dispone de cincuenta y cuatro (54) pines de entrada/salida digital y doce (12) pines de entrada analógica. Además, se diferencia de las placas anteriores en el hecho de que presenta una velocidad de procesamiento muy superior que alcanza los 84 MHz (en comparación a los 16 MHz de las placas anteriores) y dispone de dos convertidores digital-analógico DAC. Esta placa es la opción perfecta para realizar proyectos a gran escala.. Figura 3.7: Arduino DUE.. Arduino ZERO La plataforma Arduino ZERO es una actualización de la plataforma Arduino UNO. Así como la placa Arduino MEGA 2560 ampliaba el tamaño de la versión UNO añadiendo más pines y algo más de potencia, aunque conservando la arquitectura de 8-bits, la version ZERO de Arduino amplía la capacidad de procesamiento de datos incorporando un microcontrolador SAMD21 ARM Cortex-M0 con arquitectura de 32-bit que proporciona una velocidad de reloj de 48 MHz, 256 KB de memoria Figura 3.8: Arduino ZERO. flash y 32 KB de memoria RAM. En cuanto a pines encontramos veinte (20) pines de entrada/salida digital, seis (6) entradas analógicas, con un convertidor analógico-digital de 12-bit de resolución y una (1) salida analógica, con un módulo DAC-Digital to Analog Converter de 10-bit de resolución. Esta plataforma sería la alternativa idónea si la plataforma Arduino UNO no pudiera satisfacer todas las necesidades de nuestros diseños.. 22.

(33) 3.1. Bases de diseño hardware. 3.1.6 Tabla comparativa Placa Marca MCU Arquitectura M.FLASH M.RAM M.EEPROM Reloj Dig. PIN Ana. PIN. Arduino MICRO. Arduino NANO. Arduino UNO. Arduino 101. Arduino PRO. Atmel ATmega32u4 8-bit 32 KB 2,5 KB 1 KB 16 MHz (20) (12). Atmel ATmega328 8-bit 32 KB 2 KB 1 KB 16 MHz (14) (8). Atmel ATmega328P 8-bit 32 KB 2 KB 1 KB 16 MHz (14) (6). Intel Intel Curie 32-bit 196 KB 24 KB – 32 MHz (14) (6). Atmel ATmega328 8-bit 32 KB 2 KB 1 KB 16 MHz (14) (6). Cuadro 3.1: Tabla comparativa. Sección: Nivel básico (entry level).. Placa Marca MCU Arquitectura M.FLASH M.RAM M.EEPROM Reloj Dig. PIN Ana. PIN. Arduino MEGA 2560. Arduino DUE. Arduino ZERO. Atmel ATmega2560 8-bit 256 KB 8 KB 4 KB 16 MHz (54) (16). Atmel SAM3X8E ARM Cortex-M3 32-bit 512 KB 96 KB – 84 MHz (54) (12). Atmel SAMD21G18 ARM Cortex-M0 32-bit 256 KB 32 KB – 48 MHz (20) (7). Cuadro 3.2: Tabla comparativa. Sección: Nivel avanzado (enhanced features).. 23.

(34) 3. BASES DE DISEÑO. 3.2 Bases de diseño software Hasta el momento hemos tratado al completo el análisis de los aspectos de hardware de una plataforma multifunción. El concepto de hardware, como ya sabemos, engloba a todos los elementos físicos que forman la placa, así como todos los circuitos integrados, ya sea el microcontrolador o el conversor de UART a USB; todos los dispositivos de potencia, como reguladores de tensión o fusibles; dispositivos que utilizamos para conseguir estabilidad eléctrica en la placa, como condensadores o resistencias; y, además, los dispositivos que utilizamos para alimentar a la placa desde el exterior o para comunicarnos con un sistema de gestión como el puerto USB o la entrada Jack de 2,1 mm para alimentación. En este apartado vamos a centrar nuestro estudio en el aspecto de software que se podría definir como el conjunto de componentes lógicos, y por tanto no físicos, que hacen posible la realización de tareas específicas. Desde un punto de vista general se podría entender el concepto de software como los programas que utilizamos para realizar funciones determinadas con un sistema computacional. Para generar programas o para crear software es necesario saber qué es la programación y qué lenguajes de programación son los más comunes para aplicaciones como las plataformas multifunción. En la actualidad la noción de programación se encuentra muy asociada a la creación de aplicaciones informáticas y videojuegos; es el proceso por el cual una persona desarrolla un programa valiéndose de una herramienta que le permita escribir el código (el cual puede estar en uno o varios lenguajes de programación) y de otra que sea capaz de traducirlo a lo que se conoce como lenguaje de máquina, el cual puede ser entendido por un microprocesador o microcontrolador. A continuación vamos a analizar los lenguajes más comunes para programar, pero antes debemos definir una serie de conceptos importantes:. • Lenguaje de bajo nivel: es el lenguaje orientado a lo que entiende la máquina encargada de procesar y ejecutar el programa. • Lenguaje de alto nivel: es el lenguaje orientado a nuestras capacidades cognitivas que utiliza estructuras lógicas más adaptadas al entendimiento humano que al entendimiento de la máquina. • Lenguaje orientado a objetos: es un tipo de lenguaje en el que tú creas entidades o métodos dentro del código que permiten un tipo de programación ágil de alto nivel.. 3.2.1 Lenguaje Ensamblador El lenguaje ensamblador es el lenguaje de programación más parecido al lenguaje de máquina. Se trata de un lenguaje de bajo nivel que implementa una representación simbólica de los códigos de máquina. 24.

(35) 3.2. Bases de diseño software. 3.2.2 Lenguaje JAVA Java es un lenguaje de programación de propósito general orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo sin tener que ser compilado de nuevo para ser ejecutado en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso. Dada esta definición es fácil imaginar uno de los usos fundamentales de este lenguaje de programación: la elaboración de aplicaciones y páginas web. Efectivamente, estos dos aspectos de la programación requieren que un programa puede ser ejecutado en diversos dispositivos con una compatibilidad absoluta sin tener que adaptarse al sistema operativo o a requisitos específicos del dispositivo donde se ejecuten.. 3.2.3 Lenguaje C y C++ El lenguaje de programación C es un lenguaje de programación orientado a la implementación de sistemas operativos, concretamente Unix. Unix es un tipo de sistema operativo a partir del cual se han implementado sistemas operativos posteriores como el tan conocido Mac OS X de Apple. Este lenguaje de programación es apreciado por su eficiencia del código. Esto se debe a que conserva muchas características de bajo nivel (ensamblador o lenguaje de máquina) y otras muchas de alto nivel. Esto permite un equilibrio entre los beneficios de programar en alto nivel sin prescindir de la eficacia de programar en lenguaje de máquina. El lenguaje de programación C++ se podría definir como una actualización del lenguaje C, con la característica de estar orientado a objetos (como el lenguaje JAVA).. 3.2.4 Concepto de librería Hasta ahora hemos definido el concepto de programación y los tipos de lenguajes más comunes. A la hora de programar una placa multifunción debemos seguir una serie de pasos fundamentales para conocer a la perfección las características de nuestra placa y de nuestro microcontrolador para poder realizar la programación de manera correcta. Como primer paso, debemos conocer de qué módulos dispone nuestro microcontrolador. En el caso de la placa Arduino UNO, esta lleva incorporado un microcontrolador Atmel ATmega328P, y cada microcontrolador dispone de un datasheet donde podemos encontrar absolutamente toda la información relativa a dicho microcontrolador. A grandes rasgos, este microcontrolador dispone de los siguientes módulos:. • Temporizador de 8 bits: configurable como contador o comparador. • Temporizador de 16 bits: configurable como contador o comparador. • Seis canales PWM: para poder obtener una salida analógica. 25.

(36) 3. BASES DE DISEÑO • Convertidor analógico-digital: para poder leer entradas analógicas y convertirlas a señales digitales que le microcontrolador pueda operar. • USART: para poder comunicar el microcontrolador con el exterior utilizando un protocolo serie. • SPI: para poder comunicar el microcontrolador con el exterior utilizando un protocolo serie. • I2C: normalmente utilizado para comunicar dispositivos entre si, en este caso plataformas multifuncionales. Una vez conocemos los módulos de que dispone nuestro microcontrolador podemos diseñar programas nutriéndonos de dichos módulos, pero hay funciones determinadas que vamos a utilizar innumerables veces como por ejemplo: comunicar el microcontrolador con un ordenador para monitorizar datos, leer y escribir datos digitales, leer y escribir datos analógicos, utilizar temporizadores o contadores, y un largo etcétera. Es por ello que es importante el concepto de librería. Las librerías están formadas por una serie de métodos programados con anterioridad al diseño del proyecto que nos ahorrarán mucho tiempo a la hora de programar. Es decir, se trata de un conjunto de implementaciones funcionales que nos ofrecen una interfaz bien definida para facilitar la programación. Estas librerías no están diseñadas para actuar como un programa autónomo, es decir, no tienen ninguna función asociada por si solas, pero al utilizarlas dentro de nuestro programa adquieren sentido. Por tanto, al analizar las librerías de Arduino vemos que para poner en valor alto de voltaje un pin digital del microcontrolador, no es necesario recurrir al data sheet del microcontrolador, sino que es suficiente con escribir la función digitalWrite(pin, value) y especificar el pin que nos interesa y el valor que deseamos, en este caso valor alto de tensión. Como podemos apreciar en el ejemplo esto agiliza mucho el proceso de programación y es precisamente por este motivo por el que es tan importante este concepto. Librerías relevantes de Arduino [25]En esta sección vamos a analizar de forma breve las librerías más importantes que nos ofrece Arduino para programar sus placas. • EEPROM: encontramos todas las funciones relacionadas con ese tipo de memoria. • ETHERNET: funciones para conectar a internet la placa Arduino (precisa de un dispositivo extra llamado Arduino Ethernet Shield. • LiquidCrystal: funciones relativas a la configuración de la pantalla LCD. • SERVO: aquí encontramos todo lo necesario para controlar motores conectados a nuestra placa. 26.

Referencias

Documento similar

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

entorno algoritmo.

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y

En este sentido, puede defenderse que, si la Administración está habilitada normativamente para actuar en una determinada materia mediante actuaciones formales, ejerciendo

En la parte central de la línea, entre los planes de gobierno o dirección política, en el extremo izquierdo, y los planes reguladores del uso del suelo (urbanísticos y