Este projeto implementa um sistema de monitoramento de inclinação utilizando o sensor MPU6050 (acelerômetro/giroscópio), um servo motor SG90 e um display OLED SSD1306, rodando em um Raspberry Pi Pico W (RP2040) da BitDogLab. O sistema lê a inclinação do dispositivo, ajusta o ângulo do servo motor proporcionalmente e exibe informações no display OLED, incluindo um alerta visual caso o ângulo ultrapasse um limite definido.
- Leitura de inclinação (ângulo) com sensor MPU6050 via I2C
- Controle de servo motor SG90 via PWM
- Mapeamento automático do ângulo de inclinação para o ângulo do servo (0° a 180°)
- Exibição do ângulo atual no display OLED SSD1306
- Alerta visual no display caso o ângulo ultrapasse o limite configurado (ex: 60°)
- Mensagens de status e leitura exibidas no terminal serial
src/main.c
: Código principal do sistemasrc/drivers/mpu6050/mpu6050.h
e.c
: Interface e implementação do sensor MPU6050src/drivers/servo/servo.h
e.c
: Interface e implementação do controle do servo motorsrc/drivers/display/display.h
e.c
: Interface e implementação do display OLED SSD1306
- Pico SDK
- Sensor MPU6050 (I2C0)
- Servo motor SG90 (PWM) no GPIO 28
- Display OLED SSD1306 (I2C1)
- Raspberry Pi Pico (RP2040)
- Sensor MPU6050 conectado via I2C (padrão: SDA=0, SCL=1)
- Servo motor SG90 conectado ao pino PWM do Pico (padrão: GPIO 28)
- Display OLED SSD1306 conectado via I2C (padrão: SDA=14, SCL=15)
- Ambiente de desenvolvimento C/C++ para Pico (Pico SDK)
-
Clone o repositório e configure o Pico SDK:
git clone https://github.com/Xamacardoso/picow_mpu6050.git cd picow_mpu6050 mkdir build && cd build cmake .. make
-
Grave o arquivo
.uf2
gerado na Pico:- Conecte a Pico em modo BOOTSEL
- Copie o arquivo
.uf2
para a unidade USB que aparecer
-
Conecte o hardware:
- Sensor MPU6050 nos pinos I2C do Pico (SDA=0, SCL=1)
- Servo motor SG90 no pino PWM (GPIO 28)
- Display OLED SSD1306 nos pinos I2C (SDA=14, SCL=15)
-
Execute:
- O sistema iniciará automaticamente, exibindo as leituras de inclinação, o ângulo do servo e alertas no display OLED e no terminal serial.
- Certifique-se de que todos os dispositivos estejam corretamente conectados e alimentados.
- O limite de alerta pode ser ajustado na constante
ANGLE_ALERT_THRESHOLD
emmain.c
. - O mapeamento de ângulo pode ser ajustado conforme necessário no código principal.