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.
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 |
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