Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Componentes e Materiais

Componente Quantidade
Arduino MKR1000 1
Fios jumpers (genéricos) 1
Medidor de pH DFRobot 1
Resistor 4,75k ohm 1
Sonda de temperatura 1

Aplicativos e Serviços Online

Sobre o Projeto

I. Objetivo

O objetivo principal deste projeto é usar a Samsung ARTIK Cloud para monitorar os níveis de pH e temperatura de piscinas.

II. Configuração da ARTIK Cloud

Passo 1. Criando seu novo dispositivo

Cadastre-se na ARTIK Cloud. Acesse o site do desenvolvedor e crie um novo "device type" (tipo de dispositivo).

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Insira o nome de exibição e nome único desejados.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Crie novo Manifesto

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Insira o nome do campo e outras descrições

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Clique em Salvar e depois navegue até a aba "Activate Manifest"

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Clique no botão ACTIVE MANIFEST para finalizar e você será redirecionado aqui

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Criação do tipo de dispositivo concluída!

Agora vamos criar sua aplicação que usará esse dispositivo.

Passo 2. Criando sua aplicação

Navegue até ARTIK Cloud Applications.

Clique em "new application"

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Insira o nome desejado da aplicação e a URL de redirecionamento de autenticação.

Note que a URL de redirecionamento de autenticação é obrigatória. Ela é usada para autenticar os usuários desta aplicação, portanto redirecionará para esta URL se houver necessidade de login.

Usamos https://localhost/index/ como exemplo.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Agora defina a permissão da sua aplicação para leitura e escrita, navegue até seu dispositivo e salve.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Parabéns, você agora tem sua aplicação!

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Agora vamos conectar essa aplicação.

Passo 3. Conectar seu dispositivo

Navegue até "my devices" e clique em "connect another device".

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Clique no seu novo tipo de dispositivo criado anteriormente e depois em "connect device".

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Clique nas configurações do seu dispositivo conectado.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Anote estas informações, pois você precisará delas no programa.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Agora navegue até seu dispositivo conectado

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Configuração da ARTIK Cloud concluída. Uma vez que seu hardware estiver funcionando, o gráfico terá dados.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

III. Configuração do Hardware e Sensores

Passo 1. Conectar os sensores de Temperatura e pH ao MKR1000

Aqui está o diagrama:

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Aqui está minha fiação de exemplo

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Se você notou, adicionamos um Jack de Áudio para facilitar a desconexão do sensor de temperatura. Mas isso é opcional.

Aqui está a conexão do sensor de temperatura ao jack.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Passo 2. Configurar software necessário

Vá na Arduino IDE e adicione a placa MKR1000.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Pesquise "mkr1000" e clique em instalar

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Adicione as bibliotecas necessárias

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Pesquise e instale as bibliotecas:

Configuração do software necessária concluída!

Passo 3. Carregar o programa

Agora conecte o MKR1000 ao seu PC/Notebook.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Baixe o software no GitHub aqui

Altere as seguintes informações:

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Então faça upload do Código do Software para o MKR1000 e comece a monitorar.

Nota: Seu WiFi deve ter conexão com a internet.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

IV. Teste de Campo

Testamos o hardware do sensor em Piscinas Privadas, Públicas e Escolares. A coleta de dados dessas piscinas nos permitiu analisar a capacidade do hardware.

Você pode colocar o MKR1000 e o sensor em uma caixa e colocá-la na sua piscina, longe da contaminação da água. Fazendo isso, você pode monitorar a qualidade da sua água e normalizá-la adicionando os produtos químicos desejados.

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud
Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Em breve faremos upload do tutorial sobre como colocar todos os circuitos dentro desta caixa e as filmagens reais dos testes.

V. Resultados

Espero que este tutorial ajude as pessoas a construir seu próprio dispositivo DIY de monitoramento de qualidade da água de piscina. Que haja uma maior conscientização sobre a degradação contínua da qualidade da água das piscinas, pois as pessoas tendem a focar mais nas comodidades oferecidas em vez de verificar o quão seguras elas são. Eles também pretendem contribuir para a comunidade ao fornecer um meio de tornar o teste de qualidade da água mais eficiente e eficaz sem o sacrifício desnecessário de recursos.

Boa construção! :)

Código

Código do Arduino MKR1000 (C/C++)

Carregue este código no seu Arduino MKR1000

Visite no GitHub > https://github.com/imjeffparedes/iot-water-quality-artik

/******************** Aqui está meu Código para Monitoramento de Dispositivo de Qualidade da Água publicado em https://www.hackster.io/animo/water-quality-moniroting-840fea ********************/
#include 
#include 
#include 
#include 
#include 
#include 
#include 

/**Inicialização do Sensor de Temperatura**/
#define ONE_WIRE_BUS 1 // Fio de dados conectado à porta digital 1 do Arduino
OneWire oneWire(ONE_WIRE_BUS); // Configura uma instância oneWire para comunicar com qualquer dispositivo OneWire
DallasTemperature sensors(&oneWire); // Passa nossa referência oneWire para Dallas Temperature

/** Inicialização REST da ARTIK Cloud **/
char server[] = "api.artik.cloud"; // Host da API Samsung ARTIK Cloud
int port = 443; // 443 para HTTPS
char buf[200]; // dados do corpo para armazenar o JSON a ser enviado para a ARTIK cloud
String deviceID = "artik cloud device id"; // coloque seu device id aqui criado no tutorial
String deviceToken = "artik cloud device token"; // coloque seu device token aqui criado no tutorial

/**Inicialização do medidor de pH**/
#define SensorPin A1 // Saída analógica do medidor de pH para Entrada Analógica 1 do Arduino
#define Offset 0.00 // compensação de desvio
#define samplingInterval 20
#define ArrayLenth 40 // vezes de coleta
int pHArray[ArrayLenth]; // Armazena o valor médio do feedback do sensor
int pHArrayIndex=0;
int status = -1;
int millis_start;

/**Configuração WiFi**/
#define WIFI_AP "your wifi ssid"
#define WIFI_PWD "wifi password"
WiFiSSLClient wifi;
HttpClient client = HttpClient(wifi, server, port);

void setup(void) {
  millis_start = millis();
  Serial.begin(9600);
  startWifi(); // inicia conexão com wifi
}

void loop(void) {
  /*Adquirindo temperatura atual*/
  float celsius = 0;
  sensors.requestTemperatures(); // Envia comando para obter temperaturas
  celsius = sensors.getTempCByIndex(0);
  sensors.requestTemperatures(); // Envia comando para obter temperaturas
  celsius = sensors.getTempCByIndex(0);

  /*Adquirindo valor atual de pH*/
  static unsigned long samplingTime = millis();
  static unsigned long printTime = millis();
  static float pHValue,voltage;
  if(millis()-samplingTime > samplingInterval) {
    pHArray[pHArrayIndex++]=analogRead(SensorPin);
    if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
    voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
    pHValue = 3.5*voltage+Offset;
    samplingTime=millis();
  }

  Serial.println("===========================================");
  Serial.println("Enviaremos estes dados json");
  //imprime em formato json
  Serial.println("data: { ");
  Serial.print("ph: ");
  Serial.print(pHValue);
  Serial.print(" , temp: ");
  Serial.print(celsius);
  Serial.println("} ");
  Serial.println("");
  Serial.println("Iniciando envio de dados");

  String contentType = "application/json";
  String AuthorizationData = "Bearer " + deviceToken; //Device Token
  int len = loadBuffer(celsius,pHValue);
  Serial.println("Enviando temp: "+String(celsius) +" e ph: "+String(pHValue) );
  Serial.println("Enviando POST para ARTIK Cloud API");

  client.beginRequest();
  client.post("/v1.1/messages"); //, contentType, buf
  client.sendHeader("Authorization", AuthorizationData);
  client.sendHeader("Content-Type", "application/json");
  client.sendHeader("Content-Length", len);
  client.endRequest();
  client.print(buf);

  // imprime resposta da api
  int statusCode = client.responseStatusCode();
  String response = client.responseBody();
  Serial.println("");
  Serial.print("Status code: ");
  Serial.println(statusCode);
  Serial.print("Response: ");
  Serial.println(response);
  delay(1000); // atraso de atualização
}

/*Inicialização da Conexão WiFi*/
void startWifi(){
  Serial.println("Conectando MKR1000 à rede...");
  // WiFi.begin(); // tenta conectar à rede Wifi:
  while ( status != WL_CONNECTED ) {
    Serial.print("Tentando conectar ao SSID WPA: ");
    Serial.println(WIFI_AP);
    WiFi.begin(WIFI_AP, WIFI_PWD);
    // espera 10 segundos para conexão:
    delay(10000);
    status = WiFi.status();
  }
}

/*Fonte DfRobot pH Meter*/
double avergearray(int* arr, int number){
  int i;
  int max,min;
  double avg;
  long amount=0;
  if(number<=0){
    Serial.println("Error number for the array to avraging!/n");
    return 0;
  }
  if(number<5){
    //menos que 5, calculado diretamente estatísticas
    for(i=0;imax){
          amount+=max; //arr>max
          max=arr[i];
        }else{
          amount+=arr[i]; //min<=arr<=max
        }
      }
    }
    avg = (double)amount/(number-2);
  }
  return avg;
}

/*Buffer para enviar via REST*/
int loadBuffer(float temp, float ph ) {
  StaticJsonBuffer<200> jsonBuffer; // reserva espaço na memória
  JsonObject& root = jsonBuffer.createObject(); // cria objetos raiz
  root["sdid"] = deviceID;
  root["type"] = "message";
  JsonObject& dataPair = root.createNestedObject("data"); // cria objetos aninhados
  dataPair["temp"] = temp;
  dataPair["ph"] = ph;
  root.printTo(buf, sizeof(buf)); // JSON-print para buffer
  return (root.measureLength()); // também retorna comprimento
}

Esquemáticos

Conexão em protoboard do MKR1000 e sensores

Monitoramento de Piscina em Tempo Real com Arduino MKR1000 e Samsung ARTIK Cloud

Processo de manufatura

  1. Navegando em SaaS e nuvem: por que a gestão meticulosa de dados importa
  2. Expandindo horizontes da nuvem: novas zonas, contêineres e estratégias multicloud
  3. Dominando o Monitoramento de Aplicações na Nuvem: Insights para Líderes de TI
  4. Por Que o Cloud Linux Aumenta Segurança, Estabilidade e Desempenho em Hospedagem Compartilhada
  5. Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
  6. Home Energy Centre: Monitoramento Solar PV, Painéis Térmicos e Temperaturas de Ambientes com Raspberry Pi e Moteino
  7. Controle de Temperatura Caseiro para Homebrew: Monitore e Regule com Arduino
  8. Monitoramento Remoto do Tempo com Raspberry Pi 3 e PubNub
  9. Sistema Inteligente de Monitoramento de Qualidade do Ar Interno e Resíduos
  10. Como Soluções de Monitoramento de Gás Aumentam a Segurança em Ambientes Industriais e Automotivos