- Nepieciešamās sastāvdaļas:
- MPU6050 žiroskopu sensors:
- Apraksts:
- Shēmas shēma un skaidrojums:
- Raspberry Pi konfigurēšana MPU6050 Gyro sensoram:
- Programmēšanas skaidrojums:
MPU6050 sensoram ir daudz funkciju vienā mikroshēmā. Tas sastāv no MEMS akselerometra, MEMS žiroskopa un temperatūras sensora. Šis modulis ir ļoti precīzs, pārvēršot analogās vērtības ciparu formātā, jo katram kanālam ir 16 bitu analogās uz digitālo pārveidotāju aparatūra. Šis modulis vienlaikus var uzņemt x, y un z kanālu. Tam ir I2C saskarne, lai sazinātos ar resursdatora kontrolieri. Šis modulis MPU6050 ir kompakta mikroshēma, kurā ir gan akselerometrs, gan žiroskopu. Šī ir ļoti noderīga ierīce daudzām lietojumprogrammām, piemēram, bezpilota lidaparātiem, robotiem, kustības sensoriem. To sauc arī par žiroskopu vai trīskāršu akselerometru.
Šodien šajā rakstā mēs savienosim šo MPU6050 ar Raspberry Pi un parādīsim vērtības virs 16x2 LCD.
Nepieciešamās sastāvdaļas:
- Aveņu Pi
- MPU-6050
- 10K POT
- Džempera vads
- Maizes dēlis
- Enerģijas padeve
MPU6050 žiroskopu sensors:
MPU-6050 ir 8 kontaktu 6 asu žiroskopu un akselerometrs vienā mikroshēmā. Šis modulis pēc noklusējuma darbojas I2C seriālajā komunikācijā, taču to var konfigurēt SPI interfeisam, konfigurējot tā reģistru. Attiecībā uz I2C tam ir SDA un SCL līnijas. Gandrīz visas tapas ir daudzfunkcionālas, bet šeit mēs strādājam tikai ar I2C režīma tapām.
Piespraudes konfigurācija:
Vcc: - šo tapu izmanto, lai darbinātu MPU6050 moduli attiecībā pret zemi
GND: - tas ir zemes tapas
SDA: - SDA tapa tiek izmantota datiem starp kontrolieri un mpu6050 moduli
SCL: - SCL tapa tiek izmantota pulksteņa ievadei
XDA: - šī ir sensora I2C SDA datu līnija, lai konfigurētu un nolasītu no ārējiem sensoriem ((pēc izvēles) mūsu gadījumā netiek izmantota)
XCL: - Šī ir sensora I2C SCL pulksteņa līnija ārējo sensoru konfigurēšanai un nolasīšanai ((pēc izvēles), ko mūsu gadījumā neizmanto)
ADO: - I2C vergu adrese LSB (mūsu gadījumā nav piemērojama)
INT: - pārtraukuma tapa, lai norādītu, ka dati ir gatavi.
Iepriekš mēs esam interfeisu MPU6050 ar Arduino.
Apraksts:
Šajā rakstā mēs parādām temperatūras, žiroskopu un akselerometra rādījumus, izmantojot LCD, izmantojot MPU6050 ar Raspberry Pi. Ja esat jauns Raspberry Pi lietotājs, apmeklējiet mūsu Raspberry Pi apmācību sadaļu un uzziniet, kā sākt darbu ar Raspberry Pi.
Šajā projektā mēs vispirms parādījām temperatūras vērtību, izmantojot LCD, un pēc kāda laika parādām žiroskopu vērtības, un pēc kāda laika mums ir akselerometra rādījumi, kā parādīts zemāk esošajos attēlos:
Shēmas shēma un skaidrojums:
Shēma, kas paredzēta MPU6050 saskarnei ar Raspberry Pi, ir ļoti vienkārša, un šeit mēs izmantojām LCD un MPU6050. LCD spilgtuma kontrolei tiek izmantots 10k katls. Saistībā ar MPU6050 mēs esam veikuši 4 savienojumus, kuros mēs esam savienojuši MPV6050 3.3v barošanas avotu un zemi ar Raspberry Pi 3.3v un zemi. MPU6050 SCL un SDA tapas ir savienotas ar Aveņu fizisko tapu 3 (GPIO2) un 5. kontaktu (GPIO3). LCD RS, RW un EN ir tieši savienoti ar GPIO18 un 23 aveņu pi. Datu tapa ir tieši savienota ar ciparu PIN numuru GPIO24, GPIO25, GPIO8 un GPIO7. Uzziniet vairāk par LCD saskarni ar Raspberry Pi šeit.
Raspberry Pi konfigurēšana MPU6050 Gyro sensoram:
Pirms sākat programmēšanu, mums jāiespējo Raspberry Pi i2c, izmantojot norādīto metodi:
1. darbība: iespējojiet I2C komunikāciju
Pirms Adafruit SSD1306 bibliotēkas instalēšanas mums ir jāiespējo I2C komunikācija Raspberry Pi.
Lai to izdarītu Raspberry Pi konsolē:
sudo raspi -config
Tad parādīsies zils ekrāns. Tagad atlasiet saskarnes opciju
Pēc tam mums jāizvēlas I2C
A
Pēc tam mums jāizvēlas jā un jānospiež Enter un pēc tam labi
Pēc tam mums jāpārstartē aveņu pi, izsniedzot komandu zemāk:
sodo atsāknēšana
2. darbība: instalējiet python-pip un GPIO bibliotēku
sudo apt-get install build-būtisks python-dev python-pip
Pēc tam mums jāinstalē aveņu pi GPIO bibliotēka
sudo pip instalē RPi.GPIO
3. darbība: instalējiet smbus bibliotēku
Visbeidzot, mums jāinstalē smbus bibliotēka Raspberry Pi, izmantojot norādīto komandu:
sudo apt-get instalēt python-smbus
4. darbība: instalējiet bibliotēku MPU6050
Pēc tam mums jāinstalē MPU6050 bibliotēka, izmantojot doto komandu
sudo pip instalēt mpu6050
Tagad piemēros varam atrast piemēru kodus. Lietotājs var pārbaudīt šo kodu, tieši augšupielādējot Raspberry Pi vai pielāgot to atbilstoši prasībām. Šeit mēs esam parādījuši MPU6050 X, Y un Z ass vērtības uz 16x2 LCD. Pilnu Python kodu varat atrast apmācības beigās.
Programmēšanas skaidrojums:
Šeit tiek sniegts pilns Python kods, un mēs izskaidrojam dažas svarīgas koda daļas.
Programmā Python mēs esam importējuši dažas nepieciešamās bibliotēkas, piemēram, laiku, smbus un GPIO.
importēt smbus importēšanas laiku importēt RPi.GPIO kā gpio
Pēc tam mums ir jāņem reģistra adrese, lai konfigurētu MPU6050 un iegūtu vērtības no tās pašas. Mēs esam arī veikuši dažus mainīgos I2C kopnes kalibrēšanai un inicializēšanai.
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 = 0x45 GYRO_Z = 0x45 GYRO_Z = 0x45 GYRO_Z = 0x45 GYRO_Z = 0x45 GYRO_Z = 0x45 GYRO_Z = 0x45 GYRO_ Z AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Tad mēs esam uzrakstījuši dažas funkcijas 16x2LCD braukšanai, piemēram, def start (), def cmd (ch), def write (ch), def Print (str), def clear () utt . Jūs varat papildus pārbaudīt LCD saskarni ar Raspberry Pi.
Pēc tam mums ir jāinicializē MPU6050 modulis
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 (Device_Address) (Device_Address (Device_Address), INT_LV, 1) laiks. Gulēt (1)
Pēc tam mums ir jāuzraksta dažas funkcijas, lai nolasītu vērtības no MPU6050 un parādītu tās LCD. Dotā funkcija tiek izmantota MPU6050 datu nolasīšanai
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 (vērtība> 32768): vērtība = vērtība - 65536 atgriešanās vērtība
Doto funkciju izmanto, lai nolasītu akselerometra un žiroskaitītāja datus
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 (Ax) displejs (Ax, Ay, Az) time.sleep (.01) def gyro (): globālais GxCal globālais GyCal globālais 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) displeja (Gx, Gy, Gz) laiks. gulēt (. 01)
Pēc tam mēs esam uzrakstījuši temperatūras nolasīšanas funkciju
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36.53 tempC = "%. 2f"% tempC print tempC setCursor (0,0) Print ("Temp:") Print (str (tempC))) laiks. gulēt (.2)
def calibrate () funkciju izmanto, lai kalibrētu MPU6050, un def display () funkciju izmanto, lai parādītu vērtības LCD. Pārbaudiet šīs funkcijas pilnā kodā, kas norādīts zemāk.
Pēc tam, mēs esam sākuši LCD, uzsākt un kalibrēt MPU6050 un pēc tam , kamēr cilpa mēs esam sauc visi visu trīs vērtību kopums no MPU- temperatūru, akselerometru un žiroskopu un parādīja tos pār LCD.
sākt (); Drukāšana ("MPU6050 interfeiss") setCursor (0,1) Drukāšanas ("Circuit Digest") laiks. Gulēt (2) InitMPU () kalibrēt (), kamēr 1: InitMPU () notīrīt () i diapazonā (20): temp () notīrīt () Drukāt ("Accel") laiks. gulēt (1) i diapazonā (30): accel () notīrīt () Drukāt ("žiroskopu") laiks. gulēt (1) i diapazonā (30): žiroskopu ()
MPU6050 žiroskopu un akselerometru izmanto, lai noteiktu jebkuras ierīces atrašanās vietu un orientāciju. Žiro izmanto zemes gravitāciju, lai noteiktu x, y un z ass pozīcijas, un akselerometrs nosaka, pamatojoties uz kustības izmaiņu ātrumu. Mēs jau izmantojām akselerometru kopā ar Arduino daudzos mūsu projektos, piemēram:
- Akselerometra vadīts robots ar rokas žestu
- Arduino balstīta transportlīdzekļu trauksmes trauksmes sistēma
- Zemestrīces detektora trauksme, izmantojot Arduino