Bewaking van de waterkwaliteit met MKR1000 en ARTIK Cloud
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Apps en online services
| ||||
|
Over dit project
I. Doelstelling
Het primaire doel van dit project is om Samsung ARTIK Cloud te gebruiken om de pH- en temperatuurniveaus van zwembaden te bewaken.
II. ARTIK Cloud-configuratie
Stap 1. Uw nieuwe apparaat maken
Meld u aan bij ARTIK Cloud. Ga naar de ontwikkelaarssite en maak een nieuw "apparaattype".
Voer uw gewenste weergave en unieke naam in.
Nieuw manifest maken
Voer veldnaam en andere beschrijving in
Klik op Opslaan en ga vervolgens naar het tabblad Manifest activeren
Klik op de knop ACTIEF MANIFEST om te voltooien en u wordt hier doorgestuurd
Klaar met het maken van het apparaattype!
Laten we nu uw applicatie maken die dat apparaat zal gebruiken.
Stap 2. Uw aanvraag maken
Navigeer naar ARTIK Cloud-applicaties.
Klik op nieuwe applicatie
Voer de gewenste applicatienaam en authenticatie-omleidings-URL in.
Houd er rekening mee dat de omleidings-URL voor authenticatie vereist is. Het wordt gebruikt om de gebruikers van deze applicatie te authenticeren en zal daarom doorverwijzen naar deze url als ze moeten inloggen.
We gebruikten http://localhost/index/ als voorbeeld.
Stel nu uw applicatietoestemming in om te lezen en te schrijven, navigeer naar uw apparaat en sla op.
Gefeliciteerd, je hebt nu je sollicitatie!
Laten we nu die applicatie verbinden.
Stap 3. Verbind je apparaat
Navigeer naar mijn apparaten en klik op een ander apparaat aansluiten.
Klik op uw nieuwe apparaattype dat eerder is gemaakt en klik vervolgens op apparaat verbinden.
Klik op de instellingen van uw verbonden apparaat.
Noteer deze informatie, want je hebt ze nodig op het programma.
Navigeer nu naar uw verbonden apparaat
Klaar voor installatie van ARTIK Cloud. Zodra uw hardware klaar is, bevat de kaart gegevens.
III. Hardwaresensor instellen
Stap 1. Sluit de temperatuur- en pH-sensoren aan op de MKR1000.
Hier is het diagram:
- Temp GND naar MRK1000 GND
- Temp OUT naar MKR1000 digitale pin 1
- Temp VCC naar MKR1000 5V
- Sluit een weerstand van 4,7K aan op Temp VCC en Temp OUT
- pH GND naar MRK1000 GND
- pH OUT naar MKR1000 analoge pin 1
- pH VCC naar MKR1000 5V
Hier is mijn voorbeeldbedrading
Als het je is opgevallen, hebben we een audio-aansluiting toegevoegd voor het eenvoudig loskoppelen van de temperatuursensor. Maar dit is optioneel.
Hier is de aansluiting van de temperatuursensor op de jack.
Stap 2. Vereiste software instellen
Ga naar Arduino IDE en voeg het MKR1000-bord toe.
Zoek mkr1000 en klik op installeren
Voeg vereiste bibliotheek toe
Zoeken naar bibliotheken om te installeren:
- ArduinoJson - we gaan dit gebruiken om JSON-gegevens naar ARTIK Cloud te sturen
- ArduinoHttpClient - host voor verbinding met API
- OneWire - nodig om digitale invoer van temperatuursensor te lezen
- DallasTemperature - Dallas Temperatuursensor vereist bibliotheek
Voltooi het toevoegen van de vereiste software!
Stap 3. Upload het programma
Sluit nu de MKR1000 aan op uw pc/laptop.
Download de software hier op GitHub
Wijzig de volgende informatie:
Upload vervolgens de softwarecode naar MKR1000 en begin met monitoren.
Let op:je wifi moet een internetverbinding hebben.
IV. Veldtest
We hebben de hardwaresensor getest op privé-, openbaar en schoolzwembad. Door de gegevens uit de pool van deze respondenten te verzamelen, konden we de mogelijkheden van de hardware analyseren.
U kunt de MKR1000 en sensor op een doos plaatsen en op uw zwembad plaatsen, weg van waterverontreiniging. Door dit te doen, kunt u de kwaliteit van uw water bewaken en normaliseren door de gewenste chemicaliën te plaatsen.
Binnenkort zullen we de tutorial uploaden over hoe je alle circuits in deze doos kunt plaatsen en de daadwerkelijke beelden van het testen.
V. Resultaten
Ik hoop dat deze tutorial mensen helpt om hun eigen doe-het-zelf-apparaat voor het bewaken van de waterkwaliteit van het zwembad te bouwen. Moge er een groter bewustzijn zijn met betrekking tot de voortdurende verslechtering van de kwaliteit van het zwembadwater, aangezien mensen de neiging hebben om zich meer te concentreren op de voorzieningen die worden aangeboden in plaats van te controleren hoe veilig ze zijn. Ze zijn ook van plan een bijdrage te leveren aan de gemeenschap door een middel te bieden om het testen van de waterkwaliteit efficiënter en effectiever te maken zonder onnodige opoffering van middelen.
Gelukkig gebouw! :)
Code
- Arduino MKR1000-codes
Arduino MKR1000-codesC/C++
Upload deze codes naar je Arduino MKR1000Bezoek dit op GitHub> https://github.com/imjeffparedes/iot-water-quality-artik
/********************Hier is mijn code voor Monitoring van waterkwaliteitsapparatuur gepubliceerd in https://www.hackster.io/animo/water-quality-moniroting-840fea********************/#include#include #include #include #include #include #include /**Temperatuursensor Initialisatie**/#define ONE_WIRE_BUS 1 // Datadraad is aangesloten op digitale poort 1 van ArduinoOneWire oneWire (ONE_WIRE_BUS); // Stel een oneWire-instantie in om te communiceren met OneWire //-apparaten (niet alleen Maxim/Dallas-temperatuur-IC's)DallasTemperature-sensoren (&oneWire); // Geef onze oneWire-referentie naar Dallas Temperature door. /** ARTIK Cloud REST-initialisatie **/char server[] ="api.artik.cloud"; // Samsung ARTIK Cloud API Hostint-poort =443; // 443 voor HTTPS char buf [200]; // body-gegevens om de JSON op te slaan die naar de ARTIK-cloud moet worden verzonden. String deviceID ="artik cloud device id"; // plaats hier uw apparaat-ID gemaakt uit de tutorial String deviceToken ="artik cloud device token"; // plaats uw apparaattoken hier gemaakt van de tutorial/**pH-meterinitialisatie**/#define SensorPin A1 // pH-meter Analoge uitgang naar Arduino Analoge ingang 1#define Offset 0.00 // afwijking compenseren#define samplingInterval 20#define ArrayLenth 40 // tijden van collectieint pHArray [ArrayLenth]; // Bewaar de gemiddelde waarde van de sensor feedbackint pHArrayIndex=0; int status =-1;int millis_start;/**Wifi-instelling**/#define WIFI_AP "uw wifi ssid"#define WIFI_PWD "wifi-wachtwoord"WiFiSSSLClient wifi; HttpClient-client =HttpClient (wifi, server, poort); void setup (void) { millis_start =millis (); Serieel.begin(9600); startWifi(); // begin verbinding te maken met wifi} ongeldige lus (void) { /* Huidige temperatuur verkrijgen */ float celsius =0; sensoren.requestTemperatures(); // Stuur de opdracht om temperaturen celsius =sensors.getTempCByIndex (0) te krijgen; sensoren.requestTemperatures(); // Stuur de opdracht om temperaturen celsius =sensors.getTempCByIndex (0) te krijgen; /*Huidige pH-waarde verkrijgen*/ static unsigned long samplingTime =millis(); statische niet-ondertekende lange printTime =millis(); statische vlotter pHWaarde,spanning; if(millis()-samplingTime> samplingInterval) { pHArray[pHArrayIndex++]=analogRead(SensorPin); if(pHArrayIndex==ArrayLenth)pHArrayIndex=0; spanning =gemiddeldearray(pHArray, ArrayLenth)*5.0/1024; pH-waarde =3,5*spanning+offset; samplingTime=millis(); } Serial.println("===========================================" ); Serial.println("We sturen deze json-gegevens"); // print naar json-formaat Serial.println ("data:{ "); Serial.print("ph:"); Serial.print(pHValue); Serial.print(" , temp:"); Seriële.afdruk (celsius); Serieel.println("} "); Serieel.println(""); Serial.println("Begin met het verzenden van gegevens"); String contentType ="applicatie/json"; String AuthorizationData ="Bearer" + deviceToken; // Apparaattoken int len =loadBuffer (celsius, pHValue); Serial.println("Verzendtemp:"+String(celsius) +" en ph:"+String(pHValue) ); Serial.println("Stuur POST naar ARTIK Cloud API"); cliënt.beginRequest(); client.post("/v1.1/messages"); //, contentType, buf client.sendHeader ("Autorisatie", AutorisatieData); client.sendHeader ("Inhoudstype", "toepassing/json"); client.sendHeader ("Inhoudslengte", len); klant.endRequest(); cliënt.print(buf); // print reactie van api int statusCode =client.responseStatusCode(); String respons =client.responseBody(); Serieel.println(""); Serial.print("Statuscode:"); Serial.println(statusCode); Serial.print("Reactie:"); Serial.println(antwoord); vertraging (1000); // vertraging van update }/*Init Connection to Wifi*/void startWifi(){ Serial.println("MKR1000 verbinden met netwerk..."); // WiFi.begin(); // poging om verbinding te maken met wifi-netwerk:while (status!=WL_CONNECTED) { Serial.print("Poging om verbinding te maken met WPA SSID:"); Seriële.println(WIFI_AP); WiFi.begin(WIFI_AP, WIFI_PWD); // wacht 10 seconden op verbinding:vertraging (10000); status =WiFi.status(); }}/*DfRobot pH-meter Bron*/double avergearray(int* arr, int number){ int i; int max, min; dubbel gemiddeld; lang bedrag=0; if(number<=0){ Serial.println("Foutnummer voor de array om te middelen!/n"); retourneer 0; } if(getal<5){ //minder dan 5, direct berekende statistieken voor(i=0;i max){ hoeveelheid+=max; //arr>max max=arr[i]; }anders{ bedrag+=arr[i]; //min<=arr<=max } }//if }//for avg =(double)amount/(number-2); }//if return avg;}/*Buffer om te verzenden op REST*/int loadBuffer (float temp, float ph) { StaticJsonBuffer<200> jsonBuffer; // reserveer plek in geheugen JsonObject&root =jsonBuffer.createObject(); // maak root-objecten root ["sdid"] =apparaat-ID; root["type"] ="bericht"; JsonObject&dataPair =root.createNestedObject("data"); // maak geneste objecten dataPair ["temp"] =temp; dataPair["ph"] =ph; root.printTo(buf, sizeof(buf)); // JSON-print om retour te bufferen (root.measureLength()); // retourneer ook lengte }
Schema's
Breadboard-aansluiting van MKR1000 en sensorenProductieproces
- Het gebruik van SaaS en de cloud vereist zorgvuldige gegevensverwarring
- Naar Cloud Infinity en verder
- Cloud Application Monitoring en u
- Beveiliging en belangrijke voordelen van het gebruik van Cloud Linux
- Python- en Raspberry Pi-temperatuursensor
- Kamertemperaturen bewaken met Moteino's en Raspberry Pi
- DIY:temperatuurbewaking en -regeling voor HomeBrew
- Bewaking op afstand van het weer met Raspberry Pi
- Binnenluchtkwaliteit en afvalbewakingssysteem
- DIY voltmeter met Arduino en smartphone
- Toepassingen en voordelen van het gebruik van een gasbewakingsoplossing