HMC6352 bússola digital com Arduino DiecimilaO
HMC6352 é bastante conhecido e utilizado no mundo da
robótica, devido não só ao seu baixo custo, como a sua boa precisão, e fácil utilização.
Principalmente por utilizar o protocolo
I2C e poder ser posto ou retirado sem grandes alterações de software, e quase nenhumas de hardware, estes componentes são ideais para aplicações expansíveis onde se pretende ir aumentando ou diminuindo o número de módulos, quer sensores, quer actuadores.
Assim, hoje eu vou exemplificar como colocar este sensor em funcionamento, e fazer leituras do mesmo com 4 fios (2 de alimentação, 2 de bus
I2C) e um
Arduino Diecimila.
Primeiro passo, ligar GND e VCC do
arduino ao sensor, (podemos optar pelos 5V ou pelos 3,3V se quisermos meter num bus que já tem outros componentes a 3,3V, pois este sensor adapta-se a qualquer uma das tensões.) assim como o SCL e o SDA aos pins 5 e 4 analógicos do
arduino respectivamente.
Porque raio é que tenho que gastar o pin 4 e 5 do analógico se estes sinais são digitais, e o
Arduino Diecimila dispõe de mais pins digitais?
Pois bem, o
Atmega 168 de que é feito o
Arduino, só implementa o protocolo
I2C nestes pins, e a biblioteca wire.h que vamos utilizar não implementa
I2C por software, mas sim faz a bridge para a implementação do Atmega.
Com isto podemos ou não utilizar umas resistências de pull up pois é aconselhado neste protocolo, mas eu testei sem elas e funciona perfeitamente.
Assim com o exemplo de código anexado serão feitas leituras de segundo em segundo e mostradas na consola do
Arduino, podendo assim vocês sabendo como receber valores da bússola, utiliza-la para manipulação de software, ou orientação de um robot.
Atenção que esta deve de ser colocada o mais afastada possível de interferências magnéticas, tal como motores, e outras fontes de campos, a fim de se poder obter valores correctos.