RPi.GPIO no Banana Pi

Este artigo documenta a minha experiência na instalação e teste de funcionalidades do RPi.GPIO no Banana Pi M1.

RPi.GPIO foi desenvolvido para o Raspberry pi e foi portado para o Banana Pi por outras entidades.

O RPi.GPIO permite explorar os pinos GPIO do Banana PI em python3.

Para um sumário da instalação do software necessário para aceder aos pinos  GPIO do Banana Pi, está disponível em:

GPIO no Banana Pi

O software que funcionou foi o seguinte:

https://github.com/LeMaker/RPi.GPIO_BP

A instalação é descrita mais abaixo sobre o seguinte titulo: Instalação da RPi.GPIO da Lemaker.

Uma nota sobre o que experimentei e não funcionou:

RPi.GPIO da sinovoip

 

Instalação do RPi.GPIO no Banana Pi M1 no Debian 9

Existem pelo menos duas versões do RPi.GPIO para o Banana Pi M1, uma da Sinovoip e outra da Lemaker.

Este documento relata a minha experiência com as duas versões do RPi.GPIO disponível nos seguintes endereços:

  • https://github.com/BPI-SINOVOIP/RPi.GPIO
  • http://wiki.lemaker.org/BananaPro/Pi:GPIO_library

A experiência com as duas versões da sinovoip foi má pois não funcionaram. De qualquer modo o processo está relatado mais abaixo.

Instalação da RPi.GPIO da Sinovoip

Não se deve instalar esta versão mas sim a da lemaker (descrita mais abaixo).

Se já tiver esta versão instalada deve remover todos os ficheiros e pastas que dela façam parte da pasta seguinte:

/usr/local/lib/python3.5/dist-packages/

Posto isto, o resto desta secção sobre a versão da Sinovoip deve ser ignorada e passar a da Lemaker.

A instalação que é simples. No debian 9, bastam os seguintes comandos:

git clone https://github.com/BPI-SINOVOIP/RPi.GPIO
cd RPi.GPIO/
python3 setup.py install

A compilação apresentou alguns warnings mas terminou sem erros. Pelo que chegou a hora de testar se está a funcionar.

Teste do RPi.GPIO da Sinovoip no Banana Pi M1 em Debian 9

Dentro da pasta test, existe um ficheiro chamado test.py. A minha primeira ideia foi executá-lo com o python3 e ver o que dava.

Executei os comandos:

cd test
python3 test.py

O programa devolveu um erro relacionado com o uso do print sem os parênteses. Corrigi e iniciei um processo de correção deste tipo de erros até chegar ao erro abaixo:

root@m5:~/src/RPi.GPIO/test# python3 test.py
BPI: gpioLayout(-1)
Traceback (most recent call last):
File "test.py", line 38, in <module>
import RPi.GPIO as GPIO
File "/usr/local/lib/python3.5/dist-packages/RPi/GPIO/__init__.py", line 23, in <module>
from RPi._GPIO import *
RuntimeError: This module can only be run on a Raspberry Pi!

Passei pelo mesmo processo de correcção da sintaxe do comando print e acabei com o mesmo tipo de mensagem de erro.

root@m5:~/src/RPi.GPIO/test# python3 g40.py
BPI: gpioLayout(-1)
Traceback (most recent call last):
File "g40.py", line 2, in <module>
import RPi.GPIO as GPIO
File "/usr/local/lib/python3.5/dist-packages/RPi/GPIO/__init__.py", line 23, in <module>
from RPi._GPIO import *
RuntimeError: This module can only be run on a Raspberry Pi!

Acho que chegou a hora de dar como concluída esta tentativa de aceder ao GPIO do banana pi com o python3. Como em python2 a solução do BPI-WiringPi2-Python funciona, nem sequer experimentei.

Altura de desinstalar e experimentar a outra eventual solução.

Como não descobri forma de desinstalar provavelmente o que me resta será instalar por cima.

Instalação da RPi.GPIO da Lemaker

Esta foi a única instalação que funcionou. E da primeira vez não funcionou porque foi instalada após a versão da Sinovoip, e por algum motivo que desconheço não substituiu a anterior.

Portanto, não deve instalar a versão da Sinovoip descrita mais acima e instalar logo esta. Se já tiver  instalada deve remover todos os ficheiros e pastas que dela façam parte da pasta seguinte:

/usr/local/lib/python3.5/dist-packages/

A informação sobre como instalar a versão RPi.GPIO da Lemaker está disponível no seguinte endereço:

http://wiki.lemaker.org/BananaPro/Pi:GPIO_library

Como o único requisito explicito estava instalado (python-dev, e python3-dev) passei a executar o processo de instalação propriamente dito que é simples e consiste nos seguintes comandos:

git clone https://github.com/LeMaker/RPi.GPIO_BP -b bananapi
cd RPi.GPIO_BP
python3 setup.py install 
sudo python3 setup.py install

Durante a compilação foram exibidos alguns avisos mas o processo terminou sem erros.

Era a hora de testar.

Na pasta test estão vários testes possíveis. Escolhi o led.py, modifiquei o modo número do pino para 16, e o modo para GPIO.BOARD, ficando conforme o programa abaixo e executei-o de seguida.

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
PIN_NUM = 16

#GPIO.setmode(GPIO.BCM)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN_NUM,GPIO.OUT)
while True:

GPIO.output(PIN_NUM,True)

time.sleep(1)
GPIO.output(PIN_NUM,False)
time.sleep(1)

O resultado foi o erro abaixo:

root@m5:~/src/RPi.GPIO_BP/test# python3 led.py
BPI: gpioLayout(-1)
Traceback (most recent call last):
File "led.py", line 2, in <module>
import RPi.GPIO as GPIO
File "/usr/local/lib/python3.5/dist-packages/RPi/GPIO/__init__.py", line 23, in <module>
from RPi._GPIO import *
RuntimeError: This module can only be run on a Raspberry Pi!

Agora sei, que este erro foi devido à instalação prévia da versão da sinovoip, e portanto, tudo o que descrevo abaixo nesta secção não acontece se esta versão for instalada sem a outra ter sido instalada. O seja esta versão funciona com o python3, e o led acendeu, quando removi todas as versões da pasta que referi, e reinstalei de novo.

A informação abaixo até ao final da secção não deve ser executada.

Voltei a página do RPi.GPIO da Lemaker e no final vi as instruções para instalar uma biblioteca para BCM2835 para o gpio C do Banana Pi. (diz lá que é para o bananapro, mas supostamente seriam iguais)

Iniciei a instalação conforme indicado na página com o seguintes comandos:

git clone https://github.com/LeMaker/bcm2835_BP.git
cd bcm2835_BP
./configure
make

O make termina com erros relativos ao aclocal e automake conforme o exemplo abaixo:

aclocal-1.13: command not found

A forma como resolvi o erro foi com os seguintes comandos:

ln -sf /usr/bin/aclocal /usr/bin/aclocal-1.13
ln -sf /usr/bin/automake /usr/bin/automake-1.13

Corri outra vez o make para me voltar a dar um erro relacionado com a inexistência do ficheiro compile. Resolvi o problema com o seguinte comando:

touch compile

Quando voltei a correr o make já só obtive warnings e o programa compilou sem erros.

Seguidamente quando passei a verificação com o comando:

sudo make check

Ainda executei o seguinte comando para proceder à instalação:

sudo make install

Apesar deste comando ter terminado sem erros, quando fui testar continuou a dar o mesmo erro.

Outra opção que explorei mas também não funcionou é esta versão da Lemaker:

http://wiki.lemaker.org/LMK.GPIO

A lemaker tem também um wiki sobre o io em algumas das sua placas disponivel no link seguinte:

http://wiki.lemaker.org/How_to_control_the_IO_on_the_SBC_boards