- Mga Kinakailangan na Bahagi:
- MPU6050 Gyro Sensor:
- Paglalarawan:
- Circuit Diagram at Paliwanag:
- Ang pag-configure ng Raspberry Pi para sa sensor ng MPU6050 Gyro:
- Paliwanag sa Programming:
Ang sensor ng MPU6050 ay may maraming mga pagpapaandar sa solong maliit na tilad. Binubuo ito ng isang MEMS accelerometer, isang MEMS gyro, at sensor ng temperatura. Napakatumpak ng module na ito habang kino-convert ang mga halagang analog sa digital dahil mayroon itong 16bit analog sa digital converter hardware para sa bawat channel. Ang modyul na ito ay may kakayahang makuha ang x, y at z channel nang sabay. Mayroon itong isang interface ng I2C upang makipag-usap sa host controller. Ang module na MPU6050 na ito ay isang compact chip na mayroong parehong accelerometer at gyro. Ito ay isang napaka kapaki-pakinabang na aparato para sa maraming mga application tulad ng mga drone, robot, sensor ng paggalaw. Tinatawag din itong Gyroscope o Triple axis accelerometer.
Ngayon sa artikulong ito pupunta kami sa Interface ng MPU6050 na ito sa Raspberry Pi at ipinapakita ang mga halagang higit sa 16x2 LCD.
Mga Kinakailangan na Bahagi:
- Raspberry Pi
- MPU-6050
- 10K POT
- Jumper wire
- Breadboard
- Supply ng kuryente
MPU6050 Gyro Sensor:
Ang MPU-6050 ay isang 8 pin 6 axis gyro at accelerometer sa isang solong maliit na tilad. Gumagana ang module na ito sa I2C serial na komunikasyon bilang default ngunit maaari itong mai-configure para sa interface ng SPI sa pamamagitan ng pag-configure ng pagrehistro nito. Para sa I2C mayroon itong mga linya ng SDA at SCL. Halos lahat ng mga pin ay multi-gumagana ngunit narito kami ay nagpapatuloy lamang sa mga I2C mode na pin.
Pag-configure ng Pin:
Vcc: - Ang pin na ito ay ginagamit para sa pagpapatakbo ng module ng MPU6050 na patungkol sa lupa
GND: - ito ay isang ground pin
SDA: - Ang SDA pin ay ginagamit para sa data sa pagitan ng module ng controller at mpu6050
SCL: - Ang SCL pin ay ginagamit para sa pag-input ng orasan
XDA: - Ito ang linya ng sensor ng I2C SDA Data para sa pag-configure at pagbabasa mula sa mga panlabas na sensor ((opsyonal) na hindi ginagamit sa aming kaso)
XCL: - Ito ang linya ng orasan ng I2C SCL para sa pag-configure at pagbabasa mula sa mga panlabas na sensor ((opsyonal) na hindi ginagamit sa aming kaso)
ADO: - I2C Slave Address LSB (hindi nalalapat sa aming kaso)
INT: - Makagambala pin para sa indikasyon ng data na handa na.
Nauna kaming nakipag-ugnayan sa MPU6050 kay Arduino.
Paglalarawan:
Sa artikulong ito, nagpapakita kami ng mga pagbabasa ng temperatura, gyro at accelerometer sa paglipas ng LCD gamit ang MPU6050 kasama ang Raspberry Pi. Kung bago ka sa Raspberry Pi pagkatapos ay dumaan sa aming seksyon ng mga tutorial na Raspberry Pi at alamin ang pagsisimula sa Raspberry Pi.
Sa proyektong ito, ipinakita muna namin ang halaga ng temperatura sa paglipas ng LCD at pagkatapos ng ilang oras ay nagpapakita kami ng mga halaga ng gyro at pagkatapos pagkatapos ng ilang oras mayroon kaming mga pagbabasa ng accelerometer tulad ng ipinakita sa mga imahe sa ibaba:
Circuit Diagram at Paliwanag:
Ang diagram ng circuit, para sa interfacing MPU6050 sa Raspberry Pi, ay napaka-simple dito na ginamit namin ang isang LCD at MPU6050. Ang isang 10k palayok ay ginagamit para sa pagkontrol ng liwanag ng LCD. Kaugnay sa MPU6050, nagawa namin ang 4 na koneksyon kung saan naidugtong namin ang 3.3v power supply at ground ng MPU6050 sa 3.3v at ground ng Raspberry Pi. Ang mga SCL at SDA na pin ng MPU6050 ay konektado sa pisikal na pin 3 (GPIO2) ng Raspberry at pin 5 (GPIO3). Ang LCD, RS, RW, at EN ay direktang konektado sa GPIO18, at 23 ng raspberry pi. Ang data pin ay direktang konektado sa digital pin number GPIO24, GPIO25, GPIO8, at GPIO7. Dagdagan ang nalalaman tungkol sa interfacing LCD sa Raspberry Pi dito.
Ang pag-configure ng Raspberry Pi para sa sensor ng MPU6050 Gyro:
Bago simulan ang pag-program, kailangan naming paganahin ang i2c ng Raspberry Pi sa pamamagitan ng paggamit ng naibigay na pamamaraan:
Hakbang 1: Paganahin ang komunikasyon ng I2C
Bago i-install ang Adafruit SSD1306 library kailangan naming paganahin ang komunikasyon ng I2C sa Raspberry Pi.
Upang gawin ang ganitong uri sa Raspberry Pi console:
sudo raspi -config
At pagkatapos ay lilitaw ang isang asul na screen. Ngayon piliin ang pagpipilian ng interface
Pagkatapos nito, kailangan nating pumili ng I2C
Nyawang
Pagkatapos nito, kailangan naming pumili ng oo at pindutin ang enter at pagkatapos ay ok
Pagkatapos nito, kailangan naming i- reboot ang raspberry pi sa pamamagitan ng pag-isyu sa ibaba ng utos:
sodo reboot
Hakbang 2: Mag-install ng python-pip at GPIO Library
sudo apt-get install build-importanteng python-dev python-pip
Pagkatapos nito, kailangan naming mag-install ng raspberry pi GPIO library
sudo pip install ng RPi.GPIO
Hakbang 3: I-install ang smbus library
Sa wakas, kailangan naming i-install ang smbus library sa Raspberry Pi sa pamamagitan ng paggamit ng ibinigay na utos:
sudo apt-get install python-smbus
Hakbang 4: I-install ang library MPU6050
Pagkatapos nito kailangan naming mag-install ng MPU6050 library sa pamamagitan ng paggamit ng naibigay na utos
sudo pip install mpu6050
Ngayon ay makakahanap tayo ng mga halimbawa ng code sa mga halimbawa. Maaaring subukan ng gumagamit ang code na iyon sa pamamagitan ng direktang pag-upload sa Raspberry Pi o ipasadya ito ayon sa kinakailangan. Ipinakita namin dito ang mga halaga ng axis ng MPU6050's X, Y at Z sa 16x2 LCD. Mahahanap mo ang buong Python Code sa pagtatapos ng Tutorial.
Paliwanag sa Programming:
Ang kumpletong Python Code ay ibinibigay sa dulo dito nagpapaliwanag kami ng ilang mahalagang bahagi ng code.
Sa Python Program, nag-import kami ng ilang kinakailangang library tulad ng oras, smbus, at GPIO.
import smbus import time import RPi.GPIO bilang gpio
Pagkatapos nito, kailangan naming kumuha ng ilang rehistro para i-configure ang MPU6050 at para sa pagkuha ng mga halaga mula sa pareho. Kumuha din kami ng ilang mga variable para sa pag-calibrate at pagsisimula ng bus para sa 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 AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Pagkatapos ay nagsulat kami ng ilang mga pag-andar para sa Pagmamaneho 16x2LCD tulad ng def start (), def cmd (ch), def wrote (ch), def Print (str), def clear () atbp . Maaari mo ring suriin ang Interfacing ng LCD sa Raspberry Pi.
Pagkatapos nito, kailangan nating simulan ang MPU6050 Module
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_CONFIG (24), INT_EN, 1) oras.sulog (1)
Pagkatapos nito, kailangan naming magsulat ng ilang mga pagpapaandar upang mabasa ang mga halaga mula sa MPU6050 at ipakita ang mga ito sa LCD. Ginagamit na pagpapaandar ay ginagamit upang basahin ang data mula sa MPU6050
def readMPU (addr): high = bus.read_byte_data (Device_Address, addr) low = bus.read_byte_data (Device_Address, addr + 1) na halaga = ((mataas << 8) - mababa) kung (halaga> 32768): halaga = halaga - 65536 halaga ng pagbabalik
Ginagamit na pagpapaandar ay ginagamit upang basahin ang data ng accelerometer at 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) display (Ax, Ay, Az) time.s 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) oras. tulog (. 01)
Pagkatapos nito, nagsulat kami ng isang function ng pagbasa ng temperatura
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36.53 tempC = "%. 2f"% tempC print tempC setCursor (0,0) Print ("Temp:") Print (str (tempC)) oras. tulog (.2)
Ang paggana ng def calibrate () ay ginagamit upang i-calibrate ang MPU6050 at ang pagpapaandar ng def display () ay ginagamit upang maipakita ang mga halaga sa LCD. Suriin ang mga pagpapaandar na ito sa buong code na ibinigay sa ibaba.
Pagkatapos nito, sinimulan na namin ang LCD, ipasimula at i-calibrate ang MPU6050 at pagkatapos ay habang tinawag namin ang lahat ng tatlong hanay ng mga halaga mula sa temperatura ng MPU , accelerometer at gyro at ipinakita sa kanila sa paglipas ng LCD.
simulan (); I-print ("MPU6050 Interface") setCursor (0,1) I-print ("Circuit Digest") oras. Tulog (2) InitMPU () i-calibrate () habang 1: InitMPU () malinaw () para sa i sa saklaw (20): temp () malinaw () I-print ("Accel") ang oras. matulog (1) para sa i sa saklaw (30): accel () malinaw () I-print ("Gyro") oras. tulog (1) para sa i sa saklaw (30): gyro ()
Ang MPU6050 gyro at accelerometer pareho ay ginagamit upang makita ang posisyon at oryentasyon ng anumang aparato. Gumagamit ang Gyro ng gravity sa lupa upang matukoy ang mga posisyon ng x, y at z-axis at nakita ng accelerometer batay sa rate ng pagbabago ng paggalaw. Ginamit na namin ang accelerometer kasama ang Arduino sa marami sa aming mga proyekto tulad ng:
- Nakokontrol na Robot na Batay sa Accelerometer na Nakabatay sa Kamay
- Sistema ng Alerto sa aksidente sa Sasakyan ng Arduino Batay
- Lindol Detector Alarm gamit ang Arduino