Controlando um Servo por PWM usando Orange PI One e Python

 Esse artigo foge um pouco do micropython, mas achei interessante fazer um tutorial do GPIO do Orange PI One. Antes de começar o tutorial preciso falar um pouco sobre o Orange PI que é uma alternativa ao famoso Raspberry PI. Existem varias versões do Orange PI e não vou falar sobre todas aqui falarei apenas da versão One. O Orange PI One Possui um processador Allwinner H3 e possui versões de 512MB e 1GB de RAM, possui uma conexão Ethernet, uma usb, uma micro usb que funciona apenas para OTG. O armazenamento é feito através de um micro SD. Agora veja uma imagem do Orange PI.


Agora veja os pinos do GPIO do Orange PI One.

Para controlar o Servo iremos utilizar três pinos (VCC-5V, GND e PWM1) Pinos 02, 09 e 07 respectivamente. O Orange PI One possui uma seta para ajudar a identificar o pino 1. 


Agora iremos começar a preparar o Orange PI para ser programado e para isso é importante que o Armbian esteja instalado no Micro SD para fazer a intalação do sistema você pode utilizar o balena etcher ou o Win32DiskImager. Depois de ter o Armbian instalado e configurado. Vamos instalar os pacotes necessários para programar o Orange PI. Vamos começar atualizando o sistema digite o comando: sudo apt update && sudo apt upgrade -y

depois de atualizar o sistema vamos instalar as dependências necessárias digite o comando: sudo apt install python3-pip python3-dev python3-setuptools python3-wheel -y

Agora vamos instalar o modulo do python responsável por controlar o GPIO do Orange PI digite o comando: sudo pip3 install OrangePi.GPIO

O modulo OrangePi.GPIO é baseado no RPI.GPIO e por isso é possível adaptar tutorias do Raspberry PI para o Orange PI. Depois de ter instalado o OPi.GPIO vamos instalar uma IDE que vai nos ajudar a criar e editar nosso código. Eu estou utilizando o Thonny, mas você pode usar qualquer um. 

Agora vamos começar nosso código. Primeiro precisamos importar o modulo OPi.GPIO.


Após importar o modulo vamos começar definindo nossa placa, o modo e se nosso pino é de entrada ou de saída.


Como você deve ter visto na imagem definimos nossa placa como GPIO.ZERO isso acontece, pois em nossos testes se eu colocasse GPIO.ONE o python retorna um erro. O GPIO.ZERO funcionou perfeitamente. No setmode coloquei GPIO.BOARD, mas existem outras opções por exemplo GPIO.SOC. Eu utilizei o GPIO.BOARD, pois foi o único que tentei e funcionou perfeitamente. A diferença entre o GPIO.BOARD e o GPIO.SOC é a nomenclatura dos pinos. Já no setup coloquei o pino 7 como pino de saída por isso GPIO.OUT. Agora vamos definir nosso pino 7 como pino de PWM.

Nessa parte do código eu defino o pino 7 como PWM e defino a frequência para 50Hz. Agora precisamos criar um loop para receber um input e para definir a posição do micro servo.

Iniciei o loop usando while True: então enquanto for verdadeiro ele vai executar o código. Criei uma variável para armazenar o input do usuário. O valor do input dever ser entre 2 e 12. Depois eu mudo a posição do  eixo do servo usando o servo.ChangeDutyCycle() dentro do parênteses eu coloco o nome da minha variável. O micro servo utilizado foi um SG90. Depois de terminar o código é só salvar e executar o código com o python como root. O código final deverá ficar assim.



Vídeo de teste:


referencias:

https://pt.aliexpress.com/item/32640565321.html?spm=a2g0o.store_pc_groupList.8148356.11.eb8c1dd7XGgJd6

https://pt.aliexpress.com/item/1005002836315803.html?spm=a2g0o.store_pc_groupList.8148356.17.48ef1dd7C9esb0

https://github.com/Jeremie-C/OrangePi.GPIO

https://github.com/Jeremie-C/OrangePi.GPIO/commit/1ee758716799c57ec6179ab93d0bbfa8f25ac18d

Comentários

Postagens mais visitadas deste blog

Bem vindo ao micropython Brasil

Quais placas suportam o Micropython?