Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Smart Door mit Face Unlock

Komponenten und Verbrauchsmaterialien

Bolt IoT Bolt WiFi-Modul
× 1
Arduino UNO
× 1
Summer
× 1
Lötfreies Steckbrett in voller Größe
× 1
SparkFun Drucktastenschalter 12 mm
× 2
5 mm LED:Rot
× 1
5 mm LED:Grün
× 1
Widerstand 10k Ohm
× 2
Widerstand 330 Ohm
× 2
Jumper (generisch)
× 1

Notwendige Werkzeuge und Maschinen

Heißklebepistole (generisch)

Apps und Onlinedienste

Bolt IoT Bolt Cloud
Microsoft Windows 10
Microsoft Visual Studio
Arduino-IDE
Face++

Über dieses Projekt

Willkommen, neugieriger Kumpel! Wir leben in einer durch das Internet revolutionierten Ära, in der es jetzt einfacher denn je ist, zu experimentieren und selbst Innovationen zu entwickeln, um brillante Ideen zu entwickeln, die Millionen von Menschen auf der ganzen Welt positiv beeinflussen können.

Wollten Sie schon immer Ihr Regal, Ihre Schubladen, Kleiderschränke oder Türen zu Hause ein bisschen sicherer machen? Wenn es um Innovation mit dem Internet geht, stechen unter Tausenden von Plattformen und Tools, die uns zur Verfügung stehen, Arduino . hervor und Bolt IoT . In diesem Projekt ändern wir ein Standardregal so, dass es ein Sicherheitssystem hat, das mithilfe der Gesichtsprüfung entsperrt wird Wir erstellen eine Windows Forms-Anwendung in C# die vertrauenswürdige Gesichter speichern, verifizieren und entsperren kann. Es verwendet die FacePlusPlus API zur Gesichtsverifizierung und Bolt IoT Cloud API für die Kommunikation mit dem Bolt WiFi-Modul und Arduino. Wir werden das Bolt WiFi-Modul mit einem Arduino Uno verbinden , das steuert einen Servomotor zum Verriegeln/Entriegeln der Tür.

Aufgeregt? Fangen wir an.

Hintergrund

Ich habe dieses Projekt im Rahmen der Innovate Challenge und des IoT-Trainings durchgeführt, das von Internshala Trainings durchgeführt wurde. Ihre Schulung half, die Grundlagen des Umgangs mit API-Diensten, der objektorientierten Programmierung und vor allem der Verwendung des Bolt WiFi-Moduls zu verstehen. Eine Zusammenfassung des Capstone-Projekts, die im Rahmen dieser Schulung erstellt wurde, finden Sie hier. Viele dieser Konzepte haben sich im Laufe der Entwicklung dieses Projekts bewährt. Ein großes Dankeschön an das Internshala-Team dafür, dass es dies möglich gemacht hat.

Schritt 1:Erstellen der Software

Wir erstellen eine Windows Forms-Anwendung mit Visual Studio. Diese Anwendung läuft auf einem Windows-Computer und ist für die Verwaltung autorisierter Gesichter, die Überprüfung eines Gesichts mit der FacePlusPlus-API und die Kommunikation mit dem Bolt WiFi-Modul verantwortlich. Wir verwenden C# zum Coden.

Starten Sie Visual Studio und erstellen Sie ein neues Windows Forms-Anwendungsprojekt. Wenn Sie Visual Studio noch nicht kennen, empfehle ich Ihnen, die Grundlagen der Windows Forms-Anwendungsentwicklung mit Visual Studio zu erlernen. Dies und dies sind gute Ressourcen für den Anfang.

In diesem Tutorial erkläre ich nur Code mithilfe von Ausschnitten aus dem Projekt, das die wichtigsten und wichtigsten Funktionen ausführt. Es wird mühsam und unnötig sein, den gesamten Code durchzugehen, da das meiste selbsterklärend und gut dokumentiert ist.

Unser Visual Studio-Projekt verwendet 3 Bibliotheken für verschiedene Zwecke. Sie sind:

  • AForge .NET :Ein beliebtes .NET-Framework, das für die Bildverarbeitung in Windows verwendet wird. Wir verwenden es, um Bilder von einer Webcam aufzunehmen.
  • Bolt IoT API .NET :Eine inoffizielle Clientbibliothek, die ich in C# geschrieben habe, um die Bolt Cloud API zu kommunizieren.
  • Newtonsoft JSON :Ein beliebtes Hochleistungs-JSON-Framework für .NET. Wird zum Parsen von API-Antworten in unserem Projekt verwendet.

HINWEIS:Um die Verwendung der verschiedenen Methoden in den oben genannten APIs zu verdeutlichen, lesen Sie bitte die entsprechenden Dokumentationen hier, hier und hier.

Erste Schritte

Bevor wir mit der Codierung beginnen, müssen wir ein paar Dinge einrichten.

1. Bolt Cloud API-Anmeldedaten

Falls noch nicht geschehen, gehen Sie zu cloud.boltiot.com und richten Sie ein Konto ein. Sobald Sie eingeloggt sind, verknüpfen Sie Ihr WiFi-Modul mit der Bolt Cloud. Laden Sie dazu die Bolt IoT Setup App auf Ihr Mobiltelefon herunter. Folgen Sie den Anweisungen in der App, um Ihr Gerät mit Ihrem Konto zu verknüpfen. Dies beinhaltet das Koppeln des Bolt mit dem lokalen WiFi-Netzwerk. Nach erfolgreicher Verknüpfung zeigt Ihr Dashboard Ihr Gerät an. Sie können jetzt Ihre Geräte-ID abrufen und und API-Schlüssel über das Dashboard.

2. FacePlusPlus API-Anmeldeinformationen

Ein weiterer API-Dienst, auf den wir uns in diesem Projekt verlassen, ist die FacePlusPlus API . Es ist eine kostenlose Plattform, die verschiedene Arten von Bilderkennungsdiensten anbietet. Wir verwenden es zur Gesichtserkennung. Erstellen Sie ein Konto und gehen Sie zur FacePlusPlus-Konsole. Gehen Sie zu API-Schlüssel unter Apps und klicken Sie auf +API-Schlüssel abrufen . Notieren Sie sich den neu generierten API-Schlüssel und API-Geheimnis .

Jetzt sollten Sie Folgendes bereithalten:

privater schreibgeschützter String BOLT_DEVICE_ID ="BOLTXXXXXX";privater schreibgeschützter String BOLT_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; privater schreibgeschützter String FPP_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; privater schreibgeschützter String FPP_API_SECRET ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 

Wir erstellen eine neue globale Instanz der Bolt-Klasse namens myBolt , über die wir die gesamte zukünftige Kommunikation mit dem WiFi-Modul durchführen werden:

myBolt =new Bolt(BOLT_API_KEY, BOLT_DEVICE_ID); 

Sehen wir uns nun an, wie unsere Anwendung einige der Kernfunktionen ausführt.

1. Tür verriegeln/entriegeln

Wir haben die Schaltung so entworfen, dass wenn Digital Pin 0 HIGH . ist , die Tür soll verriegelt werden und wenn Digital Pin 3 HIGH . ist , Tür soll unverschlossen sein. Dies wird später klarer, wenn wir die Schaltpläne besprechen.

Zum Sperren verwenden wir den DigitalMultiWrite Methode aus der Bibliothek zum Schreiben von HIGH Wert auf D0 und LOW Wert auf D3. Dies signalisiert dem Arduino, die Tür zu verriegeln. Ähnlich schreiben wir zum Entsperren LOW Wert auf D0 und HIGH Wert auf D3. Dies signalisiert dem Arduino, die Tür zu entriegeln. Wir werden den Arduino-Code und das Schaltungsdesign später in diesem Tutorial besprechen.

Code, der das Sperren durchführt:

private asynchrone Aufgabe LockDoor(){ MultiPinConfig multiPinConfig =new MultiPinConfig(); MultiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.High); // Signal sperren multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Signal entsperren warten myBolt.DigitalMultiWrite (multiPinConfig); multiPinConfig =neue MultiPinConfig(); multiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.Low); // Signal sperren multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Signal entsperren auf myBolt.DigitalMultiWrite(multiPinConfig);} 

Code, der das Entsperren durchführt:

private asynchrone Aufgabe UnlockDoor(){ MultiPinConfig multiPinConfig =new MultiPinConfig(); multiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.Low); // Signal sperren multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.High); // Signal entsperren warten myBolt.DigitalMultiWrite (multiPinConfig); multiPinConfig =neue MultiPinConfig(); multiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.Low); // Signal sperren multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Signal entsperren auf myBolt.DigitalMultiWrite(multiPinConfig);} 

2. Vertrauenswürdige Gesichter hinzufügen/entfernen

Die Bilddaten des vertrauenswürdigen Gesichts werden in einen Base64-String kodiert und lokal im Gerät gespeichert. Eine Liste entsprechender Namen jedes Gesichts wird ebenfalls gespeichert. Um in unserem Programm ein Gesicht hinzuzufügen, prüfen wir zunächst, ob im aktuellen Frame ein Gesicht verfügbar ist. Wir tun dies mit der Detect API von FacePlusPlus. Es gibt eine JSON-Antwort zurück, die Merkmale des erkannten Gesichts enthält. Wenn kein Gesicht erkannt wird, lautet die Antwort einfach [] . Sobald ein Gesicht erkannt wurde, speichern wir die base64-codierte Zeichenfolge des Bildes und den entsprechenden Namen. Hier ist eine Videodemo zum Hinzufügen eines vertrauenswürdigen Gesichts.

Ein Gesicht zu entfernen ist ziemlich einfach. Durch Drücken der Entfernen-Taste werden die Bilddaten und der Name aus der gespeicherten Liste gelöscht.

Code, der die Gesichtsinformationen hinzufügt und speichert:

//Bild in base64-String konvertieren und zur Liste hinzufügen. ImageDataList.Add(ImageToBase64((Image)PreviewBox.Image.Clone()));//Hinzufügen des Namens des Gesichts zur listNameList.Add(FaceNameTextBox.Text.Trim()); //Speichert die Gesichtsbilddaten als basiscodierte Zeichenfolge zusammen mit ihrem nameProperties.Settings.Default.Base64ImageData =ImageDataList;Properties.Settings.Default.FaceNames =NameList;Properties.Settings.Default.Save(); 

Code, der Gesichtsinformationen entfernt:

//Entfernen von Gesichtsinformationen an der angegebenen Position in listNameList.RemoveAt(e.RowIndex);ImageDataList.RemoveAt(e.RowIndex); //Speichern der Liste nach dem Entfernen eines faceProperties.Settings.Default.FaceNames =NameList;Properties.Settings.Default.Base64ImageData =ImageDataList;Properties.Settings.Default.Save(); 

Sehen Sie sich den Code im angehängten Projekt an, in dem der Prozess als Kommentar in jeder Zeile erklärt wird, um eine klare Vorstellung zu haben.

3. Gesichtsverifizierung

Wir überprüfen, ob ein Gesicht vertrauenswürdig ist oder nicht, indem wir die Vergleichs-API in FacePlusPlus verwenden. Während dieses Vorgangs durchlaufen wir jedes Gesicht in der gespeicherten Liste linear und vergleichen es mit dem aufgenommenen Bild. Wenn die API eine Konfidenz von mehr als 80 % zurückgibt, öffnen wir die Tür.

Der Code, der diesen Vergleich durchführt, sieht in etwa so aus:

WebClient-Client =neuer WebClient(); byte[] response =client.UploadValues("https://api-us.faceplusplus.com/facepp/v3/compare", new NameValueCollection(){ { "api_key", FPP_API_KEY }, { "api_secret", FPP_API_SECRET }, { "image_base64_1", face1Base64}, { "image_base64_2", face2Base64} });}); string Confidence =JObject.Parse(System.Text.Encoding.UTF8.GetString(response))["confidence"].ToString(); 

WebClient.UploadValues -Methode sendet die Anfrage an die FacePlusPlus-API zusammen mit den base64-codierten Gesichtsdaten von zwei zu vergleichenden Gesichtern und unseren API-Anmeldeinformationen. Die Antwort wird mit Newtonsoft JSON geparst Bibliothek und Vertrauen Wert erhalten wird. Lesen Sie die Dokumentation zur Vergleichs-API, um die Argumente klar zu verstehen.

4. The Bell Listening Thread

Wir planen, einen physischen Druckknopf bereitzustellen, so etwas wie eine Klingeltaste, damit der Benutzer drücken kann, während er in die Kamera schaut, um die Tür zu entriegeln. Um dies zu ermöglichen, müssen wir einen neuen dedizierten Thread erstellen, der kontinuierlich auf das Drücken der Klingeltaste wartet.

Später in diesem Tutorial werden wir sehen, wie der Druckknopf verwendet wird und wie er den D4-Pin des Bolt-WLAN-Moduls HIGH . macht wenn die Taste gedrückt wird. Vorerst nehmen wir einfach das oben Gesagte an. In diesem Thread schreiben wir also kontinuierlich DigitalRead der Wert des D4-Pins. Wenn es HIGH ist , nehmen wir das als Klingelereignis und führen die Gesichtserfassung und -überprüfung durch.

Hier ist der Code, der kontinuierlich im Glockenhörthread ausgeführt wird:

while (ListenForBell){ Antwort R =wait myBolt.DigitalRead(DigitalPins.D4); if (R.Value =="1") { RingBell_Click(null, null); Thread.Sleep(2000); } Thread.Sleep(2000);} 

Wir halten an und warten 2 Sekunden zwischen jeder Iteration. Andernfalls wird das Nutzungskontingent der Bolt Cloud API schnell erschöpft.

Schritt 2:Erstellen des Visual Studio-Projekts

Das gesamte Projekt herunterladen hier . Öffne die Facebolt Doorlock.sln Datei in Visual Studio. Nachdem die Lösung geladen wurde, öffnen Sie Form1.cs Datei und aktualisieren Sie den Code mit Ihren API-Anmeldeinformationen. Drücken Sie den grünen Play-Button namens 'Start', um das Programm zu erstellen und auszuführen.

Mit dem Programm können Sie aus an das System angeschlossenen Kamerageräten auswählen und einen Live-Feed von der Kamera anzeigen. Sie können ein vertrauenswürdiges Gesicht hinzufügen/entfernen. Gesichtsüberwachung starten. Sobald das Programm die Konnektivität Ihres Bolt-Geräts überprüft hat, können Sie direkt aus dem Programm heraus klingeln oder die Tür verriegeln.

Es ist in Ordnung, wenn Sie jetzt verwirrt sind, wie die Gesichtsüberprüfung, das Sperren und Entsperren im Programm funktioniert. Es wird klarer, wenn wir den Schaltplan und den Arduino-Code sehen. Ich werde am Ende auch den Fluss der Ereignisse jeder Operation aufschlüsseln.

Schritt 3:Schaltungsdesign und Arduino-Code

In unserer Schaltung beabsichtigen wir, die folgenden Funktionen zu implementieren:

  • Rote und grüne LED-Anzeige für verriegelte bzw. unverschlossene Türzustände.
  • Ein Druckknopf, der sich wie ein Klingelschalter verhält. Wenn sie gedrückt wird, sollte unsere WinForms-Anwendung bei erfolgreicher Gesichtsauthentifizierung das Gesicht und die offene Tür überprüfen.
  • Ein weiterer Druckknopf zum Verriegeln der Tür.
  • Ein Summer, der bei einem Klingeln und Türschloss piept.

Die Schaltungsverbindung unseres Projekts ist unten dargestellt:

Wenn Sie dies noch nicht getan haben, laden Sie die Arduino-IDE von hier herunter und verbinden Sie Ihr Arduino mit dem System. Stellen Sie sicher, dass Sie das richtige Arduino-Modell und den richtigen Port in den IDE-Einstellungen eingestellt haben, bevor Sie den Code hochladen.

Arduino-Code:

#include  #define ServoPin 4#define LockSignalPin 2#define UnLockSignalPin 3#define BellButtonPin 5#define LockButtonPin 8#define RingBellSignalPin 6#define BuzzerPin 7#define GreenLedPin 9#define RedLedPin 10 Servo myServo; Void setup () { PinMode (LockSignalPin, INPUT); pinMode (UnLockSignalPin, INPUT); pinMode (BellButtonPin, EINGANG); pinMode (LockButtonPin, INPUT); pinMode (SummerPin, AUSGANG); pinMode (RedLedPin, AUSGANG); pinMode (GreenLedPin, AUSGANG); pinMode (RingBellSignalPin, AUSGANG); digitalWrite (RedLedPin, LOW); digitalWrite (GreenLedPin, LOW); digitalWrite (RingBellSignalPin, LOW); myServo.attach(ServoPin); Serial.begin (9600);} void loop () { int lockButton, sperren, entsperren, Glocke; char snum[5]; lock =digitalRead (LockSignalPin); entsperren =digitalRead (UnLockSignalPin); // Überprüfen Sie, ob das Sperrsignal von Bolt HIGH ist if (lock ==HIGH) {// Motor in die gesperrte Position drehen myServo.write (120); // LED-Anzeigen einstellen digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HIGH); // Buzz-Locking-Sound digitalWrite (BuzzerPin, HIGH); Verzögerung (1000); digitalWrite (SummerPin, LOW); Verzögerung (1000); } // Prüfen, ob das Entsperrsignal von Bolt HIGH ist sonst if (unlock ==HIGH) {// Motor in die entsperrte Position drehen myServo.write (0); // LED-Anzeigen einstellen digitalWrite (GreenLedPin, HIGH); digitalWrite (RedLedPin, LOW); Verzögerung (2000); } Glocke =digitalRead (BellButtonPin); if(bell ==HIGH) // Benutzer hat Glockenklingel betton gedrückt {// Signalbolzen, dass die Klingeltaste gedrückt wurde digitalWrite (RingBellSignalPin, HIGH); // Ein Klingeltonmuster ! digitalWrite (SummerPin, HOCH); Verzögerung (100); digitalWrite (SummerPin, LOW); Verzögerung (20); digitalWrite (SummerPin, HOCH); Verzögerung (200); digitalWrite (SummerPin, LOW); Verzögerung (100); digitalWrite (SummerPin, HOCH); Verzögerung (100); digitalWrite (SummerPin, LOW); Verzögerung (20); digitalWrite (SummerPin, HOCH); Verzögerung (200); digitalWrite (SummerPin, LOW); Verzögerung (1500); // Schalten Sie das Signal aus digitalWrite (RingBellSignalPin, LOW); } lockButton =digitalRead (LockButtonPin); if(lockButton ==HIGH) // Benutzer hat Lock Betton gedrückt {// Motor in die gesperrte Position drehen myServo.write (120); // LED-Anzeigen einstellen digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HIGH); // Buzz-Locking-Sound digitalWrite (BuzzerPin, HIGH); Verzögerung (1000); digitalWrite (SummerPin, LOW); }} 

Ereignisabläufe

Nachdem wir nun sowohl die WinForm-Anwendung als auch das Arduino-Design bereit haben, lassen Sie uns in den Code eintauchen und den Kontrollfluss jeder Operation untersuchen.

1. Klingeln Taste drücken

2. Sperren Taste drücken

Beide oben genannten Operationen können auch direkt aus der Windows Forms-Anwendung ausgeführt werden.

Hier können wir beobachten, dass das Bolt WiFi-Modul dient als wichtige drahtlose Schnittstelle zwischen der Windows Forms-Anwendung und dem Arduino. Die Verwendung der Bolt Cloud API ermöglicht es uns, unser Projekt zu erweitern und Anwendungen auf anderen Plattformen wie Android zu erstellen und die Tür mit unseren Telefonen zu öffnen! Diese Flexibilität ist die Stärke von IoT und der Bolt-Plattform.

Nachdem wir nun den Software-Design-Teil abgeschlossen haben, können wir weitermachen und einen abschließbaren Türmechanismus bauen.

Schritt 4:Aufbau der Hardware

Ich habe ein Schuhregal herumliegen, also werde ich es in diesem Projekt für die Schlossdemonstration verwenden. Sie können ein Regal oder eine Tür oder einen Kleiderschrank oder alles, was einen hackbaren Verriegelungsmechanismus hat, verwenden. Es liegt wirklich an dir.

Wir müssen einen Kupplungsmechanismus bauen, der unseren Servomotor mit dem Schloss verbindet. Meine Idee ist, dafür einen abgeschnittenen Flaschenhals und den Verschluss einer anderen Flasche zu verwenden. Befestigen Sie den Flaschenhals am Servomotor und die Kappe am Schloss. Wir werden sie dann mit einem Nylonfaden koppeln. Dies führt bei jeder Drehung des Motors zum Sperren/Entsperren.

Der erforderliche Flaschenhals mit einem Loch in der Kappe sieht in etwa wie unten gezeigt aus. Wir werden dies an der Verriegelungswelle des Schuhregals befestigen.

Am Servomotor muss ein weiterer Flaschenverschluss angebracht werden. Wir verwenden Kupferdrähte, um die Kappe mit der Drehwelle des Motors zu verbinden.

Jetzt müssen wir diese beiden koppeln. Dafür verwenden wir Nylonfäden. Machen Sie eine Schlaufe aus dem Faden mit der erforderlichen Länge und befestigen Sie den Faden an beiden Kappen.

Sobald sie gekoppelt sind, können sie sich gegenseitig drehen:

Jetzt, da wir unseren Drehmechanismus bereit haben, ist es Zeit, in das Schloss zu hacken und unseren Flaschenhals darin zu fixieren. Da wir ein Loch gebohrt hatten, brauchen wir nur noch die Verschlusswelle aus dem Rack zu schrauben, den Flaschenhals darüber zu setzen und das Schloss wieder festzuschrauben.

Jetzt muss nur noch der Servomotor am Schuhregal befestigt werden. Wir verwenden eine Heißklebepistole, um den Motor mit dem Rack zu versiegeln.

Nachdem wir die Länge des Gewindes angepasst und ausreichend festgezogen haben, haben wir unsere endgültige Einrichtung fertig. Wie unten zu sehen ist, kann der Servomotor die Tür korrekt ver- und entriegeln!

Sie müssen nicht unbedingt die Flaschenhals-Gewinde-Kopplungsmethode verwenden. Verwenden Sie die für Ihr Schließsystem am besten geeignete und bequemste Methode.

Zum Glück hatte ich an der richtigen Stelle im Rack eine kleine Öffnung. Dadurch konnte ich die Servomotoranschlüsse leicht herausziehen. Nach ein wenig Dekorationsarbeit und Beschriftung ist unser letztes smartes Schuhregal nun einsatzbereit.

Wir sind jetzt fertig. Alles, was Sie noch tun müssen, ist, die Schaltung zu starten, ein vertrauenswürdiges Gesicht in der WinForms-Anwendung hinzuzufügen und die Gesichtssperre an unseren Türen zu genießen. Sie müssen sowohl das Arduino- als auch das Bolt-WiFi-Modul mit Strom versorgen. Ich verwende eine 10000 mAh Powerbank, um beide mit Strom zu versorgen. Die von mir verwendete WebCam ist eine Microsoft LifeCam VX-800. Es ist alt, aber immer noch besser als die Kamera des Laptops. Sehen Sie sich das Demonstrationsvideo an. Es zeigt die Arbeit unseres Projekts im Detail.

Die Videodemonstration

Sehen Sie sich unser Projekt in Aktion an (Entschuldigung für die Videoqualität):

Fazit

Huff.. das war ziemlich lang. Dieses Projekt ist das Ergebnis des IoT-Trainings von Internshala, das von Bolt IoT unterstützt wird. Obwohl dieses Projekt ziemlich einfach ist, zeigt es uns das Potenzial des Internets der Dinge und wie es den Alltag der Menschen erleichtern kann.

Wie auch immer.. Dies war eine großartige Lernerfahrung für mich. Ich wünsche euch viel Spaß beim Bauen und bin gespannt, welche neuen Innovationen ihr euch einfallen lassen werdet. Abschließend möchte ich dem Schulungsteam von Internshala und Bolt IoT meinen aufrichtigen Dank dafür aussprechen, dass es dieses Vorhaben ermöglicht hat.

Und das ist ein Wrap!

Code

  • BoltDoorLock.ino
  • WinForms-Anwendung - Visual Studio-Projekt (Facebolt Doorlock).zip
BoltDoorLock.inoC/C++
Arduino-Code.
#include #define ServoPin 4#define LockSignalPin 2#define UnLockSignalPin 3#define BellButtonPin 5#define LockButtonPin 8#define RingBellSignalPin 6#define BuzzerPin 7#define GreenLedPin 9#define RedLedPin . 10Servo myServo;void setup () { pinMode (LockSignalPin, INPUT); pinMode (UnLockSignalPin, INPUT); pinMode (BellButtonPin, EINGANG); pinMode (LockButtonPin, INPUT); pinMode (SummerPin, AUSGANG); pinMode (RedLedPin, AUSGANG); pinMode (GreenLedPin, AUSGANG); pinMode (RingBellSignalPin, AUSGANG); digitalWrite (RedLedPin, LOW); digitalWrite (GreenLedPin, LOW); digitalWrite (RingBellSignalPin, LOW); myServo.attach(ServoPin); Serial.begin (9600);}void loop () { int lockButton, lock, unlock, bell; char snum[5]; lock =digitalRead (LockSignalPin); entsperren =digitalRead (UnLockSignalPin); // Überprüfen Sie, ob das Sperrsignal von Bolt HIGH ist if (lock ==HIGH) {// Motor in die gesperrte Position drehen myServo.write (120); // LED-Anzeigen einstellen digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HIGH); // Buzz-Locking-Sound digitalWrite (BuzzerPin, HIGH); Verzögerung (1000); digitalWrite (SummerPin, LOW); Verzögerung (1000); } // Prüfen, ob das Entsperrsignal von Bolt HIGH ist sonst if (unlock ==HIGH) {// Motor in die entsperrte Position drehen myServo.write (0); // LED-Anzeigen einstellen digitalWrite (GreenLedPin, HIGH); digitalWrite (RedLedPin, LOW); Verzögerung (2000); } Glocke =digitalRead (BellButtonPin); if(bell ==HIGH) // Benutzer hat Glockenklingel betton gedrückt {// Signalbolzen, dass die Klingeltaste gedrückt wurde digitalWrite (RingBellSignalPin, HIGH); // Ein Klingeltonmuster ! digitalWrite (SummerPin, HOCH); Verzögerung (100); digitalWrite (SummerPin, LOW); Verzögerung (20); digitalWrite (SummerPin, HOCH); Verzögerung (200); digitalWrite (SummerPin, LOW); Verzögerung (100); digitalWrite (SummerPin, HOCH); Verzögerung (100); digitalWrite (SummerPin, LOW); Verzögerung (20); digitalWrite (SummerPin, HOCH); Verzögerung (200); digitalWrite (SummerPin, LOW); Verzögerung (1500); // Schalten Sie das Signal aus digitalWrite (RingBellSignalPin, LOW); } lockButton =digitalRead (LockButtonPin); if(lockButton ==HIGH) // Benutzer hat Lock Betton gedrückt {// Motor in die gesperrte Position drehen myServo.write (120); // LED-Anzeigen einstellen digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HIGH); // Buzz-Locking-Sound digitalWrite (BuzzerPin, HIGH); Verzögerung (1000); digitalWrite (SummerPin, LOW); }}
WinForms-Anwendung - Visual Studio-Projekt (Facebolt Doorlock).zipC#
* Entpacken Sie die ZIP-Datei und öffnen Sie die .sln-Datei in Visual Studio.
* Ändern Sie den Code mit Ihren API-Anmeldeinformationen.
* Führen Sie das Projekt aus.
* Fügen Sie ein vertrauenswürdiges Gesicht hinzu.
* Endlich Gesichtsüberwachung starten.
Keine Vorschau (nur Download).
Bolt IoT Cloud API – Clientbibliothek
Dies ist eine inoffizielle Clientbibliothek, die ich geschrieben habe, um mit der Bolt Cloud API zu kommunizieren. Diese Bibliothek wird in unserer WinForms-Anwendung für die Kommunikation mit dem Bolt WiFi-Modul verwendet.https://github.com/diozz/Bolt-IoT-API-.NET

Schaltpläne

Fritzing-Schaltplan facebolt_doorlock_2RfOtkPW2i.fzz

Herstellungsprozess

  1. 433 MHz Smart Home Controller mit Sensorflare und einem RaspberryPi
  2. Erstellen einer automatisch verriegelnden Bürotür mit Smartphone-Näherungssensor
  3. Schwenk-/Neige-Gesichtsverfolgung mit dem Himbeer-Pi
  4. Smart Barkeeper
  5. Anziehen von Verbindungen mit Drehmomentwerkzeugen
  6. Seien Sie schlau mit Ihrem IoT-Dollar
  7. Sicherheit mit intelligenten Geräten und IoT
  8. Smart Procurement gleicht KI mit HI aus
  9. Smart Door Lock mit WLAN-Anmeldeseite von Arduino &ESP8266
  10. GE Digital:Transformation der Fertigung mit Smart MES