아두이노가 무엇입니까?
아두이노(Arduino)는 사용하기 쉬운 하드웨어와 소프트웨어를 기반으로 한 소스 오픈 전자 플랫폼입니다. 아두이노 보드는 입력-센서의 빛, 버튼의 손가락이나 트위터 메시지를 읽고 출력-전기 활성화, LED 켜기, 온라인 발표 내용으로 변환할 수 있습니다. 보드의 마이크로컨트롤러에 명령을 보내서 보드가 무엇을 해야 하는지 알려줄 수 있습니다. 이를 위해 아두이노 프로그래밍 언어(Wiring 기반)와 Arduino Software(Processing 기반)를 사용할 수 있습니다. 여러 해 동안 아두이노는 수천 개의 프로젝트의 대뇌로 일상 물품부터 복잡한 과학 기기까지 왔습니다. 학생, 아마추어, 예술가, 프로그래머, 전문가로 구성된 전 세계 창조자 지역사회가 이 개원 플랫폼 주변에 모여 그들의 공헌이 누적되어 놀라운 방문 지식을 형성하여 초보자와 전문가에게 큰 도움이 되었습니다. 아두이노는 Ivrea Interaction Design Institute에서 태어나 간단한 빠른 원형 제작 도구로 전자와 프로그래밍 배경이 없는 학생들을 대상으로 합니다. 아두이노 판은 더욱 광범위한 지역사회에 접촉하자마자 새로운 수요와 도전에 적응하기 위해 제품을 간단한 8위판에서 사물인터넷 응용, 착용 가능, 3D 인쇄와 삽입식 환경의 제품으로 구분하기 시작했습니다.
아두이노의 주의사항
8비트 임베디드 시스템 프로그래밍에 있어서는 프로그램 최적화에 매우 신경써야 합니다. 마이크로 컨트롤러같이 메모리 리소스가 크게 제한되는 장치에서 프로그래밍을 할 경우 항상 주의해야 하는 부분입니다. 아두이노는 성능이 매우 떨어지기 때문에 다른 기계에서는 문제없을만한 부분이 유독 문제를 일으키기도 합니다. 컴파일은 잘 해놨는데 정작 보드에서는 장비가 멈춰버린다든지 합니다.
C에서 함수가 중복 호출될 경우 스택 오버플로를 일으키면서 장비가 정지될 수 있습니다. 예를 들어, 장비가 정지했는데 개발 도중에 동작 테스트를 위해 추가한 Serial.print();문 몇 줄을 지워보니 추가한 코드들이 갑자기 정상적으로 돌아가는 경우도 있습니다. 이 때문에 deploy판에 디버그용 print를 지우고 보내는 것은 기본입니다. 하드웨어 시리얼로 블루투스 통신을 한다던지 등 예외적인 경우에만 놔두는 것이 좋습니다.
아두이노 자체의 성능 제약을 피하려면, 라즈베리 파이 같은 다른 장치를 연결해 연산은 다른 데에서 처리하고, 아두이노는 센서나 액추에이터 등을 관리하는 기계로만 사용하는 게 나을 수도 있습니다. 아두이노에 Firmata라는 펌웨어를 올리면 Firmata 프로토콜을 통해서 외부에서 아두이노를 컨트롤할 수 있게 됩니다. Processing을 비롯해 꽤 많은 언어를 이용하여 Firmata로 아두이노를 컨트롤할 수 있으니 이쪽을 알아보는 것도 괜찮습니다. 이걸 잘 활용하면 아두이노에는 최소한의 코드만 올리고 연산 부하가 큰 나머지 부분은 PC나 라즈베리 파이 같은 별도의 장치의 자원을 사용하여 돌리는 식으로 동작시키는 게 가능합니다. 실제로 많은 작업들이 이렇게 제작된다. 판이 크지 않다고 하더라도 외부 컴퓨터-아두이노 사이의 통신이 필요한 프로젝트인 경우, 시리얼 통신으로 메시지를 주고받는 것보다 자연스러운 형태로 코딩이 가능하므로 Firmata를 적극 사용해보는 것도 괜찮습니다. 이런 과정이 번거롭다면 내부 플래시와 램 용량이 크게 늘어난 아두이노 두에 혹은 2016년 기준 최신형인 제로나 전술한 101 또는 Primo, Star를 쓰는 것도 좋은 선택입니다.