Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Slimme deur met gezichtsontgrendeling

Componenten en benodigdheden

Bolt IoT Bolt WiFi-module
× 1
Arduino UNO
× 1
Zoemer
× 1
Soldeerloze breadboard op ware grootte
× 1
SparkFun Drukknopschakelaar 12 mm
× 2
5 mm LED:rood
× 1
5 mm LED:groen
× 1
Weerstand 10k ohm
× 2
Weerstand 330 ohm
× 2
Jumperdraden (algemeen)
× 1

Benodigde gereedschappen en machines

Hot lijmpistool (algemeen)

Apps en online services

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

Over dit project

Welkom, nieuwsgierige vriend! We leven in een internettijdperk waarin het nu gemakkelijker dan ooit is om te experimenteren en onszelf te innoveren om met briljante ideeën te komen die een positieve impact kunnen hebben op miljoenen mensen over de hele wereld.

Altijd al een beetje extra veiligheid willen toevoegen aan je plank, lades, kasten of deuren thuis? Als het gaat om innovatie met behulp van internet, zijn er onder de duizenden platforms en tools die voor ons beschikbaar zijn, een paar die opvallen Arduino en Bolt IoT . In dit project passen we een standaardplank aan om een ​​beveiligingssysteem te hebben dat ontgrendelt met Gezichtsverificatie. We bouwen een Windows Forms-toepassing in C# die vertrouwde gezichten kan opslaan, verifiëren en ontgrendelen. Het gebruikt FacePlusPlus API voor gezichtsverificatie en Bolt IoT Cloud API voor communicatie met Bolt WiFi-module en Arduino. We zullen de Bolt WiFi-module koppelen aan een Arduino Uno , die een servomotor aanstuurt om de deur te vergrendelen/ontgrendelen.

Opgewonden? Laten we beginnen.

Achtergrond

Ik heb dit project gemaakt als onderdeel van de Innovate Challenge en IoT Training, uitgevoerd door Internshala Trainings. Hun training hielp de basisprincipes van het omgaan met API-services, objectgeoriënteerd programmeren en vooral het gebruik van de Bolt WiFi-module te begrijpen. Een samenvatting van Capstone Project dat als onderdeel van deze training is gedaan, is hier te vinden. Veel van deze concepten kwamen van pas tijdens de ontwikkeling van dit project. Dus een dikke pluim voor het Internshala Team om dit mogelijk te maken.

Stap 1:De software bouwen

We bouwen een Windows Forms-toepassing met behulp van Visual Studio. Deze applicatie draait op een Windows-machine en is verantwoordelijk voor het beheren van geautoriseerde gezichten, het verifiëren van een gezicht met de FacePlusPlus API en de communicatie met de Bolt WiFi-module. We gaan C# gebruiken om te coderen.

Start Visual Studio op en maak een nieuw Windows Forms Application-project. Als Visual Studio helemaal nieuw voor u is, raad ik aan om de basisprincipes van Windows Forms Application Development te leren met behulp van Visual Studio. Dit en dit zijn goede bronnen om aan de slag te gaan.

In deze tutorial zal ik alleen code uitleggen met behulp van fragmenten uit het project dat de belangrijkste en belangrijke functies uitvoert. Het zal vervelend en onnodig zijn om de hele code door te nemen, aangezien het meeste voor zich spreekt en goed gedocumenteerd is.

Ons Visual Studio-project maakt gebruik van 3 bibliotheken voor verschillende doeleinden. Dit zijn:

  • AForge .NET :Een populair .NET-framework dat wordt gebruikt voor beeldverwerking in Windows. We gebruiken het voor het vastleggen van beelden van een webcam.
  • Bolt IoT API .NET :Een onofficiële clientbibliotheek die ik in C# heb geschreven voor het communiceren van de Bolt Cloud API.
  • Newtonsoft JSON :Een populair, krachtig JSON-framework voor .NET. Gebruikt voor het ontleden van API-antwoorden in ons project.

OPMERKING:voor meer duidelijkheid over het gebruik van verschillende methoden in de bovenstaande API's, raadpleegt u hun respectievelijke documentatie hier, hier en hier.

Aan de slag

Voordat we beginnen met coderen, moeten we een paar dingen instellen.

1. Bolt Cloud API-referenties

Als je dat nog niet hebt gedaan, ga dan naar cloud.boltiot.com en maak een account aan. Zodra je bent ingelogd, koppel je je WiFi-module aan de Bolt Cloud. Download daarvoor de Bolt IoT Setup App op je mobiele telefoon. Volg de instructies in de app om je apparaat aan je account te koppelen. Dit houdt in dat de Bolt wordt gekoppeld aan een lokaal wifi-netwerk. Eenmaal succesvol gekoppeld, zal uw dashboard uw apparaat weergeven. U kunt nu uwapparaat-ID . krijgen en en API-sleutel vanaf het dashboard.

2. FacePlusPlus API-referenties

Een andere API-service waarop we in dit project vertrouwen, is FacePlusPlus API . Het is een gratis platform dat verschillende soorten beeldherkenningsdiensten aanbiedt. We gebruiken het voor gezichtsherkenning. Maak een account aan en ga naar de FacePlusPlus-console. Ga naar API-sleutel onder Apps en klik op +API-sleutel ophalen . Noteer de nieuw gegenereerde API-sleutel en API-geheim .

Nu zou u het volgende bij de hand moeten hebben:

privé-lezen-tekenreeks BOLT_DEVICE_ID ="BOLTXXXXXX";privé-lezen-tekenreeks BOLT_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; privé alleen-lezen string FPP_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";privé alleen-lezen string FPP_API_SECRET ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 

We maken een nieuwe globale instantie van de Bolt-klasse genaamd myBolt , waarmee we alle toekomstige communicatie met de WiFi-module zullen doen:

myBolt =nieuwe bout(BOLT_API_KEY, BOLT_DEVICE_ID); 

Dat gezegd hebbende, laten we nu eens kijken hoe onze applicatie enkele van de kernfuncties uitvoert.

1. Deur vergrendelen/ontgrendelen

We hebben de schakeling zo ontworpen dat wanneer digitale pin 0 HOOG is , de deur hoort op slot te gaan, en wanneer digitale pin 3 HOOG is , deur hoort open te staan. Dit zal later duidelijker worden wanneer we de circuitschema's bespreken.

Voor het vergrendelen gebruiken we de DigitalMultiWrite methode van bibliotheek om HIGH te schrijven waarde naar D0 en LAGE waarde naar D3. Dit geeft de Arduino het signaal om de deur te vergrendelen. Op dezelfde manier schrijven we voor het ontgrendelen LOW waarde naar D0 en HOOG waarde naar D3. Dit geeft de Arduino een signaal om de deur te ontgrendelen. We zullen de Arduino-code en het circuitontwerp later in deze tutorial bespreken.

Code die vergrendeling uitvoert:

private asynchrone Taak LockDoor(){ MultiPinConfig multiPinConfig =new MultiPinConfig(); MultiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.High); //Signaal vergrendelen multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Ontgrendel signaal wacht op myBolt.DigitalMultiWrite (multiPinConfig); multiPinConfig =nieuwe MultiPinConfig(); multiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.Low); //Signaal vergrendelen multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Ontgrendel signaal wacht op myBolt.DigitalMultiWrite (multiPinConfig);} 

Code die ontgrendeling uitvoert:

private async Taak UnlockDoor(){ MultiPinConfig multiPinConfig =new MultiPinConfig(); multiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.Low); //Signaal vergrendelen multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.High); // Ontgrendel signaal wacht op myBolt.DigitalMultiWrite (multiPinConfig); multiPinConfig =nieuwe MultiPinConfig(); multiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.Low); //Signaal vergrendelen multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Ontgrendel signaal wacht op myBolt.DigitalMultiWrite (multiPinConfig);} 

2. Vertrouwde gezichten toevoegen/verwijderen

De afbeeldingsgegevens van het vertrouwde gezicht zijn gecodeerd in een Base64-tekenreeks en worden lokaal op de machine opgeslagen. Er wordt ook een lijst met bijbehorende namen van elk gezicht opgeslagen. Om een ​​gezicht toe te voegen, controleren we in ons programma eerst of er een gezicht beschikbaar is in het huidige frame. Dit doen wij met behulp van de Detect API van FacePlusPlus. Het retourneert een JSON-antwoord dat kenmerken van het gedetecteerde gezicht bevat. Als er geen gezicht wordt gedetecteerd, is het antwoord gewoon [] . Zodra een gezicht is gedetecteerd, slaan we de met base64 gecodeerde tekenreeks en de bijbehorende naam van de afbeelding op. Hier is een videodemo over het toevoegen van een vertrouwd gezicht.

Het verwijderen van een gezicht is vrij eenvoudig. Als u op de verwijderknop drukt, worden de afbeeldingsgegevens en de naam uit de opgeslagen lijst verwijderd.

Code die de gezichtsinformatie toevoegt en opslaat:

//Afbeelding converteren naar base64-tekenreeks en toevoegen aan de lijst. ImageDataList.Add(ImageToBase64((Image)PreviewBox.Image.Clone()));//Naam van het gezicht toevoegen aan de listNameList.Add(FaceNameTextBox.Text.Trim()); // Slaat de gezichtsafbeeldingsgegevens op als een basisgecodeerde tekenreeks, samen met de naamProperties.Settings.Default.Base64ImageData =ImageDataList;Properties.Settings.Default.FaceNames =NameList;Properties.Settings.Default.Save(); 

Code die gezichtsinformatie verwijdert:

// Gezichtsinformatie verwijderen op gespecificeerde positie in de listNameList.RemoveAt(e.RowIndex);ImageDataList.RemoveAt(e.RowIndex); // De lijst opslaan na het verwijderen van een faceProperties.Settings.Default.FaceNames =NameList;Properties.Settings.Default.Base64ImageData =ImageDataList;Properties.Settings.Default.Save(); 

Bekijk de code in het bijgevoegde project waar het proces wordt uitgelegd als opmerkingen in elke regel voor een duidelijk idee.

3. Gezichtsverificatie

We verifiëren of een gezicht vertrouwd is of niet door gebruik te maken van de Compare API in FacePlusPlus. Tijdens dit proces doorlopen we lineair elk gezicht in de opgeslagen lijst en vergelijken het met de vastgelegde afbeelding. Als de API een betrouwbaarheid van meer dan 80% oplevert, openen we de deur.

De code die deze vergelijking doet, ziet er ongeveer zo uit:

WebClient-client =nieuwe 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 trust =JObject.Parse(System.Text.Encoding.UTF8.GetString(response))["vertrouwen"].ToString(); 

WebClient.UploadValues methode stuurt het verzoek naar FacePlusPlus API samen met de base64-gecodeerde gezichtsgegevens van twee te vergelijken gezichten en onze API-referenties. Het antwoord wordt geparseerd met behulp van Newtonsoft JSON bibliotheek en vertrouwen waarde wordt verkregen. Lees de Compare API-documentatie om de argumenten duidelijk te begrijpen.

4. De bel-luisterdraad

We zijn van plan om een ​​fysieke drukknop te bieden, zoiets als een belknop, zodat de gebruiker kan drukken terwijl hij naar de camera kijkt om de deur te ontgrendelen. Om dit mogelijk te maken, moeten we een nieuwe speciale thread maken die continu luistert naar het indrukken van een belknop.

Later in deze tutorial zullen we zien hoe de drukknop wordt gebruikt en hoe de D4-pin van de Bolt WiFi-module HIGH wordt. wanneer de knop wordt ingedrukt. Voor nu gaan we uit van het bovenstaande. Dus in deze thread, we continu DigitalRead de waarde van D4-pin. Als het HOOG is , we nemen dat als een belsignaal en doen de gezichtsopname en -verificatie.

Dit is de code die continu wordt uitgevoerd op de bel-luisterthread:

terwijl (ListenForBell){ Response R =wacht op myBolt.DigitalRead(DigitalPins.D4); if (R.Value =="1") { RingBell_Click (null, null); Draad.Slaap (2000); } Thread.Sleep(2000);} 

We stoppen en wachten 2 seconden tussen elke iteratie. Anders raakt het gebruiksquotum van Bolt Cloud API snel uitgeput.

Stap 2:Het Visual Studio-project bouwen

Download het hele project hier . Open de Facebolt Doorlock.sln bestand in Visual Studio. Nadat de oplossing is geladen, opent u Form1.cs bestand en update de code met uw API-inloggegevens. Druk op de groene afspeelknop genaamd 'Start' om het programma te bouwen en uit te voeren.

Met het programma kunt u kiezen uit camera-apparaten die op het systeem zijn aangesloten en een live feed van de camera bekijken. U kunt een vertrouwd gezicht toevoegen/verwijderen. Begin met gezichtsmonitoring. Zodra het programma de connectiviteit van uw Bolt Device heeft geverifieerd, kunt u aanbellen of de deur direct vanuit het programma vergrendelen.

Het is prima als je nu in de war bent over hoe gezichtsverificatie, vergrendeling en ontgrendeling in het programma werken. Het zal duidelijker worden zodra we het schematische ontwerp van het circuit en de Arduino-code zien. Ik zal aan het eind ook de stroom van gebeurtenissen van elke operatie opsplitsen.

Stap 3:Circuitontwerp en Arduino-code

In ons circuit zijn we van plan de volgende functies te implementeren:

  • Rode en groene LED-indicatie voor respectievelijk vergrendelde en ontgrendelde deurstatussen.
  • Een drukknop die fungeert als een belschakelaar. Wanneer erop wordt gedrukt, moet onze WinForms-toepassing het gezicht verifiëren en de deur openen na succesvolle gezichtsverificatie.
  • Nog een drukknop om de deur op slot te doen.
  • Een zoemer die piept bij een deurbel en deurslot.

De circuitaansluiting van ons project wordt hieronder weergegeven:

Als je dat nog niet hebt gedaan, download dan de Arduino IDE van hier en sluit je Arduino aan op het systeem. Zorg ervoor dat je het juiste Arduino-model en de juiste poort hebt ingesteld in de IDE-instellingen, voordat je de code uploadt.

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 ServoPin mijnServo; void setup () { pinMode (LockSignalPin, INPUT); pinMode (UnLockSignalPin, INPUT); pinMode (BellButtonPin, INPUT); pinMode (LockButtonPin, INPUT); pinMode (BuzzerPin, UITGANG); pinMode (RedLedPin, UITGANG); pinMode (GreenLedPin, UITGANG); pinMode (RingBellSignalPin, UITGANG); digitalWrite (RedLedPin, LAAG); digitalWrite (GreenLedPin, LAAG); digitalWrite (RingBellSignalPin, LAAG); mijnServo.attach(ServoPin); Serial.begin(9600);} void loop() { int lockButton, lock, unlock, bell; char snum [5]; lock =digitalRead (LockSignalPin); unlock =digitalRead (UnLockSignalPin); // Controleer of het vergrendelingssignaal van Bolt HOOG is if (lock ==HOOG) { // Draai de motor naar de vergrendelde positie myServo.write (120); // Set LED-indicaties digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HOOG); // Buzz-vergrendelingsgeluid digitalWrite (BuzzerPin, HIGH); vertraging (1000); digitalWrite (BuzzerPin, LAAG); vertraging (1000); } // Controleer of het ontgrendelingssignaal van Bolt HOOG is anders if (ontgrendelen ==HOOG) { // Draai de motor naar de ontgrendelde positie myServo.write (0); // Set LED-indicaties digitalWrite (GreenLedPin, HIGH); digitalWrite (RedLedPin, LAAG); vertraging (2000); } bel =digitalRead (BellButtonPin); if (bell ==HIGH) // Gebruiker heeft op bell ring betton gedrukt { // Signaalbout die ringknop is ingedrukt digitalWrite (RingBellSignalPin, HIGH); // Een bellend belgeluidspatroon! digitalWrite (BuzzerPin, HOOG); vertraging (100); digitalWrite (BuzzerPin, LAAG); vertraging(20); digitalWrite (BuzzerPin, HOOG); vertraging (200); digitalWrite (BuzzerPin, LAAG); vertraging (100); digitalWrite (BuzzerPin, HOOG); vertraging (100); digitalWrite (BuzzerPin, LAAG); vertraging(20); digitalWrite (BuzzerPin, HOOG); vertraging (200); digitalWrite (BuzzerPin, LAAG); vertraging (1500); // Schakel het signaal digitalWrite uit (RingBellSignalPin, LOW); } lockButton =digitalRead (LockButtonPin); if (lockButton ==HIGH) // Gebruiker drukte op lock betton { // Draai de motor naar de vergrendelde positie myServo.write (120); // Set LED-indicaties digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HOOG); // Buzz-vergrendelingsgeluid digitalWrite (BuzzerPin, HIGH); vertraging (1000); digitalWrite (BuzzerPin, LAAG); }} 

Gebeurtenisstromen

Nu we zowel de WinForm-toepassing als het Arduino-ontwerp gereed hebben, duiken we in de code en onderzoeken we de controlestroom van elke bewerking.

1. Bel Knop indrukken

2. Vergrendelen Knop indrukken

Beide bovenstaande bewerkingen kunnen ook rechtstreeks vanuit de Windows Forms-toepassing worden uitgevoerd.

Hier kunnen we zien dat de Bolt WiFi-module dient als een belangrijke draadloze interface tussen de Windows Forms-toepassing en de Arduino. Door de Bolt Cloud API te gebruiken, kunnen we ons project uitbreiden en applicaties bouwen op andere platforms zoals Android en de deur ontgrendelen met onze telefoons! Deze flexibiliteit is de kracht van IoT en het Bolt Platform.

Nu we het softwareontwerpgedeelte hebben voltooid, gaan we verder met het bouwen van een afsluitbaar deurmechanisme.

Stap 4:De hardware bouwen

Ik heb een schoenenrek rondslingeren, dus in dit project ga ik het gebruiken voor slotdemonstratie. Je kunt een plank of een deur of een kledingkast gebruiken of iets anders dat een hackbaar sluitmechanisme heeft. Het is echt aan jou.

We moeten een koppelmechanisme bouwen dat onze servomotor met het slot verbindt. Hiervoor is mijn idee om een ​​afgesneden hals van een fles en een andere dop van een fles te gebruiken. Bevestig de flessenhals aan de servomotor en de dop aan het slot. We koppelen ze dan met een nylondraad. Dit resulteert in de vergrendel-/ontgrendelactie wanneer de motor draait.

De vereiste flessenhals met een geboord gat in de dop ziet er ongeveer uit zoals hieronder weergegeven. We bevestigen dit aan de vergrendelingsschacht van het schoenenrek.

Op de servomotor moet nog een flesdop worden bevestigd. We gebruiken koperdraden om de kap te verbinden met de draaiende as van de motor.

Nu moeten we deze twee koppelen. Daarvoor gebruiken we nylondraad. Maak een lus met de draad met de gewenste lengte en bevestig de draad aan beide doppen.

Eenmaal gekoppeld, kunnen ze een wederzijdse roterende actie veroorzaken:

Nu we ons draaimechanisme klaar hebben, is het tijd om het slot te hacken en onze flessenhals erin te fixeren. We hadden er een gat in geboord, dus het enige wat we hoeven te doen is de vergrendelingsschacht van het rek los te schroeven, de flessenhals erboven te plaatsen en het slot weer vast te schroeven.

Nu alleen nog de servomotor aan het schoenenrek bevestigen. We gebruiken een heet lijmpistool om de motor op het rek af te dichten.

Na het aanpassen van de lengte van de draad en het voldoende aandraaien, hebben we onze definitieve opstelling klaar. Zoals hieronder te zien is, kan de servomotor de deur correct vergrendelen en ontgrendelen!

U hoeft niet per se de bottleneck-thread-methode voor koppeling te gebruiken. Gebruik de methode die het meest geschikt en handig is voor uw sluitsysteem.

Gelukkig had ik een kleine opening op de goede plek in het rek. hierdoor kon ik de servomotoraansluitingen gemakkelijk verwijderen. Na wat decoratiewerk en etikettering is ons laatste slimme schoenenrek nu klaar voor actie.

We zijn er nu helemaal klaar voor. Het enige dat u nog hoeft te doen, is het circuit opstarten, een vertrouwd gezicht toevoegen aan de WinForms-toepassing en genieten van de gezichtsvergrendeling op onze deuren. U moet zowel de Arduino als de Bolt WiFi-module van stroom voorzien. Ik gebruik een powerbank van 10.000 mAh om ze allebei van stroom te voorzien. De WebCam die ik gebruik is een Microsoft LifeCam VX-800. Het is oud, maar nog steeds beter dan de camera van de laptop. Bekijk zeker de demonstratievideo. Het toont de werking van ons project in detail.

De videodemonstratie

Bekijk ons ​​project in actie (excuses voor de videokwaliteit):

Conclusie

Huff.. dat was best lang. Dit project is het resultaat van Internshala's IoT-training, mogelijk gemaakt door Bolt IoT. Hoewel dit project vrij eenvoudig is, toont het ons het potentieel van Internet of Things en hoe het het dagelijkse leven van mensen gemakkelijker kan maken.

Hoe dan ook.. Dit was een geweldige leerervaring voor mij. Ik hoop dat jullie het leuk vinden om dit te bouwen en ik ben benieuwd met welke nieuwe innovaties jullie komen. Ik sluit af met het uitspreken van mijn oprechte dank aan het trainingsteam van Internshala en Bolt IoT voor het mogelijk maken van deze onderneming.

En dat is een wrap!

Code

  • BoltDoorLock.ino
  • WinForms-toepassing - Visual Studio-project (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 GreenLedo myServoPin 9#define RedLedPin 9#define RedLedPin; ongeldige setup () { pinMode (LockSignalPin, INPUT); pinMode (UnLockSignalPin, INPUT); pinMode (BellButtonPin, INPUT); pinMode (LockButtonPin, INPUT); pinMode (BuzzerPin, UITGANG); pinMode (RedLedPin, UITGANG); pinMode (GreenLedPin, UITGANG); pinMode (RingBellSignalPin, UITGANG); digitalWrite (RedLedPin, LAAG); digitalWrite (GreenLedPin, LAAG); digitalWrite (RingBellSignalPin, LAAG); mijnServo.attach(ServoPin); Serial.begin(9600);}void loop() { int lockButton, lock, unlock, bell; char snum [5]; lock =digitalRead (LockSignalPin); unlock =digitalRead (UnLockSignalPin); // Controleer of het vergrendelingssignaal van Bolt HOOG is if (lock ==HOOG) { // Draai de motor naar de vergrendelde positie myServo.write (120); // Set LED-indicaties digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HOOG); // Buzz-vergrendelingsgeluid digitalWrite (BuzzerPin, HIGH); vertraging (1000); digitalWrite (BuzzerPin, LAAG); vertraging (1000); } // Controleer of het ontgrendelingssignaal van Bolt HOOG is anders if (ontgrendelen ==HOOG) { // Draai de motor naar de ontgrendelde positie myServo.write (0); // Set LED-indicaties digitalWrite (GreenLedPin, HIGH); digitalWrite (RedLedPin, LAAG); vertraging (2000); } bel =digitalRead (BellButtonPin); if (bell ==HIGH) // Gebruiker heeft op bell ring betton gedrukt { // Signaalbout die ringknop is ingedrukt digitalWrite (RingBellSignalPin, HIGH); // Een bellend belgeluidspatroon! digitalWrite (BuzzerPin, HOOG); vertraging (100); digitalWrite (BuzzerPin, LAAG); vertraging(20); digitalWrite (BuzzerPin, HOOG); vertraging (200); digitalWrite (BuzzerPin, LAAG); vertraging (100); digitalWrite (BuzzerPin, HOOG); vertraging (100); digitalWrite (BuzzerPin, LAAG); vertraging(20); digitalWrite (BuzzerPin, HOOG); vertraging (200); digitalWrite (BuzzerPin, LAAG); vertraging (1500); // Schakel het signaal digitalWrite uit (RingBellSignalPin, LOW); } lockButton =digitalRead (LockButtonPin); if (lockButton ==HIGH) // Gebruiker drukte op lock betton { // Draai de motor naar de vergrendelde positie myServo.write (120); // Set LED-indicaties digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HOOG); // Buzz-vergrendelingsgeluid digitalWrite (BuzzerPin, HIGH); vertraging (1000); digitalWrite (BuzzerPin, LAAG); }}
WinForms-toepassing - Visual Studio-project (Facebolt Doorlock).zipC#
* Pak het zip-bestand uit en open het .sln-bestand in Visual Studio.
* Wijzig de code met uw API-inloggegevens.
* Voer het project uit.
* Voeg een vertrouwd gezicht toe.
* Eindelijk, start gezichtsbewaking.
Geen voorbeeld (alleen downloaden).
Bolt IoT Cloud API - Clientbibliotheek
Dit is een niet-officiële clientbibliotheek die ik heb geschreven voor communicatie met de Bolt Cloud API. Deze bibliotheek wordt gebruikt in onze WinForms-toepassing voor communicatie met de Bolt WiFi-module.https://github.com/diozz/Bolt-IoT-API-.NET

Schema's

Fritzing Circuit Schema facebolt_doorlock_2RfOtkPW2i.fzz

Productieproces

  1. 433MHz Smart Home Controller met Sensorflare en een RaspberryPi
  2. Maak een automatisch sluitende kantoordeur met smartphone-nabijheidssensor
  3. Pan / Tilt face-tracking met de raspberry pi
  4. Slimme barman
  5. Verbindingen aanspannen met momentsleutels
  6. Wees slim met uw IoT-dollar
  7. Veilig blijven met slimme apparaten en IoT
  8. Smart Procurement balanceert AI met HI
  9. Slim deurslot met WiFi-aanmeldingspagina door Arduino &ESP8266
  10. GE Digital:productie transformeren met Smart MES
  11. Wat is een dagschoot?