Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Aug 24, 2022. It is now read-only.

code36u4r60/water-sensor-utad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

4 Commits

Repository files navigation

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
  • Para realizar a interligacao entre o sensor e a "base de dados"

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 Applications e selecionar a aplicacao pertendida.
  • Em Devices clique em register device
  • Preencher os campos da figura abaixo:

Application ID: water_sensor_utad
Device EUI: A8610A3337XXXXXX

Resultado:

const char *appEui = "70B3D57ED0XXXXXX";
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.

// Ler o valor da tensao
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

// Enviar valores para "the network of things" de hora em hora (360000ms)
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 Formats e editar a funcao Decoder

Funcao Decode

function Decoder(bytes, port) {
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 Channels e depois New 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 Integrations e de pois add 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 Channels correspondente
  • Verificar se os valores testados aparecem no grafico

Integracao do ThingsSpeak com o Twitter

Twitter

Criar conta caso nao tenha.

Conta: TTNSensores_UTAD - @ttnsensores

No ThingsSpeak

Procedimento:

  • no separador Apps selecionar ThingTweet
  • Clicar em Link Twitter Account
  • Clicar em Autorize app
  • Em Apps seleccione a opcao React e depois New 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

About

Water sensor and flow meter.

Topics

Resources

Readme

License

MIT license

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors