Inhaltsverzeichnis:

Postino: Hat der Postbote etwas geliefert? - Gunook
Postino: Hat der Postbote etwas geliefert? - Gunook

Video: Postino: Hat der Postbote etwas geliefert? - Gunook

Video: Postino: Hat der Postbote etwas geliefert? - Gunook
Video: Sally’s Salon – Beauty Secrets: Cutscenes (Subtitles) 2024, November
Anonim
Postino: Hat der Postbote etwas gebracht?
Postino: Hat der Postbote etwas gebracht?

Keine Ahnung von mir: Eines Tages fragte mich ein Freund nach einer Möglichkeit, aus der Ferne zu überprüfen, ob Postsendungen in seinem Briefkasten lagen. Der Briefkasten befindet sich nicht auf dem Gehweg zu seiner Tür, also fragte er sich, da er ein fauler Junge ist, ob ein technisches Gerät ihn vor jedem Brief in den Briefkasten warnen sollte. Ich habe mich auf dem Markt umgesehen und kein fertiges Gerät gefunden, das seinen Bedürfnissen entspricht, also habe ich mich selbst herausgefordert: Warum nicht entwerfen und bauen?

Die Einschränkungen waren:

  • batteriebetrieben mit einer angemessenen Lebensdauer zwischen Batteriewechseln;
  • WiFi-Kommunikation;
  • nur einmal am Tag prüfen, ob Post da ist oder nicht;

Die Hauptfrage war: Welcher Sensortyp könnte meinen Anforderungen entsprechen? Ein Näherungssensor konnte nicht funktionieren, da die Überprüfung nur einmal am Tag und nicht in Echtzeit erfolgen musste; ein Gewichtssensor auch nicht, da dies zu Komplexitäts- und Empfindlichkeitsproblemen geführt hätte (ein Blatt Papier könnte sehr leicht sein). Meine Wahl fiel auf einen Time-of-Flight (ein Mikrolaser) Sensor. Einmal auf die Briefkastengröße kalibriert, hätte alles, was in der Mitte lag, den Sensor ausgelöst! In Anbetracht der 3 Einschränkungen habe ich mich entschieden, einen ESP8266 (der die Software ausführt und mit WiFi verbunden ist), einen VL6180 Time-of-Flight-Sensor für die Messung und eine DS3231 Real Time Clock zu verwenden, um alle Schaltungen einmal am Tag auszulösen: so war es Postino war geboren!

Schritt 1: Teile und Komponenten

  • ESP8266-01 (oder ESP-12E NodeMCU)
  • VL6108 Flugzeitsensor
  • DS3231 Echtzeituhr
  • IRLZ44 N-Kanal-MosFET
  • BC547 Transistor
  • Widerstände
  • CR123 Batterie

Schritt 2: Der Sensor

Der Sensor
Der Sensor

Das Herzstück des Systems ist der Sensor VL6180. Dies ist eine bahnbrechende Technologie, die es ermöglicht, die absolute Entfernung unabhängig vom Reflexionsgrad des Ziels zu messen. Anstatt die Entfernung durch Messung der vom Objekt reflektierten Lichtmenge zu schätzen (die stark von Farbe und Oberfläche beeinflusst wird), misst der VL6180X präzise die Zeit, die das Licht benötigt, um zum nächstgelegenen Objekt zu gelangen und zum Sensor zurückreflektiert zu werden (Zeit -of-Flight). Durch die Kombination eines IR-Senders, eines Entfernungssensors und eines Umgebungslichtsensors in einem gebrauchsfertigen, reflowfähigen 3-in-1-Gehäuse ist der VL6180X einfach zu integrieren und erspart dem Endprodukthersteller lange und kostspielige optische und mechanische Designoptimierungen.

Das Modul ist für den Low-Power-Betrieb ausgelegt. Ich habe das Pololu Breakout Board verwendet, das Spannungsregler an Bord hat, die es ermöglichen, über einen Eingangsspannungsbereich von 2,7 V bis 5,5 V zu arbeiten.

Der Sensor erlaubt 3 gültige Skalierungsfaktoren, die den maximalen Messbereich von 20 bis 60 cm mit unterschiedlichen Empfindlichkeiten einstellen. Durch Konfigurieren eines Bereichsskalierungsfaktors kann die potenzielle maximale Reichweite des Sensors auf Kosten einer geringeren Auflösung erhöht werden. Die Einstellung des Skalierungsfaktors auf 2 bietet eine Reichweite von bis zu 40 cm bei einer Auflösung von 2 mm, während ein Skalierungsfaktor von 3 eine Reichweite von bis zu 60 cm bei einer Auflösung von 3 mm bietet. Sie müssen die 3 Waagen mit Ihren Briefkastenmaßen testen. Da meine 25 cm (H) war, habe ich den Skalierungsfaktor = 1 verwendet.

Schritt 3: Anpassung der Echtzeituhr

Für die RTC habe ich ein DS3231 Breakout Board verwendet, das ein EEPROM (für meinen Zweck nutzlos) und eine Münzbatterie enthält. Als ich beschloss, die RTC über die Batterie des Hauptgeräts (eine 3 V CR123) zu betreiben, entfernte ich die Knopfbatterie; Um Strom zu sparen, habe ich auch das EEPROM (durch vorsichtiges Schneiden der Stifte) und die Onboard-LED entfernt.

Die Münzbatterie war für mich nicht nützlich, da ich Datum/Stunde/Minute/Sekunde in Echtzeit nicht speichern musste, sondern die RTC nur 24 Stunden zählen musste und dann den Alarm auslösen musste, um das Gerät einzuschalten.

Schritt 4: Sonstiges an Bord

Sonstiges an Bord
Sonstiges an Bord
Sonstiges an Bord
Sonstiges an Bord

Das Einschalten des Geräts erfolgt über eine Transistor- und MosFET-Schaltung, die durch den RTC-Alarm ausgelöst wird. Sobald der Alarm zurückgesetzt wurde, unterbricht der Stromkreis die Stromversorgung des Geräts für einen weiteren 24-Stunden-Zyklus. Wenn ein Alarm erreicht wird, schaltet der DS3231 einen Pin von High auf Low: Unter normalen Bedingungen ist der Transistor gesättigt und schließt das Gate des MosFET mit Masse kurz. Sobald der Alarm die Basis des Transistors auf Masse bringt, öffnet er sich und ermöglicht dem MosFET, den Stromkreis zu schließen und den Rest der Komponenten mit Strom zu versorgen.

Außerdem habe ich einen „test-1M“-Jumper hinzugefügt. Der Zweck dieses Schalters besteht – falls aktiviert – darin, den Zyklus von einmal täglich auf einmal pro Minute zu ändern, um Einsatztests durchzuführen. Um das Intervall von einem Tag auf eine Minute zu ändern, müssen Sie zuerst den Jumper „Test-C“für ca. 15 Sekunden schließen, um die Aktivierungszeit des Uhralarms zu umgehen und das Gerät einzuschalten. Wenn die Tests abgeschlossen sind, öffnen Sie die Jumper und setzen Sie das Gerät zurück (aus- und wieder einschalten).

Schritt 5: Schaltplan

Schaltplan
Schaltplan

Schritt 6: Software und Logik

Während der Tests habe ich (aus praktischen Gründen) einen NodeMCU-Controller verwendet, die Software kümmert sich darum, indem sie die CHIP-Variale auf „NodeMCU“oder „esp8266“setzt.

Die Skizze implementiert die WiFiManager-Bibliothek, damit sich das Gerät beim ersten Durchlauf mit einem gültigen WiFi-AP verbinden kann. In einem solchen Fall wechselt das Gerät in den AP-Modus, sodass Sie eine Verbindung herstellen und das richtige WLAN-Netzwerk auswählen können, dem Sie beitreten möchten. Danach wird die Netzwerkkonfiguration für nachfolgende Zyklen im EPROM gespeichert.

Die Variable REST_MSG enthält die HTTP-Nachricht, die gesendet wird, wenn der Sensor ein Objekt in der Mailbox findet. In meinem Fall sendet es eine Nachricht an einen Domotic-REST-Server, aber Sie können sie nach Belieben ändern: eine Telegramm-BOT-Nachricht, ein IFTTT-WebHook-Ereignis usw.

Der Rest der Skizze befindet sich in der setup()-Funktion, da die Schleife nie erreicht wird. Nach den für die verschiedenen Bibliotheken erforderlichen Konfigurationen stellt die Software die Uhrzeit auf 00:00:01 und den Wecker auf einmal täglich (oder einmal pro Minute, wenn der Jumper „test-1M“aktiviert ist). Dann führt es die Messung durch, sendet die Benachrichtigung (wenn ein Objekt in der Mailbox gefunden wird) und setzt den Alarm-Pin zurück, wodurch das Gerät heruntergefahren wird. Am Ende des Zyklus wird nur die RTC eingeschaltet und zählt 24 Stunden lang. Der Jumper Test-1M wird mit dem RX-Pin des ESP8266, der als GPIO-3 verwendet wird, mit der Einstellung: setMode(PIN, FUNCTION_3) verbunden. Aus diesem Grund können Sie den seriellen Monitor nicht verwenden, während der ESP8266 ausgeführt wird: Die Zeile " #define DEBUG " (die alle seriellen Drucke in der Skizze zulässt) wird nur verwendet, wenn eine NodeMCU anstelle eines ESP8266 installiert ist.

Der ESP8266 wickelt die I2C-Kommunikation mit der RTC und dem Sensor über seine Pins GPIO-0 und GPIO-2 ab, die in der Wire-Bibliothek initialisiert sind.

Der vollständige Code kann unter diesem Link heruntergeladen werden.

Assistive Tech-Wettbewerb
Assistive Tech-Wettbewerb
Assistive Tech-Wettbewerb
Assistive Tech-Wettbewerb

Zweiter im Assistive Tech Contest

Empfohlen: