- Nødvendige komponenter:
- MPU6050 gyrosensor:
- Beskrivelse:
- Kredsløbsdiagram og forklaring:
- Konfiguration af Raspberry Pi til MPU6050 Gyro-sensor:
- Programmeringsforklaring:
MPU6050- sensoren har mange funktioner over den enkelte chip. Det består af et MEMS-accelerometer, en MEMS-gyro og temperatursensor. Dette modul er meget nøjagtigt ved konvertering af analoge værdier til digitale, fordi det har en 16bit analog til digital konverterhardware til hver kanal. Dette modul er i stand til at fange x-, y- og z-kanaler på samme tid. Den har en I2C-grænseflade til at kommunikere med værtscontrolleren. Dette MPU6050-modul er en kompakt chip med både accelerometer og gyro. Dette er en meget nyttig enhed til mange applikationer som droner, robotter, bevægelsessensorer. Det kaldes også gyroskop eller tredobbelt akselerometer.
I dag i denne artikel skal vi interface denne MPU6050 med Raspberry Pi og vise værdierne over 16x2 LCD.
Nødvendige komponenter:
- Hindbær Pi
- MPU-6050
- 10K POTTE
- Jumper wire
- Brødbræt
- Strømforsyning
MPU6050 gyrosensor:
MPU-6050 er en 8-pin 6-akset gyro og accelerometer i en enkelt chip. Dette modul fungerer som standard på I2C seriel kommunikation, men det kan konfigureres til SPI-interface ved at konfigurere det register. For I2C har dette SDA og SCL linjer. Næsten alle benene er multifunktionelle, men her fortsætter vi kun med I2C-mode-ben.
Pin-konfiguration:
Vcc: - denne ben bruges til at forsyne MPU6050-modulet med hensyn til jord
GND: - dette er en jordnål
SDA: - SDA-ben bruges til data mellem controller og mpu6050-modul
SCL: - SCL-pin bruges til urindgang
XDA: - Dette er sensor I2C SDA-datalinje til konfiguration og læsning fra eksterne sensorer ((valgfri), der ikke bruges i vores tilfælde)
XCL: - Dette er sensor I2C SCL urlinje til konfiguration og læsning fra eksterne sensorer ((valgfri), der ikke bruges i vores tilfælde)
ADO: - I2C Slave Address LSB (ikke relevant i vores tilfælde)
INT: - Afbryd pin til indikation af data klar.
Vi har tidligere grænsefladen MPU6050 med Arduino.
Beskrivelse:
I denne artikel viser vi temperatur-, gyro- og accelerometeraflæsninger over LCD ved hjælp af MPU6050 med Raspberry Pi. Hvis du er ny hos Raspberry Pi, skal du gennemgå vores Raspberry Pi-tutorials-sektion og lære at komme i gang med Raspberry Pi.
I dette projekt har vi først vist temperatur værdi i løbet af LCD og efter nogen tid viser vi gyro værdier og derefter efter et stykke tid, vi har accelerometer aflæsninger som vist på billederne nedenfor:
Kredsløbsdiagram og forklaring:
Kredsløbsdiagrammet til interface mellem MPU6050 og Raspberry Pi er meget simpelt, her har vi brugt en LCD og MPU6050. En 10k pot bruges til at kontrollere lysstyrken på LCD'et. I forbindelse med MPU6050 har vi foretaget 4 forbindelser, hvor vi har tilsluttet 3.3v strømforsyning og jord på MPU6050 til 3.3v og jord på Raspberry Pi. SCL- og SDA-ben på MPU6050 er forbundet med Raspberrys fysiske pin 3 (GPIO2) og pin 5 (GPIO3). LCD's RS, RW og EN er direkte forbundet til GPIO18 og 23 af hindbær pi. Datapinnen er direkte forbundet til det digitale pin-nummer GPIO24, GPIO25, GPIO8 og GPIO7. Lær mere om grænseflade mellem LCD og Raspberry Pi her.
Konfiguration af Raspberry Pi til MPU6050 Gyro-sensor:
Før vi starter programmeringen, skal vi aktivere i2c af Raspberry Pi ved hjælp af en given metode:
Trin 1: Aktivér I2C-kommunikation
Før vi installerer Adafruit SSD1306-biblioteket, skal vi aktivere I2C-kommunikation i Raspberry Pi.
For at gøre denne type i Raspberry Pi-konsol:
sudo raspi -konfig
Og så vises en blå skærm. Vælg nu grænseflademulighed
Herefter skal vi vælge I2C
</s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s>
Herefter skal vi vælge ja og trykke på enter og derefter ok
Efter dette er vi nødt til at genstarte hindbær pi ved at udstede nedenstående kommando:
genstart af sodo
Trin 2: Installer python-pip og GPIO Library
sudo apt-get install build-essentiel python-dev python-pip
Herefter skal vi installere raspberry pi GPIO-bibliotek
sudo pip installerer RPi.GPIO
Trin 3: Installer smbus- biblioteket
Endelig skal vi installere smbus- biblioteket i Raspberry Pi ved hjælp af den givne kommando:
sudo apt-get install python-smbus
Trin 4: Installer biblioteket MPU6050
Herefter skal vi installere MPU6050-biblioteket ved hjælp af den givne kommando
sudo pip installer mpu6050
Nu kan vi finde eksempler på koder i eksemplerne. Brugeren kan teste denne kode ved direkte at uploade til Raspberry Pi eller tilpasse den efter krav. Her har vi vist MPU6050s X-, Y- og Z-akseværdier på 16x2 LCD. Du kan finde den fulde Python-kode i slutningen af vejledningen.
Programmeringsforklaring:
Komplet Python-kode er givet i slutningen her, vi forklarer nogle få vigtige dele af koden.
I Python-programmet har vi importeret noget krævet bibliotek som tid, smbus og GPIO.
import smbus importtid import RPi.GPIO som gpio
Herefter skal vi tage en registeradresse for at konfigurere MPU6050 og for at få værdier fra det samme. Vi har også taget nogle variabler til kalibrering og initialisering af bus til I2C.
PWR_M = 0x6B DIV = 0x19 KONFIG = 0x1A GYRO_CONFIG = 0x1B INT_DA = 0x38 ACCEL_X = 0x3B ACCEL_Y = 0x3D ACCEL_Z = 0x3F GYRO_X = 0x43 GYRO_Y = 0x45 GYRO_Z = 0 bus = 0x45 = AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Så har vi skrevet nogle funktioner til kørsel af 16x2LCD som def begin (), def cmd (ch), def skriv (ch), def Print (str), def clear () osv . Du kan yderligere kontrollere Interfacing af LCD med Raspberry Pi.
Herefter skal vi initialisere MPU6050-modulet
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_CONF.IG.data), INT_DA, 1) time.sleep (1)
Herefter skal vi skrive nogle funktioner for at læse værdier fra MPU6050 og vise dem på LCD. Denne funktion bruges til at læse 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 returværdi
Denne funktion bruges til at læse data om accelerometer 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) 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)
Herefter har vi skrevet en temperaturlæ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 kalibrering () funktion bruges til at kalibrere MPU6050 og def display () funktion bruges til at vise værdierne på LCD. Kontroller disse funktioner i den fulde kode nedenfor.
Efter dette, har vi indledt LCD, formatere og kalibrere MPU6050 og derefter i mens løkke vi har kaldt alle de alle tre sæt af værdier fra MPU- temperatur, accelerometer og gyro og viste dem over LCD.
begynde(); Print ("MPU6050 Interface") setCursor (0,1) Print ("Circuit Digest") time.sleep (2) InitMPU () kalibrer () mens 1: InitMPU () clear () for i i området (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 accelerometer bruges begge til at detektere placeringen og orienteringen af en hvilken som helst enhed. Gyro bruger jordens tyngdekraft til at bestemme positionerne x, y og z-akse, og accelerometer registrerer baseret på hastigheden af bevægelsesændringen. Vi har allerede brugt accelerometeret med Arduino i mange af vores projekter som:
- Accelerometerbaseret håndbevægelsesstyret robot
- Arduino-baseret alarmsystem til køretøjsulykker
- Jordskælvdetektoralarm ved hjælp af Arduino