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:
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