본문 바로가기

스크래치/라인트랙자동차

스크래치 아두이노 라인 센서 읽기

라인센서 사용방법 알기

라인 트랙 자동차에서 눈과 같은 역할을 하는 것이 바로 라인 센서입니다. 이 센서가 어떻게 작동하는지 알아봅시다. 라인 센서를 보면 2개의 엘이디(LED)가 있습니다. 하나는 적외선 빛을 내보내는 적외선 엘이디(LED)입니다. 다른 하나는 빛이 들어왔는지 확인하는 감지 엘이디(LED)입니다.

그림 1-1 라인 센서

 

적외선은 우리 눈으로는 볼 수 없는 긴 파장의 빛입니다.

그림 1-2 빛의 파장

 

파장은 파도와 비슷합니다. 파장은 파도처럼 위아래로 움직이는 것을 말합니다. 그리고 이런 빛은 전기와 같은 것입니다. 빛은 모든 종류의 전자기파인 것이죠. 라인 센서는 들어오는 빛을 전기신호로 바꿔서 아두이노가 이해할 수 있도록 만듭니다. 참 신기하죠?

 

적외선은 우리 눈으로는 볼 수 없는 긴 파장의 빛이지만 라인 센서의 감지 엘이디(LED)는 적외선 빛을 알아볼 수 있습니다. 파장이 길다는 뜻은 파장에서 높은 곳끼리의 간격이 넓다는 뜻입니다.

 

흰색은 빛을 반사하는 성질이 있습니다. 그림 1-3처럼 적외선을 흰색에 비추면 반사되어 감지 엘이디(LED)가 빛이 들어왔다는 것을 알게 됩니다. 검은색인 경우에는 빛을 흡수해 버리기 때문에 감지 엘이디(LED)로 빛이 들어오지 않습니다.

그림 1-3 라인 센서 작동 원리

 

라인 센서를 아두이노와 연결해서 코딩을 해볼까요? 준비물을 살펴봅시다.

 

라인 센서에는 4개의 핀이 있습니다. VCC, GND, DO, AO가 바로 그것이죠.

■ VCC는 볼티지 오브 커먼 콜렉터(Voltage of Common Collector)란 뜻인데 5V 전원과 연결합니다. V가 있으니 5V 전원과 연결한다고 기억하면 좋습니다. 플러스 극이라고 생각하면 됩니다.
■ GND는 그라운드(Ground)로 1편에서 배운 내용입니다. 아두이노의 그라운드 핀(GND)과 연결합니다. GND는 마이너스 극이라고 생각하면 됩니다.
■ DO는 디지털 아웃풋(Digital Output)입니다. 이 핀에서 라인 센서의 디지털 값을 보냅니다.
■ AO는 아날로그 아웃풋(Analog Output)입니다. 이 핀에서 라인 센서의 아날로그 값을 보냅니다. 여기에서는 사용하지 않습니다.

 

라인 센서에서 파란색 엘이디(LED)는 빛이 나가는 적외선 엘이디(LED)입니다. 검은색 엘이디(LED)는 빛이 들어오는 것을 확인하는 감지 엘이디(LED)입니다. 라인 센서의 앞쪽에는 전원이 들어오면 켜지는 전원 표시 엘이디(LED)가 있습니다.

 

그리고 빛이 들어온 것을 확인했을 때 켜지는 감지 표시 엘이디(LED)가 있습니다. 또한, 센서의 민감도를 바꾸는 저항이 있습니다. 드라이버로 돌려서 센서의 민감도를 바꿀 수 있습니다.

그림 1-4 라인 센서 앞면과 뒷면

라인 센서에 핀이 나와 있습니다. 이렇게 나와 있는 핀과 아두이노를 연결하기 위해서는 암-수 점퍼 케이블이 필요합니다. 1편에서 배운 내용을 복습하겠습니다. 암-수는 암컷과 수컷을 의미합니다. 케이블에서 구멍이 있는 것은 암, 핀이 있는 것은 수라고 합니다. 어때요? 참 쉽죠? 


그리고 1편에서 배웠던 브레드보드를 다시 살펴보겠습니다.

그림 1-5 브레드보드

 

브레드보드는 전자부품을 쉽게 연결하기 위해서 만든 도구입니다. 원래는 납을 뜨겁게 녹여서 전자부품을 연결해야 합니다. 납땜을 할 때는 인두기라는 도구를 사용해야 합니다. 인두기가 뜨거워지면 납을 녹입니다. 인두기는 위험하기도 하고 한 번 납땜한 부품은 다른 곳에 다시 사용할 수 없습니다.

 

하지만 브레드보드를 사용하면 이렇게 힘들게 납땜을 하지 않아도 됩니다. 라인 트랙 자동차를 만들기 위해서 작은 브레드보드를 사용하겠습니다. 브레드보드를 이용하여 라인 센서와 아두이노를 연결합니다. 5V에서 나온 전압이 라인 센서를 지나서 GND로 잘 들어오는지 확인합니다.

그림 1-6 라인 센서 1개 연결 회로

 

라인 센서의 VCC는 아두이노의 5V 전원 핀과 연결합니다. 라인 센서의 GND는 아두이노의 GND핀과 연결합니다. 그리고 DO는 아두이노 디지털 3번 핀과 연결합니다.

 

라인 센서의 DO 핀에서 디지털 값이 나와 아두이노 디지털 3번 핀으로 들어갑니다. 즉 DO 핀이 디지털 3번 핀에 전압을 주는 겁니다. 그림 1-7과 같이 코딩을 하고 잘 되는지 확인해 볼까요?

그림 1-7 디지털 3번 핀 읽기

 

<연결>-<펌웨어 업그레이드>를 순서대로 클릭합니다.

그림 1-8 펌웨어 업그레이드

 

업로드가 완료되면 초록색 깃발을 클릭합니다. 그리고 곰돌이가 어떻게 말하는지 잘 살펴봅니다. 라인 센서를 하얀색이나 검은색에 가까이 가져가도 곰돌이가 말하는 값이 바뀌지 않는 경우가 있습니다. 즉 곰돌이가 계속 0 또는 1이라고 말하는 것입니다. 이것은 센서의 민감도 때문입니다.

그림 1-9 라인 센서 뒷면

 

민감도 조절 저항을 부품 상자에 있는 드라이버로 돌려봅시다. 시계 방향으로 끝까지 돌리면 항상 0이라고 말합니다. 즉 라인센서를 어떤 색에 갖다대더라도 항상 흰색이라고 읽게 되는 것입니다.

 

라인센서가 흰색이라고 읽으면 3번 디지털 핀으로 전압을 주지 않습니다. 그러면 디지털 3번 핀의 값은 0이 되고 곰돌이는 0이라고 말합니다. 그리고 감지 표시 LED에 초록색 불이 들어옵니다.


반대로 시계 반대 방향으로 끝까지 돌리면 항상 1이라고 말합니다. 즉 라인 센서를 어떤 색에 갖다대도 항상 검은색이라고 읽게 되는 것입니다. 라인센서가 검은색이라고 읽으면 3번 디지털 핀에 전압을 줍니다. 그러면 디지털 3번의 값은 1이 되고 곰돌이는 1이라고 말합니다. 그리고 감지 표시 LED에 불이 꺼집니다.

 

센서의 민감도를 바꾸는 방법을 모르면 센서가 고장 났다고 생각할 수 있습니다. 그리고 센서마다 민감도가 다릅니다. 직접 드라이버로 민감도 조절 저항을 돌리고 흰색과 검은색에 가까이 가져가 봅니다. 색깔이 바뀔 때마다 곰돌이가 값을 다르게 말하면 민감도를 잘 맞춘 겁니다.


가로 10cm 세로 10cm 정도 되는 하얀색 종이와 가로 8cm, 세로 2cm 정도의 검은색 테이프나 검은색 종이를 준비합니다. 흰색 종이 가운데 검은색 테이프(또는 검은색 종이)를 그림처럼 붙입니다. 라인 센서를 흰색이나 검은색에 가까이 가져가 봅시다. 어떻게 되나요? 곰돌이가 말하는 값이 변하나요?

 

그림 1-10 라인 센서와 라인 트랙 축소판
그림 1-11 흰색을 읽었을 때

 

어때요? 참 쉽죠? 아두이노로 코딩을 하기 위해서는 이런 전자회로 지식을 잘 알고 있어야 합니다. 이렇게 하나씩 전자회로에 대한 지식을 배운다면 아두이노로 더욱 멋진 작품을 만들 수 있습니다.

 

이제 라인 센서가 흰색 읽으면 아두이노에 있는 엘이디를 끄고 검은색이면 엘이디를 켜는 프로그램을 만들어 보겠습니다. 우선 값을 저장할 수 있도록 변수를 하나 만들겠습니다.

 

<데이터&추가블록> 모음을 클릭합니다. 그리고 <변수 만들기>를 클릭합니다. 검은색이라는 변수를 하나 만듭니다.

그림 1-12 변수 만들기

 

검은색 변수 값이 1이라는 것은 라인 센서가 검은색을 읽었다는 뜻입니다. 이 조건을 만족시키면 [검은색] 변수의 값을 말합니다. 그리고 아두이노 보드에 있는 엘이디(LED)를 켭니다. 아두이노 보드에 있는 엘이디(LED)는 13번 핀과 연결되어 있습니다.

 

래서 13번 핀에 전압을 주면(켜짐) 엘이디(LED)가 켜집니다. 그리고 조금 기다리라고 <0.02초 기다리기> 블록을 넣었습니다.


만약 라인 센서가 흰색을 읽었다면 [검은색] 변수에 0이 저장됩니다. 그러면 [검은색] 변숫값이 1이라는 조건을 만족시키지 못합니다. 따라서 <아니면> 블록 안에 있는 블록들을 실행합니다. 우선 [검은색] 변숫값을 말합니다. 그리고 디지털 13번 핀에 전압을 주지 않아서(꺼짐) 엘이디(LED)가 꺼집니다.