Abstandssensor

Der Abstandssensor dient dazu eine Pushnachricht über Blynk zu senden, wenn sich ein Paket im Briefkasten befindet. Zuerst wurde recherchiert wie der Abstandssensor funktioniert. Der Abstandssensor wird mit 5 Volt betrieben und der „Out”-Pin wird an einen analogen Pin des Mikrocontrollers angeschlossen. Den Abstandssensor ist entsprechend mit dem Mikrocontroller verkabelt und wurde mit dem seriellen Monitor getestet. In dem seriellen Monitor werden Werte ausgegeben, welche der Abstandssensor misst. Sofern sich ein Gegenstand vor dem Abstandssensor befindet, wird ein anderer Wert ausgegeben, als wenn kein Gegenstand vor dem Abstandssensor stände. Dabei wurde auch noch die Empfindlichkeit des Abtsandsensors variiert. Beim Testen wurden zuerst scheinbar zufällige Werte ausgegeben, unabhängig davon, ob ein Gegenstand vor dem Abstandssensor steht oder nicht. Danach wurde selbiges in einer etwas abgedunkelten Umgebung gemacht. Dadurch wurden vernünftige Werte ausgegeben, wenn ein Gegenstand erkannt wurde. Mit diesen Informationen konnte die folgende Methode geschrieben werden.

void loop() {
  while(Blynk.connected() == false){
    Blynk.connect();
    Serial.print(".");
  }
  Blynk.run();
  if(packageDetected()){
    delay(2000);
    Blynk.notify("Du hast ein Paket bekommen!");
    Serial.println("Paket");
  }
}

  /* Nutzt Abstandsensor, um Paket zu erkennen.
   * Sendet eine Nachricht via Blynk, falls ein neues Paket geliefert wurde.
   */
  boolean packageDetected(){
    //Wert den der Abstandssensor ausgibt
    int distance = analogRead(A0);
    //Delay, da auslesen des A0 Pins sonst WLAN Verbindung stört
    delay(100);
    //Wenn ein Paket vorliegt und Nachricht noch nicht gesendet wurde
    if(distance <= MAX_DISTANCE && package == false){
      package = true;
      return true;
    }
    //Wenn Paket entnommen wurde, dann setze alles auf Anfang, um neues Paket erkennen zu können
    if(distance > MAX_DISTANCE){
      package = false;
      return false;
    }

    return false;

}

Dabei wurde „MAX_DISTANCE” auf 1000 gesetzt, da 1024 der Wert ist, den der Abstandssensor ausgibt, wenn sich ein Gegenstand davor befindet. Die Hilfsvariable „package” wird mit „false” initialisiert und dient dazu, dass die Pushnachricht nur einmal gesendet wird. „A0″ ist der Input Pin an dem die Werte des Abstandssensors gelesen werden. Die Methode funktioniert wie folgt: Zuerst wird in „distance” der Wert, den der Abstandssensor ausgibt, gespeichert. Wenn nun ein Paket in den Briefkasten gelegt wird, also der vom Abstandssensor ausgegebene Wert größer als 1000 ist, und noch keine Pushnachricht gesendet wurde, dann wird „true” zurückgegeben und eine Pushnachricht wird gesendet. Außerdem wird noch „package” auf „true” gesetzt, damit die Pushnachricht nur einmal gesendet wird. Wenn das Paket aus dem Briefkasten entnommen wird, also „distance” wieder kleiner als 1000 ist, dann wird „package” auf „false” gesetzt. Dadurch kann beim nächsten Paket wieder eine Pushnachricht gesendet werden. Schließlich wird „false” zurückgegeben.

In der Blynk App muss lediglich ein Notification Element hinzugefügt werden.

Leave a Reply

Your email address will not be published. Required fields are marked *

*