- Nödvändiga komponenter:
- MPU6050 gyrosensor:
- Beskrivning:
- Kretsschema och förklaring:
- Konfigurera Raspberry Pi för MPU6050 gyrosensor:
- Programmeringsförklaring:
MPU6050- sensorn har många funktioner över det enda chipet. Den består av en MEMS-accelerometer, en MEMS-gyro och temperatursensor. Den här modulen är mycket exakt när man konverterar analoga värden till digitala eftersom den har en 16-bitars analog till digital omvandlare för varje kanal. Den här modulen kan fånga x-, y- och z-kanaler samtidigt. Den har ett I2C-gränssnitt för att kommunicera med värdstyrenheten. Denna MPU6050-modul är ett kompakt chip med både accelerometer och gyro. Detta är en mycket användbar enhet för många applikationer som drönare, robotar, rörelsesensorer. Det kallas också Gyroscope eller Triple Axel accelerometer.
Idag i den här artikeln ska vi ansluta denna MPU6050 med Raspberry Pi och visa värdena över 16x2 LCD.
Nödvändiga komponenter:
- Raspberry Pi
- MPU-6050
- 10K POT
- Bygeltråd
- Bakbord
- Strömförsörjning
MPU6050 gyrosensor:
MPU-6050 är en 8-pin 6-axlig gyro och accelerometer i ett enda chip. Den här modulen fungerar som standard på seriell I2C-kommunikation men den kan konfigureras för SPI-gränssnitt genom att konfigurera registeret. För I2C har detta SDA- och SCL-linjer. Nästan alla stift har flera funktioner men här fortsätter vi bara med I2C-stift.
Pin-konfiguration:
Vcc: - denna stift används för att driva MPU6050-modulen i förhållande till marken
GND: - detta är en jordstift
SDA: - SDA-stift används för data mellan styrenhet och mpu6050-modulen
SCL: - SCL-stift används för klockingång
XDA: - Detta är sensor I2C SDA-datalinje för konfigurering och läsning från externa sensorer ((tillval) används inte i vårt fall)
XCL: - Detta är sensor I2C SCL klocklinje för konfigurering och avläsning från externa sensorer ((tillval) används inte i vårt fall)
ADO: - I2C Slavadress LSB (inte tillämpligt i vårt fall)
INT: - Avbryt stift för indikering av data redo.
Vi har tidigare gränssnitt MPU6050 med Arduino.
Beskrivning:
I den här artikeln visar vi temperatur-, gyro- och accelerometeravläsningar över LCD med MPU6050 med Raspberry Pi. Om du är ny på Raspberry Pi, gå igenom vår Raspberry Pi-handledningssektion och lär dig att komma igång med Raspberry Pi.
I det här projektet har vi först visade temperaturvärde över LCD och efter en tid visar vi gyro värden och sedan efter en tid har vi accelerometer avläsningar som visas i bilderna nedan:
Kretsschema och förklaring:
Kopplingsschemat, för samverkan MPU6050 med Raspberry Pi är mycket enkel här har vi använt en LCD och MPU6050. En 10k-kruka används för att styra LCD-skärmens ljusstyrka. I anslutning till MPU6050 har vi gjort fyra anslutningar där vi har anslutit 3.3v strömförsörjning och jord på MPU6050 till 3.3v och jord på Raspberry Pi. SCL- och SDA-stift på MPU6050 är anslutna till Raspberrys fysiska stift 3 (GPIO2) och stift 5 (GPIO3). LCD: s RS, RW och EN är direkt anslutna till GPIO18 och 23 av hallon pi. Datapinnen är direkt ansluten till det digitala pin-numret GPIO24, GPIO25, GPIO8 och GPIO7. Läs mer om gränssnitt mellan LCD och Raspberry Pi här.
Konfigurera Raspberry Pi för MPU6050 gyrosensor:
Innan du börjar programmera måste vi aktivera i2c i Raspberry Pi med en given metod:
Steg 1: Aktivera I2C-kommunikation
Innan vi installerar Adafruit SSD1306-biblioteket måste vi aktivera I2C-kommunikation i Raspberry Pi.
För att göra den här typen i Raspberry Pi-konsol:
sudo raspi -konfig
Och då visas en blå skärm. Välj nu gränssnittsalternativ
Efter detta måste vi välja I2C
</s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s>
Efter detta måste vi välja ja och trycka på enter och sedan ok
Efter detta måste vi starta om hallon pi genom att utfärda kommandot nedan:
omstart av sodo
Steg 2: Installera python-pip och GPIO Library
sudo apt-get install build-essential python-dev python-pip
Efter detta måste vi installera raspberry pi GPIO-bibliotek
sudo pip installerar RPi.GPIO
Steg 3: Installera smbus- biblioteket
Slutligen måste vi installera smbus- biblioteket i Raspberry Pi med ett givet kommando:
sudo apt-get install python-smbus
Steg 4: Installera biblioteket MPU6050
Efter detta måste vi installera MPU6050-biblioteket med ett givet kommando
sudo pip installera mpu6050
Nu kan vi hitta exempelkoder i exemplen. Användaren kan testa den koden genom att direkt ladda upp den till Raspberry Pi eller anpassa den efter behov. Här har vi visat MPU6050s X-, Y- och Z-axelvärden på 16x2 LCD. Du hittar den fullständiga Python-koden i slutet av handledningen.
Programmeringsförklaring:
Komplett Python-kod ges i slutet här förklarar vi några viktiga delar av koden.
I Python-programmet har vi importerat några obligatoriska bibliotek som tid, smbus och GPIO.
importera smbus importtid importera RPi.GPIO som gpio
Efter detta måste vi ta en registeradress för att konfigurera MPU6050 och för att få värden från samma. Vi har också tagit några variabler för kalibrering och initialisering av buss för I2C.
PWR_M = 0x6B DIV = 0x19 KONFIG = 0x1A GYRO_CONFIG = 0x1B INT_SV = 0x38 ACCEL_X = 0x3B ACCEL_Y = 0x3D ACCEL_Z = 0x3F GYRO_X = 0x43 GYRO_Y = 0x45 GYRO_Z = 0xx = 0x45 = AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Då har vi skrivit några funktioner för körning 16x2LCD som def börjar (), def cmd (CH), def write (CH), def Print (str), def clear () osv . Du kan ytterligare kontrollera Gränssnitt mellan LCD och Raspberry Pi.
Efter detta måste vi initialisera MPU6050-modulen
def InitialMPU (): buss.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)
Efter detta måste vi skriva några funktioner för att läsa värden från MPU6050 och visa dem på LCD. Angiven funktion används för att läsa data från 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 returvärde
Angiven funktion används för att läsa data om accelerometer och 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 (Ax) display (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)
Efter detta har vi skrivit en temperaturavläsningsfunktion
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 kalibrera () funktion används för att kalibrera MPU6050 och def display () funktion används för att visa värdena på LCD. Kontrollera dessa funktioner i den fullständiga koden nedan.
Efter detta har vi börjat LCD, Initiera och kalibrera MPU6050 och sedan i medan slinga som vi har kallat alla alla tre uppsättning värden från MPU- temperatur, accelerometer och gyro och visade dem över skärmen.
Börja(); Print ("MPU6050 Interface") setCursor (0,1) Print ("Circuit Digest") time.sleep (2) InitMPU () kalibrera () medan 1: InitMPU () clear () för i inom intervallet (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 och accelerometer används båda för att detektera position och orientering för vilken enhet som helst. Gyro använder jordens tyngdkraft för att bestämma x-, y- och z-axelns positioner och accelerometerdetekterar baserat på hastigheten för rörelseförändringen. Vi har redan använt accelerometern med Arduino i många av våra projekt som:
- Accelerometerbaserad handstyrd robot
- Arduino-baserat varningssystem för bilolyckor
- Jordbävningsdetektorlarm med Arduino