Utilizando a interface GPIO do Raspberry Pi

Primeiro, descobri que após desligar o RPi, ele fica em um estado stand by. Caso queira ligar ele novamente sem retirar e recolocar o cabo usb, basta fechar um curto rápido nos pinos 5 e 6 da GPIO.
Após os testes iniciais, parti para o que realmente me interessa que é a interface GPIO.
A programação da interface é feita em Python, e para isso é necessário instalar a biblioteca RPi.GPIO. Ela funciona de forma bem parecida com a programação em C do Arduino. Para a instalação use os comandos:

sudo apt-get update
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio
Para a programação, você pode usar o Idle, ícone disponível no desktop do Raspbian, ou com algum editor de textos(leafpad ou nano) para criar um arquivo .py. No Idle, pelo pouco que usei, você vai digitando os comandos, linha a linha.
Update:
Após alguns testes com o Idle, apredi que você pode criar e testar o programa por ele mesmo. Indo em File/New Window, criando o programa, salvando e depois rodando F5 (Run/Run Module). Para parar o programa use CRTL+F6 (Shell/Restart Shell). Um detalhe é que o Idle precisa rodar como root para trabalhar com a GPIO. Basta abrir um terminal e digitar:
sudo idle
Para o arquivo .py, basta copiar o exemplo mais abaixo e liberar o arquivo para execução, detalhes abaixo também.
Primeiro é necessário importar o modulo RPi.GPIO, utilizando:
import RPi.GPIO as GPIO
Será necessário também importar o modulo time.
import time
O próximo passo é definir se utilizaremos a numeração das pinagens por BOARD ou BCM. Por BOARD será seguido a numeração do conector P1 por padrão, numeração interna na foto acima. A vantagem deste tipo é que em uma atualização de versão da placa, não haverá mudanças, já que o conector é padrão. Já na BCM será seguido a pinagem do processador, onde é necessário acompanhar o esquema eletrônico, disponível na pagina 2, ou numeração externa na foto acima.
Exemplos:
BCM18 = BOARD12
BCM11 = BOARD23
Para a definição use:
GPIO.setmode(GPIO.BOARD)
ou
GPIO.setmode(GPIO.BCM)
Com o:
GPIO.setup(channel, GPIO.OUT)
definimos o pino (channel) e se ele será uma entrada(IN) ou saída(OUT), bem parecido com o pinMode do Arduino. Com o:
GPIO.output(channel, GPIO.HIGH)
definimos além do pino novamente, o estado da saída(LOW/HIGH), bem parecido com o digitalWrite do Arduino. Fazendo tudo dentro de um loop While(1), definindo dois tempos de atraso com time.sleep(1.0), onde o valor 1.0 representa um segundo, teremos um blink. Ligando um led com um resistor em torno de 1k ohms na porta correspondente para o terra (GND), o led irá piscar a cada um segundo.
Aqui o programa completo:

Para executar o programa como arquivo .py, abra o LXTerminal, estando na pasta onde ele foi criado, utilize primeiro:
chmod +x nomedoprograma.py
Isto fará com que o arquivo se torne possível de ser executado. Depois basta rodar:
sudo ./nomedoprograma.py &
Para parar a execução é preciso parar o programa. Primeiro procure o numero do processo do programa com o comando:
ps -ef | grep nomedoprograma.py
Será exibido algo como:

Onde o numero que procuramos neste caso é 2692. Depois rode:
sudo kill 2692
Aqui um video rápido do processo:

Nós próximos passos, pretendo trabalhar com entradas e PWM.

Comentários

  1. Em relação à ligar o rasp, o legal é colocar um botão para facilitar e que pode servir para desliga-lo também programando ele :)

    ResponderExcluir

Postar um comentário