Hallo Fanbot.
Sedang ada project apa hari ini?
Sensor merupakan device yang dapat merubah suatu energi fisika, energi kimia, energi biologi, energi mekanik dan sebagainya menjadi energi listrik yang dapat terbaca oleh mikrokontroler. Beberapa sensor juga dapat berfungsi untuk membaca satuan listrik seperti ampere, tegangan, dan lainnya untuk memudahkan pembacaan pada mikrokontroler.
Sensor biasa digunakan pada robot untuk menjadikan robot lebih mengerti keadaan di sekitarnya. Misalnya ketika kita membutuhkan robot yang dapat menghindari tembok di depannya, kita dapat menggunakan sensor jarak. Contoh lainnya, ketika kita membutuhkan robot yang dapat membedakan warna, maka kita membutuhkan sensor warna.
Sensor juga dapat digunakan untuk melakukan monitoring dan sebagai controlling. Contohnya sebagai monitoring adalah ketika kita ingin memantau suhu pada suatu ruangan, maka kita memerlukan sensor suhu. Contoh untuk Controlling, misalnya ketika kita ingin membuat lampu yang menyala ketika gelap, maka kita dapat menggunakan sensor cahaya untuk mengendalikan lampu.
Sensor ada 2 jenis, yaitu sensor digital dan sensor analog. Sensor digital merupakan sensor yang dapat membaca suatu keadaan dengan hasil baca ya atau tidak. Sedangkan sensor analog adalah sensor yang dapat membaca keadaan dengan nilai. Jadi tidak hanya panas atau dingin. Tetapi lebih ke range 0 sampai 50 derajat C (misalnya).
Nah untuk teman-teman yang baru belajar mikrokontroler, Minbot punya beberapa rekomendasi sensor yang cocok untuk project kalian, baik menggunakan Arduino, NodeMCU atau yang lainnya.
Yuk kita simak apa aja sih sensor ini dan bagaimana cara mengaksesnya.
Belajar Elektronika, Arduino, dan IoT step by step dengan bantuan tangga belajar? Daftar sekarang dan dapatkan PROMO
Sensor LDR
Sensor LDR (Light Dependent Resistant) merupakan sensor yang digunakan untuk mendeteksi cahaya. Biasanya sensor ini digunakan untuk mengetahui kondisi gelap dan terang di suatu lingkungan tertentu. Berikut ini merupakan program yang dapat kita gunakan untuk membaca sensor LDR.
#define LDR A0 void setup() { Serial.begin(9600);//mengaktifkan fungsi serial pinMode(LDR, INPUT); } void loop() { int sensorValue = analogRead(LDR); //membaca nilai LDR pada pin analog 2 Serial.println(sensorValue);//mencetak nilai yang terbaca pada serial monitor delay(1);//delay untuk memperlambat pembacaan } |
baca juga: Rekomendasi Sensor Murah tapi Variatif untuk Belajar IoT Pemula
Sensor Ultrasonik
ultrasonik merupakan salah satu sensor yang dapat menentukan jarak antara sensor dengan objek di depannya. Sensor ini menggunakan sistem pantulan gelombang ultrasonik untuk menentukan jarak. Berikut ini program yang dapat anda gunakan.
#include <NewPing.h> #define TRIGGER_PIN 12 // pin untuk trigger #define ECHO_PIN 11 // pin untuk echo #define MAX_DISTANCE 200 // maksimal pembacaan NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); void setup() { Serial.begin(9600); // serial monitor 9600 } void loop() { delay(50); Serial.print("Jarak: "); Serial.print(sonar.ping_cm()); // nilai dari jarak Serial.println("cm"); } |
Sensor DHT11
Sensor DHT11 adalah sensor yang berguna. Dengan menggunakan sensor ini kita sudah bisa mengetahui 2 hal yaitu suhu dan kelembaban ruangan. Sensor ini sangat sering digunakan untuk otomatisasi suhu. Berikut ini program yang dapat anda gunakan.
#include "DHT.h" #define DHTPIN 2 // pin untuk DHT11 #define DHTTYPE DHT22 // Tipe DHT 11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); //mengaktifkan pembacaan DHT } void loop() { delay(2000); //Menampilkan kelembaban dan nilai temperatur Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); } |
Sensor Gas MQ2
Ada banyak sensor gas tipe MQ. Minbot hanya mengambil MQ2 yang paling banyak dibaca. Sensor ini dapat membaca H2, LPG, CH4, CO, alkohol, asap dan propana. Memiliki sensitivitas yang tinggi dan respon yang cepat. Sensor ini memiliki program yang paling kompleks dibandingkan dengan sensor di atas
/************************Hardware Related Macros************************************/ const int calibrationLed = 13; const int MQ_PIN=A0; int RL_VALUE=5; float RO_CLEAN_AIR_FACTOR=9.83; /***********************Software Related Macros************************************/ int CALIBARAION_SAMPLE_TIMES=50; int CALIBRATION_SAMPLE_INTERVAL=500; int READ_SAMPLE_INTERVAL=50; int READ_SAMPLE_TIMES=5; /**********************Application Related Macros**********************************/ #define GAS_LPG 0 #define GAS_CO 1 #define GAS_SMOKE 2 /*****************************Globals***********************************************/ float LPGCurve[3] = {2.3,0.21,-0.47}; float COCurve[3] = {2.3,0.72,-0.34}; float SmokeCurve[3] ={2.3,0.53,-0.44}; float Ro = 10; void setup() { Serial.begin(9600); pinMode(calibrationLed,OUTPUT); digitalWrite(calibrationLed,HIGH); Ro = MQCalibration(MQ_PIN); digitalWrite(calibrationLed,LOW); } void loop() { long iPPM_LPG = 0; //long iPPM_CO = 0; //long iPPM_Smoke = 0; iPPM_LPG = MQGetGasPercentage(MQRead(MQ_PIN)/Ro,GAS_LPG); //iPPM_CO = MQGetGasPercentage(MQRead(MQ_PIN)/Ro,GAS_CO); //iPPM_Smoke = MQGetGasPercentage(MQRead(MQ_PIN)/Ro,GAS_SMOKE); Serial.clear(); Serial.setCursor(0,0); Serial.print("Konsentrasi Gas"); Serial.setCursor(0,1); Serial.print("LPG: "); Serial.print(iPPM_LPG); Serial.print(" ppm"); /*Serial.setCursor(0,1); Serial.print("CO: "); Serial.print(iPPM_CO); Serial.print(" ppm"); Serial.setCursor(0,1); Serial.print("Smoke: "); Serial.print(iPPM_Smoke); Serial.print(" ppm");*/ delay(200); } float MQResistanceCalculation(int raw_adc) { return ( ((float)RL_VALUE*(1023-raw_adc)/raw_adc)); } float MQCalibration(int mq_pin) { int i; float val=0; for (i=0;i<CALIBARAION_SAMPLE_TIMES;i++) { val += MQResistanceCalculation(analogRead(mq_pin)); delay(CALIBRATION_SAMPLE_INTERVAL); } val = val/CALIBARAION_SAMPLE_TIMES; val = val/RO_CLEAN_AIR_FACTOR; return val; } float MQRead(int mq_pin) { int i; float rs=0; for (i=0;i<READ_SAMPLE_TIMES;i++) { rs += MQResistanceCalculation(analogRead(mq_pin)); delay(READ_SAMPLE_INTERVAL); } rs = rs/READ_SAMPLE_TIMES; return rs; } long MQGetGasPercentage(float rs_ro_ratio, int gas_id) { if ( gas_id == GAS_LPG ) { return MQGetPercentage(rs_ro_ratio,LPGCurve); } else if ( gas_id == GAS_CO ) { return MQGetPercentage(rs_ro_ratio,COCurve); } else if ( gas_id == GAS_SMOKE ) { return MQGetPercentage(rs_ro_ratio,SmokeCurve); } return 0; } long MQGetPercentage(float rs_ro_ratio, float *pcurve) { return (pow(10,( ((log(rs_ro_ratio)-pcurve[1])/pcurve[2]) + pcurve[0]))); } |
baca juga: Menampilkan Suhu dan Kelembaban dengan Sensor DHT11 di Webserver
Itu adalah 4 sensor yang dapat teman-teman gunakan untuk belajar sensor analog. Sensor analog akan sangat menambah variasi dari berjalannya suatu project dari pada sensor digital saja. Contohnya ketika kita menggunakan sensor LDR, tingkat cahaya yang ditampilkan juga dapat kita sesuaikan dengan kebutuhan. Begitu juga untuk sensor lainnya. Selain itu, kita juga dapat melakukan monitoring project kita dengan hasil yang lebih variatif. Kalian juga dapat mengembangkan sensor di atas dengan menambahkan aktuator atau indikator sebagai controlling.Bagi teman-teman yang baru belajar, yuk kita tingkatkan terus skill kita dengan melakukan praktik dari setiap pengetahuan yang kita terima.
Yuk mulai berlatih.
Mau belajar elektronika dasar? Arduino? atau Internet of Things? Ikuti kursus online Indobot Academy!