Skip to content

IoT project using ESP32 + MPU6050 for vibration monitoring

License

Notifications You must be signed in to change notification settings

felipenwelter/iot-predictive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monitoramento da vibração de equipamentos para manutenção preditiva usando IoT

Arquitetura do hardware

  • Microcontrolador ESP32
  • Sensor MPU-6050 (acelerômetro/giroscópio)
  • LEDs

arquitetura-hardware

Conforme o desenho, o microcontrolador se conecta ao sensor pela interface I2C, pinos SLC e SDA. Os LED`s utilizam as portas GPIO 5, 16 e 17.

Arquivos (hardware)

  • sensor.ino - arquivo principal que realiza os seguintes procedimentos:

    • Conexão com wifi local (init_wifi / connect_wifi / verify_wifi_connection);
    • Conexão npt server para sincronizar relógio;
    • Conexão com broker MQTT para publicação e recebimento de mensagens (init_MQTT - define configurações para conexão com broker MQTT; connect_MQTT - conecta com broker MQTT e subscreve ao topic "equipment/actions" em mqtt_callback);
    • Acionamento de LED's ( mqtt_callback - recebe JSON com as informações necessárias);
    • Leitura e envio de dados de vibração (função loop realiza a leitura, acumula e empacota JSON para publicar em "equipment/vibration");
    • Configurações gerais e função de controle setup.
  • I2C.ino - arquivo complementar, realiza a leitura e gravação de registradores, extraindo as informações dos eixos pitch e roll.

Arquivos (Server)

Broker

  • initialize_DB_Tables.py cria banco de dados para armazenar leituras;
  • mqtt_Listen_Sensor_Data.py conecta e subscreve ao broker para receber os pacotes enviados pelo sensor;
  • store_Sensor_Data_to_DB.py conecta ao ao banco de dados, desempacota JSON e grava as leituras;
  • IoT.db banco de dados.

Algoritmo de análise de vibração

  • main.py arquivo principal que organiza a leitura e processamento dos dados gravados e plota o gráfico em tela;
  • read_data.py busca as informações de vibração armazenadas em banco de dados
  • calc.py com funções que realizam o cálculo do desvio padrão, cálculo e armazenaento do offset e definição dos limites das faixas de repouso/operação/alerta
  • mqtt_send.py subscreve e publica mensagens para comunicação com ESP32 e com dashboard mobile - acionamento de leds, contagem de alertas e formatação e envio de dados de vibração
  • settings.py armazenamento e leitura de offsets no arquivo settings.ini
  • settings.ini armazena os offsets de pitch e roll
  • simulate.py complementar, simula o processo de gravação das leituras em banco de dados em blocos de 10, da mesma forma que é feito pelo broker MQTT quando o ESP está ativo. Deve ser acionado por uma thread no arquivo main.py.

Instruções

Pré-requisitos

  • Instalar Mosquitto (MacOS):
brew install mosquitto
  • Instalar paho-mqtt localmente
pip3 install paho–mqtt
  • Instalar Python3 com bibliotecas numpy, sqlite3, pandas, matplotlib, paho, json, threading

  • Instalar IDE Arduino ou similar para compilar para o ESP32

Configurações

  • Alterar referências ao endereço IP do broker MQTT
  • Alterar referências a rede Wifi (ssid, user, password)

Executar

  • Executar Mosquitto (MacOS)
/usr/local/sbin/mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf
  • Executar script para realizar recebimento de dados MQTT e
python3 mqtt_Listen_Sensor_Data.py 
  • Iniciar server:
python3 main.py

Complementar

  • Acessar dados via SQLite:
sqlite3 IoT.db
  • Simular Mosquitto pub e sub:
mosquitto_pub -t xpto/temperature -m 22
mosquitto_sub -h 192.168.0.25 -p 1883 -v -t 'xpto/temperature'

Referências:

Kalman Filter - TKJElectronics

Enviar e receber dados via MQTT - Newton C Braga

MQTT read and store data - IOTBytes, Pradeep Singh

About

IoT project using ESP32 + MPU6050 for vibration monitoring

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published