- Požadované komponenty:
- Gyroskopický senzor MPU6050:
- Popis:
- Schéma zapojení a vysvětlení:
- Konfigurace Raspberry Pi pro gyroskopický senzor MPU6050:
- Vysvětlení programování:
Snímač MPU6050 má na jednom čipu mnoho funkcí. Skládá se z MEMS akcelerometru, MEMS gyroskopu a teplotního senzoru. Tento modul je velmi přesný při převodu analogových hodnot na digitální, protože má 16bitový hardware analogového na digitální převodník pro každý kanál. Tento modul je schopen zachytit kanály x, yaz současně. Má rozhraní I2C pro komunikaci s hostitelským řadičem. Tento modul MPU6050 je kompaktní čip s akcelerometrem i gyroskopem. Jedná se o velmi užitečné zařízení pro mnoho aplikací, jako jsou drony, roboty, snímače pohybu. Nazývá se také gyroskop nebo tříosý akcelerometr.
Dnes v tomto článku se chystáme propojit tento MPU6050 s Raspberry Pi a ukazovat hodnoty přes 16x2 LCD.
Požadované komponenty:
- Raspberry Pi
- MPU-6050
- 10K POT
- Propojovací drát
- Nepájivá deska
- Zdroj napájení
Gyroskopický senzor MPU6050:
MPU-6050 je 8kolíkový 6osý gyroskop a akcelerometr v jednom čipu. Tento modul standardně pracuje na sériové komunikaci I2C, ale lze jej nakonfigurovat pro rozhraní SPI konfigurací jeho registru. Pro I2C to má linky SDA a SCL. Téměř všechny piny jsou multifunkční, ale zde postupujeme pouze s piny v režimu I2C.
Konfigurace kolíku:
Vcc: - tento kolík se používá k napájení modulu MPU6050 vzhledem k zemi
GND: - toto je zemnící kolík
SDA: - Pin SDA se používá pro data mezi řadičem a modulem mpu6050
SCL: - SCL pin se používá pro vstup hodin
XDA: - Toto je datová linka snímače I2C SDA pro konfiguraci a čtení z externích snímačů (v našem případě se nepoužívá)
XCL: - Toto je hodinová linka snímače I2C SCL pro konfiguraci a čtení z externích snímačů (v našem případě se nepoužívá)
ADO: - I2C Slave Address LSB (v našem případě neplatí)
INT: - Přerušovací kolík pro indikaci připravenosti dat.
Dříve jsme propojili MPU6050 s Arduinem.
Popis:
V tomto článku ukazujeme údaje o teplotě, gyroskopu a akcelerometru přes LCD pomocí MPU6050 s Raspberry Pi. Pokud jste na Raspberry Pi noví, projděte si naši sekci tutoriálů Raspberry Pi a naučte se, jak začít s Raspberry Pi.
V tomto projektu jsme nejprve zobrazili hodnotu teploty na LCD a po nějaké době ukážeme hodnoty gyroskopu a poté po nějaké době máme hodnoty akcelerometru, jak je znázorněno na obrázcích níže:
Schéma zapojení a vysvětlení:
Schéma zapojení pro propojení MPU6050 s Raspberry Pi je velmi jednoduché, zde jsme použili LCD a MPU6050. K ovládání jasu LCD se používá hrnec 10k. V souvislosti s MPU6050 jsme provedli 4 připojení, ve kterých jsme připojili napájení 3,3 V a uzemnění MPU6050 k 3,3 V a uzemnění Raspberry Pi. Piny SCL a SDA na MPU6050 jsou spojeny s fyzickým pinem Raspberry 3 (GPIO2) a pinem 5 (GPIO3). LCD, RS, RW a EN jsou přímo připojeny k GPIO18 a 23 z Raspberry Pi. Datový kolík je přímo připojen k číslu digitálního kolíku GPIO24, GPIO25, GPIO8 a GPIO7. Další informace o propojení LCD s Raspberry Pi najdete zde.
Konfigurace Raspberry Pi pro gyroskopický senzor MPU6050:
Před zahájením programování musíme povolit i2c Raspberry Pi pomocí dané metody:
Krok 1: Povolte komunikaci I2C
Před instalací knihovny Adafruit SSD1306 musíme povolit komunikaci I2C v Raspberry Pi.
Chcete-li to provést v konzole Raspberry Pi:
sudo raspi -config
A pak se objeví modrá obrazovka. Nyní vyberte možnost rozhraní
Poté musíme vybrat I2C
Zloženie: 100% bavlna.
Poté musíme vybrat ano, stisknout klávesu Enter a poté ok
Poté musíme restartovat malinovou pi vydáním následujícího příkazu:
restartování sodo
Krok 2: Nainstalujte python-pip a knihovnu GPIO
sudo apt-get install build-essential python-dev python-pip
Poté musíme nainstalovat GPIO knihovnu raspberry pi
sudo pip nainstaluje RPi.GPIO
Krok 3: Nainstalujte knihovnu smbus
Nakonec musíme nainstalovat knihovnu smbus v Raspberry Pi pomocí daného příkazu:
sudo apt-get nainstalovat python-smbus
Krok 4: Nainstalujte knihovnu MPU6050
Poté musíme pomocí zadaného příkazu nainstalovat knihovnu MPU6050
sudo pip install mpu6050
Nyní můžeme v příkladech najít ukázkové kódy. Uživatel může tento kód otestovat přímým nahráním na Raspberry Pi nebo jej upravit podle požadavku. Zde jsme zobrazili hodnoty os X, Y a Z MPU6050 na 16x2 LCD. Celý kód Pythonu najdete na konci tohoto tutoriálu.
Vysvětlení programování:
Kompletní kód Pythonu je uveden na konci zde vysvětlujeme několik důležitých částí kódu.
V programu Python jsme importovali některé požadované knihovny, jako je čas, smbus a GPIO.
import smbus čas importu import RPi.GPIO jako gpio
Poté musíme vzít nějakou registrační adresu pro konfiguraci MPU6050 a pro získání hodnot ze stejné. Také jsme vzali několik proměnných pro kalibraci a inicializaci sběrnice pro I2C.
PWR_M = 0x6B DIV = 0x19 KONFIGURACE = 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 TEMP = 0 AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Pak jsme pro Driving 16x2LCD napsali několik funkcí, jako def start (), def cmd (ch), def write (ch), def Print (str), def clear () atd . Dále můžete zkontrolovat Rozhraní LCD s Raspberry Pi.
Poté musíme inicializovat 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)
Poté musíme zapsat některé funkce pro čtení hodnot z MPU6050 a jejich zobrazení na LCD. Daná funkce se používá ke čtení dat 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á funkce se používá ke čtení dat akcelerometru 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) zobrazit (Gx, Gy, Gz) time.sleep (. 01)
Poté jsme napsali funkci čtení teploty
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36,53 tempC = "%. 2f"% tempC tisk tempC setCursor (0,0) Print ("Temp:") Print (str (tempC)) time.sleep (.2)
funkce def calibrate () slouží ke kalibraci MPU6050 a funkce def display () slouží k zobrazení hodnot na LCD. Zkontrolujte tyto funkce v úplném níže uvedeném kódu.
Poté jsme zahájili LCD, inicializovali a kalibrovali MPU6050 a poté ve smyčce while jsme zavolali všechny tři sady hodnot z MPU - teplota, akcelerometr a gyroskop a zobrazili je přes LCD.
začít(); Print ("MPU6050 Interface") setCursor (0,1) Print ("Circuit Digest") time.sleep (2) InitMPU () kalibrace () zatímco 1: InitMPU () clear () pro i v rozsahu (20): temp () clear () Tisk ("Accel") time.sleep (1) pro i v dosahu (30): accel () clear () Tisk ("Gyro") time.sleep (1) pro i v rozsahu (30): gyroskop ()
Gyroskop MPU6050 a akcelerometr se používají k detekci polohy a orientace jakéhokoli zařízení. Gyro využívá zemskou gravitaci k určení poloh osy x, y a z a detekuje akcelerometr na základě rychlosti změny pohybu. Akcelerometr s Arduinem jsme již použili v mnoha našich projektech, jako jsou:
- Robot ovládaný gesty pomocí akcelerometru
- Arduino systém varování před nehodami vozidel
- Alarm detektoru zemětřesení pomocí Arduina