- Potrebne komponente:
- MPU6050 žiro senzor:
- Opis:
- Kružni dijagram i objašnjenje:
- Konfiguriranje Raspberry Pi za žiroskop MPU6050:
- Objašnjenje programiranja:
MPU6050 senzor ima brojne funkcije preko jednog čipa. Sastoji se od akcelerometra MEMS, žiroskopa MEMS i temperaturnog senzora. Ovaj je modul vrlo precizan prilikom pretvaranja analognih vrijednosti u digitalne, jer za svaki kanal ima hardver analognog u digitalni pretvarač od 16 bita. Ovaj modul može istovremeno hvatati x, y i z kanal. Ima I2C sučelje za komunikaciju s host kontrolerom. Ovaj MPU6050 modul kompaktni je čip koji ima i akcelerometar i žiroskop. Ovo je vrlo koristan uređaj za mnoge aplikacije poput dronova, robota, senzora pokreta. Također se naziva i žiroskop ili troosni akcelerometar.
Danas ćemo u ovom članku povezati ovaj MPU6050 s Raspberry Pi i prikazati vrijednosti preko LCD-a 16x2.
Potrebne komponente:
- Raspberry Pi
- MPU-6050
- 10K LONAC
- Žica kratkospojnika
- Breadboard
- Napajanje
MPU6050 žiro senzor:
MPU-6050 je 8-pinski 6-osni žiroskop i akcelerometar u jednom čipu. Ovaj modul prema zadanim postavkama radi na serijskoj komunikaciji I2C, ali se može konfigurirati za SPI sučelje konfiguriranjem registra. Za I2C ovo ima SDA i SCL linije. Gotovo sve iglice višestruko funkcioniraju, ali ovdje radimo samo s pinovima u I2C načinu.

Konfiguracija pribadače:
Vcc: - ovaj se pin koristi za napajanje modula MPU6050 s obzirom na masu
GND: - ovo je uzemljena igla
SDA: - SDA pin koristi se za podatke između kontrolera i mpu6050 modula
SCL: - SCL pin služi za unos sata
XDA: - Ovo je senzorska linija podataka I2C SDA za konfiguriranje i čitanje s vanjskih senzora ((opcionalno) koja se u našem slučaju ne koristi)
XCL: - Ovo je satna linija I2C SCL sata za konfiguriranje i očitavanje s vanjskih senzora ((opcionalno) koja se u našem slučaju ne koristi)
ADO: - I2C adresa slave LSB (nije primjenjiva u našem slučaju)
INT: - Prekidna iglica za prikaz spremnosti podataka.
Prethodno smo povezali MPU6050 s Arduinom.
Opis:
U ovom članku prikazujemo očitanja temperature, žiroskopa i akcelerometra na LCD-u pomoću MPU6050 s Raspberry Pi. Ako ste novi u Raspberry Pi, prođite kroz naš odjeljak s vodičima za Raspberry Pi i naučite kako započeti s Raspberry Pi.
U ovom smo projektu prvo prikazali temperaturnu vrijednost preko LCD-a, a nakon nekog vremena prikazujemo žiroskopske vrijednosti, a nakon nekog vremena imamo očitanja akcelerometra kao što je prikazano na slikama ispod:


Kružni dijagram i objašnjenje:
Shema sklopa, za povezivanje MPU6050 s Raspberry Pi, vrlo je jednostavna ovdje smo koristili LCD i MPU6050. Za upravljanje svjetlinom LCD-a koristi se posuda od 10 k. U vezi s MPU6050, napravili smo 4 veze u kojima smo spojili napajanje od 3.3v i masu MPU6050 na 3.3v i masu Raspberry Pi. SCL i SDA pinovi MPU6050 povezani su s Raspberryovim fizičkim pinom 3 (GPIO2) i pin 5 (GPIO3). LCD-ovi RS, RW i EN izravno su povezani s GPIO18 i 23 od malina pi. Data pin su izravno povezani s digitalnim pin brojevima GPIO24, GPIO25, GPIO8 i GPIO7. Ovdje saznajte više o povezivanju LCD zaslona s Raspberry Pi.

Konfiguriranje Raspberry Pi za žiroskop MPU6050:
Prije početka programiranja, moramo omogućiti i2c Raspberry Pi korištenjem zadane metode:
Korak 1: Omogućite I2C komunikaciju
Prije instaliranja biblioteke Adafruit SSD1306 moramo omogućiti I2C komunikaciju u Raspberry Pi.
Da biste to učinili u Raspberry Pi konzoli:
sudo raspi -config
A onda će se pojaviti plavi zaslon. Sada odaberite opciju sučelja

Nakon toga trebamo odabrati I2C
U

Nakon toga moramo odabrati da i pritisnuti enter i onda ok

Nakon toga, moramo ponovno pokrenuti Raspberry Pi izdavanjem naredbe ispod:
sodo ponovno pokretanje
Korak 2: Instalirajte python-pip i GPIO knjižnicu
sudo apt-get instalirati graditi-bitno python-dev python-pip
Nakon toga moramo instalirati Raspberry pi GPIO knjižnicu
sudo pip instalira RPi.GPIO
Korak 3: Instalirajte smbus knjižnicu
Na kraju, moramo instalirati smbus biblioteku u Raspberry Pi pomoću zadane naredbe:
sudo apt-get instalirati python-smbus

Korak 4: Instalirajte knjižnicu MPU6050
Nakon toga trebamo instalirati MPU6050 knjižnicu pomoću zadane naredbe

sudo pip instalirati mpu6050
Sada u primjerima možemo pronaći primjere kodova. Korisnik može testirati taj kôd izravnim prijenosom na Raspberry Pi ili ga prilagoditi prema zahtjevu. Ovdje smo prikazali vrijednosti osi X, Y i Z MPU6050 na LCD zaslonu 16x2. Puni Python kod možete pronaći na kraju Vodiča.
Objašnjenje programiranja:
Kompletni Python kod dat je na kraju, ovdje objašnjavamo nekoliko važnih dijelova koda.
U program Python uvezli smo neke potrebne biblioteke poput vremena, smbusa i GPIO-a.
uvoz smbus vrijeme uvoza import RPi.GPIO kao gpio
Nakon toga, trebamo uzeti neku adresu registra za konfiguriranje MPU6050 i za dobivanje vrijednosti s istog. Također smo uzeli neke varijable za kalibriranje i inicijalizaciju sabirnice za 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_P = 0bus45 GxROBZ = 0bus45Gx47ZD = 0bus45 GxROBZ = 0bus45 GxROBZ = 0bus45 GxROBZ = 0bus45 GxROBZ = 0bus45 GxROBZ = 0bus45 GXROBZ = 0bus45 GxROBZ = 0bus45 GxROBZ = 0bus45 GxROBP = 0bus45 GxROBZ = 0bus45 GXRO_P = 0bus45 AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Tada smo napisali neke funkcije za vožnju 16x2LCD poput def begin (), def cmd (ch), def write (ch), def Print (str), def clear () itd . Dalje možete provjeriti Povezivanje LCD zaslona s Raspberry Pi.
Nakon toga moramo pokrenuti modul MPU6050
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_AddressONGYROAddress.GYROAddress.GYRO_Adrite.GYRO.Adrite.GYRO_Adrite.GYRO.Adrite.GYRO., INT_EN, 1) time.sleep (1)
Nakon toga trebamo napisati neke funkcije za čitanje vrijednosti s MPU6050 i prikazivanje na LCD-u. Dana funkcija koristi se za čitanje podataka s 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 povratna vrijednost
Zadana funkcija koristi se za očitavanje podataka akcelerometra i žirometra
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) prikaz (Axe, Ay, Az) time.sleep (.01) def giro (): globalni GxCal globalni GyCal globalni 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) prikaz (Gx, Gy, Gz) vrijeme.spavanje (. 01)
Nakon toga napisali smo funkciju očitavanja temperature
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36.53 tempC = "%. 2f"% tempC print tempC setCursor (0,0) Print ("Temp:") Print (str (tempC)) vrijeme.spavanje (.2)
funkcija def calibrate () koristi se za kalibriranje MPU6050, a funkcija def display () koristi se za prikaz vrijednosti na LCD-u. Provjerite ove funkcije u dolje navedenom cjelovitom kodu.
Nakon toga započeli smo s LCD-om, inicijalizirali i kalibrirali MPU6050, a zatim smo u while petlju pozvali sve tri skupine vrijednosti iz MPU- temperature, akcelerometra i žiroskopa i pokazali ih preko LCD-a.
početi(); Ispis ("MPU6050 sučelje") setCursor (0,1) Print ("Circuit Digest") time.sleep (2) InitMPU () calibrate () dok je 1: InitMPU () clear () za i in range (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): žiro()


Žiroskop MPU6050 i akcelerometar koriste se za otkrivanje položaja i orijentacije bilo kojeg uređaja. Žiroskop koristi zemaljsku gravitaciju za određivanje položaja x, y i z osi, a akcelerometar otkriva na temelju brzine promjene kretanja. Akcelerometar smo već koristili s Arduinom u mnogim našim projektima poput:
- Robot pod nadzorom gestova zasnovan na akcelerometru
- Sustav upozorenja na nesreću na bazi Arduina
- Alarm detektora potresa pomoću Arduina
