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

Arduino - Desbloqueio de Padrão da Web

Componentes e suprimentos

Arduino UNO
× 1
PHPoC WiFi Shield para Arduino
× 1
Servo motor visto SG92R
× 1
Jumper fios
× 1

Sobre este projeto





Introdução


Se você é iniciante, recomendo a leitura dos seguintes tutoriais:
  • Arduino - Motor
  • Arduino - servo motor
  • Arduino - Wifi

Você pode estar familiarizado com o padrão de desbloqueio ao acessar seu telefone. Agora, esse recurso está disponível no Arduino. Ele evita que pessoas não autorizadas controlem / monitorem o Arduino.

O usuário pode reutilizar livremente o código deste projeto para outro aplicativo. Para simplificar, tomo o controle do servo motor como exemplo.

Essa ideia se origina de dois projetos, que são escritos para a plataforma PHPoC:
  • https://www.hackster.io/iot_lover/web-based-pattern-unlock-for-iot-device-aeaf44.
  • https://forum.phpoc.com/articles/tutorials/350-servo-motor-controlling-servo-motor-via-websocket-with-graphic-ui

Eu os adapto para o Arduino.

Neste projeto, usei PHPoC WiFi Shield para conectar o Arduino à Internet porque:
  • PHPoC Shield suporta websocket, o que é conveniente para este projeto.
  • PHPoC Shield tem um servidor web embutido dedicado, permitindo armazenar o aplicativo web embutido no escudo.

O PHPoC Shield tem alguns aplicativos da web integrados que permitem ao usuário usar o aplicativo da web integrado para controlar / monitorar o Arduino sem a necessidade de nenhum conhecimento de programação da web.

Além disso, o escudo PHPoC permite que os usuários que podem programar aplicativos da web desenvolvam seus próprios aplicativos da web e os armazenem no escudo do PHPoC.





Demonstração





Fluxo de dados


Navegador da Web <---> PHPoC WiFi Shield <---> Arduino





Como funciona


Quando o usuário desenha seu padrão no navegador da web, o padrão é mapeado para uma string. Essa string padrão é enviada ao Arduino por meio do WebSocket (via PHPoC Shield).

Quando o Arduino recebe a string de padrão de entrada, ele compara a string recebida com a string de padrão embutida no Arduino. Se houver correspondência, o Arduino envia o código ACEITO de volta ao cliente (navegador da Web) e define a variável autenticada para verdade. Caso contrário, o Arduino enviará o código NEGADO para o cliente e definirá a variável autenticada para falso.

Quando o Arduino recebe um comando de controle do usuário, ele verifica o valor da variável autenticada primeiro. Se o valor for verdadeiro, executa a tarefa correspondente ao comando. Se o valor for falso, envia o código NEGADO ao cliente.

Mapeamento de padrões

O padrão será mapeado para uma string. Por exemplo, na imagem acima, a string padrão é "1, 4, 8, 6, 3".

Um tempo limite é definido. Após um período de tempo, se o usuário não tiver nenhuma atividade, a autenticação expirou, o usuário precisa inserir o padrão novamente para desbloquear o Arduino.

O código-fonte inclui dois arquivos:
  • ArduinoUnlockExample.ino:é compilado e carregado para o Arduino via Arduino IDE
  • unlock.php:este é o código do aplicativo da web, ele é carregado para o escudo PHPoC por meio do depurador PHPoC.





O que precisamos fazer

  • Definir informações de Wifi para escudo PHPoC (SSID e senha)
  • Carregue uma nova IU para o escudo PHPoC
  • Escreva o código do Arduino

Definindo informações de Wi-Fi para PHPoC Shield

Veja esta instrução.

Carregar nova IU da web para PHPoC Shield
  • Baixe o código-fonte do PHPoC para unlock.php (na seção de código).
  • Baixe duas imagens a seguir para controlar o servo motor
  • Faça o upload para o escudo PHPoC usando o depurador PHPoC de acordo com esta instrução (observe que NÃO exclua o arquivo existente no escudo PHPoC)

Escreva o código do Arduino
  • Instale a biblioteca PHPoC para Arduino no Arduino IDE (consulte as instruções)
  • Consulte o código-fonte na seção de códigos.
  • Compilar e fazer upload para o Arduino via Arduino IDE





Experimente

  • Clique no botão serial no Arduino IDE para ver o endereço IP.
  • Abra o navegador da web, digite http:// replace_ip_address /unlock.php
  • Clique no botão conectar e teste.





O melhor Arduino Starter Kit para iniciantes


Se você estiver procurando por um kit Arduino, consulte O melhor kit Arduino para iniciantes





Referências de função

  • Arduino - Biblioteca Servo
  • Servo.attach ()
  • Servo.write ()
  • Servo.writeMicroseconds ()
  • Servo.read ()
  • Servo.attached ()
  • Servo.detach ()
  • Serial.begin ()
  • Serial.println ()
  • atraso ()
  • milis ()
  • para loop
  • while loop
  • se mais
  • loop ()
  • configuração ()
  • String.toInt ()
  • String.substring ()
  • String.indexOf ()
  • String.remove ()
  • String.equals ()

Código

  • unlock.php
  • ArduinoUnlockExample
unlock.php PHP
Esta é a interface do usuário da Web
     Arduino - PHPoC Shield        

Arduino - Desbloqueio de padrão da Web

Ângulo: 0

WebSocket: nulo

ArduinoUnlockExample Arduino
 / * servidor web arduino - desbloqueio de padrão * / # include "SPI.h" #include "Phpoc.h" #include  #define CMD_AUTH 0 # define CMD_CTRL 1 # define ACCEPTED "202" #define NÃO AUTORIZADO "401" Servidor PhpocServer (80); Servo servo; Padrão de string; bool autenticado; tempo limite longo sem sinal; lastActiveTime longo não assinado; void setup () {Serial.begin (9600); while (! Serial); Phpoc.begin (PF_LOG_SPI | PF_LOG_NET); //Phpoc.begin (); server.beginWebSocket ("web_pattern"); Serial.print ("endereço do servidor WebSocket:"); Serial.println (Phpoc.localIP ()); servo.attach (8); // anexa o servo no pino 8 ao objeto servo servo.write (90); padrão =String ("1,4,8,6,3"); autenticado =falso; tempo limite =10000; // 10000 milissegundos lastActiveTime =0;} void loop () {// espera por um novo cliente:PhpocClient client =server.available (); if (cliente) {String data =client.readLine (); if (dados) {int pos =data.indexOf (':'); int cmd =data.substring (0, pos) .toInt (); if (cmd ==CMD_AUTH) {String reqPattern =data.substring (pos + 1); reqPattern.remove (reqPattern.indexOf (13)); reqPattern.remove (reqPattern.indexOf (10)); if (pattern.equals (reqPattern)) {authenticated =true; sendResponse (ACEITO, 3); lastActiveTime =millis (); } else {//Serial.print(reqPattern); autenticado =falso; sendResponse (NÃO AUTORIZADO, 3); }} else if (cmd ==CMD_CTRL) {if (autenticado) {ângulo interno =data.substring (pos + 1) .toInt (); // ângulo =mapa (ângulo, -90, 90, 0, 180); ângulo =mapa (ângulo, 90, -90, 0, 180); servo.write (ângulo); lastActiveTime =millis (); Serial.println (ângulo); } else {sendResponse (NÃO AUTORIZADO, 3); }}}} if (autenticado &&((millis () - lastActiveTime)> tempo limite)) {authenticated =false; sendResponse (NÃO AUTORIZADO, 3); }} void sendResponse (char * data, int len) {server.write (data, len); } 

Esquemas


Processo de manufatura

  1. Estampa de roupas
  2. Controlador DMX operado pela web
  3. Arduino Spybot
  4. FlickMote
  5. TV B-Gone caseiro
  6. Relógio mestre
  7. Encontre-me
  8. Arduino Power
  9. Tech-TicTacToe
  10. Arduino Quadruped