KUNJUNGI KAMI

KUNJUNGI KITA DI BUKALAPAK, TOKOPEDIA DAN SHOPEE
Tampilkan postingan dengan label ARDUINO. Tampilkan semua postingan
Tampilkan postingan dengan label ARDUINO. Tampilkan semua postingan

Antarmuka Sensor Akselerometer dan Giroskop MPU6050 dengan Arduino



Ketika kita masih anak-anak, giroskop di pameran sains selalu berhasil memukau kita karena bergerak dengan cara yang aneh dan bahkan tampaknya menantang gravitasi. Sifat unik mereka membuatnya penting dalam segala hal, mulai dari helikopter RC kecil hingga sistem navigasi canggih di pesawat ulang-alik antariksa."


Dalam beberapa tahun terakhir, insinyur-insinyur yang berbakat telah berhasil mengembangkan giroskop mikromekanik. Giroskop MEMS (sistem mikroelektromekanik) ini telah membuka jalan bagi serangkaian aplikasi inovatif yang benar-benar baru, termasuk pengenalan gerakan, permainan yang lebih menarik, realitas tambahan, pengambilan foto panorama, navigasi kendaraan, dan pemantauan kebugaran, hanya beberapa di antaranya.


Tak diragukan lagi, giroskop dan akselerometer masing-masing memiliki keistimewaannya sendiri. Namun, saat kita menggabungkannya, kita dapat memperoleh data yang luar biasa akurat tentang orientasi suatu objek. Inilah tempat bagi MPU6050 untuk masuk ke dalam gambar. MPU6050 mencakup giroskop dan akselerometer, memungkinkan kita untuk mengukur rotasi pada semua tiga sumbu, percepatan statis akibat gravitasi, dan percepatan dinamis akibat gerakan.


Sebelum kita menggunakan MPU6050 dalam proyek Arduino kita, ide yang bagus untuk memahami bagaimana akselerometer dan giroskop bekerja."


Bagaimana Cara Kerja Akselerometer?

Untuk memahami bagaimana akselerometer bekerja, bayangkanlah sebuah bola di dalam sebuah kubus 3D.



Ilustrasi Kerja Akselerometer - Keadaan Tanpa Berat

Anggaplah kubus tersebut berada di luar angkasa, di mana segala sesuatu tidak memiliki berat, bola tersebut akan mengapung di tengah kubus.


Sekarang, anggaplah setiap dinding mewakili suatu sumbu tertentu.


Jika tiba-tiba kami menggerakkan kotak ke kiri dengan percepatan 1g (satu G-force 1g setara dengan percepatan gravitasi 9.8 m/s2), bola tersebut pasti akan menghantam dinding X. Jika kami mengukur gaya yang dilakukan bola pada dinding X, kita dapat memperoleh nilai keluaran sebesar 1g sepanjang sumbu X."



Marilah kita lihat apa yang terjadi saat kita meletakkan kubus tersebut di Bumi. Bola tersebut akan jatuh pada dinding Z, memberikan gaya sebesar 1g seperti yang ditunjukkan dalam diagram di bawah ini:




Ilustrasi Kerja Akselerometer - Gaya Gravitasi

Dalam kasus ini, kotak tidak bergerak, tetapi kita masih mendapatkan pembacaan 1g pada sumbu Z. Ini karena gravitasi (yang sebenarnya adalah bentuk dari percepatan) menarik bola ke bawah dengan gaya sebesar 1g.


Meskipun model ini tidak menggambarkan secara tepat bagaimana sensor akselerometer dunia nyata dibangun, seringkali model ini bermanfaat untuk memahami mengapa sinyal keluaran dari akselerometer biasanya diukur dalam nilai ±g, atau mengapa akselerometer membaca 1g pada sumbu z saat diam, atau apa pembacaan akselerometer yang bisa Anda harapkan pada orientasi yang berbeda.


Di dunia nyata, akselerometer didasarkan pada Teknologi Fabrikasi Mikro-Elektro-Mekanik (MEMS). Jadi, mari kita cari tahu bagaimana akselerometer MEMS bekerja."


Bagaimana Cara Kerja Akselerometer MEMS?

Akselerometer MEMS (Sistem Mikro-Elektro-Mekanik) adalah struktur mikro-mekanik yang dibangun di atas wafer silikon.


Struktur ini digantungkan oleh pegas polisilikon. Ini memungkinkan struktur tersebut membengkok saat diakselerasi sepanjang sumbu X, Y, dan/atau Z.

Akibat dari pembengkokan ini, kapasitansinya antara plat tetap dan plat yang terhubung ke struktur yang digantung berubah. Perubahan kapasitansinya ini sebanding dengan percepatan sepanjang sumbu tersebut.

Sensor ini memproses perubahan kapasitansi ini dan mengonversikannya menjadi tegangan keluaran analog.


Bagaimana Cara Kerja Giroskop?

Sementara akselerometer mengukur percepatan linear, giroskop mengukur rotasi sudut. Untuk mencapai hal ini, mereka mengukur gaya yang dihasilkan oleh Efek Coriolis.


Efek Coriolis

Efek Coriolis menyatakan bahwa saat sebuah massa (m) bergerak dalam arah tertentu dengan kecepatan (v) dan laju sudut eksternal (Ω) diterapkan (panah Merah), Efek Coriolis menghasilkan gaya (panah Kuning) yang menyebabkan massa tersebut bergerak secara tegak lurus. Nilai perpindahannya ini berhubungan langsung dengan laju sudut yang diterapkan."



Pertimbangkan dua massa yang berayun ke arah berlawanan pada frekuensi konstan. Saat laju sudut diterapkan, efek Coriolis yang dihasilkan oleh setiap massa bergerak ke arah berlawanan, mengakibatkan perubahan proporsional dalam kapasitansinya antara massa-massa tersebut. Dengan mengukur perubahan kapasitansi ini, laju sudut dapat dihitung.





Bagaimana Cara Kerja Giroskop MEMS?

Sensor MEMS terdiri dari massa bukti (terdiri dari empat bagian M1, M2, M3, dan M4) yang dipertahankan dalam gerakan osilasi berkelanjutan sehingga dapat merespons efek coriolis. Mereka bergerak secara bersamaan ke dalam dan keluar dalam bidang horizontal.



Ketika kita mulai memutar struktur tersebut, gaya Coriolis yang bekerja pada massa bukti yang bergerak menyebabkan getaran berubah dari horizontal menjadi vertikal.


Terdapat tiga mode tergantung pada sumbu di sepanjang mana rotasi sudut diterapkan.


Mode Roll:

Saat laju sudut diterapkan sepanjang sumbu X, M1 dan M3 akan bergerak naik dan turun keluar dari bidang karena efek coriolis. Ini menyebabkan perubahan dalam sudut roll, oleh karena itu dinamakan Mode Roll."



Mode Pitch:

Saat laju sudut diterapkan sepanjang sumbu Y, M2 dan M4 akan bergerak naik dan turun keluar dari bidang. Ini menyebabkan perubahan dalam sudut pitch, oleh karena itu dinamakan Mode Pitch.



Mode Yaw:

Saat laju sudut diterapkan sepanjang sumbu Z, M2 dan M4 akan bergerak secara horizontal ke arah berlawanan. Ini menyebabkan perubahan dalam sudut yaw, oleh karena itu dinamakan Mode Yaw.




Setiap kali efek coriolis terdeteksi, gerakan konstan dari massa penggerak akan menyebabkan perubahan dalam kapasitansinya (∆C) yang dideteksi oleh struktur pendeteksi dan diubah menjadi sinyal tegangan.


Untuk informasi Anda, inilah tampilan mati struktur MEMS dari giroskop digital 3 sumbu. Terima kasih kepada Adam McCombs atas berbagi gambar ini dari giroskop MEMS L3GD20HTR yang terdekaps.



giroskop mems l3gd20htr yang terdekaps

Kredit: Adam McCombs

Ikhtisar Perangkat Modul MPU6050

Di inti modul ini terdapat chip MotionTracking 6 sumbu yang hemat daya dan biaya rendah - MPU6050 - yang mengintegrasikan giroskop 3 sumbu, akselerometer 3 sumbu, dan Prosesor Gerakan Digital (DMP) ke dalam kemasan kecil berukuran 4mm x 4mm.


Chip ini dapat mengukur momentum sudut atau rotasi sepanjang semua tiga sumbu, percepatan statis akibat gravitasi, dan percepatan dinamis akibat gerakan, guncangan, atau getaran."



"Modul ini dilengkapi dengan regulator LD3985 3.3V di dalamnya, sehingga Anda dapat menggunakannya dengan aman dengan mikrokontroler logika 5V seperti Arduino.


MPU6050 mengonsumsi kurang dari 3.6mA selama pengukuran dan hanya 5μA saat tidak digunakan. Karena konsumsi dayanya yang rendah, modul ini dapat digunakan dalam perangkat berdaya baterai.


Selain itu, modul ini memiliki lampu LED Daya yang menyala saat modul dinyalakan.


Mengukur Akselerasi

MPU6050 memiliki akselerometer terintegrasi yang dapat mengukur akselerasi dalam empat rentang penuh yang dapat diprogram, yaitu ±2g, ±4g, ±8g, dan ±16g.



MPU6050 dilengkapi dengan tiga konverter analog-ke-digital 16-bit yang secara bersamaan mengambil sampel tiga sumbu gerakan (sepanjang sumbu X, Y, dan Z).


Mengukur Rotasi

MPU6050 memiliki giroskop terintegrasi yang dapat mengukur rotasi sudut dalam empat rentang penuh yang dapat diprogram, yaitu ±250°/s, ±500°/s, ±1000°/s, dan ±2000°/s.



MPU6050 dilengkapi dengan tiga konverter analog-ke-digital 16-bit tambahan yang secara bersamaan mengambil sampel tiga sumbu rotasi (sepanjang sumbu X, Y, dan Z). Tingkat pengambilan sampel dapat diatur dari 3.9 hingga 8000 sampel per detik.


Mengukur Suhu

MPU6050 menyertakan sensor suhu terintegrasi yang dapat mengukur suhu dari -40 hingga 85°C dengan akurasi ±1°C.


Perhatikan bahwa pengukuran suhu ini adalah suhu inti dari bahan silikon itu sendiri, bukan suhu lingkungan. Pengukuran ini biasanya digunakan untuk mengkompensasi kalibrasi akselerometer dan giroskop atau mendeteksi perubahan suhu daripada mengukur suhu mutlak.


Antarmuka I2C

Modul berkomunikasi dengan Arduino melalui antarmuka I2C. Ini mendukung dua alamat I2C yang berbeda: 0x68HEX dan 0x69HEX. Ini memungkinkan dua MPU6050 dapat digunakan pada bus yang sama atau menghindari konflik alamat dengan perangkat lain pada bus.



Pin ADO menentukan alamat I2C dari modul. Pin ini ditarik ke bawah dengan resistor 4.7K. Oleh karena itu, saat Anda tidak menghubungkan pin ADO, alamat I2C default adalah 0x68HEX; saat Anda menghubungkannya ke 3.3V, garis tersebut ditarik tinggi, dan alamat I2C menjadi 0x69HEX.


Menambahkan Sensor Eksternal

Anda dapat meningkatkan akurasi modul MPU6050 lebih jauh dengan menghubungkan sensor eksternal kepadanya. Sensor eksternal ini dapat dihubungkan ke MPU6050 melalui bus I2C kedua yang sepenuhnya independen (XDA dan XCL).



Koneksi eksternal ini biasanya digunakan untuk menghubungkan magnetometer, yang dapat mengukur medan magnet sepanjang tiga sumbu. MPU6050 memiliki enam Derajat Kebebasan (DOF), tiga untuk akselerometer dan tiga untuk giroskop yang digabungkan. Penambahan magnetometer meningkatkan derajat kebebasan sensor dari 6 menjadi 9 DOF."


Spesifikasi Teknis

Berikut adalah spesifikasi:

Parameter Value
Operating Voltage 5V (typical)
Accelerometer Range ±2g, ±4g, ±8g, ±16g
Gyroscope Range ±250°/s, ±500°/s, ±1000°/s, ±2000°/s
Temperature Range -40 to +85°C
Absolute Maximum Acceleration Up to 10,000g


Untuk informasi lebih lanjut, silakan lihat lembar data di bawah ini.

Lembar Data MPU6050


Penyusunan Pin Modul MPU6050

Penyusunan pin modul MPU6050 adalah sebagai berikut:




VCC memberikan daya ke modul.


GND adalah pin tanah.


SCL adalah pin clock serial untuk antarmuka I2C.



SDA adalah pin data serial untuk antarmuka I2C.


XDA adalah jalur data I2C eksternal. Bus I2C eksternal digunakan untuk menghubungkan sensor eksternal, seperti magnetometer.


XCL adalah jalur clock I2C eksternal.


AD0 memungkinkan Anda mengubah alamat I2C modul MPU6050. Ini dapat digunakan untuk menghindari konflik antara modul dan perangkat I2C lainnya atau untuk menghubungkan dua MPU6050 ke bus I2C yang sama. Saat Anda tidak menghubungkan pin ADO, alamat I2C default adalah 0x68HEX; saat Anda menghubungkannya ke 3.3V, alamat I2C berubah menjadi 0x69HEX.


INT adalah pin Keluaran Interupsi. MPU6050 dapat diprogram untuk menghasilkan interupsi saat mendeteksi gerakan, gesekan, zooming, gulir, deteksi ketukan, dan deteksi guncangan.


Menghubungkan Modul MPU6050 ke Arduino

Mari sambungkan modul MPU6050 ke Arduino.

Hubungannya sederhana. Mulailah dengan menghubungkan pin VCC ke output 5V Arduino dan pin GND ke ground.

Sekarang kita memiliki pin yang digunakan untuk komunikasi I2C. Perhatikan bahwa setiap papan Arduino memiliki pin I2C yang berbeda yang harus dihubungkan dengan benar. Pada papan Arduino dengan tata letak R3, SDA (garis data) dan SCL (garis clock) berada pada header pin dekat pin AREF. Mereka juga disebut A5 (SCL) dan A4 (SDA).


Lihat tabel di bawah ini untuk referensi cepat.

Board SCL Pin SDA Pin
Arduino Uno A5 A4
Arduino Nano A5 A4
Arduino Mega 21 20
Leonardo/Micro 3 2

Diagram di bawah ini menunjukkan cara menghubungkan semuanya.




Pemasangan Library

Menyiapkan modul MPU6050 untuk mulai mengambil data mentah perangkat cukup sederhana. Namun, memanipulasi data menjadi sesuatu yang bermakna, pada umumnya lebih sulit, tetapi ada beberapa library yang dapat digunakan.


Untuk memasang library, buka menu Sketch > Include Library > Manage Libraries… Tunggu Manajer Library untuk mengunduh indeks library dan memperbarui daftar library yang terpasang.


Saring pencarian dengan memasukkan 'mpu6050'. Cari library '

' oleh Adafruit. Klik pada entri tersebut dan kemudian pilih Install.



Library Adafruit MPU6050 menggunakan Library Pengemudi Sensor Unified dan Library Bus IO Adafruit secara internal. Jadi, cari library pengemudi sensor unified dan BusIO dalam manajer library dan pasang juga.



Contoh Kode Arduino

Berikut adalah program sederhana yang membaca akselerasi linear, rotasi sudut, dan suhu dari modul MPU6050 dan mencetaknya di monitor serial."

        
include 
#include 
#include 

Adafruit_MPU6050 mpu;

void setup(void) {
	Serial.begin(115200);

	// Try to initialize!
	if (!mpu.begin()) {
		Serial.println("Failed to find MPU6050 chip");
		while (1) {
		  delay(10);
		}
	}
	Serial.println("MPU6050 Found!");

	// set accelerometer range to +-8G
	mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

	// set gyro range to +- 500 deg/s
	mpu.setGyroRange(MPU6050_RANGE_500_DEG);

	// set filter bandwidth to 21 Hz
	mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

	delay(100);
}

void loop() {
	/* Get new sensor events with the readings */
	sensors_event_t a, g, temp;
	mpu.getEvent(&a, &g, &temp);

	/* Print out the values */
	Serial.print("Acceleration X: ");
	Serial.print(a.acceleration.x);
	Serial.print(", Y: ");
	Serial.print(a.acceleration.y);
	Serial.print(", Z: ");
	Serial.print(a.acceleration.z);
	Serial.println(" m/s^2");

	Serial.print("Rotation X: ");
	Serial.print(g.gyro.x);
	Serial.print(", Y: ");
	Serial.print(g.gyro.y);
	Serial.print(", Z: ");
	Serial.print(g.gyro.z);
	Serial.println(" rad/s");

	Serial.print("Temperature: ");
	Serial.print(temp.temperature);
	Serial.println(" degC");

	Serial.println("");
	delay(500);
}
        
    


Pastikan Anda mengatur kecepatan baud menjadi "115200" di monitor port serial. Karena MPU6050 mengembalikan sejumlah besar data, kecepatan yang lebih tinggi ini diperlukan untuk menampilkannya.


Akan ada banyak informasi yang ditampilkan, seperti akselerasi linear, rotasi sudut, dan suhu. Gerakkan sensor Anda dan amati bagaimana data berubah.


Penjelasan Kode:

Pada awal sketsa, semua library yang diperlukan disertakan. Seperti yang telah disebutkan sebelumnya, library Adafruit_MPU6050 mengimplementasikan fungsi perangkat keras dari MPU6050, sementara library Adafruit_Sensor mengimplementasikan lapisan abstraksi sensor bersatu. Wire.h, yang memungkinkan kita berkomunikasi dengan perangkat I2C, juga disertakan.":


#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Selanjutnya, sebuah instance dari kelas Adafruit_MPU6050 dibuat untuk mengakses metode-metode yang terkait.


Adafruit_MPU6050 mpu;

Di bagian setup kode, kami pertama-tama menginisialisasi komunikasi serial dengan PC dan memanggil fungsi begin(). Fungsi begin() menginisialisasi antarmuka I2C dan memverifikasi bahwa ID chip sudah benar. Kemudian, itu melakukan reset lunak pada chip dan menunggu sensor untuk dikalibrasi setelah bangun.


Serial.begin(115200);

// Try to initialize!
if (!mpu.begin()) {
	Serial.println("Failed to find MPU6050 chip");
	while (1) {
	  delay(10);
	}
}


Kemudian tiga fungsi berikut digunakan untuk mengonfigurasi rentang pengukuran dari MPU6050.



setAccelerometerRange(mpu6050_accel_range_t)


Fungsi setAccelerometerRange() mengatur rentang pengukuran akselerometer. Fungsi ini menerima nilai berikut:



MPU6050_RANGE_2_G – untuk rentang ±2g (default)

MPU6050_RANGE_4_G – untuk rentang ±4g

MPU6050_RANGE_8_G – untuk rentang ±8g

MPU6050_RANGE_16_G – untuk rentang ±16g

Perhatikan bahwa semakin kecil rentangnya, semakin sensitif bacaan akselerometer akan menjadi.


setGyroRange(mpu6050_gyro_range_t)


Fungsi setGyroRange() mengatur rentang pengukuran giroskop. Fungsi ini menerima nilai berikut:


  • MPU6050_RANGE_250_DEG – untuk rentang 250 derajat-per-detik (default)
  • MPU6050_RANGE_500_DEG – untuk rentang 500 derajat-per-detik
  • MPU6050_RANGE_1000_DEG – untuk rentang 1000 derajat-per-detik
  • MPU6050_RANGE_2000_DEG – untuk rentang 2000 derajat-per-detik

Ingat bahwa rentang derajat-per-detik yang lebih kecil menghasilkan keluaran yang lebih sensitif.


setFilterBandwidth(mpu6050_bandwidth_t)


Fungsi setFilterBandwidth() mengatur lebar pita Digital Low-Pass Filter. Fungsi ini menerima nilai berikut:


  • MPU6050_BAND_260_HZ – untuk lebar pita 260 Hz (Menurut dokumentasi, ini menonaktifkan filter)
  • MPU6050_BAND_184_HZ – untuk lebar pita 184 Hz
  • MPU6050_BAND_94_HZ – untuk lebar pita 94 Hz
  • MPU6050_BAND_44_HZ – untuk lebar pita 44 Hz
  • MPU6050_BAND_21_HZ – untuk lebar pita 21 Hz
  • MPU6050_BAND_10_HZ – untuk lebar pita 10 Hz
  • MPU6050_BAND_5_HZ – untuk lebar pita 5 Hz

Pemilihan lebar pita memungkinkan Anda mengubah frekuensi potong filter low-pass, yang memungkinkan Anda meratakan sinyal dengan menghilangkan noise frekuensi tinggi.


Dalam contoh ini, kami mengatur rentang akselerometer menjadi ±8G, rentang giroskop menjadi ±500°/s, dan lebar pita filter menjadi 21 Hz."


mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

Pada bagian loop dari kode, kami membuat tiga objek dengan tipe sensors_event_t untuk menyimpan hasil kami. sensors_event_t adalah jenis data yang didefinisikan oleh pengguna (struktur dalam bahasa C) yang menyimpan berbagai data sensor seperti akselerasi, giroskop, suhu, cahaya, tekanan, dan banyak lagi. Informasi lebih lanjut tersedia di github.


sensors_event_t a, g, temp

Fungsi getEvent() kemudian dipanggil. Fungsi ini membaca set nilai baru dari sensor (sebuah "event" sensor), mengkonversi mereka menjadi unit SI dan skala yang benar, dan kemudian mengassign hasilnya ke objek mpu kami.


mpu.getEvent(&a, &g, &temp);

Terakhir, nilai-nilai tersebut ditampilkan di monitor serial.


Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");

Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");

Serial.print("Temperature: ");
Serial.print(temp.temperature);
Serial.println(" degC");

Hanya melihat data mentah dari MPU6050 tidak akan membantu. Gunakan Serial Plotter jika Anda benar-benar ingin melihat bagaimana MPU6050 Anda bereaksi saat Anda menggerakkannya.

IDE Arduino menyertakan alat yang berguna yang disebut serial plotter. Ini dapat memberikan visualisasi data secara real-time. Ini sangat berguna untuk memvisualisasikan data, debugging kode, dan memvisualisasikan variabel sebagai gelombang.

Mari coba dengan kode yang diperbarui di bawah ini. Kompilasikan dan unggah program di bawah ini, lalu buka Tools > Serial Plotter (Ctrl+Shift+L). Kode ini menggunakan kecepatan baud 115200; pastikan serial plotter juga diatur ke 115200.


#include 
#include 
#include 

Adafruit_MPU6050 mpu;

void setup(void) {
	Serial.begin(115200);

	// Try to initialize!
	if (!mpu.begin()) {
		Serial.println("Failed to find MPU6050 chip");
		while (1) {
		  delay(10);
		}
	}

	// set accelerometer range to +-8G
	mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

	// set gyro range to +- 500 deg/s
	mpu.setGyroRange(MPU6050_RANGE_500_DEG);

	// set filter bandwidth to 21 Hz
	mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

	delay(100);
}

void loop() {
	/* Get new sensor events with the readings */
	sensors_event_t a, g, temp;
	mpu.getEvent(&a, &g, &temp);

	/* Print out the values */
	Serial.print(a.acceleration.x);
	Serial.print(",");
	Serial.print(a.acceleration.y);
	Serial.print(",");
	Serial.print(a.acceleration.z);
	Serial.print(", ");
	Serial.print(g.gyro.x);
	Serial.print(",");
	Serial.print(g.gyro.y);
	Serial.print(",");
	Serial.print(g.gyro.z);
	Serial.println("");

	delay(10);
}



Ketika Anda menggerakkan modul naik dan turun pada sumbu Z, Anda seharusnya melihat sesuatu seperti ini.



Grafik Output Plotter Arduino MPU6050

Penjelasan Kode:

Anda akan melihat bahwa sebagian besar sketsa ini identik dengan yang sebelumnya, kecuali:


  • Pembacaan suhu tidak dicetak.
  • Semua pembacaan lain dicetak sedemikian rupa sehingga mereka membentuk daftar nilai yang dipisahkan oleh koma.
  • Pembacaan diambil setiap 10 milidetik."

Antarmuka Sensor Kelembaban Tanah Kapasitif dengan Arduino



Menjaga tanaman hias tetap hidup bisa menjadi tugas yang sulit, bukan? Dan seringkali, ini hanya tentang mengingat untuk menyiraminya. Untungnya, sensor kelembaban tanah dapat membantu kita mengingat untuk menyiram tanaman kita dan membantu mereka hidup lebih lama.


Namun, sebagian besar sensor kelembaban tanah yang murah adalah tipe resistif, di mana terdapat dua ujung dan sensor mengukur kadar air dalam tanah berdasarkan konduktivitas di antara keduanya. Mereka bekerja dengan baik pada awalnya, tetapi seiring waktu, mereka mulai berkarat, bahkan jika mereka dilapisi emas! Karat ini mengganggu pembacaan, sehingga Anda harus terus menyesuaikan kode Anda untuk mendapatkannya dengan benar. Selain itu, mereka tidak berfungsi dengan baik dalam tanah yang longgar.


Untungnya, ada pilihan yang lebih baik: Sensor Kelembaban Tanah Kapasitif. Sensor-sensor ini beroperasi berdasarkan pengukuran kapasitif, yang menawarkan keunggulan signifikan dibandingkan pengukuran resistif. Sensor-sensor ini memiliki satu probe saja, tanpa logam terbuka yang berkarat, dan tidak merusak tanaman Anda dengan memasukkan listrik ke dalam tanah.


Dalam tutorial ini, Anda akan belajar bagaimana menggunakan sensor kelembaban tanah kapasitif secara efektif dengan Arduino. Pada akhir tutorial ini, Anda akan memiliki pengetahuan dan keterampilan untuk menjaga tanaman Anda tetap berkembang dengan baik, tanpa perlu khawatir tentang penyiraman berlebih atau kekurangan air. Mari kita mulai!


Gambaran Perangkat Keras

Sensor Kelembaban Tanah Kapasitif sangat menakjubkan. Cukup masukkan mereka ke dalam tanah dan mereka akan mengeluarkan sinyal analog yang sebanding dengan seberapa basah tanah tersebut.


Sensor-sensor ini menggunakan IC timer 555 dan beroperasi dengan mengukur seberapa cepat (atau lambat) sebuah kapasitor mengisi daya melalui sebuah resistor, tetapi pada sensor-sensor ini kapasitor bukanlah komponen fisik, melainkan terbentuk oleh dua jalur PCB yang saling berdekatan. Kapasitansinya, dan oleh karena itu laju pengisian dayanya, berubah sebagai respons terhadap seberapa banyak air di sekitarnya.



Sensor ini dilengkapi dengan regulator tegangan 3.3V di dalamnya, sehingga cocok digunakan untuk MCUs dengan tegangan 3.3V dan 5V. Selain itu, sensor ini mengonsumsi kurang dari 5mA arus listrik.


Perlu diperhatikan bahwa sensor ini hanya dapat memberikan pengukuran kualitatif terhadap kelembaban tanah. Saat tanah semakin basah, nilai keluaran menurun, dan saat tanah semakin kering, nilai keluaran meningkat. Saat ditenagakan dengan tegangan 5V, nilai keluarannya berkisar antara sekitar 1.5V (untuk tanah basah) hingga 3V (untuk tanah kering).



Namun, nilai keluaran akhir dipengaruhi oleh kedalaman penyisipan probe dan seberapa padat tanah yang mengelilinginya.


Spesifikasi Teknis

Berikut adalah spesifikasinya:

Parameter Nilai
Tegangan Operasi 3.3 hingga 5.5V
Arus Operasi < 5mA
Tegangan Keluaran pada 5V 1.5V hingga 3V (perkiraan)
Ukuran Probe Sensor P x L (PCB)  98 x 23mm
Panjang Kabel 20cm


Bagaimana Cara Kerja Sensor Kelembaban Tanah Kapasitif?

Untuk memahami bagaimana sensor kelembaban tanah kapasitif bekerja, Anda perlu memahami perilaku kapasitor dalam suatu rangkaian RC.



Dalam rangkaian RC sederhana seperti ini, saat tegangan positif diterapkan pada Input, kapasitor (C) mulai mengisi daya melalui resistor (R). Saat ini, tegangan di sepanjang kapasitor berubah. Seiring waktu, tegangan kapasitor naik hingga sama dengan tegangan masukan. Di sini, Anda dapat melihat grafik yang memplot tegangan terhadap waktu untuk kapasitor yang mengisi daya.



Waktu yang diperlukan untuk mengisi sepenuhnya kapasitor tergantung pada nilai resistor dan kapasitor tersebut. Jika Anda mempertahankan nilai R tetap dan mencoba dua nilai kapasitansi yang berbeda untuk C, Anda akan mengamati bahwa kapasitor dengan kapasitansi yang lebih besar memerlukan lebih banyak waktu untuk mengisi,



kurva pengisian kapasitor dengan nilai kapasitansi besar



sedangkan kapasitor dengan kapasitansi yang lebih kecil memerlukan waktu lebih sedikit untuk mengisi.


kurva pengisian kapasitor dengan nilai kapasitansi kecil

Sekarang kembali ke sensor kita, kapasitor C pada papan sensor bukanlah komponen sebenarnya, melainkan hanya dua jejak tembaga yang bertindak seperti kapasitor. Efek ini, dikenal sebagai Kapasitansi Parasitik, sering terjadi dalam rangkaian dan biasanya diabaikan. Namun, dengan sengaja membuat dua jejak tembaga ini lebih besar, kita dapat menggunakan efek ini untuk keuntungan kita.


Kapasitansi kapasitor parasitik ini ditentukan oleh bentuk jejak dan lingkungan di sekitarnya (secara teknis dikenal sebagai konstanta dielektrik). Saat sensor dimasukkan ke dalam tanah, lingkungan di sekitar kapasitor berubah tergantung pada apakah tanah menjadi lebih basah atau lebih kering. Ini mengubah kapasitansinya, dan akibatnya, memengaruhi waktu pengisiannya.


Ketika tanah kering, kapasitor memiliki kapasitansi yang lebih kecil dan karenanya mengisi dengan cepat. Sebaliknya, ketika tanah basah, kapasitor memiliki kapasitansi yang lebih besar dan karenanya mengisi dengan lebih lambat.


Untuk lebih memahami bagaimana ini diimplementasikan dalam sensor, mari kita periksa diagram rangkaian.



Sensor ini menggunakan rangkaian 555 yang dikonfigurasi sebagai osilator astabil. Gelombang persegi yang dihasilkan oleh rangkaian 555 diumpankan ke dalam integrator RC, di mana kapasitor terbentuk oleh probe tanah. Sinyal dari integrator lebih berupa gelombang segitiga, yang dimasukkan ke dalam penyearah dan kapasitor penyaring untuk menghasilkan keluaran DC.


Keluaran ini sebanding dengan kandungan kelembaban tanah. Jadi jika tanah kering, kapasitor mengisi dengan cepat, mengakibatkan amplitudo gelombang segitiga yang lebih besar dan selanjutnya menghasilkan tegangan keluaran yang lebih tinggi. Sebaliknya, saat tanah basah, kapasitor mengisi lebih lambat, mengakibatkan amplitudo gelombang segitiga yang lebih kecil, yang pada gilirannya menghasilkan tegangan keluaran yang lebih rendah.


Pinout Sensor Kelembaban Tanah Kapasitif

Sensor kelembaban tanah kapasitif dilengkapi dengan konektor tipe 3-pin JST PH2.0. Salah satu ujung kabel yang disediakan dicolokkan ke konektor ini, sementara ujung lainnya adalah konektor perempuan 3-pin gaya Dupont standar. Kabel ini memiliki kode warna sehingga Anda dapat dengan mudah mengidentifikasi setiap kabel: hitam mewakili ground, merah mewakili VCC, dan kuning mewakili AOUT.



Diagram pin sensor kelembaban tanah kapasitif

VCC adalah pin pasokan daya. Disarankan agar sensor diberi daya dari 3.3V hingga 5V. Harap diingat bahwa keluaran analog akan bervariasi tergantung pada tegangan yang diberikan ke sensor.


GND adalah pin ground.


Pin AOUT memberikan keluaran tegangan analog yang sebanding dengan jumlah kelembaban dalam tanah. Keluaran ini dapat dibaca menggunakan input analog pada mikrokontroler Anda. Ketika tingkat kelembaban meningkat, tegangan keluaran mengurang, dan sebaliknya.


Petunjuk Penggunaan

Ketika menggunakan sensor ini, perhatikan hal-hal berikut:


  • Disarankan agar probe tidak ditempatkan pada kedalaman yang melewati batas garis pada sensor.
  • Komponen-komponen pada papan ini TIDAK tahan air, jadi pastikan mereka tidak bersentuhan dengan air atau percikan air. Untuk perlindungan tambahan, pertimbangkan untuk menggunakan selongsong panas yang lebar di sekitar bagian atas papan.
  • Perhatikan bahwa tepi PCB dapat menyerap kelembaban seiring waktu, mempersingkat masa pakai sensor. Untuk meningkatkan daya tahan, pertimbangkan untuk mengaplikasikan lapisan pelindung, seperti epoxy bening, yang tidak akan memengaruhi kinerja sensor.


Menghubungkan Sensor Kelembaban Tanah Kapasitif ke Arduino adalah hal yang mudah. Anda hanya perlu menghubungkan tiga kabel.


Mulai dengan menghubungkan kabel merah (VCC) sensor ke pasokan daya, 3.3V-5V sudah cukup. Gunakan tegangan yang sama dengan logika mikrokontroler Anda. Untuk sebagian besar Arduino, itu adalah 5V. Untuk perangkat logika 3.3V, gunakan 3.3V. Selanjutnya, hubungkan kabel hitam (GND) ke ground.


Terakhir, sambungkan kabel kuning (AOUT) ke salah satu pin input analog pada Arduino Anda. Dalam kasus kami, kabel ini dihubungkan


Menghubungkan Sensor Kelembaban Tanah Kapasitif ke Arduino

Menghubungkan sensor kelembaban tanah kapasitif ke Arduino sangat mudah. Anda hanya perlu menghubungkan tiga kabel.


Mulailah dengan menghubungkan kabel merah sensor (VCC) ke pasokan daya, 3.3V-5V adalah baik. Gunakan tegangan yang sama dengan logika mikrokontroler Anda. Pada sebagian besar Arduino, itu adalah 5V. Untuk perangkat logika 3.3V, gunakan 3.3V. Sekarang sambungkan kabel hitam (GND) ke ground.


Akhirnya, hubungkan kabel kuning (AOUT) ke salah satu pin input analog pada Arduino Anda. Dalam kasus kami, itu terhubung ke pin A0.


Pengkabelan ditunjukkan pada gambar di bawah ini.



pengkabelan sensor kelembaban tanah kapasitif ke Arduino



Menentukan Nilai Ambang

Tidak mungkin menentukan persentase kelembaban sebenarnya dalam tanah secara langsung dari pengukuran yang diambil. Namun, relatif mudah untuk mendefinisikan rentang dasar untuk apa yang dianggap "terlalu kering," "terlalu basah," dan "cukup tepat."


Cukup jalankan sketsa di bawah ini dan catat keluaran sensor Anda dalam tiga kondisi dasar:


  • Saat tanah cukup kering sehingga tanaman membutuhkan penyiraman.
  • Saat tanah telah disiram hingga mencapai tingkat kelembaban ideal untuk tanaman.
  • Saat tanah telah disiram berlebihan dan terlalu basah, yang tidak ideal untuk tanaman.


Setelah menjalankan sketsa, Anda seharusnya mengharapkan pembacaan yang serupa dengan yang terdaftar di bawah ini:


  • Di udara terbuka: sekitar 590
  • Tanah kering yang perlu disiram: sekitar 380
  • Kelembaban tanah ideal: antara 277 dan 380
  • Tanah yang baru saja disiram: sekitar 277
  • Di dalam cangkir air: sekitar 273

Tes ini mungkin memerlukan sedikit uji coba. Setelah Anda memiliki pembacaannya, Anda dapat menggunakannya sebagai ambang batas untuk memicu tindakan.


Contoh Kode Arduino

Sketsa di bawah ini memperkirakan tingkat kelembaban tanah menggunakan nilai ambang berikut:


  • < 277 terlalu basah
  • 277 - 380 adalah rentang target
  • > 380 terlalu kering


Jika semuanya baik-baik saja, Anda seharusnya melihat keluaran yang serupa di monitor serial.


Berikut adalah tabel yang menunjukkan hubungan pin:



/* Change these values based on your observations */
#define wetSoil 277   // Define max value we consider soil 'wet'
#define drySoil 380   // Define min value we consider soil 'dry'

// Define analog input
#define sensorPin A0

void setup() {  
  Serial.begin(9600);
}

void loop() {
  // Read the Analog Input and print it
  int moisture = analogRead(sensorPin);
  Serial.print("Analog output: ");
  Serial.println(moisture);
  
  // Determine status of our soil
  if (moisture < wetSoil) {
    Serial.println("Status: Soil is too wet");
  } else if (moisture >= wetSoil && moisture < drySoil) {
    Serial.println("Status: Soil moisture is perfect");
  } else {
    Serial.println("Status: Soil is too dry - time to water!");
  }
  Serial.println();
  
  // Take a reading every second
  delay(1000);
}

Memahami Cara Kerja Sensor Kelembaban Tanah Kapasitif
Menggunkan Sensor Kelembaban Tanak Kapasitif Dengan Arduino

Menyambungkan Sensor BME280 untuk Suhu, Kelembaban, dan Tekanan dengan Arduino

Sensor presisi BME280 dari Bosch digunakan dalam beragam aplikasi mulai dari pemantauan cuaca hingga pengendalian permainan dan pengukuran ketinggian di mana akurasi dalam hitungan kaki diperlukan."


Sensor ini mudah digunakan, sudah dikalibrasi sebelumnya, dan tidak memerlukan komponen tambahan, sehingga Anda dapat segera mulai mengukur kelembaban relatif, suhu, tekanan barometrik, dan ketinggian.


Jadi, mari kenali lebih dekat dengan BME280, yang sudah banyak kami dengar.


Kemampuan BME280


Pengukuran Suhu 

BME280 dapat mengukur suhu dalam rentang -40°C hingga 85°C. Dalam rentang suhu 0 hingga 65°C, akurasinya adalah ±1,0°C; di luar rentang tersebut, akurasi menurun menjadi ±1,5°C.


Perlu dicatat bahwa pengukuran suhu ini digunakan secara internal untuk mengkalibrasi sensor tekanan dan kelembaban. Karena sensor ini menghasilkan panas sendiri, suhu yang diukur biasanya sedikit lebih tinggi dari suhu sebenarnya. Jika hal ini kritikal untuk proyek Anda, bandingkan suhu yang diukur dengan suhu aktual dan terapkan pergeseran (offset) jika diperlukan.


Pengukuran Kelembaban 

BME280 dapat mengukur kelembaban relatif dalam rentang 0 hingga 100% dengan akurasi ±3%.


Menurut lembar data, sensor ini dapat mengukur hingga 100% kelembaban dalam rentang suhu 0 hingga 60°C. Namun, kemampuan pengukuran kelembaban maksimum menurun pada suhu yang sangat tinggi dan sangat rendah.


Pengukuran Tekanan 

BME280 dapat mengukur tekanan dalam rentang 300Pa hingga 1100 hPa dengan akurasi mutlak ±1 hPa.


Dalam rentang suhu 0 hingga 65°C, akurasi penuh dapat diperoleh, menghasilkan akurasi pengukuran ketinggian sekitar ±1 meter. Di luar rentang tersebut, akurasi menurun menjadi 1.7 hPa.


Menghitung Ketinggian

BME280 dapat mengukur tekanan dengan presisi yang tinggi (tingkat kebisingan ketinggian rendah sekitar 0,25 meter) sehingga juga dapat digunakan sebagai altimeter dengan akurasi ±1 meter.


Sebelum melanjutkan, penting untuk memahami perbedaan antara Ketinggian Mutlak dan Ketinggian Relatif. Istilah "ketinggian mutlak" mengacu pada ketinggian di atas permukaan laut (MSL), sedangkan "ketinggian relatif" mengacu pada ketinggian di atas permukaan tanah (AGL).


Perlu dicatat bahwa BME280 tidak dapat langsung mengukur ketinggian, tetapi dapat memperkirakannya menggunakan pembacaan tekanan. Karena BME280 sangat baik dalam mengukur tekanan, ia dapat menghitung ketinggian relatif dengan akurat. Sebagai contoh, jika Anda mengetahui ketinggian objek yang berada di atas meja dan Anda memindahkannya ke lantai, BME280 akan menunjukkan penurunan ketinggian sekitar 2 kaki.


Namun, jika Anda mencoba mengukur ketinggian mutlak, hal-hal menjadi sedikit lebih rumit karena BME280 perlu mengetahui tekanan permukaan laut saat ini.


Oleh karena itu, untuk mendapatkan pengukuran ketinggian mutlak yang akurat, konstanta SEA_LEVEL_PRESSURE disediakan dalam contoh kode di bawah ini, yang harus Anda perbarui dengan tekanan permukaan laut saat ini di lokasi Anda.


Gambaran Perangkat Keras

BME280 IC

Di inti modul ini terdapat sensor suhu, kelembaban, dan tekanan digital generasi berikutnya dari Bosch - BME280. Ini adalah penerus dari sensor-sensor seperti BMP180, BMP085, dan BMP183.



Daya

Modul ini dilengkapi dengan regulator LM6206 3,3V dan Penerjemah Tegangan I2C on-board, sehingga Anda dapat menggunakannya dengan mikrokontroler logika 3,3V atau 5V seperti Arduino tanpa khawatir.



BME280 mengonsumsi kurang dari 1mA selama pengukuran dan hanya 5μA saat dalam keadaan diam. Karena konsumsi daya yang rendah ini, sensor ini dapat digunakan dalam perangkat bertenaga baterai seperti handset, modul GPS, dan jam tangan.


Antarmuka I2C

Modul BME280 berkomunikasi melalui I2C dan mendukung dua alamat I2C, yaitu 0x76 dan 0x77, memungkinkan hingga dua sensor digunakan pada bus yang sama.


Alamat I2C default modul ini adalah 0x76HEX, yang dapat dengan mudah diubah menjadi 0x77HEX menggunakan jembatan solder yang disediakan.



Untuk mengubah alamat i2c menjadi 0x77, potong jalur antara pad tembaga tengah dan pad tembaga kiri dengan menggunakan pisau tajam. Kemudian, tambahkan tetesan solder antara pad tembaga tengah dan pad tembaga kanan untuk menghubungkannya secara singkat.




Spesifikasi Teknis

Berikut adalah spesifikasi:

Device Specifications

Input Voltage 3.3V – 5V -
Current Consumption 1mA (typ.) and 5μA (idle) -
Temperature -40°C to 85°C ±1.0°C
Humidity 0 to 100% RH ±3%
Pressure 300Pa to 1100 hPa ±1 hPa
Altitude 0 to 30,000 ft. ±1 m


Untuk informasi lebih lanjut, silakan lihat lembar data di bawah ini.

BME 280 Datasheet.


Susunan Pin BME280 Sensor

Modul BME280 memiliki hanya 4 pin yang menghubungkannya dengan dunia luar. Koneksi-koneksi tersebut adalah sebagai berikut:




VIN memberikan pasokan daya ke modul. Hubungkan tegangan antara 3,3V hingga 5V ke pin ini.

GND adalah pin tanah.

SCL adalah pin clock serial untuk antarmuka I2C.

SDA adalah pin data serial untuk antarmuka I2C.


Menghubungkan Modul BME280 ke Arduino

Mari kita sambungkan modul BME280 ke Arduino.

Hubungan cukup sederhana. Mulailah dengan menghubungkan pin VCC ke output 5V Arduino dan pin GND ke ground.

Sekarang kita memiliki pin-pin yang digunakan untuk komunikasi I2C. Perhatikan bahwa setiap board Arduino memiliki pin I2C yang berbeda-beda yang harus dihubungkan dengan benar. Pada  board Arduino dengan layout R3, pin SDA (garis data) dan SCL (garis clock) terletak di header pin dekat pin AREF. Mereka juga disebut A5 (SCL) dan A4 (SDA).

Lihat tabel di bawah ini untuk referensi cepat.

Arduino Pin Configuration

Board Pins
SCL SDA
Arduino Uno A5 A4
Arduino Nano A5 A4
Arduino Mega 21 20
Leonardo/Micro 3 2



Diagram di bawah ini menunjukkan cara menghubungkan semuanya.




Menginstal Library yang Diperlukan

Untuk mulai membaca data sensor, Anda harus terlebih dahulu menginstal Pustaka Adafruit BME280. Pustaka ini tersedia melalui pengelola pustaka Arduino.

Untuk menginstal pustaka, buka Sketch > Include Library > Manage Libraries... Tunggu hingga Pengelola Pustaka mengunduh indeks pustaka dan memperbarui daftar pustaka yang terinstal.




Saring pencarian Anda dengan memasukkan 'bme280'. Cari Pustaka Adafruit BME280 oleh Adafruit. Klik pada entri tersebut, lalu pilih Instal.




Pustaka sensor BME280 menggunakan backend dukungan Sensor Adafruit. Jadi, cari Adafruit Unified Sensor dan instal  (Anda mungkin perlu menggulir sedikit).


Kode Contoh Arduino


Berikut adalah program sederhana yang membaca suhu, kelembaban relatif, tekanan, dan ketinggian perkiraan dari modul BME280 dan mencetaknya di monitor serial.

#include 
#include 
#include 

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;

void setup() {
	Serial.begin(9600);

	if (!bme.begin(0x76)) {
		Serial.println("Could not find a valid BME280 sensor, check wiring!");
		while (1);
	}
}

void loop() {
	Serial.print("Temperature = ");
	Serial.print(bme.readTemperature());
	Serial.println("*C");

	Serial.print("Pressure = ");
	Serial.print(bme.readPressure() / 100.0F);
	Serial.println("hPa");

	Serial.print("Approx. Altitude = ");
	Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
	Serial.println("m");

	Serial.print("Humidity = ");
	Serial.print(bme.readHumidity());
	Serial.println("%");

	Serial.println();
	delay(1000);
}


Anda seharusnya melihat keluaran yang serupa di monitor serial.



Pembahasan Kode:

Sketsa ini dimulai dengan menyertakan tiga pustaka, yaitu Wire.h, Adafruit Sensor.h, dan Adafruit BME280.h.


#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
"Kemudian, variabel SEALEVELPRESSURE_HPA didefinisikan. Variabel ini menyimpan tekanan permukaan laut dalam milibar dan digunakan untuk menghitung ketinggian absolut untuk tekanan tertentu dengan membandingkannya dengan tekanan permukaan laut. Nilai default (1013,25) digunakan dalam sketsa ini, tetapi untuk hasil yang akurat, gantikan dengan tekanan permukaan laut saat ini di lokasi Anda.

Objek dari pustaka Adafruit BME280 juga dibuat sehingga kita dapat mengakses fungsinya."

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;


Pada bagian pengaturan kode, kami menginisialisasi komunikasi serial dengan PC dan memanggil fungsi begin().

Fungsi begin(I2C_ADDR) mengambil alamat I2C modul sebagai parameter. Jika Anda mengubah alamat I2C modul Anda, Anda harus menentukannya dengan benar. Fungsi ini menginisialisasi antarmuka I2C dengan alamat I2C yang diberikan dan memvalidasi ID chip. Kemudian, chip diatur ulang secara lembut dan menunggu sensor untuk dikalibrasi setelah bangun."

Serial.begin(9600);

if (!bme.begin(0x76)) {
	Serial.println("Could not find a valid BME280 sensor, check wiring!");
	while (1);
}


Pada bagian loop kode, kami menggunakan fungsi-fungsi berikut untuk membaca suhu, kelembaban relatif, dan tekanan atmosfer dari modul BME280.

Fungsi readTemperature() mengembalikan suhu.

Fungsi readPressure() mengembalikan tekanan atmosfer.

Fungsi readAltitude(SEALEVELPRESSURE_HPA) menghitung ketinggian (dalam meter) dengan membandingkan tekanan atmosfer yang ditentukan (dalam hPa) dengan tekanan permukaan laut (dalam hPa).

Fungsi readHumidity() mengembalikan kelembaban relatif."


Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println("*C");

Serial.print("Pressure = ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println("hPa");

Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println("m");

Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println("%");

Mengenal Sensor BME280
Mengukur Suhu, Kelembaban dan Tekanan dengan Sensor BME280
Cara Kerja BME280
Cara Kerja Sensor BME280
Prinsip Kerja Sensor BME280