하드웨어는 무엇일까요?
하드웨어(hardware)는 두 영어단어 'hard'와 'ware'가 합쳐져서 만들어진 단어로, 컴퓨터 시스템을 구성하는 물리적인(딱딱한, hard) 구성품(제품, ware)을 뜻합니다.
쉽게 말해 하드웨어는 컴퓨터나 로봇의 부품입니다.
우리에게 머리와 눈과 귀, 팔과 다리가 있는 것처럼, 하드웨어는 컴퓨터와 로봇의 부품인 것이죠.
다만 하드웨어만 있다고 해서 로봇이 동작할 수 있는 건 아니에요.
우리가 '생각'을 해야 밥을 먹고 학교에 갈 수 있듯, 로봇도 '소프트웨어'가 있어야 움직일 수 있습니다.
여기서는 우선 하드웨어에 대해 먼저 배워볼 거예요.
XROBO에는 로봇을 만들기 위한 아주 다양한 하드웨어가 있습니다.
CPU보드부터 LED, DC모터, 서보모터, 리모컨, 센서 등등 여러 하드웨어가 있죠.
어떤 하드웨어가 있는지 함께 살펴볼까요?
하드웨어는 역할에 따라 크게 연산장치(프로세서), 기억장치(메모리), 입력장치, 출력장치 등으로 나뉩니다.
비슷하게 XROBO의 하드웨어는 크게 CPU와 출력 하드웨어, 입력 하드웨어 이렇게 3가지로 분류되는데요,
이는 각 하드웨어가 '입력'과 '출력' 중 어떤 역할을 하느냐 따라 분류한 것입니다.
그렇다면 하드웨어의 분류에 대해 자세히 살펴보기 전, 먼저 입출력에 대해 알아볼까요?
우선 우리가 횡단보도를 건널 때의 모습을 생각해봅시다.
여러분은 횡단보도를 건널 때 어떻게 하나요?
우리가 횡단보도를 건너는 과정은 로봇이 횡단보도를 건너는 과정과 아주 닮아 있습니다.
여기에서 '입력'과 '출력'을 살펴볼 수 있습니다.
- '입력'은 로봇이 센서로 주변에서 일어나고 있는 일을 CPU보드에게 알려주는 것입니다. 우리가 눈으로 신호등의 색깔을 보고 귀로 차 소리를 들어 머리에게 알려주는 것처럼요.
- '출력'은 로봇의 CPU보드가 DC모터를 제어하여 몸체를 움직이는 것입니다. 우리의 머리가 팔과 다리를 움직여 횡단보도를 건너는 것처럼요.
입력과 출력이 무엇인지 조금 감이 오나요?
이제 입력과 출력에 대해 배웠으니 본격적으로 XROBO 하드웨어의 분류에 대해 알아봅시다.
XROBO 하드웨어는 '입력'과 '출력'에 따라 크게 이렇게 3가지로 나뉩니다.
각각의 역할에 대해 자세히 알고 싶다면 항목을 확인해주세요.
마지막으로 CPU보드에 대해 알아보기 전, 앞서 살펴보았던 '횡단보도 건너기' 예시를 떠올려볼까요?
그 예시에서 CPU보드는 신호(신호등 색깔과 차 소리)를 바탕으로 길을 건널지 말지 결정했습니다.
우리가 보고 들은 것을 바탕으로 횡단보도를 건너도 될지, 건너면 안 될지 머리로 생각하여 결정한 것처럼요.
이는 CPU보드가 우리의 '머리(뇌)' 역할을 하는 하드웨어이기 때문입니다.
그렇다면 이제 CPU보드의 역할을 알아볼까요?
출력 하드웨어 들어가기
출력 하드웨어는 로봇의 팔과 다리 역할을 하는 하드웨어입니다.
CPU보드가 '내보내는' 신호에 따라 작동한다고 하여 '출력(output)' 하드웨어라고 불립니다.
출력 하드웨어를 사용할 때는 하드웨어를 케이블로 CPU보드의 'OUT포트'에 연결하여 사용합니다.
출력 하드웨어 중 DC모터는 출력 하드웨어지만 OUT포트에 연결하지 않고 'M포트'라는 전용 포트에 연결합니다.
출력 하드웨어를 작동시키기 위해선 CPU보드에 '출력 하드웨어를 제어하는 코드'를 업로드해주어야 합니다.
이때 코드에는 CPU보드가 출력 하드웨어를 제어하는 방법과 순서가 적혀 있습니다.
CPU보드는 코드에 따라 출력 하드웨어를 제어합니다.
LED
LED란?
LED(엘이디)는 전기로 빛을 만들어내는 하드웨어입니다.
'발광 다이오드'라고도 불리며 아주 적은 전력으로도 빛을 낼 수 있습니다.
집을 밝혀주는 전등, 책상 위의 스탠드에 LED가 사용됩니다.
XROBO에는 두 가지 LED가 있습니다.
LED 연결하기 - (1) CPU보드에 연결
출력 하드웨어인 LED를 사용하려면 LED를 CPU보드에 연결해주어야 합니다.
그러나 모든 LED가 연결이 필요한 것은 아닙니다.
CPU보드에 내장된 'CPU보드 LED'의 경우, CPU보드에 연결할 필요가 없습니다.
그렇다면 '기본 LED'는 CPU보드에 어떻게 연결할까요?
LED 연결하기 - (2) LED끼리 연결
LED 여러개를 동시에, 똑같이 제어하고 싶을 땐 두 가지 방법이 있습니다.
LED의 갯수가 적을 때는 1번 방법을 사용해도 상관없지만,
- 출력 하드웨어를 여러개 사용하여 OUT포트가 부족한 경우
- 반복되는 코드를 줄이고 싶은 경우
엔 2번 방법을 사용하는 것이 편하고 효율적입니다.
그런데 하나의 포트에 어떻게 여러개의 LED를 연결할 수 있을까요?
방법은 간단합니다.
LED를 비엔나 소시지처럼 줄줄이 연결한 후, 그 중 하나의 LED만 OUT포트에 연결해주는 것입니다.
그렇다면 '기본 LED'끼리는 어떻게 연결할까요?
LED 코딩하기
LED를 작동시키기 위해선 CPU보드를 코딩해주어야 합니다.
LED를 제어할 때 사용하는 코딩블록은 '출력' 카테고리에 있습니다.
코딩블록으로는 이런 일들을 할 수 있습니다.
DC모터
DC모터란?
DC모터(디씨모터)는 전기로 '축(모터에 붙어있는 작은 막대)'를 빙글빙글 회전시키는 하드웨어입니다.
전기차의 바퀴를 굴리거나 선풍기의 날개를 회전시킬 때 DC모터가 사용됩니다.
XROBO에는 두 가지 DC모터가 있습니다.
두 모터는 회전하는 속도만 다릅니다.
DC모터 연결하기
출력 하드웨어인 DC모터를 사용하려면 DC모터를 CPU보드에 연결해주어야 합니다.
DC모터는 '출력' 하드웨어이지만 'OUT포트'에 연결하지 않고 모터 전용 포트인 'M포트'에 연결합니다.
DC모터를 연결할 때 DC모터의 종류는 상관이 없습니다.
그렇다면 'DC모터'는 CPU보드에 어떻게 연결할까요?
DC모터 코딩하기
DC모터를 작동시키기 위해선 CPU보드를 코딩해주어야 합니다.
DC모터를 제어할 때 사용하는 코딩블록은 '모터' 카테고리에 있습니다.
코딩블록으로는 이런 일들을 할 수 있습니다.
서보모터
서보모터란?
서보모터는 전기로 축을 원하는 각도로 조절할 수 있는 하드웨어입니다.
우리가 팔의 각도를 바꾸어 앞으로 나란히를 하거나 만세를 할 수 있는 것처럼, 서보모터는 축이 회전하는 각도를 정확히 조절할 수 있습니다.
축을 원하는 만큼만 회전시킬 수 있다는 점에서 축이 계속해서 회전하는 DC모터와 다릅니다.
로봇의 관절처럼 특정 부품의 각도를 정확하게 제어해야 할 때 사용합니다.
로봇의 집게발을 움직이거나 바퀴 방향을 조절해서 RC카의 방향을 바꾸고(조향하고) 싶을 때 서보모터를 사용할 수 있습니다.
XROBO에는 한 가지의 서보모터가 있습니다.
서보모터를 사용해야 할 때
공을 잡는 로봇을 만들거나 불도저처럼 물건을 들어올리는 로봇을 만들고 싶을 때 서보모터를 사용할 수 있습니다.
우선 두 예시를 살펴보며 서보모터가 어떻게 동작하는지 자세히 알아봅시다.
이렇듯 서보모터는 팔꿈치와 손가락 관절처럼 동작합니다.
따라서 서보모터는 부품을 특정 각도로 움직이고 싶을 때 사용하곤 합니다.
서보모터 연결하기
출력 하드웨어인 서보모터를 사용하려면 서보모터를 CPU보드에 연결해주어야 합니다.
그렇다면 '서보모터'는 CPU보드에 어떻게 연결할까요?
서보모터 코딩하기
서보모터를 작동시키기 위해선 CPU보드를 코딩해주어야 합니다.
서보모터를 제어할 때 사용하는 코딩블록은 '출력' 카테고리에 있습니다.
코딩블록으로는 이런 일들을 할 수 있습니다.
4. 입력 하드웨어
입력 하드웨어 들어가기
입력 하드웨어는 로봇의 눈과 귀 역할을 하는 하드웨어입니다.
입력 하드웨어가 보낸 신호가 CPU보드로 '들어간다고' 하여 '입력(input)' 하드웨어라고 불립니다.
입력 하드웨어를 사용할 때는 하드웨어를 케이블로 CPU보드의 'IN포트'에 연결하여 사용합니다.
입력 하드웨어를 작동시키기 위해선 CPU보드에 '입력 하드웨어에게서 받은 신호를 처리하는 코드'를 업로드해주어야 합니다.
이때 코드에는 입력 하드웨어에게 신호가 들어왔을 때 CPU보드가 어떤 작업을 해야할지와 그 순서가 적혀 있습니다.
CPU보드는 코드에 따라 입력 하드웨어가 보낸 신호를 처리합니다.
입력 하드웨어 코딩하기
리모컨
리모컨이란?
리모컨은 멀리서도 기계를 조종할 수 있도록 기계에게 신호를 보내주는 하드웨어입니다.
먼 거리에서 조종을 할 수 있다는 뜻인 'remote controller(리모트 컨트롤러)'를 줄여서 '리모컨'이라 부릅니다.
가장 대표적인 예시로 TV 채널을 바꿀 때 사용하는 TV 리모컨이 있습니다.
XROBO에도 로봇을 조종할 때 사용할 수 있는 리모컨이 있습니다.
리모컨 코딩하기
리모컨이 보낸 신호를 사용하기 위해선 CPU보드를 코딩해주어야 합니다.
리모컨이 보낸 신호를 확인할 때 사용하는 블록은 '입력' 카테고리에 있습니다.
코딩블록으로는 이런 일들을 할 수 있습니다.
이 코딩블록을 사용하여 특정 버튼이 눌러졌을 때 어던 일을 할 것인지 정해줄 수 있습니다.
예를 들어, 1번 버튼이 눌러져있다면 LED를 켜고, 1번 버튼이 눌러지지 않았다면 LED를 끌 수 있습니다.
리모컨 페어링하기
코딩까지 다 했다면 모든 준비가 끝났습니다.
이제 로봇과 리모컨의 전원을 켜기만 하면 로봇(CPU보드)을 조종할 수 있습니다.
다만, 아래와 같은 경우 리모컨과 CPU보드를 페어링(연결) 해주어야 합니다.
CPU보드는 자신과 연결된 리모컨의 신호만 받고, 연결되지 않은 리모컨의 신호는 무시하기 때문에 두 하드웨어를 연결해주는 페어링 과정이 반드시 필요합니다.
만약 페어링이 필요한 경우라면, 이제 리모컨과 로봇을 페어링 해봅시다.
리모컨은 한 번 연결해두면 CPU보드가 리셋되지 않는 한 계속 연결되어 있습니다.
따라서 단순히 CPU보드나 리모컨의 전원을 껐다가 켠 경우, 또는 코드를 업로드한 경우에는 새로 연결할 필요가 없습니다.
X-키패드
X-키패드란?
컴퓨터에 연결된 키보드나 노트북 자판에 붙어있는 키를 누르면 키에 적혀 있는 글자나 숫자가 화면에 쓰여집니다.
이렇듯 컴퓨터나 노트북에 글자를 입력할 때 사용하는 하드웨어를 '자판(키보드)'라고 부르는데요,
그 중에서도 주로 숫자(0~9)를 입력하는 데 사용되는 작은 키보드를 '키패드'라고 부릅니다.
XROBO에는 X-키패드(엑스 키패드)라는 키패드 하드웨어가 있습니다.
X-키패드 연결하기
입력 하드웨어인 X-키패드를 사용하려면 X-키패드를 CPU보드에 연결해주어야 합니다.
X-키패드 코딩하기
X-키패드가 보낸 신호를 사용하기 위해선 CPU보드를 코딩해주어야 합니다.
X-키패드가 보낸 신호를 확인할 때 사용하는 블록은 '입력' 카테고리에 있습니다.
코딩블록으로는 이런 일들을 할 수 있습니다.
이 코딩블록을 사용하여 특정 버튼이 눌러졌을 때 어던 일을 할 것인지 정해줄 수 있습니다.
예를 들어 1번 버튼이 눌러졌다면 DC모터를 1초 동안 움직여 로봇을 앞으로 움직이고, 2번 버튼이 눌러졌다면 DC모터의 속도를 바꾸어 로봇을 뒤로 움직일 수 있습니다.
X-키패드 더 알아보기
X-키패드의 원리
- X-키패드를 CPU보드에 연결하면 X-키패드에 전류가 흐릅니다.
- 버튼을 아무것도 누르지 않았을 때는 전류가 방해받지 않고 자유롭게 흐릅니다.
- 그러나 버튼을 누르면 X-키패드에 저항이 연결되어 전류가 줄어듭니다. 따라서 전압도 감소합니다. 이때 버튼마다 저항의 크기가 다르기 때문에 버튼을 눌렀을 때 만들어지는 전압이 다 다릅니다.
- CPU보드는 X-키패드를 거쳐서 오는 전압 값을 읽습니다. 눌러진 버튼에 따라 들어오는 전압 값이 다르기 때문에 CPU보드는 그 전압 값을 보고 어떤 버튼이 눌렸는지 알 수 있습니다.
센서
센서란?
우리는 눈과 귀로 세상에서 어떤 일이 일어나는지 알 수 있습니다.
CPU보드에게도 눈과 귀의 역할을 해주는 것이 있습니다.
바로 센서입니다.
CPU보드는 센서를 통해 세상에서 어떤 일이 일어나는지 알 수 있습니다.
그렇다면 센서란 무엇일까요?
센서는 얼마나 밝은지, 얼마나 뜨거운지, 압력이 얼마나 센지를 숫자로 나타냅니다.
가끔 병원에 가면 병원에서 환자에게 "안 아픈 것을 0, 상상할 수 있는 가장 큰 아픔을 10이라고 했을 때 얼마나 아픈가요?" 라고 물어봅니다.
만약 환자가 1이라고 답한다면 별로 안 아픈 것이고, 9라고 답한다면 너무너무 아픈 것이겠죠?
물론 아주 정확하진 않겠지만, 병원에서는 환자가 말하는 숫자를 듣고 환자가 얼마나 아픈지 대충이나마 알 수 있습니다.
센서 역시 앞서 우리가 0부터 10 사이의 숫자로 얼마나 아픈지 표현했던 것처럼 빛이 얼마나 밝은지, 또는 물체가 얼마나 뜨거운지, 또는 압력이 얼마나 센지를 컴퓨터가 이해할 수 있는 숫자로 표현합니다.
컴퓨터는 그 숫자를 보고 세상(빛, 온도, 압력)을 이해합니다.
XROBO에도 여러 종류의 센서가 있습니다.
센서의 종류
센서는 무엇을 감지하느냐에 따라 종류가 다양합니다.
센서 사용 시 주의점
센서를 사용할 때 주의해야할 점이 두 가지 있습니다.
센서가 정말로 고장난 것인지 아닌지 판단할 때 중요하므로 꼭 기억해주세요.
접촉센서
접촉센서란?
접촉센서는 일종의 버튼입니다.
버튼이 현재 어떤 상태인지(버튼이 눌러졌다, 버튼이 눌러지지 않았다)를 전기 신호로 전달합니다.
XROBO에도 접촉센서 하드웨어가 있습니다.
접촉센서 연결하기
입력 하드웨어인 접촉센서를 사용하려면 접촉센서를 CPU보드에 연결해주어야 합니다.
접촉센서 코딩하기
접촉센서가 보낸 신호를 사용하기 위해선 CPU보드를 코딩해주어야 합니다.
접촉센서가 보낸 신호를 확인할 때 사용하는 블록은 '입력' 카테고리에 있습니다.
코딩블록으로는 이런 일들을 할 수 있습니다.
이 코딩블록을 사용하여 버튼이 눌러졌을 때 CPU보드가 어떤 작업을 할 것인지 정해줄 수 있습니다.
예를 들어 버튼이 눌러졌다면 LED를 켜고, 버튼이 눌러지지 않았다면 LED를 끄도록 할 수 있습니다.
접촉센서 더 알아보기
접촉센서의 원리
- 접촉센서를 CPU보드에 연결하면 접촉센서에 전류가 흐릅니다.
- 버튼을 아무것도 누르지 않았을 때는 전류가 방해받지 않고 자유롭게 흐릅니다.
- 그러나 버튼을 누르면 접촉센서에 저항이 연결되어 전류가 줄어듭니다.
- 따라서 전압도 감소합니다.
- CPU보드는 접촉센서를 거쳐서 오는 전압 값을 읽습니다.
- 버튼이 눌러졌는지 눌러지지 않았는지에 따라 전압 값이 다르기 때문에 CPU보드는 그 전압 값을 보고 버튼의 상태를 알 수 있습니다.
적외선센서
적외선센서란?
빛에는 여러 종류가 있습니다.
빨간 빛, 파란 빛처럼 우리 눈에 보이는 빛도 있지만, 빛 중에는 눈에 보이지 않는 적외선, 자외선, X선 같은 빛도 있습니다.
적외선센서는 그 중에서 ‘적외선’을 감지하는 센서입니다.
빛은 반사되는 성질이 있는데요(거울은 빛의 반사를 이용한 물건입니다), 적외선센서는 이 성질을 이용하여 물체를 향해 적외선을 쏜 후, 물체가 반사시킨 적외선의 세기를 측정합니다.
물체가 가까울수록 반사되는 적외선 세기가 세지기 때문에 물체까지의 거리를 알 수 있습니다.
XROBO에도 적외선센서 하드웨어가 있습니다.
적외선센서 연결하기
입력 하드웨어인 적외선센서를 사용하려면 적외선센서를 CPU보드에 연결해주어야 합니다.
적외선센서 코딩하기
적외선센서가 보낸 신호를 사용하기 위해선 CPU보드를 코딩해주어야 합니다.
적외선센서가 보낸 신호를 확인할 때 사용하는 블록은 '입력' 카테고리에 있습니다.
코딩블록으로는 이런 일들을 할 수 있습니다.
이 코딩블록을 사용하여 장애물까지의 거리에 따라 CPU보드가 어떤 작업을 할 것인지 정해줄 수 있습니다.
예를 들어 적외선센서 3cm 이내에 장애물이 있으면 DC모터를 움직여 자동차 로봇을 후진시키게 함으로써 충돌 방지 자동차를 코딩해줄 수 있습니다.
적외선센서 더 알아보기
적외선센서의 제대로 작동하지 않을 때
이런 경우 적외선센서가 제대로 작동하지 않을 수 있습니다.
적외선센서의 원리
- 적외선센서는 적외선을 감지하는 센서입니다. 정확히는 적외선이 얼마나 센지를 감지합니다.
- 그런데 놀랍게도 적외선센서는 항상 적외선을 쏘고 있습니다. 적외선은 눈에 보이지 않는 빛이기 때문에 센서가 적외선을 쏘고 있는 것이 우리 눈에는 보이지 않지만요. (빛에도 여러 종류가 있는데, 그 중에서 눈에 보이는 빛은 가시광선 뿐입니다.)
- 그렇다면 적외선센서는 왜 적외선을 쏘는 걸까요?
- 먼저 적외선을 쏘았을 때 어떤 일이 일어나는지 알아봅시다.
- 적외선센서가 적외선을 쏘면,
- 쏘아진 적외선 중 일부는 물체에 흡수되지만 일부는 물체를 맞고 다시 튕겨 나오게(반사) 됩니다.
- 튕겨나온 적외선 중 일부는 또다시 적외선 센서로 돌아옵니다.
- 이때 물체가 가까우면 가까울수록 반사되는 적외선은 많아집니다. 즉, 적외선의 세기가 강해지는 것입니다.
- 앞서 적외선 센서는 적외선 세기를 감지한다고 했는데요, 물체가 가까워지면 가까워질수록 적외선 세기가 증가하기 때문에 적외선 센서는 그 세기를 감지하여 물체까지의 거리를 파악할 수 있습니다.