- Požadované komponenty:
- Gyroskopický senzor MPU6050:
- Popis:
- Schéma zapojenia a vysvetlenie:
- Konfigurácia Raspberry Pi pre gyroskopický senzor MPU6050:
- Vysvetlenie programovania:
Snímač MPU6050 má mnoho funkcií oproti jedinému čipu. Skladá sa z akcelerometra MEMS, gyroskopu MEMS a teplotného snímača. Tento modul je veľmi presný pri prevode analógových hodnôt na digitálne, pretože má 16-bitový hardvér analógovo-digitálneho prevodu pre každý kanál. Tento modul je schopný snímať kanály x, yaz súčasne. Má rozhranie I2C na komunikáciu s hostiteľským radičom. Tento modul MPU6050 je kompaktný čip s akcelerometrom aj gyroskopom. Toto je veľmi užitočné zariadenie pre mnoho aplikácií ako drony, roboty, snímače pohybu. Tiež sa nazýva gyroskop alebo trojosový akcelerometer.
Dnes v tomto článku sa chystáme prepojiť tento MPU6050 s Raspberry Pi a ukazovať hodnoty na 16x2 LCD.
Požadované komponenty:
- Malinový koláč
- MPU-6050
- 10K POT
- Prepojovací drôt
- Nepál
- Zdroj
Gyroskopický senzor MPU6050:
MPU-6050 je 8-pinový 6-osový gyroskop a akcelerometer v jednom čipe. Tento modul štandardne pracuje na sériovej komunikácii I2C, ale je možné ho nakonfigurovať pre rozhranie SPI nakonfigurovaním jeho registra. Pre I2C má vedenie SDA a SCL. Takmer všetky kolíky sú multifunkčné, ale tu postupujeme iba s kolíkmi v režime I2C.
Konfigurácia kolíka:
Vcc: - tento pin sa používa na napájanie modulu MPU6050 vzhľadom na zem
GND: - toto je uzemňovací kolík
SDA: - Pin SDA sa používa na údaje medzi radičom a modulom mpu6050
SCL: - SCL pin sa používa pre vstup hodín
XDA: - Toto je dátová linka I2C SDA senzora na konfiguráciu a čítanie z externých senzorov (v našom prípade sa nepoužíva) (voliteľné).
XCL: - Jedná sa o hodinovú linku I2C SCL snímača na konfiguráciu a čítanie z externých snímačov (v našom prípade sa nepoužíva) (voliteľné).
ADO: - I2C Slave Address LSB (v našom prípade neplatí)
INT: - Prerušovací kolík na indikáciu pripravenosti údajov.
Predtým sme prepojili MPU6050 s Arduinom.
Popis:
V tomto článku ukazujeme hodnoty teploty, gyroskopu a akcelerometra na LCD displeji pomocou MPU6050 s Raspberry Pi. Ak ste na Raspberry Pi nováčikom, prečítajte si našu sekciu tutoriálov o Raspberry Pi a naučte sa, ako začať s Raspberry Pi.
V tomto projekte sme najskôr zobrazili hodnotu teploty na LCD a po nejakom čase ukážeme gyroskopické hodnoty a potom po nejakom čase máme hodnoty akcelerometra, ako je to znázornené na obrázkoch nižšie:
Schéma zapojenia a vysvetlenie:
Schéma zapojenia, ktorá je prepojiteľná s MPU6050 s Raspberry Pi, je veľmi jednoduchá, tu sme použili LCD a MPU6050. Na kontrolu jasu LCD sa používa hrniec 10k. V súvislosti s MPU6050 sme vykonali 4 pripojenia, v ktorých sme pripojili napájací zdroj a uzemnenie 3,3 V MPU6050 na 3,3 V a zem Raspberry Pi. Kolíky SCL a SDA MPU6050 sú spojené s fyzickým pinom Raspberry 3 (GPIO2) a pinom 5 (GPIO3). LCD, RS, RW a EN sú priamo pripojené k GPIO18 a 23 z malín pi. Dátový kolík je priamo pripojený k číslu digitálneho kolíka GPIO24, GPIO25, GPIO8 a GPIO7. Viac informácií o prepojení LCD s Raspberry Pi sa dozviete tu.
Konfigurácia Raspberry Pi pre gyroskopický senzor MPU6050:
Pred začatím programovania musíme povoliť i2c Raspberry Pi pomocou danej metódy:
Krok 1: Povoľte komunikáciu I2C
Pred inštaláciou knižnice Adafruit SSD1306 musíme povoliť komunikáciu I2C v Raspberry Pi.
Postup v konzole Raspberry Pi:
sudo raspi -config
Potom sa zobrazí modrá obrazovka. Teraz vyberte možnosť rozhrania
Potom budeme musieť zvoliť I2C
Zloženie: 100% bavlna.
Potom musíme zvoliť áno, stlačiť kláves Enter a potom ok
Potom musíme reštartovať malinovú pi vydaním nasledujúceho príkazu:
reštart systému sodo
Krok 2: Nainštalujte python-pip a knižnicu GPIO
sudo apt-get install build-essential python-dev python-pip
Potom musíme nainštalovať GPIO knižnicu maliny pi
sudo pip nainštaluje RPi.GPIO
Krok 3: Nainštalujte si knižnicu smbus
Nakoniec musíme nainštalovať knižnicu smbus na Raspberry Pi pomocou zadaného príkazu:
sudo apt-get nainštalovať python-smbus
Krok 4: Nainštalujte knižnicu MPU6050
Potom musíme pomocou zadaného príkazu nainštalovať knižnicu MPU6050
sudo pip nainštalovať mpu6050
Teraz v príkladoch nájdeme vzorové kódy. Užívateľ môže tento kód otestovať priamym nahraním na Raspberry Pi alebo si ho prispôsobiť podľa požiadavky. Tu sme zobrazili hodnoty osi X, Y a Z MPU6050 na 16x2 LCD. Nájdete plnú Python kód na konci výukového programu.
Vysvetlenie programovania:
Kompletný kód Pythonu je uvedený na konci, kde vysvetľujeme niekoľko dôležitých častí kódu.
V programe Python sme importovali niektoré požadované knižnice, ako sú čas, smbus a GPIO.
import smbus čas importu import RPi.GPIO ako gpio
Potom musíme zobrať nejakú adresu registra na konfiguráciu MPU6050 a na získanie hodnôt z tej istej. Zobrali sme tiež niekoľko premenných na kalibráciu a inicializáciu zbernice pre 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 = 0x41 TEMP = 0x47 TEMP = 0x47 TEMP = 0 AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Potom sme napísali niektoré funkcie pre Driving 16x2LCD ako def start (), def cmd (ch), def write (ch), def Print (str), def clear () atď . Ďalej môžete skontrolovať Prepojenie LCD s Raspberry Pi.
Potom musíme inicializovať 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_Address, GYRO_CONFrite, 24), INT_EN, 1) time.sleep (1)
Potom musíme napísať niektoré funkcie, aby sme načítali hodnoty z MPU6050 a zobrazili ich na LCD. Daná funkcia sa používa na načítanie údajov z 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 návratová hodnota
Daná funkcia sa používa na čítanie údajov akcelerometra a gyroskopu
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) zobrazenie (Gx, Gy, Gz) čas.sleep (. 01)
Potom sme napísali funkciu čítania teploty
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)
funkcia def calibrate () slúži na kalibráciu MPU6050 a funkcia def display () slúži na zobrazenie hodnôt na LCD displeji. Skontrolujte tieto funkcie v úplnom kóde uvedenom nižšie.
Potom sme zahájili LCD, inicializáciou kalibráciu MPU6050 a potom , zatiaľ čo slučka sme nazvali všetky všetky tri sady hodnôt zo MPU- teploty, akcelerometra a gyroskopu a ukázal im cez LCD.
začať(); Print ("MPU6050 Interface") setCursor (0,1) Print ("Circuit Digest") time.sleep (2) InitMPU () calibrate () while 1: InitMPU () clear () for i in range (20): temp () clear () Tlač ("Accel") time.sleep (1) pre i v rozsahu (30): accel () clear () Tlač ("Accel") time.sleep (1) pre i v rozsahu (30): gyroskop ()
Gyroskop a akcelerometer MPU6050 sa používajú na zisťovanie polohy a orientácie ľubovoľného zariadenia. Gyroskop využíva zemskú gravitáciu na určenie polôh osi x, y a z a detekuje akcelerometer na základe rýchlosti zmeny pohybu. Akcelerometer sme už s Arduinom používali v mnohých našich projektoch, ako napríklad:
- Robot riadený gestami pomocou akcelerometra
- Výstražný systém o nehode vozidla založený na Arduine
- Alarm detektora zemetrasenia pomocou Arduina