This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Ultibo, genera tu propio SO
#1
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"

[Imagen: ultibo-org-250x88-green.png]



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.

[Imagen: Ultibo-Linux.png]


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.

[Imagen: C0vil6OUcAAgGSm.jpg]

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!
  Responder
#2
Muy interesante. Gracias por el aporte! Habrá que estudiarlo


Enviado desde mi iPhone utilizando Tapatalk
  Responder
#3
Muchas gracias por la noticia!!

Yo llevo programando en PASCAL más de 20 años (en Borland Delphi, embarcadero) y no he necesitado nada adicional, o que necesitara cambiar de lenguaje (Visual Basic me duró 1 año hasta que descubrí Delphi).

Aún tengo programas hechos en Delphi 7 (más de 15 años de "antigüedad") que funcionan en Windows 7 sin problemas. Obviamente no puedo usar las características propias de W7, pero es que un programa realizado hace 15 años no necesitaba esas cosas. Se verá mal: ventana gris, botones y menús antiguos... pero funciona.

Intenté introducirme con Arduino, pero lo veía "código de bajo nivel" (acostumbrado a Delphi, claro). Por otro lado el microprocesador de Arduino no era tan potente como un ordenador (obviamente ni lo pretende, cada cosa es para lo suyo), rasperry 3B es un Quad Core a 1.2 Ghz con Wifi y Bluetooth... y eso para mí ya es una cosa seria.

Ahora que se programa en Lazarus (versión Open Source de Delphi), que no hay infinitas capas entre el hardware y el código que escribimos, y se escribe en lenguaje de alto nivel, pero con acceso al bajo nivel directamente, esto promete y mucho.

Lo dicho, Gracias Shellmer por haberte enrollado como una persiana, ya tengo Lazarus (Ultibo Edition) instalada, estoy viendo los vídeos en inglés de Ultibo Live  y espero engancharme a este tipo de desarrollos.

Edito: Para aquellos que les tire para atrás Pascal, solo tendréis que aprender la sintaxis y eso se aprende en 30 minutos (en cualquier lenguaje de programación, menos en python que tiene "fórmulas avanzadas"). Recordad que Pascal se creó para enseñar a programar en las universidades, así que es lo más simple que se puede despachar para aprender jejeje


Saludos!
Ulticampy V2: fundiendo plástico sin descanso...
  Responder
#4
Totalmente de acuerdo con Lepes. El Pascal para mi es un lenguaje muy facil de aprender si conoces previamente el C. Creo que tambien es mas "elegante". Yo sigo utilizando el Delphi 5 con windows 10 y sin ningun problema. El Basic si que creo que esta obsoleto en mi opinion.

Saludos,

Miquel
  Responder
#5
Una de mis ideas de bombero era realizar una shield que conectar entre la raspberry pi y una ramps de toda la vida, que esa shield integrase un chip para lectura de entradas analogicas comunicado por i2c (para los termistores) y programar de 0 la impresora 3D directamente integrada en la propia raspberry.

De esa forma no haria falta ni octoprint ni ninguna historia... la idea esta todavia muy verde y aun no le he dado ni la primera vuelta, pero asi a vote pronto se pueden usar registros de desplazamiento para salidas o entradas extra "lentas" y conversores de nivel y demas historias.


Por otro lado:
Actualmente estoy programando el sistema operativo de un brazo robotico impreso en 3D con unos compañeros. Por el momento he logrado mover los motores como he dicho en el primer post... ahora es cuando toca la parte de gestion de movimientos por ejes sincronizados, y cuando esto funcione, ya tiraremos por una cola de instrucciones de movimienyo y seguidamente la cinematica inversa (que por este mismo motivo necesitamos la potencia de procesamiento de la raspberry)

Los usos son miles... mi mayor problema a dia de hoy con los arduinos es su incapacidad de realizar calculos complejos de una manera rapida... no dire que un arduino no sea potente... tenemos la muestra de que lo es delante viendo las impresoras 3D, pero en temas de calculos es un punto flaco grande.

Este proyecto que estamos desarrollando es libre, con lo cual todo el codigo será liberado y por ejemplo todo lo que aprenda sobre la gestion de los motores pap lo dejaré en una libreria para que lo useis quienes querais.

Por ultimo, eroyecto Ultibo no es muy antiguo, tampoco es que este muy difundido dada la poca gente que veo registrada en su foro, pero jamás he tenido problema en obtener respuestas a mis preguntas... es una comunidad muy pequeña pero hay gente muy capaz que ayudan sin ningun tipo de problema.
  Responder
#6
Mi idea de bombero (desde siempre) es crear una "Scooba" (robot autónomo que limpia con agua el suelo de la casa) porque la de iRobot no es la mejor del mundo, aunque limpia bien, tiene mucho que mejorar.

Tendría que pasar años para llegar a construirla jejeje.
Ulticampy V2: fundiendo plástico sin descanso...
  Responder
#7
(30-04-2018, 02:08 AM)Shellmer escribió: Una de mis ideas de bombero era realizar una shield que conectar entre la raspberry pi y una ramps de toda la vida, que esa shield integrase un chip para lectura de entradas analogicas comunicado por i2c (para los termistores) y programar de 0 la impresora 3D directamente integrada en la propia raspberry.

De esa forma no haria falta ni octoprint ni ninguna historia... la idea esta todavia muy verde y aun no le he dado ni la primera vuelta, pero asi a vote pronto se pueden usar registros de desplazamiento para salidas o entradas extra "lentas" y conversores de nivel y demas historias.


Por otro lado:
Actualmente estoy programando el sistema operativo de un brazo robotico impreso en 3D con unos compañeros. Por el momento he logrado mover los motores como he dicho en el primer post... ahora es cuando toca la parte de gestion de movimientos por ejes sincronizados, y cuando esto funcione, ya tiraremos por una cola de instrucciones de movimienyo y seguidamente la cinematica inversa (que por este mismo motivo necesitamos la potencia de procesamiento de la raspberry)

Los usos son miles... mi mayor problema a dia de hoy con los arduinos es su incapacidad de realizar calculos complejos de una manera rapida... no dire que un arduino no sea potente... tenemos la muestra de que lo es delante viendo las impresoras 3D, pero en temas de calculos es un punto flaco grande.

Este proyecto que estamos desarrollando es libre, con lo cual todo el codigo será liberado y por ejemplo todo lo que aprenda sobre la gestion de los motores pap lo dejaré en una libreria para que lo useis quienes querais.

Por ultimo, eroyecto Ultibo no es muy antiguo, tampoco es que este muy difundido dada la poca gente que veo registrada en su foro, pero jamás he tenido problema en obtener respuestas a mis preguntas... es una comunidad muy pequeña pero hay gente muy capaz que ayudan sin ningun tipo de problema.

Has mirado los micros de 32 bits? Por ejemplo, sin salir de arduino tienes el samd21. Es un cortex M0. Si necesitas aun mas potencia de calculo y memoria, puedes pasar a los micros de STM, y la serie cortex M4. Existe un framework para usarlos como si de un arduio se tratara.

No hay que limitarse la vida a un arduino uno, existen infinidad de recursos.
  Responder
#8
(30-04-2018, 05:45 PM)grafisoft escribió: Has mirado los micros de 32 bits? Por ejemplo, sin salir de arduino tienes el samd21. Es un cortex M0. Si necesitas aun mas potencia de calculo y memoria, puedes pasar a los micros de STM, y la serie cortex M4. Existe un framework para usarlos como si de un arduio se tratara.

No hay que limitarse la vida a un arduino uno, existen infinidad de recursos.

Lo se, lo cierto es que para el proyecto nunca pensé en utilizar un micro de 32 bit, mas bien al principio habíamos tirado por utilizar un arduino y comunicarlo con la raspberry por spi para que recibiese ordenes... finalmente, me dije un día que para qué tanto esfuerzo realizando el protocolo de comunicación si quizá pudiese hacerlo directamente con la raspberry.
Así que probé, y obtuve buenos resultados. Actualmente, visto que la gestión de los motores va bien y la multitarea he comprobado que funciona correctamente, me quedaré en esta opción, pero si, tienes razón, un micro de 32 bits probablemente nos habría servido.


Aun asi... uno de los motivos por el que prefiero esta plataforma es porque con ella tengo acceso a todos los periféricos que incluye la raspberry, cosas como los usb, la sd, el bluetooth, ethernet, wifi, el tener 4 nucleos disponibles, la cantidad de memoria ram disponible, la salida hdmi y de audio, hacen que prefiera utilizarla. Son muchas cosas que tiene y que no todas las placas tienen integradas. A parte, una raspberry pi 3 ahora mismo cuesta unos 35 euros, muy económica para la potencia que me da.
  Responder