- Microcontrolador ESP32
- Sensor MPU-6050 (acelerômetro/giroscópio)
- LEDs
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.
-
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.
- 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.
- 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.
- 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
- Alterar referências ao endereço IP do broker MQTT
- Alterar referências a rede Wifi (ssid, user, password)
- 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
- 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'
Kalman Filter - TKJElectronics
Enviar e receber dados via MQTT - Newton C Braga
MQTT read and store data - IOTBytes, Pradeep Singh