Monitoramento da qualidade da água usando MKR1000 e ARTIK Cloud
Componentes e suprimentos
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 |
Aplicativos e serviços online
![]() |
| |||
![]() |
|
Sobre este projeto
I. Objetivo
O objetivo principal deste projeto é usar o Samsung ARTIK Cloud para monitorar o pH e os níveis de temperatura de piscinas.
II. Configuração da nuvem ARTIK
Etapa 1. Criando seu novo dispositivo
Inscreva-se com ARTIK Cloud. Vá para o site do desenvolvedor e crie um novo "tipo de dispositivo".

Insira a exibição desejada e o nome exclusivo.

Criar um novo Manifesto

Insira o nome do campo e outra descrição

Clique em Salvar e navegue até a guia Ativar manifesto

Clique no botão MANIFESTO ATIVO para finalizar e você será redirecionado aqui

Concluída a criação do tipo de dispositivo!
Agora vamos criar seu aplicativo que usará esse dispositivo.
Etapa 2. Criando seu aplicativo
Navegue até Aplicativos em nuvem ARTIK.
Clique em novo aplicativo

Insira o nome do aplicativo desejado e o URL de redirecionamento de autenticação.
Observe que o URL de redirecionamento de autenticação é obrigatório. Ele é usado para autenticar os usuários deste aplicativo, portanto, redirecionará para este url se precisar de login.
Usamos http:// localhost / index / para amostra.

Agora defina a permissão do seu aplicativo para ler e escrever, navegue até o seu dispositivo e salve.

Parabéns, agora você tem seu aplicativo!

Agora vamos conectar esse aplicativo.
Etapa 3. Conecte seu dispositivo
Navegue até meus dispositivos e clique em conectar outro dispositivo.

Clique no novo tipo de dispositivo criado anteriormente e clique em conectar dispositivo.

Clique nas configurações do dispositivo conectado.

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

Agora navegue até o seu dispositivo conectado

Feito para a configuração do ARTIK Cloud. Assim que seu hardware estiver pronto, o gráfico terá dados.

III. Configuração do sensor de hardware
Etapa 1. Conecte os sensores de temperatura e pH ao MKR1000.
Aqui está o diagrama:
- Temp GND para MRK1000 GND
- Temp OUT para MKR1000 pino digital 1
- Temp VCC para MKR1000 5V
- Conecte um resistor de 4,7 K a Temp VCC e Temp OUT
- pH GND a MRK1000 GND
- pH OUT para MKR1000 analógico pino 1
- pH VCC para MKR1000 5V

Aqui está meu exemplo de fiação


Se você notou, nós adicionamos um conector de áudio para facilitar a remoção do sensor de temperatura. Mas isso é opcional.
Aqui está a conexão do sensor de temperatura ao conector.


Etapa 2. Configure o software necessário
Vá para Arduino IDE e adicione a placa MKR1000.

Pesquise mkr1000 e clique em instalar

Adicionar biblioteca necessária

Procure bibliotecas para instalar:
- ArduinoJson - usaremos isso para enviar dados JSON para ARTIK Cloud
- ArduinoHttpClient - host para conexão com a API
- OneWire - necessário para ler a entrada digital do sensor de temperatura
- DallasTemperature - Biblioteca necessária do sensor de temperatura de Dallas
Conclua a adição do software necessário!
Etapa 3. Faça upload do programa
Agora conecte o MKR1000 ao seu PC / Laptop.

Baixe o software no GitHub aqui
Altere as seguintes informações:

Em seguida, carregue o código do software no MKR1000 e comece a monitorar.
Nota:Seu WiFi deve ter conexão com a Internet.

4. Teste de campo
Testamos o sensor de hardware para Piscinas Privadas, Públicas e Escolares. Coletar os dados do pool desses entrevistados nos permitiu analisar a capacidade do hardware.
Você pode colocar o MKR1000 e o sensor em uma caixa e colocá-lo em sua piscina longe da contaminação da água. Ao fazer isso, você pode monitorar a qualidade da água e normalizá-la, colocando os produtos químicos desejados.


Em breve iremos carregar o tutorial de 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 de monitoramento da qualidade da água da piscina DIY. Que haja uma maior conscientização quanto à degradação contínua da qualidade da água da piscina, já que as pessoas tendem a se concentrar mais nas comodidades que são oferecidas em vez de verificar o quão seguras são. Eles também pretendem contribuir com a comunidade, sendo capazes de fornecer um meio de tornar os testes de qualidade da água mais eficientes e eficazes, sem o sacrifício desnecessário de recursos.
Feliz construção! :)
Código
- Códigos Arduino MKR1000
Códigos do Arduino MKR1000 C / C ++
Faça upload destes códigos para o seu Arduino MKR1000Visite no GitHub> https://github.com/imjeffparedes/iot-water-quality-artik
/********************** Aqui está o meu código para Water Quality Device Monitoring publicado em https://www.hackster.io/animo/water-quality-moniroting-840fea*********************/#include#include #include #include #include #include #include / ** Sensor de temperatura Inicialização ** / # define ONE_WIRE_BUS 1 // O fio de dados está conectado à porta digital 1 do ArduinoOneWire oneWire (ONE_WIRE_BUS); // Configurar uma instância oneWire para se comunicar com quaisquer dispositivos OneWire // (não apenas ICs de temperatura Maxim / Dallas) Sensores de temperatura Dallas (&oneWire); // Passe nossa referência oneWire para Dallas Temperature. / ** ARTIK Cloud REST Initialization ** / char server [] ="api.artik.cloud"; // Samsung ARTIK Cloud API Hostint port =443; // 443 para HTTPS char buf [200]; // dados do corpo para armazenar o JSON a ser enviado para a nuvem ARTIK String deviceID ="artik cloud device id"; // coloque o id do seu dispositivo aqui criado a partir do tutorial String deviceToken ="token de dispositivo em nuvem artik"; // coloque o token do seu dispositivo aqui criado a partir do tutorial / ** inicialização do medidor de pH ** / # define SensorPin A1 // Saída analógica do medidor de pH para Arduino Analog Input 1 # define Offset 0.00 // desvio compensa # define samplingInterval 20 # define ArrayLenth 40 // tempos de coletaint pHArray [ArrayLenth]; // Armazena o valor médio do feedbackint do sensor pHArrayIndex =0; int status =-1; int millis_start; / ** Configuração Wifi ** / # define WIFI_AP "seu ssid wi-fi" #define WIFI_PWD "senha wi-fi" WiFiSSLClient wi-fi; Cliente HttpClient =HttpClient (wi-fi, servidor, porta); configuração de void (void) {millis_start =millis (); Serial.begin (9600); startWifi (); // inicia a conexão com wi-fi} void loop (void) {/ * Temperatura atual de aquisição * / float celsius =0; sensores.requestTemperatures (); // Envie o comando para obter as temperaturas celsius =sensores.getTempCByIndex (0); sensores.requestTemperatures (); // Envie o comando para obter as temperaturas celsius =sensores.getTempCByIndex (0); / * Valor de pH atual de aquisição * / static unsigned long samplingTime =millis (); tempo de impressão longo não assinado estático =millis (); flutuador estático pHValue, voltagem; if (millis () - samplingTime> samplingInterval) {pHArray [pHArrayIndex ++] =analogRead (SensorPin); if (pHArrayIndex ==ArrayLenth) pHArrayIndex =0; voltagem =média (pHArray, ArrayLenth) * 5,0 / 1024; pHValue =3,5 * voltagem + Offset; samplingTime =millis (); } Serial.println ("=================================================" ); Serial.println ("Enviaremos esses dados json"); // imprime no formato json Serial.println ("data:{"); Serial.print ("ph:"); Serial.print (pHValue); Serial.print (", temp:"); Serial.print (celsius); Serial.println ("}"); Serial.println (""); Serial.println ("Começar a enviar dados"); String contentType ="aplicativo / json"; String AuthorizationData ="Bearer" + deviceToken; // Token do dispositivo int len =loadBuffer (celsius, pHValue); Serial.println ("Sending temp:" + String (celsius) + "e ph:" + String (pHValue)); Serial.println ("Enviar POST para ARTIK Cloud API"); client.beginRequest (); client.post ("/ v1.1 / mensagens"); //, contentType, buf client.sendHeader ("Authorization", AuthorizationData); client.sendHeader ("Content-Type", "application / json"); client.sendHeader ("Comprimento do conteúdo", len); client.endRequest (); client.print (buf); // imprime a resposta da api int statusCode =client.responseStatusCode (); Resposta da string =client.responseBody (); Serial.println (""); Serial.print ("Código de status:"); Serial.println (statusCode); Serial.print ("Resposta:"); Serial.println (resposta); atraso (1000); // atraso da atualização} / * Conexão inicial ao Wifi * / void startWifi () {Serial.println ("Conectando o MKR1000 à rede ..."); // WiFi.begin (); // tentativa de conexão à rede Wifi:while (status! =WL_CONNECTED) {Serial.print ("Tentando conectar ao WPA SSID:"); Serial.println (WIFI_AP); WiFi.begin (WIFI_AP, WIFI_PWD); // aguarde 10 segundos pela conexão:delay (10000); status =WiFi.status (); }} / * DfRobot pH Meter Source * / double avergearray (int * arr, número int) {int i; int max, min; média dupla; quantidade longa =0; if (número <=0) {Serial.println ("Número do erro para a matriz avraging! / n"); return 0; } if (número <5) {// menor que 5, estatística calculada diretamente para (i =0; i max) {amount + =max; // arr> max max =arr [i]; } else {montante + =arr [i]; // min <=arr <=max}} // if} // para avg =(double) amount / (number-2); } // if return avg;} / * Buffer para enviar em REST * / int loadBuffer (float temp, float ph) {StaticJsonBuffer <200> jsonBuffer; // reserva um lugar na memória JsonObject &root =jsonBuffer.createObject (); // cria objetos raiz root ["sdid"] =deviceID; root ["tipo"] ="mensagem"; JsonObject &dataPair =root.createNestedObject ("dados"); // cria objetos aninhados dataPair ["temp"] =temp; dataPair ["ph"] =ph; root.printTo (buf, sizeof (buf)); // JSON-imprime no buffer return (root.measureLength ()); // também retorna comprimento}
Esquemas
Conexão de placa de ensaio de MKR1000 e sensores
Processo de manufatura
- Uso de SaaS e nuvem exige organização cuidadosa de dados
- Para a nuvem infinita e além
- Monitoramento de aplicativos em nuvem e você
- Segurança e benefícios importantes do uso da nuvem Linux
- Sensor de temperatura Python e Raspberry Pi
- Monitoramento da temperatura ambiente com Moteino e Raspberry Pi
- DIY:Monitoramento e regulação de temperatura para HomeBrew
- Monitoramento remoto do clima usando Raspberry Pi
- Sistema de monitoramento de qualidade do ar interno e lixo
- Aplicações e benefícios de usar uma solução de monitoramento de gás