- Componenti richiesti:
- Sensore giroscopico MPU6050:
- Descrizione:
- Schema del circuito e spiegazione:
- Configurazione di Raspberry Pi per il sensore giroscopico MPU6050:
- Spiegazione della programmazione:
Il sensore MPU6050 ha molte funzioni sul singolo chip. Consiste di un accelerometro MEMS, un giroscopio MEMS e un sensore di temperatura. Questo modulo è molto preciso durante la conversione dei valori analogici in digitali perché ha un hardware di conversione da analogico a digitale a 16 bit per ogni canale. Questo modulo è in grado di catturare i canali x, yez allo stesso tempo. Ha un'interfaccia I2C per comunicare con il controller host. Questo modulo MPU6050 è un chip compatto con accelerometro e giroscopio. Questo è un dispositivo molto utile per molte applicazioni come droni, robot, sensori di movimento. È anche chiamato giroscopio o accelerometro a tre assi.
Oggi in questo articolo interfacciamo questo MPU6050 con Raspberry Pi e mostreremo i valori su LCD 16x2.
Componenti richiesti:
- Raspberry Pi
- MPU-6050
- 10K POT
- Cavo jumper
- Breadboard
- Alimentazione elettrica
Sensore giroscopico MPU6050:
MPU-6050 è un giroscopio e un accelerometro a 6 assi a 8 pin in un unico chip. Questo modulo funziona per impostazione predefinita sulla comunicazione seriale I2C ma può essere configurato per l'interfaccia SPI configurandolo nel registro. Per I2C questo ha linee SDA e SCL. Quasi tutti i pin sono multi-funzionanti ma qui si procede solo con i pin in modalità I2C.
Configurazione pin:
Vcc: - questo pin è utilizzato per alimentare il modulo MPU6050 rispetto alla massa
GND: - questo è un pin di massa
SDA: - Il pin SDA viene utilizzato per i dati tra il controller e il modulo mpu6050
SCL: - Il pin SCL viene utilizzato per l'ingresso del clock
XDA: - Questa è la linea dati del sensore I2C SDA per la configurazione e la lettura da sensori esterni ((opzionale) non utilizzata nel nostro caso)
XCL: - Questa è la linea di clock SCL del sensore I2C per la configurazione e la lettura da sensori esterni ((opzionale) non utilizzata nel nostro caso)
ADO: - LSB indirizzo slave I2C (non applicabile nel nostro caso)
INT: - Pin di interruzione per indicazione di dati pronti.
Abbiamo precedentemente interfacciato MPU6050 con Arduino.
Descrizione:
In questo articolo, mostriamo le letture di temperatura, giroscopio e accelerometro su LCD utilizzando MPU6050 con Raspberry Pi. Se sei nuovo su Raspberry Pi, segui la nostra sezione tutorial su Raspberry Pi e impara a iniziare con Raspberry Pi.
In questo progetto, abbiamo prima mostrato il valore della temperatura sull'LCD e dopo un po 'di tempo mostriamo i valori del giroscopio e poi dopo un po' abbiamo le letture dell'accelerometro come mostrato nelle immagini seguenti:
Schema del circuito e spiegazione:
Lo schema elettrico, per interfacciare MPU6050 con Raspberry Pi, è molto semplice qui abbiamo utilizzato un LCD e MPU6050. Un potenziometro da 10k viene utilizzato per controllare la luminosità dell'LCD. In connessione con MPU6050, abbiamo eseguito 4 connessioni in cui abbiamo collegato l'alimentatore da 3,3 V e la massa di MPU6050 a 3,3 V e la massa di Raspberry Pi. I pin SCL e SDA di MPU6050 sono collegati al pin fisico 3 (GPIO2) e al pin 5 (GPIO3) di Raspberry. RS, RW e EN di LCD sono direttamente collegati a GPIO18 e 23 di raspberry pi. I pin dati sono direttamente collegati al numero pin digitale GPIO24, GPIO25, GPIO8 e GPIO7. Scopri di più sull'interfacciamento dell'LCD con Raspberry Pi qui.
Configurazione di Raspberry Pi per il sensore giroscopico MPU6050:
Prima di iniziare la programmazione, dobbiamo abilitare i2c di Raspberry Pi utilizzando il metodo indicato:
Passaggio 1: abilitare la comunicazione I2C
Prima di installare la libreria Adafruit SSD1306 dobbiamo abilitare la comunicazione I2C in Raspberry Pi.
Per fare questo tipo nella console Raspberry Pi:
sudo raspi -config
E poi apparirà una schermata blu. Ora seleziona l'opzione dell'interfaccia
Dopodiché, dobbiamo selezionare I2C
Dopodiché, dobbiamo selezionare Sì e premere Invio e poi OK
Dopodiché, dobbiamo riavviare Raspberry Pi emettendo il seguente comando:
riavviare sodo
Passaggio 2: installa python-pip e la libreria GPIO
sudo apt-get install build-essential python-dev python-pip
Dopodiché, dobbiamo installare la libreria GPIO raspberry pi
sudo pip installa RPi.GPIO
Passaggio 3: installa la libreria smbus
Infine, dobbiamo installare la libreria smbus in Raspberry Pi utilizzando il comando dato:
sudo apt-get install python-smbus
Passaggio 4: installa la libreria MPU6050
Dopodiché dobbiamo installare la libreria MPU6050 usando il comando dato
sudo pip install mpu6050
Ora possiamo trovare codici di esempio negli esempi. L'utente può testare quel codice caricandolo direttamente sul Raspberry Pi o personalizzandolo in base alle esigenze. Qui abbiamo visualizzato i valori degli assi X, Y e Z di MPU6050 su un LCD 16x2. Puoi trovare il codice Python completo alla fine del tutorial.
Spiegazione della programmazione:
Il codice Python completo viene fornito alla fine qui stiamo spiegando alcune parti importanti del codice.
Nel programma Python, abbiamo importato alcune librerie richieste come time, smbus e GPIO.
import smbus import time importa RPi.GPIO come gpio
Dopodiché, dobbiamo prendere un indirizzo di registro per configurare MPU6050 e per ottenere valori dallo stesso. Abbiamo anche preso alcune variabili per calibrare e inizializzare il bus per 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_Add = 0x45 GYRO_Z = 0x47 indirizzo bus 0xM Bus 1 = TEMP AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
Quindi abbiamo scritto alcune funzioni per Driving 16x2LCD come def begin (), def cmd (ch), def write (ch), def Print (str), def clear () ecc . È possibile controllare ulteriormente l'interfacciamento dell'LCD con Raspberry Pi.
Dopodiché, dobbiamo inizializzare il modulo 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_Adddata (Device_Address, GYRO_CONFIGata, 24, INT_EN, 1) time.sleep (1)
Dopodiché, dobbiamo scrivere alcune funzioni per leggere i valori da MPU6050 e visualizzarli sull'LCD. La funzione data viene utilizzata per leggere i dati da MPU6050
def readMPU (addr): high = bus.read_byte_data (Device_Address, addr) low = bus.read_byte_data (Device_Address, addr + 1) valore = ((alto << 8) - basso) if (valore> 32768): valore = valore - 65536 valore restituito
La funzione data viene utilizzata per leggere i dati dell'accelerometro e del giroscopio
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)
Dopo questo, abbiamo scritto una funzione di lettura della temperatura
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)
La funzione def calibrate () viene utilizzata per calibrare l'MPU6050 e la funzione def display () viene utilizzata per visualizzare i valori sull'LCD. Verificare queste funzioni nel codice completo fornito di seguito.
Dopodiché, abbiamo avviato l'LCD, inizializzato e calibrato l'MPU6050 e quindi nel ciclo while abbiamo chiamato tutti e tre i set di valori da MPU- temperatura, accelerometro e giroscopio e li abbiamo mostrati sull'LCD.
inizio(); 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 () Print ("Accel") time.sleep (1) per i nell'intervallo (30): accel () clear () Print ("Gyro") time.sleep (1) per i nell'intervallo (30): giroscopio ()
Il giroscopio e l'accelerometro MPU6050 vengono utilizzati per rilevare la posizione e l'orientamento di qualsiasi dispositivo. Gyro utilizza la gravità terrestre per determinare le posizioni degli assi x, yez e l'accelerometro rileva in base alla velocità di variazione del movimento. Abbiamo già utilizzato l'accelerometro con Arduino in molti dei nostri progetti come:
- Robot controllato con gesti della mano basato su accelerometro
- Sistema di allarme per incidenti stradali basato su Arduino
- Allarme rilevatore di terremoti utilizzando Arduino