Mesure de la hauteur d'eau à l'aide d'un photon à particules, d'un capteur de stationnement et d'IFTTT.com: 4 étapes

Mesure de la hauteur d'eau à l'aide d'un photon à particules, d'un capteur de stationnement et d'IFTTT.com: 4 étapes

Table des matières:

Anonim

Ceci est un Instructable pour faire un capteur qui est fixé à une certaine hauteur et peut mesurer la hauteur de l'eau en dessous de lui-même. Il a été initialement conçu comme un bateau flottant au-dessus de l’eau, capable de mesurer la profondeur de l’eau, d’où sa forme.

Un capteur de stationnement situé au bas du bateau permet de mesurer la distance qui le sépare de l’objet le plus proche. Au début, nous pensions que la fréquence était suffisamment élevée pour pénétrer dans l'eau et mesurer le fond réel de la rivière / du lac, mais malheureusement, ce n'est pas le cas, car le signal rebondit sur l'eau.

Les données sont téléchargées à la fois sur la console de Particle (console.particle.io) et vérifiées par un déclencheur IFTTT.com, pour voir si une certaine hauteur d’eau est atteinte (moins de 30 cm entre le capteur et la hauteur d’eau). Lorsque cela se produit, le voyant rouge s'allume, le thème de Mario est joué et le propriétaire de l'appareil est averti du niveau de l'eau élevé par un courrier électronique.

Provisions:

Étape 1: Exigences

Pour ce projet, vous aurez besoin des matériaux suivants: (* = facultatif)

  • 1x panneau de particules de photons
  • 1x planche à pain
  • 1x Powerbank
  • 1x sonnerie *
  • 1x LED rouge *
  • 1x LED jaune *
  • 1x LED verte *
  • 1x capteur à ultrasons étanche JSN-SR04T (un HC-SR04 fonctionne également)
  • 13 fils

Aussi nécessaire:

  • Compte Particle.io
  • Compte IFTTT.com *

Veuillez noter que les voyants, l'avertisseur sonore et un compte IFTTT.com sont facultatifs. Celles-ci ne sont pas nécessaires pour mesurer le niveau d'eau et n'ont été ajoutées que pour «le lulz». Si vous choisissez de monter ces voyants et cette sonnerie, placez-les en dehors de la boîte pour une visibilité optimale et des distances sonores optimales.

Il est conseillé de monter la carte et les matériaux à l’intérieur d’un boîtier étanche, afin d’éviter que la pluie et l’eau ne détériorent les composants électroniques. Le capteur à ultrasons doit être orienté vers le bas à un angle de 90 degrés (droit vers le bas) pour calculer avec précision la distance entre le capteur et le niveau de la surface de l’eau.

Étape 2: Schéma de câblage

Tout d’abord, nous commençons par câbler les DEL, l’avertisseur sonore et le capteur de stationnement. Notez que dans cet exemple, le capteur de stationnement est affiché sous la forme d'un HC-5RD4 puisqu'il s'agit essentiellement du même capteur.

Raccordement du côté + de la LED VERTE à D0, de la LED JAUNE à D1, de la LED ROUGE à D2. Tous les côtés devraient aller à un GND. Câblez le signal sonore au format A4. Câblez le côté + du capteur sur VIN (5 V), car 3,3 V ne suffiront pas. GND à GND. La gâchette doit être câblée sur D6. Echo connecté au D5.

Nous avons également utilisé un powerbank pour alimenter le Photon, qui peut également être placé à l'intérieur de la boîte.

Après le câblage, nous pouvons passer à l’étape suivante: coder le photon.

Étape 3: code

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

}

boucle vide () {

int durée, distance; digitalWrite (trigpin, LOW); delayMicroseconds (2); digitalWrite (trigpin, HIGH); délaiMicrosecondes (10); digitalWrite (trigpin, LOW); duration = pulseIn (echopin, HIGH); distance = (durée / 2) / 29,1; Serial.println (distance);

délai (1000); Spark.function ("Publish", PublishValue);

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

si (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; tonalité (speakerPin, 660,100); délai (delay2); tonalité (speakerPin, 660,100); délai (delay3); tonalité (speakerPin, 660,100); délai (delay3); tonalité (speakerPin, 510, 100); délai (delay1); tonalité (speakerPin, 660,100); délai (delay3); tonalité (speakerPin, 770,100); délai (delay7); tonalité (speakerPin, 380,100); délai (delay13); tonalité (speakerPin, 510, 100); délai (delay12); tonalité (speakerPin, 380,100); délai (delay14); tonalité (speakerPin, 320,100); délai (delay11); tonalité (speakerPin, 440,100); délai (delay3); tonalité (speakerPin, 480,80); délai (delay9); tonalité (speakerPin, 450,100); délai (delay2); tonalité (speakerPin, 430,100); délai (delay3); tonalité (speakerPin, 380,100); délai (delay10); tonalité (speakerPin, 660,80); délai (delay10); tonalité (speakerPin, 760,50); délai (delay2); tonalité (speakerPin, 860,100); délai (delay3); tonalité (speakerPin, 700,80); délai (delay2); tonalité (speakerPin, 760,50); délai (delay4); tonalité (speakerPin, 660,80); délai (delay3); tonalité (speakerPin, 520,80); délai (delay2); tonalité (speakerPin, 580,80); délai (delay2); tonalité (speakerPin, 480,80); délai (delay4); tonalité (speakerPin, 510, 100); délai (delay7); tonalité (speakerPin, 380,100); délai (delay14); tonalité (speakerPin, 320,100); délai (delay11); tonalité (speakerPin, 440,100); délai (delay3); tonalité (speakerPin, 480,80); délai (delay9); tonalité (speakerPin, 450,100); délai (delay2); tonalité (speakerPin, 430,100); délai (delay3); tonalité (speakerPin, 380,100); délai (delay10); tonalité (speakerPin, 660,80); délai (delay10); tonalité (speakerPin, 760,50); délai (delay2); tonalité (speakerPin, 860,100); délai (delay3); tonalité (speakerPin, 700,80); délai (delay2); tonalité (speakerPin, 760,50); délai (delay4); tonalité (speakerPin, 660,80); délai (delay3); tonalité (speakerPin, 520,80); délai (delay2); tonalité (speakerPin, 580,80); délai (delay2); tonalité (speakerPin, 480,80); délai (delay11); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 760,100); délai (delay1); tonalité (speakerPin, 720, 100); délai (delay2); tonalité (speakerPin, 680,100); délai (delay2); tonalité (speakerPin, 620,150); délai (delay3); tonalité (speakerPin, 650, 150); délai (delay3); tonalité (speakerPin, 380,100); délai (delay2); tonalité (speakerPin, 430,100); délai (delay2); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 430,100); délai (delay2); tonalité (speakerPin, 500, 100); délai (delay1); tonalité (speakerPin, 570,100); délai (delay8); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 760,100); délai (delay1); tonalité (speakerPin, 720, 100); délai (delay2); tonalité (speakerPin, 680,100); délai (delay2); tonalité (speakerPin, 620,150); délai (delay3); tonalité (speakerPin, 650,200); délai (delay3); tonalité (speakerPin, 1020,80); délai (delay3); tonalité (speakerPin, 1020,80); délai (delay2); tonalité (speakerPin, 1020,80); délai (delay3); tonalité (speakerPin, 380,100); délai (delay3); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 760,100); délai (delay1); tonalité (speakerPin, 720, 100); délai (delay2); tonalité (speakerPin, 680,100); délai (delay2); tonalité (speakerPin, 620,150); délai (delay3); tonalité (speakerPin, 650, 150); délai (delay3); tonalité (speakerPin, 380,100); délai (delay2); tonalité (speakerPin, 430,100); délai (delay2); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 430,100); délai (delay2); tonalité (speakerPin, 500, 100); délai (delay1); tonalité (speakerPin, 570,100); délai (delay8); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 760,100); délai (delay1); tonalité (speakerPin, 720, 100); délai (delay2); tonalité (speakerPin, 680,100); délai (delay2); tonalité (speakerPin, 620,150); délai (delay3); tonalité (speakerPin, 650,200); délai (delay3); tonalité (speakerPin, 1020,80); délai (delay3); tonalité (speakerPin, 1020,80); délai (delay2); tonalité (speakerPin, 1020,80); délai (delay3); tonalité (speakerPin, 380,100); délai (delay3); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 760,100); délai (delay1); tonalité (speakerPin, 720, 100); délai (delay2); tonalité (speakerPin, 680,100); délai (delay2); tonalité (speakerPin, 620,150); délai (delay3); tonalité (speakerPin, 650, 150); délai (delay3); tonalité (speakerPin, 380,100); délai (delay2); tonalité (speakerPin, 430,100); délai (delay2); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 430,100); délai (delay2); tonalité (speakerPin, 500, 100); délai (delay1); tonalité (speakerPin, 570,100); délai (delay6); tonalité (speakerPin, 585,100); délai (delay7); tonalité (speakerPin, 550,100); délai (delay6); tonalité (speakerPin, 500, 100); délai (delay5); tonalité (speakerPin, 380,100); délai (delay3); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 500, 100); délai (delay2); tonalité (speakerPin, 500, 100); délai (delay3); tonalité (speakerPin, 500,60); délai (delay2); tonalité (speakerPin, 500,80); délai (delay3); tonalité (speakerPin, 500,60); délai (delay4); tonalité (speakerPin, 500,80); délai (delay2); tonalité (speakerPin, 580,80);délai (delay4); tonalité (speakerPin, 660,80); délai (delay2); tonalité (speakerPin, 500,80); délai (delay3); tonalité (speakerPin, 430,80); délai (delay2); tonalité (speakerPin, 380,80); délai (delay15); tonalité (speakerPin, 500,60); délai (delay2); tonalité (speakerPin, 500,80); délai (delay3); tonalité (speakerPin, 500,60); délai (delay4); tonalité (speakerPin, 500,80); délai (delay2); tonalité (speakerPin, 580,80); délai (delay2); tonalité (speakerPin, 660,80); délai (delay12); tonalité (speakerPin, 870,80); délai (delay16); tonalité (speakerPin, 760,80); délai (delay15); tonalité (speakerPin, 500,60); délai (delay2); tonalité (speakerPin, 500,80); délai (delay3); tonalité (speakerPin, 500,60); délai (delay4); tonalité (speakerPin, 500,80); délai (delay2); tonalité (speakerPin, 580,80); délai (delay4); tonalité (speakerPin, 660,80); délai (delay2); tonalité (speakerPin, 500,80); délai (delay3); tonalité (speakerPin, 430,80); délai (delay2); tonalité (speakerPin, 380,80); délai (delay15); tonalité (speakerPin, 660,100); délai (delay2); tonalité (speakerPin, 660,100); délai (delay3); tonalité (speakerPin, 660,100); délai (delay3); tonalité (speakerPin, 510, 100); délai (delay1); tonalité (speakerPin, 660,100); délai (delay3); tonalité (speakerPin, 770,100); délai (delay12); tonalité (speakerPin, 380,100); } if (distance> = 30 et distance <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 (chaîne pin) {int duration, afstand; digitalWrite (trigpin, LOW); delayMicroseconds (2); digitalWrite (trigpin, HIGH); délaiMicrosecondes (10); digitalWrite (trigpin, LOW); duration = pulseIn (echopin, HIGH); afstand = (duration / 2) / 29,1;

retourne au stand; }

Étape 4: les travaux

Le capteur doit maintenant être monté au-dessus du niveau d'eau à une hauteur fixe. Étant donné que le capteur de stationnement a une certaine plage de fonctionnement, il doit être monté au moins 30 centimètres au-dessus du niveau d'eau le plus haut, car il ne fonctionne qu'entre ~ 30 et ~ 250 cm. Le capteur HC-SR04 fonctionne entre ~ 2 et ~ 100 centimètres et peut donc être monté plus bas que le capteur de stationnement. Une fois que le code a été envoyé au Photon et que le Photon, les DEL et les capteurs sont tous connectés, vous êtes prêt à commencer et vous pouvez commencer à mesurer.

Le capteur a 4 broches, 5V, trigger, écho et GND. Le 5V doit être connecté à la broche «VIN», en dessinant 5V à partir du photon. Le GND devrait aller au sol sur le photon. La goupille est utilisée pour «indiquer» au capteur quand commencer à mesurer, en lui envoyant une impulsion afin qu'il sache qu'il peut commencer à émettre lui-même une impulsion. La broche d'écho indique alors combien de temps il a fallu à l'impulsion pour se refléter dans le capteur lui-même. La distance peut alors être calculée en divisant ce temps par 2, puisqu’il est allé puis en le divisant par la quantité de (micro) secondes qu'il faut au son pour parcourir 1 m dans les airs, soit 1/343 = 0,029 sec.

Comme le montre le code, lorsque la hauteur d'eau est encore supérieure à 60 cm sous l'appareil, le voyant vert s'allume et les voyants jaune et rouge restent allumés.

Lorsque la hauteur d'eau atteint moins de 60 cm mais dépasse toujours 30 cm, le voyant jaune s'allume et les deux autres s'éteignent.

Enfin, lorsque le niveau d'eau atteint une hauteur inférieure à 30 cm sous le capteur, le voyant rouge commence à brûler, indiquant que le niveau d'eau a atteint une hauteur critique. C’est aussi le moment où un son est joué, en l’occurrence le thème de Mario. Un déclencheur IFTTT (IFTTT.com) sera également déclenché et un courrier électronique sera envoyé vers la configuration du courrier électronique dans le déclencheur, par exemple le superviseur d'un tronçon de rivière, d'une écluse ou d'un canal.