DEV Community

Cover image for Como piscar um LED utilizando BananaPi e Python via SSH

Como piscar um LED utilizando BananaPi e Python via SSH

Introdução

Este artigo irá demonstrar como fazer um LED piscar, utilizando o microcomputador BananaPi e um script em Python, via SSH.

Sumário

  1. Etapas do Desenvolvimento
  2. Requisitos
  3. Sobre a BananaPi - BPI-M2 Zero
  4. Identificação de Pinos Disponíveis - GPIO
  5. Ligação de Circuito Elétrico
  6. Código em Python - Blink.py
  7. Conexão via SSH
  8. Vídeo Demonstrativo
  9. Referências

01. Etapas do Desenvolvimento

01. Identificar o pino de GPIO disponível para uso na BananaPi
02. Realizar a ligação do circuito elétrico
03. Desenvolver o código
04. Enviar o arquivo de código para a BananaPi
05. Executar o arquivo de código

02. Requisitos

  • Configuração de conexão via SSH realizada na BananaPi
  • Versão do Python 3.10 instalado na BananaPi

03. Sobre a BananaPi - BPI-M2 Zero

A BananaPi M2 Zero é um computador de placa única ultracompacto que mede apenas 60 mm x 30 mm. Ela usa um processador quad-core Cortex A7 allwinner H2+, com 512 MB de memória RAM. É ideal para sistemas leves com alguns aplicativos com espaço limitado. Como outros dispositivos da BananaPi, ele suporta os sistemas operacionais Linux e Android. [1]

Principais características

  • CPU Quad Core ARM Cortex A7 H2+
  • 512 MB de SDRAM.
  • WiFi (AP6212) e Bluetooth integrados.
  • Mini-HDMI.

A BananaPi que estou utilizando possui a distribuição Debian GNU/Linux.

04. Identificação de Pinos Disponíveis - GPIO

BananaPi - Documentação Técnica - Esquema Elétrico - GPIOs

BananaPi - Documentação Técnica - Esquema Elétrico - GPIOs [3]

Os pinos disponíveis para entrada ou saída são identificados como "IO-xx".

Conforme recorte da documentação técnica mostrada acima, serão utilizados o pino físico 29 (GPIO 7) e o pino físico 6 (GND 3).
Utilizei o GPIO 7 porque os pinos GPIO 0 a GPIO 6 estão reservados para a UART.

GPIO = General Purpose Input/Output

05. Ligação de Circuito Elétrico

Foto em bancada - Circuito elétrico na protoboard

Foto em bancada - Circuito elétrico na protoboard

Software Fritzing - Circuito elétrico na protoboard

Software Fritzing - Circuito elétrico na protoboard [5]

O circuito elétrico mostrado na imagem acima, é composto dos seguintes itens:

  • Fio Jumper Vermelho Macho-Fêmea
  • Fio Jumper Marrom Macho-Fêmea
  • Resistor 330 Ohms
  • LED difuso 5mm Verde

Observação: A BananaPi foi inspirada no RaspberryPi Zero, por isso ambos tem formatos semelhantes. No software Fritzing, só existia o modelo do Raspberry.

06. Código em Python - Blink.py

view raw blink.py hosted with ❤ by GitHub
Gist - Código em Python para fazer o led piscar a cada 3 segundos [4]

O código mostrado acima foi desenvolvido em Python para executar os comandos de Shell Script na BananaPi. Esses comandos vão gerenciar o pino de GPIO que alimenta o LED, conforme essas etapas:

  • Exportação do pino físico: 29 (GPIO 7)
$ sudo echo 7 > /sys/class/gpio/export
Enter fullscreen mode Exit fullscreen mode
  • Definição de direção do pino: saída (out)
$ sudo echo out > /sys/class/gpio/gpio7/direction
Enter fullscreen mode Exit fullscreen mode
  • Definição do valor de nível lógico: alto (1)
$ sudo echo 1 > /sys/class/gpio/gpio7/value
Enter fullscreen mode Exit fullscreen mode
  • Definição do valor de nível lógico: baixo (0)
$ sudo echo 0 > /sys/class/gpio/gpio7/value
Enter fullscreen mode Exit fullscreen mode
  • Consultar a direção do pino:
$ sudo cat /sys/class/gpio/gpio7/direction
Enter fullscreen mode Exit fullscreen mode
  • Consultar o valor do pino:
$ sudo cat /sys/class/gpio/gpio7/value
Enter fullscreen mode Exit fullscreen mode

Observação: Considerei utilizar o comando sudo em todas as etapas para garantir que teria permissões de nível de administrador para gerenciar o pino do GPIO.

07. Conexão via SSH

Envio do arquivo Blink.py para a BananaPi

Para enviar o arquivo com o código em Python, basta utilizar o comando abaixo:

$ scp /Users/henriqueotogami/bananapi/blink.py pi@bananapi-zero.local:
Enter fullscreen mode Exit fullscreen mode

A senha será requerida e, após ser inserida, o arquivo será enviado.

Envio com sucesso do arquivo Blink.py

Envio com sucesso do arquivo Blink.py

Observação: o envio do arquivo deve ser feito antes do acesso a BananaPi via SSH. Se o login já tiver sido feito, será necessário realizar o logout para enviar o arquivo e o login logo em seguida.

Acesso a BananaPi

Para realizar o acesso remotamente da BananaPi, envie o seguinte comando:

$ ssh pi@bananapi-zero.local
Enter fullscreen mode Exit fullscreen mode

A senha de login da BananaPi será requerida e, após ser inserida, o login será iniciado.

Login e senha na BananaPi via SSH

Login e senha na BananaPi via SSH

Para confirmar que o arquivo Blink.py está na BananaPi, após o login, envie o comando:

$ ls
Enter fullscreen mode Exit fullscreen mode

Consulta da existência do arquivo Blink.py na BananaPi após o login via SSH

Consulta da existência do arquivo Blink.py na BananaPi após o login via SSH

Execução do código via terminal

Para que o arquivo com o script em Python seja executado, utilize o seguinte comando:

$ python3 blink.py
Enter fullscreen mode Exit fullscreen mode

Executando o arquivo com o script em Python no terminal

Executando o arquivo com o script em Python no terminal

08. Vídeo demonstrativo

Apenas para demonstrar a execução do código e dos logs no terminal que foram descritos acima, segue vídeo abaixo apenas demonstrando o led piscando.

09. Referências

Ficou alguma dúvida ou tem sugestões?
Comente aqui embaixo ou me chame em alguma das minhas redes.
Valeu! ✌🏻

Muito obrigado!

Hot sauce if you're wrong - web dev trivia for staff engineers

Hot sauce if you're wrong · web dev trivia for staff engineers (Chris vs Jeremy, Leet Heat S1.E4)

  • Shipping Fast: Test your knowledge of deployment strategies and techniques
  • Authentication: Prove you know your OAuth from your JWT
  • CSS: Demonstrate your styling expertise under pressure
  • Acronyms: Decode the alphabet soup of web development
  • Accessibility: Show your commitment to building for everyone

Contestants must answer rapid-fire questions across the full stack of modern web development. Get it right, earn points. Get it wrong? The spice level goes up!

Watch Video 🌶️🔥

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

If you found this post helpful, please leave a ❤️ or a friendly comment below!

Okay