[아두이노] 엔트리로 아두이노 제어

IOT/아두이노|2019. 10. 7. 09:00

[아두이노] 엔트리로 아두이노 제어



지난 시간까지 해서 S4A 스크래치와 ScratchX로 아두이노와 연결하여 제어를 해보았습니다. 오늘은 마지막으로 국산 엔트로로 아두이노를 연결하여 제어해 보는 시간을 갖도록 하겠습니다. 엔트리도 ScratchX 마찬가지로 온라인상에서 웹브라우저로 아두이노를 연결하여 제어를 하게 됩니다 ScratchX 플러그인을 설치하여 연결했다면 엔트리는 따로 PC에 연결 프로그램을 설치해야 연결 할 수 있습니다. 엔트리를 이용한 아두이노 제어는 의외로 간단하여 사용하기 편합니다.

이제부터 엔트리로 아두이노를 제어를 해봅시다.

1. 엔트리



엔트리 공식 사이트에 들어가사 작품만들기를 누르면 아래와 같이 기본 창이 뜹니다.


스크래치를 먼저 공부한 분들은 창이 처음에 좀 불편할 수 있고 블록들이 좀 더 많은데 스크래치는 간단히 최소 블록만 제공하는데 약간 엔트리는 약간 상황들을 더 추가한 블록들로 블록의 갯수가 좀 더 많습니다. 스크래치는 어떤 프로그램을 쓰더라고 기본베이스는 전부 동일합니다. 선택은 여러분들이 편한 걸 사용하시면 됩니다.

2. 엔트리에서 하드웨어 연결 프로그램 설치 및 연결


1) 하드웨어 연결 프로그램 설치


엔트리에 아두이노우노와 연결을 하기 위해서는 하드웨어 연결 프로그램을 설치해야 합니다.

하드웨어 블록은 누르면 아래와 같은 5개의 선택 항목이 나타납니다.


  • 연결 프로그램 다운로드 : 이 프로그램을 PC에 다운로드 받으시면 됩니다.
  • 연결 안내 다운로드 : 일반 PC 설치와 블루투스 설치에 관한 자세한 안내서입니다.
  • 엔트리 아두이노 소스 : 펌웨어 소스인데 안받으셔도 됩니다.
  • 하드웨어 연결하기 : 연결프로그램을 열고 연결하면 되기 때문에 구지 사용하지 않습니다.
  • 연결 프로그램 열기 : PC에 연결프로그램이 설치되어 있으면 이걸 클릭하면 연결프로그램이 실행 됩니다.

첫번째 연결 프로그램을 다운로드 받아서 설치하면 끝납니다.

2) 하드웨어 연결


연결 프로그램 열기를 클릭 하시면 PC에 설치된 연결 프로그램이 실행 되고 아래와 같은 창이 뜹니다.


위 그림을 보면 다양한 보드를 제공합니다. 아두이노 Uno 정품보드로 처음에 사용해 보세요. 그리고 초음파센서나 Servo모터를 사용할 경우 아두이노 Uno 확장모드를 사용하시면 됩니다.

아두이노 Uno 정품보드를 클릭을 해보세요. 아래와 같은 창으로 넘어갑니다.


현재 아두이노를 연결 안해서 연결중으로 표시되는 데 연결되면 연결성공이라고 뜹니다. 여기서, 처음 한번만 펌웨어 설치를 누르시면 됩니다. 연결이 제대로 안되면 드라이버 설치를 처음 한번 눌러서 설치하시면 됩니다. 참고로 이 창은 닫으시면 안되고 계속 열어놓으셔야 엔트리와 아두이노 간의 연결이 유지 됩니다.

3) 엔트리에서 아두이노가 인식 상태




위 그림처럼 "하드웨어가 연결되었습니다"라는 멘트가 뜨고 아두이노 Uno 정품보드 블록들이 생성 됩니다. 5개의 블록 뿐이 없습니다. 스크래치 블록과 5개의 블록을 가지고 블록코딩을 하시면 됩니다.

4) 엔트리에서 아두이노 Uno 정식보드 블록


5개의 블록들을 간단히 살펴보도록 하죠.ㅁ


analogRead(pin);

아날로그 입력으로 0~1023 사이의 값을 가져옵니다.



digitalRead(pin);

디지털 입력으로 해당핀에 0 or 1의값을 가져옵니다.



digitalWrite(pin, value)

디지털 출력으로 HIGH(켜기) or LOW(끄기)의 출력을 표현 하니다.



analogWrite(pin, value)

0~255사이의 아날로그 출력을 할 수 있습니다.



map(analogRead(pin), 0, 1023, 0, 100);

입력 숫자만 원하는 형태로 바꾸면 됩니다.

2. 엔트리와 아두이노 실험


실험은 아두이노 Uno 확장모드에서 이루어집니다. 아두이노 Uno 확장모드를 선택하고 펌웨어 설치를 다시 한번 해주세요.

그러면, 아래 그림처럼 블록이 몇개 더 생성 됩니다. 확장모드에서는 초음파센서와 서보모터와 피에저부조를 제어할 수 있는 블록이 추가되었네요.


1) 회로도





2) 블록 코딩



위 블록 코딩은 간단한 테스트 입니다.

첫번째 블록 코딩은 디지털 13번 핀을 1초 단위로 깜박이는 "Blink예제" 입니다.
두번째 블록 코딩은 거리라는 변수에 만들고 그 변수에 초음파센서값을 저장합니다. 그리고 엔트리봇이 1초동안 초음파센서로 측정한 거리 만큼 x좌표로 이동시키라는 블록 코딩입니다.

지난 시간에 다른 스크래치 프로그램에서 변수 선언에 배웠고 엔트리에서도 동일하니깐 설명은 생략합니다. 초음파센서는 아두이노에 연결하는 Trig, Echo핀만 주의해서 연결하고 해당 핀 값을 블록코딩에 정확히 기입하셔야 정확한 결과가 나옵니다.

3) 결과


영상을 보시면 왼쪽에 원이 있습니다. 이 원은 1초 단위로 색이 바뀝니다. 아두이노 Red LED와 같은 시간으로 동작합니다. 즉, 엔트리의 원와 아두이노 LED를 동일한 시간대에 동작을 수행합니다. 엔트리와 아두이노의 표현을 일치시키는 느낌이지요. 나중에 이런 느낌의 표현은 엔트리를 가지고 아두이노를 제어 할 때 많이 사용합니다.

그리고 거리는 제가 가지고 있는 초음파센서가 최대 145정도 거리 값이 나오더군요. 0~145사이를 앞에 장애물이 감지 될때 거리를 측정 할 수 있네요. 0~145사이의 x좌표로 엔트리봇이미지가 이동하게 됩니다. 별 의미 없고 초음파 센서로 엔트리봇을 움직이게 하는 간단한 테스트 입니다.


마무리


이렇게 해서 S4A 스크래치, ScratchX, 엔트리에서 아두이노를 연결하는 방법을 간단히 알아 보고 간단한 예제로 제어까지 하였습니다. 얼핏 보면은 스크래치로 아두이노 제어하는게 편해 보일꺼에요. 그냥 해당 블록을 배치하고 아두이노를 코딩하지 않고 쉽게 제어가 되기 때문에 구지 아두이노를 C언어를 공부하고 코딩 할 필요가 있을가 하고 생각하시는 분들도 있을 거에요. 그런데 실상은 전혀 그렇지 않습니다. 더 복잡하고 더 어렵습니다.

그 이유는 간단한 제어는 이미 블록이 제공 되기 때문에 그 블록을 사용하여 쉽게 아두이노 동작을 수행 했을 뿐 조금만 변화를 주면 블록 코딩은 너무 복잡해 집니다. 오늘 배운 아두이노 Uno 정품보드의 블록을 보시면 5개 블록만 제공합니다. 이 블록을 가지고 초음파센서와 Servo모터를 제어한다고 생각해 보세요. 답이 안보이죠. 다행히 아두이노 Uno 확장모드에서 해당 블록을 제공하기 때문에 쉽게 제어 할 수 있는 것 뿐이죠.

즉, 스크래치로 아두이노를 제어하기 위해서는 제어 할 블록이 없다면 그 블록은 여러분들이 만드셔야 합니다. 그리고 만들기 힘들 경우는 해당 펌웨어 소스에 가서 일부 소스 내용을 수정을 해야 합니다. 아니면 누군가 만들어 놓은 펌웨어 소스를 가져다가 사용해야 합니다. 스크래치로 수많은 부품을 제어를 할 때 쉽게 딱 만든 블록으로 코딩하기 힘듭니다. 오픈 블록이나 펌웨어 소스를 쉽게 찾을 수 없고 찾는 다 해도 단적인 제어만 가능하고요 여러 부품들을 연계해서 제어 한다면 무지 힘들꺼에요. 어느 순간이 되면 그냥 프로그램언어를 배우고 함수 단위 코딩을 하는게 더 쉽다는 것을 느끼게 될 꺼에요.

C언어 기본 문법을 배우고 오픈 라이브러리 함수들을 사용하여 함수 단위로 C언어 코딩을 하는게 나을 거라 생각 됩니다. 처음에는 C문법을 배우는게 좀 버거울 수 있지만 기본 개념만 잡아 놓으면 오히려 스크래치를 제어하는 것보다 쉽게 다양한 전자부품을 제어 할 수 있을 거에요. 스크래치는 그냥 어린아이들에게 전자 공부를 쉽게 하기 위한 도구로만 생각하시면 됩니다.

그리고, 스크래치와 아두이노 연계는 프로세싱과 아두이노 연계과 유사힙니다. 프로그램 언어에 관심이 있으면 처음부터 프로세싱과 아두이노로 나아가는 걸 추천 드려요. 처음에는 프로세싱와 아두이노 연계 표현이 어렵지만 나중에 어느정도 궤도에 오르시면 오히려 자유로운 표현을 쉽게 할 수 있어 편하게 느끼실 꺼에요. 참고로, 프로세싱과 순수 아두이노 소스는 오히려 오픈 소스가 더 많고 쉽게 찾을 수 있기 때문에 프로그램 언어 독해력만 있으면 충분히 독학으로 공부 할 수 있으니깐 한번 도전해 보세요.


댓글()