Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Puerta inteligente con desbloqueo facial

Componentes y suministros

Módulo WiFi Bolt IoT Bolt
× 1
Arduino UNO
× 1
Buzzer
× 1
Protoboard sin soldadura de tamaño completo
× 1
Interruptor de botón SparkFun de 12 mm
× 2
LED de 5 mm:rojo
× 1
LED de 5 mm:verde
× 1
Resistencia de 10k ohmios
× 2
Resistencia de 330 ohmios
× 2
Cables de puente (genéricos)
× 1

Herramientas y máquinas necesarias

Pistola de pegamento caliente (genérica)

Aplicaciones y servicios en línea

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

Acerca de este proyecto

¡Bienvenido, amigo curioso! Vivimos en una era revolucionada por Internet en la que ahora es más fácil que nunca experimentar e innovar para generar ideas brillantes que puedan tener un impacto positivo en millones de personas en todo el mundo.

¿Alguna vez quiso agregar un poco de seguridad adicional a su estante, cajones, armarios o puertas de su hogar? Cuando se trata de innovación a través de Internet, entre las miles de plataformas y herramientas que tenemos a nuestra disposición, un par que se destaca son Arduino y Bolt IoT . En este proyecto, modificaremos un estante estándar para tener un sistema de seguridad que se desbloquee mediante Verificación facial. Crearemos una aplicación de Windows Forms en C # que puede almacenar, verificar y desbloquear rostros de confianza. Utiliza FacePlusPlus API para verificación facial y Bolt IoT Cloud API para comunicarse con el módulo WiFi Bolt y Arduino. Conectaremos el módulo WiFi Bolt con un Arduino Uno , que controlará un servomotor para bloquear / desbloquear la puerta.

¿Entusiasmado? Empecemos.

Antecedentes

Hice este proyecto como parte del Innovate Challenge y IoT Training, dirigido por Internshala Trainings. Su capacitación ayudó a comprender los conceptos básicos del manejo de los servicios API, la programación orientada a objetos y, lo que es más importante, el uso del módulo WiFi de Bolt. Puede encontrar una sinopsis del Proyecto Capstone realizado como parte de esta capacitación aquí. Muchos de estos conceptos resultaron útiles durante el desarrollo de este proyecto. Así que un gran agradecimiento al equipo de Internshala por hacer esto posible.

Paso 1:compilación del software

Construiremos una aplicación de Windows Forms usando Visual Studio. Esta aplicación se ejecuta en una máquina con Windows y será responsable de administrar los rostros autorizados, verificar un rostro mediante la API FacePlusPlus y comunicarse con el módulo WiFi de Bolt. Usaremos C # para codificar.

Inicie Visual Studio y cree un nuevo proyecto de aplicación de Windows Forms. Si es completamente nuevo en Visual Studio, le recomiendo que aprenda los conceptos básicos del desarrollo de aplicaciones de Windows Forms con Visual Studio. Este y este son buenos recursos para comenzar.

En este tutorial, solo explicaré el código usando fragmentos del proyecto que realiza funciones principales e importantes. Será tedioso e innecesario revisar todo el código, ya que la mayor parte se explica por sí mismo y está bien documentado.

Nuestro proyecto de Visual Studio utiliza 3 bibliotecas para diversos fines. Ellos son:

  • AForge .NET :Un marco .NET popular utilizado para el procesamiento de imágenes en Windows. Lo usamos para capturar imágenes desde una cámara web.
  • Bolt IoT API .NET :Una biblioteca cliente no oficial que escribí en C #, para comunicar la API de Bolt Cloud.
  • Newtonsoft JSON :Un marco JSON de alto rendimiento popular para .NET. Se utiliza para analizar las respuestas de la API en nuestro proyecto.

NOTA:Para mayor claridad en el uso de diferentes métodos en las API anteriores, consulte sus respectivas documentaciones aquí, aquí y aquí.

Comenzando

Antes de pasar a la codificación, debemos configurar algunas cosas.

1. Credenciales de la API de Bolt Cloud

Si aún no lo ha hecho, vaya a cloud.boltiot.com y configure una cuenta. Una vez que haya iniciado sesión, vincule su módulo WiFi con Bolt Cloud. Para eso, descargue la aplicación Bolt IoT Setup en su teléfono móvil. Siga las instrucciones dadas en la aplicación para vincular su dispositivo con su cuenta. Esto implica emparejar el Bolt con la red WiFi local. Una vez vinculado correctamente, su panel mostrará su dispositivo. Ahora puede obtener su ID de dispositivo y Clave API desde el tablero.

2. Credenciales de la API FacePlusPlus

Otro servicio de API en el que confiamos en este proyecto es FacePlusPlus API . Es una plataforma gratuita que ofrece varios tipos de servicios de reconocimiento de imágenes. Lo usamos para identificación facial. Crea una cuenta y ve a la consola FacePlusPlus. Vaya a API Key en Aplicaciones y haga clic en + Get API Key . Anote la clave API recién generada y API secreto .

Ahora debería tener lo siguiente listo:

  cadena privada de solo lectura BOLT_DEVICE_ID ="BOLTXXXXXX"; cadena privada de solo lectura BOLT_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; cadena privada de solo lectura FPP_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; cadena privada de solo lectura FPP_API_SECRET ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXX";  

Creamos una nueva instancia global de la clase Bolt llamada myBolt , a través del cual haremos todas las comunicaciones futuras con el Módulo WiFi:

  myBolt =new Bolt (BOLT_API_KEY, BOLT_DEVICE_ID);  

Dicho esto, ahora veamos cómo nuestra aplicación realiza algunas de las funciones principales.

1. Bloquear / desbloquear la puerta

Hemos diseñado el circuito de modo que cuando el Pin digital 0 sea HIGH , se supone que la puerta debe bloquearse, y cuando el Pin digital 3 es HIGH , se supone que la puerta debe estar desbloqueada. Esto se aclarará más adelante cuando analicemos los esquemas del circuito.

Para bloquear, usamos el DigitalMultiWrite método de la biblioteca para escribir HIGH valor a D0 y valor LOW a D3. Esto le indicará al Arduino que cierre la puerta. De manera similar, para el desbloqueo, escribiremos LOW valor a D0 y HIGH valor a D3. Esto le indicará al Arduino que desbloquee la puerta. Discutiremos el código Arduino y el diseño de circuitos más adelante en este tutorial.

Código que realiza el bloqueo:

  Tarea privada asincrónica LockDoor () {MultiPinConfig multiPinConfig =new MultiPinConfig (); MultiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.High); // Bloquear señal multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Desbloquear la señal aguarda myBolt.DigitalMultiWrite (multiPinConfig); multiPinConfig =new MultiPinConfig (); multiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.Low); // Bloquear señal multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Desbloquear la señal aguarda myBolt.DigitalMultiWrite (multiPinConfig);}  

Código que realiza el desbloqueo:

  Tarea privada asíncrona UnlockDoor () {MultiPinConfig multiPinConfig =new MultiPinConfig (); multiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.Low); // Bloquear señal multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.High); // Desbloquear la señal aguarda myBolt.DigitalMultiWrite (multiPinConfig); multiPinConfig =new MultiPinConfig (); multiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.Low); // Bloquear señal multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Desbloquear la señal aguarda myBolt.DigitalMultiWrite (multiPinConfig);}  

2. Agregar o quitar caras de confianza

Los datos de la imagen de la cara de confianza se codifican en una cadena Base64 y se almacenan localmente en la máquina. También se almacena una lista de los nombres correspondientes de cada rostro. En nuestro programa, para agregar una cara, primero verificamos si hay una cara disponible en el marco actual. Hacemos esto utilizando la API de detección de FacePlusPlus. Devuelve una respuesta JSON que contendrá características del rostro detectado. Si no se detecta ningún rostro, la respuesta será simplemente [] . Una vez que se detecta una cara, guardamos la cadena codificada en base64 de la imagen y el nombre correspondiente. Aquí hay una demostración en video de cómo agregar una cara de confianza.

Eliminar una cara es bastante sencillo. Al presionar el botón Eliminar, se eliminarán los datos y el nombre de la imagen de la lista guardada.

Código que agrega y guarda la información de la cara:

  // Convertir imagen a cadena base64 y agregarla a la lista. ImageDataList.Add (ImageToBase64 ((Image) PreviewBox.Image.Clone ())); // Añadiendo el nombre de la cara a listNameList.Add (FaceNameTextBox.Text.Trim ()); // Guarda los datos de la imagen de la cara como una cadena codificada base, junto con su nombreProperties.Settings.Default.Base64ImageData =ImageDataList; Properties.Settings.Default.FaceNames =NameList; Properties.Settings.Default.Save ();  

Código que elimina la información de un rostro:

  // Eliminando información facial en la posición especificada en listNameList.RemoveAt (e.RowIndex); ImageDataList.RemoveAt (e.RowIndex); // Guardar la lista después de eliminar un faceProperties.Settings.Default.FaceNames =NameList; Properties.Settings.Default.Base64ImageData =ImageDataList; Properties.Settings.Default.Save ();  

Consulte el código en el proyecto adjunto donde se explica el proceso como comentarios en cada línea para tener una idea clara.

3. Verificación facial

Verificamos si una cara es confiable o no mediante el uso de la API de comparación en FacePlusPlus. Durante este proceso, iteramos linealmente a través de cada cara en la lista guardada y la comparamos con la imagen capturada. Si la API arroja una confianza de más del 80%, desbloquearemos la puerta.

El código que hace esta comparación se parece a esto:

  Cliente WebClient =new 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}});}); cadena de confianza =JObject.Parse (System.Text.Encoding.UTF8.GetString (respuesta)) ["confianza"]. ToString ();  

WebClient.UploadValues ​​ El método envía la solicitud a la API FacePlusPlus junto con los datos faciales codificados en base64 de dos caras que se van a comparar y nuestras credenciales API. La respuesta se analiza con Newtonsoft JSON biblioteca y confianza se obtiene el valor. Lea la documentación de la API de comparación para comprender los argumentos con claridad.

4. The Bell Listening Thread

Planeamos proporcionar un botón físico, algo así como un botón de timbre de llamada, para que el usuario pueda presionar mientras mira a la cámara para desbloquear la puerta. Para que esto sea posible, necesitamos crear un nuevo hilo dedicado que escuche continuamente el evento de presionar el botón de la campana.

Más adelante en este tutorial, veremos cómo se emplea el botón pulsador y cómo hará que el pin D4 del módulo WiFi Bolt HIGH cuando se presiona el botón. Por ahora, asumiremos lo anterior. Entonces, en este hilo, continuamente DigitalRead el valor del pin D4. Si es HIGH , lo tomaremos como un evento de campana y haremos la captura y verificación del rostro.

Aquí está el código que se ejecutará continuamente en el hilo de escucha de Bell:

  while (ListenForBell) {Respuesta R =aguardar myBolt.DigitalRead (DigitalPins.D4); if (R.Value =="1") {RingBell_Click (nulo, nulo); Thread.Sleep (2000); } Thread.Sleep (2000);}  

Nos detenemos y esperamos 2 segundos entre cada iteración. De lo contrario, agotará rápidamente la cuota de uso de la API de Bolt Cloud.

Paso 2:compilar el proyecto de Visual Studio

Descarga el proyecto completo aquí . Abra el Facebolt Doorlock.sln archivo en Visual Studio. Después de que se cargue la solución, abra Form1.cs archivo y actualice el código con sus credenciales de API. Presione el botón de reproducción verde llamado 'Inicio', para construir y ejecutar el programa.

El programa le permite seleccionar dispositivos de cámara conectados al sistema y ver una transmisión en vivo de la cámara. Puede Agregar o quitar una cara de confianza. Inicie la monitorización facial. Una vez que el programa verifica la conectividad de su dispositivo Bolt, puede tocar el timbre o bloquear la puerta directamente desde el programa.

Está bien si ahora está confundido sobre cómo funciona la verificación facial, el bloqueo y el desbloqueo en el programa. Se volverá más claro una vez que veamos el diseño esquemático del circuito y el código Arduino. También desglosaré el flujo de eventos de cada operación al final.

Paso 3:Diseño de circuitos y código Arduino

En nuestro circuito, pretendemos implementar las siguientes características:

  • Indicación LED roja y verde para estados de puerta bloqueada y desbloqueada, respectivamente.
  • Un botón pulsador para actuar como un interruptor de timbre de llamada. Cuando se presiona, nuestra aplicación WinForms debe verificar el rostro y la puerta abierta después de una autenticación facial exitosa.
  • Otro botón para bloquear la puerta.
  • Un zumbador que suena en caso de que suene el timbre y se bloquee la puerta.

La conexión del circuito de nuestro proyecto se muestra a continuación:

Si aún no lo ha hecho, descargue el IDE de Arduino desde aquí y conecte su Arduino al sistema. Asegúrese de haber configurado el modelo y el puerto de Arduino correctos en la configuración IDE, antes de cargar el código.

Código Arduino:

  #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 myServo; configuración vacía () {pinMode (LockSignalPin, INPUT); pinMode (UnLockSignalPin, ENTRADA); pinMode (BellButtonPin, ENTRADA); pinMode (LockButtonPin, INPUT); pinMode (BuzzerPin, SALIDA); pinMode (RedLedPin, SALIDA); pinMode (GreenLedPin, SALIDA); pinMode (RingBellSignalPin, SALIDA); digitalWrite (RedLedPin, BAJO); digitalWrite (GreenLedPin, BAJO); digitalWrite (RingBellSignalPin, BAJO); myServo.attach (ServoPin); Serial.begin (9600);} void loop () {int lockButton, bloquear, desbloquear, timbre; char snum [5]; lock =digitalRead (LockSignalPin); desbloquear =digitalRead (UnLockSignalPin); // Compruebe si la señal de bloqueo de Bolt es ALTA if (lock ==HIGH) {// Gire el motor a la posición bloqueada myServo.write (120); // Establecer las indicaciones de los LED digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, ALTO); // Sonido de bloqueo de zumbido digitalWrite (BuzzerPin, HIGH); retraso (1000); digitalWrite (BuzzerPin, BAJO); retraso (1000); } // Compruebe si la señal de desbloqueo de Bolt es ALTA else if (unlock ==HIGH) {// Gire el motor a la posición desbloqueada myServo.write (0); // Establecer las indicaciones de los LED digitalWrite (GreenLedPin, HIGH); digitalWrite (RedLedPin, BAJO); retraso (2000); } campana =digitalRead (BellButtonPin); if (campana ==ALTA) // El usuario presionó el timbre antes del timbre {// Perno de señal de que se presionó el botón de timbre digitalWrite (RingBellSignalPin, HIGH); // ¡Un patrón de sonido de campana de llamada! digitalWrite (BuzzerPin, ALTO); retraso (100); digitalWrite (BuzzerPin, BAJO); retraso (20); digitalWrite (BuzzerPin, ALTO); retraso (200); digitalWrite (BuzzerPin, BAJO); retraso (100); digitalWrite (BuzzerPin, ALTO); retraso (100); digitalWrite (BuzzerPin, BAJO); retraso (20); digitalWrite (BuzzerPin, ALTO); retraso (200); digitalWrite (BuzzerPin, BAJO); retraso (1500); // Apaga la señal digitalWrite (RingBellSignalPin, LOW); } lockButton =digitalRead (LockButtonPin); if (lockButton ==HIGH) // El usuario presionó lock betton {// Gire el motor a la posición bloqueada myServo.write (120); // Establecer las indicaciones de los LED digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, ALTO); // Sonido de bloqueo de zumbido digitalWrite (BuzzerPin, HIGH); retraso (1000); digitalWrite (BuzzerPin, BAJO); }}  

Flujos de eventos

Ahora que tenemos listos tanto la aplicación WinForm como el diseño de Arduino, profundicemos en el código y exploremos el flujo de control de cada operación.

1. Anillo Pulsación de botón

2. Bloquear Pulsación de botón

Ambas operaciones anteriores también se pueden ejecutar directamente desde la aplicación Windows Forms.

Aquí podemos observar que el Módulo WiFi Bolt sirve como una interfaz inalámbrica importante entre la aplicación Windows Forms y Arduino. ¡El uso de Bolt Cloud API nos permite extender nuestro proyecto y crear aplicaciones en otras plataformas como Android y abrir la puerta usando nuestros teléfonos! Esta flexibilidad es el poder de IoT y la plataforma Bolt.

Ahora que hemos completado la parte de diseño del software, sigamos adelante y construyamos un mecanismo de puerta con cerradura.

Paso 4:construcción del hardware

Tengo un zapatero por ahí, así que en este proyecto, lo usaré para la demostración de cerraduras. Puede usar un estante o una puerta o un armario o cualquier cosa que tenga un mecanismo de bloqueo pirateable. Realmente depende de ti.

Necesitamos construir un mecanismo de acoplamiento que conecte nuestro servomotor con la cerradura. Para esto, mi idea es usar un cuello cortado de una botella y la tapa de otra botella. Coloque el cuello de la botella en el servomotor y la tapa en la cerradura. Luego, los acoplaremos con un hilo de nailon. Esto dará como resultado la acción de bloqueo / desbloqueo cada vez que el motor gira.

El cuello de botella requerido con un orificio perforado en la tapa se parece a lo que se muestra a continuación. Lo colocaremos en el eje de bloqueo del zapatero.

Se debe colocar la tapa de otra botella en el servomotor. Usamos cables de cobre para conectar la tapa al eje de giro del motor.

Ahora tenemos que acoplar estos dos. Para eso usamos hilo de nailon. Haga un bucle usando el hilo con la longitud requerida y adjunte el hilo a ambas tapas.

Una vez acoplados, pueden provocar una acción de rotación mutua:

Ahora que tenemos nuestro mecanismo de giro listo, es hora de abrir la cerradura y fijar nuestro cuello de botella en ella. Habíamos perforado un agujero, así que todo lo que tenemos que hacer es desatornillar el eje de bloqueo de la rejilla, colocar el cuello de la botella encima y volver a atornillar la cerradura con fuerza.

Ahora lo único que queda por hacer es fijar el servomotor al zapatero. Usaremos una pistola de pegamento caliente para sellar el motor a la rejilla.

Después de ajustar la longitud del hilo y apretarlo lo suficiente, tenemos nuestra configuración final lista. Como se ve a continuación, el servomotor puede bloquear y desbloquear correctamente la puerta.

No es necesario que utilice el método de acoplamiento cuello de botella - rosca. Utilice el método que sea más adecuado y conveniente con su sistema de bloqueo.

Afortunadamente, tenía una pequeña abertura en el lugar correcto del estante. esto me permitió sacar las conexiones del servomotor fácilmente. Después de un poco de trabajo de decoración y etiquetado, nuestro último zapatero inteligente ya está listo para la acción.

Ya estamos listos. Todo lo que queda por hacer es encender el circuito, agregar una cara de confianza en la aplicación WinForms y disfrutar de la seguridad de bloqueo de caras en nuestras puertas. Deberá alimentar tanto el módulo WiFi Arduino como el Bolt. Utilizo un banco de energía de 10000 mAh para alimentarlos a ambos. La WebCam que utilizo es una Microsoft LifeCam VX-800. Es viejo pero aún mejor que la cámara de la computadora portátil. Mira el video de demostración. Muestra el funcionamiento de nuestro proyecto en detalle.

La demostración en video

Mira nuestro proyecto en acción (disculpas por la calidad del video):

Conclusión

Huff ... eso fue bastante largo. Este proyecto es fruto de la capacitación en IoT de Internshala, impulsada por Bolt IoT. Aunque este proyecto es bastante simple, nos muestra el potencial de Internet de las cosas y cómo puede facilitar la vida diaria de las personas.

De todos modos ... Esta fue una gran experiencia de aprendizaje para mí. Espero que disfruten construyendo esto y estoy emocionado de ver qué nuevas innovaciones se les ocurrirán. Para concluir, expreso mi más sincero agradecimiento al equipo de formación de Internshala y Bolt IoT por hacer posible esta empresa.

¡Y eso es una envoltura!

Código

  • BoltDoorLock.ino
  • Aplicación WinForms - Proyecto de Visual Studio (Facebolt Doorlock) .zip
BoltDoorLock.ino C / C ++
Código Arduino.
 #include  #define ServoPin 4 # define LockSignalPin 2 # define UnLockSignalPin 3 # define BellButtonPin 5 # define LockButtonPin 8 # define RingBellSignalPin 6 # define BuzzerPin 7 # define GreenLedvoPinvoin 9 # define RedSerLedPin; configuración vacía () {pinMode (LockSignalPin, INPUT); pinMode (UnLockSignalPin, ENTRADA); pinMode (BellButtonPin, ENTRADA); pinMode (LockButtonPin, INPUT); pinMode (BuzzerPin, SALIDA); pinMode (RedLedPin, SALIDA); pinMode (GreenLedPin, SALIDA); pinMode (RingBellSignalPin, SALIDA); digitalWrite (RedLedPin, BAJO); digitalWrite (GreenLedPin, BAJO); digitalWrite (RingBellSignalPin, BAJO); myServo.attach (ServoPin); Serial.begin (9600);} void loop () {int lockButton, bloquear, desbloquear, timbre; char snum [5]; lock =digitalRead (LockSignalPin); desbloquear =digitalRead (UnLockSignalPin); // Compruebe si la señal de bloqueo de Bolt es ALTA if (lock ==HIGH) {// Gire el motor a la posición bloqueada myServo.write (120); // Establecer las indicaciones de los LED digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, ALTO); // Sonido de bloqueo de zumbido digitalWrite (BuzzerPin, HIGH); retraso (1000); digitalWrite (BuzzerPin, BAJO); retraso (1000); } // Compruebe si la señal de desbloqueo de Bolt es ALTA else if (unlock ==HIGH) {// Gire el motor a la posición desbloqueada myServo.write (0); // Establecer las indicaciones de los LED digitalWrite (GreenLedPin, HIGH); digitalWrite (RedLedPin, BAJO); retraso (2000); } campana =digitalRead (BellButtonPin); if (bell ==HIGH) // El usuario presionó el timbre ring betton {// Señal de que el botón de timbre fue presionado digitalWrite (RingBellSignalPin, HIGH); // ¡Un patrón de sonido de campana de llamada! digitalWrite (BuzzerPin, ALTO); retraso (100); digitalWrite (BuzzerPin, BAJO); retraso (20); digitalWrite (BuzzerPin, ALTO); retraso (200); digitalWrite (BuzzerPin, BAJO); retraso (100); digitalWrite (BuzzerPin, ALTO); retraso (100); digitalWrite (BuzzerPin, BAJO); retraso (20); digitalWrite (BuzzerPin, ALTO); retraso (200); digitalWrite (BuzzerPin, BAJO); retraso (1500); // Apaga la señal digitalWrite (RingBellSignalPin, LOW); } lockButton =digitalRead (LockButtonPin); if (lockButton ==HIGH) // El usuario presionó lock betton {// Gire el motor a la posición bloqueada myServo.write (120); // Establecer las indicaciones de los LED digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, ALTO); // Sonido de bloqueo de zumbido digitalWrite (BuzzerPin, HIGH); retraso (1000); digitalWrite (BuzzerPin, BAJO); }} 
Aplicación WinForms - Proyecto de Visual Studio (Facebolt Doorlock) .zip C #
* Extraiga el archivo zip y abra el archivo .sln en Visual Studio.
* Modifique el código con sus credenciales de API.
* Ejecutar el proyecto.
* Agrega una cara de confianza.
* Finalmente, comience a monitorear el rostro.
 Sin vista previa (solo descarga). 
API Bolt IoT Cloud:biblioteca cliente
Esta es una biblioteca cliente no oficial que escribí para comunicarme con la API de Bolt Cloud. Esta biblioteca se utiliza en nuestra aplicación WinForms para comunicarse con el módulo WiFi Bolt. Https://github.com/diozz/Bolt-IoT-API-.NET

Esquemas

Esquema del circuito de Fritzing facebolt_doorlock_2RfOtkPW2i.fzz

Proceso de manufactura

  1. 433MHz Smart Home Controller con Sensorflare y RaspberryPi
  2. Haga una puerta de oficina con bloqueo automático con sensor de proximidad para teléfono inteligente
  3. Rastreo de rostro con movimiento horizontal / vertical con raspberry pi
  4. Smart Bartender
  5. Apriete de juntas con herramientas dinamométricas
  6. Sea inteligente con su dólar de IoT
  7. Mantenerse seguro con dispositivos inteligentes e IoT
  8. El aprovisionamiento inteligente equilibra la IA con HI
  9. Cerradura de puerta inteligente usando la página de inicio de sesión de WiFi de Arduino y ESP8266
  10. GE Digital:transformando la fabricación con Smart MES
  11. ¿Qué es un pestillo?