Bueno, como hoy me siento bastante inspirado, os voy a hablar de una utilidad (llamemosle así por el momento) maravillosa para la Raspberry PI. Os hablo de "Ultibo"
Bien, el nombre no es que diga mucho sobre lo que es... pero os pongo en situación. Actualmente cuando hablamos de RaspBerry PI a todos nos viene a la cabeza "Raspbian", "Linux", etc. Hay miles de aplicaciones hoy en día para las Raspberry, el caso es que a día de hoy, muy poca gente conoce la potencia que tiene la Raspberry a la hora de gestionar lógica a bajo nivel como lo hace un Arduino.
En resumen, cuando compramos una Raspberry, casi siempre le solemos instalar Raspbian (O noobs), y toda persona que haya realizado scripts en python o programas que gestionen los puertos digitales que traen las frambuesas, se han dado cuenta tarde o temprano que son muy lentoooooooooooooooooooooooooooooooooooos. (Siento la insistencia, pero es que lo son)
Debido a este problema, es muy raro encontrar proyectos en los cuales se pueda aplicar la raspberry a bajo nivel (Como una impresora 3D), si no que nos encontramos con muchas interfaces o programas como octoprint que se valen de ejecutarse en el sistema operativo y hacer de interfaces para otros aparatos.
Pues señores, eso se acabó. Ultibo nos posibilita "realizar nuestro propio SO" desde 0, o casi. Ultibo es una serie de librerias (y compilador) que permite generar un kernel que la propia raspberry cargará en su arranque con el código que le hayamos generado, es decir, al igual que un sketch de arduino, podemos cargarle un sketch también a la raspberry.
Esto posibilita que controlemos el hardware de la raspberry directamente! Podemos gestionar el SPI, el USART, el I2C, la pantalla, los usb, leer, escribir en ficheros de la SD, del usb... sacar audio, comunicarnos desde el puerto ethernet, y muchas cosas mas.
Pero esto no es todo, como desde el momento en que cargamos este ejecutable en la raspberry estamos ejecutando nuestro propio SO, cosas como la gestión de pines digitales son extremadamente rápidas. Ya no hay un sistema operativo como raspbian por detrás dando por saco "haciendo cosas" mientras tu te esfuerzas inútilmente en conmutar una salida rápido. Por ejemplo, yo he conseguido mover 7 motores paso a paso a la vez a altas velocidades y la raspberry ni inmutarse, y estoy completamente seguro de que si meto otros 7 más seguiría sin enterarse lo mas mínimo.
Quizá la mayor ventaja de este sistema es que incluso permite generar hilos de ejecución, es decir, programar tareas y que el propio procesador se las reparta entre sus 4 núcleos. Eso o incluso convertir hasta tres de los núcleos en "núcleo dedicado" y dejar algo ahí ejecutándose a tiempo real de verdad.
En un Arduino, si queremos hacer varias cosas "a la vez" debemos utilizar interrupciones, un gran ejemplo de esto son las impresoras 3D. Cuando mueven sus motores, están continuamente saltando de un lugar a otro para moverlos todos a la vez, como el arduino solo tiene un procesador, la única forma de realizar multitarea por así llamarla, es esa.
Con la raspberry esto no pasa, ya que tienes 4 nucleos y aun por encima, infinitos hilos de ejecución generables, por lo cual pueden hacerse miles de tareas a la vez sin tener que gestionar nosotros a mano el que el procesador salte de una tarea a otra.
¿La pega? Muchos os preguntareis cual es... pues digamos que se programa en un lenguaje que suele generar trabas a la gente porque lo consideran "anticuado"... aunque no es para nada cierto esto. Se programa en PASCAL, concretamente, en free pascal, y el IDE que utilizaremos para generar el programa se llama Lazarus.
Pagina web con su IDE y documentación: https://ultibo.org/
Bueno, yo he dejado mi perlita aquí... en mi opinión, esto es un gran hallazgo. Desde hace tiempo estaba buscando alguna utilidad para poder convertir mi Raspberry en algo aun mas útil y emplearlo en aparatos que yo diseñe al igual que realizo con microcontroladores de microchip o arduinos... y esta es la solución
Finalmente, para terminar, siento la longitud de mi post... pero es que soy como una persiana, cuando algo me apasiona, me enrollo, y esto no es menos. Gracias por dedicar tu tiempo en leer sobre este tema!
Bien, el nombre no es que diga mucho sobre lo que es... pero os pongo en situación. Actualmente cuando hablamos de RaspBerry PI a todos nos viene a la cabeza "Raspbian", "Linux", etc. Hay miles de aplicaciones hoy en día para las Raspberry, el caso es que a día de hoy, muy poca gente conoce la potencia que tiene la Raspberry a la hora de gestionar lógica a bajo nivel como lo hace un Arduino.
En resumen, cuando compramos una Raspberry, casi siempre le solemos instalar Raspbian (O noobs), y toda persona que haya realizado scripts en python o programas que gestionen los puertos digitales que traen las frambuesas, se han dado cuenta tarde o temprano que son muy lentoooooooooooooooooooooooooooooooooooos. (Siento la insistencia, pero es que lo son)
Debido a este problema, es muy raro encontrar proyectos en los cuales se pueda aplicar la raspberry a bajo nivel (Como una impresora 3D), si no que nos encontramos con muchas interfaces o programas como octoprint que se valen de ejecutarse en el sistema operativo y hacer de interfaces para otros aparatos.
Pues señores, eso se acabó. Ultibo nos posibilita "realizar nuestro propio SO" desde 0, o casi. Ultibo es una serie de librerias (y compilador) que permite generar un kernel que la propia raspberry cargará en su arranque con el código que le hayamos generado, es decir, al igual que un sketch de arduino, podemos cargarle un sketch también a la raspberry.
Esto posibilita que controlemos el hardware de la raspberry directamente! Podemos gestionar el SPI, el USART, el I2C, la pantalla, los usb, leer, escribir en ficheros de la SD, del usb... sacar audio, comunicarnos desde el puerto ethernet, y muchas cosas mas.
Pero esto no es todo, como desde el momento en que cargamos este ejecutable en la raspberry estamos ejecutando nuestro propio SO, cosas como la gestión de pines digitales son extremadamente rápidas. Ya no hay un sistema operativo como raspbian por detrás dando por saco "haciendo cosas" mientras tu te esfuerzas inútilmente en conmutar una salida rápido. Por ejemplo, yo he conseguido mover 7 motores paso a paso a la vez a altas velocidades y la raspberry ni inmutarse, y estoy completamente seguro de que si meto otros 7 más seguiría sin enterarse lo mas mínimo.
Quizá la mayor ventaja de este sistema es que incluso permite generar hilos de ejecución, es decir, programar tareas y que el propio procesador se las reparta entre sus 4 núcleos. Eso o incluso convertir hasta tres de los núcleos en "núcleo dedicado" y dejar algo ahí ejecutándose a tiempo real de verdad.
En un Arduino, si queremos hacer varias cosas "a la vez" debemos utilizar interrupciones, un gran ejemplo de esto son las impresoras 3D. Cuando mueven sus motores, están continuamente saltando de un lugar a otro para moverlos todos a la vez, como el arduino solo tiene un procesador, la única forma de realizar multitarea por así llamarla, es esa.
Con la raspberry esto no pasa, ya que tienes 4 nucleos y aun por encima, infinitos hilos de ejecución generables, por lo cual pueden hacerse miles de tareas a la vez sin tener que gestionar nosotros a mano el que el procesador salte de una tarea a otra.
¿La pega? Muchos os preguntareis cual es... pues digamos que se programa en un lenguaje que suele generar trabas a la gente porque lo consideran "anticuado"... aunque no es para nada cierto esto. Se programa en PASCAL, concretamente, en free pascal, y el IDE que utilizaremos para generar el programa se llama Lazarus.
Pagina web con su IDE y documentación: https://ultibo.org/
Bueno, yo he dejado mi perlita aquí... en mi opinión, esto es un gran hallazgo. Desde hace tiempo estaba buscando alguna utilidad para poder convertir mi Raspberry en algo aun mas útil y emplearlo en aparatos que yo diseñe al igual que realizo con microcontroladores de microchip o arduinos... y esta es la solución
Finalmente, para terminar, siento la longitud de mi post... pero es que soy como una persiana, cuando algo me apasiona, me enrollo, y esto no es menos. Gracias por dedicar tu tiempo en leer sobre este tema!