- Vaaditut komponentit:
- MPU6050-gyroanturi:
- Kuvaus:
- Piirikaavio ja selitys:
- Raspberry Pi: n määrittäminen MPU6050 Gyro -anturille:
- Ohjelmoinnin selitys:
MPU6050- anturilla on monia toimintoja yhdellä sirulla. Se koostuu MEMS-kiihtyvyysanturista, MEMS-gyro- ja lämpötila-anturista. Tämä moduuli on erittäin tarkka muunnettaessa analogiset arvot digitaalisiksi, koska siinä on 16-bittinen analogia-digitaalimuunnin-laitteisto kullekin kanavalle. Tämä moduuli pystyy sieppaamaan x-, y- ja z-kanavia samanaikaisesti. Siinä on I2C-liitäntä kommunikoida isäntäohjaimen kanssa. Tämä MPU6050-moduuli on kompakti siru, jossa on sekä kiihtyvyysanturi että gyro. Tämä on erittäin hyödyllinen laite moniin sovelluksiin, kuten droneihin, robotteihin, liiketunnistimiin. Sitä kutsutaan myös gyroskoopiksi tai kolminkertaisen akselin kiihtyvyysmittariksi.
Tänään tässä artikkelissa aiomme liittää tämän MPU6050: n Raspberry Pi: n kanssa ja näyttää arvot yli 16x2 LCD: n.
Vaaditut komponentit:
- Vadelma Pi
- MPU-6050
- 10K POT
- Neulalanka
- Leipälauta
- Virtalähde
MPU6050-gyroanturi:
MPU-6050 on 8-napainen 6-akselinen gyro- ja kiihtyvyysanturi yhdessä sirussa. Tämä moduuli toimii oletusarvoisesti I2C-sarjaliikenteessä, mutta se voidaan määrittää SPI-liitäntää varten määrittämällä sen rekisteri. I2C: lle tässä on SDA- ja SCL-linjat. Lähes kaikki nastat ovat monitoimisia, mutta tässä on kyse vain I2C-moodin nastoista.
PIN-määritys:
Vcc: - tätä tapia käytetään MPU6050-moduulin virtalähteeseen suhteessa maahan
GND: - tämä on maadoitettu tappi
SDA: - SDA-nastaa käytetään ohjaimen ja mpu6050-moduulin väliseen dataan
SCL: - SCL-nastaa käytetään kellotuloon
XDA: - Tämä on anturi I2C SDA-tietolinja ulkoisten antureiden konfigurointiin ja lukemiseen ((valinnainen) ei käytetä meidän tapauksessamme)
XCL: - Tämä on anturi I2C SCL -kellolinja ulkoisten antureiden konfigurointiin ja lukemiseen ((valinnainen) ei käytetä meidän tapauksessamme)
ADO: - I2C-orjaosoite LSB (ei sovellettavissa meidän tapauksessamme)
INT: - Keskeytystappi tietojen ilmoittamiseen valmiina.
Olemme aiemmin liittäneet MPU6050: n Arduinoon.
Kuvaus:
Tässä artikkelissa näytetään lämpötilan, gyro- ja kiihtyvyysmittarin lukemat nestekidenäytöllä MPU6050: n ja Raspberry Pi: n avulla. Jos olet uusi Raspberry Pi -ohjelmassa, käy läpi Raspberry Pi -oppaat -osiosta ja opi aloittamaan Raspberry Pi -palvelun käyttö.
Tässä projektissa olemme ensin osoittaneet lämpötila- arvon LCD-näytöllä ja jonkin ajan kuluttua näytämme gyro-arvot ja sitten jonkin ajan kuluttua kiihtyvyysmittarin lukemat alla olevien kuvien mukaisesti:
Piirikaavio ja selitys:
Piirikaavio, vuorovaikutuksessa MPU6050 vadelmanvärisine Pi, on hyvin yksinkertainen tässä on käytetty LCD ja MPU6050. 10k pottia käytetään nestekidenäytön kirkkauden säätämiseen. MPU6050: n yhteydessä olemme tehneet 4 liitäntää, joissa olemme liittäneet MPU6050: n 3,3 V: n virtalähteen ja maadoituksen Raspberry Pi: n 3,3 V: iin ja maahan. MPU6050: n SCL- ja SDA-nastat on liitetty Vadelman fyysiseen tapiin 3 (GPIO2) ja tapiin 5 (GPIO3). LCD: n RS, RW ja EN on kytketty suoraan GPIO18: een ja 23 vadelma pi. Datanasta on kytketty suoraan digitaalisiin PIN-numeroihin GPIO24, GPIO25, GPIO8 ja GPIO7. Lisätietoja LCD-näytön ja Raspberry Pi: n liittämisestä täältä.
Raspberry Pi: n määrittäminen MPU6050 Gyro -anturille:
Ennen ohjelmoinnin aloittamista meidän on otettava Raspberry Pi: n i2c käyttöön annetulla menetelmällä:
Vaihe 1: Ota I2C-yhteys käyttöön
Ennen kuin asennamme Adafruit SSD1306 -kirjaston, meidän on sallittava I2C-tiedonsiirto Raspberry Pi: ssä.
Voit tehdä tämän tyypin Raspberry Pi -konsolissa:
sudo Raspi -config
Ja sitten sininen näyttö tulee näkyviin. Valitse nyt käyttöliittymävaihtoehto
Tämän jälkeen meidän on valittava I2C
A
Tämän jälkeen meidän on valittava kyllä ja painettava Enter ja sitten ok
Tämän jälkeen meidän on käynnistettävä vadelma pi uudelleen käynnistämällä alla oleva komento:
sodo uudelleenkäynnistetään
Vaihe 2: Asenna python-pip ja GPIO-kirjasto
sudo apt-get install build-essential python-dev python-pip
Tämän jälkeen meidän on asennettava vadelma pi GPIO -kirjasto
sudo pip asentaa RPi.GPIO
Vaihe 3: Asenna smbus- kirjasto
Lopuksi meidän on asennettava smbus- kirjasto Raspberry Piin käyttämällä annettua komentoa:
sudo apt-get install python-smbus
Vaihe 4: Asenna kirjasto MPU6050
Tämän jälkeen meidän on asennettava MPU6050-kirjasto annetulla komennolla
sudo pip asenna mpu6050
Nyt voimme löytää esimerkkikoodeja esimerkeistä. Käyttäjä voi testata koodin lataamalla suoraan Raspberry Pi -laitteeseen tai mukauttaa sitä vaatimusten mukaan. Tässä olemme näyttäneet MPU6050: n X-, Y- ja Z-akseliarvot 16x2 LCD-näytöllä. Löydät koko Python-koodin opetusohjelman lopusta.
Ohjelmoinnin selitys:
Täydellinen Python-koodi on tässä lopussa, selitämme muutaman tärkeän osan koodista.
Python-ohjelmassa olemme tuoneet joitain vaadittuja kirjastoja, kuten aika, smbus ja GPIO.
import smbus import time import RPi.GPIO as gpio
Tämän jälkeen meidän on otettava joitain rekisteriosoitteita MPU6050: n konfiguroimiseksi ja arvojen saamiseksi siitä. Olemme myös ottaneet muuttujia I2C-väylän kalibroimiseksi ja alustamiseksi.
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 = 0x47 TEMP = 0x41 linja = smbus.SMBus (1) DEVICE_ADDRESS = 0x68 # laiteosoite AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Sitten olemme kirjoittaneet joitain toimintoja 16x2LCD: n ajamiseen, kuten def begin (), def cmd (ch), def write (ch), def Print (str), def clear () jne . Voit tarkistaa LCD-näytön ja Raspberry Pi: n välisen liitännän.
Tämän jälkeen meidän on alustettava MPU6050-moduuli
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_add (Device_Address), INT_FI, 1) aika. Uni (1)
Tämän jälkeen meidän on kirjoitettava joitain toimintoja lukemaan arvoja MPU6050: stä ja näyttämään ne LCD-näytöllä. Annettua toimintoa käytetään tietojen lukemiseen MPU6050: stä
def readMPU (addr): korkea = bus.read_byte_data (Device_Address, addr) low = bus.read_byte_data (Device_Address, addr + 1) value = ((high << 8) - low) if (value> 32768): arvo = arvo - 65536 palautusarvo
Annettua toimintoa käytetään kiihtyvyysmittarin ja gyromittarin tietojen lukemiseen
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) näyttö (Ax, Ay, Az) time.sleep (.01) def gyro (): globaali GxCal globaali GyCal globaali 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) näyttö (Gx, Gy, Gz) time.sleep (. 01)
Tämän jälkeen olemme kirjoittaneet lämpötilan lukutoiminnon
def temp (): tempRow = lukuMPU (TEMP) tempC = (tempRow / 340.0) + 36,53 tempC = "%. 2f"% tempC tulostuslämpötila setCursor (0,0) Tulosta ("Temp:") Tulosta (str (tempC)) aika. nukkunut (.2)
def calibrate () -toimintoa käytetään kalibroimaan MPU6050 ja def display () -toimintoa käytetään näyttämään arvot LCD-näytöllä. Tarkista nämä toiminnot alla annetusta täydestä koodista.
Tämän jälkeen olemme aloittaneet LCD, alustaa ja kalibroida MPU6050 ja sitten , kun silmukka olemme kutsuneet kaikki kaikki kolme joukko arvoja MPU- lämpötila, kiihtyvyysmittari ja gyro ja näytti heidät LCD.
alkaa(); Tulosta ("MPU6050-liitäntä") setCursor (0,1) Tulosta ("Piirin yhteenveto") aika. Lepotilassa (2) InitMPU () kalibroi () kun taas 1: InitMPU () tyhjennä () i alueella (20): lämpötila () tyhjennä () Tulosta ("Accel") lepotila (1) i alueella (30): kiihdyttää () tyhjennä () Tulosta ("gyro") aika. lepotila (1) i alueella (30): gyro ()
MPU6050-gyro- ja kiihtyvyysanturia käytetään molempien laitteiden sijainnin ja suunnan havaitsemiseen. Gyro määrittää maan painovoiman avulla x-, y- ja z-akseliasennot ja kiihtyvyysanturi havaitsee liikkeen muutosnopeuden perusteella. Olemme jo käyttäneet kiihtyvyysanturia Arduinon kanssa monissa projekteissamme, kuten:
- Kiihtyvyysmittaripohjainen käsieleen ohjaama robotti
- Arduino-pohjainen ajoneuvon onnettomuuksien hälytysjärjestelmä
- Maanjäristyksen ilmaisinhälytys Arduinolla