- Arduino(아두이노) ?
Arduino(이하 아두이노)란 오픈소스를 기반으로 한 단일보드 마이크로컨트롤러로 완성된 보드와 관련한 개발도구 및 환경을 말합니다. 이탈리아에서 2005년 고안되었으며, 하드웨어에 익숙치 않은 학생들이 자신의 디자인을 쉽게 제어하기 위해 제안된 제품입니다.
처음엔 AVR 기반으로 설계되어 현재까지도 아트멜 AVR 계열 보드가 보편적이며, ARM계열의 제품 또한 존재합니다.
정품은 이탈리아 제품이지만, 중국제 저가 호환보드가 많이 있으며, 국내에선 '오렌지보드'라는 호환 제품이 있습니다.
성능은 약간씩 편차가 있지만 크게 두드러지진 않으며, 중국제 호환보드는 아무래도 마감이 좀 정교하지 못한 반면, 국산 호환보드인 오렌지 보드는 마감도 훌륭하며 아두이노 우노 R3와 완벽호환되는 특징도 있습니다.
- 아두이노 보드의 종류
아두이노 개발을 처음 공부할때 아두이노 보드의 선택에서 많은 분들이 고민하십니다. 아두이노 보드는 2016년말 현재 17가지 종류가 있으며 사용 목적에 따라 각 보드의 선택또한 중요합니다.
일반적으로 아두이노 관련 공부를 처음 하실때는 아두이노 우노를 많이 선택하며, 더 많은 제어 핀과 퍼포먼스를 필요로 할 때는 아두이노 메가를 선택하는 경우도 있습니다.
제 경우 아두이노 메가로 처음 아두이노에 입문하였습니다.
기본 아두이노 보드 외에도 이더넷 쉴드, 와이파이 쉴드, 블루투스 쉴드 등 보드에 체결하여 기능을 확장하는 확장보드도 있으니 이 부분은 아두이노 홈페이지의 제품정보(https://www.arduino.cc/en/Main/Products)를 확인하시는게 더 정확하겠습니다.
- Arduino Mega 2560
제가 처음 아두이노에 입문한 메가2560 보드는 아두이노 우노 보드에 입출력핀과 퍼포먼스를 확장한 보드입니다.
형상은 다음 그림과 같습니다.
아두이노는 포럼 활동이 활발하며, 각종 정보가 많아 초심자도 쉽게 공부할 수 있다는 장점이 있습니다.
제 경우엔 아두이노 관련 서적은 한권도 없이 포럼과 네이버 카페를 참고하여 공부하고, 관련 프로젝트를 진행하고 있습니다.
Ethernet shield
아두이노는 소스 코드를 빌드하여 업로드 하기 위해 USB 케이블을 사용합니다. 이 USB 케이블로 전원또한 인가되며, USB 케이블이 아닌 일반 DC 전원 잭도 포함하고 있습니다. USB 케이블로 PC와 연결되어 있으면 이 USB 케이블을 이용하여 PC와 시리얼 통신이 가능합니다. 하지만 제 경우 다수의 아두이노 보드를 하나의 PC로 제어해야 하며, 데이터 송수신의 명확성을 위하여 TCP/IP 통신 패킷으로 각 아두이노 메가 보드를 제어해야 했습니다.
이때 필요한 것이 Ethernet shield(이하 이더넷 쉴드) 입니다.
아두이노 메가(또는 우노)보드 위에 체결하면 일반 랜 케이블을 이용하여 local network을 통한 제어가 가능해집니다.
이더넷 쉴드에 대한 예제 코드 또한 쉽게 구할 수 있으며, 아두이노에서의 이더넷 서버/클라이언트 생성이 매우 쉽습니다.
이더넷 쉴드는 아두이노 메가(또는 우노)의 9~12번 핀(SPI communication pin)을 사용합니다.
제 프로젝트에서 사용하는 IC 중 TLC5940 이라는 LED 제어 드라이버 IC는 아두이노 메가의 9, 11, 12번 핀을 사용하기 때문에 소스코드 작성에 약간의 주의가 필요했습니다.
이더넷 쉴드가 송/수신한 정보를 아두이노 보드에서 처리할때 11, 12번의 SPI 핀을 사용하기 때문에, 이 신호가 TLC5940 IC에는 노이즈 신호로 들어가기 때문입니다. TLC5940을 제어할 때 송/수신이 발생하면 TLC5940이 오작동을 일으키게 됩니다.
제 경우, 송/수신 중 TLC5940 제어를 해야하는 시점에서 Boolean flag를 통해 송/수신을 잠시 중단한 후 IC제어가 끝난 시점에서 다시 송/수신을 재개하는 방식으로 처리하였습니다.
업무상 필요에 의해 갑작스럽게 아두이노를 사용하게 되었습니다.
갑자기 시작했지만, 다행히 넷상에 정보가 워낙 방대하기에 찾아가며 공부하기는 수월하더군요.
지금은 프로젝트에서 사용하기에 계속 하겠지만, 프로젝트가 끝나면 기껏 공부한 내용을 잊어버릴까 싶어 블로그에 아두이노 카테고리를 만들어 그간 공부한 내용 및 제 프로젝트에 대한 로그를 남기고자 합니다.
아두이노 카테고리의 첫글은 간단히 이정도 선에서 마무리 합니다.