아두이노2016. 6. 28. 16:10

바로 이전 글에서 알아보았던 'ATTiny85 (Digispark Board) 보드' 글의 마지막에 추가내용으로 스마트폰이나 PC를 연결하면 키보드 입력하는 것과 같이 ATTiny85의 출력값을 읽어올 수 있다고 했었습니다. 이것을 이용해서 스마트폰과 PC의 잠금해제를 하는 키(Key)를 만들어 보겠습니다. 일종의 하드웨어 Key 같은 것이죠. 요즘도 그런지는 모르겠지만 예전 고가의 소프트웨어들은 불법복제를 방지하기 위해서 USB 형태나 시리얼 포트에 꼽는 형태로 하드웨어 키를 제공하기도 했습니다. 하드웨어 키가 PC에 꼽혀 있지 않으면 프로그램이 실행되지 않았던 것이죠. ATTiny85 를 이용하면 이런 것도 구현이 가능 하겠네요. 아무튼 이 글에서는 비밀번호로 잠겨 있는 PC와 스마트폰을 ATTiny85 보드를 연결하면 잠금해제 되도록 구현해 보겠습니다. 스마트폰의 경우는 안드로이드 폰을 이용하였고 아이폰은 잘 모르겠습니다. OTG 케이블을 이용해서 폰에 연결을 해야 하거든요.


먼저 이 글을 이해하려면 먼저 아래의 글을 읽어서 ATTiny85 (Digispark Board) 보드에 대한 설치와 일반적인 내용을 알아야 하고 개발환경의 세팅이 되어 있어야 합니다.


 


■ 연결

1. 스마트폰 : 스마트폰 ↔ OTG 케이블  스마트폰 케이블(마이크로 5핀)  ATTiny85 보드 순으로 연결 합니다.


2. PC : PC  스마트폰 케이블(마이크로 5핀)  ATTiny85 보드 순으로 연결 합니다. 




■ 소스 & 실행결과

먼저 Digispark 의 예제를 하나 보겠습니다.

위와 같이 예제->DigisparkKeyboard->Keyboard 에 들어가서 열어주면 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "DigiKeyboard.h"
 
void setup() {
  // don't need to set anything up to use DigiKeyboard
}
 
 
void loop() {
  // this is generally not necessary but with some older systems it seems to
  // prevent missing the first character after a delay:
  DigiKeyboard.sendKeyStroke(0);
  
  // Type out this string letter by letter on the computer (assumes US-style
  // keyboard)
  DigiKeyboard.println("Hello Digispark!");
  
  // It's better to use DigiKeyboard.delay() over the regular Arduino delay()
  // if doing keyboard stuff because it keeps talking to the computer to make
  // sure the computer knows the keyboard is alive and connected
  DigiKeyboard.delay(5000);
}
cs

위와 같은 소스 입니다. DigiKeyboard 라이브러리를 이용해서 'Hello Digispark!' 라는 문자열을 매 5초 마다 키보드를 누르듯이 출력해 주는 예제 입니다. 이것을 이용하면 잠금 해제 장치를 만들 수 있습니다. 다만 5초 마다 계속 입력이 되므로 Loop 가 아니라 Setup 부분에 넣어주면 됩니다. 


테스트 삼아 위의 소스가 잘 작동하는지 업로드를 해 봅니다. 업로드는 위의 사전 참조글에도 설명이 되어 있듯이 아두이노 IDE 의 업로드 버튼을 누른 후에 ATTiny85 보드를 60초 이내에 USB 포트에 연결해야 정상적으로 업로드가 됩니다. 업로드 시 장치가 이미 연결되어 있다면 업로드가 되지 않습니다.


실행 결과 입니다. 5초는 너무 많은 것 같아서 1초 간격으로 써지도록 수정을 했습니다. 'DigiKeyboard.delay(1000);' 으로 수정 했습니다.



1
2
3
4
5
6
7
8
9
10
11
#include "DigiKeyboard.h"
 
void setup() {
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.println("");
  DigiKeyboard.delay(1000);
  DigiKeyboard.println("패스워드");
}
 
void loop() {
}
cs

잠금해제 소스 입니다. '패스워드' 부분에 스마트폰이나 PC의 잠금해제 패스워드를 넣어주면 됩니다. setup 에 있으므로 1번 밖에 실행이 되지 않습니다.


PC 에 ATTiny85 보드를 꼽아서 잠금해제 하는 영상 입니다. 장치를 인식하는데 약간의 시간이 걸린 후 암호가 자동으로 입력되고 PC가 잠금해제 됩니다.


스마트폰에 연결해서 잠금해제 하는 영상 입니다. 스마트폰에는 아무런 설정도 필요 없습니다. 그냥 위의 프로그램을 작성해서 업로드 후 OTG 케이블을 이용해서 연결해 주면 됩니다. 단, 패스워드 입력 방식으로 잠금 설정이 되어 있어야 합니다.



이상으로 ATTiny85 보드를 이용한 키보드 입력에 대해서 알아 보았습니다. 이 기능은 통신포트(COM포트)가 잡히지 않아 시리얼 모니터를 사용할 수 없는 ATTiny85 의 출력값을 읽을 때에도 유용하게 사용할 수 있습니다.

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요

  1. 임종권

    잘보고갑니다 !

    2016.07.08 08:55 [ ADDR : EDIT/ DEL : REPLY ]
  2. 에르키스틴

    워우.. 이번에 ATTINY 로 적외선 센서를이용하려는데 출력값을 못봐서 고생하고 있었거든요 ㅠㅠ 감사합니다!!

    2017.01.19 17:12 [ ADDR : EDIT/ DEL : REPLY ]