Manual

do

Maker

.

com

Shell script para usar o GPIO do Raspberry

Shell script para usar o GPIO do Raspberry

Essa é uma dica simples, mas não quis deixar de escrever porque apesar de simples, é útil. Com esse programinha você pode fazer acesso  por ssh e manipular um pino do GPIO do Raspberry. Está bem básico:

  • Seleciona o pino
  • Seleciona a direção
  • Seleciona o estado do pino

Tudo através de um menu em curses, feito com o programa dialog. Tudo o que você precisa fazer é instalar o programa dialog:

Instalar o dialog

sudo apt-get install dialog

Script de manipulação do GPIO do Raspberry

Depois, salve o código em um arquivo. Por exemplo, gpioControl.sh.

#!/bin/sh

INPUT=1
OUTPUT=2

LOW=0
HIGH=1

setState(){
    [ -L /sys/class/gpio/gpio$PIN ] || {
        dialog --infobox "O pino nao esta disponivel no sistema. Saindo..." 5 55
        return 
    }
    echo $1 >/sys/class/gpio/gpio$PIN/value
}


PINS=`for i in 4 6 12 13 16 17 18 19 21 22 23 24 26 27; do echo $i "Pino_$i"; done`
PIN=`dialog --title "Manual do Maker - GPIO" --menu "Selecione um pino do header" 15 55 5 $PINS  --stdout`

[ $? -eq 1 ] && clear && return

DIRECTION=`dialog --title "Manual do Maker - Direction" --menu "Selecione direcao" 15 55 5 1 "INPUT" 2 "OUTPUT" --stdout`

[ $? -eq 1 ] && clear && return


if [ $DIRECTION -eq $OUTPUT ]; then
    echo "out" >/sys/class/gpio/gpio$PIN/direction
    STATE=`dialog --title "Manual do Maker - State" --menu "Selecione estado do pino" 15 55 5 0 "LOW" 1 "HIGH" --stdout`
    [ $? -eq 1 ] && clear && return
    if [ $STATE -lt $HIGH ]; then
        setState $LOW
    else
        setState $HIGH
    fi
else
    echo "in" >/sys/class/gpio/gpio$PIN/direction
fi

Então, dê um bit de execução para o script e execute-o como root:

chmod 700 gpioControl.sh
sudo su
./gpioControl.sh

Módulo relé

Muita atenção ao conectar o módulo relé. Ele deve ser conectado ao 3V3 devido ao nível lógico dos pinos do Raspberry, que não são tolerantes a 5V. Meu módulo funcionou em 3V3 sem problemas.

Conectei um dos pinos de sinal no GPIO4. Meu módulo relé tem lógica invertida, então ele liga em LOW.

Ao executar o script, abrir-se-á um menu. Depois, deve selecionar INPUT ou OUTPUT. Se selecionar INPUT, o script termina em seguida.

E por fim, selecionar o estado. Como meu módulo é lógica invertida, ele aterra no pino de GPIO. Não sei se é mais arriscado drenar corrente ou receber uma tensão de 5V no pino, mas de qualquer modo, lembre-se: Conecte o módulo no pino 3V3.

Dá pra implementar borda para INPUT, dá pra implementar interrupção e mais algumas coisinhas. Só fiz o básico pra, que sabe, servir de motivação para você fazer uma implementação melhor.

Shield expansor de GPIO para Raspberry

E claro, esse shield dá uma bela força pra não errar o wiring. Não precisa de imagem do pinout, nem contar pinos no Raspberry, é só olhar o silk em cima do shield.

Dê uma olhada, acho que você também vai gostar desse shield da Usina, nesse link.

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.