domingo, 8 de março de 2015

Conectando o sensor acelerômetro ADXL345 ao Raspberry Pi e demonstração em OpenGL

Raspberry Pi adxl345

Os acelerômetros já são bem conhecidos devido a sua inclusão em smartphones e tablets modernos. Eles medem o que chamam de aceleração própria( força g ).

Sua utilização é muito vasta: engenharia, biologia, indústria, aplicações médicas, navegação, transporte, eletrônicos voltados para o consumidor, etc.

Muitos projetos com Raspberry Pi tem utilizado acelerômetros para vários fins, como criação de tablets, quadcopters, etc.

 

O acelerômetro ADXL345


O ADXL345 da Analog Devices é um acelerômetro digital que mede a aceleração estática da gravidade como também a aceleração dinâmica quando há movimento ou choque. ADXL345 é o nome do chip, que fique claro, mas as PCBs com ele soldado geralmente já levam o nome do chip quando são comercializados.

Essa placa em questão veio da DealExtreme e pode ser encontrada nesse link.

ADXL345
Acelerômetro ADXL345

Em nosso primeiro vídeo explicativo, nossa convidada informa as especificações do módulo e o tipo de conexão que iremos utilizar. Além de ser nosso primeiro vídeo desse tipo, também estamos estreando nossa primeira versão de abertura



Especificações:

- 3 eixos
- Resolução de 13 bits
- Tensão de 3.3v ou 5v
- Comunicação I2C ou SPI

No caso desse placa, os pinos vem soltos, sendo necessário soldá-los. Existem outras opções com pinos já soldados e mesmo chip, apesar de um pouco mais caros.

Como iremos utilizar comunicação I2C, só iremos precisar soldar uma fileira de pinos que é referente ao lado das marcações de tensão 3.3v/5v.

Conexão elétrica do ADXL345 ao Raspberry Pi


O chip é alimentado com 3.3v, entretanto há um regulador de 3.3v na placa para alimentar com 5v, mas como não há necessidade de utilizarmos essa tensão, usaremos a tensão nativa do chip.

A conexão é simples:

- Pino 1 = 3.3v
- Pino 3 = SDA
- Pino 5 = SCL
- Pino 9 = GND

Raspberry Pi + ADXL345 connection
Raspberry Pi + ADXL345

Tome cuidado para não ligar acidentalmente qualquer uma das conexões em algum pino de 5V, pois poderá inutizar o chip de forma permanente.

 

 

Software para o ADXL345


Na parte de software utilizaremos a wiringPi para comunicação I2C. O código de exemplo é suficiente para capturarmos a informação dos eixos e modificarmos de acordo com nossos projetos.

Baixe a lib utilizando o GIT:

$ git clone git://git.drogon.net/wiringPi

Caso não tenha o git instalado:  

$ sudo apt-get install git-core

Entre no diretório da wiringPi e rode como root ou sudo:

$ ./build

Esse comando irá compilar e instalar automaticamente a biblioteca.

Baixe o código com:

$ git clone https://github.com/everpi/ADXL345.git

Carregue o driver I2C e compile o código.

$ gpio load i2c 
$ gcc adxl345.c -lwiringPi -o adxl345 

Ao executar, o valor será retornado repetidamente a cada 130ms.

$ /adxl345
x:0.000000
y:0.015625
z:10.015625


O fato do valor de Z permanecer, já de início, bem longe de zero, é devido a medição intermitente da gravidade no eixo Z, sendo 1 unidade de força G.

Apesar de não implementado no código, o ADXL345 possui também outras características possíveis de programação, como a de baixa energia, standby, interrupções, buffer FIFO, entre outras.

 

Demonstração de uso do acelerômetro ADXL345 com OpenGL


No vídeo abaixo, temos a demonstração de captura dos dados do acelerômetro pelo Raspberry Pi, que são enviados via rede para um desktop, que rodando um programa cliente captura os dados e move o cubo feito em OpenGL de acordo com a posição do ADXL345.



Conclusão


A comunicação e captura de dados do ADXL345 é relativamente fácil ao utilizar I2C. A dificuldade da utilização desses dados ficará por conta do projeto a ser implementado, no nosso caso utilizaremos o acelerômetro no quadcopter feito com Raspberry Pi.

Observação: Existe um driver para linux desse dispositivo, entretanto envolve recompilar o kernel: http://wiki.analog.com/resources/tools-software/linux-drivers/input-misc/adxl345#adxl345_on_raspberry_pi_-_a_worked_example

Referências:
http://en.wikipedia.org/wiki/Accelerometer
Datasheet: https://www.sparkfun.com/datasheets/Sensors/Accelerometer/ADXL345.pdf
Quick Start Guide: http://www.analog.com/media/en/technical-documentation/application-notes/AN-1077.pdf

Nenhum comentário:

Postar um comentário