본문 바로가기

[아두이노+ 랩뷰 컴파일러] Serial- monitoring GUI

반응형

아두이노와 PC를 연결해서 독립적으로 구동하는 아두이노에서 생성하는 값을 PC의 GUI를 통해 모니터링하는 예제다. 상당히 유용한 예제인 것 같다. 왜냐하면 임베디드로 특정 동작을 하고 있지만 그것의 동작을 확인하려면 LCD를 연결하거나 해야하기 때문이다. 그 대신에 이 코드를 사용해서 PC의 큰 모니터에서 데이터를 모니터링 하면서 필요에 따라 Logging도 하면 편리할 것이다. 


[준비물]


아두이노&USB케이블


[연결방법]

별도의 연결 필요없음. 아두이노 보드만 가지고 실습



[PC 블럭다이어그램&프런트패널]

우선 아두이노와 통신을 하기 위해서는 아래 주소에 있는 파일을 실행해야한다.

C:\Program Files (x86)\National Instruments\LabVIEW 2015\examples\Aledyne-TSXperts\Arduino Compatible Compiler for LabVIEW\Serial\Monitoring GUI 폴더에서 Serial - Monitoring GUI - Host PC 파일을 실행시킨다.




코드에 대한 해설은 다음과 같다.


1. 아두이노타겟에 Serial - Monitoring GUI - Arduino Target.vi를 컴파일 및 다운로드를 하기 위해서  Compiler.vi를 호출한다. 

2. 시리얼통신 파라미터 (매개변수) 환경을 설정한다.

3. 바이트에 걸쳐 남아있는 시리얼 버퍼를 쓸어낸다.

4. 150ms로 모니터링 코드를 실행하라

5. 바이트로 들어오는 시리얼 포트를 확인

6. 만약 시리얼 포트에 바이트가 있다면, 읽어서 Waveform Chart에 디스플레이한다.

7. 들어오는 시리얼 바이트를 읽어서, 더블 데이터 타입으로 변환하고 Waveform Chart에 업데이트한다. 

8. 만약에 Pause button이 눌러진다면, Arduino target VI가 시리얼통신을 통해 데이터포인트를 보내는 것을 일시정지 하기 위한 바이트를 시리얼포트에 보낸다.

만약 버튼이 눌려져 있지 않다면 일시정지 바이트를 보내지 않을 것이다.

9. 일시정지 바이트를 시리얼 통신을 통해 전송한다.

10. 시리얼 통신을 닫는다.

11. 에러를 디스플레이 한다.

 

NOTE: 에러와이어는 플로우컨트롤을 위한 것 뿐이며, 클러스터 안의 데이터는 아두이노 타겟에 접속하거나 쓸 수 없다.


Serial - Monitoring GUI - Host PC의 프런트패널이다. 포트가 맞는지만 확인해주면 문제 없이 다음과 같은 사인웨이브가 들어오는 것을 볼 수 있다.



[아두이노 블럭다이어그램&프런트패널]

이번에는 아두이노에는 어떤 코드가 들어갔는지 확인해보자. Serial - Monitoring GUI - Host PC에 1번 설명을 보면 아두이노타겟에 컴파일을 먼저 실행한다. 여기에 컴파일하여 들어가는 VI가 아래 블럭다이어그램이다. 이 VI를 찾으려면 랩뷰의 Tool>>Arduino Compatible Compiler for Labview를 실행해서 컴파일러 팝업창이 뜨면 File>>Example>>Serial>>Serial-Monitoring GUI - Arduino Taget 로 해서 불러오기를 하면된다.


1. Serial Open.vi를 사용하여 PC 시리얼통신을 연결한다.

2. Serial Flush.vi를 사용하여 나가는 시리얼데이터전송을 완료시킴으로서 시리얼 드라이브 기능을 확실히한다.

3. Serial Set Timeout.vi를 호출해서 Serial Read.vi가 데이터를 기다리는 최대시간을 지정한다.

4. 데이터 포인트를 전송중이라면 While 루프를 1초에 한번씩 실행하고 일시정지가 되어있다면은 250ms에 한번씩 While 루프를 실행한다. 

5. 무한루프 실행.

6. Serial Read Bytes.vi를 호출하여 host PC VI에서 일시정지/다시시작 명령을 보냈는지 확인한다.  

7. 받은 바이트가 있다면 그것을 host PC VI에서 전송을 일시정지 한것이고, 만약에 시리얼포트에 바이트가 없다면 계속해서 사인웨이브를 만들어내고 만들어낸 데이터 포인트를 host PC로 전송한다. 

8. 사인웨이브 데이터 포인트를 생성하고 거기에 줄바꿈 문자를 추가한다. 

9. 시리얼 통신을 사용한 사인웨이브 데이터 포인트 전송을 위해 Serial Write String.vi를 호출 

10. Host PC와의 시리얼 연결을 끝내기 위해 Serial Close.vi를 호출한다.


NOTE: 에러와이어는 플로우컨트롤을 위한 것 뿐이며, 클러스터 안의 데이터는 아두이노 타겟에 접속하거나 쓸 수 없다.


프런트패널에는 특별한 내용은 없다. 참고로 읽어보면 된다.



반응형
-->