Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Surveillance en temps réel de piscine avec Arduino MKR1000 et Samsung ARTIK Cloud

Composants et fournitures

Arduino MKR1000 × 1
Fils de connexion (genériques) × 1
pH-mètre DFRobot × 1
Résistance 4,75 kΩ × 1
Sonde de température × 1

Applications et services en ligne

À propos du projet

I. Objectif

L'objectif principal est d'utiliser Samsung ARTIK Cloud pour surveiller les niveaux de pH et de température des piscines.

II. Configuration d'ARTIK Cloud

Étape 1 : Créer votre nouveau type de dispositif

Inscrivez-vous sur ARTIK Cloud. Allez sur le site développeur et créez un nouveau « device type ». Saisissez le nom d'affichage et le nom unique souhaités. Créez un nouveau manifeste : entrez le nom du champ et sa description. Cliquez sur Enregistrer, puis allez dans l'onglet « Activate Manifest » et cliquez sur le bouton « ACTIVE MANIFEST ». Votre type de dispositif est créé ! Créez maintenant l'application qui l'utilisera.

Étape 2 : Créer votre application

Naviguez vers « ARTIK Cloud Applications ». Cliquez sur « New Application ». Saisissez le nom souhaité et l'URL de redirection d'authentification (requise pour l'authentification des utilisateurs). Nous avons utilisé https://localhost/index/ comme exemple. Définissez les permissions de l'application en lecture/écriture, accédez à votre dispositif et sauvegardez. Félicitations, votre application est créée !

Étape 3 : Connecter votre dispositif

Allez dans « My Devices » et cliquez sur « Connect Another Device ». Sélectionnez votre type de dispositif créé précédemment et cliquez sur « Connect Device ». Accédez aux paramètres du dispositif connecté et notez les informations (Device ID, Device Token) nécessaires pour le programme. Une fois le matériel opérationnel, les graphiques afficheront les données.

III. Configuration matérielle des capteurs

Étape 1 : Connecter les capteurs de température et pH au MKR1000

Schéma de câblage :

J'ai ajouté une prise jack audio pour faciliter le détachement du capteur de température (optionnel).

Étape 2 : Configurer les logiciels requis

Dans l'IDE Arduino, ajoutez la carte MKR1000 (Gestionnaire de cartes > recherchez « mkr1000 » > Installer). Installez les bibliothèques suivantes via le Gestionnaire de bibliothèques :

Étape 3 : Téléverser le programme

Branchez le MKR1000 sur votre PC. Téléchargez le code sur GitHub et modifiez les informations suivantes : vos identifiants WiFi (SSID/mot de passe), votre Device ID et Device Token ARTIK Cloud. Téléversez le code sur le MKR1000 et commencez la surveillance. Votre WiFi doit avoir une connexion Internet.

IV. Test sur le terrain

Nous avons testé le matériel sur des piscines privées, publiques et scolaires. La collecte de données auprès de ces piscines nous a permis d'analyser les capacités du matériel. Placez le MKR1000 et les capteurs dans une boîte étanche, loin de l'eau, pour surveiller la qualité de l'eau et l'ajuster en ajoutant les produits chimiques appropriés.

V. Résultats

J'espère que ce tutoriel aidera à construire votre propre dispositif DIY de surveillance de la qualité de l'eau de piscine. Puisse-t-il sensibiliser à la dégradation continue de la qualité de l'eau, souvent négligée au profit des équipements. Il vise aussi à rendre les tests de qualité d'eau plus efficaces sans gaspillage de ressources.

Bon bricolage ! :)

Code

Code Arduino MKR1000 (C/C++)

Téléversez ce code sur votre Arduino MKR1000. Disponible sur GitHub : https://github.com/imjeffparedes/iot-water-quality-artik

/******************** Code pour Water Quality Device Monitoring ********************/
#include <WiFi101.h>
#include <WiFiClient.h>
#include <ArduinoJson.h>
#include <ArduinoHttpClient.h>
#include <SPI.h>
#include <OneWire.h>
#include <DallasTemperature.h>

/** Initialisation capteur température **/
#define ONE_WIRE_BUS 1
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

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

/** Initialisation pH-mètre **/
#define SensorPin A1
#define Offset 0.00
#define samplingInterval 20
#define ArrayLength 40
int pHArray[ArrayLength];
int pHArrayIndex = 0;
int status = -1;
unsigned long millis_start;

/** Configuration WiFi **/
#define WIFI_AP "votre_ssid_wifi"
#define WIFI_PWD "votre_mot_de_passe_wifi"
WiFiSSLClient wifi;
HttpClient client = HttpClient(wifi, server, port);

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

void loop(void) {
  // Acquisition température
  float celsius = 0;
  sensors.requestTemperatures();
  celsius = sensors.getTempCByIndex(0);
  sensors.requestTemperatures();
  celsius = sensors.getTempCByIndex(0);

  // Acquisition 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 == ArrayLength) pHArrayIndex = 0;
    voltage = avergearray(pHArray, ArrayLength) * 5.0 / 1024;
    pHValue = 3.5 * voltage + Offset;
    samplingTime = millis();
  }

  // Affichage série
  Serial.println("===========================================");
  Serial.println("Envoi de ces données JSON :");
  Serial.println("data: { ");
  Serial.print("ph: "); Serial.print(pHValue);
  Serial.print(" , temp: "); Serial.print(celsius);
  Serial.println("} ");

  // Envoi vers ARTIK Cloud
  String contentType = "application/json";
  String AuthorizationData = "Bearer " + deviceToken;
  int len = loadBuffer(celsius, pHValue);
  Serial.println("Envoi temp: " + String(celsius) + " et ph: " + String(pHValue));
  Serial.println("Envoi POST vers 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);

  // Réponse
  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);
}

void startWifi() {
  Serial.println("Connexion MKR1000 au réseau...");
  while (status != WL_CONNECTED) {
    Serial.print("Tentative de connexion au SSID WPA: ");
    Serial.println(WIFI_AP);
    WiFi.begin(WIFI_AP, WIFI_PWD);
    delay(10000);
    status = WiFi.status();
  }
}

double avergearray(int* arr, int number) {
  int i, max, min;
  double avg;
  long amount = 0;
  if (number <= 0) {
    Serial.println("Erreur nombre pour moyennage !");
    return 0;
  }
  if (number < 5) {
    for (i = 0; i < number; i++) amount += arr[i];
    avg = amount / number;
    return avg;
  } else {
    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];
    }
    avg = (double)amount / (number - 2);
  }
  return avg;
}

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();
}

Schémas

Connexion sur plaque d'essai du MKR1000 et des capteurs.

Processus de fabrication

  1. Naviguer dans le SaaS et le cloud : pourquoi une gestion méticuleuse des données est cruciale
  2. Élargir les horizons cloud : nouvelles zones, conteneurs, et stratégies multicloud
  3. Maîtriser la surveillance des applications cloud : insights pour les dirigeants IT
  4. Pourquoi Cloud Linux Boost la Sécurité, Stabilité et Performance en Hébergement Partagé
  5. Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
  6. Centre Énergie Domestique : Surveillance panneaux solaires PV, thermiques et températures pièces avec Raspberry Pi et Moteino
  7. Contrôle de température brassage maison DIY : Surveiller et réguler avec Arduino
  8. Surveillance météo à distance avec Raspberry Pi 3 et PubNub
  9. Comment les solutions de surveillance de gaz améliorent la sécurité dans les environnements industriels et automobiles