Orange Pi One – Utilizando GPIOs com Shell Script

Orange Pi One

Atualmente, existe no mercado uma vasta quantidade de placas que suportam Linux embarcados. A Orange Pi One se destaca entre elas pelo seu custo benefício, oferecendo boas configurações a um baixo custo, em média $10,00 contra $25,00 a $30,00 da Raspberry Pi.

O principal fator que, provavelmente, desmotiva as pessoas a adquirir a Orange Pi One é sua documentação ou, melhor dizendo, sua falta de documentação, pois é extremamente difícil encontrar exemplos e dados técnicos acerca deste produto. Aliás, muitas vezes é preciso recorrer ao datasheet do processador para encontrar as informações necessárias.

De qualquer modo, como a ideia é apresentar um artigo sobre uma placa diferente da Raspberry Pi, nada melhor do que utilizar uma linguagem diferente de Python e Linguagem C, as quais foram abordadas em artigos anteriores.

Para quem tiver dificuldade de entender os exemplos que vão ser apresentados, recomendo a leitura Introdução ao Shell Script, no qual você vai encontrar os conceitos que serão abordados em exemplos.

Exemplos com Orange Pi One

No primeiro exemplo, temos o pino PA12 configurado como saída e nele temos um led vermelho conectado para ilustrar melhor o funcionamento do script. No código abaixo, foram removidos os comentários, porém, se houver interesse em acessá-los, é possível acessar o código completo no Github.

Demonstração do exemplo 1

Um detalhe importante, que merece ser ressaltado, é o funcionamento do export das GPIO. Como não temos um mapeamento interno no kernel delas, o export deve ser realizado como base no port e pino. Eis que, desta forma, teremos uma conta que deve ser realizada para descobrirmos o valor correto da GPIO.

xx corresponde à conta abaixo:

(Posição da letra no alfabeto – 1) * 32 + número do pino

Ex: PA12

( 1 – 1 ) * 32 + 12 = (0 * 32) + 12 = 12

Ex: PD14

( 4 – 1 ) * 32 + 12 = 3 * 32 + 14 = 110

Distribuição das GPIOs na barra de pinos. da Orange Pi One
Figura 1: Distribuição das GPIOs na barra de pinos da Orange Pi One.

Outro detalhe que precisamos prestar atenção é na corrente máxima de saída que o pino consegue fornecer. Neste caso, o datasheet nos informa que a corrente máxima é de 40 mA, página 607 Allwinner H3. Neste caso, foi utilizado um resistor de 330 Ohms em série com o Led, a fim de limitar sua corrente em 10 mA.

No segundo exemplo, teremos o pino PA06 configurado como saída e o PA11 como entrada. O funcionamento do código consiste em verificar via Poll se o botão (PA11) foi pressionado, e caso seja, o Led amarelo (PA06) será apagado.

Demonstração do exemplo 2

No código do exemplo 2, é necessário realizar duas ressalvas: a primeira é que no caso do pino de entrada (PA11) foi adicionado um resistor de pull-up externamente, com a finalidade de limitar a corrente de entrada.

A segunda, consiste no aspecto que a adição do comando sleep 0.5, que nos traz um atraso de, aproximadamente, 500 ms na leitura do pino. Entretanto, caso não seja inserido, o processador terá seu uso em 100%. Isso porque o código estando num loop infinito, as operações descritas no script serão realizas de forma ininterrupta, ocasionando o uso excessivo do processador.

Destaca-se que outra maneira de executar esse código será a análise da troca de estado do pino por interrupção. Nesse caso, não teríamos atraso na leitura e nem usaríamos em excesso o processador.

Recomendo o artigo Lendo um pino de I/O por interrupção no Linux, do Blog do Sergio Prado, para que você possa obter maiores informações de como é possível utilizar esse método de evento para validar se o botão foi pressionado.

Referências

http://linux-sunxi.org/GPIO
http://linux-sunxi.org/images/4/4b/Allwinner_H3_Datasheet_V1.2.pdf
http://bit.ly/2kmPLJ1
http://www.mhavila.com.br/topicos/unix/shscript.html
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Linux Embarcado, Software
Comentários:
Notificações
Notificar
guest
9 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Rodrigo Arnhold
Rodrigo Arnhold
30/05/2017 08:27

Que legal cara! Tu vai ver que a plaquinha apesar de bem simples é bem poderosa. E claro, me mantem informado. Se tiver interesse, não precisa nem divulgar só para mim, pode fazer um post aqui no Embarcados. Garanto que devem ter mais pessoal além de nós que tem interesse em criar uma distro para essa placa.

Ulysses Fonseca
Ulysses Fonseca
03/03/2017 10:15

Rodrigo Arnhold, você já fez alguma compilação com o yocto para a orange pi?

Rodrigo Arnhold
Rodrigo Arnhold
Reply to  Ulysses Fonseca
03/03/2017 10:34

Não fiz ainda, mas está na minha lista de prioridades.

Ulysses Fonseca
Ulysses Fonseca
Reply to  Rodrigo Arnhold
03/03/2017 11:18

Eu tô querendo comprar uma para brincar com o yocto, mas ainda to com receio, pq não achei ninguém utilizando com ela.

Rodrigo Arnhold
Rodrigo Arnhold
Reply to  Ulysses Fonseca
03/03/2017 11:44

É, esse é o detalhe ruim dessa placa, não tem muita documentação e exemplos de projetos na internet. Mas vou tentar agilizar os testes com o Yocto e se tiver sucesso posto aqui no Embarcados.

Rodrigo Arnhold
Rodrigo Arnhold
Reply to  Ulysses Fonseca
03/03/2017 11:42

É, esse é o detalhe ruim dessa placa, não tem muita documentação e exemplos de projetos na internet. Mas vou tentar agilizar os testes com o Yocto e se tiver sucesso posto aqui no Embarcados.

Ulysses Fonseca
Ulysses Fonseca
Reply to  Rodrigo Arnhold
29/05/2017 17:58

Rodrigo, chegou minha orange pi novinha direto da china kkk, vou começar a brincar com ela daqui uns dias, vou tentar compilar o yocto para ela, qualquer novidade te mando.

Rodrigo Arnhold
Rodrigo Arnhold
Reply to  Ulysses Fonseca
30/05/2017 08:28

Que legal cara! Tu vai ver que a plaquinha apesar de bem simples é bem poderosa. E claro, me mantem informado. Se tiver interesse, não precisa nem divulgar só para mim, pode fazer um post aqui no Embarcados. Garanto que devem ter mais pessoal além de nós que tem interesse em criar uma distro para essa placa.

Ulysses Fonseca
Ulysses Fonseca
Reply to  Rodrigo Arnhold
30/05/2017 10:06

Tenho só que esperar o semestre na faculdade, mas vou fazer sim.

Talvez você goste:

Séries

Menu

EVENTO ONLINE

Simplificando seus projetos de Internet das coisas com o iMCP HT32SX Sigfox

DATA: 18/05 às 15:00h