Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Porta inteligente com desbloqueio facial

Componentes e suprimentos

Bolt IoT Bolt WiFi Module
× 1
Arduino UNO
× 1
Buzzer
× 1
Placa de ensaio sem solda em tamanho real
× 1
SparkFun Botão de pressão 12 mm
× 2
LED de 5 mm:Vermelho
× 1
LED de 5 mm:Verde
× 1
Resistor 10k ohm
× 2
Resistor 330 ohm
× 2
Fios de jumpers (genérico)
× 1

Ferramentas e máquinas necessárias

Pistola de cola quente (genérica)

Aplicativos e serviços online

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

Sobre este projeto


Bem-vindo, amigo curioso! Vivemos em uma era revolucionada pela Internet, em que agora é mais fácil do que nunca experimentar e inovar para ter ideias brilhantes que podem ter um impacto positivo em milhões de pessoas em todo o mundo.

Sempre quis adicionar um pouco de segurança extra às suas prateleiras, gavetas, guarda-roupas ou portas de casa? Em se tratando de inovação utilizando internet, entre milhares de plataformas e ferramentas disponíveis para nós, algumas que se destacam são o Arduino e Bolt IoT . Neste projeto, vamos modificar uma prateleira padrão para ter um sistema de segurança que desbloqueia usando Verificação facial. Vamos construir um aplicativo Windows Forms em C # que pode armazenar, verificar e desbloquear rostos confiáveis. Ele usa a FacePlusPlus API para verificação facial e Bolt IoT Cloud API para comunicação com o Módulo WiFi Bolt e Arduino. Faremos a interface do Módulo WiFi Bolt com um Arduino Uno , isso controlará um servo motor para travar / destravar a porta.

Animado? Vamos começar.





Antecedentes


Fiz este projeto como parte do Innovate Challenge e IoT Training, conduzido pela Internshala Trainings. Seu treinamento ajudou a entender os fundamentos de como lidar com serviços de API, Programação Orientada a Objetos e, o mais importante, usando o Módulo WiFi Bolt. Uma sinopse do Projeto Capstone feita como parte deste treinamento pode ser encontrada aqui. Muitos desses conceitos foram úteis durante o desenvolvimento deste projeto. Portanto, um grande grito para a Equipe Internshala por tornar isso possível.





Etapa 1:Construindo o software


Vamos construir um aplicativo Windows Forms usando o Visual Studio. Este aplicativo roda em uma máquina Windows, e será responsável por gerenciar faces autorizadas, verificar uma face usando FacePlusPlus API e se comunicar com o Módulo WiFi Bolt. Estaremos usando C # para codificar.

Abra o Visual Studio e crie um novo projeto de aplicativo do Windows Forms. Se você é totalmente novo no Visual Studio, recomendo aprender os fundamentos do desenvolvimento de aplicativos do Windows Forms usando o Visual Studio. Este e este são bons recursos para começar.

Neste tutorial, explicarei apenas o código usando snippets do projeto que executa funções principais e importantes. Será entediante e desnecessário percorrer todo o código, pois a maior parte dele é autoexplicativo e bem documentado.

Nosso projeto do Visual Studio usa 3 bibliotecas para vários fins. Eles são:
  • AForge .NET :Uma estrutura .NET popular usada para processamento de imagens no Windows. Nós o usamos para capturar imagens de uma webcam.
  • Bolt IoT API .NET :Uma biblioteca cliente não oficial que escrevi em C #, para comunicar a API Bolt Cloud.
  • Newtonsoft JSON :Uma estrutura JSON de alto desempenho popular para .NET. Usado para analisar as respostas da API em nosso projeto.

NOTA:Para maior clareza no uso de diferentes métodos nas APIs acima, consulte suas respectivas documentações aqui, aqui e aqui.





Primeiros passos


Antes de pular para a codificação, precisamos configurar algumas coisas.

1 Credenciais da API Bolt Cloud

Se ainda não o fez, acesse cloud.boltiot.com e crie uma conta. Depois de fazer login, vincule seu Módulo WiFi à Bolt Cloud. Para isso, baixe o aplicativo Bolt IoT Setup no seu celular. Siga as instruções fornecidas no aplicativo para vincular seu dispositivo à sua conta. Isso envolve emparelhar o Bolt com a rede WiFi local. Depois de vinculado com êxito, seu painel exibirá seu dispositivo. Agora você pode obter o seu ID do dispositivo e e chave API do painel.

2. Credenciais da API FacePlusPlus

Outro serviço de API com o qual contamos neste projeto é a FacePlusPlus API . É uma plataforma gratuita que oferece vários tipos de serviços de reconhecimento de imagem. Nós o usamos para identificação facial. Crie uma conta e vá para o console FacePlusPlus. Vá para Chave API em Apps e clique em + Obter chave API . Anote a chave API recém-gerada e API Secret .

Agora você deve ter o seguinte pronto:
  string privada somente leitura BOLT_DEVICE_ID ="BOLTXXXXXX"; string privada somente leitura BOLT_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"; string privada somente leitura FPP_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; string privada somente leitura FPP_API_SECRET ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";  

Criamos uma nova instância global da classe Bolt chamada myBolt , por meio do qual faremos todas as comunicações futuras com o Módulo WiFi:
  myBolt =new Bolt (BOLT_API_KEY, BOLT_DEVICE_ID);  

Dito isso, agora vamos ver como nosso aplicativo executa algumas das funções principais.





1. Trancar / destrancar a porta


Projetamos o circuito de forma que quando o pino digital 0 for HIGH , a porta deve ficar trancada e quando o pino digital 3 estiver ALTO , a porta deve estar destrancada. Isso ficará mais claro mais tarde, quando discutirmos os esquemas do circuito.

Para bloqueio, usamos o DigitalMultiWrite método da biblioteca para escrever HIGH valor para D0 e valor BAIXO para D3. Isso sinalizará ao Arduino para travar a porta. Da mesma forma, para desbloquear, escreveremos LOW valor para D0 e HIGH valor para D3. Isso sinalizará ao Arduino para destrancar a porta. Discutiremos o código do Arduino e o projeto do circuito posteriormente neste tutorial.

Código que executa o bloqueio:
  assíncrono privado Task LockDoor () {MultiPinConfig multiPinConfig =new MultiPinConfig (); MultiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.High); // Bloquear sinal multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Sinal de desbloqueio aguarda myBolt.DigitalMultiWrite (multiPinConfig); multiPinConfig =novo MultiPinConfig (); multiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.Low); // Bloquear sinal multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Sinal de desbloqueio aguarda myBolt.DigitalMultiWrite (multiPinConfig);}  

Código que realiza o desbloqueio:
  assíncrono privado Tarefa UnlockDoor () {MultiPinConfig multiPinConfig =new MultiPinConfig (); multiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.Low); // Bloquear sinal multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.High); // Sinal de desbloqueio aguarda myBolt.DigitalMultiWrite (multiPinConfig); multiPinConfig =novo MultiPinConfig (); multiPinConfig.AddPinState (DigitalPins.D0, DigitalStates.Low); // Bloquear sinal multiPinConfig.AddPinState (DigitalPins.D3, DigitalStates.Low); // Sinal de desbloqueio aguarda myBolt.DigitalMultiWrite (multiPinConfig);}  





2. Adicionar / remover rostos confiáveis ​​


Os dados de imagem do rosto confiável são codificados em uma string Base64 e armazenados localmente na máquina. Uma lista de nomes correspondentes de cada rosto também é armazenada. Em nosso programa, para adicionar um rosto, primeiro verificamos se há um rosto disponível no quadro atual. Fazemos isso usando a API Detect do FacePlusPlus. Ele retorna uma resposta JSON que conterá características do rosto detectado. Se nenhum rosto for detectado, a resposta será simplesmente [] . Assim que um rosto é detectado, salvamos a string codificada em base64 da imagem e o nome correspondente. Aqui está um vídeo de demonstração de como adicionar um rosto confiável.

Remover um rosto é bastante simples. Pressionar o botão remover excluirá os dados da imagem e o nome da lista salva.

Código que adiciona e salva as informações do rosto:
  // Converter imagem em string base64 e adicioná-la à lista. ImageDataList.Add (ImageToBase64 ((Image) PreviewBox.Image.Clone ())); // Adicionando o nome da face à listNameList.Add (FaceNameTextBox.Text.Trim ()); // Salva os dados da imagem facial como uma string codificada de base, junto com seu nomeProperties.Settings.Default.Base64ImageData =ImageDataList; Properties.Settings.Default.FaceNames =NameList; Properties.Settings.Default.Save ();  

Código que remove as informações de um rosto:
  // Removendo informações de rosto na posição especificada em listNameList.RemoveAt (e.RowIndex); ImageDataList.RemoveAt (e.RowIndex); // Salvar a lista após a remoção de um faceProperties.Settings.Default.FaceNames =NameList; Properties.Settings.Default.Base64ImageData =ImageDataList; Properties.Settings.Default.Save ();  

Confira o código no projeto em anexo onde o processo é explicado como comentários em cada linha para ter uma ideia clara.





3. Verificação facial


Verificamos se um rosto é confiável ou não usando a API Compare no FacePlusPlus. Durante esse processo, iteramos linearmente por meio de cada face na lista salva e a comparamos com a imagem capturada. Se a API retornar uma confiança de mais de 80%, destravaremos a porta.

O código que faz essa comparação é semelhante a este:
  Cliente WebClient =novo 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 confiança =JObject.Parse (System.Text.Encoding.UTF8.GetString (resposta)) ["confiança"]. ToString ();  

WebClient.UploadValues ​​ método envia a solicitação para FacePlusPlus API junto com os dados de face codificados em base64 de duas faces a serem comparadas e nossas credenciais de API. A resposta é analisada usando Newtonsoft JSON biblioteca e confiança valor é obtido. Leia a documentação da API Compare para compreender os argumentos de forma clara.





4. O Tópico para Ouvir Bell


Planejamos fornecer um botão de pressão físico, algo como um botão de campainha de chamada, para que o usuário possa pressionar enquanto olha para a câmera para destravar a porta. Para tornar isso possível, precisamos criar um novo tópico dedicado que escute continuamente o evento de pressionamento do botão da campainha.

Posteriormente neste tutorial, veremos como o botão de pressão é empregado e como ele tornará o pino D4 do módulo Bolt WiFi ALTO quando o botão é pressionado. Por enquanto, vamos apenas assumir o acima. Portanto, neste tópico, continuamente DigitalRead o valor do pino D4. Se for HIGH , consideraremos isso como um evento de toque de sino e faremos a captura e verificação de rosto.

Este é o código que será executado continuamente no thread de escuta do sino:
  while (ListenForBell) {Response R =await myBolt.DigitalRead (DigitalPins.D4); if (R.Value =="1") {RingBell_Click (nulo, nulo); Thread.Sleep (2000); } Thread.Sleep (2000);}  

Paramos e esperamos 2 segundos entre cada iteração. Caso contrário, ele esgotará a cota de uso da API Bolt Cloud rapidamente.





Etapa 2:Construindo o projeto do Visual Studio


Baixe todo o projeto aqui . Abra o Facebolt Doorlock.sln arquivo no Visual Studio. Depois que a solução for carregada, abra Form1.cs arquivo e atualize o código com suas credenciais de API. Pressione o botão de reprodução verde denominado 'Iniciar' para criar e executar o programa.

O programa permite selecionar dispositivos de câmera conectados ao sistema e ver uma imagem ao vivo da câmera. Você pode adicionar / remover um rosto confiável. Comece o monitoramento facial. Assim que o programa verificar a conectividade do seu dispositivo Bolt, você pode tocar a campainha ou trancar a porta diretamente do programa.

Está tudo bem se você agora está confuso sobre como a verificação de rosto, bloqueio e desbloqueio funcionam no programa. Ficará mais claro quando virmos o projeto do esquema do circuito e o código do Arduino. Também detalharei o fluxo de eventos de cada operação no final.





Etapa 3:Projeto de circuito e código Arduino


Em nosso circuito, pretendemos implementar os seguintes recursos:
  • Indicação de LED vermelho e verde para estados de porta bloqueada e desbloqueada, respectivamente.
  • Um botão para atuar como um interruptor de campainha de chamada. Quando pressionado, nosso aplicativo WinForms deve verificar a face e a porta aberta após a autenticação facial com sucesso.
  • Outro botão para trancar a porta.
  • Uma campainha que emite um bipe caso a campainha toque e feche a porta.

A conexão do circuito do nosso projeto é mostrada abaixo:

Se ainda não o fez, baixe o IDE do Arduino aqui e conecte o seu Arduino ao sistema. Certifique-se de definir o modelo e a porta corretos do Arduino nas configurações do IDE antes de enviar o 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 10 myServo; void setup () {pinMode (LockSignalPin, INPUT); pinMode (UnLockSignalPin, INPUT); pinMode (BellButtonPin, INPUT); pinMode (LockButtonPin, INPUT); pinMode (BuzzerPin, OUTPUT); pinMode (RedLedPin, OUTPUT); pinMode (GreenLedPin, OUTPUT); pinMode (RingBellSignalPin, OUTPUT); 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); desbloquear =digitalRead (UnLockSignalPin); // Verifique se o sinal de travamento do Bolt está ALTO if (lock ==HIGH) {// Gire o motor para a posição travada myServo.write (120); // Define as indicações do LED digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HIGH); // Som de bloqueio de zumbido digitalWrite (BuzzerPin, HIGH); atraso (1000); digitalWrite (BuzzerPin, LOW); atraso (1000); } // Verifique se o sinal de desbloqueio do Bolt está ALTO else if (unlock ==HIGH) {// Gire o motor para a posição destravada myServo.write (0); // Define as indicações do LED digitalWrite (GreenLedPin, HIGH); digitalWrite (RedLedPin, LOW); atraso (2000); } bell =digitalRead (BellButtonPin); if (bell ==HIGH) // O usuário pressionou o toque da campainha betton {// Sinal de que o botão do anel foi pressionado digitalWrite (RingBellSignalPin, HIGH); // Um ​​padrão de som de sino chamando! digitalWrite (BuzzerPin, HIGH); atraso (100); digitalWrite (BuzzerPin, LOW); atraso (20); digitalWrite (BuzzerPin, HIGH); atraso (200); digitalWrite (BuzzerPin, LOW); atraso (100); digitalWrite (BuzzerPin, HIGH); atraso (100); digitalWrite (BuzzerPin, LOW); atraso (20); digitalWrite (BuzzerPin, HIGH); atraso (200); digitalWrite (BuzzerPin, LOW); atraso (1500); // Desliga o sinal digitalWrite (RingBellSignalPin, LOW); } lockButton =digitalRead (LockButtonPin); if (lockButton ==HIGH) // O usuário pressionou o botão de bloqueio do betton {// Gire o motor para a posição travada myServo.write (120); // Define as indicações do LED digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HIGH); // Som de bloqueio de zumbido digitalWrite (BuzzerPin, HIGH); atraso (1000); digitalWrite (BuzzerPin, LOW); }}  





Fluxos de eventos


Agora que temos o aplicativo WinForm e o design do Arduino prontos, vamos mergulhar no código e explorar o fluxo de controle de cada operação.

1 Anel Pressione o botão

2. Lock Pressione o botão

Ambas as operações acima também podem ser executadas diretamente no aplicativo Windows Forms.

Aqui, podemos observar que o Módulo WiFi Bolt serve como uma importante interface sem fio entre o aplicativo Windows Forms e o Arduino. O uso da API Bolt Cloud nos permite estender nosso projeto e construir aplicativos em outras plataformas como Android e destrancar a porta usando nossos telefones! Essa flexibilidade é o poder da IoT e da plataforma Bolt.

Agora que concluímos a parte de design do software, vamos em frente e construir um mecanismo de porta com fechadura.





Etapa 4:Construindo o Hardware


Tenho uma sapateira por aí, então, neste projeto, vou usá-la para uma demonstração de fechadura. Você pode usar uma prateleira, uma porta, um guarda-roupa ou qualquer coisa que tenha um mecanismo de travamento que possa ser hackeado. Depende realmente de você.

Precisamos construir um mecanismo de acoplamento que conecte nosso servo motor com a fechadura. Para isso, minha ideia é usar um gargalo recortado de uma garrafa e uma tampa de outra garrafa. Prenda o gargalo da garrafa ao servo motor e a tampa à fechadura. Em seguida, os acoplaremos usando um fio de náilon. Isso resultará na ação de travar / destravar sempre que o motor girar.

O gargalo da garrafa necessário com um orifício na tampa é semelhante ao mostrado abaixo. Estaremos anexando isso ao eixo de travamento da sapateira.

Outra tampa de garrafa deve ser colocada no servo motor. Usamos fios de cobre para conectar a tampa ao eixo giratório do motor.

Agora precisamos acoplar esses dois. Para isso usamos fio de náilon. Faça um laço usando a linha com o comprimento necessário e prenda a linha em ambas as tampas.

Uma vez acoplados, eles podem causar uma ação de rotação mútua:

Agora que temos nosso mecanismo giratório pronto, é hora de hackear a fechadura e fixar nosso gargalo nela. Tínhamos feito um furo nele, então tudo o que precisamos fazer é desparafusar o eixo de travamento do rack, colocar o gargalo da garrafa acima dele e reapertar a trava com força.

Agora, a única coisa que resta a fazer é fixar o servo motor na sapateira. Usaremos uma pistola de cola quente para selar o motor ao rack.

Depois de ajustar o comprimento da linha e apertá-la suficientemente, temos nossa configuração final pronta. Como visto abaixo, o servo motor pode travar e destravar corretamente a porta!

Você não precisa necessariamente usar o método de acoplamento de gargalo de garrafa. Use o método mais adequado e conveniente para o seu sistema de bloqueio.

Felizmente, eu tinha uma pequena abertura no lugar certo do rack. isso me permitiu tirar as conexões do servo motor facilmente. Depois de um pequeno trabalho de decoração e etiquetagem, nossa sapateira inteligente final está pronta para a ação.

Estamos prontos agora. Tudo o que resta a fazer é ligar o circuito, adicionar uma face confiável no aplicativo WinForms e desfrutar da segurança de bloqueio de face em nossas portas. Você precisará ligar o Arduino e o Módulo WiFi Bolt. Eu uso um banco de energia de 10000 mAh para alimentar os dois. A WebCam que uso é uma Microsoft LifeCam VX-800. É antigo, mas ainda é melhor do que a câmera do laptop. Confira o vídeo de demonstração. Mostra o funcionamento do nosso projeto em detalhes.





A demonstração de vídeo


Veja nosso projeto em ação (desculpas pela qualidade do vídeo):





Conclusão


Huff .. isso foi bem longo. Este projeto é fruto do treinamento de IoT da Internshala, desenvolvido por Bolt IoT. Embora seja um projeto bastante simples, ele nos mostra o potencial da Internet das Coisas e como ela pode facilitar o dia a dia das pessoas.

De qualquer forma .. Este foi um grande aprendizado para mim. Espero que gostem de construir isso e estou animado para ver as inovações que surgirão. Estou concluindo expressando meus sinceros agradecimentos à equipe de treinamento da Internshala e da Bolt IoT por tornar este empreendimento possível.

E pronto!




Código

  • BoltDoorLock.ino
  • Aplicativo WinForms - Projeto 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 BuzzerLedPin 7 # define GreenLedPin 9 # define RedServoPin 9 # define; void setup () {pinMode (LockSignalPin, INPUT); pinMode (UnLockSignalPin, INPUT); pinMode (BellButtonPin, INPUT); pinMode (LockButtonPin, INPUT); pinMode (BuzzerPin, OUTPUT); pinMode (RedLedPin, OUTPUT); pinMode (GreenLedPin, OUTPUT); pinMode (RingBellSignalPin, OUTPUT); 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); desbloquear =digitalRead (UnLockSignalPin); // Verifique se o sinal de travamento do Bolt está ALTO if (lock ==HIGH) {// Gire o motor para a posição travada myServo.write (120); // Define as indicações do LED digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HIGH); // Som de bloqueio de zumbido digitalWrite (BuzzerPin, HIGH); atraso (1000); digitalWrite (BuzzerPin, LOW); atraso (1000); } // Verifique se o sinal de desbloqueio do Bolt está ALTO else if (unlock ==HIGH) {// Gire o motor para a posição destravada myServo.write (0); // Define as indicações do LED digitalWrite (GreenLedPin, HIGH); digitalWrite (RedLedPin, LOW); atraso (2000); } bell =digitalRead (BellButtonPin); if (bell ==HIGH) // O usuário pressionou o toque da campainha betton {// Sinal de que o botão do anel foi pressionado digitalWrite (RingBellSignalPin, HIGH); // Um ​​padrão de som de sino chamando! digitalWrite (BuzzerPin, HIGH); atraso (100); digitalWrite (BuzzerPin, LOW); atraso (20); digitalWrite (BuzzerPin, HIGH); atraso (200); digitalWrite (BuzzerPin, LOW); atraso (100); digitalWrite (BuzzerPin, HIGH); atraso (100); digitalWrite (BuzzerPin, LOW); atraso (20); digitalWrite (BuzzerPin, HIGH); atraso (200); digitalWrite (BuzzerPin, LOW); atraso (1500); // Desliga o sinal digitalWrite (RingBellSignalPin, LOW); } lockButton =digitalRead (LockButtonPin); if (lockButton ==HIGH) // O usuário pressionou o botão de bloqueio do betton {// Gire o motor para a posição travada myServo.write (120); // Define as indicações do LED digitalWrite (GreenLedPin, LOW); digitalWrite (RedLedPin, HIGH); // Som de bloqueio de zumbido digitalWrite (BuzzerPin, HIGH); atraso (1000); digitalWrite (BuzzerPin, LOW); }} 
Aplicativo WinForms - Projeto Visual Studio (Facebolt Doorlock) .zip C #
* Extraia o arquivo zip e abra o arquivo .sln no Visual Studio.
* Modifique o código com suas credenciais de API.
* Execute o projeto.
* Adicione um rosto confiável.
* Por fim, comece a monitorar o rosto.
 Sem visualização (somente download). 
Bolt IoT Cloud API - Biblioteca de cliente
Esta é uma biblioteca cliente não oficial que escrevi para comunicação com a API Bolt Cloud. Esta biblioteca é usada em nosso aplicativo WinForms para comunicação com o Bolt WiFi Module.https://github.com/diozz/Bolt-IoT-API-.NET

Esquemas

Esquema do circuito Fritzing facebolt_doorlock_2RfOtkPW2i.fzz

Processo de manufatura

  1. Controlador Smart Home de 433 MHz com Sensorflare e RaspberryPi
  2. Faça uma porta de escritório com travamento automático com sensor de proximidade para smartphone
  3. Acompanhamento de rotação horizontal / vertical com o pi de framboesa
  4. Bartender inteligente
  5. Aperto de juntas com ferramentas de torque
  6. Seja inteligente com seu dólar IoT
  7. Mantendo a segurança com dispositivos inteligentes e IoT
  8. Saldos de Aquisições Inteligentes AI com HI
  9. Trava de porta inteligente usando página de login WiFi por Arduino e ESP8266
  10. GE Digital:transformando a manufatura com o Smart MES