lunes, 13 de mayo de 2013

Raspberry e a utilización da Gpio


No anterior artigo comentaba como compilar un sistema operativo en tempo real para utilizar para automatización de procesos.  No meu caso a necesidade é para un proxecto de robótica sinxelo. A idea era estudar as posibilidades que ofrecía, neste caso Freertos.

Despois da compilación facer chiscar un led a través da Gpio non é nada complicado, e o exemplo ofrece un código para facelo moi sixelo. O problema é que ven desnudo, non ten nada máis que esas funcións necesarias para a saída de sinais mediante a Gpio.

Non hai posibilidade de ler sinais, non trae ningún exemplo de eso. Si se quere facer hai que escribir o código en c.  Isto require práctica de programación en c e coñecementos de harware da Raspberry.

Como conclusión Freertos ofrece a plataforma (o sistema operativo) para comezar, pero nada máis. No meu caso, que teño poucos coñecementos non me vale para empezar, magoa.  Quedará como unha futura liña de investigación.

Como o proxecto é sinxelo, si utilizo un sistema operativo de propósito xeral con multitarefa que non este moi cargado de servizos e aplicacións, podería cumprir o obxectivo. Polo que decidín utilizar un linux sen entorno gráfico. O máis rápido foi un archlinux. Rápido, rápido non, hai que pelexarse coa configuración de rede para conectarse a el mediante ssh, instalar as aplicacións básicas, etc.

Eu configurei o ssh, instalei o compilador, a utilidade git e as librerías necesarias para programar a gpio.

Que librerías preciso? Estudando como utilizar a Gpio, cheguei a este enlace (http://elinux.org/RPi_Low-level_peripherals) onde ademais de describir como están conectados os pines, expón varios exemplos de librerías para varios linguaxes de programación.

Como o comezo do proxecto foi automatizando mediante a plataforma Arduino a elección pareceume clara, a biblioteca wiringPi. A biblioteca está completa e ten tódalas funcións que podes precisar para utilizar a Gpio e outros recursos da Raspberry.

Si programastes coa plataforma Arduino é igual de fácil, coa diferenza que non temos o coñecido IDE de Arduino detrás.  Neste caso temos que aprender a utilizar algún editor de texto en liña de comandos de linux. Isto pode ser un camiño máis árido, xa que hai editores difíciles de usar, pero a súa vez máis potente que o sinxelo IDE de Arduino.

Se programa en C pero coas funcións que tiñamos co arduino (este utiliza a biblioteca wiring). Os que programáchedes en Arduino notaredes que non hai a función setup e loop. Isto se resolve na función main inicializando os recursos o principio da función e despois para substituír a función loop un bucle for infinito. 

A librería wiringPi é fácil de instalar. Esta mantida mediante a plataforma GIT, polo que hai que utilizar a utilidade git clone:

git clone git://git.drogon.net/wiringPi

Unha vez o temos na nosa Raspberry só temos que actualizar a librería mediante

cd wiringPi
git pull origin

E finalmente compilar lanzando o scrip:

./build

Non poño exemplos de como probar a librería, xa que igual que Arduino, wirinPi trae moitos exemplos de utilización das funcións. 


En resumo poderíamos dicir que utilizar wirinPi con a Raspberry fronte a Arduino ten a seguintes vantaxes e desvantaxes

Vantaxes:
  • A potencia do procesador da Raspberry frente o Arduino.
  • Podes ter algo máis de información por pantalla para depurar (no Arduino tiñas que enviala polo porto serie). 

Desvantaxes:
  • O entorno de desenvolvemento
  • E un pouco máis complicado de conectar. Hai que ter en conta que a Gpio da Raspberry traballa a 3,3.
  • Non ten conversores AD.
  • As saídas que poden utilizarse como PWM son moi limitadas na Raspberry. 
  • Tes un sistema operativo, coa sobrecarga da planificación e outros servizos do mesmo, que retardan o tempo de proceso do programa a executar.
  • Hai que utilizar editores de texto e compilar na liña de comandos.
  • Precisas coñecementos de linux.