Sistema de atendimento por impressão digital Arduino com armazenamento de dados em nuvem
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
| ||||
|
Aplicativos e serviços online
|
Sobre este projeto
Você pode ler este e outros tutoriais incríveis em Site oficial do ElectroPeak .
Visão geral
Hoje em dia, aprender sobre a operação e implementação de dispositivos IoT é tão essencial devido ao uso crescente de sistemas IoT. Neste tutorial, vamos fazer um dispositivo de atendimento por impressão digital com Arduino, que além de armazenar as informações de login e horário de trabalho no cartão de memória, carrega essas informações na plataforma ThingSpeak assim que estiver conectado à Internet e você pode baixar essas informações do painel em vários formatos, como CSV.
O que você aprenderá
- Trabalho com sensores de impressão digital
- Carregando dados no ThingSpeak usando NodeMCU
- Faça um dispositivo de atendimento com o sensor de impressão digital e Arduino
O que é ThingSpeak?
A IoT (Internet of Things) prevê um mundo onde várias coisas estão conectadas à Internet, interagindo com indivíduos e outros dispositivos e, geralmente, enviando dados para a nuvem para análise.
ThingSpeak é uma plataforma IoT que permite exibir e coletar dados ao vivo na computação em nuvem.
Interface com ThingSpeak e upload de dados
Siga as etapas abaixo para iniciar a conexão ThingSpeak:
Etapa 1 ) Entre no site ThingSpeak.com e crie uma conta.
Etapa 2 ) Faça login após ativar sua conta e clique em Novo canal no Meu canal seção.
Etapa 3 ) Na nova janela aberta para você, escreva um nome para o seu painel e qualquer descrição, se necessário. Determine o número de campos necessários atribuindo seus nomes. As demais peças são opcionais. Salve o painel após preencher as informações.
Etapa 4 ) Agora vá para Chaves de API em seu painel.
Etapa 5 ) Você precisa do ID do canal e Gravar chave de API para transmitir dados, então anote-os.
Etapa 6) Baixe o ThingSpeak biblioteca e adicione-a ao seu Arduino IDE.
A biblioteca ThingSpeak
Etapa 7) Vá para o IDE do Arduino. Abra o WriteMultipleFiels da parte dos exemplos e insira os valores de SSID, senha, ID do canal e Write API Key.
/ * WriteMultipleFields Descrição:Grava valores nos campos 1,2,3,4 e status em uma única atualização do Thingspeak a cada 20 segundos. Hardware:placas baseadas em ESP8266 !!! IMPORTANTE - Modifique o arquivo secrets.h para este projeto com sua conexão de rede e os detalhes do canal Thingspeak. !!! Nota:- Requer a biblioteca ESP8266WiFi e o complemento da placa ESP8622. Consulte https://github.com/esp8266/Arduino para obter detalhes. - Selecione o hardware de destino no menu Ferramentas-> Placa - Este exemplo foi escrito para uma rede que usa criptografia WPA. Para WEP ou WPA, altere a chamada WiFi.begin () de acordo. Thingspeak (https://www.Thingspeak.com) é um serviço de plataforma IoT analítica que permite agregar, visualizar e analisar fluxos de dados ao vivo na nuvem. Visite https://www.Thingspeak.com para se inscrever para uma conta gratuita e criar um canal. A documentação para a biblioteca de comunicação Thingspeak para Arduino está na pasta README.md onde a biblioteca foi instalada. Consulte https://www.mathworks.com/help/Thingspeak/index.html para a documentação completa do Thingspeak. Para obter informações sobre licenciamento, consulte o arquivo de licença que acompanha. Copyright 2018, The MathWorks, Inc. * / # Include "Thingspeak.h" #include "secrets.h" #include char ssid [] =SECRET_SSID; // SSID da sua rede (nome) char pass [] =SECRET_PASS; // sua senha de redeint keyIndex =0; // o número do índice da sua chave de rede (necessário apenas para WEP) cliente WiFiClient; longo sem sinal myChannelNumber =SECRET_CH_ID; const char * myWriteAPIKey =SECRET_WRITE_APIKEY; // Inicializar nossos valoresint number1 =0; int number2 =random (0,100); int number3 =random (0,100); número int4 =aleatório (0,100); String myStatus =""; void setup () {Serial.begin (115200); // Inicializa o WiFi.mode serial (WIFI_STA); Thingspeak.begin (cliente); // Inicializar o Thingspeak} void loop () {// Conectar ou reconectar ao WiFi if (WiFi.status ()! =WL_CONNECTED) {Serial.print ("Tentando conectar ao SSID:"); Serial.println (SECRET_SSID); while (WiFi.status ()! =WL_CONNECTED) {WiFi.begin (ssid, pass); // Conecte-se à rede WPA / WPA2. Altere esta linha se estiver usando a rede aberta ou WEP Serial.print ("."); atraso (5000); } Serial.println ("\ nConectado."); } // define os campos com os valores Thingspeak.setField (1, número1); Thingspeak.setField (2, número2); Thingspeak.setField (3, número3); Thingspeak.setField (4, número4); // descobrir a mensagem de status if (número1> número2) {meuEstado =String ("campo1 é maior que campo2"); } else if (number1 99) {número1 =0; } número2 =aleatório (0,100); número3 =aleatório (0,100); numero4 =aleatório (0,100); atraso (20000); // Aguarde 20 segundos para atualizar o canal novamente}
Depois de enviar o código, você verá alguns números aleatórios enviados nos campos 1 a 4 do seu painel. O mesmo código estruturado é usado no sistema de atendimento para upload de dados.
Nota
Aguarde pelo menos 15 segundos entre cada vez que você carregar os dados no painel ThingSpeak.
Criando sistema de atendimento usando o sensor de impressão digital e Arduino
Nesse sistema, após o registro da entrada e saída de uma pessoa por meio de sua impressão digital, as informações como data, nome, hora de chegada, hora de saída e horário de trabalho do funcionário ficam armazenadas no cartão SD. Em seguida, essas informações serão enviadas para ThingSpeak no momento que você especificou. Na ausência de conexão com a Internet, os dados não publicados são armazenados e serão encaminhados ao ThingSpeak assim que for conectado à Internet. Como as informações são armazenadas na EEPROM do microcontrolador, não serão perdidas em caso de queda de energia.
Circuito
Após conectar todos os módulos, coloque o escudo LCD no Arduino.
Dica
Uma vez que o escudo do LCD cobre alguns dos pinos do Arduino, você pode limitar o fio a um pino específico da parte inferior da placa, se precisar desses pinos.
Código
Você precisa das seguintes bibliotecas para este código:
Adafruit-Fingerprint-Sensor-Library
Biblioteca Adafruit-GFX
MCUFRIEND_kbv
RTClib
Agora baixe o código a seguir e envie-o para o seu Arduino. Este código foi escrito para 11 pessoas com nomes padrão, mas você pode alterá-los e removê-los do modo padrão. Para registrar um novo nome, simplesmente conecte o dispositivo ao seu computador e pressione a tecla para entrar no modo de registro, abra o Monitor Serial e siga o processo de registro conforme mostrado no Monitor Serial.
Baixe o código em attachmentes:
Você pode aprender mais sobre como usar um cartão SD, o módulo de relógio e o LCD nos seguintes links:
Módulo de cartão SD com Arduino:como ler / gravar dados
Como usar o módulo DS1307 RTC com Arduino e fazer um lembrete
Guia do iniciante absoluto para monitores LCD TFT por Arduino.
NodeMCU executa a tarefa de enviar as informações neste sistema. Ele pega as informações de upload do Arduino por meio da porta serial e retorna o status de upload para o Arduino. Faça upload do seguinte código em seu NodeMCU.
#include "Thingspeak.h" #include ESP8266WiFi.h> char ssid [] ="SEU SSID"; char pass [] ="SSID PASSWORD"; cliente WiFiClient; unsigned long myChannelNumber =SEU ID DO CANAL; const char * myWriteAPIKey ="SEU CHANNEL WRITE API KEY"; String Final =""; String Data =""; String Enter =""; String Exit =""; String Name =""; String WT =""; void String_Analyze (String input) {int índice1, índice2, índice3, índice4; index1 =input.indexOf ('*', 0); index2 =input.indexOf ('*', index1 + 1); index3 =input.indexOf ('*', index2 + 1); index4 =input.lastIndexOf ('*'); Nome =entrada; Data =entrada; Enter =entrada; Sair =entrada; WT =entrada; Name.remove (índice1); Date.remove (índice2); Date.remove (0, índice1 + 1); Enter.remove (index3); Enter.remove (0, índice2 + 1); Exit.remove (índice4); Exit.remove (0, índice 3 + 1); WT.remove (0, index4 + 1);} void Get_String () {while (Serial.available ()) {Final =Serial.readString (); // leia os dados recebidos como string //Serial.println(Final); }} void setup () {Serial.begin (9600); WiFi.mode (WIFI_STA); Thingspeak.begin (cliente); pinMode (LED_BUILTIN, OUTPUT); digitalWrite (LED_BUILTIN, HIGH);} void loop () {if (WiFi.status ()! =WL_CONNECTED) {//Serial.print("Attempting to connect to SSID:"); // Serial.println (ssid); while (WiFi.status ()! =WL_CONNECTED) {WiFi.begin (ssid, pass); // Conecte-se à rede WPA / WPA2. Altere esta linha se estiver usando a rede aberta ou WEP Serial.print ("0"); atraso (5000); }} digitalWrite (LED_BUILTIN, LOW); //Serial.println("\nConnected. "); Get_String (); String_Analyze (final); if (! Final.equals ("")) {Thingspeak.setField (1, Date); Thingspeak.setField (2, Nome); Thingspeak.setField (3, Enter); Thingspeak.setField (4, Saída); Thingspeak.setField (5, WT); int x =Thingspeak.writeFields (myChannelNumber, myWriteAPIKey); if (x ==200) {atraso (100); Serial.print ("1"); } mais {atraso (100); Serial.print ("0"); } atraso (17.000); Final =""; }
Primeiro, altere o ID do canal e Gravar chave de API de acordo com seu painel ThingSpeak.
O
String_Analuze ();
A função neste código divide as strings de entrada do NodeMCU em data, nome, hora de chegada e partida e horas de trabalho, e envia essas informações para ThingSpeak. Então, se o processo de upload for bem-sucedido, ele envia o caractere “1” e, caso contrário, envia o caractere “0” para o Arduino.
Montagem do dispositivo de atendimento
Você pode usar os seguintes mapas e Plexiglass com cores diferentes ou qualquer outro material para construir o corpo do dispositivo de atendimento.
Baixe o mapa de corte a laser do corpo do dispositivo dos anexos:
Após colocar os componentes eletrônicos e montar todo o corpo, instale-o no local desejado. Agora, basta conectar um adaptador de 12 V ao dispositivo e ele começa a funcionar.
O que vem a seguir?
- Tente usar mais ícones no LCD.
- Tente adicionar uma opção RFID ao sistema.
- Tente fazer upload dos dados nas planilhas do Google em vez de ThingSpeak .
Se você achar este tutorial útil e interessante, curta-nos em Facebook.
Código
- Código 1
- Código 2
Código 1 Arduino
Interface com Thingspeak e upload de dados/ * WriteMultipleFields Descrição:Grava valores nos campos 1,2,3,4 e status em uma única atualização do Thingspeak a cada 20 segundos. Hardware:placas baseadas em ESP8266 !!! IMPORTANTE - Modifique o arquivo secrets.h para este projeto com sua conexão de rede e os detalhes do canal Thingspeak. !!! Nota:- Requer a biblioteca ESP8266WiFi e o complemento da placa ESP8622. Consulte https://github.com/esp8266/Arduino para obter detalhes. - Selecione o hardware de destino no menu Ferramentas-> Placa - Este exemplo foi escrito para uma rede que usa criptografia WPA. Para WEP ou WPA, altere a chamada WiFi.begin () de acordo. Thingspeak (https://www.Thingspeak.com) é um serviço de plataforma IoT analítica que permite agregar, visualizar e analisar fluxos de dados ao vivo na nuvem. Visite https://www.Thingspeak.com para se inscrever para uma conta gratuita e criar um canal. A documentação para a biblioteca de comunicação Thingspeak para Arduino está na pasta README.md onde a biblioteca foi instalada. Consulte https://www.mathworks.com/help/Thingspeak/index.html para a documentação completa do Thingspeak. Para obter informações sobre licenciamento, consulte o arquivo de licença que acompanha. Copyright 2018, The MathWorks, Inc. * / # Include "Thingspeak.h" #include "secrets.h" #includechar ssid [] =SECRET_SSID; // SSID da sua rede (nome) char pass [] =SECRET_PASS; // sua senha de redeint keyIndex =0; // o número do índice da sua chave de rede (necessário apenas para WEP) cliente WiFiClient; longo sem sinal myChannelNumber =SECRET_CH_ID; const char * myWriteAPIKey =SECRET_WRITE_APIKEY; // Inicializar nossos valoresint number1 =0; int number2 =random (0,100); int number3 =random (0,100); número int4 =aleatório (0,100); String myStatus =""; void setup () {Serial.begin (115200); // Inicializa o WiFi.mode serial (WIFI_STA); Thingspeak.begin (cliente); // Inicializar o Thingspeak} void loop () {// Conectar ou reconectar ao WiFi if (WiFi.status ()! =WL_CONNECTED) {Serial.print ("Tentando conectar ao SSID:"); Serial.println (SECRET_SSID); while (WiFi.status ()! =WL_CONNECTED) {WiFi.begin (ssid, pass); // Conecte-se à rede WPA / WPA2. Altere esta linha se estiver usando a rede aberta ou WEP Serial.print ("."); atraso (5000); } Serial.println ("\ nConectado."); } // define os campos com os valores Thingspeak.setField (1, número1); Thingspeak.setField (2, número2); Thingspeak.setField (3, número3); Thingspeak.setField (4, número4); // descobrir a mensagem de status if (número1> número2) {meuEstado =String ("campo1 é maior que campo2"); } else if (number1 99) {número1 =0; } número2 =aleatório (0,100); número3 =aleatório (0,100); numero4 =aleatório (0,100); atraso (20000); // Aguarde 20 segundos para atualizar o canal novamente}
Código 2 Arduino
#include "Thingspeak.h" #include ESP8266WiFi.h> char ssid [] ="SEU SSID"; char pass [] ="SSID PASSWORD"; cliente WiFiClient; unsigned long myChannelNumber =SEU ID DO CANAL; const char * myWriteAPIKey ="SEU CHANNEL WRITE API KEY"; String Final =""; String Data =""; String Enter =""; String Exit =""; String Name =""; String WT =""; void String_Analyze (String input) {int index1, index2, index3, index4; index1 =input.indexOf ('*', 0); index2 =input.indexOf ('*', index1 + 1); index3 =input.indexOf ('*', index2 + 1); index4 =input.lastIndexOf ('*'); Nome =entrada; Data =entrada; Enter =entrada; Sair =entrada; WT =entrada; Name.remove (índice1); Date.remove (índice2); Date.remove (0, índice1 + 1); Enter.remove (index3); Enter.remove (0, índice2 + 1); Exit.remove (índice4); Exit.remove (0, índice 3 + 1); WT.remove (0, index4 + 1);} void Get_String () {while (Serial.available ()) {Final =Serial.readString (); // leia os dados recebidos como string //Serial.println(Final); }} void setup () {Serial.begin (9600); WiFi.mode (WIFI_STA); Thingspeak.begin (cliente); pinMode (LED_BUILTIN, OUTPUT); digitalWrite (LED_BUILTIN, HIGH);} void loop () {if (WiFi.status ()! =WL_CONNECTED) {//Serial.print("Attempting to connect to SSID:"); // Serial.println (ssid); while (WiFi.status ()! =WL_CONNECTED) {WiFi.begin (ssid, pass); // Conecte-se à rede WPA / WPA2. Altere esta linha se estiver usando a rede aberta ou WEP Serial.print ("0"); atraso (5000); }} digitalWrite (LED_BUILTIN, LOW); //Serial.println("\nConnected. "); Get_String (); String_Analyze (final); if (! Final.equals ("")) {Thingspeak.setField (1, Date); Thingspeak.setField (2, Nome); Thingspeak.setField (3, Enter); Thingspeak.setField (4, Saída); Thingspeak.setField (5, WT); int x =Thingspeak.writeFields (myChannelNumber, myWriteAPIKey); if (x ==200) {atraso (100); Serial.print ("1"); } mais {atraso (100); Serial.print ("0"); } atraso (17.000); Final =""; }
Peças personalizadas e gabinetes
uploads2ftmp2fdcd9a041-0d41-433f-b48f-b7fa0a1b7a832felectropeak_attendance_code_q4bsYBzou5.zip uploads2ftmp2f93ae52e3-7f3c-4744-b2db-b69baed578622fattendanceboxlasercut_ryMUOo5d7h.dwgProcesso de manufatura
- 10 Benefícios do uso do armazenamento em nuvem
- DVD Player
- Sistema de atendimento usando Arduino e RFID com Python
- Transferência de dados magnéticos sem fio
- Sistema de alarme Arduino:SERENA
- Registrador de dados de temperatura e umidade
- Sensor capacitivo de impressão digital com um Arduino ou ESP8266
- Arduino Cloud Sensor Tower
- Sistema de ventilação porão / crawlspace
- A nuvem na IoT