Pomiar wysokości wody za pomocą fotonu cząstek, czujnika parkowania i IFTTT.com: 4 kroki (ze zdjęciami)

Pomiar wysokości wody za pomocą fotonu cząstek, czujnika parkowania i IFTTT.com: 4 kroki (ze zdjęciami)

Spisu treści:

Anonim

Jest to instruktażowe wykonanie czujnika, który jest przymocowany do określonej wysokości i może mierzyć wysokość wody poniżej siebie. Początkowo planowano ją jako łódź pływającą na szczycie wody, która może mierzyć głębokość wody, stąd jej kształt.

Na dnie łodzi znajduje się czujnik parkowania, który może mierzyć odległość do najbliższego obiektu. Początkowo sądziliśmy, że częstotliwość jest wystarczająco wysoka, aby przeniknąć wodę i zmierzyć rzeczywiste dno rzeki / jeziora, ale niestety tak nie jest, ponieważ sygnał odbija się na wodzie.

Dane są przesyłane do konsoli Particle (console.particle.io) i sprawdzane przez wyzwalacz IFTTT.com, aby sprawdzić, czy osiągnięto określoną wysokość wody (mniej niż 30 cm między czujnikiem a wysokością wody). Gdy tak się stanie, zapali się czerwona dioda LED, zostanie odtworzona funkcja Mario i właściciel urządzenia zostanie ostrzeżony o wysokim poziomie wody za pomocą wiadomości e-mail.

Kieszonkowe dzieci:

Krok 1: Wymagania

Do tego projektu potrzebne są następujące materiały: (* = opcjonalnie)

  • 1x Tablica fotonów cząstek
  • 1x Deska do krojenia chleba
  • 1x Powerbank
  • 1x Buzzer *
  • 1x czerwona dioda LED *
  • 1x żółta dioda LED *
  • 1x zielona dioda LED *
  • 1x wodoodporny czujnik ultradźwiękowy JSN-SR04T (działa również HC-SR04)
  • 13x przewody

Potrzebne także:

  • Konto Particle.io
  • Konto IFTTT.com *

Należy pamiętać, że diody LED, brzęczyk i konto IFTTT.com są opcjonalne. Nie są one wymagane do pomiaru poziomu wody i zostały dodane tylko dla „lulz”. Jeśli zdecydujesz się zamontować te diody LED i brzęczyk, zlokalizuj je poza pudełkiem, aby uzyskać optymalne odległości oglądania i dźwięku.

Zaleca się zamontowanie płyty i materiałów w wodoodpornym pudełku, aby zapobiec uszkodzeniu elektroniki przez deszcz / wodę. Czujnik ultradźwiękowy powinien być skierowany w dół pod kątem 90 stopni (prosto w dół), aby dokładnie obliczyć odległość między czujnikiem a poziomem powierzchni wody.

Krok 2: Schemat okablowania

Najpierw zaczynamy od okablowania diod LED, brzęczyka i czujnika parkowania. Należy zauważyć, że w tym przykładzie czujnik parkowania jest wyświetlany jako HC-5RD4, ponieważ jest to zasadniczo ten sam czujnik.

Okablowanie strony + ZIELONEJ diody LED do D0, ŻÓŁTA LED do D1, CZERWONA dioda do D2. Wszystkie strony powinny przejść do GND. Podłącz brzęczyk do A4. Podłącz stronę + czujnika do VIN (5V), ponieważ 3,3V nie wystarczy. GND do GND. Wyzwalacz powinien być podłączony do D6. Echo podłączony do D5.

Wykorzystaliśmy także powerbank do zasilania Photona, który można również umieścić w skrzynce.

Po podłączeniu możemy przejść do następnego kroku: Kodowanie fotonu.

Krok 3: Kod

int echopin = D5;

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

const int speakerPin = A4;

const int songLength = 18;

int tempo = 400;

void setup () {Serial.begin (9600); pinMode (echopin, INPUT); pinMode (trigpin, OUTPUT); pinMode (groen, OUTPUT); pinMode (geel, OUTPUT); pinMode (rood, OUTPUT); Particle.function („analogread”, PublishValue); pinMode (speakerPin, OUTPUT);

}

void loop () {

int czas trwania, odległość; digitalWrite (trigpin, LOW); delayMicroseconds (2); digitalWrite (trigpin, HIGH); delayMicroseconds (10); digitalWrite (trigpin, LOW); czas trwania = pulseIn (echopin, HIGH); odległość = (czas trwania / 2) / 29,1; Serial.println (odległość);

opóźnienie (1000); Spark.function („Publish”, PublishValue);

Cząsteczka.publish („Odległość”, (String) odległość);

if (distance <30) {digitalWrite (rood, HIGH); digitalWrite (geel, LOW); digitalWrite (groen, LOW);

float 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; ton (speakerPin, 660,100); delay (delay2); tone (speakerPin, 660,100); delay (delay3); tone (speakerPin, 660,100); delay (delay3); tone (speakerPin, 510,100); delay (delay1); tone (speakerPin, 660,100); delay (delay3); tone (speakerPin, 770,100); delay (delay7); tone (speakerPin, 380,100); opóźnienie (opóźnienie13); ton (speakerPin, 510,100); delay (delay12); tone (speakerPin, 380,100); delay (delay14); tone (speakerPin, 320,100); delay (delay11); tone (speakerPin, 440,100); delay (delay3); tone (speakerPin, 480,80); delay (delay9); tone (speakerPin, 450,100); delay (delay2); tone (speakerPin, 430,100); delay (delay3); tone (speakerPin, 380,100); opóźnienie (opóźnienie10); ton (speakerPin, 660,80); delay (delay10); tone (speakerPin, 760,50); delay (delay2); tone (speakerPin, 860,100); delay (delay3); tone (speakerPin, 700,80); delay (delay2); tone (speakerPin, 760,50); delay (delay4); tone (speakerPin, 660,80); delay (delay3); tone (speakerPin, 520,80); delay (delay2); tone (speakerPin, 580,80); delay (delay2); tone (speakerPin, 480,80); delay (delay4); tone (speakerPin, 510,100); delay (delay7); tone (speakerPin, 380,100); delay (delay14); tone (speakerPin, 320,100); delay (delay11); tone (speakerPin, 440,100); delay (delay3); tone (speakerPin, 480,80); delay (delay9); tone (speakerPin, 450,100); delay (delay2); tone (speakerPin, 430,100); delay (delay3); tone (speakerPin, 380,100); opóźnienie (opóźnienie10); ton (speakerPin, 660,80); delay (delay10); tone (speakerPin, 760,50); delay (delay2); tone (speakerPin, 860,100); delay (delay3); tone (speakerPin, 700,80); delay (delay2); tone (speakerPin, 760,50); delay (delay4); tone (speakerPin, 660,80); delay (delay3); tone (speakerPin, 520,80); delay (delay2); tone (speakerPin, 580,80); delay (delay2); tone (speakerPin, 480,80); delay (delay11); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 760,100); delay (delay1); tone (speakerPin, 720,100); delay (delay2); tone (speakerPin, 680,100); delay (delay2); tone (speakerPin, 620,150); delay (delay3); tone (speakerPin, 650,150); delay (delay3); tone (speakerPin, 380,100); delay (delay2); tone (speakerPin, 430,100); delay (delay2); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 430,100); delay (delay2); tone (speakerPin, 500, 100); delay (delay1); tone (speakerPin, 570,100); delay (delay8); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 760,100); delay (delay1); tone (speakerPin, 720,100); delay (delay2); tone (speakerPin, 680,100); delay (delay2); tone (speakerPin, 620,150); delay (delay3); tone (speakerPin, 650,200); delay (delay3); tone (speakerPin, 1020,80); delay (delay3); tone (speakerPin, 1020,80); delay (delay2); tone (speakerPin, 1020,80); delay (delay3); tone (speakerPin, 380,100); delay (delay3); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 760,100); delay (delay1); tone (speakerPin, 720,100); delay (delay2); tone (speakerPin, 680,100); delay (delay2); tone (speakerPin, 620,150); delay (delay3); tone (speakerPin, 650,150); delay (delay3); tone (speakerPin, 380,100); delay (delay2); tone (speakerPin, 430,100); delay (delay2); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 430,100); delay (delay2); tone (speakerPin, 500, 100); delay (delay1); tone (speakerPin, 570,100); delay (delay8); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 760,100); delay (delay1); tone (speakerPin, 720,100); delay (delay2); tone (speakerPin, 680,100); delay (delay2); tone (speakerPin, 620,150); delay (delay3); tone (speakerPin, 650,200); delay (delay3); tone (speakerPin, 1020,80); delay (delay3); tone (speakerPin, 1020,80); delay (delay2); tone (speakerPin, 1020,80); delay (delay3); tone (speakerPin, 380,100); delay (delay3); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 760,100); delay (delay1); tone (speakerPin, 720,100); delay (delay2); tone (speakerPin, 680,100); delay (delay2); tone (speakerPin, 620,150); delay (delay3); tone (speakerPin, 650,150); delay (delay3); tone (speakerPin, 380,100); delay (delay2); tone (speakerPin, 430,100); delay (delay2); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 430,100); delay (delay2); tone (speakerPin, 500, 100); delay (delay1); tone (speakerPin, 570,100); delay (delay6); tone (speakerPin, 585,100); delay (delay7); tone (speakerPin, 550,100); delay (delay6); tone (speakerPin, 500, 100); delay (delay5); tone (speakerPin, 380,100); delay (delay3); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 500, 100); delay (delay2); tone (speakerPin, 500, 100); delay (delay3); tone (speakerPin, 500,60); delay (delay2); tone (speakerPin, 500,80); delay (delay3); tone (speakerPin, 500,60); delay (delay4); tone (speakerPin, 500,80); delay (delay2); tone (speakerPin, 580,80);delay (delay4); tone (speakerPin, 660,80); delay (delay2); tone (speakerPin, 500,80); delay (delay3); tone (speakerPin, 430,80); delay (delay2); tone (speakerPin, 380,80); delay (delay15); tone (speakerPin, 500,60); delay (delay2); tone (speakerPin, 500,80); delay (delay3); tone (speakerPin, 500,60); delay (delay4); tone (speakerPin, 500,80); delay (delay2); tone (speakerPin, 580,80); delay (delay2); tone (speakerPin, 660,80); delay (delay12); tone (speakerPin, 870,80); delay (delay16); tone (speakerPin, 760,80); delay (delay15); tone (speakerPin, 500,60); delay (delay2); tone (speakerPin, 500,80); delay (delay3); tone (speakerPin, 500,60); delay (delay4); tone (speakerPin, 500,80); delay (delay2); tone (speakerPin, 580,80); delay (delay4); tone (speakerPin, 660,80); delay (delay2); tone (speakerPin, 500,80); delay (delay3); tone (speakerPin, 430,80); delay (delay2); tone (speakerPin, 380,80); delay (delay15); tone (speakerPin, 660,100); delay (delay2); tone (speakerPin, 660,100); delay (delay3); tone (speakerPin, 660,100); delay (delay3); tone (speakerPin, 510,100); delay (delay1); tone (speakerPin, 660,100); delay (delay3); tone (speakerPin, 770,100); delay (delay12); tone (speakerPin, 380,100); } if (odległość> = 30 i odległość <50) {digitalWrite (rood, LOW); digitalWrite (geel, HIGH); digitalWrite (groen, LOW); analogWrite (speakerPin, 0); } if (distance> = 50) {digitalWrite (rood, LOW); digitalWrite (geel, LOW); digitalWrite (groen, HIGH); analogWrite (speakerPin, 0); }

}

int PublishValue (String pin) {int duration, afstand; digitalWrite (trigpin, LOW); delayMicroseconds (2); digitalWrite (trigpin, HIGH); delayMicroseconds (10); digitalWrite (trigpin, LOW); czas trwania = pulseIn (echopin, HIGH); afstand = (czas trwania / 2) / 29,1;

powrócić na stojąco; }

Krok 4: Prace

Czujnik należy teraz zamontować nad poziomem wody na ustalonej wysokości. Ponieważ czujnik parkowania ma pewien zakres, w którym działa, musi być zamontowany co najmniej 30 centymetrów powyżej najwyższego poziomu wody, ponieważ działa tylko między ~ 30 - ~ 250 cm. Czujnik HC-SR04 działa w zakresie od ~ 2 do ~ 100 centymetrów, dzięki czemu może być zamontowany niżej niż czujnik parkowania. Po przesłaniu kodu do Photona i Photona, diody LED i czujniki są podłączone, jesteś dobry i możesz zacząć mierzyć.

Czujnik ma 4 piny, 5 V, wyzwalacz, echo i GND. 5V należy podłączyć do pinów „VIN”, rysując 5V z fotonu. GND powinien przejść do uziemienia na fotonie. Wyzwalacz jest używany, aby „powiedzieć” czujnikowi, kiedy ma rozpocząć pomiar, wysyłając mu impuls, aby wiedział, że może rozpocząć wysyłanie samego impulsu. Pin echa następnie razy, ile czasu zajęło impulsowi odbijanie się z powrotem do samego czujnika. Odległość można następnie obliczyć, dzieląc ten czas przez 2, ponieważ poszedł w tę iz powrotem, a następnie dzieli go przez ilość (mikro) sekund potrzebnych, aby dźwięk przemieścił się 1 mw powietrzu, co wynosi 1/343 = 0,029 sek.

Jak widać w kodzie, gdy wysokość wody jest nadal wyższa niż 60 cm poniżej urządzenia, zielona dioda LED będzie się świecić, a żółta i czerwona dioda LED pozostaną włączone.

Gdy wysokość wody osiągnie poniżej 60 cm, ale nadal będzie wyższa niż 30 cm, zapali się żółta dioda LED, a dwie pozostałe zgasną.

Wreszcie, gdy poziom wody osiągnie wysokość mniejszą niż 30 cm poniżej czujnika, czerwona dioda LED zacznie się palić, wskazując, że poziom wody osiągnął krytyczną wysokość. Dzieje się tak również wtedy, gdy odtwarzany jest dźwięk, w tym przypadku po Mario. Wyzwolony zostanie także wyzwalacz IFTTT (IFTTT.com) i wysłany zostanie e-mail na adres e-mail w wyzwalaczu, na przykład kierownik odcinka rzeki, śluzy lub kanału.