twitter


Mari kita sama- sama belajar Arduino UNO dengan menggunakan Sensor Kompas HMC5883L. 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.


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

 
SUMBER : http://samssonicrs.blogspot.co.id/2014/11/project-arduino-uno-dengan-sensor.html


Kebanyakan tutorial pemograman ultrasonic, menggunakan library untuk mempermudah pemrogramannya. Tapi yang ingin saya share kali ini, kita akan membuat program dari awal, sehingga kita tau seperti apa cara kerja dari sensor ini.

Dan seperti yang kita tau, Sensor Ultrasonic memiliki 2 sensor kiri dan kanan, seperti penampakan dibawah ini.

Yang kiri itu adalah Transmitter (pengirim sinyal suara) sebutannya adalah Trigger, dan yang kanan itu adalah Receiver (penerima sinyal suara) sebutannya adalah Echo.



So, cara kerja sensor ini adalah Trigger mengirimkan suara ultrasonic kedepan, dan jika didepan ada benda, suara tersebut akan memantul dan diterima oleh Echo. Nah dari pantulan suara (pulsa) ini, kita dapat mengetahui berapa jarak benda yang ada didepan sensor. Yah, gak jauh beda dari kelelawar lah ya, hehe

Ada banyak jenis-jenis sensor ultrasonic, dan yang akan saya gunakan adalah HC-SR04. Kenapa? Karena murah, hehe

Ok! Sebelumnya siapkan terlebih dahulu komponen yang dibutuhkan, yaitu:  

1x Arduino Uno
1x Breadboard
4x Kabel Jumper
1X HC-SR04 Ultrasonic Sensor

Kemudian rangkailah seperti penampakan dibawah ini...

Klik gambar untuk memperbesar.
Catatan:
  1. Pasang pin VCC HC-SR04 ke pin 5V Arduino
  2. Pasang pin Trig HC-SR04 ke pin 11 Arduino
  3. Pasang pin Echo HC-SR04 ke pin 12 Arduino
  4. Pasang pin GND HC-SR04 ke pin GND Arduino
Jika sudah, sekarang silahkan salin atau ketik ulang sketch program dibawah ini...

int trig= 11;            // membuat varibel trig yang di set ke-pin 3
int echo= 12;            // membuat variabel echo yang di set ke-pin 2
long durasi, jarak;     // membuat variabel durasi dan jarak

void setup() {
  pinMode(trig, OUTPUT);    // set pin trig menjadi OUTPUT
  pinMode(echo, INPUT);     // set pin echo menjadi INPUT
  Serial.begin(9600);       // digunakan untuk komunikasi Serial dengan komputer
}

void loop() {
 
  // program dibawah ini agar trigger memancarakan suara ultrasonic
  digitalWrite(trig, LOW);
  delayMicroseconds(8);
  digitalWrite(trig, HIGH);
  delayMicroseconds(8);
  digitalWrite(trig, LOW);
  delayMicroseconds(8);

  durasi= pulseIn(echo, HIGH);  // menerima suara ultrasonic
  jarak= (durasi/2) / 29.1;     // mengubah durasi menjadi jarak (cm)
  Serial.println(jarak);        // menampilkan jarak pada Serial Monitor

}

Kalau sudah Done Uploading, kamu bisa buka Serial Monitor untuk melihat nilai jarak dari sensornya, coba untuk mendekatkan dan menjauhkan tangan dari sensor, dan lihat angkanya.

SUMBER : http://www.kelasrobot.com/2016/06/program-arduino-sederhana-sensor-ultrasonic-tanpa-library.html