Water Sensor and Flow Meter
Para mais facil leitura deste ficheiro, usar o vscode (ou similar) e colocar em modo "preview".
Este projeto foi desenvolvido no ambito:
Cadeira: Intrumentacao e Sensores
Curso: Mestrado Integrado Engenharia Eletrotecnica e de Computadores
Universidade:
Introducao
Pretende-se com este projeto estudar o que sao sensores, e tambem, o que vem a ser o protocolo LoRa. Para tal, vamos simular uma situacao real onde se visa saber o caudal de agua que passa num determinado caleiro.
Para realizar essa tarefa vamos usar:
- Medir o caudal
- Arduino MKR Wan 1310
- Um sensor improvisado (pretendia-se desenvolver uma solucao real, mas devido ao Covid-19 essa tarefa ficou adiada)
- Para armazenar e apresentar os dados
- ThingsSpeak
- Twitter - @TTNSensores_UTAD - usado para emitir "alertas"
- Para realizar a interligacao entre o sensor e a "base de dados"
- Protocolo de comunicacao
LoRa - LoRaWan network: The Things Network
- Protocolo de comunicacao
Realizacao do projeto
Este projeto foi realizado em 4 partes, sendo elas:
- Obter o EUI da Placa e registo da mesma na plataforma The Things Network.
- Realizar as Medicoes
- Enviar os dados obtidos para a plataforma The Things Network.
- Integracao do The Things Network com o ThingsSpeak.
Obter o EUI e registo da placa no The Things Network
Obter EUI
O codigo necessario para essa tarefa encontra-se na pasta get_eui.
Your device EUI is: A8610A3337XXXXXX
Register Devices
Procedimento:
- Entrar em
Applicationse selecionar a aplicacao pertendida. - Em
Devicesclique emregister device - Preencher os campos da figura abaixo:
Application ID: water_sensor_utad
Device EUI: A8610A3337XXXXXX
Resultado:
const char *appKey = "6935F074F3ADB47783E5FB0DCAXXXXXX";
Medicoes
O codigo encontra-se nos ficheiros water_sensor_utad.ino e arduino_secrets.h
Obter valor
Apresentacao das partes mais importantes do codigo e uma breve explicacao de cada uma.
voltage = analogRead(A0);
// Se a tensao for maior que 1 volt, conta uma gota
if (voltage > 210) drops++;
// Media de gotas por minuto (60000ms) - Valor maximo previsto: 1200 gotas
if (millis() - time > 60000)
{
dropvalue = (float)drops * 0.6 + (float)dropvalue * 0.4;
drops = 0;
time = millis();
}
Enviar os dados para o The Things Network
Enviar dados
O codigo encontra-se nos ficheiros water_sensor_utad.ino e arduino_secrets.h
if (millis() - timeUpload > 360000)
{
// Tratamento de dados
int aux = (int)(dropvalue + 0.55);
txBuffer[0] = (aux >> 8) & 0xff;
txBuffer[1] = aux & 0xff;
// Envio de dados
int err;
modem.beginPacket();
modem.write(txBuffer);
err = modem.endPacket(true);
// Redefinir temporizador
timeUpload = millis();
}
Payload
Procedimento:
- Selecionar o projeto em causa no The Things Network
- Selecionar
Payload Formatse editar a funcaoDecoder
Funcao Decode
var decoded = {};
var dropSize = 2.25 //mm
var timeScale = 60 //60 min
if (port === 1) decoded.water = (((bytes[0] << 8) | bytes[1]) * dropSize * timeScale).toFixed(2);
return {
field1:decoded.water
}
}
Teste do Payload
Valor para teste:
Drops: 1192
04 A8
Resultado:
Valor previsto: 1192 x 60 x 2.25 = 160920
"field1": "160920.00"
}
Integracao do ThingsSpeak com The Things Network e com o Twitter
ThingsSpeak
Procedimento:
- Selecionar
Channelse depoisNew Channel - Preencher os campos.
Name: Water Sensor UTAD
Description: water sensor and flow meter
Field 1: WaterLevel
Link to GitHub: https://github.com/Sebenta/water-sensor-utad
- Clique em
Save Channel
Channel ID: 1085808
Water Sensor UTAD - ThingSpeak IoT
API Keys
Write API KEY:
Key: EVVRG8TEY9XXXXXX
Read API Keys:
Key: QKWXDLD852XXXXXX
Integrar o The Things Network com o ThingsSpeak
- No The Things Network selcionar o projeto
- Selecionar
Integrationse de poisadd integration - Selecionar integracao com ThingsSpeak IoT Analytics with MATLAB
- Preencher os campos
- Clicar em
Add integration
Testar integracao
No The Things Network :
Para testar a integracao:
- Selecionar um
device - fazer scroll ate
Simulate Uplink - intrduzir valores para teste e clicar em
Send
No ThingsSpeak :
- Selecionar o
Channelscorrespondente - Verificar se os valores testados aparecem no grafico
Integracao do ThingsSpeak com o Twitter
Criar conta caso nao tenha.
Conta: TTNSensores_UTAD - @ttnsensores
No ThingsSpeak
Procedimento:
- no separador
AppsselecionarThingTweet - Clicar em
Link Twitter Account - Clicar em
Autorize app - Em
Appsseleccione a opcaoReacte depoisNew React - Preencher os campos
- Clicar e Save React
Notas sobre o trabalho
Ficou a faltar o sensor (por motivos externos ao grupo) e consequentemente a calibracao do mesmo.
A logica usada para obter os valores precisa de melhorias. Uma alteracao que deve ser levada em conta, e a alteracao do local onde e inserida o valor da "calibracao" (que nesta fase encontra-se no payload) colocando-a no codigo que corre no Arduino.
Faltou tambem testar no terreno.
Se no futuro voltarmos a pegar neste projeto, todas alteracoes vao constar no repositorio do github Water sensor utad.
Este Trabalho foi realizador por
- 22653 Eduardo Queiros
- 66509 Hugo Claro