- Komponen yang Diperlukan:
- Sensor MPU6050 Gyro:
- Deskripsi:
- Diagram Sirkuit dan Penjelasan:
- Konfigurasi Raspberry Pi untuk MPU6050 Gyro sensor:
- Penjelasan Pemrograman:
Sensor MPU6050 memiliki banyak fungsi melalui satu chip. Ini terdiri dari akselerometer MEMS, gyro MEMS, dan sensor suhu. Modul ini sangat akurat saat mengubah nilai analog menjadi digital karena memiliki perangkat keras konverter analog ke digital 16bit untuk setiap saluran. Modul ini mampu menangkap saluran x, y dan z secara bersamaan. Ini memiliki antarmuka I2C untuk berkomunikasi dengan pengontrol host. Modul MPU6050 ini adalah chip kompak yang memiliki akselerometer dan gyro. Ini adalah perangkat yang sangat berguna untuk banyak aplikasi seperti drone, robot, sensor gerak. Ini juga disebut Giroskop atau Akselerometer sumbu rangkap tiga.
Hari ini di artikel ini kita akan Menghubungkan MPU6050 ini dengan Raspberry Pi dan menampilkan nilai di atas LCD 16x2.
Komponen yang Diperlukan:
- Raspberry Pi
- MPU-6050
- 10K POT
- Kabel jumper
- Papan tempat memotong roti
- Sumber Daya listrik
Sensor MPU6050 Gyro:
MPU-6050 adalah gyro dan akselerometer 8 pin 6 sumbu dalam satu chip. Modul ini bekerja pada komunikasi serial I2C secara default tetapi dapat dikonfigurasi untuk antarmuka SPI dengan mengkonfigurasi registernya. Untuk I2C ini memiliki jalur SDA dan SCL. Hampir semua pin berfungsi ganda tetapi di sini kita hanya melanjutkan dengan pin mode I2C.
Konfigurasi Pin:
Vcc: - pin ini digunakan untuk memberi daya pada modul MPU6050 sehubungan dengan ground
GND: - ini adalah pin ground
SDA: - Pin SDA digunakan untuk data antara pengontrol dan modul mpu6050
SCL: - Pin SCL digunakan untuk input jam
XDA: - Ini adalah jalur data sensor I2C SDA untuk mengkonfigurasi dan membaca dari sensor eksternal ((opsional) tidak digunakan dalam kasus kami)
XCL: - Ini adalah garis jam sensor I2C SCL untuk mengkonfigurasi dan membaca dari sensor eksternal ((opsional) tidak digunakan dalam kasus kami)
ADO: - I2C Slave Address LSB (tidak berlaku dalam kasus kami)
INT: - Pin interupsi untuk indikasi data siap.
Kami sebelumnya telah menghubungkan MPU6050 dengan Arduino.
Deskripsi:
Pada artikel ini, kami menunjukkan pembacaan suhu, giro dan akselerometer melalui LCD menggunakan MPU6050 dengan Raspberry Pi. Jika Anda baru mengenal Raspberry Pi, buka bagian tutorial Raspberry Pi kami dan pelajari cara memulai dengan Raspberry Pi.
Dalam proyek ini, pertama-tama kami telah menunjukkan nilai suhu di atas LCD dan setelah beberapa waktu kami menunjukkan nilai gyro dan kemudian setelah beberapa waktu kami memiliki pembacaan akselerometer seperti yang ditunjukkan pada gambar di bawah ini:
Diagram Sirkuit dan Penjelasan:
Diagram rangkaian, untuk menghubungkan MPU6050 dengan Raspberry Pi, sangat sederhana disini kami telah menggunakan LCD dan MPU6050. Pot 10k digunakan untuk mengontrol kecerahan LCD. Sehubungan dengan MPU6050, kami telah melakukan 4 koneksi di mana kami telah menghubungkan catu daya 3.3v dan ground MPU6050 ke 3.3v dan ground Raspberry Pi. Pin SCL dan SDA MPU6050 terhubung dengan pin fisik 3 Raspberry (GPIO2) dan pin 5 (GPIO3). RS LCD, RW, dan EN terhubung langsung ke GPIO18, dan 23 dari raspberry pi. Pin data terhubung langsung ke pin digital nomor GPIO24, GPIO25, GPIO8, dan GPIO7. Pelajari lebih lanjut tentang antarmuka LCD dengan Raspberry Pi di sini.
Konfigurasi Raspberry Pi untuk MPU6050 Gyro sensor:
Sebelum memulai pemrograman, kita perlu mengaktifkan i2c dari Raspberry Pi dengan menggunakan metode yang diberikan:
Langkah 1: Aktifkan komunikasi I2C
Sebelum menginstal library Adafruit SSD1306 kita perlu mengaktifkan komunikasi I2C di Raspberry Pi.
Untuk melakukan jenis ini di konsol Raspberry Pi:
sudo raspi -config
Dan kemudian layar biru akan muncul. Sekarang pilih opsi antarmuka
Setelah ini, kita perlu memilih I2C
</s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> orang </s>
Setelah ini, kita perlu memilih yes dan tekan enter lalu ok
Setelah ini, kita perlu me - reboot raspberry pi dengan mengeluarkan perintah di bawah ini:
reboot sodo
Langkah 2: Instal python-pip dan GPIO Library
sudo apt-get install build-essential python-dev python-pip
Setelah ini, kita perlu menginstal library raspberry pi GPIO
sudo pip menginstal RPi.GPIO
Langkah 3: Instal perpustakaan smbus
Akhirnya, kita perlu menginstal perpustakaan smbus di Raspberry Pi dengan menggunakan perintah yang diberikan:
sudo apt-get install python-smbus
Langkah 4: Instal perpustakaan MPU6050
Setelah ini kita perlu menginstal perpustakaan MPU6050 dengan menggunakan perintah yang diberikan
sudo pip menginstal mpu6050
Sekarang kita dapat menemukan kode contoh dalam contoh. Pengguna dapat menguji kode itu dengan langsung mengunggah ke Raspberry Pi atau menyesuaikannya sesuai kebutuhan. Di sini kami telah menampilkan nilai sumbu X, Y dan Z MPU6050 pada LCD 16x2. Anda dapat menemukan Kode Python lengkap di akhir Tutorial.
Penjelasan Pemrograman:
Kode Python Lengkap diberikan di akhir di sini kami menjelaskan beberapa bagian penting dari kode.
Dalam Program Python, kami telah mengimpor beberapa pustaka yang diperlukan seperti waktu, smbus, dan GPIO.
impor smbus waktu impor impor RPi.GPIO sebagai gpio
Setelah ini, kita perlu mengambil beberapa alamat register untuk mengkonfigurasi MPU6050 dan untuk mendapatkan nilai yang sama. Kami juga telah mengambil beberapa variabel untuk mengkalibrasi dan menginisialisasi bus untuk I2C.
PWR_M = 0x6B DIV = 0x19 CONFIG = 0x1A GYRO_CONFIG = 0x1B INT_EN = 0x38 ACCEL_X = 0x3B ACCEL_Y = 0x3D ACCEL_Z = 0x3F GYRO_X = 0x43 GYRO_Y = 0x45 GYRO_Z = 0x68 Alamat perangkat = 0x45 GYRO_Z = 0x68 Alamat perangkat smbus AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Kemudian kami telah menulis beberapa fungsi untuk Driving 16x2LCD seperti def begin (), def cmd (ch), def write (ch), def Print (str), def clear () dll . Anda dapat memeriksa lebih lanjut Interfacing LCD dengan Raspberry Pi.
Setelah ini, kita perlu menginisialisasi Modul MPU6050
def InitMPU (): bus.write_byte_data (Device_Address, DIV, 7) bus.write_byte_data (Device_Address, PWR_M, 1) bus.write_byte_data (Device_Address, CONFIG, 0) bus.write_byte_data (Device_Address, GYRO_CONFIGata), INT_EN, 1) waktu tidur (1)
Setelah ini, kita perlu menulis beberapa fungsi untuk membaca nilai dari MPU6050 dan menampilkannya ke LCD. Fungsi yang diberikan digunakan untuk membaca data dari MPU6050
def readMPU (addr): high = bus.read_byte_data (Device_Address, addr) low = bus.read_byte_data (Device_Address, addr + 1) value = ((high << 8) - low) if (value> 32768): value = value - 65536 nilai kembali
Fungsi yang diberikan digunakan untuk membaca data accelerometer dan gyro meter
def accel (): x = readMPU (ACCEL_X) y = readMPU (ACCEL_Y) z = readMPU (ACCEL_Z) Ax = (x / 16384.0-AxCal) Ay = (y / 16384.0-AyCal) Az = (z / 16384.0-AzCal) #print "X =" + str (Axe) tampilan (Ax, Ay, Az) time.sleep (.01) def gyro (): global GxCal global GyCal global GzCal x = readMPU (GYRO_X) y = readMPU (GYRO_Y) z = readMPU (GYRO_Z) Gx = x / 131.0 - GxCal Gy = y / 131.0 - GyCal Gz = z / 131.0 - GzCal #print "X =" + str (Gx) display (Gx, Gy, Gz) time.sleep (. 01)
Setelah ini, kami telah menulis fungsi pembacaan suhu
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36.53 tempC = "%. 2f"% tempC print tempC setCursor (0,0) Print ("Temp:") Print (str (tempC)) waktu tidur (.2)
Fungsi def calibrate () digunakan untuk mengkalibrasi MPU6050 dan fungsi def display () digunakan untuk menampilkan nilai pada LCD. Periksa fungsi-fungsi ini dalam kode lengkap yang diberikan di bawah ini.
Setelah ini, kami telah memulai LCD, menginisialisasi dan mengkalibrasi MPU6050 dan kemudian dalam loop sementara kami telah memanggil semua tiga set nilai dari suhu MPU , akselerometer dan gyro dan menunjukkannya melalui LCD.
mulai(); Cetak ("MPU6050 Interface") setCursor (0,1) Cetak ("Circuit Digest") time.sleep (2) InitMPU () kalibrasi () sementara 1: InitMPU () clear () untuk i dalam kisaran (20): temp () clear () Print ("Accel") time.sleep (1) untuk i dalam jangkauan (30): accel () clear () Cetak ("Gyro") waktu. tidur (1) untuk i dalam jangkauan (30): gyro ()
MPU6050 gyro dan accelerometer keduanya digunakan untuk mendeteksi posisi dan orientasi perangkat apa pun. Gyro menggunakan gravitasi bumi untuk menentukan posisi sumbu x, y, dan z dan akselerometer mendeteksi berdasarkan laju perubahan gerakan. Kami sudah menggunakan akselerometer dengan Arduino di banyak proyek kami seperti:
- Robot Kontrol Gerakan Tangan Berbasis Akselerometer
- Sistem Peringatan Kecelakaan Kendaraan Berbasis Arduino
- Alarm Detektor Gempa menggunakan Arduino