Bienvenido/a! Con este hilo pretendo formar un digno heredero de este hilo del foro de estudios, pero más enfocado a formar, resolver dudas y mostrar nuestros proyectos realizados con cualquier tipo de microcontrolador, FPGA, etc. no sólo Arduino. Hoy en día la oferta de placas de desarrollo es muy grande y variada y cada familia tienes sus pros y contras, que intentaré resumir aquí.
qué es todo esto? por dónde empezar?
Hoy en día prácticamente todo aparato electrónico lleva un microcontrolador, un microprocesador con las mismas funciones que el procesador de vuestro ordenador, pero a pequeña escala, barato, de bajo consumo y útil para millones de cosas. Si llevas un tiempo deseando hacer un proyecto de domótica, iniciarte en la programación de hardware o profundizar tus conocimientos en programación a bajo (en ocasiones MUY bajo) nivel, este es tu lugar. No es necesario que tengais ningún conocimiento de electrónica, no os hace falta ni saber la Ley de Ohm, sólo hace falta tener conocimientos básicos de programación (en especial C) y ganas de aprender a pensar con un cambio de mentalidad.
familias de microcontroladores
- Microchip PIC es probablemente la familia de procesadores más vendida de la historia. Baratos, fiables, y con un espectro MUY amplio de prestaciones, desde PICs de 8 pines diminutos hasta PICs con varias decenas de GPIO, conversores y demás perifericos.
Placa de desarrollo PIC y diversos procesadores PIC.
Estos procesadores pueden programarse directamente en ensamblador, en C plano, o bien en un lenguaje llamado CCS PIC (confundir con CSS :p), el cual recomiendo. En todos estos aparatos el "Hello world" suele consistir en apagar y encender un LED conectado a la placa que habitualmente suele incluirse en la PCB. Este hellow world o "Blink" como se le conoce habitualmente se programaría de este modo en CCS PIC.
La mayor pega para iniciarse en la programación de PIC es sin ninguna duda el desembolso inicial. El aparato necesario aparte del propio procesador es el programador llamado PicKit . Del cual existen muchos clones los cuales recomiendo, antes que el original y caro. Tambien es muy recomendable hacerse con una placa de desarrollo de PIC como la de la foto de la cabecera. Pueden encontrarse en torno a $15.
- Atmel/Arduino
Placa Arduino UNO clónica
Atmel ha sido la competencia directa de Microchip PIC desde sus inicios. Microchip ganó la contienda y dejó a Atmel poco más que en el fango. Entonces surgió un proyecto de código abierto del que todo el mundo ha oido al menos hablar, Arduino, y las placas de arduino se basaron en procesadores Atmel. La popularidad de este tipo de placas a hecho resurgir a Atmel de sus cenizas, siendo la clave del éxito un lenguaje de programación simplificado hasta límites insospechados, haciendo posible que todo el mundo, incluso sin conocimientos previos de programación se haya lanzado al mundo de desarrollo de hardware.
Este es el ejemplo de Blink esta vez en "wiring", el lenguaje usado por Arduino.
En este caso el inconveniente es el mismo que PIC, el precio de una placa oficial de Arduino es caro, pero existen miles de clones y de proyectos paralelos basados en arduino con idéntica funcionalidad y prestaciones que hacen de esta familia de microcontroladores una buena elección para iniciarse en el mundillo.
- MSP430 es el buque insignia de Texas Instruments (Si! hacen más cosas aparte de calculadoras)
Placa de desarrollo MSP430 y procesador MSP430 2553
- ARM es una familia de microcontroladores relativamente moderna y enormemente impulsada por la evolución constante de la telefonía móvil. Las placas de desarrollo ARM que fabrican numerosos gigantes de la industria como Texas Instruments con sus Tiva/Stellaris Launchapds o ST microelectronics con las placas Discovery ofrecen una potencia bruta infinitamente mayor al resto de placas de microprocesador disponibles en el mercado, programables además en un lenguaje de alto nivel, sencillo, conciso y completo.
Placas Stellaris (Ahora Tiva) y ST Discovery
Este es un ejemplo de Blink hecho en CCS (esta vez no confundir con CCS PIC), el lenguaje usado en los procesadores Tiva de TI.
Una posible pega para estos procesadores es lo caótico que resultaba hacerse con un IDE y todos los drivers necesarios para empezar a programar. Ahora gracias al ecosistema de launchpad (más abajo en los links de interés) hecho por Texas instruments este paso se ha convertido en algo muy sencillo.
como enfocar mi aprendizaje
Un microcontrolador puede hacer muy pocas cosas por si solo, sin embargo con esas pocas instrucciones la cantidad de aplicaciones es inmensa. Cualquiera de las familias que he enumerado anteriormente y cualquier otra que me haya dejado en el tintero posee muy probablemente estas funciones y deberían aprenderse aproximadamente en este orden:
-
Controlar tiempos y la frecuencia con la que trabaja el procesador, necesario para hacer mediciones temporales de precisión y usar la frecuencia de trabajo apropiada.
-
Configurar y usar los pines como entrada/salida. Cada procesador posee un numero variable de los llamados GPIO General purpose Input and Output, es decir pines que pueden leer y escribir estados logicos (1 o 0) en sun contacto eléctrico.
-
Usar interrupciones. Una interrupción detiene la secuencia del programa y ejecuta una porción de código cuando ocurra algún evento concreto, como puede ser pulsar un interruptor o haber pasado un determinado tiempo.
-
Usar los timers del procesador. Cada procesador lleva un número variable de temporizadores con los que pueden realizarse acciones periódicamente en segundo plano, entre otras muchas cosas.
-
Generar señales de PWM. Una señal de modulación de ancho de pulso es una de las señales eléctricas más versátiles de la eléctronica, pudiendo servir desde iluminar un LED con la intensidad deseada como colocar un brazo robótico en la posición deseada.
-
Leer datos analógicos por medio de los conversores analógico-digital (ADC) y realizar el proceso contrario, de digital a analógico por medio de un DAC.
-
Aprender a usar periféricos básicos, como un LCD de 16x2 caracteres, un LCD gráfico, una botonera, un lector de tarjetas SD, servos, puertos USB...
-
Saber iniciar, recibir y enviar mensajes en alguno de los protocolos de transmisión de datos, tanto síncronos (SPI, I2C) como asíncronos (UART) o ambos (RS232).
LCD táctil, LCD 16x2 y botonera de 4x4
ideas de proyecto para iniciarse
-
Un reloj binario con LEDs.
-
Un ambilight para pc con una tira de LEDs RGB
-
Un lector USB de tarjetas SD
-
Un sintetizador musical.
-
Un conmutador accionado por una palmada.
-
...Todo lo que se os pueda ocurrir
Algunos proyectos y motivación adicional
NES programada en un FPGA
Chronos. Un reloj de pulsera programable de manera inalámbrica. Posee un MSP430 en su interior y dispone de numerosos sensores (temperatura, humedad, pulsaciones...), asi como un acelerómetro en tres dimensiones y es capaz de comunicarse por bluetooth y wifi con cualquier aparato.
http://www.ti.com/tool/ez430-chronos
Un programador de PIC montado en un MSP430
http://43oh.com/2013/12/burn-a-microchip-pic-with-your-msp430-launchpad/
Gamby, una placa de expansión diseñada para arduino pensada para programar juegos con un enfoque retro
Algunas direcciones de interés
El "ecosistema" de Launchpads de Texas Instruments
Pagina oficial del proyecto Arduino
Pagina oficial de Energía. La alternativa de Texas instruments a Arduino
Tindie, una web dedicada a la venta de placas de expansión y muchas más cosas hardware
Seeedstudio. Venta de hardware y placas de circuito impreso
43oh! Foros no oficiales del procesador MSP430, también disponen de tienda online donde pedir placas
Stellarisiti. Foros no oficiales de las placas de desarrollo ARM Stellaris/Tiva/ST discovery, etc
Curso online de EDX de sistemas embebidos sobre la Tiva Launchpad