¿Que es mejor, Arduino o Raspberry PI?
La respuesta es depende
Es una pregunta que me hacen con cierta frecuencia y yo suelo responder que es como preguntar si es mejor un destornillador o una llave inglesa. Naturalmente la respuesta es que depende de para que lo quieres.
No me gustaría tener que soltar tornillos con una llave inglesa ni forzar una tuerca vieja con un destornillador. Pues lo mismo pasa con esta pregunta.
Nuestro Arduino es una joyita que siempre está listo para el servicio y muy dedicado. Mientras no fallezca en acción de guerra, siempre se puede contar con el pero, en general, su potencia de cálculo no es gran cosa. A cambio responde rápido a cualquier cosa que le pidamos y eso su reloj es de 16Mhz, o sea más bien poquito.
La Raspberry PI en cambio es un procesador de 700 MHz (Unas 45 veces más rápido) y la memoria es como 30 veces la de un UNO. Es un ordenador en el amplio sentido de la palabra y corre Linux, más bien lento, pero práctico si tienen paciencia y puede equivaler poco más o menos a un Pentium I o II de hace unos años.
Basándome en la investigación que Ghostwriter ha hecho y descrito, si necesitas visitar un servidor web con conexión a internet y controlar teclados y unidades USB, yo no consideraría poner un Arduino. No es para eso.
Pero si tuviese que montar un servicio de supervisión de sensores, especialmente del tipo I2C o SPI, tampoco se me ocurriría montar una Raspberry. Los defensores de la Raspberry Pi (entre los que me cuento) tienen tendencia a defender las bondades de sus GPIO y me recordarán que incluso soportan esos buses de comunicación.
Es verdad, pero la Raspberry tiene un sistema operativo por debajo que tiene sus propias prioridades que no suelen coincidir con las tuyas. Y en el momento preciso, puede estar atendiendo a cualquier necesidad del sistema y no a la necesidad del bus de comunicaciones o tardar demasiado en reaccionar a la petición de un sensor.
La Raspberry puede hacer todas las cosas de las que hablamos, pero no puede asegurar que responderá en un tiempo dado, porque dependerá de la carga que tenga por otros motivos, y eso la hace peligrosa de emplear en aplicaciones críticas, o simplemente que necesiten garantizar un tiempo de respuesta.
Para eso quiero un Arduino, incluso un humilde UNO que es mucha más lente pero más de confianza. Sé que está ahí para hacer lo que le pido ya, no se va a entretener con otras historias.
Y además creo que el planteamiento de cual es mejor lleva implícita una trampa conceptual, porque en realidad no tenemos por qué elegir. Puedo poner a Arduino al cargo del SPI y del I2C con absoluta confianza y conectarlo la Raspberrys por USB o por Ethernet y tener lo mejor de dos mundos.
Al precio que tienen hoy los Arduinos, que los hay por 10€ es un poco absurdo dedicar dos días a programar no sé qué historia en la Raspberry cuando lo tengo hecho en el otro lado. Y viceversa, una cosa es montar en un Arduino una web muy, muy sencilla para dar unos valores de sensores. Y otra muy diferente pretender montar un servidor como es debido en Arduino.