Cuando queremos empezar en el mundo de DIY empezamos a conseguir todo tipo de proyectos y aparecen a relucir de grandes contendientes, Arduino y Raspberry Pi, y mientras mas buscamos, mas confundimos quedamos, ¿Cuál es mejor?, ¿por que usar una u otra?. Hay distintos factores que nos ayudaran a distinguir cuando usar algún equipo u otro y a elegir que equipo utilizar para determinada situación. Para esta comparativa utilizaré el modelo mas común de cada una de ambas familia, el Arduino UNO y las Raspberry Pi 4.


La Raspberry Pi y el Arduino fueron pensadas para propósitos muy diferentes, a pesar de que ambas son de software libre, para que cualquiera pueda revisarlo o modificarlo, solo el Arduino es de hardware libre, lo que significa que cualquiera puede tomar el diagrama eléctrico de la placa y fabricarse la suya propia (como la Picaro de MCI Electronics), sin embargo la Raspberry Pi esta única y exclusivamente bajo el control de la Raspberry Pi Fundation, siendo ellos los únicos que pueden fabricar y modificar dicha placa.
El Arduino UNO es una placa de desarrollo, basado en un microcontrolador, específicamente el ATMega328p, esta característica lo hace perfecto para la creación de proyectos donde tendrás control directo sobre sensores y actuadores, ya sean, motores, relés, sensores de humedad, temperatura, distancia, etc. Ya que al trabajar con un microcontrolador directamente puede tener acceso a sus pines digitales y analógicos de una manera mas sencilla y robusta. Esta placa de desarrollo se programa directamente en su IDE en lenguaje C, y se compila directamente a lenguaje maquina, esta característica a motivado a la comunidad a desarrollar una amplia gama de librerías para poder controlar de manera rápida y directa los distintos actuadores y sensores, ademas de que al no contar con ningún tipo de sistema operativo o interprete, la lectura de dichos sensores se hace de una manera mas inmediata, idea para proyectos de control y automatismo.
La Raspberry Pi 4 es un mini computador, compuesto por un procesador ARM Cortex-A72, la gran potencia que este procesador a la placa la hace ideal para proyectos donde necesitemos gran poder de calculo, como servidores web, procesamiento de imagen, video, audio, conectividad a internet, procesar datos para luego ser subido algún servicio en la nube. Al ser este un mini computador permite realizar distintas tares al mismo tiempo. Si deseas realizar algún proyecto en el que controles actuadores y sensores desde el GPIO de la Raspberry Pi, puedes hacer un programa en python por ejemplo, en el que realicé la lectura y el control de los dispositivos, dicho programa es compilado y ejecutado en el sistema operativo de la Raspberry, estas capas adicionales de software que permite que la Raspberry Pi sea un dispositivo multitarea támbien añade cierto retraso en el control de su puerto GPIO, lo cual hay que tener en cuenta al momento de trabajar con equipos que ameriten supervisión y acción inmediata.


Ya sabiendo lo anterior, podemos detenernos un momento y pensar ¿Qué tipo de procesamiento de datos necesita mi proyecto?, si quieres hacer un proyecto donde solo quieras hacer el control de algún actuador, como encender un calefactor al detectar cierta temperatura, controlar un sistema de riego automatizado, podríamos utilizar un Arduino UNO. Sin embargo, si lo que queremos es tener un sistema de vigilancia inteligente que pueda leer patentes de vehículos, calcular la cantidad de trafico en una avenida, y toda esa información subirla en algún servidor en la nube, lo ideal seria una Raspberry Pi.
Pero aun hay mas factores que determinar a la hora de escoger el sistema de control adecuado para nuestro proyecto.
El Arduino UNO cuenta 14 pines digitales de propósito general, en los cuales se encuentran pines de comunicación SPI, I2C y UART y seis son PWM. También cuenta con seis pines analógicos, el ADC del Arduino es de 10bits, lo que te dará mediciones de 0 a 1024 en las mediciones analógas.
El Raspberry Pi 4 posee 40 pines digitales de propósito general, en los cuales se encuentran pines para la comunicación UART, SPI y I2C y 4 pines PWM. El Raspberry Pi 4 no cuenta con puertos analógicos, por ende si quieres trabajar con un sensor análogo deberás utilizar un ADC externo. Ademas cuenta con 4 puertos USB, conector ethernet, conexión wifi, dos conectores micro HDMI.
Basándonos en los puertos de comunicación que tenemos en cada plataforma, podemos tomar también decisiones para saber cual es la mas adecuada a nuestro proyecto, si queremos leer sensores análogos lo mas lógicos seria trabajar con un Arduino, ya que el microcontrolador cuenta con convertidores ADC incorporados y tiene una mayor cantidad de puertos PWM, si por otra parte necesitamos agregar periféricos a nuestro proyecto, o poder visualizar datos a través de una pantalla con HDMI, la selección natural seria la Raspberry Pi 4, ya que cuenta con todas las conexiones comunes que encontraríamos en un computador de escritorio.
Finalmente tenemos que evaluar con que equipos nos facilitaríamos el trabajo a nivel de software.
El Arduino UNO utiliza un lenguaje de programación orientada a objetos basado en el popular lenguaje C++, la robustes de este lenguaje, facilidad de programación y la compatibilidad directa del microcontrolador con diversos sensores y actuadores hace que Arduino sea una plataforma ideal para desarrollar librerías, al día de hoy Arduino cuenta con el mayor repertorio de librerías para diversos sensores y actuadores, lo cual hace que poder controlarlos sea extremadamente fácil.
En la Raspberry Pi el lenguaje por excelencia (no el único) para programar es python, este moderno lenguaje que ha agarrado popularidad en los últimos años es muy versátil y fácil, lo cual facilita el aprendizaje a las nuevas generaciones. A pesar de esto no cuenta con una colección de librerías tan basta como la de Arduino. Para ejecutar nuestros proyectos en Raspberry debemos crear nuestro código, compilarlo en un programa y luego este programa ejecutarlo en el sistema operativo, a pesar de ser un poco mas “limitado” en este aspecto la Raspberry, tenemos la facilidad de poder ejecutar múltiples programas a la vez, y poder procesar mas información al mismo tiempo.
Si lo que queremos es hacer algunas interacciones directamente sobre nuestros componentes, lo mejor seria trabajar con un Arduino, el cual permite tener un desarrollo de software de una manera mas sencilla e inmediata. Si lo que deseamos es poder desempeñar varias aplicaciones a la vez, y ejecutar programas mas complejos, podemos optar por una Raspberry Pi.

¿Pero que pasa si necesitas ambas cosas?, supongamos que tienes un proyecto que necesita sensores análogos, poder tomar datos en tiempo real de distintos sensores y accionar a grandes velocidades tus actuadores, pero a la vez debes poder procesar estos datos, unirlos con alguna aplicación de procesamiento de videos y audio y poder subir toda esta información algún servidor en la nube, pues es bastante sencillo, simplemente puedes usar ambas plataformas y comunicarlas a través del puerto serial (UART), donde la Raspberry Pi obtendrá todos los datos enviados por el Arduino y los procesara según la aplicación que lo necesite.
Al final no hay un vencedor o un perdedor es esta discusión, simplemente hay una placa indicada para cualquiera que sea tu necesidad, dolo debemos saber analizar nuestro proyecto y escoger la plataforma que mejor se adapte a nuestras necesidades.
