Selasa, 17 Maret 2015

Kamis, 20 November 2014

PROJECT ARDUINO UNO DENGAN SENSOR KOMPAS HMC5883L


Assalamualaikum...

Mari kita sama- sama belajar Arduino UNO dengan menggunakan Sensor Kompas HMC5883L. Tapi sebelumnya perkenalkan nama saya Syamsul Aribowo A.Md. Disini saya akan memberikan pengalaman saya membuat suatu project menggunakan Arduino UNO sebagai Kontrolernya dan HMC5883L sebagai sensornya.

Pertama- tama saya akan menjelaskan apa saja yang dibutuhkan untuk mempraktekan project ini:
1. Arduino UNO


2. Sensor HMC5883L
3. Protobord





4. Kabel Penghubung
    - Berupa kabel tunggal.

Kemudian letakan Arduino dan sensor  HMC5883L  tersebuat di Papan Protobord rangkailah sesuai pada gambar dibawah ini :
Dengan urutan :

- VCC sensor dihubungkan pin 5volt Arduino
- GND sensor dihubungkan pin GND Arduino
- SCI sensor dihubungkan pin Analog 5
- SDA sensor dihubungkan pin Anolog 4

Setelah itu bukalah software Arduino yang telah di update library dihttps://github.com/adafruit/Adafruit_Sensor/archive/master.zip dan https://github.com/adafruit/Adafruit_HMC5883_Unified/archive/master.zip  kemudian simpan di libraries tersebut di folder arduino tetapi sebelumnya ganti nama folder dengan nama sensor_master dan sensor_HMC5883L.


makan akan tampil gambar dibawah ini :



Program Arduino :
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_HMC5883_U.h>

/* Assign a unique ID to this sensor at the same time */
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);

void displaySensorDetails(void)
{
  sensor_t sensor;
  mag.getSensor(&sensor);
  Serial.println("------------------------------------");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" uT");
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" uT");
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" uT"); 
  Serial.println("------------------------------------");
  Serial.println("");
  delay(500);
}

void setup(void)
{
  Serial.begin(9600);
  Serial.println("HMC5883 Magnetometer Test"); Serial.println("");
 
  /* Initialise the sensor */
  if(!mag.begin())
  {
    /* There was a problem detecting the HMC5883 ... check your connections */
    Serial.println("Ooops, no HMC5883 detected ... Check your wiring!");
    while(1);
  }
 
  /* Display some basic information on this sensor */
  displaySensorDetails();
}

void loop(void)
{
  /* Get a new sensor event */
  sensors_event_t event;
  mag.getEvent(&event);

  /* Display the results (magnetic vector values are in micro-Tesla (uT)) */
  Serial.print("X: "); Serial.print(event.magnetic.x); Serial.print("  ");
  Serial.print("Y: "); Serial.print(event.magnetic.y); Serial.print("  ");
  Serial.print("Z: "); Serial.print(event.magnetic.z); Serial.print("  ");Serial.println("uT");

  // Hold the module so that Z is pointing 'up' and you can measure the heading with x&y
  // Calculate heading when the magnetometer is level, then correct for signs of axis.
  float heading = atan2(event.magnetic.y, event.magnetic.x);
 
  // Once you have your heading, you must then add your 'Declination Angle', which is the 'Error' of the magnetic field in your location.
  // Find yours here: http://www.magnetic-declination.com/
  // Mine is: -13* 2' W, which is ~13 Degrees, or (which we need) 0.22 radians
  // If you cannot find your Declination, comment out these two lines, your compass will be slightly off.
  float declinationAngle = 0.22;
  heading += declinationAngle;
 
  // Correct for when signs are reversed.
  if(heading < 0)
    heading += 2*PI;
   
  // Check for wrap due to addition of declination.
  if(heading > 2*PI)
    heading -= 2*PI;
  
  // Convert radians to degrees for readability.
  float headingDegrees = heading * 180/M_PI;
 
  Serial.print("Heading (degrees): "); Serial.println(headingDegrees);
 
  delay(500);
}
Setelah itu Compile dan Upload program tersebut sampai selesai dan buka serial monitor pada software arduino tersebut.

 

Sekian dan terima kasih... Tunggu project selanjutnya yach...