Smart B.A.L (verbundene Mailbox): 4 Schritte
Smart B.A.L (verbundene Mailbox): 4 Schritte
Anonim
Smart B. A. L (verbundene Mailbox)
Smart B. A. L (verbundene Mailbox)

Sie sind es leid, jedes Mal Ihren Briefkasten zu überprüfen, während sich nichts darin befindet. Sie möchten wissen, ob Sie während einer Reise Ihre Post oder ein Paket erhalten. Es benachrichtigt Sie direkt auf Ihrem Smartphone per E-Mail, wenn der Postbote eine Post oder ein Paket hinterlegt hat, dank der neuesten Technologien von LORAWAN made in France. Wir gehen Schritt für Schritt, wie man einen Prototyp in diesem instructable entwirft.

Schritt 1: Ausrüstung

Ausrüstung
Ausrüstung

Verwendete Sprachen: C/C++

Grundkenntnisse in digitaler Elektronik.

Hardware-Anforderungen:

Grove - 3-Achsen-Digital-Gyro:

Kit Sigfox-Modul mit Antenne:

Zufälliger Druckknopf (wählen Sie, was Sie wollen).

Nucleo F030R8:

Software Anforderungen:

Ein Computer mit einem guten Browser, um mit dem Mbed-Compiler zu arbeiten.

Schritt 2: Bereiten Sie Ihr Gerät vor

Bereiten Sie Ihr Gerät vor
Bereiten Sie Ihr Gerät vor

Zuerst müssen wir alle Module mit dem Chip verbinden.

Versorgen Sie das Sigfox-Modul und das Gyroskop mit 3,3 Spannung! Verbinden Sie dann die UART-Kabel mit dem Sigfox-Modul (PA_9, PA_10) und die I2C-Kabel mit dem Gyroskop (PB_10; PB_11). Verbinden Sie die Taste mit PB_3-Pins. Wenn Sie fertig sind, kompilieren Sie den folgenden Code.

Sie können den Prototyp testen, indem Sie den Kreisel auf einen Briefkasten legen und einige Werte bezüglich des Uhrwerks erhalten und so überprüfen, ob es sich um ein hinterlegtes Paket oder einen Brief handelt.

#include "mbed.h" #include "ITG3200.h" //--------------------------------- -- // Hyperterminal-Konfiguration // 9600 Baud, 8-Bit-Daten, keine Parität //----------------------------- ------ Serieller PC (SERIAL_TX, SERIAL_RX); Serieller Sigfox (PA_9, PA_10, NULL, 9600); Unterbrechungstaste (PB_3); ITG3200-Kreisel (PB_11, PB_10); flüchtige int-App; int facteur=0; Timer-t; AnalogIn-Batterie (A3); AnalogIn ref_batt(ADC_VREF); void lol() { pc.printf("appui\r\n"); App=1; } /* void batt() { pc.printf("Batterie faible !\r\n"); }*/ int main() { int x, y, z; // Höchste Bandbreite einstellen. gyro.setLpBandwidth (LPFBW_42HZ); Zeichenpuffer[20]; bouton.fall(&lol); bouton.mode (PullDown); //batterie_faible.rise(&batt); //batterie_faible.mode (PullDown); pc.printf("Beginn \r\n"); während(1) { App=0; x = gyro.getGyroX(); y = gyro.getGyroY(); z = gyro.getGyroZ(); if(x > 5000) { t.start(); pc.printf("Debütminute\r\n"); while(t.read() <10); pc.printf("Flossentemps\r\n"); //pc.printf("app= %d\r\n", app); if(app == 0) { sigfox.printf("AT$SF=636f757272696572\r\n"); //colis: 636f6c69732e202020 sigfox.scanf("%s", Puffer); pc.printf("%s\r\n", Puffer); } pc.printf("fin wenn\r\n"); t.stop(); t.reset(); } /* if(batterie.read() <= (2.8*ref_batt.read()/1.23)) pc.printf("batterie faible\r\n"); sigfox.printf("AT$SF=636f757272696572\r\n"); //colis: 636f6c69732e202020 warten (10); sigfox.printf("AT$P=1"); warten (10); sigfox.printf("AT$P=0\r\n");*/ } }

Schritt 3: Leiterplatte montieren

Der vorherige Prototyp ist zu groß, um ihn auf den Briefkasten zu legen. Hier einige Gerber-Dateien, um Ihre Schaltung zu drucken und Ihr Bauteil zu montieren.

Schritt 4: Backend-Website

Backend-Website
Backend-Website
Backend-Website
Backend-Website

Wir haben unsere Backend-Architektur auf IBM Cloud (IBM IoT Watson Platform und NodeRED) und auf API-REST-Anfragen aufgebaut. Die IBM Cloud wurde verwendet, um die Kommunikation zwischen verschiedenen Teilen unseres Systems zu verwalten. Wie Sie in unserem NodeRED-Flow sehen können, kontrollieren wir alle Anfragen, die wir von der Sigfox-API (die die Nachrichten von unserem Gerät sendet) und von unserer Wix-Website (für die Registrierung eines neuen Geräts) erhalten. Außerdem ist die Cloud dafür verantwortlich, die Benachrichtigungs-E-Mail an den Kunden zu senden und einen neuen Kunden zu registrieren, dessen Informationen in unserer Cloud-basierten Datenbank (MongoDB) gespeichert werden. Somit verwaltet NodeRED grundsätzlich die API-REST-Anfragen und Datenbankabfragen (INSERT und SELECT), um sicherzustellen, dass die richtige Benachrichtigung rechtzeitig an den richtigen Client gesendet wird.