- Komponen yang diperlukan:
- Sensor Gyro MPU6050:
- Penerangan:
- Rajah dan Penjelasan Litar:
- Mengkonfigurasi Raspberry Pi untuk sensor Gyro MPU6050:
- Penjelasan Pengaturcaraan:
Sensor MPU6050 mempunyai banyak fungsi berbanding cip tunggal. Ini terdiri dari MEMS accelerometer, MEMS gyro, dan sensor suhu. Modul ini sangat tepat semasa menukar nilai analog ke digital kerana mempunyai perkakasan penukar analog ke digital 16bit untuk setiap saluran. Modul ini mampu menangkap saluran x, y dan z pada masa yang sama. Ia mempunyai antara muka I2C untuk berkomunikasi dengan pengawal hos. Ini MPU6050 modul adalah cip padat mempunyai kedua-dua pecutan dan giro. Ini adalah alat yang sangat berguna untuk banyak aplikasi seperti drone, robot, sensor gerakan. Ia juga disebut Giroskop atau Accelerometer paksi tiga.
Hari ini dalam artikel ini kita akan Antarmuka MPU6050 ini dengan Raspberry Pi dan menunjukkan nilai lebih dari 16x2 LCD.
Komponen yang diperlukan:
- Pai raspberi
- MPU-6050
- 10K POT
- Kawat pelompat
- Papan roti
- Bekalan kuasa
Sensor Gyro MPU6050:
MPU-6050 adalah gyro 8 pin 6 paksi dan akselerometer dalam satu cip. Modul ini berfungsi pada komunikasi bersiri I2C secara lalai tetapi ia dapat dikonfigurasi untuk antara muka SPI dengan mengkonfigurasinya mendaftar. Untuk I2C ini mempunyai garis SDA dan SCL. Hampir semua pin berfungsi pelbagai tetapi di sini kita hanya meneruskan pin mod I2C.
Konfigurasi Pin:
Vcc: - pin ini digunakan untuk menghidupkan modul MPU6050 sehubungan dengan ground
GND: - ini adalah pin tanah
SDA: - Pin SDA digunakan untuk data antara pengawal dan modul mpu6050
SCL: - Pin SCL digunakan untuk input jam
XDA: - Ini adalah garis Data sensor I2C SDA untuk mengkonfigurasi dan membaca dari sensor luaran ((pilihan) tidak digunakan dalam kes kami)
XCL: - Ini adalah garis jam sensor I2C SCL untuk mengkonfigurasi dan membaca dari sensor luaran ((pilihan) tidak digunakan dalam kes kami)
ADO: - Alamat Slave I2C LSB (tidak berlaku dalam kes kami)
INT: - Pin gangguan untuk menunjukkan data siap.
Kami sebelum ini menghubungkan MPU6050 dengan Arduino.
Penerangan:
Dalam artikel ini, kami menunjukkan bacaan suhu, giro dan akselerometer melalui LCD menggunakan MPU6050 dengan Raspberry Pi. Sekiranya anda baru menggunakan Raspberry Pi, baca bahagian tutorial Raspberry Pi kami dan pelajari cara memulakan dengan Raspberry Pi.
Dalam projek ini, kami pertama kali menunjukkan nilai suhu di atas LCD dan setelah beberapa waktu kami menunjukkan nilai - nilai giro dan kemudian setelah beberapa waktu kami melakukan pembacaan pecutan seperti yang ditunjukkan pada gambar di bawah:
Rajah dan Penjelasan Litar:
Gambarajah litar, untuk menghubungkan MPU6050 dengan Raspberry Pi, sangat mudah di sini kita telah menggunakan LCD dan MPU6050. Pot 10k digunakan untuk mengawal kecerahan LCD. Sehubungan dengan MPU6050, kami telah melakukan 4 sambungan di mana kami telah menyambungkan bekalan kuasa 3.3v dan aras MPU6050 ke 3.3v dan tanah Raspberry Pi. Pin SCL dan SDA MPU6050 dihubungkan dengan pin fizikal Raspberry 3 (GPIO2) dan pin 5 (GPIO3). RS, RW, dan EN LCD disambungkan secara langsung ke GPIO18, dan 23 dari raspberry pi. Pin data disambungkan secara langsung ke nombor pin digital GPIO24, GPIO25, GPIO8, dan GPIO7. Ketahui lebih lanjut mengenai menghubungkan LCD dengan Raspberry Pi di sini.
Mengkonfigurasi Raspberry Pi untuk sensor Gyro MPU6050:
Sebelum memulakan pengaturcaraan, kita perlu mengaktifkan i2c Raspberry Pi dengan menggunakan kaedah yang diberikan:
Langkah 1: Dayakan komunikasi I2C
Sebelum memasang perpustakaan Adafruit SSD1306, kita perlu mengaktifkan komunikasi I2C di Raspberry Pi.
Untuk melakukan jenis ini di konsol Raspberry Pi:
sudo raspi -config
Dan kemudian skrin biru akan muncul. Sekarang pilih pilihan antara muka
Selepas ini, kita perlu memilih I2C
Selepas ini, kita perlu memilih ya dan tekan enter dan kemudian ok
Selepas ini, kita perlu reboot pi raspberry dengan mengeluarkan arahan di bawah:
but semula sodo
Langkah 2: Pasang python-pip dan GPIO Library
sudo apt-get install build-essential python-dev python-pip
Selepas ini, kita perlu memasang perpustakaan GPIO raspberry pi
sudo pip memasang RPi.GPIO
Langkah 3: Pasang pustaka smbus
Akhirnya, kita perlu memasang perpustakaan smbus di Raspberry Pi dengan menggunakan arahan yang diberikan:
sudo apt-get install python-smbus
Langkah 4: Pasang perpustakaan MPU6050
Selepas ini kita perlu memasang perpustakaan MPU6050 dengan menggunakan arahan yang diberikan
sudo pip pasang mpu6050
Sekarang kita dapat mencari contoh kod dalam contoh. Pengguna boleh menguji kod tersebut dengan memuat naik secara langsung ke Raspberry Pi atau menyesuaikannya mengikut keperluan. Di sini kami telah menunjukkan nilai paksi X, Y dan Z MPU6050 pada LCD 16x2. Anda boleh mendapatkan Python Code yang lengkap di akhir Tutorial.
Penjelasan Pengaturcaraan:
Kod Python lengkap diberikan pada akhir di sini kita menerangkan beberapa bahagian penting kod tersebut.
Dalam Program Python, kami telah mengimport beberapa perpustakaan yang diperlukan seperti waktu, smbus, dan GPIO.
import smbus import time import RPi.GPIO sebagai gpio
Selepas ini, kita perlu mengambil beberapa alamat daftar untuk mengkonfigurasi MPU6050 dan untuk mendapatkan nilai dari yang sama. Kami juga telah mengambil beberapa pemboleh ubah untuk menentukur dan memulakan bas 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 = 0x_d = 0x_d = 0x4b AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Kemudian kami telah menulis beberapa fungsi untuk Memandu 16x2LCD seperti def begin (), def cmd (ch), def write (ch), def Print (str), def clear () dll . Anda boleh memeriksa Interfacing LCD dengan Raspberry Pi dengan lebih lanjut.
Selepas ini, kita perlu memulakan 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, Gita_Address, Gita_Address, INT_EN, 1) masa. Tidur (1)
Selepas ini, kita perlu menulis beberapa fungsi untuk membaca nilai dari MPU6050 dan memaparkannya 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 = ((tinggi << 8) - rendah) jika (nilai> 32768): nilai = nilai - 65536 nilai pulangan
Fungsi yang diberikan digunakan untuk membaca data pecutan dan meter giro
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) paparan #print "X =" + str (Ax) (Ax, Ay, Az) time.sleep (.01) def gyro (): global GxCal global GyCal global GzCal x = readMPU (GYRO_X) y = readMPU (GYRO_Y) z = bacaMPU (GYRO_Z) Gx = x / 131.0 - GxCal Gy = y / 131.0 - GyCal Gz = z / 131.0 - Paparan GzCal #print "X =" + str (Gx) (Gx, Gy, Gz) waktu. tidur (. 01)
Selepas ini, kami telah menulis fungsi membaca 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)) masa. tidur (.2)
fungsi def calibrate () digunakan untuk mengkalibrasi MPU6050 dan fungsi def () digunakan untuk menampilkan nilai pada LCD. Periksa fungsi ini dalam kod penuh yang diberikan di bawah.
Selepas ini, kami telah memulakan LCD, menginisialisasi dan mengkalibrasi MPU6050 dan kemudian semasa loop kami telah memanggil ketiga-tiga set nilai dari MPU- suhu, pecutan dan giro dan menunjukkannya melalui LCD.
bermula (); Print ("MPU6050 Interface") setCursor (0,1) Print ("Circuit Digest") time.sleep (2) InitMPU () calibrate () while 1: InitMPU () clear () for i in range (20): temp () hapus () Cetak ("Accel") time.sleep (1) untuk i dalam jarak (30): accel () clear () Cetak ("Gyro") time.sleep (1) untuk i dalam jarak (30): giro ()
MPU6050 giro dan akselerometer keduanya digunakan untuk mengesan kedudukan dan orientasi mana-mana peranti. Gyro menggunakan graviti bumi untuk menentukan kedudukan paksi x, y dan z dan pengesan pecutan berdasarkan kadar perubahan pergerakan. Kami sudah menggunakan accelerometer dengan Arduino dalam banyak projek kami seperti:
- Robot Dikendalikan Gerak Tangan Berasaskan Accelerometer
- Sistem Makluman Kemalangan Kenderaan Berasaskan Arduino
- Penggera Pengesan Gempa menggunakan Arduino