bclose

Raspberry PI: Introducción

Una primera aproximación a Rapberry PI y Linux

La Raspberry PI

 

Recuerdo que cuando a mediados de 2013 recibí una de las entonces  flamantes nuevas Raspberry PI y la probé entré en shock de inmediato. Las Raspi ya andaban por el mercado hacía más de un año pero no era fácil oír hablar de ellas y mucho menos conseguir una, y cuando por fin me pillé la mía tuve la sensación de que algo había cambiado en la informática para siempre.

Raspberry PI

Raspberry PI

Un PC completo corriendo una versión de Linux por 45€ (A los 35€ hay que sumar IVA y portes) y aunque daba asco lo lento que andaba, disponer de un equipo para Linux por semejante precio era algo increíble. Y encima corría todo (Más bien se arrastraba).

La idea de un PC basado en un procesador de un teléfono móvil, flotaba en el aire desde hacía algún tiempo pero la Raspberry Pi fue la primera en sacar uno al mercado funcionando y a un precio ridículo.

Procesador a 600 MHz, medio Giga de RAM, Ethernet, Video HDMI con coprocesador gráfico y un par de  USB  incluidos y corriendo Linux, inaudito. Los idiotas habituales decían que poco se podía hacer con un PC tan pobre, lo que demuestra que se puede ser certero en el diagnóstico y errar por completo.

Porque quien en seguida vieron las posibilidades fueron los Makers y aficionados que se encontraron con que podían colocar un PC de verdad en sus inventos que, aunque lento, era plenamente operativo y que además contaba con unos cuantos GPIOs para uso general, con lo que podía escuchar el mundo exterior e influir en el (¿A que os suena esto?)

Cuando todavía nadie se había planteado hacer algo parecido las Raspberry Pi había vendido medio millón de copias y entonces todos empezaron a pensar que habría que diseñar y vender algo similar, pero para entonces la Raspberry se había comido un mercado que ella misma creó y que hasta ahora nadie ha podido disputarle.

Logo Arduino

Porque al igual que Arduino antes, ha sabido crear una comunidad de entusiastas a la que ya es imposible batir, porque andaba a mediados de marzo de 2016 sobre los 8,5 Millones de copias vendidas, ahí es nada. Y muchos de ellos son estudiantes de informática y programación que ponen su trabajo alegremente “gratis et amores” a disposición de la comunidad.

Naturalmente ha surgido una plétora de competidores que ofrecen más por menos especialmente chinas y yo soy un alegre comprador de muchas de ellas. Son tan baratas que no me puedo resistir, y en estas paginas hemos hablado de varias de ellas.

Algunas son mucho más potentes, otras más baratas o tienen más cosas, pero la Raspi manda, especialmente desde que a principios de 2016 introdujo la Rasberry PI 3, que ya es un pedazo PC:

  • Procesador de 64 bits a 1,2 GHz (Aunque lo usa como un 32 por compatibilidad)
  • 1 Gb de RAM include
  • Ethernet, WIFI y Bluetooth 4.0 includes

Cuando usas la Raspi 3 tienes una sensación de que va suelta y corre cómodamente los programas. Yo he tenido muchos PC con mucha menos potencia y alegría por mucha, pero que mucha más pasta.

Así que en prometec no podíamos dejar de meternos con ella y ha llegado la hora de empezar un pequeño curso, que nos permita familiarizarnos con ella y además empezar con mi lenguaje favorito: Python.Python_logo

Hay varias tarjetas compatibles con la Raspberry por más y menos pasta que esta y confío en que en breve tengamos algunas en la tienda como las Orange Pi (Que me gustan especialmente), para que quien no queráis gastar demasiado podáis pillar una clónica por algo menos de tela, pero en cualquier caso la tarjeta oficial para nuestros ejemplos a partir de ahora será la Raspberry PI 3.

Los que tengan la Raspberry 2, tranquilos, no pasa nada porque os va a correr todo exactamente igual, pero si tenéis la 1, os aconsejo aflojéis la cartera y pilléis la nueva Raspi 3, porque la diferencia es abismal y vuestra paciencia no será puesta a prueba a cada minuto.

 

Raspberry PI y Python

 

Ya me imagino que muchos de los que nos habéis aguantado hasta ahora, estaréis pensando lo de aquel aldeano, que se lamentaba: “Después de toda la vida aprendiendo a decir pennicula van y ahora las llaman flims joer”.

Con lo que nos ha costado aprender C++ y ahora nos dices que aprendamos Python. Pues sí, superadlo, pero que no huya nadie aun.

Lo duro de aprender a programar es estructurar tus meninges de una forma característica, que te permite desmenuzar un problema y desarrollar algoritmos de solución, y esto os aseguro que no cambia para nada, aunque cambies de lenguaje.

Os promete que si habéis aprendido C++ estaréis de lo más cómodos con Python (Es más os va a dar por el saco programar en C++ después) porque Python es un lenguaje desarrollado por expertos programadores C++ para disponer de toda la potencia de C++ y a ser posible ninguno de sus inconvenientes. Y aunque aún es pronto para que os lo demuestre, dadnos un voto de confianza y creo que os gustará (mucho, mucho)

Y es que Python es un lenguaje moderno diseñado con la programación orientada a objetos en mente desde el principio y pensado para incluir de serie las librerías más típicas de C++, mejorar su gestión de listas y strings, mejorar la aritmética y calculo, operar con objetos como arrays ser ligero, con capacidad para usar las librerías de C++ y hasta de otros lenguajes de atrás como Fortram y demás, y encima hacerlo interpretado (Ya hablaremos)

Además está pensado para evitar la pesadilla sintactica de los puntos y comas de C++, su abrir y cerrar llaves y tantas otras manías que acaban sacando de quicio a cualquiera y aún más importante que te obliga a escribir tu programa de una forma documentada y organizada … por narices

Aunque la Raspberry PI corre Linux y por ello dispone de cualquier lenguaje en el que se te ocurra pensar, Python es, de algún modo, el lenguaje oficial sin menosprecio por nadie, aunque naturalmente dispone de Gcc (Que es el compilador que usáis en Arduino sin saberlo seguramente).

Y la razón es que Python está pensado desde el principio para ser didáctico, organizado, potente y auto documentado, y es sin lugar a dudas el lenguaje que recomiendo siempre a cualquiera que me pregunte que lenguaje aprender. Python es sencillo, gratis y Open Source desde su concepción

Es ideal para jóvenes y especialmente como primer lenguaje (A partir de 14/15 años no antes) y muy específicamente como lenguaje oficial para colegios y programadores aficionados, por su sencillez y características.

No reniego del C++, es el lenguaje más potente que conozco, pero también es un dolor de muelas, con sus manías. Nadie es capaz de compilar el menor programa sin que te zumbe un par de errores de compilación y a medida que tú programa crece los problemas le siguen.

Python es una de esas raras obras cumbre de la programación y va a estar muchos años con nosotros y hay que agradecérselo al esfuerzo personal y solitario de su creador Guido Van Rossum, aunque hoy se mantiene mediante una comunidad Open Source, continua dirigiendo la evolución de un lenguaje que creó en homenaje a los Monty Python (Y no a ninguna serpiente brasileña)

 

Linux

 

La Raspberry PI utiliza como sistema operativo una distro de Linux llamada Raspbian. Pero me imagino que muchos de los que leáis esto os puede sonar a música celestial.

¿Qué es Linux y que es una distro? Vale, empecemos por el principio.

Linux founderHace ya unos añitos, Linus Torvalds a la sazón estudiante de computación en alguno de esos países nórdicos, en los que no se puede salir a la calle más que un par de meses al año, decidió escribir un programa que contuviera la semilla básica de lo que entonces se conocía como sistema Unix, el Kernel.

Unix era en aquellos momentos, a finales de los 80, el sistema operativo principal de cualquiera que fuera serio y no estuviera cautivo de IBM, que usaba otro sistema operativo propio.

Unix era un sistema operativo, es decir un sistema de gestión y administración razonable de un ordenador central. Y era multi usuario (Varios usuarios podían trabajar concurrentemente, a la vez, con solo un ordenador) y además multi tarea (Cada usuario podía ejecutar más de una tarea a la vez)

Para los que sois hijos de los tiempos recientes, esto os parece lo normal, pero en aquella lejana época no lo era. Los PC eran unos armatostes descomunales con la pantalla llena de letras en blanco y negro (O peor aún en verde y negro) y para manejarlo había que memorizar listas interminables de comandos que se tecleaban en el terminal.

 
  • Los que sigas nuestra pequeña introducción a la Raspberry PI y Linux, pronto os encontrareis esas temibles pantallas de texto, sin ratón y en las que hay que escribir comandos crípticos y dar intro al final, pero tranquilos, no es para tanto

Cada fabricante principal, IBM, Hewlewtt Packard, Digital, SUN (Microsoft incluido) y tantos otros desarrollaban y mantenían sus propias versiones de Unix y las vendían a precio de oro a sus clientes y eso que solo servían para las propias maquinas además, y que cada vez que cambiaba algo y sacaban la nueva versión había que volver a comprarla si no habías pagado la estafa anual que se llamaba mantenimiento.

La idea de un estudiante pudiera desarrollar el Kernel (Núcleo central) de un Unix en un PC barato era inimaginable. Más o menos como si un estudiante desarrollase hoy la competencia del buscador de Google en un teléfono móvil.

Pero Linus demostró que podía iniciar el trabajo y que las redes de comunicación inter universitarias, incipientes en aquellos años, eran una herramienta de un poder asombroso para que desconocidos colaborasen desarrollando un proyecto común que Linus en un portentoso alarde de imaginación bautizo como Linux.

En un plazo relativamente corto entre 10 y 15 años sacó del mercado a prácticamente todas las versiones profesionales (O sea de pago importante) hasta el punto que no sé, si hoy aún existe alguna versión de pago de Unix diferente de Linux.

Lo que de verdad probó, Linux fue la asombrosa capacidad del trabajo colaborativo de miles y miles de desconocidos trabajando en un proyecto común en el que cada uno aportaba su granito de arena, y de como muchos aficionados trabajando de un modo bastante poco estructurado podían hacer morder el polvo a los profesionales súper pagados de las grandes corporaciones de la informática.

Miles y miles y miles de programadores voluntarios colaborando sin interés en desarrollar programas que después regalan a los demás usuarios, desconocidos en su mayoría claro, han ido construyendo una obra maestra de la ingeniería moderna y gratis, sin que ninguna corporación decida la dirección que sigue.

gnulinux-logo

Lo que hoy llamamos Linux, es en realidad el sistema operativo Linux, más toda una colección de herramientas desarrollados por la comunidad de usuarios bajo una licencia GNU de colaboración y protección para que lo desarrollado no solo sea gratis sino que se garantice que ningún listo se apropia de ello para hacer negocio a costa de un trabajo que no le corresponde.

Y como comprenderéis hay miles de herramientas rodeando el Kernel como tal, y resulta imposible usar todo. Por eso equipos de gente desarrollan lo que se llama una distribución o distro, que básicamente es un conjunto de programas que rodean el Kernel con sus ventanitas, programas de oficina, lenguajes de programación y hasta el IDE Arduino, en un conjunto que se ha probado y funciona correctamente en conjunto (más o menos)

De hecho aun no hemos hablado del equivalente a Windows o Mac OSX en Linux, ya que mientras estos son únicos (El amo manda y punto) en Linux como no podía ser de otra manera, hay por lo menos media docena, con nombres como KDE, Gnome… etc.

Por este mismo motivo hay tantas distros como grupos compilándolas. Unas son para primar la seguridad de la información, otras son para ingenieros eléctricos y otras para astrónomos. Las hay dedicadas a ser servidores y otras destinadas al cliente final, y otras….para lo que se os ocurra.

raspbian_logo

Incluso hay distribuciones de base para que desarrolles otras distribuciones como el caso de Debian que es en la que se basa Raspbian. Esta es una de las grandes fortalezas de Linux: su enorme versatilidad y también su mayor defecto: La infinita divergencia de todo.

No existe un proyecto central dirigido. Más bien es como una colección de gente haciendo la guerra por su cuenta, en muchas ocasiones metiéndose el dedo en el ojo a la mínima. Un desacuerdo y Buum un fork (Que es la manera elegante de decir que partimos peras y cada uno por su lado)

Soy bastante crítico con este aspecto de Linux porque la experiencia me ha enseñado que es la colaboración lo que genera el impresionante resultado final, y demasiadas veces en Linux, los personalismos dividen las fuerzas persiguiendo objetivos muy próximos cada uno por su cuenta.

Pero a pesar de todo, es muy difícil no admirar Linux y como nació. Probablemente con los años se recuerde el fin del siglo XX como el lugar de nacimiento del trabajo colaborativo mediante voluntarios para conseguir un objetivo común. Y ha sido Internet quien ha proporcionado el mecanismo de organización de estos voluntarios.

 

Juntándolo todo

 

Vale ya sabemos lo que es Linux, la Rasberry Pi y Python. Ya solo nos falta mezclarlo todo y empezar a hablar de ello. ¡Ejem! Esto… Verás, ¿Cómo lo diría yo?

Linux es un sistema operativo, multi usuario y multi tarea, así que hay que empezar hablando de los usuarios y del súper usuario, del sistema de ficheros, y de los permisos y de cómo se mezcla todo eso. Además muchas operaciones se hacen desde la consola con Bash y por supuesto no olvidemos las tareas, los procesos, y la gestión del sistema y…. Así hasta el infinito.

Solo hemos empezado a hablar del Kernel, y el propio BASH o consola de comandos dispone de libros muy gordos al respecto y lo mismo para tantas otras cuestiones de administración del mismo.

De Python, si echáis una ojeada rápida por Internet, veréis que los libros y cursos que se ocupan del tema, van desde unas pocas sesiones hasta enciclopedias y cada día se publican más cosas dependiendo de la finalidad del que escribe, con lo que llegamos a un follón en el que aprender ordenadamente todo lo necesario es, sin más, imposible de llevar a cabo.

Por eso cualquier intento de organizar una introducción a este mundo tan exuberante y caótico, tiene que aceptar que no puede ser demasiado ordenado, para nada exhaustivo y desde luego, tendremos que saltar alegremente más de una vez, omitiendo cosas de indudable interés, y por eso conviene plantear cual es el objetivo de esta, nuestra humilde introducción a la Raspberry PI.

Porque serán estos objetivos la luz que nos guíe por un laberinto inmenso en el que resulta muy fácil perderse. Nuestros objetivos serán por tanto estos:

 
  • Partir absolutamente de cero. De modo que incluso quien no conozca absolutamente nada del tema pueda seguir un itinerario claro. No se va a requerir ningún conocimiento previo porque creemos que este enfoque es el necesario para un tema tan amplio y porque no es nada habitual en este mundillo.
  • Presentar la Raspberry y ver para que nos sirve y que podemos hacer con ella.
  • Introducirnos a la programación desde el punto de vista de Python, aprendiendo a programar los que lleguen de nuevos y afianzando lo que ya sabíamos de C++
  • Nos vamos a orientar hacia el cacharreo que es lo que nos gusta a los que pasamos el rato por estas páginas de prometec. Quiero decir que nos vamos a orientar a ver cómo podemos hacer las cosas con los GPIO para enredar con el mundo exterior y los motores y cosas así, que son las que nos ponen.
  • No vamos a seguir un orden particular ni a ser demasiado exhaustivos en casi nada porque la intención es arrancar a los que sigan el curso para que puedan aprender por su cuenta, pero sí que necesitamos un itinerario claro donde vayamos viendo los conceptos principales del sistema operativo, los comandos, Python, GPIOs y muchos otros conceptos laterales, en nuestra particular visión y a sabiendas que hay tantas como usuarios.
  • Procuraremos que sea divertido, muy en nuestra línea, porque os aseguramos que hay cosas que van a levantaros dolor de cabeza, pero como con tantas cosas… poco a poco y siempre los pasos en la misma dirección, avanzado… con casco por si acaso.
  • Y desde luego si tenemos que elegir entre el rigor y la claridad, no dudaremos, nos quedamos con lo sencillo y claro en la mediad de lo posible. . 

Por eso, y una vez declaradas nuestras intenciones, para no llevar a engaño a nadie, en la próxima sesión empezaremos a ver cómo hacemos para instalar nuestra flamante Raspberry PI 3 y de  paso veremos también como hacer lo mismo con nuestra Orange PI, que es barata y molona .

Pero por ahora ya os hemos aburrido bastante.

 

LikeUsOnFacebook_Icon