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.