Skip to content
This repository has been 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 fácil leitura deste ficheiro, usar o vscode (ou similar) e colocar em modo "preview".

Este projeto foi desenvolvido no ambito:

Cadeira: Intrumentação e Sensores

Curso: Mestrado Integrado Engenharia Eletrotécnica e de Computadores

Universidade:

Universidade Trás-Os-Montes e Alto Douro (UTAD)

Introdução

Pretende-se com este projeto estudar o que são sensores, e também, o que vem a ser o protocolo LoRa. Para tal, vamos simular uma situação real onde se visa saber o caudal de água 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 solução real, mas devido ao Covid-19 essa tarefa ficou adiada)
  • Para armazenar e apresentar os dados
  • Para realizar a interligação entre o sensor e a “base de dados”

Realização 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 Medições
  • Enviar os dados obtidos para a plataforma The Things Network.
  • Integração do The Things Network com o ThingsSpeak.

Obter o EUI e registo da placa no The Things Network

Obter EUI

O código necessário para essa tarefa encontra-se na pasta get_eui.

Your device EUI is: A8610A3337XXXXXX

Register Devices

Procedimento:

  • Entrar em Applications e selecionar a aplicação pertendida.
  • Em Devices clique em register device
  • Preencher os campos da figura abaixo:

register device

Application ID: water_sensor_utad
Device EUI: A8610A3337XXXXXX

Resultado:

const char *appEui = "70B3D57ED0XXXXXX";
const char *appKey = "6935F074F3ADB47783E5FB0DCAXXXXXX";

Medições

O código encontra-se nos ficheiros water_sensor_utad.ino e arduino_secrets.h

Obter valor

Apresentação das partes mais importantes do código e uma breve explicação de cada uma.

  // Ler o valor da tensão
  voltage = analogRead(A0);

  // Se a tensão for maior que 1 volt, conta uma gota
  if (voltage > 210) drops++;

  // Média de gotas por minuto (60000ms) - Valor máximo 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 código 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 função Decoder

Função 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"
}

Integração 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 integração com ThingsSpeak IoT Analytics with MATLAB
  • Preencher os campos

integration

  • Clicar em Add integration

Testar integração

No The Things Network :

Para testar a integração:

  • Selecionar um device
  • fazer scroll até Simulate Uplink
  • intrduzir valores para teste e clicar em Send

No ThingsSpeak :

  • Selecionar o Channels correspondente
  • Verificar se os valores testados aparecem no gráfico

Teste ThingsSpeak - water sensor

Integração do ThingsSpeak com o Twitter

Twitter

Criar conta caso não 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 opção React e depois New React
  • Preencher os campos

Twitter

  • Clicar e Save React

Notas sobre o trabalho

Ficou a faltar o sensor (por motivos externos ao grupo) e consequentemente a calibração do mesmo.

A logica usada para obter os valores precisa de melhorias. Uma alteração que deve ser levada em conta, é a alteração do local onde é inserida o valor da "calibração" (que nesta fase encontra-se no payload) colocando-a no código que corre no Arduino.

Faltou também testar no terreno.

Se no futuro voltarmos a pegar neste projeto, todas alterações vão constar no repositorio do github Water sensor utad.

Este Trabalho foi realizador por

  • 22653 Eduardo Queirós
  • 66509 Hugo Claro