- Nødvendige komponenter:
- MPU6050 gyrosensor:
- Beskrivelse:
- Kretsdiagram og forklaring:
- Konfigurere Raspberry Pi for MPU6050 Gyro-sensor:
- Programmeringsforklaring:
MPU6050- sensoren har mange funksjoner over den enkelte brikken. Den består av et MEMS akselerometer, en MEMS gyro og temperatursensor. Denne modulen er veldig nøyaktig når den konverterer analoge verdier til digital fordi den har en 16bit analog til digital omformer maskinvare for hver kanal. Denne modulen er i stand til å fange x-, y- og z-kanaler samtidig. Den har et I2C-grensesnitt for å kommunisere med vertskontrolleren. Denne MPU6050-modulen er en kompakt brikke som har både akselerometer og gyro. Dette er en veldig nyttig enhet for mange applikasjoner som droner, roboter, bevegelsessensorer. Det kalles også gyroskop eller trippelaksel akselerometer.
I dag i denne artikkelen skal vi grensesnitt denne MPU6050 med Raspberry Pi og vise verdiene over 16x2 LCD.
Nødvendige komponenter:
- Bringebær Pi
- MPU-6050
- 10K POTTE
- Jumper wire
- Brettbrett
- Strømforsyning
MPU6050 gyrosensor:
MPU-6050 er en 8-pins 6-akset gyro og akselerometer i en enkelt brikke. Denne modulen fungerer på I2C seriell kommunikasjon som standard, men den kan konfigureres for SPI-grensesnitt ved å konfigurere registeret. For I2C har dette SDA- og SCL-linjer. Nesten alle pinnene er multifunksjonelle, men her fortsetter vi bare med I2C-moduspinner.
Pin-konfigurasjon:
Vcc: - denne pinnen brukes til å drive MPU6050-modulen i forhold til bakken
GND: - dette er en jordnål
SDA: - SDA-pinne brukes til data mellom kontrolleren og mpu6050-modulen
SCL: - SCL-pin brukes til klokkeinngang
XDA: - Dette er sensor I2C SDA-datalinje for konfigurering og lesing fra eksterne sensorer ((valgfritt) som ikke brukes i vårt tilfelle)
XCL: - Dette er sensor I2C SCL klokkelinje for konfigurering og lesing fra eksterne sensorer ((valgfritt) som ikke brukes i vårt tilfelle)
ADO: - I2C Slave Address LSB (ikke aktuelt i vårt tilfelle)
INT: - Avbryt pin for indikasjon på data klar.
Vi har tidligere grensesnitt MPU6050 med Arduino.
Beskrivelse:
I denne artikkelen viser vi temperatur-, gyro- og akselerometeravlesninger over LCD ved hjelp av MPU6050 med Raspberry Pi. Hvis du er ny i Raspberry Pi, så gå gjennom vår Raspberry Pi tutorials-seksjon og lær å komme i gang med Raspberry Pi.
I dette prosjektet har vi først vist temperatur verdi i løpet av LCD og etter en tid vi vise gyro verdier og deretter etter en tid vi har akselerometer målinger som vist på bildene nedenfor:
Kretsdiagram og forklaring:
Kretsskjemaet, for grensesnitt MPU6050 med Raspberry Pi, er veldig enkelt her. Vi har brukt en LCD og MPU6050. En 10 k gryte brukes til å kontrollere lysstyrken på LCD-skjermen. I forbindelse med MPU6050 har vi gjort 4 tilkoblinger der vi har koblet 3.3v strømforsyning og jord til MPU6050 til 3.3v og bakken til Raspberry Pi. SCL og SDA-pinner på MPU6050 er koblet til Raspberrys fysiske pinne 3 (GPIO2) og pinne 5 (GPIO3). LCDs RS, RW og EN er direkte koblet til GPIO18 og 23 av bringebær pi. Datapinnen er direkte koblet til det digitale pin-nummeret GPIO24, GPIO25, GPIO8 og GPIO7. Lær mer om grensesnitt LCD med Raspberry Pi her.
Konfigurere Raspberry Pi for MPU6050 Gyro-sensor:
Før vi begynner å programmere, må vi aktivere i2c av Raspberry Pi ved å bruke en gitt metode:
Trinn 1: Aktiver I2C-kommunikasjon
Før vi installerer Adafruit SSD1306-biblioteket, må vi aktivere I2C-kommunikasjon i Raspberry Pi.
For å gjøre denne typen i Raspberry Pi-konsoll:
sudo Raspi -config
Og så vises en blå skjerm. Velg nå grensesnittalternativet
Etter dette må vi velge I2C
</s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s>
Etter dette må vi velge ja og trykke enter og deretter ok
Etter dette må vi starte raspberry pi på nytt ved å utstede kommandoen nedenfor:
omstart av brus
Trinn 2: Installer python-pip og GPIO Library
sudo apt-get install build-essential python-dev python-pip
Etter dette må vi installere raspberry pi GPIO-biblioteket
sudo pip installerer RPi.GPIO
Trinn 3: Installer smbus- biblioteket
Til slutt må vi installere smbus- biblioteket i Raspberry Pi ved å bruke gitt kommando:
sudo apt-get install python-smbus
Trinn 4: Installer biblioteket MPU6050
Etter dette må vi installere MPU6050-biblioteket ved å bruke gitt kommando
sudo pip installere mpu6050
Nå kan vi finne eksempelkoder i eksemplene. Brukeren kan teste den koden ved å laste den opp direkte til Raspberry Pi eller tilpasse den etter behov. Her har vi vist MPU6050s X-, Y- og Z-akseverdier på 16x2 LCD. Du finner den fulle Python-koden på slutten av opplæringen.
Programmeringsforklaring:
Komplett Python-kode er gitt på slutten her. Vi forklarer noen viktige deler av koden.
I Python Program har vi importert noe påkrevd bibliotek som tid, smbus og GPIO.
importer smbus importtid import RPi.GPIO som gpio
Etter dette må vi ta en registeradresse for å konfigurere MPU6050 og for å få verdier fra det samme. Vi har også tatt noen variabler for kalibrering og initialisering av buss for 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 = 0 buss = 0x45 = AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Så har vi skrevet noen funksjoner for å kjøre 16x2LCD som def begin (), def cmd (ch), def skriv (ch), def Print (str), def clear () osv . Du kan sjekke videre Grensesnitt av LCD med Raspberry Pi.
Etter dette må vi initialisere MPU6050-modulen
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.data, INT_EN, 1) time.sleep (1)
Etter dette må vi skrive noen funksjoner for å lese verdier fra MPU6050 og vise dem til LCD. Denne funksjonen brukes til å lese data fra 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 returverdi
Denne funksjonen brukes til å lese data om akselerometer og gyrometer
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) visning (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)
Etter dette har vi skrevet en temperaturavlesningsfunksjon
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36.53 tempC = "%. 2f"% tempC print tempC setCursor (0,0) Print ("Temp:") Print (str (tempC)) time.sleep (.2)
def calibrate () -funksjonen brukes til å kalibrere MPU6050 og def display () -funksjonen brukes til å vise verdiene på LCD. Sjekk disse funksjonene i den fullstendige koden nedenfor.
Etter dette har vi begynt på LCD-skjermen, initialisert og kalibrert MPU6050, og deretter har vi kalt alle de tre verdisettene fra MPU- temperatur, akselerometer og gyro i løpet av en loop og vist dem over LCD.
begynne(); Print ("MPU6050 Interface") setCursor (0,1) Print ("Circuit Digest") time.sleep (2) InitMPU () kalibrer () mens 1: InitMPU () clear () for i innen rekkevidde (20): temp () clear () Print ("Accel") time.sleep (1) for i in range (30): accel () clear () Print ("Gyro") time.sleep (1) for i in range (30): gyro ()
MPU6050 gyro og akselerometer brukes begge til å oppdage posisjonen og retningen til en hvilken som helst enhet. Gyro bruker jordens tyngdekraft for å bestemme x-, y- og z-akseposisjonene og akselerometeret oppdager basert på hastigheten på bevegelsesendringen. Vi har allerede brukt akselerometeret med Arduino i mange av våre prosjekter som:
- Akselerometerbasert håndbevegelseskontrollert robot
- Arduino-basert bilvarslingssystem
- Jordskjelvdetektoralarm ved hjelp av Arduino