Måling af vandhøjde ved hjælp af en partikelfoton, en parkeringssensor og IFTTT.com: 4 trin (med billeder)

Måling af vandhøjde ved hjælp af en partikelfoton, en parkeringssensor og IFTTT.com: 4 trin (med billeder)

Indholdsfortegnelse:

Anonim

Dette er en instruktion til at lave en sensor, der er fastgjort til en bestemt højde og kan måle vandhøjden under sig selv. Det var oprindeligt planlagt som en båd, der flyder oven på vandet, som kan måle vanddybden, derfor er den form.

Der er en parkeringssensor i bunden af ​​båden, som kan måle afstanden til nærmeste objekt. Først troede vi, at frekvensen var høj nok til at trænge ind i vand og måle den faktiske bund af floden / søen, men det er desværre ikke tilfældet, da signalet springer ud på vandet.

Dataene uploades til både partikelkonsollen (console.particle.io) og kontrolleres af en IFTTT.com-trigger for at se, om der opnås en vis vandhøjde (Mindre end 30 cm mellem sensor og vandhøjde). Når dette er tilfældet, vil den røde LED blive tændt, Mario-temasongen spilles, og enheden af ​​enheden advares om højvandstanden via en email.

forsyninger:

Trin 1: Krav

For dette projekt vil du have brug for følgende materialer: (* = valgfrit)

  • 1x partikelfotonbræt
  • 1x brødbræt
  • 1x Powerbank
  • 1x Buzzer *
  • 1x rød LED *
  • 1x gul LED *
  • 1x grøn LED *
  • 1x JSN-SR04T vandtæt ultralydssensor (en HC-SR04 fungerer også)
  • 13x ledninger

Også nødvendigt:

  • Particle.io konto
  • IFTTT.com-konto *

Bemærk venligst, at LED'erne, summeren og en IFTTT.com-konto er valgfri. Disse er ikke nødvendige for at måle vandstanden og blev kun tilføjet til 'lulz'en. Hvis du vælger at montere disse LED'er og summer, skal du lokalisere dem uden for boksen for at få optimale visnings- og lydafstande.

Det anbefales at montere bord og materialer inde i en vandtæt boks for at forhindre regn / vand at beskadige elektronikken. Ultralydssensoren skal pege ned i 90 grader vinkel (lige ned) for nøjagtigt at beregne afstanden mellem sensoren og vandoverfladen.

Trin 2: Kabelføring

Først begynder vi ved at forbinde LED'erne, summeren og parkeringssensoren. Bemærk, at parkeringssensoren i dette eksempel vises som en HC-5RD4, da dette i det væsentlige er den samme sensor.

Ledning op + siden af ​​den grønne LED til D0, GUL LED til D1, RED LED til D2. Alle sider skal gå til en GND. Træk summeren op til A4. Wire + siden af ​​sensoren til VIN (5V), da 3.3V ikke er tilstrækkelig. GND til GND. Trigger skal forbindes til D6. Echo tilsluttet til D5.

Vi brugte også en powerbank til at tænde Photon, som også kan placeres inde i boksen.

Efter ledningsføring kan vi gå videre til næste trin: Kodning af Photonen.

Trin 3: Kode

int echopin = D5;

int trigpin = D6; int groen = D0; int geel = D1; int rood = D2;

const int speakerPin = A4;

const int sanglængde = 18;

int tempo = 400;

void setup () {Serial.begin (9600); pinMode (echopin, INPUT); pinMode (trigpin, OUTPUT); pinMode (grøn, OUTPUT); pinMode (geel, OUTPUT); pinMode (rød, OUTPUT); Particle.function ("analogread", PublishValue); pinMode (speakerPin, OUTPUT);

}

void loop () {

int varighed, afstand digitalWrite (trigpin, LOW); delayMicroseconds (2); digitalWrite (trigpin, HIGH); delayMicroseconds (10); digitalWrite (trigpin, LOW); Varighed = PulseIn (echopin, HIGH); afstand = (varighed / 2) / 29,1; Serial.println (afstand);

forsinkelse (1000); Spark.function ("Publish", PublishValue);

Particle.publish ("Distance", (String) afstand);

hvis (distance <30) {digitalWrite (rød, HIGH); digitalWrite (Geel, LOW); digitalWrite (Groen, LOW);

flyde v = 1,8; int delay1 = 50 * v; int delay2 = 75 * v; int delay10 = 100 * v; int delay8 = 110 * v; int delay3 = 150 * v; int delay9 = 165 * v; int delay4 = 175 * v; int delay5 = 180 * v; int delay14 = 200 * v; int delay6 = 210 * v; int delay12 = 225 * v; int delay11 = 250 * v; int delay7 = 275 * v; int delay13 = 287 * v; int delay15 = 300 * v; int delay16 = 162 * v; tone (speakerPin, 660.100); forsinkelse (forsinkelse2) tone (speakerPin, 660.100); forsinkelse (delay3) tone (speakerPin, 660.100); forsinkelse (delay3) tone (speakerPin, 510.100); forsinkelse (Delay1) tone (speakerPin, 660.100); forsinkelse (delay3) tone (speakerPin, 770.100); forsinkelse (delay7) tone (speakerPin, 380.100); forsinkelse (delay13) tone (speakerPin, 510.100); forsinkelse (delay12) tone (speakerPin, 380.100); forsinkelse (delay14) tone (speakerPin, 320.100); forsinkelse (delay11) tone (speakerPin, 440.100); forsinkelse (delay3) tone (speakerPin, 480,80); forsinkelse (delay9) tone (speakerPin, 450.100); forsinkelse (forsinkelse2) tone (speakerPin, 430.100); forsinkelse (delay3) tone (speakerPin, 380.100); forsinkelse (delay10) tone (speakerPin, 660,80); forsinkelse (delay10) tone (speakerPin, 760,50); forsinkelse (forsinkelse2) tone (speakerPin, 860.100); forsinkelse (delay3) tone (speakerPin, 700,80); forsinkelse (forsinkelse2) tone (speakerPin, 760,50); forsinkelse (delay4) tone (speakerPin, 660,80); forsinkelse (delay3) tone (speakerPin, 520,80); forsinkelse (forsinkelse2) tone (speakerPin, 580,80); forsinkelse (forsinkelse2) tone (speakerPin, 480,80); forsinkelse (delay4) tone (speakerPin, 510.100); forsinkelse (delay7) tone (speakerPin, 380.100); forsinkelse (delay14) tone (speakerPin, 320.100); forsinkelse (delay11) tone (speakerPin, 440.100); forsinkelse (delay3) tone (speakerPin, 480,80); forsinkelse (delay9) tone (speakerPin, 450.100); forsinkelse (forsinkelse2) tone (speakerPin, 430.100); forsinkelse (delay3) tone (speakerPin, 380.100); forsinkelse (delay10) tone (speakerPin, 660,80); forsinkelse (delay10) tone (speakerPin, 760,50); forsinkelse (forsinkelse2) tone (speakerPin, 860.100); forsinkelse (delay3) tone (speakerPin, 700,80); forsinkelse (forsinkelse2) tone (speakerPin, 760,50); forsinkelse (delay4) tone (speakerPin, 660,80); forsinkelse (delay3) tone (speakerPin, 520,80); forsinkelse (forsinkelse2) tone (speakerPin, 580,80); forsinkelse (forsinkelse2) tone (speakerPin, 480,80); forsinkelse (delay11) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 760.100); forsinkelse (Delay1) tone (speakerPin, 720.100); forsinkelse (forsinkelse2) tone (speakerPin, 680.100); forsinkelse (forsinkelse2) tone (speakerPin, 620.150); forsinkelse (delay3) tone (speakerPin, 650.150); forsinkelse (delay3) tone (speakerPin, 380.100); forsinkelse (forsinkelse2) tone (speakerPin, 430.100); forsinkelse (forsinkelse2) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 430.100); forsinkelse (forsinkelse2) tone (speakerPin, 500.100); forsinkelse (Delay1) tone (speakerPin, 570.100); forsinkelse (delay8) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 760.100); forsinkelse (Delay1) tone (speakerPin, 720.100); forsinkelse (forsinkelse2) tone (speakerPin, 680.100); forsinkelse (forsinkelse2) tone (speakerPin, 620.150); forsinkelse (delay3) tone (speakerPin, 650.200); forsinkelse (delay3) tone (speakerPin, 1020,80); forsinkelse (delay3) tone (speakerPin, 1020,80); forsinkelse (forsinkelse2) tone (speakerPin, 1020,80); forsinkelse (delay3) tone (speakerPin, 380.100); forsinkelse (delay3) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 760.100); forsinkelse (Delay1) tone (speakerPin, 720.100); forsinkelse (forsinkelse2) tone (speakerPin, 680.100); forsinkelse (forsinkelse2) tone (speakerPin, 620.150); forsinkelse (delay3) tone (speakerPin, 650.150); forsinkelse (delay3) tone (speakerPin, 380.100); forsinkelse (forsinkelse2) tone (speakerPin, 430.100); forsinkelse (forsinkelse2) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 430.100); forsinkelse (forsinkelse2) tone (speakerPin, 500.100); forsinkelse (Delay1) tone (speakerPin, 570.100); forsinkelse (delay8) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 760.100); forsinkelse (Delay1) tone (speakerPin, 720.100); forsinkelse (forsinkelse2) tone (speakerPin, 680.100); forsinkelse (forsinkelse2) tone (speakerPin, 620.150); forsinkelse (delay3) tone (speakerPin, 650.200); forsinkelse (delay3) tone (speakerPin, 1020,80); forsinkelse (delay3) tone (speakerPin, 1020,80); forsinkelse (forsinkelse2) tone (speakerPin, 1020,80); forsinkelse (delay3) tone (speakerPin, 380.100); forsinkelse (delay3) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 760.100); forsinkelse (Delay1) tone (speakerPin, 720.100); forsinkelse (forsinkelse2) tone (speakerPin, 680.100); forsinkelse (forsinkelse2) tone (speakerPin, 620.150); forsinkelse (delay3) tone (speakerPin, 650.150); forsinkelse (delay3) tone (speakerPin, 380.100); forsinkelse (forsinkelse2) tone (speakerPin, 430.100); forsinkelse (forsinkelse2) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 430.100); forsinkelse (forsinkelse2) tone (speakerPin, 500.100); forsinkelse (Delay1) tone (speakerPin, 570.100); forsinkelse (delay6) tone (speakerPin, 585.100); forsinkelse (delay7) tone (speakerPin, 550.100); forsinkelse (delay6) tone (speakerPin, 500.100); forsinkelse (delay5) tone (speakerPin, 380.100); forsinkelse (delay3) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 500.100); forsinkelse (forsinkelse2) tone (speakerPin, 500.100); forsinkelse (delay3) tone (speakerPin, 500,60); forsinkelse (forsinkelse2) tone (speakerPin, 500,80); forsinkelse (delay3) tone (speakerPin, 500,60); forsinkelse (delay4) tone (speakerPin, 500,80); forsinkelse (forsinkelse2) tone (speakerPin, 580,80);forsinkelse (delay4) tone (speakerPin, 660,80); forsinkelse (forsinkelse2) tone (speakerPin, 500,80); forsinkelse (delay3) tone (speakerPin, 430,80); forsinkelse (forsinkelse2) tone (speakerPin, 380,80); forsinkelse (delay15) tone (speakerPin, 500,60); forsinkelse (forsinkelse2) tone (speakerPin, 500,80); forsinkelse (delay3) tone (speakerPin, 500,60); forsinkelse (delay4) tone (speakerPin, 500,80); forsinkelse (forsinkelse2) tone (speakerPin, 580,80); forsinkelse (forsinkelse2) tone (speakerPin, 660,80); forsinkelse (delay12) tone (speakerPin, 870,80); forsinkelse (delay16) tone (speakerPin, 760,80); forsinkelse (delay15) tone (speakerPin, 500,60); forsinkelse (forsinkelse2) tone (speakerPin, 500,80); forsinkelse (delay3) tone (speakerPin, 500,60); forsinkelse (delay4) tone (speakerPin, 500,80); forsinkelse (forsinkelse2) tone (speakerPin, 580,80); forsinkelse (delay4) tone (speakerPin, 660,80); forsinkelse (forsinkelse2) tone (speakerPin, 500,80); forsinkelse (delay3) tone (speakerPin, 430,80); forsinkelse (forsinkelse2) tone (speakerPin, 380,80); forsinkelse (delay15) tone (speakerPin, 660.100); forsinkelse (forsinkelse2) tone (speakerPin, 660.100); forsinkelse (delay3) tone (speakerPin, 660.100); forsinkelse (delay3) tone (speakerPin, 510.100); forsinkelse (Delay1) tone (speakerPin, 660.100); forsinkelse (delay3) tone (speakerPin, 770.100); forsinkelse (delay12) tone (speakerPin, 380.100); } hvis (distance> = 30 og distance <50) {digitalWrite (rød, LOW); digitalWrite (Geel, HIGH); digitalWrite (Groen, LOW); analogWrite (speakerPin, 0); } hvis (distance> = 50) {digitalWrite (rød, LOW); digitalWrite (Geel, LOW); digitalWrite (grøn, HIGH); analogWrite (speakerPin, 0); }

}

int PublishValue (String pin) {int varighed, afstand; digitalWrite (trigpin, LOW); delayMicroseconds (2); digitalWrite (trigpin, HIGH); delayMicroseconds (10); digitalWrite (trigpin, LOW); Varighed = PulseIn (echopin, HIGH); afstand = (varighed / 2) / 29,1;

returafstand; }

Trin 4: Arbejder

Sensoren skal nu monteres over vandstanden i en fast højde. Fordi parkeringssensoren har et vist område, hvor der arbejdes, skal den monteres mindst 30 centimeter over det højeste vandniveau, da det kun virker mellem ~ 30 - 250 cm. HC-SR04-sensoren arbejder mellem ~ 2 og ~ 100 centimeter og kan således monteres lavere end parkeringssensoren. Når koden er blevet blinket til Photon og Photon, er LED'erne og sensorerne alle tilsluttet, du er god til at gå og kan begynde at måle.

Sensoren har 4 ben, 5V, trigger, ekko og GND. 5V'en skal tilsluttes til 'VIN'-stiften og tegne 5V fra Photon. GND skal gå til jorden på Photon. Trækpinden bruges til at 'fortælle' sensoren, når den skal begynde at måle, ved at sende den en puls, så den ved, at den kan begynde at sende en puls selv. Ekko-pin så gange hvor lang tid det tog for pulsen at reflektere tilbage i selve sensoren. Afstanden kan derefter beregnes ved at dividere denne gang med 2, siden den gik frem og tilbage og derefter dividere den med mængden af ​​(mikro) sekunder, der kræves for lyd at rejse 1m i luft, hvilket er 1/343 = 0,029 sek.

Som det ses i koden, når vandhøjden stadig er højere end 60 cm under enheden, lyser den grønne LED, og ​​den gule og røde LED lyser.

Når vandhøjden når under 60 cm, men stadig højere end 30 cm, lyser den gule LED, og ​​de to andre slukker.

Endelig, når vandladen når en højde på mindre end 30 cm under sensoren, begynder den røde LED at brænde, hvilket indikerer at vandladen har nået en kritisk højde. Dette er også når der spilles en lyd, i dette tilfælde temasong Mario. Også en IFTTT-trigger (IFTTT.com) udløses, og en email vil blive sendt til e-mail opsætningen i udløseren, for eksempel tilsyneladende for en flodstrækning, en slus eller kanal.