Escolar Documentos
Profissional Documentos
Cultura Documentos
FAVORITAR
07/06/2023
Equipe Embarcados
2 Comentários
ÍNDICE DE CONTEÚDO
https://embarcados.com.br/franzininho-wifi-acelerometro-e-giroscopio-mpu6050/ 1/25
04/01/2024, 14:51 Franzininho WiFi: Acelerômetro e Giroscópio MPU6050
Introdução
Instalação da Biblioteca
Biblioteca MPU6050 Adafruit MPU6050
begin()
setMotionInterrupt()
getInterruptStatus()
getEvent()
Materiais necessários
Circuito
Código
Explicação do Código
Valores lidos:
Conclusão
Introdução
O MPU6050 possui, no mesmo invólucro, um acelerômetro e um giroscópio de
alta precisão com tecnologia MEMS. No total, são 6 eixos, sendo três para o
acelerômetro e 3 para o giroscópio. Além disso, esse dispositivo possui um
sensor de temperatura interno que permite medir temperaturas entre -40 a
85°C com acurácia de +/- 1°C. A comunicação é feita através do padrão I2C,
usando os pinos SCL e SDA.
Instalação da Biblioteca
Para aproveitar o máximo dos recursos disponíveis pelo MPU6050, vamos
instalar no Arduino IDE a biblioteca responsável por inicializar o barramento
(I2C) e realizar as leituras do acelerômetro e do giroscópio.
https://embarcados.com.br/franzininho-wifi-acelerometro-e-giroscopio-mpu6050/ 2/25
04/01/2024, 14:51 Franzininho WiFi: Acelerômetro e Giroscópio MPU6050
https://embarcados.com.br/franzininho-wifi-acelerometro-e-giroscopio-mpu6050/ 3/25
04/01/2024, 14:51 Franzininho WiFi: Acelerômetro e Giroscópio MPU6050
begin()
setMotionInterrupt()
getInterruptStatus()
Verifica status da do pino INT, isso indica que a leituras dos sensores foram
finalizadas naquele ciclo.
1 bool getInterruptStatus();
Retorna true, concluiu a leitura e false, não ainda não concluiu a leitura .
getEvent()
Materiais necessários
Os materiais necessários para desenvolver nossa aplicação são:
Módulo MPU6050
Jumpers
Arduino IDE
Circuito
No circuito proposto para o nosso projeto, vamos utilizar o barramento I2C
(GPIO 9 e GPIO 8) para realizar a troca de informações, seja para solicitar as
leituras do sensor ou recebê-las. O módulo MPU6050 possui oito pinos, dentre
eles temos a alimentação (VCC e GND), porém não iremos utilizar todos.
Abaixo segue uma imagem e uma descrição sobre cada pino:
AD0: caso haja mais de um MPU6050, esse pino pode mudar o endereço
I2C dependendo de onde esteja conectado (VCC, GND, SDA ou SCL).
INT: pino para interrupção, indica quando os dados estão prontos para
leitura.
Código
No projeto proposto, vamos realizar as leituras do módulo MPU6050 a fim de
adquirir as informações do giroscópio e do acelerômetro. Os dados serão
mostrados na tela no Monitor Serial e, caso deseje visualizar no Plotter Serial,
uma visualização gráfica dos dados, descomente o trecho do código referente
a esse recurso:
1 /*
2 Autor: Embarcados
https://embarcados.com.br/franzininho-wifi-acelerometro-e-giroscopio-mpu6050/ 7/25
04/01/2024, 14:51 Franzininho WiFi: Acelerômetro e Giroscópio MPU6050
3 */
4
5 // Inclui a biblioteca para configurar o barramento I2C
6 #include <Wire.h>
7
8 // Inclui bibliotecas para habilitar os métodos
9 #include <Adafruit_MPU6050.h>
10 #include <Adafruit_Sensor.h>
11
12 // Declaração do objeto
13 Adafruit_MPU6050 mpu;
14
15 // Estrutura para receber as leituras dos sensores
16 sensors_event_t acc, gyr, temp;
17
18 void setup()
19 {
20 // Inicializa a comunicação serial
21 Serial.begin(115200);
22 Serial.println("Iniciando demo MPU6050...");
23
24 // Inicializa o módulo MPU6050 e verifica se foi configurado corretamente
25 if (!mpu.begin())
26 {
27 // Caso não seja configurado corretamente, informa no monitor serial
28 Serial.println("Falha ao configurar MPU6050");
29 }
30
31 Serial.println("MPU6050 encontrado");
32 }
33
34 void loop()
35 {
36 // Realiza as leituras do acelerômetro, giroscópio e do sensor de temperatura.
37 mpu.getEvent(&acc, &gyr, &temp);
38
39 // Mostra na tela as leituras realizadas no Monitor Serial
40 Serial.println(" # Acelerômetro: ");
41 Serial.print(" X: ");
42 Serial.print(acc.acceleration.x);
43 Serial.print("\t Y: ");
44 Serial.print(acc.acceleration.y);
45 Serial.print("\t Z: ");
46 Serial.println(acc.acceleration.z);
47
48 Serial.println(" # Giroscópio: ");
49 Serial.print(" X: ");
50 Serial.print(gyr.gyro.x);
51 Serial.print("\t Y: ");
52 Serial.print(gyr.gyro.y);
53 Serial.print("\t Z: ");
54 Serial.println(gyr.gyro.z);
55 Serial.println("--------------------");
56
57 // Mostra as leituras realizadas no Plotter Serial
58
59 // Descomente para mostrar as leituras individuais do acelerômetro no Plotter Ser
60 /*
61 Serial.print(acc.acceleration.x);
62 Serial.print("\t");
63 Serial.print(acc.acceleration.y);
64 Serial.print("\t");
65 Serial.println(acc.acceleration.z);
66 */
67
68 // Descomente para mostrar as leituras individuais do giroscópio no Plotter Seria
69 /*
70 Serial.print(gyr.gyro.x);
71 Serial.print("\t");
https://embarcados.com.br/franzininho-wifi-acelerometro-e-giroscopio-mpu6050/ 8/25
04/01/2024, 14:51 Franzininho WiFi: Acelerômetro e Giroscópio MPU6050
72 Serial.print(gyr.gyro.y);
73 Serial.print("\t");
74 Serial.println(gyr.gyro.z);
75 */
76
77 delay(50);
78 }
Simule esse exemplo no Wokwi:
https://wokwi.com/projects/366882120661309441
Simulation Code
GND
VCC
SDA
XDA
XCL
AD0
SCL
INT
X : 0.00 Y : 0.00 Z : 0.00
--------------------
# Acelerômetro:
X : 0.00 Y: 0.00 Z: 9.81
# Giroscópio:
X : 0.00 Y : 0.00 Z : 0.00
--------------------
Explicação do Código
Nesta seção, explicaremos o código linha por linha, para garantir uma
compreensão completa e entender a finalidade de cada função utilizada.
1 // Declaração do objeto
2 Adafruit_MPU6050 mpu;
1 void setup()
2 {
3 // Inicializa a comunicação serial
4 Serial.begin(115200);
5 Serial.println("Iniciando demo MPU6050...");
6
7 // Inicializa o módulo MPU6050 e verifica se foi configurado corretamente
8 if (!mpu.begin())
9 {
10 // Caso não seja configurado corretamente, informa no monitor serial
11 Serial.println("Falha ao configurar MPU6050");
12 }
13
14 Serial.println("MPU6050 encontrado");
15 }
1 void loop()
2 {
3 // Realiza as leituras do acelerômetro, giroscópio e do sensor de temperatura.
4 mpu.getEvent(&acc, &gyr, &temp);
5
6 // Mostra na tela as leituras realizadas no Monitor Serial
7 Serial.println(" # Acelerômetro: ");
8 Serial.print(" X: ");
9 Serial.print(acc.acceleration.x);
10 Serial.print("\t Y: ");
11 Serial.print(acc.acceleration.y);
12 Serial.print("\t Z: ");
13 Serial.println(acc.acceleration.z);
14
15 Serial.println(" # Giroscópio: ");
16 Serial.print(" X: ");
17 Serial.print(gyr.gyro.x);
18 Serial.print("\t Y: ");
19 Serial.print(gyr.gyro.y);
20 Serial.print("\t Z: ");
21 Serial.println(gyr.gyro.z);
22 Serial.println("--------------------");
23
24 // Mostra as leituras realizadas no Plotter Serial
25
26 // Descomente para mostrar as leituras individuais do acelerômetro no Plotter Ser
27 /*
28 Serial.print(acc.acceleration.x);
29 Serial.print("\t");
30 Serial.print(acc.acceleration.y);
31 Serial.print("\t");
32 Serial.println(acc.acceleration.z);
33 */
34
35 // Descomente para mostrar as leituras individuais do giroscópio no Plotter Seria
36 /*
37 Serial.print(gyr.gyro.x);
38
39
Serial.print("\t");
Serial.print(gyr.gyro.y);
40 Serial.print("\t");
https://embarcados.com.br/franzininho-wifi-acelerometro-e-giroscopio-mpu6050/ 11/25
04/01/2024, 14:51 Franzininho WiFi: Acelerômetro e Giroscópio MPU6050
41 Serial.println(gyr.gyro.z);
42 */
43
44 delay(50);
45 }
Valores lidos:
https://embarcados.com.br/franzininho-wifi-acelerometro-e-giroscopio-mpu6050/ 12/25
04/01/2024, 14:51 Franzininho WiFi: Acelerômetro e Giroscópio MPU6050
Conclusão
O rastreamento de movimentos e a detecção de vibração são funcionalidades
comuns em diversos dispositivos eletrônicos. Por exemplo, nos smartphones,
temos internamente os mesmos sensores presentes no módulo MPU 6050
(acelerômetro e giroscópio), que servem para interagir com o usuário. Para
criar esse recurso, podemos adicionar algoritmos capazes de extrair
informações instantâneas, como velocidade ou aceleração, e ao longo do
tempo, como distância percorrida.
Equipe Embarcados
646 posts
https://embarcados.com.br/
O Embarcados tem como foco inspirar qualidade e
inovação tecnológica, disseminando o conhecimento
da área de sistemas embarcados.
Esta obra está licenciada com uma Licença Creative Commons Atribuição-
CompartilhaIgual 4.0 Internacional .
https://embarcados.com.br/franzininho-wifi-acelerometro-e-giroscopio-mpu6050/ 13/25