본문 바로가기

메이커활동/HW&SW

LabVIEW 를 이용한 Arduino 활용

LabVIEW 를 이용한 Arduino 활용

Arduino 는 그 자체로도 꽤나 괜찮은 도구이다. 하지만 그 도구가 PC와 만나면 더 큰 활용이 가능해진다. 그래서 보통은 Processing 이라는 프로그램을 사용한다. 이유는 기존의 PC용 프로그램을 만든다는 것이 그리 만만하지 않기 때문이다. 특히 Windows 운영체제에서 프로그램을 한다는 것은 전공자가 아닌 이상은 쉽지 않다.

그래서 아두이노를 이용하된 컴퓨터공학을 전공하지 않은 이들을 위해 특히 예술계통에서 컴퓨터 그래픽등으로 작업을 하는 이들을 위해 나온 것이 Processing 이라는 프로그램툴이다. C++, C# 등보다 어렵지 않고, 윈도우 프로그램도 며칠만 배우면 가능해진다. Visual C++ 을 배워야하고, API 니, MFC 니 이런것들을 몰라도 된다는 것이 얼마나 다행인가.

그 Processing 외에 또 몇가지 방법들이 있다. 그 중 하나로 LabVIEW 를 이용한 아두이노의 활용을 여기서는 다루고자 한다.

PC 프로그램을 LabVIEW 라는 툴로 하면 된다. LabVIEW 는 NI 에서 나온 제어용 프로그램툴이다. 그래픽으로 되어 있어 기존의 타이핑하는 방식이 아닌 선으로 각 블럭을 이어주는 방식이다. 프로그램을 전공하지 않은 공학자나 엔지니어들에게는 상당히 편한 프로그램방식이다. 효율도 많이 좋아졌다. 

순서대로 하나씩 진행해보도록 한다.

우선 준비물이 필요하다. 

준비물 : LabVIEW 프로그램, Arduino Uno 또는 Mega2560

1. PC 에 LabVIEW 를 설치한다. NI-VISA 드라이버도 설치한다. 보통 LabVIEW 를 설치하고 이어서 Device Driver 를 설치한다. 그때 NI-VISA 를 꼭 선택해서 설치한다. 혹시 빠뜨렸더으면 나중에 Device Driver 만 따로 설치하면서 NI-VISA를 설치해주면 된다. 

2. LIFA 를 설치해 준다. LIFA 는 LabVIEW Interface For Arduino 의 약자로 랩뷰프로그램안에서 아두이노모듈을 가져올 수 있게 해준다. 위치는 http://sine.ni.com/nips/cds/view/p/lang/ko/nid/209835 이다. 만약 이 글 이후에 링크위치가 바뀌었을 경우 랩뷰홈페이지나 혹은 구글등에서 LabVIEW 와 LIFA 를 함께 검색하면 쉽게 찾을 수 있다.

3. 혹은 2번을 쉽게 하기 위해서 VIPM 이라는 프로그램을 설치해서 사용할 수도 있다. VIPM 은 VI Package Manager 의 약자로 랩뷰에서 추가 설치되는 VI 들을 관리하는 툴이다. VIPM 은 http://jki.net/vipm/download 에서 다운받아 설치할 수 있으며 필요한 툴을 쉽게 설치 할수 있다. 

4. 이제 사용하는 아두이노에 맞는 IDE 와 드라이버를 설치한다. 이미 아두이노를 사용중이면 이 과정을 필요없다. 참고로 LabVIEW 로 아두이노를 사용하기 전에 우선 아두이노로 먼저  LED 깜박이는 정도까지는 하기 바란다. 

5. 이제 아두이노 IDE 를 열고 NI LabVIEW 사에서 준비해준 Firmware 인 
LIFA_Base.ino를 아두이노안에 써준다. LIFA_Base
.ino 파일은 다음 위치
에 있다.
  • C:\Program Files\National Instruments\LabVIEW 2013\vi.lib\LabVIEW Interface for Arduino\Firmware\LIFA_Base
필자의 경우 LabVIEW 버젼이 2013 이다. 버젼이 2010 이라면 ...\
LabVIEW 2010\... 에서 찾으면 된다.

6. ni 사에서 준비한 예제들은 다음 링크로 가면 있다. 하나씩 실행해보고 그 다음 자신에게 맞게 고쳐주면 된다.
  • https://decibel.ni.com/content/groups/labview-interface-for-arduino
** 참고로 우노와 메가는 보드타입이 다르다. 보통 예제들은 UNO 를 중심으로 되어 있으니 메가를 사용하는 사람은 참고하기 바란다.


메가보드에 LED 와 가변저항을 연결하여 저항값에 따라 LED 점멸 속도를 조절하는 가벼운 예제를 만들어보았다. 디지털 출력과 아날로그 입력 사용시 정상적으로 작동하는지 알기 위해서 만들어본 예제이고, 정상적으로 작동되었다.


NI 에서 제공하는 기본예제는 UNO 를 기준으로 한다. 그리고 PC 와 Arduino 가 연결되는 COM포트도 달라진다. 필자의 PC 에서는 COM6 를 사용하고 있으며 Mega 2560 보드를 사용했다.

 
LED 불빛이 점멸하는 것을 동영상으로 찍을까하다가 무슨 대단한 프로젝트를 한것도 아니데 이런것까지 동영상을 찍을 필요가 있나 싶어 그만둔다.

참고로 몇가지 시험결과로 디지털 및 아날로그 입출력과 관련되어 샘플을 PC 쪽으로 가져오는데 걸리는 시간은 기본 25ms 정도로 보인다. 이정도면 100ms 에 4번, 1초에 40번의 샘플링이 가능해진다. 40Hz 짜리 DAQ 라는 셈인데.... 내부의 레지스터를 조금 더 최적화시키든가하면 속도는 조금 더 빨라지긴하겠지만 솔직히 8비트 마이크로프로세서에 이보다 더한걸 바란다는 건 지나친 욕심이다. 속도가 더 빨라지려면 8비트짜리 MPU를 쥐어짜기보다는 32비트 Cortex-M3 쪽으로 넘어가는게 답이다.
 
현재 LabVIEW 에서 제공하는 LIFA 는 32비트 Arduino Due 의 사용은 제공하지 않는다. 굳이 사용하려면 방법이 없는 것은 아니다. 이를테면 DUE 를 Ethernet Shield 를 통해 PC 와 TCP/IP 통신이 가능하게 하고 LabVIEW 에서 TCP/IP 통신으로 DUE 를 통해 들어오는 값을 읽어주면 된다.