<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NTREXGO - 디바이스마트, 엔티렉스 컨텐츠 통합 사이트 &#187; 예제</title>
	<atom:link href="http://www.ntrexgo.com/archives/tag/%ec%98%88%ec%a0%9c/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ntrexgo.com</link>
	<description>엔티렉스, 디바이스마트 컨텐츠 통합 사이트</description>
	<lastBuildDate>Thu, 03 Mar 2022 06:47:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>대용량 모터 연결하기</title>
		<link>http://www.ntrexgo.com/archives/20871</link>
		<comments>http://www.ntrexgo.com/archives/20871#comments</comments>
		<pubDate>Thu, 14 Nov 2013 04:34:34 +0000</pubDate>
		<dc:creator>NTRexLAB</dc:creator>
				<category><![CDATA[--MoonWalker Applications]]></category>
		<category><![CDATA[blog-posts]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[DC]]></category>
		<category><![CDATA[MoonWalker]]></category>
		<category><![CDATA[motor]]></category>
		<category><![CDATA[동영상]]></category>
		<category><![CDATA[동영상강의]]></category>
		<category><![CDATA[예제]]></category>
		<category><![CDATA[제어기]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=20871</guid>
		<description><![CDATA[동영상 강의를 하면서 항상 MW DCM 시리즈를 대상으로 했는데요. 이번에는 대용량인 MW-MDC24D500D모델을 대상으로 할려고합니다. 기능과 운용방법은 동일하기 때문에 이전 강의를 참조하시면 됩니다. 이번에는 결선에 대해 이야기를 할려고 합니다.

&#160;
MoonWalker MW-MDC24D500D 모델은 각 채널당 최대 연속 구동 전류가 40A인 채널이 2개가 있는 모델입니다. 용량이 높죠. 그래서 외형적 크기도 크답니다.  일단 이번 예제로 다룰 주행 로봇은

&#160;
NT-TriWheel[바로가기]이라는 제품으로 그 안에 장착된 모터가 용량이 높습니다.

&#160;
위에 보이는 사양대로 높죠. 어차피 10A만 넘어가도 MW-MDC24D200 시리즈로는 구동시키기 어렵습니다. 그래서 MW-MDC24D500 시리즈로 구동을 해보는 예제로 괜찮을 듯 합니다.

&#160;
DCL 시리즈의 엔코더 연결 커넥터의 핀맵입니다.


&#160;
그에 따른 배선도 입니다. 이전 동영상 강의까지 다 보셨다면 큰 무리없이 잘 연결하실 거라 생각합니다.

&#160;
대용량이다 보니 MW-MDC24D500시리즈는 일반적인 작은 시스템에...]]></description>
				<content:encoded><![CDATA[<p>동영상 강의를 하면서 항상 MW DCM 시리즈를 대상으로 했는데요. 이번에는 대용량인 MW-MDC24D500D모델을 대상으로 할려고합니다. 기능과 운용방법은 동일하기 때문에 이전 강의를 참조하시면 됩니다. 이번에는 결선에 대해 이야기를 할려고 합니다.</p>
<div class="symple-box red none" style="text-align:center; width:100%;"> 
<strong><a href="http://www.ntrexgo.com/moonwalker-%EC%86%8C%EA%B0%9C" target="_blank">MoonWalker 전체 소개 페이지 바로가기</a></strong><br />
</div>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0013.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20872" alt="001" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0013-620x511.jpg" width="620" height="511" /></a></p>
<p>&nbsp;</p>
<p>MoonWalker MW-MDC24D500D 모델은 각 채널당 최대 연속 구동 전류가 40A인 채널이 2개가 있는 모델입니다. 용량이 높죠. 그래서 외형적 크기도 크답니다.  일단 이번 예제로 다룰 주행 로봇은</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0022.jpg" rel="lightbox[20871]"><img class="aligncenter size-full wp-image-20873" alt="002" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0022.jpg" width="455" height="432" /></a></p>
<p>&nbsp;</p>
<p>NT-TriWheel[<a href="http://www.ntrexgo.com/archives/8228" target="_blank">바로가기</a>]이라는 제품으로 그 안에 장착된 모터가 용량이 높습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0032.jpg" rel="lightbox[20871]"><img class="aligncenter size-full wp-image-20874" alt="003" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0032.jpg" width="598" height="464" /></a></p>
<p>&nbsp;</p>
<p>위에 보이는 사양대로 높죠. 어차피 10A만 넘어가도 MW-MDC24D200 시리즈로는 구동시키기 어렵습니다. 그래서 MW-MDC24D500 시리즈로 구동을 해보는 예제로 괜찮을 듯 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0042.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20875" alt="004" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0042-620x305.jpg" width="620" height="305" /></a></p>
<p>&nbsp;</p>
<p>DCL 시리즈의 엔코더 연결 커넥터의 핀맵입니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0052.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20876" alt="005" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0052-620x401.jpg" width="620" height="401" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0062.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20877" alt="006" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0062-620x315.jpg" width="620" height="315" /></a></p>
<p>&nbsp;</p>
<p>그에 따른 배선도 입니다. 이전 동영상 강의까지 다 보셨다면 큰 무리없이 잘 연결하실 거라 생각합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0071.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20878" alt="007" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0071-620x312.jpg" width="620" height="312" /></a></p>
<p>&nbsp;</p>
<p>대용량이다 보니 MW-MDC24D500시리즈는 일반적인 작은 시스템에 비해 굵은 선을 사용하고 있는데요. 그래서 위와 같이 연결하시는게 좋습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0081.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20879" alt="008" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0081-620x382.jpg" width="620" height="382" /></a></p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0091.jpg" rel="lightbox[20871]"><img class="aligncenter size-full wp-image-20880" alt="009" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0091.jpg" width="591" height="431" /></a></p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0101.jpg" rel="lightbox[20871]"><img class="aligncenter size-full wp-image-20881" alt="010" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0101.jpg" width="556" height="377" /></a></p>
<p>&nbsp;</p>
<p>안전을 위해 마무리는 절연테이프로^^</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0111.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20882" alt="011" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0111-620x615.jpg" width="620" height="615" /></a></p>
<p>&nbsp;</p>
<p>그리고 이렇게 전원과의 연결도 터미널 블럭을 사용하시기를 권장합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0121.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20883" alt="012" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0121-620x574.jpg" width="620" height="574" /></a></p>
<p>&nbsp;</p>
<p>연결을 모두 다 완료한 모습입니다.</p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0131.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20884" alt="013" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0131-620x503.jpg" width="620" height="503" /></a></p>
<p>&nbsp;</p>
<p>이미 여러면 나왔지만, 2채널형 모터 제어기를 두 바퀴 구동형으로 연결하시기 위해서는 한쪽 모터를 역방향으로 세팅하셔야합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0141.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20885" alt="014" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0141-620x510.jpg" width="620" height="510" /></a></p>
<p>&nbsp;</p>
<p>그리고, Pulse Input을 모두 Enable 시키시구요. 만약 속도나 토크 제어기가 세팅되기를 바라셨다면,  [<a href="http://www.ntrexgo.com/archives/19736" target="_blank">바로가기</a>]에 나타난 대로 속도나 토크 제어기의 게인값을 사용자의 환경에 맞게 맞추셔야합니다. 그리고 RC 조종기의 다양한 설정을 하시기 위해서는 [<a href="http://www.ntrexgo.com/archives/19523" target="_blank">바로가기</a>]에서처럼 설정을 바꾸고 테스트를 해보셔야합니다. 꼭, 모든 설정을 마친후에는 Write Configuration과 Save to Flash를 잊지 마시구요.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0151.jpg" rel="lightbox[20871]"><img class="aligncenter size-large wp-image-20886" alt="015" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0151-500x620.jpg" width="500" height="620" /></a></p>
<p>&nbsp;</p>
<p>그리고 RC 리시버와 연결하시면 되지요. 요즘 나타난 동영상에서 저희가 계속 사용하는 RC 리시버와 DSub15핀 커넥터를 연결하는 저 케이블도 문의하시는 분이 많아서 곧 액세사리로 등록할 예정이랍니다.^^</p>
<p style="text-align: center">
<object width="610" height="343">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="movie" value="http://www.youtube.com/v/GfNVR_ZRRQQ?autoplay=0&loop=0&rel=0" />
<param name="wmode" value="transparent">
<embed src="http://www.youtube.com/v/GfNVR_ZRRQQ?autoplay=0&loop=0&rel=0" type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" width="610" height="343">
</embed>
</object>


<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/20871/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>외부 MCU 보드에서 MoonWalker 제어기 다루기</title>
		<link>http://www.ntrexgo.com/archives/20483</link>
		<comments>http://www.ntrexgo.com/archives/20483#comments</comments>
		<pubDate>Wed, 13 Nov 2013 02:01:14 +0000</pubDate>
		<dc:creator>NTRexLAB</dc:creator>
				<category><![CDATA[--MoonWalker Applications]]></category>
		<category><![CDATA[blog-posts]]></category>
		<category><![CDATA[MoonWalker]]></category>
		<category><![CDATA[강의]]></category>
		<category><![CDATA[동영상]]></category>
		<category><![CDATA[동영상강의]]></category>
		<category><![CDATA[예제]]></category>
		<category><![CDATA[외부MCU보드]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=20483</guid>
		<description><![CDATA[오늘 다룰 예제는 MoonWalker를 외부 MCU보드에서 핸들링하는 것입니다. 많은 내용이 있는 것은 아니고 이렇게 하면 된다는 수준의 간단한 접근방법입니다. 자세한 사항은 매뉴얼을 확인하시면 됩니다.

&#160;

&#160;
일단 이전 동영상 강의에서도 계속 이야기하고 있지만, MoonWalker의 RS232신호 출력단과 MCU의 232출력단을 연결합니다.

&#160;
이때, TX와 RX의 연결이 올바른지 확인해주세요

&#160;
아주 간단하게 속도를 인가하는 명령을 함수로 구현했습니다. MoonWalker의 양바퀴(2채널)을 동시에 구동하기 위해서 사용하는 명령인 mvc를 사용하는 겁니다. 각종 설정을 Control UI Program으로 하는 방법은 역시 이전 동영상 강의를 확인해주셔합니다.

&#160;
위에서 만들어진 속도 구현 함수를 이용해서 양 바퀴에 속도를 인가하고 기다리고, 또 속도를 인가하는 명령을 가하고 있습니다.

&#160;
그리고, 저희 제품 중 하나인 STELLA를 이용하여 이렇게 직접 구동을 하고 있는 모습입니다. MoonWalker는 이렇게 간편한...]]></description>
				<content:encoded><![CDATA[<p>오늘 다룰 예제는 MoonWalker를 외부 MCU보드에서 핸들링하는 것입니다. 많은 내용이 있는 것은 아니고 이렇게 하면 된다는 수준의 간단한 접근방법입니다. 자세한 사항은 매뉴얼을 확인하시면 됩니다.</p>
<div class="symple-box red none" style="text-align:center; width:100%;"> 
<strong><a href="http://www.ntrexgo.com/moonwalker-%EC%86%8C%EA%B0%9C" target="_blank">MoonWalker 전체 소개 페이지 바로가기</a></strong><br />
</div>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0012.jpg" rel="lightbox[20483]"><img class="aligncenter size-large wp-image-20484" alt="001" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0012-620x452.jpg" width="620" height="452" /></a></p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0031.jpg" rel="lightbox[20483]"><img class="aligncenter size-large wp-image-20486" alt="003" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0031-620x375.jpg" width="620" height="375" /></a></p>
<p>&nbsp;</p>
<p>일단 이전 동영상 강의에서도 계속 이야기하고 있지만, MoonWalker의 RS232신호 출력단과 MCU의 232출력단을 연결합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0021.jpg" rel="lightbox[20483]"><img class="aligncenter size-large wp-image-20485" alt="002" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0021-620x175.jpg" width="620" height="175" /></a></p>
<p>&nbsp;</p>
<p>이때, TX와 RX의 연결이 올바른지 확인해주세요</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0041.jpg" rel="lightbox[20483]"><img class="aligncenter size-full wp-image-20487" alt="004" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0041.jpg" width="413" height="374" /></a></p>
<p>&nbsp;</p>
<p>아주 간단하게 속도를 인가하는 명령을 함수로 구현했습니다. MoonWalker의 양바퀴(2채널)을 동시에 구동하기 위해서 사용하는 명령인 mvc를 사용하는 겁니다. 각종 설정을 Control UI Program으로 하는 방법은 역시 이전 동영상 강의를 확인해주셔합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0051.jpg" rel="lightbox[20483]"><img class="aligncenter size-full wp-image-20488" alt="005" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0051.jpg" width="332" height="276" /></a></p>
<p>&nbsp;</p>
<p>위에서 만들어진 속도 구현 함수를 이용해서 양 바퀴에 속도를 인가하고 기다리고, 또 속도를 인가하는 명령을 가하고 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/11/0061.jpg" rel="lightbox[20483]"><img class="aligncenter size-full wp-image-20489" alt="006" src="http://www.ntrexgo.com/wp-content/uploads/2013/11/0061.jpg" width="595" height="607" /></a></p>
<p>&nbsp;</p>
<p>그리고, 저희 제품 중 하나인 STELLA를 이용하여 이렇게 직접 구동을 하고 있는 모습입니다. MoonWalker는 이렇게 간편한 코딩을 통해 쉽게 모터를 제어할 수 있도록 되어있습니다.</p>
<p style="text-align: center;">
<object width="610" height="458">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="movie" value="http://www.youtube.com/v/WHX7oZ2xkC8?autoplay=0&loop=0&rel=0" />
<param name="wmode" value="transparent">
<embed src="http://www.youtube.com/v/WHX7oZ2xkC8?autoplay=0&loop=0&rel=0" type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" width="610" height="458">
</embed>
</object>


<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/20483/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>아두이노에서 NT-ARSv1의 데이터를 받는 예제</title>
		<link>http://www.ntrexgo.com/archives/18397</link>
		<comments>http://www.ntrexgo.com/archives/18397#comments</comments>
		<pubDate>Mon, 16 Sep 2013 02:08:14 +0000</pubDate>
		<dc:creator>NTRexLAB</dc:creator>
				<category><![CDATA[--응용예제]]></category>
		<category><![CDATA[blog-posts]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ARS]]></category>
		<category><![CDATA[NT-ARSv1]]></category>
		<category><![CDATA[아두이노]]></category>
		<category><![CDATA[예제]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=18397</guid>
		<description><![CDATA[NT-ARSv1의 출력 데이터를 아두이노에서 해석하는 예제입니다. Roll, Pitch와 그 각속도 이렇게 4개의 값중에서 사용자가 선택할 수 있으며, 출력된 데이터는 문자열이 아니라 double형의 숫자로 받도록 했습니다. 이미 예전에 [바로가기]에서 NT-ARSv1의 데이터를 받는 부분을 다루었는데요. 당시에는 단순히 값을 한 번 확인하는 것과 아두이노와 ARS와의 연결에 대한 부분을 다루었다면 이번에는 약간 함수화를 했습니다. 기본적으로 하드웨어적인 연결은 [바로가기]와 같으니 먼저 읽고 넘어오시기 바랍니다.
&#160;

&#160;
일단 오늘 보여드릴 예제는 몇몇개의 함수로 구현되어 있어서 함수별로 하나씩 확인해보도록 하겠습니다.
[crayon-69d68756595ad834670374/]
먼저 getARSresultAtOnce() 함수입니다. 이 함수는 NT-ARSv1의 데이터를 STRING의 형태로 저장하는 것이 목적입니다. 여러가지 형태로 다양하게 사용하실려면 이 함수만 사용하신 다음 간편하게 응용하시면 됩니다. 함수이름에도 나타나 있지만, ARS의 &#60;CAO&#62;명령을 사용합니다. 만약 사용자가 &#60;CAH&#62;명령을...]]></description>
				<content:encoded><![CDATA[<p>NT-ARSv1의 출력 데이터를 아두이노에서 해석하는 예제입니다. Roll, Pitch와 그 각속도 이렇게 4개의 값중에서 사용자가 선택할 수 있으며, 출력된 데이터는 문자열이 아니라 double형의 숫자로 받도록 했습니다. 이미 예전에 [<a href="http://www.ntrexgo.com/archives/17654" target="_blank">바로가기</a>]에서 NT-ARSv1의 데이터를 받는 부분을 다루었는데요. 당시에는 단순히 값을 한 번 확인하는 것과 아두이노와 ARS와의 연결에 대한 부분을 다루었다면 이번에는 약간 함수화를 했습니다. 기본적으로 하드웨어적인 연결은 [<a href="http://www.ntrexgo.com/archives/17654" target="_blank">바로가기</a>]와 같으니 먼저 읽고 넘어오시기 바랍니다.</p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/08/0011.jpg" rel="lightbox[18397]"><img class="aligncenter size-large wp-image-17655" alt="001" src="http://www.ntrexgo.com/wp-content/uploads/2013/08/0011-620x527.jpg" width="620" height="527" /></a></p>
<p>&nbsp;</p>
<p>일단 오늘 보여드릴 예제는 몇몇개의 함수로 구현되어 있어서 함수별로 하나씩 확인해보도록 하겠습니다.</p><pre class="crayon-plain-tag">String getARSresultAtOnece() {
  String outputValuesOfARS = "";

  Serial1.print("&lt;CAO&gt;");

  delay(2);

  while (Serial1.available()) {
    char incomingChar = Serial1.read();
    outputValuesOfARS += incomingChar;
  }

  return outputValuesOfARS;
}</pre><p>
먼저 getARSresultAtOnce() 함수입니다. 이 함수는 NT-ARSv1의 데이터를 STRING의 형태로 저장하는 것이 목적입니다. 여러가지 형태로 다양하게 사용하실려면 이 함수만 사용하신 다음 간편하게 응용하시면 됩니다. 함수이름에도 나타나 있지만, ARS의 &lt;CAO&gt;명령을 사용합니다. 만약 사용자가 &lt;CAH&gt;명령을 사용하고자 하시면 이후 코딩을 다르게 작성하셔야합니다. 그리고 6번 행의 delay문은 &lt;CAO&gt;명령을 하달한 다음 바로 시리얼 데이터를 읽도록 해버리면 미처 데이터가 도착하기 전에 지나가버립니다. 그래서 적절한 시간만큼 기다리라고 해둔겁니다. 물론 데이터가 실제로 들어올때까지 기다리라는 조건문을 넣어둘 수도 있지만, 그러면 또한 여러가지 이유로 실제 데이터가 도착하지 않는 에러 상황이 발생했을때, 대응하는 코딩을 해야하기도 하고, 이 글은 NT-ARSv1을 아두이노에서 간편히 사용하실 분들을 위한 부분이라 그냥 단순하게 delay문으로 처리했습니다.</p>
<p>실제 핵심은 8번에서 11번행입니다. 아두이노는 데이터를 시리얼 통신으로 쓸때는 String 변수를 사용하는 것이 가능하지만, 받을때는 char형만 가능하므로 위 코드처럼 받은 하나의 문자를 누적해서 저장하게 됩니다. 여기서도 에러에 대한 방어는 빠져 있는데요. &#8220;&gt;&#8221;라는 문자가 눈에 보이는 마지막문자이고, 실제로는 캐리지리턴이 같이 들어옵니다만, 여하튼 제대로 하나의 데이터가 다 들어왔는지 체크하실려면 저 부분에 &#8220;&gt;&#8221;라는 문자가 들어왔는지를 확인할 필요가 있습니다. 또한 콤마&#8221;,&#8221;가 3개가 들어왔는지까지 카운팅하시면 에러방어대책은 충분할 것입니다만, 지금은 예제거든요^^</p>
<p>이제 위의 getARSresultAtOnce() 함수를 사용해서 roll값을 받는 부분을 별도로 getRollAngle()이라는 함수로 만들었습니다.</p><pre class="crayon-plain-tag">double getRollAngle() {
  String outputValuesOfARS = getARSresultAtOnece();

  int firstComma = outputValuesOfARS.indexOf(',');

  String rollAngleST = outputValuesOfARS.substring(1, firstComma);
  double rollAngle = rollAngleST.toInt() * 0.001;

  return rollAngle;
}</pre><p>
getARSresultAtOnce()의 결과 데이터가 &lt;roll, pitch, roll_vel, pitch_vel&gt;의 형태로 저장되는데요. 이 결과에서 roll데이터만 추출하는 것입니다. 먼저 4번행에서 아두이노의 String 클래스에서 지원하는 indexOf()라는 함수를 이용해서 콤마(,)의 위치를 찾고, 5번행에서 substring()함수를 이용해서 roll데이터 부분만 추출합니다. 아직까지는 String 형태이므로 7번행에서 toInt()함수를 이용해서 숫자의 형태로 변환합니다. 그리고 NT-ARSv1은 내부적으로 1000이 곱해서 출력되므로, 다시 0.001로 나눠줍니다. 이렇게 하면 radian단위의 각도로 roll을 얻을 수 있습니다.</p><pre class="crayon-plain-tag">double getPitchAngle() {
  String outputValuesOfARS = getARSresultAtOnece();

  int firstComma = outputValuesOfARS.indexOf(',');
  int secondComma = outputValuesOfARS.indexOf(',', firstComma+1);

  String pithchAngleST = outputValuesOfARS.substring(firstComma+1, secondComma);
  double pitchAngle = pithchAngleST.toInt() * 0.001;

  return pitchAngle;
}</pre><p>
그 다음은 getPitchAngle()함수로 별 설명이 없어도 알 수 있으실 테지만, 두번째 데이터인 Pitch를 추출하는 함수입니다. getRollAngle() 함수와 다른 점은 Pitch 데이터는 첫 번째 콤마(,) 부터 두번째 콤마 사이에 있는 데이터이기 때문에 4번 5번행처럼 첫째 두번째 콤마를 찾아야합니다. 그리고 나머지는 동일합니다. 이런 원리로 NT-ARSv1의 세번째 네번째 데이터인 각각의 각 속도도 추출할 수 있습니다. 이제 전체 코드를 보여드리면,</p><pre class="crayon-plain-tag">// 2013.09.16 NTRexLAB.
// NT-ARSv1 example
// ARDUINO MEGA ADK. ARDUINO IDE 1.0.5

void setup() {
  // initialize serial and serial1 communications at 115200 bps:
  Serial.begin(115200);
  Serial1.begin(115200);
}

void loop() {

  double rad2degree = 180/3.141592;

  double rollAngle = getRollAngle();
  Serial.print(" Roll Angle is ");
  Serial.print(rollAngle*rad2degree);
  Serial.println(" degree.");

  double pitchAngle = getPitchAngle();
  Serial.print(" Pitch Angle is ");
  Serial.print(pitchAngle*rad2degree);
  Serial.println(" degree.");

  double rollAngVel = getRollAngVel();
  Serial.print(" Roll Angular velocity is ");
  Serial.print(rollAngVel*rad2degree);
  Serial.println(" degree/second.");

  double pitchAngVel = getPitchAngVel();
  Serial.print(" Pitch Angular velocity is ");
  Serial.print(pitchAngVel*rad2degree);
  Serial.println(" degree/second.");

  while(true);
}

// Getting output data of NT-ARSv1 after "&lt;CAO"&gt; commander.
// The resulting data is stored in the form of a String.
String getARSresultAtOnece() {
  String outputValuesOfARS = "";

  Serial1.print("&lt;CAO&gt;");

  delay(2);

  while (Serial1.available()) {
    char incomingChar = Serial1.read();
    outputValuesOfARS += incomingChar;
  }

  return outputValuesOfARS;
}

double getRollAngle() {
  String outputValuesOfARS = getARSresultAtOnece();

  int firstComma = outputValuesOfARS.indexOf(',');

  String rollAngleST = outputValuesOfARS.substring(1, firstComma);
  double rollAngle = rollAngleST.toInt() * 0.001;

  return rollAngle;
}

double getPitchAngle() {
  String outputValuesOfARS = getARSresultAtOnece();

  int firstComma = outputValuesOfARS.indexOf(',');
  int secondComma = outputValuesOfARS.indexOf(',', firstComma+1);

  String pithchAngleST = outputValuesOfARS.substring(firstComma+1, secondComma);
  double pitchAngle = pithchAngleST.toInt() * 0.001;

  return pitchAngle;
}

double getRollAngVel() {
  String outputValuesOfARS = getARSresultAtOnece();

  int firstComma = outputValuesOfARS.indexOf(',');
  int secondComma = outputValuesOfARS.indexOf(',', firstComma+1);
  int thirdComma = outputValuesOfARS.indexOf(',', secondComma+1);

  String rollAngVelST = outputValuesOfARS.substring(secondComma+1, thirdComma);
  double rollAngVel = rollAngVelST.toInt() * 0.001;

  return rollAngVel;
}

double getPitchAngVel() {
  String outputValuesOfARS = getARSresultAtOnece();

  int firstComma = outputValuesOfARS.indexOf(',');
  int secondComma = outputValuesOfARS.indexOf(',', firstComma+1);
  int thirdComma = outputValuesOfARS.indexOf(',', secondComma+1);

  String pithchAngVelST = outputValuesOfARS.substring(thirdComma+1, outputValuesOfARS.length() - 3);
  double pithchAngVel = pithchAngVelST.toInt() * 0.001;

  return pithchAngVel;
}</pre><p>
38번행 이후는 위에서 쭈욱 설명드린 그대로 입니다. 다시 한번 말씀드리지만 NT-ARSv1을 아두이노에서 사용하기 위한 하나의 예제로 발생할 수 있는 에러나 예외상황에 대한 대비는 없습니다.^^.</p>
<p>그리고, 11번부터 36번행은 이렇게 추출된 데이터를 사용한 것일 뿐입니다. 이 예제는 [<a href="http://www.ntrexgo.com/archives/17654" target="_blank">바로가기</a>]와 같은 하드웨어적인 연결을 가지기 때문에 ADK MEGA 보드를 사용했습니다. 그래서 ARS와의 연결은 Serial1에 PC와는 Serial에 연결되어 있으며 두 통신 속도는 모두 115200으로 세팅되어 있습니다. 출력되는 각도는 함수를 설명드릴때 했지만 라디안(radian)단위이기 때문에 눈으로 쉽게 확인하게 하기위해 degree로 변환해서 보여줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/09/001.jpg" rel="lightbox[18397]"><img class="aligncenter size-full wp-image-18402" alt="001" src="http://www.ntrexgo.com/wp-content/uploads/2013/09/001.jpg" width="530" height="406" /></a></p>
<p>이렇게 해서 시리얼 모니터로 출력하면 위 그림과 같은 결과를 얻을 수 있습니다. 이제 NT-ARSv1을 아두이노에서 핸들링하고자 하시는 분들께 하나의 예제를 보여드린듯 합니다.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/18397/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>아두이노에서 NT-ARSv1의 데이터 받기</title>
		<link>http://www.ntrexgo.com/archives/17654</link>
		<comments>http://www.ntrexgo.com/archives/17654#comments</comments>
		<pubDate>Fri, 30 Aug 2013 07:10:33 +0000</pubDate>
		<dc:creator>NTRexLAB</dc:creator>
				<category><![CDATA[--응용예제]]></category>
		<category><![CDATA[blog-posts]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ARS]]></category>
		<category><![CDATA[NT-ARSv1]]></category>
		<category><![CDATA[아두이노]]></category>
		<category><![CDATA[예제]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=17654</guid>
		<description><![CDATA[아두이노 Arduino MEGA ADK에서 NT-ARSv1데이터를 받아서 각도(degree)로 환산하는 예제 코드입니다. 아두이노로 저희 NT-ARSv1를 다룰려고 하시는 분들께 도움이 될 수 있으면 좋겠습니다.
우리 연구소에서는 아주 예전에 Pitch와 Roll각도를 받을 수 있는 NT-ARSv1[바로가기]이라는 저가의 ARS 모듈을 출시했었습니다.

&#160;
오늘은 여러 유저들께서 자주 요청하시던 아두이노에서 이 ARS의 데이터를 받는 예제를 공개할려고 합니다. 일단, 이 글에서 테스트 되는 아두이노 보드는 Arduino MEGA ADK[판매 페이지 바로가기]입니다.  왜 MEGA ADK 버젼을 사용했냐면, 저는 PC에서 데이터를 확인하고 싶었기 때문에 ARS와 시리얼 통신으로 연결될 여분의 시리얼 포트가 더 필요했기 때문입니다. Arduino MEGA ADK는 총 4개의 시리얼 포트를 가지고 있어서 선정했구요.
그런데 연결하다보니 약간의 문제를 만났네요. 어떤 문제냐면, NT-ARSv1의 시리얼통신 출력은 RS232신호로 나온다는...]]></description>
				<content:encoded><![CDATA[<p>아두이노 Arduino MEGA ADK에서 NT-ARSv1데이터를 받아서 각도(degree)로 환산하는 예제 코드입니다. 아두이노로 저희 NT-ARSv1를 다룰려고 하시는 분들께 도움이 될 수 있으면 좋겠습니다.</p>
<p>우리 연구소에서는 아주 예전에 Pitch와 Roll각도를 받을 수 있는 NT-ARSv1[<a href="http://www.ntrexgo.com/archives/1611" target="_blank">바로가기</a>]이라는 저가의 ARS 모듈을 출시했었습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/08/0021.jpg" rel="lightbox[17654]"><img class="aligncenter size-full wp-image-17656" alt="002" src="http://www.ntrexgo.com/wp-content/uploads/2013/08/0021.jpg" width="228" height="215" /></a></p>
<p>&nbsp;</p>
<p>오늘은 여러 유저들께서 자주 요청하시던 아두이노에서 이 ARS의 데이터를 받는 예제를 공개할려고 합니다. 일단, 이 글에서 테스트 되는 아두이노 보드는 Arduino MEGA ADK[<a href="http://devicemart.co.kr/goods/view.php?seq=34406" target="_blank">판매 페이지 바로가기</a>]입니다.  왜 MEGA ADK 버젼을 사용했냐면, 저는 PC에서 데이터를 확인하고 싶었기 때문에 ARS와 시리얼 통신으로 연결될 여분의 시리얼 포트가 더 필요했기 때문입니다. Arduino MEGA ADK는 총 4개의 시리얼 포트를 가지고 있어서 선정했구요.</p>
<p>그런데 연결하다보니 약간의 문제를 만났네요. 어떤 문제냐면, NT-ARSv1의 시리얼통신 출력은 RS232신호로 나온다는 겁니다. 만약 UNO나 MEGA ADK의 기본 시리얼 포트에 연결한다면 문제가 없는데, 이 시리얼포트는 PC와의 연결및 모니터링으로 남겨두면, MEGA ADK의 나머지 시리얼포트는 UART신호로, 즉 TTL 레벨의 신호를 받는 포트들입니다. 그래서 할 수 없이 ILX232칩 처럼 RS232신호와 UART 신호를 변환하는 기능이 부가적으로 필요합니다. 직접 구현해도 되지만, LK EMBEDDED라는 회사의 변환모듈 URS232라는 모델[<a href="http://devicemart.co.kr/goods/view.php?seq=1075379" target="_blank">판매페이지 바로가기</a>]을 그냥 사용했습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/08/0041.jpg" rel="lightbox[17654]"><img class="aligncenter size-large wp-image-17658" alt="004" src="http://www.ntrexgo.com/wp-content/uploads/2013/08/0041-620x427.jpg" width="620" height="427" /></a></p>
<p>그러나 이 아이도 약간 이상합니다. 판매페이지에서 이 회사가 제시하는 연결 포트들의 핀맵은 약간 혼돈이 올 수 있습니다. 일단</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/08/0031.jpg" rel="lightbox[17654]"><img class="aligncenter size-full wp-image-17657" alt="003" src="http://www.ntrexgo.com/wp-content/uploads/2013/08/0031.jpg" width="396" height="201" /></a></p>
<p>NT-ARSv1의 핀맵을 보면, 2번 3번의 TX, RX가 있습니다. 이걸 URS232라는 모듈의 RS의 RX, TX단자에 연결합니다. 이건 정상^^. 아래 연결도를 보시면</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/08/0011.jpg" rel="lightbox[17654]"><img class="aligncenter size-large wp-image-17655" alt="001" src="http://www.ntrexgo.com/wp-content/uploads/2013/08/0011-620x527.jpg" width="620" height="527" /></a></p>
<p>왜 Fritzing에서 사용자 지정 부품 만들기가 이리도 잘 안되는 걸까요..ㅠㅠ 그래서 그냥 메모지로 URS232와 NT-ARSv1을 표현했습니다. 제가 위에서 혼돈이 있을 수 있다는 것은 URS232의 TTL측 TX는 아두이노 ADK의 TX1에, URS232의 TTL측 RX는 ADK의 RX1에 연결해야합니다. 약간 혼돈스러워서 URS232모듈에서 사용하고 있는 ILX232N이라는 칩의 데이터시트와 비교해 보니, 이 모듈의 TTL측 핀맵에서 TTL_RX라고 표기되어 있는 부분은 실제로 output of recieve data 단자였습니다. 아무튼 어떤 이윤지는 몰라도 모듈 제조사는 이렇게 표현했네요. 그래서 위 그림처럼 결선하시면 아두이노 ADK 보드와 NT-ARSv1과의 연결을 위해 URS232를 사용할 수 있습니다. 이제 준비는 되었구요.</p>
<p>오늘의 목적인 NT-ARSv1의 데이터를 Arduino에서 읽기 위해 Arduino IDE에서 작성한 예제 코드를 보여드리면</p><pre class="crayon-plain-tag">// initialize each variables
char incomingByte = 0;
int resultValues = 0;
int consideringMinusSign = 1;
int selectingValuesFromARS = 0;

// The output values of NT-ARSv1 are 1000 times in radians
float scaleFactorOfARS = 0.001;
float rad2degree = 180 / 3.141592;

float rollAngle = 0;
float pitchAngle = 0;
float rollVel = 0;
float pitchVel = 0;

void setup() {
  // initialize serial and serial1 communications at 115200 bps:
  Serial.begin(115200); 
  Serial1.begin(115200);
}

void loop() {
  // Command to ARS for getting result via serial communication
  // ex) &lt;CAO&gt; : to get values one time.
  // ex) &lt;CAH&gt; : to get values continuesly.
  // ex) &lt;CAE&gt; : to stop getting values.
  Serial1.write(Serial.read());

  if (Serial1.available() &gt; 0) {
    incomingByte = Serial1.read();

    // Operation minus sign.
    if (incomingByte == '-') {
      consideringMinusSign = -1;
    }

    if (incomingByte &gt;= '0' &amp;&amp; incomingByte &lt;= '9') {
      resultValues = resultValues*10 + incomingByte - '0';
    }
    if (incomingByte == ',' || incomingByte == '&gt;') {
      //Serial.println("Your Command is : " + userCommander);

      resultValues = resultValues * consideringMinusSign;
      consideringMinusSign = 1;
      selectingValuesFromARS += 1;

      switch(selectingValuesFromARS) {
        case 1 :
          // getting roll angle as degree
          rollAngle = resultValues * scaleFactorOfARS * rad2degree;
          Serial.println(" ========================= ");
          Serial.print(" Roll Degree = ");
          Serial.println(rollAngle);
          break;
        case 2 :
          // getting pitch angle as degree
          pitchAngle = resultValues * scaleFactorOfARS * rad2degree;
          Serial.print(" Pitch Degree = ");
          Serial.println(pitchAngle);
          break;
        case 3 :
          // getting roll anglular velocity as degree
          rollVel = resultValues * scaleFactorOfARS * rad2degree;
          Serial.print(" Roll Vel. Degree = ");
          Serial.println(rollVel);
          break;
        case 4 :
          // getting pitch anglular velocity as degree
          pitchVel = resultValues * scaleFactorOfARS * rad2degree;
          Serial.print(" Pitch Vel. Degree = ");
          Serial.println(pitchVel);
          Serial.println(" ========================= ");      
          break;
      }
      resultValues = 0;
    }
    if (incomingByte == '&gt;') {
      selectingValuesFromARS = 0;
    }
  }
}</pre><p>
입니다.</p>
<p>해당 코드에 대한 설명을 잠시 드리면, 먼저 사용자가 Arduino IDE의 시리얼모니터링을 켜서 테스트한다면, ARS의 명령을 입력하도록 하고 있습니다. 23번부터 26번행까지 설명되어 있지만, &lt;CAO&gt;라고 입력하면 데이터를 한 번 출력해 줍니다.</p>
<p>NT-ARSv1은 출력되는 데이터의 형식이 괄호로 쌓여서 &lt;roll 각, pitch 각, roll 각속도, pitch 각속도&gt;의 형태로 됩니다. 거기다 시리얼 통신으로 텍스트로 날라왔으니 문자입니다. 또 자릿수도 생각하고 부호도 생각해야합니다. 그 부분을 고려하는 코드들입니다. 그리고, 확인을 위해 각각 해당값을 출력하고 있구요. 이미 아두이노를 사용하고 계신 분들이라면 손쉽게 NT-ARSv1을 아두이노에서 사용하실 수 있을 것입니다.</p>
<p>위 코드를 실행하고,</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/08/0051.jpg" rel="lightbox[17654]"><img class="aligncenter size-large wp-image-17659" alt="005" src="http://www.ntrexgo.com/wp-content/uploads/2013/08/0051-620x557.jpg" width="620" height="557" /></a></p>
<p>시리얼모니터도구에서 &lt;CAO&gt; 라고 괄호포함해서 입력하면, 위 그림과 같은 출력을 볼 수 있습니다. 아두이노 예제는 앞으로도 많이 다뤄서 도움이 되도록 하겠습니다.^^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/17654/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
