본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 4X4 키패드 모듈을 사용해서 SG90 서보모터 제어해 보기 (도어락 만들어 보기)

by 오마이엔지니어 2022. 11. 29.
반응형

Arduino Uno 로 4X4 키패드 모듈의 사용방법을 알아보고 추가로 SG90 마이크로 서보모터를

사용해서 키패드로 도어락을 만들어 보는 프로젝트 입니다

<4X4 키패드 모듈 이미지>
4X4 키패드 모듈은 키패드와 기타 출력장치의 다양한 프로젝트와 테스트에 적합합니다

아두이노와 호환가능하며 LCD, 모니터 등 다양한 외부 장치를 활용 하는데 유용합니다
2.54mm 8핀 커넥터 (1~4핀은 "행" ROW , 5~8핀은 "열" COLUMN 구성입니다)

 


<4X4 키패드 모듈의 구성_2.54mm 8핀 커넥터 (1~4핀은 "행" ROW , 5~8핀은 "열" COLUMN 구성입니다)

사용된 부품

Arduino Uno R3 (Italy)

브래드 보드
4X4 키패드 모듈

SG90 마이크로 서보모터
점퍼케이블
5mm LED - 블루, 레드
막대저항 220 Ohm

사용된 키트
아두이노 4X4 키패드 키트

구성 배선도-키패드 숫자 시리얼 모니터에 출력해 보기

구성 배선도-키패드 패스워드 입력시 서보모터 제어해 보기



사용된 라이브러리

Password.zip
0.01MB
keypad.zip
0.02MB

 

사용된 예제소스 

Keypad.txt
0.00MB
Keypad Servo.txt
0.00MB



주의사항
기본적으로 위의 2가지 Password, keypad 라이브러리 설치가 필요합니다
라이브러리 설치 방법은 아래 링크(Arduino IDE 설치하기)를 참조해 주세요
Arduino IDE 설치하기

https://playground.arduino.cc/uploads/Code/Main/LibraryList/
아두이노 사이트에서도 검색해서 다운로드 할수 있습니다


첫번쩨 Keypad 예제코드를 살펴보면

#include <Keypad.h>
keypad.h 라이브러리를 사용하는것을 확인할 수 있습니다

const byte numRows= 4; //number of rows on the keypad
const byte numCols= 4; //number of columns on the keypad
4행 4열 세팅을 확인할 수 있습니다

{
{'1', '2', '3', 'A'}, 
{'4', '5', '6', 'B'}, 
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

byte rowPins[numRows] = {9,8,7,6}; //Rows 0 to 3
byte colPins[numCols]= {5,4,3,2}; //Columns 0 to 3
9,8,7,6 번 핀이 행(Rows) 세팅이고, 5,4,3,2 번 핀이 열(Cols) 세팅입니다

Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
키패드를 인식해서

void loop()
{
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY)
{
Serial.print(keypressed);
}
눌러지는 키값 myKeypad 을 시리얼 모니터로 출력해 줍니다
제대로된 키값이 눌러지지 않는다면 NO_KEY 가 시리얼 모니터로 출력 됩니다


두번째 Keypad Servo 예제를 살펴보면

#include <Password.h>
#include <Keypad.h> 
#include <Servo.h> 

위 3가지 라이브러리를 사용합니다 (Servo.h 는 아두이노 IDE 설치시 기본 설치되는 라이브러리 입니다)

Servo myservo; //declares servo
Password password = Password( "1234" ); //password to unlock, can be changed
서보를 세팅하고 패스워드는 "1234"로 세팅되어 있습니다
자신이 원하는 패스워드_비밀번호 로 변경후 테스트 하면 됩니다

const byte ROWS = 4; // Four rows
const byte COLS = 4; // columns
// Define the Keymap
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
마찬가지 4행, 4열 세팅입니다

byte rowPins[ROWS] = { 9, 8, 7, 6 };// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[COLS] = { 5, 4, 3 };
하지만 이번에는 4행 9,8,7,6 번핀 3열 5,4,3 번핀을 세팅합니다

pinMode(11, OUTPUT);  //blue light
pinMode(12, OUTPUT);  //red light
myservo.attach(13); //servo on digital pin 13//servo
11번핀 블루 LED, 12번핀 레드 LED, 13번핀 서보모터 제어핀 세팅입니다

    case '*': checkPassword(); delay(1); break;
    
    case '#': password.reset(); delay(1); break;
'*' 을 눌러서 패스워드를 체크시키고, '#' 을 눌러서 패스워드를 초기화_리셋 합니다

if (password.evaluate()){  //if password is right open
    
    Serial.println("Accepted");
    Serial.write(254);delay(10);
    //Add code to run if it works
    myservo.write(150); //deg
    
        digitalWrite(11, HIGH);//turn on
    delay(5000); //wait 5 seconds
    digitalWrite(11, LOW);// turn off
if 문을 사용해서 패스워드가 승인되었을때 서보모터가 150도 움직이며 11번 블루 LED가 켜진후
딜레이 타임후 꺼집니다 (150도를 180도로 변경 한다던지 수정이 가능합니다)

}else{
    Serial.println("Denied"); //if passwords wrong keep locked
    Serial.write(254);delay(10);
    //add code to run if it did not work
    myservo.write(0);
    digitalWrite(12, HIGH); //turn on
    delay(500); //wait 5 seconds
    digitalWrite(12, LOW);//turn off
그밖의 패스워드가 승인되지 않았을때 서보는 0도로 움직이지 않으며
12번 레드 LED가 켜진후 딜레이 타임후 꺼집니다

테스트에서 적절하게  '#' 를 눌러서 패스워드 초기화를 해준후 
설정한 패스워드를 누르고 '*' 를 눌러서 서보모터를 동작시킵니다

프로젝트 동영상-키패드 숫자 시리얼 모니터에 출력해 보기


프로젝트 동영상-키패드 패스워드 입력시 서보모터 제어해 보기


이렇게 아두이노로 간단하게 키패드와 서보모터를 사용해서 도어락을 구성해 보는
방법에 대해서 알아보고 테스트 해볼수 있습니다

반응형

댓글