산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino - 웹 패턴 잠금 해제

구성품 및 소모품

Arduino UNO
× 1
Arduino용 PHPoC WiFi 실드
× 1
시드 서보 모터 SG92R
× 1
점퍼 와이어
× 1

이 프로젝트 정보

소개

초보자인 경우 다음 자습서를 읽는 것이 좋습니다.

<울>
  • Arduino - 모터
  • Arduino - 서보 모터
  • 아두이노 - 와이파이
  • 휴대전화에 액세스할 때 잠금 해제 패턴에 익숙할 수 있습니다. 이제 이 기능을 Arduino에서 사용할 수 있습니다. 권한이 없는 사람이 Arduino를 제어/모니터링하는 것을 방지합니다.

    사용자는 이 프로젝트의 코드를 다른 응용 프로그램에 자유롭게 재사용할 수 있습니다. 편의상 서보 모터 제어를 예로 들어 보겠습니다.

    이 아이디어는 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
  • Arduino에 맞게 조정합니다.

    이 프로젝트에서 다음과 같은 이유로 Arduino를 인터넷에 연결하기 위해 PHPoC WiFi Shield를 사용했습니다.

    <울>
  • PHPoC Shield는 websocket을 지원하므로 이 프로젝트에 편리합니다.
  • PHPoC 쉴드에는 전용 내장 웹 서버가 있어 내장 웹 애플리케이션을 쉴드에 저장할 수 있습니다.
  • PHPoC Shield에는 웹 프로그래밍에 대한 지식 없이도 임베디드 웹 애플리케이션을 사용하여 Arduino를 제어/모니터링할 수 있는 몇 가지 내장 웹 애플리케이션이 있습니다.

    또한, PHPoC 쉴드를 사용하면 웹 애플리케이션을 프로그래밍할 수 있는 사용자가 자신의 웹 애플리케이션을 개발하여 PHPoC 쉴드에 저장할 수 있습니다.

    데모

    데이터 흐름

    웹 브라우저 <---> PHPoC WiFi 쉴드 <---> Arduino

    작동 원리

    사용자가 웹 브라우저에서 패턴을 그리면 패턴이 문자열에 매핑됩니다. 이 패턴 문자열은 WebSocket을 통해 (PHPoC Shield를 통해) Arduino로 전송됩니다.

    Arduino가 입력 패턴 문자열을 수신하면 수신된 문자열을 Arduino의 하드 코딩된 패턴 문자열과 비교합니다. 일치하면 Arduino는 ACCEPTED 코드를 다시 클라이언트(웹 브라우저)로 보내고 인증된 변수를 설정합니다. 사실로. 그렇지 않으면 Arduino는 DENIED 코드를 클라이언트에 보내고 인증된 변수를 설정합니다. 거짓으로.

    Arduino는 사용자로부터 제어 명령을 받으면 인증된 변수의 값을 확인합니다. 첫 번째. 값이 true이면 명령에 해당하는 작업을 수행합니다. 값이 false이면 DENIED 코드를 클라이언트로 보냅니다.

    패턴 매핑

    패턴은 문자열에 매핑됩니다. 예를 들어 위 이미지에서 패턴 문자열은 "1, 4, 8, 6, 3"입니다.

    시간 초과가 설정되었습니다. 일정 시간이 지난 후 사용자의 활동이 없으면 인증이 만료되며 사용자는 Arduino의 잠금을 해제하기 위해 패턴을 다시 입력해야 합니다.

    소스 코드에는 다음 두 개의 파일이 포함됩니다.

    <울>
  • ArduinoUnlockExample.ino:컴파일되어 Arduino IDE를 통해 Arduino에 업로드됩니다.
  • unlock.php:웹 앱 코드이며 PHPoC 디버거를 통해 PHPoC 실드에 업로드됩니다.
  • 우리가 해야 할 일

    <울>
  • PHPoC 쉴드에 대한 Wi-Fi 정보 설정(SSID 및 비밀번호)
  • PHPoC 쉴드에 새로운 UI 업로드
  • Arduino 코드 작성
  • PHPoC Shield용 Wi-Fi 정보 설정

    이 지침을 참조하십시오.

    새로운 웹 UI를 PHPoC Shield에 업로드

    <울>
  • PHPoC 소스 코드 unlock.php를 다운로드합니다(코드 섹션에서).
  • 서보 모터 제어를 위한 다음 두 이미지 다운로드
  • <울>
  • 이 지침에 따라 PHPoC 디버거를 사용하여 PHPoC 쉴드에 업로드합니다(PHPoC 쉴드에 있는 기존 파일을 삭제하지 마십시오)
  • Arduino 코드 작성

    <울>
  • Arduino IDE에 Arduino용 PHPoC 라이브러리 설치(지침 참조)
  • 코드 섹션에서 소스 코드를 참조하세요.
  • Arduino IDE를 통해 Arduino에 컴파일 및 업로드
  • 사용해 보세요

    <울>
  • 아두이노 IDE에서 시리얼 버튼을 클릭하면 IP 주소를 볼 수 있습니다.
  • 웹 브라우저를 열고 http://를 입력합니다. replace_ip_address /unlock.php
  • 연결 버튼을 클릭하고 테스트합니다.
  • 초보자를 위한 최고의 Arduino 스타터 키트

    Arduino 키트를 찾고 있다면 초보자를 위한 최고의 Arduino 키트를 참조하십시오.

    함수 참조

    <울>
  • Arduino - 서보 라이브러리
  • Servo.attach()
  • 서보.write()
  • Servo.writeMicroseconds()
  • 서보.read()
  • Servo.attached()
  • 서보.분리()
  • Serial.begin()
  • Serial.println()
  • 지연()
  • 밀리()
  • for 루프
  • while 루프
  • 다른 경우
  • 루프()
  • 설정()
  • String.toInt()
  • String.substring()
  • String.indexOf()
  • String.remove()
  • String.equals()
  • <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • unlock.php
  • ArduinoUnlockExample
  • unlock.phpPHP
    이것은 웹 사용자 인터페이스
    Arduino - PHPoC Shield<스타일>본문 { 텍스트 정렬:가운데; 글꼴 크기:너비/2pt; }h1 { 글꼴 두께:굵게; 글꼴 크기:너비/2pt; }h2 { 글꼴 두께:굵게; 글꼴 크기:너비/2pt; }버튼 { 글꼴 두께:굵게; 글꼴 크기:너비/2pt; }

    Arduino - 웹 패턴 잠금 해제

    웹소켓:null

    <버튼 id="bt_connect" type="button" onclick="connect_onclick();">연결

    ArduinoUnlockExampleArduino
    /* arduino 웹 서버 - 패턴 잠금 해제 */#include "SPI.h#include "Phpoc.h#include #define CMD_AUTH 0#define CMD_CTRL 1#define ACCEPTED "202#define UNAUTHORIZED "401" PhpocServer 서버(80), 서보 서보, 문자열 패턴, 부울 인증, 서명되지 않은 긴 시간 초과, 서명되지 않은 긴 lastActiveTime, 무효 설정() { Serial.begin(9600); 동안(! 직렬); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); //Phpoc.begin(); server.beginWebSocket("웹 패턴"); Serial.print("웹소켓 서버 주소 :"); Serial.println(Phpoc.localIP()); 서보.부착(8); // 8번 핀의 서보를 서보 객체에 연결합니다. servo.write(90); 패턴 =문자열("1,4,8,6,3"); 인증됨 =거짓; 시간 초과 =10000; // 10000 밀리초 lastActiveTime =0;}void loop() { // 새 클라이언트를 기다립니다. PhpocClient client =server.available(); if (클라이언트) { 문자열 데이터 =client.readLine(); if(data) { int pos =data.indexOf(':'); int cmd =data.substring(0, pos).toInt(); if(cmd ==CMD_AUTH) { 문자열 reqPattern =data.substring(pos+1); reqPattern.remove(reqPattern.indexOf(13)); reqPattern.remove(reqPattern.indexOf(10)); if(pattern.equals(reqPattern)) { 인증 =true; sendResponse(수락, 3); lastActiveTime =밀리(); } else { //Serial.print(reqPattern); 인증됨 =거짓; sendResponse(승인되지 않음, 3); } } else if(cmd ==CMD_CTRL) { if(인증됨) { int angle =data.substring(pos+1).toInt(); //각도 =지도(각도, -90, 90, 0, 180); 각도 =지도(각도, 90, -90, 0, 180); 서보.쓰기(각도); lastActiveTime =밀리(); Serial.println(각도); } else { sendResponse(비인증, 3); } } } } if (인증된 &&((millis() - lastActiveTime)> 시간 초과)){ 인증됨 =거짓; sendResponse(승인되지 않음, 3); }}무효 sendResponse(char *data, int len) { server.write(data, len); }

    회로도


    제조공정

    1. 의류 패턴
    2. 웹 운영 DMX 컨트롤러
    3. Arduino 스파이봇
    4. FlickMote
    5. 수제 TV B-Gone
    6. 마스터 시계
    7. 나를 찾기
    8. Arduino Power
    9. Tech-TicTacToe
    10. Arduino Quadruped