Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Monitor en Tiempo Real de Piscina con Arduino MKR1000 y Samsung ARTIK Cloud

Componentes y materiales

ComponenteCantidad
Arduino MKR10001
Cables jumper1 set
Medidor de pH DFRobot1
Resistencia 4.75 kΩ1
Sonda de temperatura (DS18B20)1

Aplicaciones y servicios en línea

Descripción del proyecto

I. Objetivo

El objetivo principal es usar Samsung ARTIK Cloud para monitorizar los niveles de pH y temperatura de piscinas.

II. Configuración de ARTIK Cloud

Paso 1: Crear un nuevo tipo de dispositivo

  1. Regístrese en ARTIK Cloud. Vaya al portal de desarrolladores y cree un nuevo device type.
  2. Ingrese nombre visible y nombre único.
  3. Cree un nuevo Manifest definiendo los campos (pH, temperatura).
  4. Guarde y active el manifest.
Monitor en Tiempo Real de Piscina con Arduino MKR1000 y Samsung ARTIK Cloud
Creación de tipo de dispositivo

Paso 2: Crear la aplicación

  1. Vaya a ARTIK Cloud Applications y cree una nueva.
  2. Ingrese nombre y Authentication Redirect URL (requerida para autenticar usuarios; usamos https://localhost/index/ de ejemplo).
  3. Establezca permisos de lectura/escritura para su dispositivo.
Monitor en Tiempo Real de Piscina con Arduino MKR1000 y Samsung ARTIK Cloud
Permisos de la aplicación

Paso 3: Conectar el dispositivo

  1. En My Devices, haga clic en Connect another device.
  2. Seleccione su device type y conéctelo.
  3. Anote el Device ID y Device Token; los necesitará en el código.
Monitor en Tiempo Real de Piscina con Arduino MKR1000 y Samsung ARTIK Cloud
Device ID y Token

III. Configuración del hardware y sensores

Paso 1: Conectar sensores al MKR1000

Sonda de temperatura (DS18B20):

Sensor de pH (DFRobot):

Monitor en Tiempo Real de Piscina con Arduino MKR1000 y Samsung ARTIK Cloud
Diagrama de conexiones
Monitor en Tiempo Real de Piscina con Arduino MKR1000 y Samsung ARTIK Cloud
Montaje en protoboard

Opcional: añadí un conector jack de audio para desacoplar fácilmente la sonda de temperatura.

Paso 2: Software necesario

En Arduino IDE:

  1. Añada la placa MKR1000: Tools → Board → Boards Manager, busque "mkr1000" e instale.
  2. Instale librerías: ArduinoJson, ArduinoHttpClient, OneWire, DallasTemperature.

Paso 3: Subir el programa

  1. Conecte el MKR1000 al PC.
  2. Descargue el código desde GitHub.
  3. Modifique: SSID WiFi, contraseña, Device ID y Device Token de ARTIK Cloud.
  4. Suba el código.

Nota: Su WiFi debe tener conexión a Internet.

IV. Pruebas de campo

Probamos el hardware en piscinas privada, pública y escolar. La recopilación de datos nos permitió analizar la capacidad del sistema.

Puede colocar el MKR1000 y sensores en una caja estanca y flotarla en la piscina, lejos de contaminación directa. Así monitoriza la calidad del agua y la normaliza añadiendo los químicos necesarios.

Monitor en Tiempo Real de Piscina con Arduino MKR1000 y Samsung ARTIK Cloud
Dispositivo en piscina

V. Resultados

Este tutorial ayuda a construir su propio monitor DIY de calidad de agua para piscinas. Busca concienciar sobre la degradación continua de la calidad del agua, ya que a menudo se priorizan las comodidades sobre la seguridad. También aporta a la comunidad una forma eficiente y efectiva de testar la calidad del agua sin sacrificio innecesario de recursos.

¡Feliz construcción! :)

Código completo (Arduino MKR1000)

/******************** Código para Monitor de Calidad de Agua ********************/
#include <WiFi101.h>
#include <WiFiClient.h>
#include <ArduinoJson.h>
#include <ArduinoHttpClient.h>
#include <SPI.h>
#include <OneWire.h>
#include <DallasTemperature.h>

/** Sensor de temperatura **/
#define ONE_WIRE_BUS 1
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

/** ARTIK Cloud REST **/
char server[] = "api.artik.cloud";
int port = 443;
char buf[200];
String deviceID = "SU_DEVICE_ID_AQUI";
String deviceToken = "SU_DEVICE_TOKEN_AQUI";

/** Sensor de pH **/
#define SensorPin A1
#define Offset 0.00
#define samplingInterval 20
#define ArrayLenth 40
int pHArray[ArrayLenth];
int pHArrayIndex = 0;

int status = -1;
unsigned long millis_start;

/** WiFi **/
#define WIFI_AP "SU_SSID"
#define WIFI_PWD "SU_PASSWORD"
WiFiSSLClient wifi;
HttpClient client = HttpClient(wifi, server, port);

void setup() {
  millis_start = millis();
  Serial.begin(9600);
  startWifi();
}

void loop() {
  /* Temperatura */
  float celsius = 0;
  sensors.requestTemperatures();
  celsius = sensors.getTempCByIndex(0);
  sensors.requestTemperatures();
  celsius = sensors.getTempCByIndex(0);

  /* 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("Enviando datos JSON:");
  Serial.print("data: { ph: "); Serial.print(pHValue);
  Serial.print(" , temp: "); Serial.print(celsius); Serial.println("} ");

  String contentType = "application/json";
  String AuthorizationData = "Bearer " + deviceToken;
  int len = loadBuffer(celsius, pHValue);

  Serial.println("Enviando temp: " + String(celsius) + " y ph: " + String(pHValue));
  Serial.println("POST a ARTIK Cloud API");

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

  int statusCode = client.responseStatusCode();
  String response = client.responseBody();
  Serial.print("Status code: "); Serial.println(statusCode);
  Serial.print("Response: "); Serial.println(response);

  delay(1000);
}

void startWifi() {
  Serial.println("Conectando MKR1000 a la red...");
  while (status != WL_CONNECTED) {
    Serial.print("Intentando conectar a WPA SSID: "); Serial.println(WIFI_AP);
    WiFi.begin(WIFI_AP, WIFI_PWD);
    delay(10000);
    status = WiFi.status();
  }
}

double avergearray(int* arr, int number) {
  if (number <= 0) return 0;
  if (number < 5) {
    long amount = 0;
    for (int i = 0; i < number; i++) amount += arr[i];
    return (double)amount / number;
  } else {
    int i, min, max;
    long amount = 0;
    if (arr[0] < arr[1]) { min = arr[0]; max = arr[1]; }
    else { min = arr[1]; max = arr[0]; }
    for (i = 2; i < number; i++) {
      if (arr[i] < min) { amount += min; min = arr[i]; }
      else if (arr[i] > max) { amount += max; max = arr[i]; }
      else amount += arr[i];
    }
    return (double)amount / (number - 2);
  }
}

int loadBuffer(float temp, float ph) {
  StaticJsonBuffer<200> jsonBuffer;
  JsonObject& root = jsonBuffer.createObject();
  root["sdid"] = deviceID;
  root["type"] = "message";
  JsonObject& dataPair = root.createNestedObject("data");
  dataPair["temp"] = temp;
  dataPair["ph"] = ph;
  root.printTo(buf, sizeof(buf));
  return root.measureLength();
}

Proceso de manufactura

  1. Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
  2. Centro de Energía Doméstica: Monitorización de paneles solares fotovoltaicos, térmicos y temperaturas con Raspberry Pi y Moteino
  3. Control de temperatura casero para cerveza: monitorizar y regular con Arduino
  4. Monitorización meteorológica remota con Raspberry Pi 3 y PubNub
  5. Sistema inteligente de monitorización de calidad del aire interior y residuos
  6. Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
  7. Navegando SaaS y Cloud: por qué la gestión de datos meticulosa importa
  8. Expandiendo horizontes cloud: Nuevas zonas, contenedores y estrategias multicloud
  9. Dominando la monitorización de aplicaciones en la nube: claves para líderes de TI
  10. Por qué Cloud Linux impulsa seguridad, estabilidad y rendimiento en hosting compartido
  11. Cómo las Soluciones de Monitoreo de Gas Mejoran la Seguridad en Entornos Industriales y Automotrices