KUNJUNGI KAMI

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

Unggah Kode ke ESP32-CAM AI-Thinker Menggunakan Pemrogram USB ESP32-CAM-MB (Cara Paling Mudah)

Pelajari cara mengunggah kode ke board ESP32-CAM AI-Thinker menggunakan pemrogram USB mikro ESP32-CAM-MB. Ini adalah cara paling mudah untuk memprogram board ESP32-CAM Anda.


Pemrogram USB mikro ini berfungsi seperti perisai yang Anda pasang pada board ESP32-CAM. Pemrogram ini dilengkapi dengan soket USB yang Anda hubungkan langsung ke komputer Anda.



Modul ESP32-CAM AI-Thinker adalah board pengembangan ESP32 dengan kamera OV2640, dukungan kartu microSD, lampu kilat flash bawaan, dan beberapa pin GPIO untuk menghubungkan perangkat tambahan. Dan semuanya hanya dengan biaya beberapa rupiah.


Namun, salah satu masalah terbesar saat bekerja dengan modul ESP32-CAM Ai-Thinker adalah mengunggah kode ke board tersebut. Board AI-Thinker tidak dilengkapi dengan pemrogram USB bawaan. Dalam tutorial sebelumnya, kami merekomendasikan menggunakan pemrogram FTDI untuk menghubungkan ke board melalui pin serial.


Selain itu, Anda juga perlu mengikuti dua atau tiga langkah lainnya hingga berhasil mengunggah kode. Tetapi sekarang, Anda dapat dengan mudah menggunakan pemrogram USB ESP32-CAM-MB dan klik tombol Unggah untuk berhasil memprogram board Anda. Begitulah cara yang sederhana.


Mendapatkan Pemrogram USB ESP32-CAM-MB

Anda dapat membuka tautan berikut untuk memeriksa toko-toko yang tersedia untuk mendapatkan Pemrogram USB ESP32-CAM-MB. Paket tersebut termasuk Pemrogram ESP32-CAM-MB dan mungkin juga termasuk board ESP32-CAM itu sendiri.




Pemrogram USB Mikro ESP32-CAM-MB dengan Chip Serial CH340G untuk OV2640

Pemrogram ESP32-CAM AI-Thinker MB

Pemrogram ESP32-CAM AI-Thinker MB adalah perisai yang Anda pasang pada pin GPIO board ESP32-CAM Anda. Gambar berikut menunjukkan pemrogram dan ESP32-CAM berdampingan.


Pemrogram dilengkapi dengan chip USB ke serial CH340C.


Ini memungkinkan Anda untuk memprogram ESP32-CAM menggunakan port USB pada perisai.



Pemrogram Port Micro USB Chip Serial CH340G ESP32-CAM-MB

Selain itu, perisai juga dilengkapi dengan tombol RESET dan BOOT (IO0). Ini dapat berguna untuk dengan mudah mengatur ulang ESP32-CAM atau memasukkannya ke dalam mode pemrograman.


Memprogram ESP32-CAM Menggunakan Pemrogram MB (Arduino IDE)

Untuk memprogram board ESP32-CAM dengan Arduino IDE, Anda perlu menginstal Arduino IDE serta penambahan ESP32. Ikuti tutorial berikut untuk menginstal penambahan ESP32, jika belum melakukannya:


  • Menginstal Board ESP32 di Arduino IDE

Kemudian, cukup hubungkan pemrogram MB ke ESP32-CAM seperti yang ditunjukkan dalam gambar berikut.


Pemrogram USB Mikro ESP32-CAM-MB dengan Chip Serial CH340G untuk Kamera OV2640

Kemudian, hubungkan board ke komputer Anda menggunakan kabel USB.


Setelah itu, di Arduino IDE Anda, ikuti langkah-langkah berikut:


1) Pergi ke Tools > Board dan pilih AI-Thinker ESP32-CAM. Anda harus menginstal penambahan ESP32. Jika tidak, board ini tidak akan muncul di menu Boards.



Pilih AI-Thinker ESP32-CAM di Menu Tools Arduino IDE

2) Pergi ke Tools > Port dan pilih port COM tempat ESP32-CAM terhubung.

Catatan : Jika board tidak muncul, itu berarti Anda mungkin belum menginstal driver CH340C di komputer Anda. Buka Google dan cari "driver CH340C" diikuti dengan sistem operasi Anda, lalu instal driver tersebut.

3) Untuk tujuan demonstrasi, Anda dapat menyalin sketsa berkedip berikut:


/*********
  Rui Santos
  Complete instructions at https://RandomNerdTutorials.com/esp32-cam-projects-ebook/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*********/

// ledPin refers to ESP32-CAM GPIO 4 (flashlight)
const int ledPin = 4;

void setup() {
  // initialize digital pin ledPin as an output
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(2000);
  digitalWrite(ledPin, LOW);
  delay(2000);
}

4) Selanjutnya, klik tombol Unggah di Arduino IDE Anda.

Memrogram ESP32-CAM dengan Arduino IDE
Dan itu saja!

Anda seharusnya menerima pesan yang menyatakan bahwa kode telah berhasil diunggah dan board Anda seharusnya berkedip dengan lampu LED flash.

Penutup


Menggunakan Pemrogram ESP32-CAM AI-Thinker MB adalah cara paling mudah untuk memprogram board ESP32-CAM. Anda tidak perlu lagi menggunakan pemrogram FTDI dan mengalami masalah waktu habis.

Kami berharap Anda telah menemukan artikel ini dan bermanfaat. Anda dapat mencoba proyek-proyek kami dengan ESP32-CAM:

Tutorial Menghubungkan Sensor Kelembaban Tanah dengan Arduino


Ketika Anda mendengar istilah 'taman pintar', salah satu hal pertama yang muncul dalam pikiran adalah sistem yang memantau tingkat kelembaban tanah dan secara otomatis menyuplai jumlah air yang diperlukan ke tanaman.


Dengan sistem ini, tanaman dapat disiram hanya saat diperlukan, menghindari penyiraman berlebihan atau kurang.


Jika Anda ingin membangun sistem seperti itu, Anda pasti memerlukan Sensor Kelembaban Tanah.


Bagaimana Cara Kerja  Sensor Kelembaban Tanah ?

Sensor kelembaban tanah beroperasi dengan cara yang sederhana.


Probu dengan bentuk garpu dan dua konduktor terbuka berfungsi sebagai resistor variabel (serupa dengan potensiometer) yang resistansinya berubah dengan konten kelembaban tanah.




resistansi ini bervariasi terbalik dengan kelembaban tanah:


  • Semakin banyak air di tanah, konduktivitas semakin baik dan resistansinya semakin rendah.
  • Semakin sedikit air di tanah, konduktivitas semakin rendah dan resistansinya semakin tinggi.

Sensor ini menghasilkan tegangan keluaran sesuai dengan resistansi, yang dengan mengukurnya kita dapat menentukan tingkat kelembaban tanah.


Gambaran Perangkat

Sebuah sensor kelembaban tanah tipikal terdiri dari dua bagian.


Alat ukur 

Sensor ini mencakup alat ukur berbentuk garpu dengan dua konduktor terbuka yang dimasukkan ke dalam tanah atau tempat mana pun yang kelembaban kontennya akan diukur.


Seperti yang disebutkan sebelumnya, itu bertindak sebagai resistor variabel, dengan resistansi bervariasi sesuai dengan kelembaban tanah.




Modul

Selain itu, sensor ini mencakup modul elektronik yang menghubungkan probu ke Arduino.


Modul ini menghasilkan tegangan keluaran berdasarkan resistansi probu, yang tersedia pada pin Analog Output (AO).


Sinyal yang sama diumpankan ke Komparator Presisi Tinggi LM393, yang mengubahnya menjadi digital dan membuatnya tersedia pada pin Digital Output (DO).




Modul ini mencakup potensiometer untuk mengatur sensitivitas keluaran digital (DO).


Anda dapat menggunakannya untuk mengatur ambang batas, sehingga saat tingkat kelembaban tanah melebihi ambang batas, modul mengeluarkan sinyal rendah jika tidak, maka tinggi.


Pengaturan ini sangat berguna untuk memicu tindakan saat ambang tertentu tercapai. Misalnya, jika tingkat kelembaban di tanah melebihi ambang tertentu, Anda dapat mengaktifkan relay untuk memulai penyiraman tanaman.



Putar knob searah jarum jam untuk meningkatkan sensitivitas dan berlawanan jarum jam untuk menguranginya.


Modul ini juga mencakup dua LED. LED Daya menyala saat modul dihidupkan, dan LED Status menyala saat tingkat kelembaban tanah melebihi nilai ambang.


Pinout Sensor Kelembaban Tanah

Sensor kelembaban tanah sangat mudah digunakan dan hanya memerlukan empat pin untuk dihubungkan.



AO (Analog Output) menghasilkan tegangan keluaran analog yang sebanding dengan tingkat kelembaban tanah, sehingga tingkat yang lebih tinggi menghasilkan tegangan yang lebih tinggi dan tingkat yang lebih rendah menghasilkan tegangan yang lebih rendah.


DO (Digital Output) menunjukkan apakah tingkat kelembaban tanah berada dalam batas yang ditentukan. D0 menjadi LOW ketika tingkat kelembaban melebihi nilai ambang batas (seperti yang diatur oleh potensiometer), dan sebaliknya tinggi.


VCC menyuplai daya ke sensor. 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.


Eksperimen 1 - Mengukur Kelembaban Tanah Menggunakan Output Analog (A0)

Dalam eksperimen pertama kami, kami akan membaca keluaran analog untuk memperkirakan tingkat kelembaban tanah.


Pengawatan

Mari hubungkan sensor kelembaban tanah ke Arduino.


Mari mulai dengan memberi daya pada sensor. Untuk ini, Anda dapat menghubungkan pin VCC modul ke pin 5V Arduino.


Namun, masalah yang sudah dikenal dengan sensor ini adalah bahwa umur pakainya lebih pendek karena terus-menerus terpapar kelembaban. Lebih lanjut, pemberian daya konstan pada sensor sementara terkubur dalam tanah signifikan mempercepat laju korosi.


Untuk menghindari hal ini, disarankan agar sensor hanya dihidupkan saat pengukuran dilakukan.


Salah satu cara mudah untuk melakukannya adalah dengan menghubungkan pin daya sensor ke pin digital di Arduino dan mengaturnya menjadi HIGH atau LOW sesuai kebutuhan. Juga, daya total yang ditarik oleh modul (dengan kedua LED menyala) sekitar 8 mA, sehingga memberi daya pada modul dari pin digital adalah aman. Jadi, kita akan menghubungkan pin VCC ke pin digital #7 Arduino.


Terakhir, hubungkan pin A0 ke pin ADC A0 Arduino.


Pengawatan ditunjukkan dalam gambar di bawah.



Pengawatan sensor kelembaban tanah dengan Arduino untuk membaca keluaran analog

Mencari Nilai Ambang Batas

Untuk memperkirakan tingkat kelembaban tanah, catat nilai keluaran sensor Anda saat tanah se-kering mungkin dan saat benar-benar jenuh.

Cukup jalankan sketsa di bawah ini dan ambil pembacaan Anda.


void setup() {
	pinMode(sensorPower, OUTPUT);
	
	// Initially keep the sensor OFF
	digitalWrite(sensorPower, LOW);
	
	Serial.begin(9600);
}

void loop() {
	//get the reading from the function below and print it
	Serial.print("Analog output: ");
	Serial.println(readSensor());
	
	delay(1000);
}

//  This function returns the analog soil moisture measurement
int readSensor() {
	digitalWrite(sensorPower, HIGH);	// Turn the sensor ON
	delay(10);							// Allow power to settle
	int val = analogRead(sensorPin);	// Read the analog value form sensor
	digitalWrite(sensorPower, LOW);		// Turn the sensor OFF
	return val;							// Return analog moisture value
}



Ketika Anda menjalankan sketsa tersebut, Anda seharusnya melihat pembacaan yang mirip dengan berikut:


  • Saat tanah kering (sekitar 850)

  • Saat tanah sepenuhnya jenuh (sekitar 400)


Uji ini mungkin memerlukan beberapa percobaan dan kesalahan. Setelah Anda mendapatkan pembacaan tersebut, Anda dapat menggunakannya sebagai ambang batas untuk memicu tindakan.


Kode Arduino

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



  • < 500 terlalu basah
  • 500-750 adalah rentang target
  • > 750 cukup kering untuk disiram"



/* Change these values based on your calibration values */
#define soilWet 500   // Define max value we consider soil 'wet'
#define soilDry 750   // Define min value we consider soil 'dry'

// Sensor pins
#define sensorPower 7
#define sensorPin A0

void setup() {
	pinMode(sensorPower, OUTPUT);
	
	// Initially keep the sensor OFF
	digitalWrite(sensorPower, LOW);
	
	Serial.begin(9600);
}

void loop() {
	//get the reading from the function below and print it
	int moisture = readSensor();
	Serial.print("Analog Output: ");
	Serial.println(moisture);

	// Determine status of our soil
	if (moisture < soilWet) {
		Serial.println("Status: Soil is too wet");
	} else if (moisture >= soilWet && moisture < soilDry) {
		Serial.println("Status: Soil moisture is perfect");
	} else {
		Serial.println("Status: Soil is too dry - time to water!");
	}
	
	delay(1000);	// Take a reading every second for testing
					// Normally you should take reading perhaps once or twice a day
	Serial.println();
}

//  This function returns the analog soil moisture measurement
int readSensor() {
	digitalWrite(sensorPower, HIGH);	// Turn the sensor ON
	delay(10);							// Allow power to settle
	int val = analogRead(sensorPin);	// Read the analog value form sensor
	digitalWrite(sensorPower, LOW);		// Turn the sensor OFF
	return val;							// Return analog moisture value
}
If everything is fine, you should see something

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

keluaran analog sensor kelembaban tanah


Eksperimen 2 – Mengukur Kelembaban Tanah menggunakan Keluaran Digital (D0)

Pada eksperimen kedua kami, kita akan menggunakan keluaran digital untuk menentukan apakah tingkat kelembaban tanah berada dalam batas yang dapat diterima.


Pengawatan

Kita akan menggunakan kembali rangkaian percobaan sebelumnya. Cukup putuskan koneksi ke pin ADC dan hubungkan pin D0 pada modul ke pin digital #8 di Arduino.


Gambar berikut menunjukkan pengawatan tersebut.



pengawatan sensor kelembaban tanah dengan arduino untuk membaca keluaran digital

Menetapkan ambang batas

Modul ini memiliki potensiometer bawaan untuk mengatur ambang batas tingkat kelembaban di atasnya yang modul akan mengeluarkan sinyal LOW dan LED status akan menyala.

keluaran digital sensor kelembaban tanah

Sekarang, untuk menetapkan ambang batas tersebut, masukkan probe ke dalam tanah ketika tanaman Anda membutuhkan penyiraman dan putar potensiometer searah jarum jam sampai LED Status menyala. Kemudian, putar potensiometer kembali berlawanan arah jarum jam sampai LED mati.


Itulah yang perlu Anda lakukan; modul Anda kini siap digunakan.


Kode Arduino

Sekarang, unggah sketsa di bawah ini ke Arduino Anda.


// Sensor pins
#define sensorPower 7
#define sensorPin 8

void setup() {
	pinMode(sensorPower, OUTPUT);

	// Initially keep the sensor OFF
	digitalWrite(sensorPower, LOW);

	Serial.begin(9600);
}

void loop() {
	//get the reading from the function below and print it
	int val = readSensor();
	Serial.print("Digital Output: ");
	Serial.println(val);

	// Determine status of our soil moisture situation
	if (val) {
		Serial.println("Status: Soil is too dry - time to water!");
	} else {
		Serial.println("Status: Soil moisture is perfect");
	}

	delay(1000);	// Take a reading every second for testing
					// Normally you shoul take reading perhaps every 12 hours
	Serial.println();
}

//  This function returns the analog soil moisture measurement
int readSensor() {
	digitalWrite(sensorPower, HIGH);  // Turn the sensor ON
	delay(10);              // Allow power to settle
	int val = digitalRead(sensorPin); // Read the analog value form sensor
	digitalWrite(sensorPower, LOW);   // Turn the sensor OFF
	return val;             // Return analog moisture value
}


Anda seharusnya melihat keluaran serupa di monitor serial.


Tutorial Menggabungkan Sensor Kelembaban Tanah Dengan Arduino 

Teknologi Sensor kelembaban Tanah : Menjaga Tanaman Menjadi Efisien

Sensor Kelembaban Tanah 

Soil Moisture Sensor 

Cara Kerja Sensor Kelembaban Tanah 

Cara Kerja Soil Moisture Sensor 

Mengukur Kelembaban Tanah Dengan Sensor Kelembaban Tanah

Penyiraman Tanah Otomatis 

Membuat Smart Garden dengan Arduino 

Membuat Taman Pintar Dengan Arduino

Experimen Mengukur Kelembaban Tanah 

Prinsip Kerja Sensor Kelembaban Tanah 

Sistem Penyiraman Otomatis Dengan Sensor Kelembaban Tanah 

Sensor Kelembaban Tanah Arduino 

Cara Menggunakan Sensor Kelembaban Tanah 

Rangkaian Sensor Kelembaban Tanah 

Cara Menampilkan Output Sensor Kelembaban Tanah 

Cara Menampilkan Output Sensor Kelembaban Tanah di LED 

Cara Membuat Program Sensor Kelembaban Tanah di Arduino IDE

Cara Seting Sensor Kelembaban Tanah di Arduino 

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