MAKER: Mechasolution_John
개요 (Introduction)
나침반이 항상 북쪽을 가리키는 이유는 지구가 자성을 가지고 있기 때문입니다. (즉 지구는 하나의 자석)
이러한 원리를 이용하여 방위를 측정할 수 있는 센서 HMC5883L 자기장센서를 사용해보도록 하겠습니다.
준비물 (Part list)
|
|
|
|
1. 아두이노 우노 |
2. 우노 케이블 |
3. 점퍼케이블 |
4. 자기장센서 |
수량: 1개 |
수량: 1개 |
수량: x개 |
수량: 1개 |
1. 아두이노 - 연결된 부품들을 제어하는 두뇌역할을 담당합니다. 크기와 기능에 따라 우노, 메가, 나노, 프로미니 등의 보드들이 존재하며
정품과 호환보드로도 분류해줄 수 있습니다.
2. 우노 통신, 전원 케이블 - 우노보드에 전원을 넣어주고 컴퓨터와 통신하여 코드를 업로드해줄 수 있습니다.
3. 점퍼 케이블 - 센서와 아두이노 보드를 연결합니다.
4. HMC5883L 자기장센서 - 자기장을 이용하여 방위를 측정할 수 있습니다.
구매는 위의 이미지를 클릭하거나 아래의 링크에서 가능합니다.
1. 메카솔루션 http://mechasolution.com
2. 레나에너지 http://storefarm.naver.com/lenaenergy
메이크쉐어 (MakeShare)
아두이노와 센서의 I2C 통신을 위한 회로입니다.
SDA는 아날로그 4번핀 SCL는 아날로그 5번핀에 연결해줘도됩니다.
아두이노 프로그래밍 코드 (Coding)
#include <Wire.h> //I2C Arduino Library
#define addr 0x1E //I2C Address for The HMC5883
void setup() {
Serial.begin(9600); Wire.begin();
Wire.beginTransmission(addr); //start talking Wire.write(0x02); // Set the Register Wire.write(0x00); // Tell the HMC5883 to Continuously Measure Wire.endTransmission(); }
void loop() {
int x, y, z; //triple axis data
//Tell the HMC what regist to begin writing data into Wire.beginTransmission(addr); Wire.write(0x03); //start with register 3. Wire.endTransmission();
//Read the data.. 2 bytes for each axis.. 6 total bytes Wire.requestFrom(addr, 6); if (6 <= Wire.available()) { x = Wire.read() << 8; //MSB x x |= Wire.read(); //LSB x z = Wire.read() << 8; //MSB z z |= Wire.read(); //LSB z y = Wire.read() << 8; //MSB y y |= Wire.read(); //LSB y }
// Show Values Serial.print("X Value: "); Serial.println(x); Serial.print("Y Value: "); Serial.println(y); Serial.print("Z Value: "); Serial.println(z); Serial.println();
delay(500); }
|
결과물 (Product)
최신댓글