- Components necessaris:
- Sensor de giroscopi MPU6050:
- Descripció:
- Diagrama del circuit i explicació:
- Configuració de Raspberry Pi per al sensor giroscòpic MPU6050:
- Explicació de la programació:
El sensor MPU6050 té moltes funcions sobre un sol xip. Consta d’un acceleròmetre MEMS, un giroscopi MEMS i un sensor de temperatura. Aquest mòdul és molt precís mentre es converteixen valors analògics a digitals perquè té un convertidor de 16 bits analògic a digital per a cada canal. Aquest mòdul és capaç de capturar canals x, y i z al mateix temps. Té una interfície I2C per comunicar-se amb el controlador amfitrió. Aquest mòdul MPU6050 és un xip compacte amb acceleròmetre i giroscopi. Aquest és un dispositiu molt útil per a moltes aplicacions com drons, robots, sensors de moviment. També s’anomena giroscopi o acceleròmetre de triple eix.
Avui, en aquest article, farem una interfície d’aquest MPU6050 amb Raspberry Pi i mostrarem els valors de la pantalla LCD de 16x2.
Components necessaris:
- Raspberry Pi
- MPU-6050
- 10K POT
- Filferro de pont
- Taula de pa
- Font d'alimentació
Sensor de giroscopi MPU6050:
MPU-6050 és un giroscòpic i acceleròmetre de 8 eixos de 6 pins en un sol xip. Aquest mòdul funciona de manera predeterminada en la comunicació serial I2C, però es pot configurar per a la interfície SPI configurant el registre. Per a I2C, té línies SDA i SCL. Gairebé tots els pins funcionen de manera múltiple, però aquí només procedim amb pins de mode I2C.

Configuració del pin:
Vcc: aquest pin s'utilitza per alimentar el mòdul MPU6050 respecte a terra
GND: - es tracta d'un passador de terra
SDA: - El pin SDA s'utilitza per a dades entre el controlador i el mòdul mpu6050
SCL: - El pin SCL s'utilitza per a l'entrada de rellotge
XDA: - Es tracta de la línia de dades del sensor I2C SDA per configurar i llegir des de sensors externs ((opcional) que no s’utilitza en el nostre cas)
XCL: - Es tracta d’una línia de rellotge SC2 del sensor I2C per configurar i llegir des de sensors externs ((opcional) no s’utilitza en el nostre cas)
ADO: - Adreça esclau I2C LSB (no aplicable en el nostre cas)
INT: - Pin d'interrupció per indicar dades preparades.
Anteriorment hem interficat MPU6050 amb Arduino.
Descripció:
En aquest article, mostrem lectures de temperatura, giroscopi i acceleròmetre a través d’ LCD mitjançant MPU6050 amb Raspberry Pi. Si no coneixeu Raspberry Pi, consulteu la nostra secció de tutorials de Raspberry Pi i apreneu a començar amb Raspberry Pi.
En aquest projecte, primer hem mostrat el valor de la temperatura a través de la pantalla LCD i, després d’un temps, mostrem els valors giroscòpics i, després d’un temps, tenim lectures de l’acceleròmetre tal com es mostra a les imatges següents:


Diagrama del circuit i explicació:
El diagrama del circuit, per a la interfície de MPU6050 amb Raspberry Pi, és molt senzill, ja que hem utilitzat un LCD i un MPU6050. Una olla de 10 k s’utilitza per controlar la brillantor de la pantalla LCD. En connexió amb MPU6050, hem fet 4 connexions en les quals hem connectat la font d’alimentació i la terra de 3,3 v d’MPU6050 a la 3,3 v i la terra de Raspberry Pi. Els pins SCL i SDA de MPU6050 estan connectats amb el pin físic 3 (GPIO2) i el pin 5 (GPIO3) de Raspberry. Les pantalles LCD RS, RW i EN estan connectades directament a GPIO18 i 23 de raspberry pi. Els pins de dades es connecten directament al número de pin digital GPIO24, GPIO25, GPIO8 i GPIO7. Obteniu més informació sobre la interfície de la pantalla LCD amb Raspberry Pi aquí.

Configuració de Raspberry Pi per al sensor giroscòpic MPU6050:
Abans de començar a programar, hem d’ habilitar l’i2c de Raspberry Pi mitjançant el mètode donat:
Pas 1: activeu la comunicació I2C
Abans d’instal·lar la biblioteca Adafruit SSD1306, hem d’ habilitar la comunicació I2C a Raspberry Pi.
Per fer aquest tipus a la consola Raspberry Pi:
sudo raspi -config
I apareixerà una pantalla blava. Ara seleccioneu l'opció d'interfície

Després d'això, hem de seleccionar I2C
(…)

Després d'això, hem de seleccionar sí i prémer Retorn i després bé

Després d'això, hem de reiniciar raspberry pi mitjançant l'ordre següent:
sodo reiniciar
Pas 2: instal·leu python-pip i la biblioteca GPIO
sudo apt-get install build-essential python-dev python-pip
Després d'això, hem d'instal·lar la biblioteca GPIO de raspberry pi
sudo pip instal·la RPi.GPIO
Pas 3: instal·leu la biblioteca smbus
Finalment, hem d’instal·lar la biblioteca smbus a Raspberry Pi mitjançant l’ordre donada:
sudo apt-get install python-smbus

Pas 4: Instal·leu la biblioteca MPU6050
Després d'això, hem d'instal·lar la biblioteca MPU6050 mitjançant l'ordre donada

sudo pip instal·lar mpu6050
Ara podem trobar exemples de codis als exemples. L'usuari pot provar aquest codi carregant directament al Raspberry Pi o personalitzar-lo segons els requisits. Aquí hem mostrat els valors dels eixos X, Y i Z del MPU6050 a la pantalla LCD de 16x2. Podeu trobar el codi complet de Python al final del tutorial.
Explicació de la programació:
El codi complet de Python es dóna al final, aquí estem explicant algunes parts importants del codi.
Al programa Python, hem importat algunes biblioteques necessàries com ara time, smbus i GPIO.
importar temps d'importació smbus importar RPi.GPIO com a gpio
Després d'això, hem de prendre alguna adreça de registre per configurar MPU6050 i obtenir valors de la mateixa. També hem pres algunes variables per calibrar i inicialitzar el bus per a 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 = 0xBus = 0x4 AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
A continuació, hem escrit algunes funcions de conducció 16x2LCD com def begin (), def cmd (CH), escriptura def (CH), def impressió (str), def clar (), etc . Podeu consultar també la interfície de la pantalla LCD amb Raspberry Pi.
Després d'això, hem d'inicialitzar el mòdul 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_direct_By,, INT_EN, 1) time.sleep (1)
Després d'això, hem d'escriure algunes funcions per llegir els valors del MPU6050 i mostrar-los a la pantalla LCD. La funció donada s'utilitza per llegir dades de 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 valor de retorn
La funció donada s’utilitza per llegir les dades de l’ acceleròmetre i del giròmetre
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)
Després d'això, hem escrit una funció de lectura de 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 funció def calibrate () s'utilitza per calibrar el MPU6050 i la funció def display () s'utilitza per mostrar els valors a la pantalla LCD. Consulteu aquestes funcions al codi complet que es mostra a continuació.
Després d'això, hem començat la pantalla de plasma, initialize i calibrar el MPU6050 i després en el temps de bucle que hem anomenat tot el els tres conjunt de valors de MPU- temperatura, acceleròmetre i el giroscopi i els va mostrar més de LCD.
begin (); Imprimeix ("Interfície MPU6050") setCursor (0,1) Imprimeix ("Circuit Digest") time.sleep (2) InitMPU () calibra () mentre que 1: InitMPU () esborra () per a i en l'interval (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): giroscopi ()


El giroscopi i l’acceleròmetre MPU6050 s’utilitzen per detectar la posició i orientació de qualsevol dispositiu. Gyro utilitza la gravetat terrestre per determinar les posicions de l’eix x, y i z i l’acceleròmetre detecta en funció de la velocitat del canvi de moviment. Ja hem utilitzat l’acceleròmetre amb Arduino en molts dels nostres projectes com:
- Robot controlat amb gestos manuals basat en acceleròmetre
- Sistema d’alerta d’accidents de vehicles basat en Arduino
- Alarma del detector de terratrèmols mitjançant Arduino
