<?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/%eb%a6%ac%eb%b7%b0/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>[37호]Genuino 101 Review</title>
		<link>http://www.ntrexgo.com/archives/31462</link>
		<comments>http://www.ntrexgo.com/archives/31462#comments</comments>
		<pubDate>Mon, 18 Jul 2016 00:55:12 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[스페셜 컬럼]]></category>
		<category><![CDATA[37호]]></category>
		<category><![CDATA[genuino]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[Special]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[리뷰]]></category>
		<category><![CDATA[매거진]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=31462</guid>
		<description><![CDATA[디바이스마트매거진 37호 &#124; Genuino101 보드는 그간의 ATMEL사 MCU를 기반으로 하는 여러 보드들과는 다르게 인텔사의 Curie칩을 사용하여 보드가 설계되었습니다. 그 뿐만이 아니라 그간 쉴드 형태로 연결해 사용하던 블루투스 모듈과 6축 모션센서가 온보드에 장착이 되었습니다.]]></description>
				<content:encoded><![CDATA[<p><strong><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-0.jpg" rel="lightbox[31462]"><img alt="37 special review (0)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-0.jpg" width="620" /></a></strong></p>
<p><strong style="font-size: large">IOT 세계의 다크호스</strong></p>
<p><span style="font-size: xx-large"><strong>Genuino 101 Review</strong></span></p>
<p style="text-align: right">글 | 금강초롱 blog.naver.com/crucian2k3</p>
<p>  Genuino101(이하 제누이노101) 보드는 그간의 ATMEL사 MCU를 기반으로 하는 여러 보드들과는 다르게 인텔사의 Curie칩을 사용하여 보드가 설계되었습니다. 그 뿐만이 아니라 그간 쉴드 형태로 연결해 사용하던 블루투스 모듈과 6축 모션센서가 온보드에 장착이 되었습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-1.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31754" alt="37 special review (1)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-1.jpg" width="620" height="384" /></a></p>
<p>그것도 그냥 있는 것이 아니라 본체 내 MCU 안에 완전히 녹아 들어가 있어 한 몸을 이루고 있기에 내장 라이브러리를 통해 손쉽게 접근이 가능한 측면이 있기는 합니다만 세상 모든 일이 그렇듯 눈여겨볼 대목도 있는 듯합니다. 즉, 온 보드에 실장 된 블루투스 모듈과 모션센서를 기반으로 만들어진 코드는 너무도 독자적이라 이식성에 문제를 야기할 수밖에 없게 됩니다. 이는 아두이노 우노 기반에서 만들어진 코드는 큰 어려움 없이 이 보드로 포팅이 될 것으로 봅니다만, 그 반대는 거의 불가능한 측면이 있게 됩니다. 한마디로 비가역적입니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-2.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31755" alt="37 special review (2)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-2.jpg" width="620" height="407" /></a></p>
<p>그러함에도 이러한 보드가 출시된 것은 신선한 충격이며 이 보드를 기반으로 하는 원대한 생태계를 꿈꾸는 이들이 있음을 느끼기에 부족함이 없습니다. 블루투스 4.0 LE 기술이 내장되어 있다는 의미는 외부와 소통함을 목적으로 한다는 말과 일맥상통하며 스마트폰과 연계되어 다양한 실험을 해 볼 수 있는 환경을 만들어 준다는 의미가 되기도 합니다. 아두이노와 인텔에서 제공하는 다양한 예제 프로그램을 직접 실행 시켜 보며 어떤 특성이 있는지 살펴보고, 보드 활용을 위한 기본적인 사항들을 차근차근 더듬어 보도록 하겠습니다. 본 리뷰의 마지막 실험으로 제누이노101 보드를 비콘(BT Beacon)으로 만들고 스마트폰에 비콘을 인식할 수 있는 앱을 설치하여 제누이노101 근처에 다가가면 본 리뷰 후원사 홈페이지가 열리는 것을 시연해 보고자 합니다. 물론 얼마나 근처로 다가가면 동작되게 할 것인지? 어느 웹사이트가 열리게 할 것인지? 등등은 독자님들 마음대로 설정할 수가 있습니다. 이 글을 접하는 독자님들이 이 실험 하나만으로도 제누이노101 보드가 갖고 있는 뛰어난 하드웨어의 특성을 충분히 맛 보고도 남지 않을까 예상해 봅니다. 제누이노101 보드는 출시된 지 얼마 되지 않았을뿐더러 국내에 소개도 거의 되지 않아 해외 자료들을 다수 참고삼았습니다. 본 리뷰보고서는 (주)엔티렉스-디바이스마트의 지원을 받아 작성하게 되었습니다.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;color: #ff6600"><strong>1. 개요</strong></span></p>
<p>제누이노101 보드는 인텔®큐리™칩을 기반으로 하는 보드입니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-3.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31756" alt="37 special review (3)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-3.jpg" width="286" height="296" /></a></p>
<p>흔히 사용되는 ATmega328을 사용하는 아두이노 우노 계열의 보드나 ATmega 32U4를 사용하는 레오나르도 계열의 보드와는 완전히 다른 칩셋입니다. 최근에 선보인 32비트MCU가 탑재된 아두이노M0에는 SAM32D계열로서 이 역시 Atmel사 칩입니다. 인텔®큐리™칩은 기본적으로 블루투스 4.0 LE와 6축 모션센싱 기능을 원칩에 내장하고 있는 다소 독특한 칩이라고 봅니다. 이 칩에는 x86(쿼크)코어와 ARC코어를 단일화한 것으로 32Mhz의 클럭이 공급되며 연산능력은 타의 추종을 불허하는 수준으로 생각됩니다. 여기서 x86이 시사하는 바가 있습니다. 즉, 제누이노101 보드는 백그라운드에 x86을 기반으로 하는 모디파이드 된 리눅스운영체제 (RTOS)를 깔고 있으며 그 위에 아두이노 폼펙터에 충실한 하드웨어를 갖추고 있는 형상입니다. 사용자는 이 부분을 그저 블랙박스로 취급하고 아두이노향 각종 명령어들로 제누이노와 친하게 지내면 그만인 것입니다. 독자님들이 원한다면 우분투 환경에서 제누이노 펌웨어를 수정한 후 다시 업로드를 할 수도 있도록 인텔사에서는 준비를 해놓았습니다. (http://blog.naver.com/jjy0501/220235133315) 아두이노라는 브랜드는 미국에서만 사용이 가능하며 미국 이외의 국가서는 제누이노라는 상표명으로 통용이 됩니다. 두 제품명간 특성에 차이는 없습니다.</p>
<p><span style="color: #ff9900"><strong>1.1. 제누이노101 vs 아두이노M0 스펙 비교</strong></span></p>
<table style="width: 620px;background-color: #ffffff" border="1" cellspacing="0" cellpadding="3">
<tbody>
<tr>
<td style="text-align: center" rowspan="2">구분</td>
<td style="text-align: center" colspan="2">기술적 사양</td>
</tr>
<tr>
<td style="text-align: center">제누이노101(32bit MCU)</td>
<td style="text-align: center">아두이노M0(32bit MCU)</td>
</tr>
<tr>
<td style="text-align: center">마이크로컨트롤러</td>
<td style="text-align: center">인텔큐리( Intel® Curie™) 칩</td>
<td style="text-align: center">AT-SAMD21G18, 48pins LQFP</td>
</tr>
<tr>
<td style="text-align: center">작동전압</td>
<td style="text-align: center">3.3V (5V 톨러런트 I/O)</td>
<td style="text-align: center">좌동</td>
</tr>
<tr>
<td style="text-align: center">입력전압(권장)</td>
<td style="text-align: center">7 &#8211; 12V</td>
<td style="text-align: center">6 &#8211; 15 V</td>
</tr>
<tr>
<td style="text-align: center">입력전압(제한)</td>
<td style="text-align: center">7 &#8211; 20V</td>
<td style="text-align: center">4.5 &#8211; 20 V</td>
</tr>
<tr>
<td style="text-align: center">디지털 I/O핀</td>
<td style="text-align: center">20개, Digital IO 4개의 PWM 출력 and UART</td>
<td style="text-align: center">20개, Digital IO 12개의 PWM and UART</td>
</tr>
<tr>
<td style="text-align: center">아날로그 입력 핀</td>
<td style="text-align: center">6개</td>
<td style="text-align: center">좌동</td>
</tr>
<tr>
<td style="text-align: center">I/O 핀 당 DC 전류</td>
<td style="text-align: center">20mA</td>
<td style="text-align: center">7mA</td>
</tr>
<tr>
<td style="text-align: center">플래시 메모리</td>
<td style="text-align: center">196KB</td>
<td style="text-align: center">256KB(Bootloader 4KB)</td>
</tr>
<tr>
<td style="text-align: center">SRAM</td>
<td style="text-align: center">24KB</td>
<td style="text-align: center">32KB</td>
</tr>
<tr>
<td style="text-align: center">CLOCK SPEED</td>
<td style="text-align: center">32MHz</td>
<td style="text-align: center">48MHz</td>
</tr>
<tr>
<td style="text-align: center">특별기능</td>
<td style="text-align: center">블루투스 4.0 LE, 6축 가속도센서/자이로센서</td>
<td style="text-align: center">10bit DAC 1개</td>
</tr>
<tr>
<td style="text-align: center">길이</td>
<td style="text-align: center">68.6 mm</td>
<td style="text-align: center">좌동</td>
</tr>
<tr>
<td style="text-align: center">폭</td>
<td style="text-align: center">53.4 mm</td>
<td style="text-align: center">좌동</td>
</tr>
</tbody>
</table>
<p><strong><span style="color: #ff9900">1.2. 프로그램 작성</span></strong></p>
<p>제누이노101은 아두이노 IDE 1.6.7 이상에서 다른 보드들과 마찬가지로 프로그래밍이 가능합니다. 아마도 대부분의 IDE에서는 제누이노101이 기본적으로 설정되어 있지 않을 것입니다. 아래와 같이 간단하게 신규보드를 등록할 수 있습니다. ■ Arduino IDE ▶ 도구 ▶ 보드 ▶ 보드관리자로 진입해 들어갑니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-4.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31757" alt="37 special review (4)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-4.jpg" width="620" height="340" /></a></p>
<p>조금 아래로 내려보면 Intel Curie Boards by Intel 버전 1.0.6이 보이며 선택을 한 후에 설치를 누르면 간단히 인텔 큐리칩이 장착된 제누이노101을 사용할 수 있게 됩니다. 다른 보드도 사용하고자 한다면 이와 같은 방법으로 간단히 등록이 가능합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-5.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31758" alt="37 special review (5)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-5.jpg" width="620" height="447" /></a></p>
<p>보드와 PC간의 연결은 아두이노 우노에서와 마찬가지로 USB-B타입의 케이블로 연결되며 제누이노101은 내부에 우분투 기반의 RTOS가 돌고 있다는 점이 차이점이라면 차이점이며 그 이외는 아두이노 우노와 대동소이하다고 보면 틀림이 없습니다. 한 가지 유의할 사항이 있다면 이 보드는 3.3V 기반이므로 5V 신호를 인가하는 경우 보드에 데미지가 가해질 수 있으므로 주의를 해야 합니다.</p>
<p><span style="color: #ff9900"><strong>1.3. 전원공급</strong></span></p>
<p>제누이노101보드 역시 다른 시리즈의 아두이노와 마찬가지로 외부전원과 USB 커넥터를 통한 전원을 모두 받을 수 있으며 자동으로 선택이 됩니다. 외부전원용 커넥터는 2.1mm DC어댑터용 플러그로 구성되어 있으며 중심축이 +전원입니다. 필자의 경험상 아두이노 계열의 보드를 사용하면서 정말로 주의해야하는 사항이 있습니다. 바로 보드에 나와 있는 Vin, 5V, 3.3V 핀과 관련된 사항으로 이 단자는 반드시 출력용으로만 사용이 되어져야 합니다. USB 커넥터를 꽂거나 혹은 외부전원을 DC 플러그를 통해 연결하면 위 3개의 단자에는 5V와 3.3V가 나오게 됩니다. 이 전원은 다른 보드를 동작시키기 위해 보드 내부의 레귤레이터에서 생산한 전기이며, 만일 외부에서 이 전압을 만들어 역으로 인가하게 되면 보드내부의 소자에 심각한 데미지를 입히게 됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-6.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31759" alt="37 special review (6)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-6.jpg" width="226" height="335" /></a></p>
<p>전기와 관련된 사항을 부주의하게 여기면 당장 보드손상이라는 낙심은 물론이고 화재 등과도 연결될 수 있는 중요한 사안이라고 생각합니다. 내장된 3.3V 레귤레이터는 최대 1.5A까지를 흘릴 수 있으며 IOREF 핀을 통해 보드의 I/O가 몇 볼트의 전압에서 동작되고 있는지를 감지하여 적절한 목적으로 운영될 수 있도록 정보를 제공해 줍니다. 이 핀에서는 당연히 3.3V가 나옵니다.</p>
<p><span style="color: #ff9900"><strong>1.4. 메모리</strong></span></p>
<p>내장된 메모리는 2개의 마이크로컨트롤러에서 공유하여 사용되며 플래시메모리는 총 384KB이나, 스케치에서 196KB만 사용이 가능합니다. 없어진 188KB는 백그라운드에서 리눅스기반의 RTOS가 점유하고 있습니다. 다음으로 SRAM은 총 80KB가 내장되어 있으나 스케치를 위해서는 4KB가 사용이 가능합니다. 나머지 역시 내장 OS에서 점유되어 사용되고 있습니다. 제누이노101은 인텔사에서 아주 작정을 하고 많은 투자가 있었음을 알 수 있는 대목입니다. 이 보드를 위해 운영체제까지 새롭게 디자인 한 것으로 보입니다.</p>
<p><span style="color: #ff9900"><strong>1.5. 시그널 입·출력</strong></span></p>
<p>제누이노101은 아두이노 우노 기반의 폼팩터를 그대로 계승하여 총 20개의 GPIO(General Purpose I/O)핀을 제공하고 있습니다. 다른 보드들과 마찬가지로 pinMode(), digitalWrite(), digitalRead() 함수를 통해 기본적인 신호 입출력이 이뤄집니다. 또한 핀 3, 5, 6, 9 등 4개는 analogWrite()함수를 통해 PWM출력을 내보낼 수 있으며 모든 핀들은 3.3V에 최대 20mA를 입출력(source or sink)할 수 있습니다.</p>
<p><strong>■ 각 핀들의 기능 정리</strong></p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="3">
<tbody>
<tr>
<td style="text-align: center">포트</td>
<td style="text-align: center">세부사항</td>
</tr>
<tr>
<td style="text-align: center">Serial 포트</td>
<td>■ 아두이노 우노의 폼팩터를 그대로 계승하여 D0이 RX, D1이 TX이며 TTL 시리얼데이터를 송수신 할 수 있음 ■ Serial1 클래스를 사용하면 pin0(Rx), pin1(Tx)를 사용할 수 있음 ■ 기본적으로 USB CDC채널을 통한 가상 시리얼 통신은 물론 UART 타입의 Serial도 동시에 사용할 수 있음. 이는 제누이노101, 아두이노 M0 등에서는 공통으로 제공되는 기능으로 보드의 유용함을 배가시켜 줌</td>
</tr>
<tr>
<td style="text-align: center">External Interrupt</td>
<td>■ 모든 핀에서 외부 인터럽트 소스를 처리할 수 있습니다만 CHANGE인터럽트를 쓰고자 한다면 핀 2, 5, 7, 8, 10, 11, 12, 13을 사용해야 함 ■ 인터럽트는 attachInterrupt() 함수를 통해 사용할 수 있음</td>
</tr>
<tr>
<td style="text-align: center">SPI</td>
<td>■ 보드 하부에 위치한 2.54mm 헤더핀에 SPI 관련 신호가 나와 있으며 SS, MOSI, MISO, SCK 핀 등으로 구성되어 있음 ■ 고속으로 I/O가 필요한 SD메모리카드, Color TFT LCD제어 등에 유용하게 사용될 수 있음</td>
</tr>
<tr>
<td style="text-align: center">LED</td>
<td>■ 녹색LED가 D13에 연결되어 있으며 High에서 ON, Low에서 OFF됨 ■ 보드의 동작 상태를 모니터링 하거나 간단한 실험에 사용됨</td>
</tr>
<tr>
<td style="text-align: center">Analog</td>
<td>■ 아나로그 입력핀은 A0~A5까지 총 6개가 구비되어 있으며 10비트 해상도를 갖고 있음. 따라서 0~1023까지 총 1024스탭으로 아날로그 시그널을 분해할 수 있음 ■ 레퍼런스 전압은 기본적으로 3.3V</td>
</tr>
<tr>
<td style="text-align: center">TWI</td>
<td>■ I2C라고도 부르는 TWI는 SDA 핀과 SCL 핀을 사용하며 Wire 라이브러리를 통해 손쉽게 이용이 가능함</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><span style="font-size: medium;color: #ff6600"><strong>2. 아두이노 / Genuino 101 시작하기</strong></span></p>
<p>이제 제누이노101보드를 사용하여 실제로 동작을 시켜보면서 어떤 특성이 있는지 하나하나 살펴보도록 하겠습니다. 인텔 큐리칩의 최대 장점은 저소비전력과 블루투스 4.0 LE, 6축 모션센서가 단일칩에 내장된 것이라고 할 수 있겠습니다. 얼핏 생각해봐도 스마트폰과 연계하여 재미난 것들을 많이 해볼 수 있을 것 같습니다. 아두이노 본사 홈페이지, 인텔사 홈페이지와 포럼에 올라와 있는 여러 가지 예제와 사례들을 참조하여 이렇게 갖고 놀 수 있겠구나 하는 것을 본격적으로 보여 드리고자 합니다. 이 제품이 갖는 한 가지 유의사항은 스케치가 로딩되고 난 후에 곧장 실행되는 것이 아니라 약간의 뜸 들이는 시간이 걸린다는 것입니다. (약 10초) 지금부터 다룰 내용들은 처음 아두이노를 접하는 분들은 좀 난이도가 있을 수도 있을 듯합니다. 아두이노 세계를 완전히 처음 접하는 독자님들은 아두이노 우노 시리즈부터 시작하시길 권장합니다.</p>
<p><span style="color: #ff9900"><strong>2.1. 제누이노101과 우노의 간략 차이점 비교</strong></span></p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="3">
<tbody>
<tr>
<td style="text-align: center">구분</td>
<td style="text-align: center">아두이노 우노</td>
<td style="text-align: center">제누이노 101</td>
</tr>
<tr>
<td style="text-align: center">마이크로컨트롤러</td>
<td style="text-align: center">ATmega328</td>
<td style="text-align: center">Intel® Curie™</td>
</tr>
<tr>
<td style="text-align: center">동작전압</td>
<td style="text-align: center">5V</td>
<td style="text-align: center">3.3V</td>
</tr>
<tr>
<td style="text-align: center">USB 가상시리얼포트</td>
<td style="text-align: center" rowspan="2">Serial class</td>
<td style="text-align: center">Serial class (USB To Serial 회로 불필요)</td>
</tr>
<tr>
<td style="text-align: center">H/W 시리얼포트</td>
<td style="text-align: center">Serial1 class</td>
</tr>
<tr>
<td style="text-align: center">SoftWare 시리얼 장치</td>
<td style="text-align: center">최고속도 38,400bps</td>
<td style="text-align: center">최고속도 57,600bps</td>
</tr>
<tr>
<td style="text-align: center">온보드 주변장치</td>
<td style="text-align: center">-</td>
<td style="text-align: center">블루투스 4.0 LE 6축 모션센서 (자이로스코프 3축, 가속도센서 3축)</td>
</tr>
<tr>
<td style="text-align: center">특별 라이브러리</td>
<td style="text-align: center">-</td>
<td style="text-align: center">CurieBLE (Bluetooth Low Energy module 제어) CurieIMU(6-axis 가속도센서, 자이로센서 제어) Curie Timer One (Timer 함수)</td>
</tr>
</tbody>
</table>
<p><strong style="color: #ff9900">2.2. 업로드 절차</strong></p>
<p>스케치가 보드에 업로드 후 실행을 시작하기 전에, 몇 초 정도의 지연이 있습니다. 전원이 새롭게 인가되거나 ResetM 버튼을 누를 때도 똑같습니다. 이때는 시리얼 모니터를 열어도 열리지 않게 됩니다. 이 시간은 넉넉잡아 10초 가량 됩니다. 제누이노101 내부적으로 RTOS가 돌고 있음에 따라 발생되는 현상으로 생각됩니다. 이는 제조사에서 이러한 특성을 보인다고 공개한 사항이므로 특별히 문제가 있는 것은 아니라고 봅니다. 프로그램이 시리얼창이 열린 후 구동되게 하고자 할 때는 setup()에 다음 코드를 추가 한다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>while (!Serial) ;</p>
</div>
<p><span style="color: #ff6600;font-size: medium"><strong>3. 제누이노101을 활용한 실험환경 구성하기</strong></span></p>
<p>제조사에서 예제로 제시해 준 프로그램을 중심으로 특수한 주변기기인 모션센서, 블루투스 4.0 LE 모듈 등을 테스트 해보기로 하겠습니다. 이 예제를 따라해 보시면 이렇게 할 수 있겠구나 하는 생각이 드실 것으로 봅니다.</p>
<p><span style="color: #ff9900"><strong>3.1. CurieIMU 라이브러리 기반 모션센서 움직임 표출하기</strong></span></p>
<p>모션센서하면 MPU6050을 떠올릴 수 있습니다만 이 센서를 능가하는 모션센서가 우리의 제누이노101 보드상 큐리칩에는 내장을 하고 있습니다. 이 데모는 제누이노101보드의 큐리칩에 기본적으로 내장되어 있는 6축 가속도, 자이로센서의 값을 읽어 표출하는 것입니다. 여기서 가속도계는 보드의 움직이는 방향정보를 제공하고, 자이로센서는 각속도를 제공해 줍니다. 이 가속도계와 자이로센서를 융합하여 IMU(Intertial Monitoring Unit : 관성측정장치)를 형성하게 됩니다. 예제에 사용된 Madgwick 필터 알고리즘은 6축의 값에서 쿼터니언(4원수) 계산에 사용되게 됩니다. 쿼터니언은 Pitch, Roll, Yaw 등 각도 계산에 사용되며 결국은 X, Y, Z축 주위의 물체 회전이 일어난 정도를 알 수 있게 해 줍니다.</p>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-7.jpg" rel="lightbox[31462]"><img class="size-full wp-image-31760 aligncenter" alt="37 special review (7)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-7.jpg" width="357" height="226" /></a></td>
</tr>
<tr>
<td style="text-align: center">[MPU-6050 가속도 자이로센서 모듈</td>
</tr>
</tbody>
</table>
<p><span style="color: #ff9900"><strong>3.2. 실험절차</strong></span></p>
<p>제누이노101보드를 준비한 다음 라이브러리 관리자에서 Madgwick 라이브러리를 설치합니다. (아두이노IDE &gt; 스케치 &gt; 라이브러리추가 &gt; 라이브러리관리) 다음으로 PC에서 눈으로 볼 수 있도록 프로세싱 프로그램을 설치해야 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-8.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31761" alt="37 special review (8)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-8.jpg" width="620" height="396" /></a></p>
<p>프로세싱 프로그램은 https://processing.org/download/에서 다운받으면 됩니다. 제누이노101 라이브러리는 https://github.com/01org/corelibs-arduino101에서 다운받아 라이브러리에 등록하면 됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-9.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31762" alt="37 special review (9)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-9.jpg" width="620" height="338" /></a>   <a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-10.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31763" alt="37 special review (10)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-10.jpg" width="620" height="319" /></a></p>
<p><span style="color: #ff6600;font-size: medium"><strong>4. (예제1) 모션센서 시각화</strong></span></p>
<p><strong><span style="color: #ff9900">4.1. 제누이노101용 소스코드</span></strong></p>
<p>Madgwick 필터를 사용하여 프로세싱 상에서 동작 상태를 모니터링 하는 예제입니다.</p>
<p><strong>ㅇ 파일명 : IMU_OrientationVisualiser.ino</strong></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>===============================================<br />
Example sketch for CurieIMU library for Intel(R) Curie(TM) devices.<br />
Copyright (c) 2015 Intel Corporation. All rights reserved.</p>
<p>Based on I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050<br />
class by Jeff Rowberg: https://github.com/jrowberg/i2cdevlib</p>
<p>===============================================<br />
I2Cdev device library code is placed under the MIT license<br />
Copyright (c) 2011 Jeff Rowberg</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a copy<br />
of this software and associated documentation files (the “Software”), to deal<br />
in the Software without restriction, including without limitation the rights<br />
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell<br />
copies of the Software, and to permit persons to whom the Software is<br />
furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included in<br />
all copies or substantial portions of the Software.</p>
<p>THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR<br />
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br />
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE<br />
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER<br />
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,<br />
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN<br />
THE SOFTWARE.<br />
===============================================</p>
<p>Genuino 101 CurieIMU Orientation Visualiser<br />
Hardware Required:<br />
* Arduino/Genuino 101</p>
<p>Modified Nov 2015<br />
by Helena Bisby &lt;support@arduino.cc&gt;<br />
This example code is in the public domain</p>
<p>http://arduino.cc/en/Tutorial/Genuino101CurieIMUOrientationVisualiser</p>
<p>*/</p>
<p>#include &lt;CurieIMU.h&gt;<br />
#include &lt;MadgwickAHRS.h&gt;</p>
<p>Madgwick filter; // Madgwick 객체를 생성해 냅니다.<br />
int ax, ay, az;<br />
int gx, gy, gz;<br />
float yaw;<br />
float pitch;<br />
float roll;<br />
int factor = 800; // 감도 조절을 위해 자이로스코프의 원래 값을 나눠준다.<br />
// 시리얼 보레이트를 올리면 이 값도 변경시킨다.</p>
<p>int calibrateOffsets = 1; // 캘리브레이션을 할지 말지 설정</p>
<p>void setup() {<br />
Serial.begin(9600); // 시리얼 통신 초기화</p>
<p>CurieIMU.begin(); // 장치 초기화</p>
<p>if (calibrateOffsets == 1) {<br />
//자이로와 가속도센서의 오프셋을 설정하는 기능<br />
Serial.println(“Internal sensor offsets BEFORE calibration&#8230;”);<br />
Serial.print(CurieIMU.getAccelerometerOffset(X_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getAccelerometerOffset(Y_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getAccelerometerOffset(Z_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getGyroOffset(X_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getGyroOffset(Y_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getGyroOffset(Z_AXIS)); Serial.print(“\t”);<br />
Serial.println(“”);</p>
<p>// To manually configure offset compensation values, use the following methods instead of the autoCalibrate&#8230;() methods below<br />
// CurieIMU.setGyroOffset(X_AXIS, 220);<br />
// CurieIMU.setGyroOffset(Y_AXIS, 76);<br />
// CurieIMU.setGyroOffset(Z_AXIS, -85);<br />
// CurieIMU.setAccelerometerOffset(X_AXIS, -76);<br />
// CurieIMU.setAccelerometerOffset(Y_AXIS, -235);<br />
// CurieIMU.setAccelerometerOffset(Z_AXIS, 168);</p>
<p>// 올바로 오프셋이 설정되기 위해서는 제누이노보드가 수평으로 유지되어 있어야 한다.<br />
Serial.print(“Starting Gyroscope calibration&#8230;”);<br />
CurieIMU.autoCalibrateGyroOffset();<br />
Serial.println(“ Done”);<br />
Serial.print(“Starting Acceleration calibration&#8230;”);<br />
CurieIMU.autoCalibrateAccelerometerOffset(X_AXIS, 0);<br />
CurieIMU.autoCalibrateAccelerometerOffset(Y_AXIS, 0);<br />
CurieIMU.autoCalibrateAccelerometerOffset(Z_AXIS, 1);<br />
Serial.println(“ Done”);</p>
<p>Serial.println(“Internal sensor offsets AFTER calibration&#8230;”);<br />
Serial.print(CurieIMU.getAccelerometerOffset(X_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getAccelerometerOffset(Y_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getAccelerometerOffset(Z_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getAccelerometerOffset(X_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getAccelerometerOffset(Y_AXIS)); Serial.print(“\t”);<br />
Serial.print(CurieIMU.getAccelerometerOffset(Z_AXIS)); Serial.print(“\t”);<br />
Serial.println(“”);<br />
}<br />
}</p>
<p>void loop() {<br />
// 가속도와 자이로센서로부터 원시데이터를 읽어 온다.<br />
CurieIMU.readMotionSensor(ax, ay, az, gx, gy, gz);</p>
<p>// MagdwickAHRS.h 함수를 통해 쿼터니언을 계산하여 가져온다.<br />
filter.updateIMU(gx / factor, gy / factor, gz / factor, ax, ay, az);</p>
<p>// 쿼터니언으로부터 yaw, roll, pitch를 계산해낸다.<br />
yaw = filter.getYaw();<br />
roll = filter.getRoll();<br />
pitch = filter.getPitch();</p>
<p>// print gyro and accel values for debugging only, comment out when running Processing<br />
/*<br />
Serial.print(ax); Serial.print(“\t”);<br />
Serial.print(ay); Serial.print(“\t”);<br />
Serial.print(az); Serial.print(“\t”);<br />
Serial.print(gx); Serial.print(“\t”);<br />
Serial.print(gy); Serial.print(“\t”);<br />
Serial.print(gz); Serial.print(“\t”);<br />
Serial.println(“”);<br />
*/</p>
<p>if (Serial.available() &gt; 0) {<br />
int val = Serial.read();<br />
if (val == ‘s’) { // 시리얼 포트로 “s”라는 문자가 오는지 체크. 즉 프로세싱코드에서 보내야함<br />
Serial.print(yaw);<br />
Serial.print(“,”); // 콤마가 구분자로 사용된다.<br />
Serial.print(pitch);<br />
Serial.print(“,”); // 콤마가 구분자로 사용된다.<br />
Serial.println(roll);<br />
}<br />
}<br />
}</p>
</div>
<p><span style="color: #ff9900"><strong>4.2. 프로세싱용 소스코드</strong></span></p>
<p>아래 파일은 PC상에서 프로세싱을 실행시킨 후 불러들이면 3D애니메이션으로 된 제누이노101 보드가 보입니다.</p>
<p><strong>ㅇ 파일명 : IMU_OrientationVisualiser_Processing.pde</strong></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>import processing.serial.*;<br />
Serial myPort;</p>
<p>int newLine = 13; // new line character in ASCII<br />
float yaw;<br />
float pitch;<br />
float roll;<br />
String message;<br />
String [] ypr = new String [3];</p>
<p>void setup()<br />
{<br />
size(600, 500, P3D);</p>
<p>/*자신의 제누이노보드의 통신속도와 PC의 포트번호를 참조하여 설정한다.*/<br />
//myPort = new Serial(this, Serial.list()[0], 9600); // if you have only ONE COM port active<br />
myPort = new Serial(this, &#8220;COM51&#8243;, 9600); // if you know the 101 COM port</p>
<p>textSize(16); // set text size<br />
textMode(SHAPE); // set text mode to shape<br />
}</p>
<p>void draw()<br />
{<br />
serialEvent(); // read and parse incoming serial message<br />
background(255); // set background to white</p>
<p>translate(width/2, height/2); // set position to centre</p>
<p>pushMatrix(); // begin object</p>
<p>rotateX(pitch); // RotateX pitch value<br />
rotateY(-yaw); // yaw<br />
rotateZ(-roll); // roll</p>
<p>drawArduino(); // function to draw rough Arduino shape</p>
<p>popMatrix(); // end of object</p>
<p>// Print values to console<br />
print(pitch);<br />
print(&#8220;\t&#8221;);<br />
print(roll);<br />
print(&#8220;\t&#8221;);<br />
print(-yaw);<br />
println(&#8220;\t&#8221;);</p>
<p>myPort.write(&#8220;s&#8221;); // &#8220;s&#8221;를 제누이노 보드로 보내 다음 문자를 받아 들인다.<br />
}</p>
<p>void serialEvent()<br />
{<br />
message = myPort.readStringUntil(newLine); // read from port until new line (ASCII code 13)<br />
if (message != null) {<br />
ypr = split(message, &#8220;,&#8221;); // split message by commas and store in String array<br />
yaw = float(ypr[0]); // convert to float yaw<br />
pitch = float(ypr[1]); // convert to float pitch<br />
roll = float(ypr[2]); // convert to float roll<br />
}<br />
}</p>
<p>void drawArduino() {<br />
/* function contains shape(s) that are rotated with the IMU */<br />
stroke(0, 90, 90); // set outline colour to darker teal<br />
fill(0, 130, 130); // set fill colour to lighter teal<br />
box(300, 10, 200); // draw Arduino board base shape</p>
<p>stroke(0); // set outline colour to black<br />
fill(80); // set fill colour to dark grey</p>
<p>translate(60, -10, 90); // set position to edge of Arduino box<br />
box(170, 20, 10); // draw pin header as box</p>
<p>translate(-20, 0, -180); // set position to other edge of Arduino box<br />
box(210, 20, 10); // draw other pin header as box<br />
}</p>
<p>출처 : https://www.arduino.cc/en/Tutorial/Genuino101CurieIMUOrientationVisualiser</p>
</div>
<p><strong style="color: #ff9900">4.3. 동작화면</strong></p>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><img class="alignnone size-full wp-image-31764" alt="37 special review (11)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-11.jpg" width="620" height="451" /></td>
</tr>
<tr>
<td style="text-align: center">프로세싱 동작화면</td>
</tr>
</tbody>
</table>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-12.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31765" alt="37 special review (12)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-12.jpg" width="620" height="296" /></a></td>
</tr>
<tr>
<td style="text-align: center">그래픽 구현장면</td>
</tr>
</tbody>
</table>
<p><strong style="color: #ff9900">4.4. 작동 원리</strong></p>
<p>Madgwick 필터 알고리즘은 오픈 소스이며, Madgwick의 논문에 잘 서술이 되어있다고 합니다. Madgwick 필터 알고리즘은 세바스찬 Madgwick에 의해 2010년에 개발되었습니다. 이 알고리즘은 낮은 샘플링 속도에서도 효율적으로 동작되도록 설계되어 있습니다.</p>
<p>프로세싱 쪽에서 ‘s’ 문자를 송신하면 제누이노101에서는 yaw, pitch, roll값을 차례로 보내도록 프로토콜이 만들어져 있습니다. 이러한 체계는 예제를 위해 간이로 만들어진 것이며 제대로 사용되기 위해서는 에러 처리 작업 등이 필요합니다. 실제 동작되는 동영상은 제 블로그를 통해서도 보실 수 있을 것입니다.</p>
<p>(Madgwick 필터 알고리즘 오픈 소스는 http://www.x-io.co.uk/res/doc/madgwick_internal_report.pdf에서 볼 수 있습니다.)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #ff6600;font-size: medium"><strong>5. (예제2) Curie IMU IMU 정보 그래프로 표출</strong></span></p>
<p>자이로센서와 가속도센서의 값 6개를 시리얼 포트로 출력한 후에 시리얼 오실로스코프로 관찰을 해보도록 합니다.</p>
<p><span style="color: #ff9900"><strong>5.1. 시리얼오실로스코프 설치하기</strong></span> 시리얼 오실로스코프 프로그램은 오픈소스기반의 프로그램으로서 최대 9채널의 값을 그래프로 표현해 낼 수 있습니다. 시리얼 오실로스코프프로그램을 아래에서 다운로드 받습니다.</p>
<p><strong>ㅇ https://github.com/xioTechnologies/Serial-Oscilloscope</strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-13.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31766" alt="37 special review (13)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-13.jpg" width="620" height="275" /></a></p>
<p><span style="color: #ff9900"><strong>5.2. 시리얼오실스코프 간단한 사용법</strong></span></p>
<p><strong>ㅇ 시리얼로 보낼 때 기본원칙 : &#8220;11,22,33\r&#8221;</strong></p>
<p>위와 같은 데이터를 시리얼 오실로스코프로 보내면 CH1에는 11, CH2에는 22, CH3에는 33이 들어가게 됩니다. 즉 데이터 구분자가 콤마가 되게 됩니다.</p>
<p><strong>ㅇ 기본설정 순서</strong></p>
<p>Baud rate 설정 ⇒ Serial Port 설정 ⇒ Osciloscope를 선택하여 데이터 3개 이하가 콤마로 구분되어 전송되어 온다면 “Channels 1, 2, and 3&#8243;을 선택하면 됩니다. 선택 시 보이는 UI는 다음과 같이 조절합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-14.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31767" alt="37 special review (14)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-14.jpg" width="620" height="275" /></a></p>
<p>&nbsp;</p>
<p><span style="color: #ff9900"><strong>5.3. 소스코드</strong></span></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>===============================================<br />
Example sketch for CurieIMU library for Intel(R) Curie(TM) devices.<br />
Copyright (c) 2015 Intel Corporation. All rights reserved.<br />
Based on I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050<br />
class by Jeff Rowberg: https://github.com/jrowberg/i2cdevlib<br />
===============================================<br />
I2Cdev device library code is placed under the MIT license<br />
Copyright (c) 2011 Jeff Rowberg</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &#8220;Software&#8221;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p>
<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
<p>THE SOFTWARE IS PROVIDED &#8220;AS IS&#8221;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.<br />
===============================================</p>
<p>#include &#8220;CurieIMU.h&#8221;<br />
int ax, ay, az; // accelerometer values<br />
int gx, gy, gz; // gyrometer values</p>
<p>const int ledPin = 13; // activity LED pin<br />
boolean blinkState = false; // state of the LED</p>
<p>int calibrateOffsets = 1; // int to determine whether calibration takes place or not</p>
<p>void setup() {<br />
Serial.begin(9600); // initialize Serial communication<br />
while (!Serial); // wait for the serial port to open</p>
<p>// initialize device<br />
Serial.println(&#8220;Initializing IMU device&#8230;&#8221;);<br />
CurieIMU.begin();</p>
<p>// verify connection<br />
Serial.println(&#8220;Testing device connections&#8230;&#8221;);<br />
if (CurieIMU.begin()) {<br />
Serial.println(&#8220;CurieIMU connection successful&#8221;);<br />
} else {<br />
Serial.println(&#8220;CurieIMU connection failed&#8221;);<br />
}</p>
<p>// use the code below to calibrate accel/gyro offset values<br />
if (calibrateOffsets == 1) {<br />
Serial.println(&#8220;Internal sensor offsets BEFORE calibration&#8230;&#8221;);<br />
Serial.print(CurieIMU.getAccelerometerOffset(X_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // -76<br />
Serial.print(CurieIMU.getAccelerometerOffset(Y_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // -235<br />
Serial.print(CurieIMU.getAccelerometerOffset(Z_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // 168<br />
Serial.print(CurieIMU.getGyroOffset(X_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // 0<br />
Serial.print(CurieIMU.getGyroOffset(Y_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // 0<br />
Serial.println(CurieIMU.getGyroOffset(Z_AXIS));</p>
<p>// To manually configure offset compensation values,<br />
// use the following methods instead of the autoCalibrate&#8230;() methods below<br />
//CurieIMU.setAccelerometerOffset(X_AXIS,495.3);<br />
//CurieIMU.setAccelerometerOffset(Y_AXIS,-15.6);<br />
//CurieIMU.setAccelerometerOffset(Z_AXIS,491.4);<br />
//CurieIMU.setGyroOffset(X_AXIS,7.869);<br />
//CurieIMU.setGyroOffset(Y_AXIS,-0.061);<br />
//CurieIMU.setGyroOffset(Z_AXIS,15.494);</p>
<p>Serial.println(&#8220;About to calibrate. Make sure your board is stable and upright&#8221;);<br />
delay(5000);</p>
<p>// The board must be resting in a horizontal position for<br />
// the following calibration procedure to work correctly!<br />
Serial.print(&#8220;Starting Gyroscope calibration and enabling offset compensation&#8230;&#8221;);<br />
CurieIMU.autoCalibrateGyroOffset();<br />
Serial.println(&#8221; Done&#8221;);</p>
<p>Serial.print(&#8220;Starting Acceleration calibration and enabling offset compensation&#8230;&#8221;);<br />
CurieIMU.autoCalibrateAccelerometerOffset(X_AXIS, 0);<br />
CurieIMU.autoCalibrateAccelerometerOffset(Y_AXIS, 0);<br />
CurieIMU.autoCalibrateAccelerometerOffset(Z_AXIS, 1);<br />
Serial.println(&#8221; Done&#8221;);<br />
Serial.println(&#8220;Internal sensor offsets AFTER calibration&#8230;&#8221;);<br />
Serial.print(CurieIMU.getAccelerometerOffset(X_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // -76<br />
Serial.print(CurieIMU.getAccelerometerOffset(Y_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // -2359<br />
Serial.print(CurieIMU.getAccelerometerOffset(Z_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // 1688<br />
Serial.print(CurieIMU.getGyroOffset(X_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // 0<br />
Serial.print(CurieIMU.getGyroOffset(Y_AXIS));<br />
Serial.print(&#8220;\t&#8221;); // 0<br />
Serial.println(CurieIMU.getGyroOffset(Z_AXIS));<br />
}</p>
<p>// configure Arduino LED for activity indicator<br />
pinMode(ledPin, OUTPUT);<br />
}</p>
<p>void loop() {<br />
// read raw accel/gyro measurements from device<br />
CurieIMU.readMotionSensor(ax, ay, az, gx, gy, gz);</p>
<p>// these methods (and a few others) are also available</p>
<p>//CurieIMU.readAcceleration(ax, ay, az);<br />
//CurieIMU.readRotation(gx, gy, gz);</p>
<p>//ax = CurieIMU.readAccelerometer(X_AXIS);<br />
//ay = CurieIMU.readAccelerometer(Y_AXIS);<br />
//az = CurieIMU.readAccelerometer(Z_AXIS);<br />
//gx = CurieIMU.readGyro(X_AXIS);<br />
//gy = CurieIMU.readGyro(Y_AXIS);<br />
//gz = CurieIMU.readGyro(Z_AXIS);</p>
<p>// display tab-separated accel/gyro x/y/z values<br />
// Serial.print(&#8220;a/g:\t&#8221;);<br />
Serial.print(ax);<br />
Serial.print(&#8220;\t&#8221;);<br />
Serial.print(ay);<br />
Serial.print(&#8220;\t&#8221;);<br />
Serial.print(az);<br />
Serial.print(&#8220;\t&#8221;);<br />
Serial.print(gx);<br />
Serial.print(&#8220;\t&#8221;);<br />
Serial.print(gy);<br />
Serial.print(&#8220;\t&#8221;);<br />
Serial.println(gz);</p>
<p>// blink LED to indicate activity<br />
blinkState = !blinkState;<br />
digitalWrite(ledPin, blinkState);<br />
}<br />
</div><span style="font-size: large"><strong><br />
</strong></span></p>
<p><strong><span style="color: #ff9900"> 6.1. 동작화면</span></strong></p>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><img class="alignnone size-large wp-image-31768" alt="37 special review (15)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-15-620x479.jpg" width="620" height="479" /></td>
</tr>
<tr>
<td>① 제누이노101 개발중 스케치화면<br />
② 시리얼모니터화면<br />
③ 시리얼오실로스코프 메인화면</td>
</tr>
</tbody>
</table>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td> <a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-sr-66.jpg" rel="lightbox[31462]"><img class="alignnone size-large wp-image-31789" alt="37 sr 66" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-sr-66-620x480.jpg" width="620" height="480" /></a></td>
</tr>
<tr>
<td>④ CH1∼3  - Red : ax &#8211; Green : ay &#8211; Blue : az<br />
⑤ CH4∼6  - Red : gx &#8211; Green : gy &#8211; Blue : gz</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>기본적인 동작은 MPU6050을 사용하는 것과 견주어 봐도 별 차이가 없습니다. 다만 차이가 있다는 점은 MPU6050을 사용할 때는 TWI통신을 하여야 하는데 제누이노101에서는 인스턴스만 생성해 주는 것으로 간단히 마무리할 수 있습니다.</p>
<p><span style="color: #ff9900"><strong>6.2. (예제3) CurieBLE</strong><strong> 라이브러리</strong><strong> </strong><strong>기반 스마트폰으로 LED 제어하기</strong></span></p>
<p>제누이노101 보드에 내장된 블루투스 통신기능을 활용하여 스마트폰의 명령에 따라 보드의 LED를 점멸하는 테스트를 해보고자 합니다. HC-05 등 아두이노의 블루투스 실험에서 많이 등장하는 모듈이 있기는 합니다만 온보드로 되어 있는 블루투스 모듈은 상당한 접근 편리성을 제공해 준다고 볼 수 있습니다. 큐리칩에 내장되어 있으므로 시리얼, TWI, SPI 등의 통신과정 없이 직접 접근이 이뤄지게 됩니다. 이 점이 좀 생소할 수는 있겠습니다만 제누이노101과 친해 지려면 열심히 적응해야지 별 수 없습니다.</p>
<p><span style="color: #ff9900"><strong>6.3. 실험을 위한 사전준비</strong></span></p>
<p>우선 스마트폰(안드로이드 or 아이폰)과 제누이노101 보드를 준비합니다. 스크래치쪽 프로그램에서는 아래와 같은 함수와 라이브러리들이 동원됩니다. 다음으로 스마트폰에도 약간의 준비가 필요합니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="3">
<tbody>
<tr>
<td>구분</td>
<td>파일 &amp; 함수명</td>
<td>비고</td>
</tr>
<tr>
<td>라이브</td>
<td>CurieBLE.h</td>
<td>블루투스에 접근하기위한 라이브러리</td>
</tr>
<tr>
<td></td>
<td>blePeripheral- ConnectHandler()</td>
<td>블루투스로 연결을 처리하는 함수 연결시 LED를 점등 시킨다.&nbsp;</p>
<p>시리얼 모니터로도 메시지를 내보낸다.</td>
</tr>
<tr>
<td>함수</td>
<td>blePeripheral- DisconnectHandler()</td>
<td>연결을 중지시킨다.<br />
시리얼 모니터로도 상태 메시지를 출력한다.</td>
</tr>
<tr>
<td></td>
<td>switchCharacte-risticWritten ()</td>
<td>스마트폰의 NRF 마스터 컨트롤러의 명령에 따라 LED를 켜거나 끕니다.</td>
</tr>
</tbody>
</table>
<p>제누이노101 보드의 LED를 스마트폰으로 제어하기 위해서는 스마트폰에 ‘nRF Master Control Panel(BLE)’라고 하는 앱을 설치하여야 합니다.</p>
<p>플레이스토어에서 다운받아 설치를 합니다. 설치를 완료한 후 아래 [그림1] 처럼 SCAN을 실행시키고 LEDCB가 발견되면 connect 버튼을 누릅니다. 연결이 되고나면 아래 [그림2]와 같은 모습을 볼 수 있을 것입니다. 여기서 “Unknown service UUID 19B10000-E8F2-537E-4F6C-D104768A1214“를 선택 합니다.</p>
<p>이것은 스케치의 아래 구문으로 인해 이렇게 보이는 것입니다.</p>
<table style="width: 620px" border="0">
<tbody>
<tr>
<td colspan="2"><img class="alignnone size-full wp-image-31769" alt="37 special review (16)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-16.jpg" width="620" height="440" /></td>
</tr>
<tr>
<td style="text-align: center">그림 1</td>
<td style="text-align: center">그림 2</td>
</tr>
</tbody>
</table>
<p>BLEService ledService(&#8220;19B10000-E8F2-537E-4F6C-D104768A1214&#8243;); Unknown service UUID를 탭하면 [그림3]과 같은 모습을 볼 수 있으며⇅를 누르면 [그림4]와 같은 모습을 볼 수 있습니다. 여기서 값으로 1또는 0을 쓰면 제누이노101 보드의 LED를 켜거나 끌 수가 있겠습니다.UNIT는 unit8을 선택해야 합니다.</p>
<table style="width: 620px" border="0">
<tbody>
<tr>
<td colspan="2"><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-18.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31771" alt="37 special review (18)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-18.jpg" width="620" height="436" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림 3</td>
<td style="text-align: center">그림 4</td>
</tr>
</tbody>
</table>
<p>보드상에는 D13에 1608사이즈보다 좀 더 작아 보이는 작은 LED가 붙어 있어 이를 제어합니다만 너무 작아 외부에 고휘도 LED를 D13에 연결해 보았습니다. 그림4에서와 같이 1을 전송하면 D13이 High가되어 LED가 켜지고 0을 전송하면 LED가 꺼짐을 알 수 있습니다. 우리의 제누이노101 보드로 블루투스를 통한 원격제어가 어떻게 이뤄지는가를 적나라(?)하게 체험을 해봤습니다.</p>
<table style="width: 620px" border="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-19.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31772" alt="37 special review (19)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-19.jpg" width="620" height="404" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림 5</td>
</tr>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-20.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31773" alt="37 special review (20)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-20.jpg" width="620" height="404" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림 6</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><span style="color: #ff9900"><strong>6.4. 적용코드</strong></span></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>/*<br />
* Copyright (c) 2016 Intel Corporation. All rights reserved.<br />
* See the bottom of this file for the license terms.<br />
*/</p>
<p>#include &lt;CurieBLE.h&gt;</p>
<p>const int ledPin = 13; // 보드상에 있는 LED를 사용하기위해 설정<br />
BLEPeripheral blePeripheral; // 블루투스 패리퍼럴 인스턴스를 생성한다.</p>
<p>BLEService ledService(&#8220;19B10000-E8F2-537E-4F6C-D104768A1214&#8243;); // 서비스를 생성한다.</p>
<p>// switch characteristic 를 원격장치에서 읽고 쓸 수 있도록 생성한다.<br />
BLECharCharacteristic switchChar(&#8220;19B10001-E8F2-537E-4F6C-D104768A1214&#8243;, BLERead | BLEWrite);</p>
<p>void setup() {<br />
Serial.begin(9600);<br />
pinMode(ledPin, OUTPUT); // LED포트(pin 13)를 출력으로 설정</p>
<p>// 주변장치에게 광고할 제누이노101보드의 블루투스 이름<br />
// 즉, 이 이름이 스마트폰 등에서 확인이 된다.<br />
blePeripheral.setLocalName(&#8220;LEDCB&#8221;);</p>
<p>// UUID를 설정한다.<br />
blePeripheral.setAdvertisedServiceUuid(ledService.uuid());</p>
<p>// 서비스와 특성 정보를 추가시킨다.<br />
blePeripheral.addAttribute(ledService);<br />
blePeripheral.addAttribute(switchChar);</p>
<p>// 주변장치를 연결하거나 끊기 위한 이벤트 핸들러를 할당 한다.<br />
blePeripheral.setEventHandler(BLEConnected, blePeripheralConnectHandler);<br />
blePeripheral.setEventHandler(BLEDisconnected, blePeripheralDisconnectHandler);</p>
<p>// 특성제어를 위한 이벤트 핸들러를 할당한다.<br />
switchChar.setEventHandler(BLEWritten, switchCharacteristicWritten);</p>
<p>// 특성정보를 초기화 한다.<br />
switchChar.setValue(0);</p>
<p>// 서비스를 광고한다. 즉, 다른 기기에서 이제부터 이 서비스를 탐지(탐색) 할 수 있다.<br />
blePeripheral.begin();<br />
Serial.println((&#8220;Bluetooth device active, waiting for connections&#8230;&#8221;));<br />
}</p>
<p>void loop() {<br />
// 주변장치로부터 반응을 지속적으로 폴링한다.<br />
blePeripheral.poll();<br />
}</p>
<p>// 접속이벤트 처리용 핸들러<br />
void blePeripheralConnectHandler(BLECentral&amp; central) {<br />
// central connected event handler<br />
Serial.print(&#8220;Connected event, central: &#8220;);<br />
Serial.println(central.address());<br />
}</p>
<p>// 접속끊김 이벤트 처리용 핸들러<br />
void blePeripheralDisconnectHandler(BLECentral&amp; central) {<br />
// central disconnected event handler<br />
Serial.print(&#8220;Disconnected event, central: &#8220;);<br />
Serial.println(central.address());<br />
}</p>
<p>// 실제로 LED를 제어하는 부분으로 switchChar.value()값을 읽어 LED 점멸을 제어한다.<br />
void switchCharacteristicWritten(BLECentral&amp; central, BLECharacteristic&amp; characteristic) {<br />
// central wrote new value to characteristic, update LED<br />
Serial.print(&#8220;Characteristic event, written: &#8220;);</p>
<p>if (switchChar.value()) {<br />
Serial.println(&#8220;LED on&#8221;);<br />
digitalWrite(ledPin, HIGH);<br />
} else {<br />
Serial.println(&#8220;LED off&#8221;);<br />
digitalWrite(ledPin, LOW);<br />
}<br />
}</p>
<p>/*<br />
Copyright (c) 2016 Intel Corporation. All rights reserved.</p>
<p>This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.<br />
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</p>
<p>You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA<br />
*/</p>
<p>&nbsp;</p>
<p>출처 : https://www.arduino.cc/en/Tutorial/Genuino101CurieBLECallbackLED<br />
</div>
<p>블루투스를 통해 스마트폰과 통신이 정확히 되기 위해서는 인텔사에서 미리 만들어 놓은 BLEPeripheral 클래스에 대해서 많은 학습이 필요하리라 봅니다. 단순히 값을 넘겨주고 넘겨받는 차원이 아니라 블루투스 장치에 접근하기 위한 인스턴스 생성까지를 해주어야 하므로 좀 더 고차원적인 일을 할 수는 있을 것으로 봅니다만 학습을 필요로 하는 것이 그만큼 많아질 공산이 큽니다.</p>
<p><span style="color: #ff9900"><strong>7. (예제4)심장박동 모니터 시뮬레이션</strong></span></p>
<p>블루투스로 스마트폰과 연결된 상태에서 심장 박동을 모니터링 해보도록 하겠습니다. 정말로 심장박동을 모니터링하기 위해서는 손가락의 혈류흐름을 감지하는 센서가 필요합니다만 편의상 A0에 포텐셔메터를 연결하여 심장박동센서에서 심박 수가 얻어 짐을 포텐셔메터의 각도 값에 따른 저항 값으로 대체 합니다. 이 예제를 돌려보기 위해서는 스마트폰에 ‘nRF Toolbox for BLE’가 설치되어야 합니다.</p>
<p><span style="color: #ff9900"><strong>7.1. 제누이노101측 HW구성</strong></span></p>
<p>우선 테스트를 위해 포텐셔메터와 LED 1개를 아래와 같이 연결합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-21.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31774" alt="37 special review (21)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-21.jpg" width="620" height="330" /></a></p>
<p>&nbsp;</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="3">
<tbody>
<tr>
<td style="text-align: center">핀</td>
<td style="text-align: center">부품연결</td>
<td style="text-align: center">비고</td>
</tr>
<tr>
<td style="text-align: center">A0</td>
<td style="text-align: center">포텐셔메터 2번핀</td>
<td style="text-align: center" rowspan="3">심장박동 신호값</td>
</tr>
<tr>
<td style="text-align: center">+3V</td>
<td style="text-align: center">포텐셔메터 3번핀</td>
</tr>
<tr>
<td style="text-align: center">GND</td>
<td style="text-align: center">포텐셔메터 1번핀</td>
</tr>
<tr>
<td style="text-align: center">D13</td>
<td style="text-align: center">LED Anode</td>
<td style="text-align: center" rowspan="2">상태표시</td>
</tr>
<tr>
<td style="text-align: center">GND</td>
<td style="text-align: center">LED Cathode</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><span style="color: #ff9900"><strong>7.2. 스마트폰측 환경설정</strong></span></p>
<p><strong>ㅇ nRF Toolbox for BLE를 플레이스토어에서 찾아 설치합니다.</strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/Cap-2016-10-21-10-53-42-482.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31790" alt="Cap 2016-10-21 10-53-42-482" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/Cap-2016-10-21-10-53-42-482.jpg" width="443" height="145" /></a></p>
<p><strong>ㅇ 제누이노101용 심장박동 시뮬레이션 소스코드</strong></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>/* Copyright (c) 2015 Intel Corporation. All rights reserved.</p>
<p>This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.</p>
<p>This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</p>
<p>You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA<br />
*/</p>
<p>/*<br />
This sketch example partially implements the standard Bluetooth Low-Energy Heart Rate service.<br />
For more information: https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx<br />
*/</p>
<p>#include &lt;CurieBLE.h&gt;</p>
<p>BLEPeripheral blePeripheral; // BLE Peripheral Device (the board you&#8217;re programming)<br />
BLEService heartRateService(&#8220;180D&#8221;); // BLE Heart Rate Service</p>
<p>// BLE Heart Rate Measurement Characteristic&#8221;<br />
BLECharacteristic heartRateChar(&#8220;2A37&#8243;, // standard 16-bit characteristic UUID<br />
BLERead | BLENotify, 2); // remote clients will be able to get notifications if this characteristic changes</p>
<p>// the characteristic is 2 bytes long as the first field needs to be &#8220;Flags&#8221; as per BLE specifications<br />
// https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?<br />
// u=org.bluetooth.characteristic.heart_rate_measurement.xml</p>
<p>int oldHeartRate = 0; // last heart rate reading from analog input<br />
long previousMillis = 0; // last time the heart rate was checked, in ms</p>
<p>void setup() {<br />
Serial.begin(9600); // initialize serial communication<br />
pinMode(13, OUTPUT); // initialize the LED on pin 13 to indicate when a central is connected</p>
<p>/* Set a local name for the BLE device<br />
This name will appear in advertising packets<br />
and can be used by remote devices to identify this BLE device<br />
The name can be changed but maybe be truncated based on space left in advertisement packet */<br />
blePeripheral.setLocalName(&#8220;HeartRateSketch&#8221;);<br />
blePeripheral.setAdvertisedServiceUuid(heartRateService.uuid()); // add the service UUID<br />
blePeripheral.addAttribute(heartRateService); // Add the BLE Heart Rate service<br />
blePeripheral.addAttribute(heartRateChar); // add the Heart Rate Measurement characteristic</p>
<p>/* Now activate the BLE device. It will start continuously transmitting BLE<br />
advertising packets and will be visible to remote BLE central devices<br />
until it receives a new connection */<br />
blePeripheral.begin();<br />
Serial.println(&#8220;Bluetooth device active, waiting for connections&#8230;&#8221;);<br />
}</p>
<p>void loop() {<br />
// listen for BLE peripherals to connect:<br />
BLECentral central = blePeripheral.central();</p>
<p>// if a central is connected to peripheral:<br />
if (central) {<br />
Serial.print(&#8220;Connected to central: &#8220;);<br />
// print the central&#8217;s MAC address:<br />
Serial.println(central.address());<br />
// turn on the LED to indicate the connection:<br />
digitalWrite(13, HIGH);<br />
// check the heart rate measurement every 200ms<br />
// as long as the central is still connected:<br />
while (central.connected()) {<br />
long currentMillis = millis();<br />
// if 200ms have passed, check the heart rate measurement:<br />
if (currentMillis &#8211; previousMillis &gt;= 200) {<br />
previousMillis = currentMillis;<br />
updateHeartRate();<br />
}<br />
}<br />
// when the central disconnects, turn off the LED:<br />
digitalWrite(13, LOW);<br />
Serial.print(&#8220;Disconnected from central: &#8220;);<br />
Serial.println(central.address());<br />
}<br />
}</p>
<p>void updateHeartRate() {<br />
/* Read the current voltage level on the A0 analog input pin.<br />
This is used here to simulate the heart rate&#8217;s measurement.<br />
*/<br />
int heartRateMeasurement = analogRead(A0);<br />
int heartRate = map(heartRateMeasurement, 0, 1023, 0, 100);<br />
if (heartRate != oldHeartRate) { // if the heart rate has changed<br />
Serial.print(&#8220;Heart Rate is now: &#8220;); // print it<br />
Serial.println(heartRate);<br />
//const unsigned char heartRateCharArray[2] = { 0, (char)heartRate };<br />
const unsigned char heartRateCharArray[2] = { 0, (unsigned char)heartRate };<br />
heartRateChar.setValue(heartRateCharArray, 2); // and update the heart rate measurement characteristic<br />
oldHeartRate = heartRate; // save the level for next comparison<br />
}<br />
}<br />
</div>
<p><span style="color: #ff9900"><strong>7.3. 스마트폰에서 동작이 되고 있는 화면</strong></span></p>
<table style="width: 620px" border="0">
<tbody>
<tr>
<td colspan="2"><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-23.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31776" alt="37 special review (23)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-23.jpg" width="620" height="398" /></a></td>
</tr>
<tr>
<td style="text-align: center">HRM 선택</td>
<td style="text-align: center">CONNECT</td>
</tr>
</tbody>
</table>
<table style="width: 620px" border="0">
<tbody>
<tr>
<td colspan="2"><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-24.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31777" alt="37 special review (24)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-24.jpg" width="620" height="396" /></a></td>
</tr>
<tr>
<td style="text-align: center">HartRateSkech</td>
<td style="text-align: center">HartRate 그래프</td>
</tr>
</tbody>
</table>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-25.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31778" alt="37 special review (25)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-25.jpg" width="620" height="457" /></a></p>
<p>스마트폰에서 ‘nRF Toolbox for BLE‘ 아이콘을 터치하면 [HRM]을 선택할 수 있는 초기 화면이 보입니다. HRM이 선택되면 [CONNECT] 단계로 넘어갑니다. [HartRateSkech]를 선택하면 비로소 심장박동 모니터를 볼 수 있습니다. 본 프로그램은 일종으로 시뮬레이터로 제누이노101의 포텐셔메터를 돌리면 심장박동 값을 스마트폰 측으로 전송할 수 있게 됩니다.</p>
<p><span style="color: #ff9900"><strong>8. (예제5) 제누이노101을 비콘으로 만들기</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-26.jpg" rel="lightbox[31462]"><img class="alignnone  wp-image-31779" alt="37 special review (26)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-26.jpg" width="496" height="187" /></a></p>
<p>IOT라는 용어와 함께 빠지지 않고 등장하는 것이 비콘입니다. 비콘은 등대라는 의미로 전자기파를 주기적으로 발사시켜 자신의 존재를 알리는 장치를 통칭합니다. 블루투스뿐만 아니라 Wi-Fi를 사용해서도 비콘을 만들 수 있으며 디지털시대를 맞이하여 단순히 존재뿐만 아니라 위치, 거리, 메시지 등의 정보를 함께 실어서 보낼 수가 있습니다. 블루투스 4.0 LE는 매우 낮은 전력을 사용하는 통신규격으로, 블루투스 헤드셋, 마우스, 키보드 등에 널리 사용되며 코인배터리를 사용하는 디바이스에 매우 적합한 특성을 갖고 있다고 봅니다. 우리의 제누이노101 보드에는 블루투스 4.0 LE가 들어가 있고 이를 제어할 수 있는 큐리칩이 있으므로 비콘을 만들 수 있을 것이란 생각에 열심히 구글링한 결과 쓸만한 Sample Code를 얻을 수 있었습니다.</p>
<p><span style="color: #ff9900"><strong>8.1. 스마트폰 환경설정</strong></span></p>
<p>우선적으로 비콘 신호를 잡아낼 앱을 스마트폰에 설치하여야 합니다. 구글 플레이스토어 &gt; eddystone &gt; iBeacon &amp; Eddystone를 설치합니다. iBeacon은 애플사가 미는 비콘 생태계이고 Eddystone은 구글이 미는 생태계입니다. 제누이노101로 실험하는 환경은 Eddystone입니다. 열정적인 누군가가 iBeacon 스케치를 발표할 수도 있을 듯 합니다만 아직은 발견할 수가 없습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-27.jpg" rel="lightbox[31462]"><img class="alignnone  wp-image-31780" alt="37 special review (27)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-27.jpg" width="496" height="318" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-28.jpg" rel="lightbox[31462]"><img class="alignnone  wp-image-31781" alt="37 special review (28)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-28.jpg" width="496" height="322" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #ff9900"><strong>8.2. 아두이노 환경구성</strong></span></p>
<p>우선 비콘을 돌릴 수 있도록 환경을 재구성 하여야 합니다. 블루투스와 관련된 라이브러리를 설치하여야 하며 아래 URL로 접속하여 다운받은 후 압축을 풀어 제누이노101 라이브러가 설치된 곳에 붙여 넣으면 됩니다.</p>
<p>필자의 경우 경로는 다음과 같습니다. C:\Users\home\AppData\Local\Arduino15\packages\Intel\hardware\arc32\1.0.6\libraries</p>
<p><strong>ㅇ 라이브러리 주소 :</strong> https://github.com/bneedhamia/corelibs-arduino101/tree/support-eddystone-url</p>
<p><strong><strong>ㅇ </strong>아두이노 스케치 다운로드</strong> https://github.com/bneedhamia/CurieEddystoneURL</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-29.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31782" alt="37 special review (29)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-29.jpg" width="620" height="448" /></a></p>
<p>소스코드가 너무 길어 도입 부분만 언급하면 아래와 같습니다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>/*<br />
* Eddystone URL for Arduino/Genuino 101.<br />
*<br />
* This is an Intel Curie Eddystone-compatible Sketch<br />
* (https://github.com/google/eddystone).<br />
*<br />
* The Eddystone BLE protocol is used by the Physical Web(tm) project<br />
* (https://github.com/google/physical-web).<br />
* The Physical Web project is about BLE beacons that broadcast URLs<br />
* so your users don&#8217;t have to download an app just to interact with<br />
* your device.<br />
*<br />
* Note: this version doesn&#8217;t support Eddystone Config mode.<br />
* To change the URL, you need to modify MY_URL and reload the Arduino.<br />
*<br />
* Parts required:<br />
* Arduino/Genuino 101. This Sketch runs only on Curie-based devices.<br />
* No other hardware is required.<br />
*<br />
* To Use:<br />
* &#8211; Setup your CurieBLE libraries to support Eddystone.<br />
* Doing this may be a little complicated until the Eddystone support<br />
* is added to the CurieBLE library. Until then&#8230;<br />
* There are two ways to do that:<br />
* 1) Pull code from https://github.com/bneedhamia/corelibs-arduino101/tree/support-eddystone-url<br />
* or<br />
* 2) Replace CurieBLE/BLEPeripheral.* and CurieBLE/keywords.txt<br />
* with a modified version that supports Eddystone Advertising packets.<br />
* See https://github.com/bneedhamia/CurieBLEServiceData<br />
* once that&#8217;s done&#8230;<br />
* &#8211; Set MY_URL to the url for the beacon you wish to broadcast.<br />
* &#8211; Download this Sketch to an Arduino/Genuino 101.<br />
* &#8211; Download a Physical Web app to your phone.<br />
* For example, Google&#8217;s Physical Web Android app is at<br />
* https://play.google.com/store/apps/details?id=physical_web.org.physicalweb<br />
*<br />
* Copyright (c) 2016 Bradford Needham, North Plains, Oregon, USA<br />
* @bneedhamia, https://www.needhamia.com<br />
* Licensed under the Apache 2.0 License, a copy of which<br />
* should have been included with this software.<br />
*/</p>
<p>/*<br />
* Note: as of this writing, the documentation of the CurieBLE library<br />
* is the library source, at (on Linux)<br />
* ~/.arduino15/packages/Intel/hardware/arc32/1.0.4/libraries/CurieBle/src<br />
*<br />
* Version 1.0.4 of CurieBle doesn&#8217;t support Eddystone-format<br />
* BLE Advertising packets, for 2 reasons:<br />
* &#8211; It uses the BLE code for Incomplete Service UUID list<br />
* instead of Complete Service UUID list code required by Eddystone.<br />
* &#8211; It doesn&#8217;t support Service Data, which is required by Eddystone.<br />
*<br />
* Note: the name of the Curie BLE library changed between 1.0.4 and<br />
* the latest (as of March 10, 2016) version:<br />
* In 1.0.4, the name is CurieBle.h; in later versions, it&#8217;s CurieBLE.h<br />
*/</p>
<p>#include &lt;CurieBLE.h&gt; // BHN-Modified Curie-specific BLE Library</p>
<p>/*<br />
* Pinout:<br />
* PIN_BLINK = digital Output. The normal Arduino 101 LED.<br />
* If everything is working, the LED blinks.<br />
* If instead there is a startup error, the LED is solid.<br />
*/<br />
const int PIN_BLINK = 13; // Pin 13 is the on-board LED</p>
<p>/*<br />
* The (unencoded) URL to put into the<br />
* Eddystone-URL beacon frame.<br />
*<br />
* NOTE: the encoded length must be under 18 bytes long.<br />
* See initEddystoneUrlFrame().<br />
*<br />
* NOTE: This Sketch supports only lower-case URLs.<br />
* See initEddystoneUrlFrame().<br />
*/<br />
const char* MY_URL = &#8220;http://www.devicemart.co.kr/&#8221;;</p>
<p>/*<br />
* The reported Tx Power value to put into the Eddystone-URL beacon frame.<br />
*<br />
* From the Eddystone-URL Protocol specification<br />
* (https://github.com/google/eddystone/blob/master/eddystone-url/README.md#tx-power-level)<br />
* &#8220;the best way to determine the precise value<br />
* to put into this field is to measure the actual output<br />
* of your beacon from 1 meter away and then add 41dBm to that.<br />
* 41dBm is the signal loss that occurs over 1 meter.&#8221;<br />
*<br />
* I used the Nordic nRF Master Control Panel Android app<br />
* (https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp&amp;hl=en)<br />
* to measure the beacon power at 1 meter.<br />
*/<br />
const int8_t TX_POWER_DBM = (-70 + 41);</p>
<p>/*<br />
* Maximum number of bytes in an Eddystone-URL frame.<br />
* The Eddystone-URL frame contains<br />
* the frame type, Tx Power, Url Prefix, and up to 17 bytes of Url.<br />
* (The spec isn&#8217;t completely clear. That might be 18 rather than 17.)<br />
*/<br />
const uint8_t MAX_URL_FRAME_LENGTH = 1 + 1 + 1 + 17;</p>
<p>/*<br />
* Eddystone-URL frame type<br />
*/<br />
const uint8_t FRAME_TYPE_EDDYSTONE_URL = 0&#215;10;</p>
<p>/*<br />
* Eddystone-URL url prefix types<br />
* representing the starting characters of the URL.<br />
* 0&#215;00 = http://www.<br />
* 0&#215;01 = https://www.<br />
* 0&#215;02 = http://<br />
* 0&#215;03 = https://<br />
*/<br />
const uint8_t URL_PREFIX_HTTP_WWW_DOT = 0&#215;00;<br />
const uint8_t URL_PREFIX_HTTPS_WWW_DOT = 0&#215;01;<br />
const uint8_t URL_PREFIX_HTTP_COLON_SLASH_SLASH = 0&#215;02;<br />
const uint8_t URL_PREFIX_HTTPS_COLON_SLASH_SLASH = 0&#215;03;</p>
<p>/*<br />
* eddyService = Our BLE Eddystone Service.<br />
* See https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx<br />
* and https://github.com/google/eddystone/blob/master/protocol-specification.md<br />
* NOTE: as of this writing, Eddystone doesn&#8217;t seem to be part of the Standard BLE Services list.<br />
*<br />
*/<br />
BLEService eddyService(&#8220;FEAA&#8221;);</p>
<p>BLEPeripheral ble; // Root of our BLE Peripheral (server) capability</p>
<p>&lt;중략&gt;<br />
</div>
<p><span style="color: #ff9900"><strong>8.4 최종화면</strong></span></p>
<p>모든 작업이 순조롭게 진행 되었다면 아래와 같은 스마트폰 화면을 보실 수 있습니다. 이 정보는 비콘과 스마트폰을 연계하여 어떠한 형태로 동작을 시킬 수 있는지를 보여주는 단순한 사례에 해당됩니다. 좀 더 그럴싸한 앱을 개발하여 적용한다면 실용성을 갖춘 제품도 가능하리라 예상해 봅니다. 이 앱을 통해 전파 수신세력, 서비스 형식, 비콘과 스마트폰간의 거리, 비콘을 발견했을때 접속할 URL 등의 정보를 얻을 수가 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-30.jpg" rel="lightbox[31462]"><img class="alignnone size-full wp-image-31783" alt="37 special review (30)" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/37-special-review-30.jpg" width="620" height="285" /></a></p>
<p><span style="color: #ff6600;font-size: medium"><strong>9. 정리</strong></span></p>
<p>이상으로 제누이노101 보드가 가진 특징 위주로 쭉~ 살펴봤습니다. 아두이노 우노에 비해 파워풀한 성능과 다양한 기능으로 무장한 제누이노101은 매우 강력하다는 느낌이 우선적으로 듭니다. 아무리 아두이노가 학습용으로 많이 사용되는 물품이라 하지만 간단한 테스트 하는 용도를 넘어서기에 부족함이 없을 것 같다는 생각이 또한 들었습니다. 이 보드의 가장 강력한 점을 들라고 한다면 블루투스 4.0 LE의 탑재라고 생각됩니다. 단순히 SPP(Serial Port Profile)로 UART 통신 정도나 하는 그런 블루투스 디바이스와는 완전히 차원이 다른 기능으로 무장하고 있다는 점입니다. 이 모듈을 이용하여 Beacon으로 활용하거나 6모션센서로 센싱된 결과 값으로 로봇 등을 제어하되 블루투스 기능으로 원격제어하는 용도에 아주 잘 맞는 제품으로 생각됩니다. 이런 점에서 볼 때 아두이노를 처음 접하는 새내기 아누이노어들에게는 조금 벅찬 제품일 수 있겠다는 생각도 한편으로 듭니다. 일전에도 잠시 다뤄본 바 있는 에디슨보드는 프로토타이핑용 혹은 IOT용으로 사용하기에는 너무도 강력함에 기인된 구조상 불편한 점(70핀 히로세 커넥터 등)이 다소 있었다면 제누이노101 보드는 이런 불편 점을 일소시킨 보드라는 생각이 듭니다. 이 보드는 인텔에서 적극적으로 밀고 있는 보드인 만큼 시장에서 상당한 반향을 몰고 올 소지도 충분히 있다고 봅니다. 제누이노101 보드를 한마디로 표현해 본다면 아두이노 외투를 걸친 초미니 PC 정도에 해당될 수 있을 것 같습니다. 이상으로 제누이노101 보드에 대한 리뷰를 마칩니다. 감사합니다.</p>
<p><span style="color: #ff6600;font-size: medium"><strong>자료참고</strong></span></p>
<p>1. 제누이노 공식 웹사이트 : www.arduino.cc/en/Main/ArduinoBoard101<br />
2. 인텔사 큐리칩 공식 소개 페이지 : www.intel.com/content/www/us/en/wearables/intel-curie-fact-sheet.html<br />
3. 인텔 큐리칩 개인 포스팅 자료</p>
<p>http://blog.naver.com/jjy0501/220235133315</p>
<p>http://www.bodnara.co.kr/bbs/article.html?num=117199</p>
<p>4. 쿼터니언 관련 기초지식 : ko.wikipedia.org/wiki/%EC%82%AC%EC%9B%90%EC%88%98<br />
5. 프로세싱 프로그램 다운로드 : processing.org/download/<br />
6. 제누이노101 라이브러리 : github.com/01org/corelibs-arduino101<br />
7. 제누이노101 실험용 소스코드<br />
www.arduino.cc/en/Tutorial/Genuino101CurieIMUOrientationVisualiser<br />
www.arduino.cc/en/Tutorial/Genuino101CurieIMURawImuDataSerial<br />
www.arduino.cc/en/Tutorial/Genuino101CurieBLECallbackLED<br />
www.arduino.cc/en/Tutorial/Genuino101CurieBLEHeartRateMonitor<br />
8. madgwick 라이브러리 논문 : www.x-io.co.uk/res/doc/madgwick_internal_report.pdf<br />
9. PC기반 시리얼 오실로스코프 프로그램 : github.com/xioTechnologies/Serial-Oscilloscope<br />
10. 비콘 관련 언론 보도자료 : news.naver.com/main/read.nhn?mode=LSD&amp;mid=sec&amp;sid1=101&amp;oid=469&amp;aid=0000059091<br />
11. 에디스톤 제누이노101 라이브러리 : github.com/bneedhamia/corelibs-arduino101/tree/support-eddystone-url<br />
12. 제누이노101용 에디스톤 스캐치 : github.com/bneedhamia/CurieEddystoneURL</p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/07/Cap-2016-10-21-11-05-26-324.jpg" rel="lightbox[31462]"><img class="alignnone size-large wp-image-31791" alt="Cap 2016-10-21 11-05-26-324" src="http://www.ntrexgo.com/wp-content/uploads/2016/07/Cap-2016-10-21-11-05-26-324-620x282.jpg" width="620" height="282" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/31462/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[29호] Intel Edison Review</title>
		<link>http://www.ntrexgo.com/archives/28027</link>
		<comments>http://www.ntrexgo.com/archives/28027#comments</comments>
		<pubDate>Tue, 10 Mar 2015 02:04:02 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[blog-posts]]></category>
		<category><![CDATA[제품 리뷰]]></category>
		<category><![CDATA[특집]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[devicemart]]></category>
		<category><![CDATA[edison]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[ntrex]]></category>
		<category><![CDATA[raspberry]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[라즈바리파이]]></category>
		<category><![CDATA[리뷰]]></category>
		<category><![CDATA[아두이노]]></category>
		<category><![CDATA[에디슨]]></category>
		<category><![CDATA[엔티렉스]]></category>
		<category><![CDATA[인텔]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=28027</guid>
		<description><![CDATA[본 리뷰는 디바이스마트 ((주)엔티렉스)의 지원을 받아 작성하게 되었습니다. 
인텔 홈페이지, 해외 웹사이트 등을 참고해 가며 본 리뷰를 작성하였습니다.
저자 : 객원기자 금강초롱
이 기사는 디바이스마트매거진 29호에 실려있는 글입니다.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-666.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28028" alt="Edi" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-666.jpg" width="620" height="234" /></a></p>
<p>&nbsp;</p>
<p>바야흐로 IOT(Internet of Things : 사물인터넷)시대가 막 개화하려하고 있는 이 시대 우연한 기회에 에디슨 보드라는 것을 알게 되었습니다. 모든 사물이 인터넷에 연결되어 정보를 공유할 수 있는 체계를 통칭하여 IOT라 한다고 하지만 선뜻 와 닿지는 않는 것 같습니다. 이렇게 사물을 인터넷과 연결시켜주는 다리와도 같은 역할을 인텔 에디슨 보드가 충실히 해낼 수 있을까요?</p>
<p dir="ltr">저는 라즈베리파이보드와 스마트폰을 연동하여 Wi-Fi 기반에서 RC CAR를 제어해 본 경험이 있었기에 모듈형 초소형 컴퓨터에 대해서는 그리 낯설지 않은 것 같습니다. 맨 처음 라즈베리파이보드를 접했을 때의 문화적 충격보다도 갑절은 더 할 에디슨 보드의 리뷰를 시작해보려 하며 Breakout보드를 사용하여 리눅스, 아두이노 등을 테스트 해보고자 합니다. 궁극적으로는 에디슨보드를 인터넷에 물려서 동작시켜보려 합니다.</p>
<p dir="ltr">본 리뷰는 디바이스마트 ((주)엔티렉스)의 지원을 받아 작성하게 되었습니다. 아직 시장에 출시된 지 얼마 되지 않은 관계로 한글로 된 정보가 거의 없다보니 인텔 홈페이지와 해외 웹사이트 등을 참고해 가며 본 리뷰 보고서를 작성하였습니다.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: x-large;"><strong>[1] <a href="http://www.devicemart.co.kr/1160265">에디슨 보드</a> 제품 외관 및 사양</strong></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large;"><strong>  1. 에디슨 보드 개봉</strong></span></p>
<p dir="ltr">   작은 스마트폰 케이스만한 상자에 에디슨보드와 에디슨 Breakout보드가 각각 1매씩 들어 있었습니다. 에디슨 Breakout보드는 별매품이지만 에디슨보드를 사용하려면 적어도 이 보드 정도는 갖춰야 하기에 주최 측에서 배려를 해주셨습니다. 먼저 사이즈가 어느 정도 되는지 이해하기 쉽도록 자를 대고 촬영해 보았습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/02번.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28029" alt="02번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/02번.jpg" width="800" height="600" /></a><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/03번.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28030" alt="03번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/03번.jpg" width="800" height="600" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/04번.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28031" alt="04번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/04번.jpg" width="620" height="241" /></a></p>
<p style="text-align: center;"> <strong>Intel® Edison(<a href=" http://www.devicemart.co.kr/1160265">상품코드:1160265</a>)와 Intel® Edison Breakout Board(<a href="http://www.devicemart.co.kr/1160267">상품코드:1160267</a>)</strong></p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large;"><strong>  2. 에디슨 보드 간략 살펴보기</strong></span></p>
<p dir="ltr">   인텔사의 홍보성 글에 ®에디슨컴퓨팅모듈은 “IoT 프로토타입” 및 “웨어러블 컴퓨팅” 제품 생산에 대한 진입 장벽을 낮출 수 있도록 많은 고려가 있었다고 합니다.</p>
<p dir="ltr">70핀 커넥터를 통해 외부와 전기적으로 연결되며 와이파이/블루투스를 포함하고 있습니다만 비디오 입출력(LCD등 디스플레이장치, 디스플레이 커넥터) 등은 미포함입니다.</p>
<div dir="ltr">
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="171" />
<col width="466" /></colgroup>
<tbody>
<tr>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\ud56d \ubaa9&quot;]"><strong>항 목</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\ub0b4 \uc5ed&quot;]"><strong>내 역</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ud504\ub85c\uc138\uc11c&quot;]"><strong>프로세서</strong></td>
<td data-sheets-value="[null,2,&quot;  Dual Core IA-32 @ 500 MHz,\n32-bit Intel\u00ae Atom\u2122 Processor Z34xx Series @ 100 MHz&quot;]"> Dual Core IA-32 @ 500 MHz,<br />
32-bit Intel® Atom™ Processor Z34xx Series @ 100 MHz</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;RAM&quot;]"><strong>RAM</strong></td>
<td data-sheets-value="[null,2,&quot;  1 GB LPDDR3 POP memory\n(2 channel 32 bits @ 800 MT/sec)&quot;]"> 1 GB LPDDR3 POP memory<br />
(2 channel 32 bits @ 800 MT/sec)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ub0b4\uc7a5 \uc2a4\ud1a0\ub9ac\uc9c0&quot;]"><strong>내장 스토리지</strong></td>
<td data-sheets-value="[null,2,&quot;  4 GB eMMC (v4.51 spec) &quot;]"> 4 GB eMMC (v4.51 spec)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uc804\ub825\uad00\ub9ac&quot;]"><strong>전력관리</strong></td>
<td data-sheets-value="[null,2,&quot;  TI SNB9024 power management IC&quot;]"> TI SNB9024 power management IC</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ubb34\uc120&quot;]"><strong>무선</strong></td>
<td data-sheets-value="[null,2,&quot;  Dual-band (2.4 and 5 GHz) IEEE 802.11a/b/g/n&quot;]"> Dual-band (2.4 and 5 GHz) IEEE 802.11a/b/g/n</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ube14\ub8e8\ud22c\uc2a4&quot;]"><strong>블루투스</strong></td>
<td data-sheets-value="[null,2,&quot;  BT 4.0 + 2.1 EDR &quot;]"> BT 4.0 + 2.1 EDR</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uc548\ud14c\ub098&quot;]"><strong>안테나</strong></td>
<td data-sheets-value="[null,2,&quot;  Dual-band onboard chip antenna or u.FL for external antenna&quot;]"> Dual-band onboard chip antenna or u.FL for external antenna</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ucee8\ub125\ud130&quot;]"><strong>컨넥터</strong></td>
<td data-sheets-value="[null,2,&quot;  70-pin Hirose DF40 Series\n(1.5, 2.0, or 3.0 mm stack height)&quot;]"> 70-pin Hirose DF40 Series<br />
(1.5, 2.0, or 3.0 mm stack height)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uc0ac\uc774\uc988&quot;]"><strong>사이즈</strong></td>
<td data-sheets-value="[null,2,&quot;  35.5 \u00d7 25.0 \u00d7 3.9 mm maximum&quot;]"> 35.5 × 25.0 × 3.9 mm maximum</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uc804\uc6d0\uacf5\uae09&quot;]"><strong>전원공급</strong></td>
<td data-sheets-value="[null,2,&quot;  3.15 to 4.5 V&quot;]"> 3.15 to 4.5 V</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I/O&quot;]"><strong>I/O</strong></td>
<td data-sheets-value="[null,2,&quot;  40 general purpose GPIO which can be configured as:\n  \u2022 SD card: 1 interface\n  \u2022 UART: 2 controllers (one full flow control, one Rx/Tx)\n  \u2022 I2C: 2 controllers\n  \u2022 SPI: 1 controller with 2 chip selects\n  \u2022 I2S: 1 controller\n  \u2022 GPIO: Additional 14 (with 4 capable of PWM)&quot;]"> 40 general purpose GPIO which can be configured as:<br />
• SD card: 1 interface<br />
• UART: 2 controllers (one full flow control, one Rx/Tx)<br />
• I2C: 2 controllers<br />
• SPI: 1 controller with 2 chip selects<br />
• I2S: 1 controller<br />
• GPIO: Additional 14 (with 4 capable of PWM)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;USB2.0&quot;]"><strong>USB2.0</strong></td>
<td data-sheets-value="[null,2,&quot;  1 OTG controller&quot;]"> 1 OTG controller</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;Clock&quot;]"><strong>Clock</strong></td>
<td data-sheets-value="[null,2,&quot;  19.2MHz, 32kHz&quot;]"> 19.2MHz, 32kHz</td>
</tr>
</tbody>
</table>
</div>
<p style="text-align: center;"><span style="font-size: xx-small;"><strong>표1 : 하드웨어 기능</strong></span></p>
<p style="text-align: center;">
<p dir="ltr">   프로세서는 500MHz로 돌아가는 32비트 듀얼코어 프로세서와 100MHz로 돌아가는 아톰프로세서로 구성된 것이 눈에 띄며 1GB램과 4GB eMMC는 어지간한 프로그램 구동환경에는 문제가 없을 정도로 넉넉해 보입니다. 또한 고속 SD CARD를 처리하기 위한 SDIO가 붙어 있어 SD메모리카드 연결도 충분히 고려되어 있음을 알 수 있습니다.</p>
<p dir="ltr"><strong style="font-size: small;">   </strong></p>
<p><span style="font-size: small;"><strong>    2.1. 에디슨보드 블록도</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/05번.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28051" alt="05번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/05번.jpg" width="688" height="281" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong><span style="font-size: small;">     2.2. 내부 모듈 사진</span></strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/06번.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28052" alt="06번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/06번.jpg" width="592" height="543" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: large;"><strong> 3. 각 부분별 세부 사항</strong></span></p>
<p>&nbsp;</p>
<p><strong><span style="font-size: small;"> 3.1. Intel® Atom™ processor Z34XX</span></strong></p>
<p>인텔의 Z34XX 아톰프로세서는 스마트폰 시장을 타겟으로 22nm 공정으로 만들어진 SoC라고 합니다. 앞서 설명 드린 바와 같이 내부에는 IA-32 기반의 500MHz급 듀얼코어를 포함하고 있습니다. 64비트 명령어 디코드나 비순차적실행 등을 위해 두 CPU 코어 간에는 1MB 공유 캐쉬메모리를 설치해 놓고 있습니다.</p>
<p>&nbsp;</p>
<p><strong>3.</strong><strong><span style="font-size: small;">2. 와이파이/블루투스 모듈</span></strong></p>
<p>와이파이/ 블루투스 모듈은 브로드컴의 BCM43340을 기반으로 만들어져 있습니다. 이 BCM43340의 특징을 살펴보면</p>
<p dir="ltr">      ■ 2.4GHz/5GHz IEEE802.11 a/b/g/n 듀얼밴드 제공</p>
<p dir="ltr">      ■ 802.11n 모드에서 통상적으로 90Mbps의 스루풋과 최대 150Mbps까지의 속도 제공</p>
<p dir="ltr">      ■ SDIO v2.0과 gSPI(40MHz) 호스트 인터페이스 제공</p>
<p dir="ltr">      ■ 블루투스 4.0 지원, 블루투스 전송규격 Class1, Class2</p>
<p dir="ltr">      ■ 보안기능</p>
<p dir="ltr">          <strong>□</strong> WPA, WPA2 지원</p>
<p dir="ltr">          <strong>□</strong> IEEE802.11i 규격을 따르는 고속 데이터 암호화 지원(AES)</p>
<p dir="ltr">          <strong>□</strong> W-Fi Protected setup(WPS) 지원</p>
<p>&nbsp;</p>
<p><strong>    3.3.</strong> <strong><span style="font-size: small;">NAND(eMMC) Flash 메모리 관리</span></strong></p>
<p dir="ltr">
<p dir="ltr">    에디슨보드는 4GB의 NAND Flash메모리를 가지고 있으며 파일시스템과 유저데이터를 저장하는 공간으로 사용할 수 있습니다.</p>
<p dir="ltr">      ■ 버스 모드</p>
<p dir="ltr">          <strong>□</strong> 데이터버스폭: 1bit, 4bit, 8bit</p>
<p dir="ltr">          <strong>□</strong> 데이터 전송률 : 최대 200MBps</p>
<p dir="ltr">          <strong>□</strong> MMC I/F 클럭주파수 : 0~200MHz</p>
<p dir="ltr">          <strong>□</strong> MMC I/F 부트주파수 : 0~52MHz</p>
<p>&nbsp;</p>
<p><strong><span style="font-size: small;">    3.4. DDR SRAM</span></strong></p>
<p dir="ltr">    에디슨 보드는 1GB LPDDR3 메모리를 최대 1033MT/s까지 지원합니다.</p>
<p dir="ltr">      ■ 8개의 뱅크를 가지고 있음</p>
<p dir="ltr">      ■ Row 어드레스 : R0~R13</p>
<p dir="ltr">      ■ Column 어드레스 : C0~C9</p>
<p dir="ltr">      ■ Dual-채널 32bit</p>
<p dir="ltr">      ■ 최대 400Mhz 클록인가(800 MT/s)</p>
<p>&nbsp;</p>
<p><span style="font-size: small;"><strong>    3.5. 전력관리장치(PMIC : Power Management IC)</strong></span></p>
<p dir="ltr">    에디슨 보드는 TI의 SNB9024 전력관리칩을 장착하고 있습니다. 이 칩을 통해 입출력되는 신호의 크기 등을 통제할 수가 있습니다.</p>
<p dir="ltr">      ■ 4개의 고효율 Buck컨버터(강압형 레귤레이터)를 내장 하고 있음</p>
<p dir="ltr">          <strong>□</strong> Two dual-phase 0.55 to 1.2 V @ 4.8 A with DVS</p>
<p dir="ltr">          <strong>□</strong> One dual-phase 1.24 V @ 2.5 A</p>
<p dir="ltr">          <strong>□</strong> One single-phase 1.8 V @ 1.1 A</p>
<p dir="ltr">      ■ 1개의 5V 1.2A 부스트(승압형) 컨버터 내장</p>
<p dir="ltr">      ■ 1개의 3.3V/3.4V 1.4A Buck-Boost 컨버터 내장</p>
<p dir="ltr">      ■ 5개의 LDO 레귤레이터 내장</p>
<p dir="ltr">          <strong>□</strong> 3개의 프로그래머블 레귤레이터(1.05~2.85V@100~300mA)</p>
<p dir="ltr">          <strong>□</strong> 1개의 고정밀도 1V@ 2mA</p>
<p dir="ltr">          <strong>□</strong> DVS(Dynamic Voltage Scaling : 동적전압제어)0.75~0.95V@220mA</p>
<p dir="ltr">      ■ 2개의 부하 절체기</p>
<p dir="ltr">      ■ USB-AC/DC 어댑터전원 탐지 및 외부 충전회로 제어(충전 전류제어기능)</p>
<p dir="ltr">      ■ I2C Interface and dedicated SVI</p>
<p dir="ltr">      ■ PMIC 용 인터럽트 제어</p>
<p dir="ltr">      ■ 7개의 범용 1.8V I/O와 최대 3.3V를 지원하는 2개의 I/O</p>
<p dir="ltr">      ■ 백업시간을 위한 32.768kHz RTC</p>
<p dir="ltr">      ■ 알람타이머 인터럽트</p>
<p dir="ltr">      ■ 슬립 클록 출력 : 32.768kHz</p>
<p>&nbsp;</p>
<p><span style="font-size: small;"><strong>    3.6. USB2.0 트랜시버 ULPI(High speed USB 2.0 표준) 인터페이스</strong></span></p>
<p dir="ltr">    ULPI인터페이스는 TUSB1211 USB2.0 트랜시버 칩을 통해 USB 컨트롤러와 연결되어 있습니다. 이 칩은 모든 USB2.0 데이터 전송속도를 수용합니다. (High speed : 480Mbps, Full speed 12Mbps, Low speed 1.5Mbps) TUSB1211은 또한 USB배터리 충전규격 v1.1을 지원합니다.</p>
<p>&nbsp;</p>
<p dir="ltr">  <strong>  3.7. 통합형 칩안테나와 외장형안테나를 위한 u.FL 컨넥터</strong></p>
<p dir="ltr">    에디슨모듈은 Wi-Fi통신용 2.4Ghz와 5Ghz의 이중밴드 안테나를 보드에 내장하고 있습니다. 내장안테나는 플라스틱케이스에 들어가는 소형폼팩터에 주로 사용되어 질 수 있고 더 큰 장치나 금속 엔클로져에 들어갈 때는 외장형 안테나를 u.FL컨넥터에 끼워 사용 할 수 있습니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: small;"><strong>    3.8. 70핀 인터페이스 컨넥터</strong></span></p>
<p dir="ltr">    이 컨넥터는 히로세 70핀 DF40시리즈의 헤더 타입으로 구성되어 있습니다. 히로세 컨넥터 파트넘버는 DF40C-70DP-0.4V(51)입니다.</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="100" />
<col width="100" />
<col width="100" />
<col width="344" /></colgroup>
<tbody>
<tr>
<td style="text-align: center; background-color: #9acd32;" data-sheets-value="[null,2,&quot;\ud540&quot;]"><strong>핀</strong></td>
<td style="text-align: center; background-color: #9acd32;" data-sheets-value="[null,2,&quot;\uc2e0\ud638\uba85&quot;]"><strong>신호명</strong></td>
<td style="text-align: center; background-color: #9acd32;" data-sheets-value="[null,2,&quot;\ubcf4\uc870\uae30\ub2a5&quot;]"><strong>보조기능</strong></td>
<td style="text-align: center; background-color: #9acd32;" data-sheets-value="[null,2,&quot;\ub0b4\uc6a9&quot;]"><strong>내용</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;2,4,6&quot;]">2,4,6</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;VSYS&quot;]">VSYS</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;\uc2dc\uc2a4\ud15c \uc785\ub825\uc804\uc6d0 (\uc5d0\ub514\uc2a8\ubcf4\ub4dc \ub3d9\uc791 \uc804\uc6d0) (3.3 to 4.5 V)&quot;]">시스템 입력전원 (에디슨보드 동작 전원) (3.3 to 4.5 V)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;8,10&quot;]">8,10</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;3.3 V&quot;]">3.3 V</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;3.3 V \ucd9c\ub825\ub2e8\uc790&quot;]">3.3 V 출력단자</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,12]">12</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;1.8 V&quot;]">1.8 V</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;1.8 V \ucd9c\ub825\ub2e8\uc790\n(\ub514\uc9c0\ud138 I/O\ud540 \uc804\uc555\ub808\ubca8\uacfc \ub3d9\uc77c)&quot;]">1.8 V 출력단자<br />
(디지털 I/O핀 전압레벨과 동일)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,14]">14</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DCIN&quot;]">DCIN</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;DC \uc544\ub2f5\ud130\ub85c\ubd80\ud130 \uc804\uc6d0\uacf5\uae09 \ub2e8\uc790 (\ub9cc\uc77c \ubc30\ud130\ub9ac\ub85c\ubd80\ud130 \uc804\uc6d0\uc744 \uacf5\uae09 \ubc1b\ub294 \uacbd\uc6b0 \ubbf8 \uc5f0\uacb0)&quot;]">DC 아답터로부터 전원공급 단자 (만일 배터리로부터 전원을 공급 받는 경우 미 연결)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;1,5,9,\n11,13,15&quot;]">1,5,9,<br />
11,13,15</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GND&quot;]">GND</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;\uc811\uc9c0&quot;]">접지</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,7]">7</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;MSIC_SLP_\nCLK3&quot;]">MSIC_SLP_<br />
CLK3</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;32 kHz sleep \ud074\ub85d \ucd9c\ub825&quot;]">32 kHz sleep 클록 출력</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,3]">3</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;USB_ID&quot;]">USB_ID</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;USB OTG ID pin&quot;]">USB OTG ID pin</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,16]">16</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;USB_DP&quot;]">USB_DP</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;USB D+&quot;]">USB D+</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,18]">18</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;USB_DN&quot;]">USB_DN</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;USB D-&quot;]">USB D-</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,20]">20</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;USB_VBUS&quot;]">USB_VBUS</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;USB VBUS input\n(does not power system)&quot;]">USB VBUS input<br />
(does not power system)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,17]">17</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;PWRBTN#&quot;]">PWRBTN#</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;Power/sleep \uc785\ub825\ubc84\ud2bc\n(\uc5d1\ud2f0\ube0c low)&quot;]">Power/sleep 입력버튼<br />
(엑티브 low)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,19]">19</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;FAULT&quot;]">FAULT</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;USB power fault input (from external USB current limit switch)&quot;]">USB power fault input (from external USB current limit switch)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,21]">21</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;PSW&quot;]">PSW</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;USB power output enable (to external USB current limit switch)&quot;]">USB power output enable (to external USB current limit switch)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,23]">23</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;V_VBAT_BKUP&quot;]">V_VBAT_BKUP</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;\ub9ac\uc5bc\ud0c0\uc784\ud074\ub85d \ubc30\ud130\ub9ac \uc785\ub825\ud540(RTC)&quot;]">리얼타임클록 배터리 입력핀(RTC)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,36]">36</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;RESET_OUT#&quot;]">RESET_OUT#</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;\uc2dc\uc2a4\ud15c \ub9ac\uc14b\ucd9c\ub825 (active low)&quot;]">시스템 리셋출력 (active low)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,24]">24</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP44&quot;]">GP44</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,25]">25</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP165&quot;]">GP165</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,26]">26</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP45&quot;]">GP45</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,28]">28</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP46&quot;]">GP46</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,30]">30</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP47&quot;]">GP47</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,32]">32</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP48&quot;]">GP48</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,34]">34</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP49&quot;]">GP49</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,42]">42</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP15&quot;]">GP15</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,48]">48</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP14&quot;]">GP14</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,35]">35</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP12_PWM0&quot;]">GP12_PWM0</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;PWM_0&quot;]">PWM_0</td>
<td data-sheets-value="[null,2,&quot;GPIO, capable of PWM output&quot;]">GPIO, capable of PWM output</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,33]">33</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP13_PWM1&quot;]">GP13_PWM1</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;PWM_1&quot;]">PWM_1</td>
<td data-sheets-value="[null,2,&quot;GPIO, capable of PWM output&quot;]">GPIO, capable of PWM output</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,37]">37</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP182_PWM2&quot;]">GP182_PWM2</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;PWM_2&quot;]">PWM_2</td>
<td data-sheets-value="[null,2,&quot;GPIO, capable of PWM output&quot;]">GPIO, capable of PWM output</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,39]">39</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP183_PWM3&quot;]">GP183_PWM3</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;PWM_3&quot;]">PWM_3</td>
<td data-sheets-value="[null,2,&quot;GPIO, capable of PWM output&quot;]">GPIO, capable of PWM output</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,41]">41</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP19&quot;]">GP19</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2C_1_SCL&quot;]">I2C_1_SCL</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2C1 clock\n(open collector when configured for I2C)&quot;]">GPIO, I2C1 clock<br />
(open collector when configured for I2C)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,43]">43</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP20&quot;]">GP20</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2C_1_SDA&quot;]">I2C_1_SDA</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2C1 data\n(open collector when configured for I2C)&quot;]">GPIO, I2C1 data<br />
(open collector when configured for I2C)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,45]">45</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP27&quot;]">GP27</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2C_6_SCL&quot;]">I2C_6_SCL</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2C6 clock\n(open collector when configured for I2C)&quot;]">GPIO, I2C6 clock<br />
(open collector when configured for I2C)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,47]">47</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP28&quot;]">GP28</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2C_6_SDA&quot;]">I2C_6_SDA</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2C6 data\n(open collector when configured for I2C)&quot;]">GPIO, I2C6 data<br />
(open collector when configured for I2C)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,50]">50</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP42&quot;]">GP42</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2S_2_RXD&quot;]">I2S_2_RXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2S2 receive data (input)&quot;]">GPIO, I2S2 receive data (input)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,52]">52</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP40&quot;]">GP40</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2S_2_CLK&quot;]">I2S_2_CLK</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2S2 clock (output)&quot;]">GPIO, I2S2 clock (output)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,54]">54</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP41&quot;]">GP41</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2S_2_FS&quot;]">I2S_2_FS</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2S2 frame sync (output)&quot;]">GPIO, I2S2 frame sync (output)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,56]">56</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP43&quot;]">GP43</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2S_2_TXD&quot;]">I2S_2_TXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2S2 transmit data (output)&quot;]">GPIO, I2S2 transmit data (output)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,22]">22</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP134&quot;]">GP134</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART_2_RX&quot;]">UART_2_RX</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART2 receive (input)&quot;]">GPIO, UART2 receive (input)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,27]">27</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP135&quot;]">GP135</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART_2_TX&quot;]">UART_2_TX</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART2 transmit (output)&quot;]">GPIO, UART2 transmit (output)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,51]">51</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP111&quot;]">GP111</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SPI_2_FS1&quot;]">SPI_2_FS1</td>
<td data-sheets-value="[null,2,&quot;GPIO, SPI2 chip select 1 (output)&quot;]">GPIO, SPI2 chip select 1 (output)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,53]">53</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP110&quot;]">GP110</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SPI_2_FS0&quot;]">SPI_2_FS0</td>
<td data-sheets-value="[null,2,&quot;GPIO, SPI2 chip select 0 (output)&quot;]">GPIO, SPI2 chip select 0 (output)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,55]">55</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP109&quot;]">GP109</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SPI_2_CLK&quot;]">SPI_2_CLK</td>
<td data-sheets-value="[null,2,&quot;GPIO, SPI2 clock output&quot;]">GPIO, SPI2 clock output</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,57]">57</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP115&quot;]">GP115</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SPI_2_TXD&quot;]">SPI_2_TXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SPI2 transmit data (output)&quot;]">GPIO, SPI2 transmit data (output)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,59]">59</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP114&quot;]">GP114</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SPI_2_RXD&quot;]">SPI_2_RXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SPI2 receive data (input)&quot;]">GPIO, SPI2 receive data (input)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,46]">46</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP131&quot;]">GP131</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART_1_TX&quot;]">UART_1_TX</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 transmit (output)&quot;]">GPIO, UART1 transmit (output)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,61]">61</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP130&quot;]">GP130</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART_1_RX&quot;]">UART_1_RX</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 receive data (input)&quot;]">GPIO, UART1 receive data (input)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,63]">63</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP129&quot;]">GP129</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART_1_RTS&quot;]">UART_1_RTS</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 ready to send (output)&quot;]">GPIO, UART1 ready to send (output)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,65]">65</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP128&quot;]">GP128</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART_1_CTS&quot;]">UART_1_CTS</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 clear to send (input)&quot;]">GPIO, UART1 clear to send (input)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,44]">44</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP84&quot;]">GP84</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_0_CLK_FB&quot;]">SD_0_CLK_FB</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD clock feedback&quot;]">GPIO, SD clock feedback</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,58]">58</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP78&quot;]">GP78</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_0_CLK&quot;]">SD_0_CLK</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD clock output&quot;]">GPIO, SD clock output</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,60]">60</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP77&quot;]">GP77</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_0_CD#&quot;]">SD_0_CD#</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD card detect input (active low)&quot;]">GPIO, SD card detect input (active low)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,62]">62</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP79&quot;]">GP79</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_0_CMD&quot;]">SD_0_CMD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD command&quot;]">GPIO, SD command</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,66]">66</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP80&quot;]">GP80</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_0_DAT0&quot;]">SD_0_DAT0</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD data 0&quot;]">GPIO, SD data 0</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,70]">70</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP81&quot;]">GP81</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_0_DAT1&quot;]">SD_0_DAT1</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD data 1&quot;]">GPIO, SD data 1</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,64]">64</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP82&quot;]">GP82</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_0_DAT2&quot;]">SD_0_DAT2</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD data 2&quot;]">GPIO, SD data 2</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,68]">68</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP83&quot;]">GP83</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_0_DAT3&quot;]">SD_0_DAT3</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD data&quot;]">GPIO, SD data</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,67]">67</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;OSC_CLK_OUT_&quot;]">OSC_CLK_OUT_</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;19.2 MHz high speed clock output&quot;]">19.2 MHz high speed clock output</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,31]">31</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;RCVR_MODE&quot;]">RCVR_MODE</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;\ud38c\uc6e8\uc5b4 \ub9ac\ucee4\ubc84\ub9ac \ubaa8\ub4dc&quot;]">펌웨어 리커버리 모드</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,3,null,69]">69</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;FW_RCVR&quot;]">FW_RCVR</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;\ud38c\uc6e8\uc5b4 \ub9ac\ucee4\ubc84\ub9ac\n(active high on boot)&quot;]">펌웨어 리커버리<br />
(active high on boot)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;29,38,\n40,49&quot;]">29,38,<br />
40,49</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;Unused.&quot;]">Unused.</td>
<td style="text-align: center;"></td>
<td></td>
</tr>
</tbody>
</table>
<p style="text-align: center;"><span style="font-size: xx-small;"><strong>표2 : 에디슨보드 컨넥터 핀과 시그널 리스트</strong></span></p>
<p dir="ltr">
<p dir="ltr"><span style="font-size: small;"><strong>    4.1. I2C 인터페이스</strong></span></p>
<p dir="ltr">    에디슨보드는 2개의 I2C 채널이 있으며 I2C1은 pin41, 34에 연결되고, I2C6는 pin45, 47에 연결되어 있으며 기본적인 모드는 다음과 같습니다.</p>
<p dir="ltr">      ■ 표준모드(전송 속도는 최대 100kbps)</p>
<p dir="ltr">      ■ 고속모드(전송 속도는 최대 400kbps)</p>
<p dir="ltr">      ■ 하이스피드모드(전송속도는 최대 3.4Mbps)</p>
<p dir="ltr">      ■ 항상 I2C마스터 모드로 동작</p>
<p dir="ltr">      ■ 7bit, 10bit 어드레싱 모드 지원</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: small;"><strong>    4.2. SD CARD 인터페이스</strong></span></p>
<p dir="ltr">    SD3.0 규격을 준수하며 핀 44, 58, 60, 62, 64, 66, 68, 70을 사용</p>
<p dir="ltr">      ■ 호스트 클록은 최대 50MHz까지 출력</p>
<p dir="ltr">      ■ 카드삽입과 방출을 검지할 수 있음</p>
<p dir="ltr">      ■ SD 호스트컨트롤러는 표준 SD3.0을 지원함</p>
<p dir="ltr">      ■ SD메모리 전용</p>
<p dir="ltr">      ■ 2.85V 디바이스 지원을 위해 레벨 변환을 필요로 함</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: small;"><strong>    4.3. UART 인터페이스</strong></span></p>
<p dir="ltr">    UART는 2개가 지원되며 UART1은 H/W 흐름제어가 제공되나 UART2는 그렇지 않다. UART1은 핀 46, 63, 61, 54에 연결되어 있으며 UART2는 핀 22, 27에 연결한다.</p>
<p dir="ltr">      ■ 16550 칩과 동등</p>
<p dir="ltr">      ■ 64바이트 버퍼</p>
<p dir="ltr">      ■ 보레이트는 300bps ~ 3.686Mbps까지를 지원</p>
<p dir="ltr">    UART2 포트는 Linux 디버그용 포트로 사용된다.</p>
<p>&nbsp;</p>
<p dir="ltr">    <strong>4.4. SPI 인터페이스</strong></p>
<p dir="ltr">    SPI 채널은 핀 51, 53, 55, 57, 59에 연결되어 있으며 2개의 chip select신호를 사용할 수 있습니다.</p>
<p dir="ltr">      ■ 단일 프레임전송을 할 때는 클럭의 위상에 따라 4가지 모드를 지원</p>
<p dir="ltr">      ■ 멀티프레임 전송모드에서는 SPH = 1, SPO = 0 또는 1로 설정됨</p>
<p dir="ltr">      ■ 마스터모드에서 최대 25Mhz, 슬레이브 모드에서 16.67MHz를 지원</p>
<p>&nbsp;</p>
<p dir="ltr">    <strong>4.5. I2S 인터페이스</strong></p>
<p dir="ltr">    I2S인터페이스는 핀 50, 52, 54, 56에 연결되어 있습니다. 에디슨보드에서 가능한 포맷은 에디슨보드 하드웨어 구조 설명서 (edison-module_ HG_331189-002.pdf)상 Table6를 참조</p>
<p>&nbsp;</p>
<p dir="ltr">    <strong>4.6. PWM</strong></p>
<p dir="ltr">    PWM출력을 위해 4개의 GPIO가 사용될 수 있으며 핀 33, 35, 37, 39가 할당되어 있습니다. PWM 각 채널은 8비트 분해능을 가집니다.</p>
<p dir="ltr">    PWM 출력주파수 및 주기는 아래와 같이 구합니다.</p>
<p dir="ltr">   - Target frequency ~= 19.2 MHz * Base_unit value/256</p>
<p dir="ltr">   - Target PWM duty cycle ~= PWM_on_time_divisor / 256</p>
<p>&nbsp;</p>
<p dir="ltr">    <strong>4.7. GPIO</strong></p>
<p dir="ltr">    GPIO 포트는 외부와 인터페이스용 I/O로 사용될 수 있습니다. 핀 24, 25, 26, 28, 30, 32, 34, 42, 48 등 9개가 사용될 수 있으며 I2C, I2S, UART 등이 사용되지 않는다면 해당 포트도 GPIO로 사용될 수 있습니다. 각 핀은 풀업이나 풀다운 저항을 소프트웨어적으로 설정할 수 있으며 2k, 20k, 50kohm 등을 선택할 수 있습니다. 특히 I2C핀은 910옴의 저항으로 연결되어 있음에 유의해야 합니다. GPIO 포트는 기본적으로 edge status를 읽어들이기 전에 글리치 제거가 이뤄져 신뢰성을 높이는 구조로 되어 있습니다. 참고로 출력전류 공급능력은 ±3mA로 다소 약한 편입니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><strong>    4.8. USB</strong></p>
<p dir="ltr">    에디슨 보드는 단일 USB2.0포트를 갖고 있으며 코드의 다운로드용으로 사용됩니다. 핀 3, 16, 18, 20이 포트와 연결됩니다.</p>
<p dir="ltr">    에디슨 모듈은 디바이스측으로 전력을 공급하지 않는 구조이고 OTG기능이 또한 설치되어 있으며 이 기능은 3번 핀의 ID시그널에 의존하여 동작됩니다. OTG모드에서 전력공급은 외부 보드에서 수행하여야 합니다. PSW(핀21), FAULT(핀19)는 VBUS상에서 과전류가 흐르는지 탐지하며 이는 ULPI가 담당합니다.</p>
<p dir="ltr">
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/07번.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28053" alt="07번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/07번.jpg" width="506" height="406" /></a></p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><strong>    4.9. Clock</strong></p>
<p dir="ltr">에디슨보드는 2개의 클럭 출력포트를 갖고 있습니다. 7번 핀은 32KHz 슬립클럭과 연결되어 있고 67번 핀은 19.2MHz 출력핀과 연동됩니다. 슬립모드에서도 ±3mA의 출력 전류를 흘릴 수 있습니다. 19.2Mhz 클록은 TBD mA의 높은 전류를 공급할 수 있는 능력이 있습니다.</p>
<p dir="ltr">
<p dir="ltr">    <strong>4.10. 시스템리셋</strong></p>
<p dir="ltr">    에디슨보드는 PWRBTN#(pin17)과 RESET_OUT@(pin36) 등 2개의 리셋 시그널용 핀이 있으며 PWRRTN#는 엑티브 LOW에서 동작되고 sleep, power off등의 이유에 의해 변합니다. RESET_OUT핀은 오픈드레인으로 되어 있으며 시스템 리셋에 의해 발생됩니다.</p>
<p dir="ltr">
<p dir="ltr"><strong>    4.11. 스페셜 소프트웨어 리커버리</strong></p>
<p dir="ltr">    에디슨보드는 부팅하는 동안 2개의 신호선이 사용됩니다. 이 기능을 위해 69번핀 FW_RCVR, 31번핀은 RCVR_MODE로 사용됩니다. FW_RCVR은 RESET_OUT 부팅이 이뤄지는 동안 LOW 상태로 유지가 되어야 합니다.</p>
<p dir="ltr">
<p dir="ltr"><strong>    4.12. 전원 입출력</strong></p>
<p dir="ltr">    VSYSY : 3.15V~4.5V를 인가할 수 있습니다. USB_VBUS : 표준 USB VBUS신호인 4.75V ~ 5.25V를 인가할 수 있습니다. 에디슨 보드에서 출력되는 3.3V, 1.8V는 최대 250mA 까지 흘려줄 수 있습니다.(TBV) 와이파이와 블루투스가 정상적으로 동작되기 위해서는 최소한 3.15V가 필요합니다.</p>
<p dir="ltr">
<p dir="ltr">    <strong>4.13. V_VBAT_BKUP</strong></p>
<p dir="ltr">    PMIC는 코인배터리나, 수퍼캡을 충전시킬 수 있는 능력이 있습니다. 외장 배터리는 핀23 V_VBAT_BKUP에 연결할 수 있으며 PMIC는 프로그램에 의해 2.5, 3.0, 3.15, 3.3v로 선택될 수 있습니다. 충전전류 역시 프로그램에 의해 10, 50, 100, 500uA로 선택되어 질 수 있습니다.</p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><span style="font-size: large;"><strong>  5. 전원</strong></span></p>
<p dir="ltr">  에디슨보드는 배터리나 AC벽전원에 의해 동작 시킬 수가 있으며 전원공급을 하는 방법이나 충전을 하는 회로는 외부에서 디자인 되어야 합니다.</p>
<p dir="ltr">
<p dir="ltr">    <strong><span style="font-size: small;">5.1. VSYS에 메인전력 공급하기</span></strong></p>
<p dir="ltr">    에디슨보드는 VSYS(핀 2,4,6)에 전원을 인가하며 이 핀은 내부적으로는 VBAT에까지 연결되어 있습니다. 이 VSYS는 최소 3.15V에서 최대 4.5V를 넘지 말아야 합니다.</p>
<p dir="ltr">
<p dir="ltr">   <strong> 5.2. 사례 1 &#8211; 리튬폴리머 배터리를 직결하는 방식</strong></p>
<p dir="ltr">    배터리 전원을 단순하게 연결하는 방법은 배터리를 VSYS에 직접 연결하는 것입니다. 그러나 이러한 연결은 추천하지 않습니다. 왜냐하면 충전시스템에서 사용되는 전력이 배터리와 VSYS에 양분되어 공급되기 때문입니다.</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/08번.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28054" alt="08번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/08번.jpg" width="736" height="449" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">    <strong>5.3. 사례 2 &#8211; 다이오드와 FET절연을 통한 리튬 폴리머 배터리 연결하는 방식</strong></p>
<p dir="ltr">   - 이러한 구성은 동작 시 다이오드에 의한 전압강하가 발생됨</p>
<p dir="ltr">   - 이러한 구성은 부팅시에 배터리를 떼어 놓을 수 있음</p>
<p dir="ltr">   - 다이오드를 P-FET로 변경하면 전압강하를 최소화 시킬 수 있음</p>
<p dir="ltr">   - 이러한 기능 통제를 하는 유사한 칩이 BQ24073이다.</p>
<p dir="ltr">
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/09번.jpg" rel="lightbox[28027]"><img class="size-full wp-image-28055 aligncenter" alt="09번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/09번.jpg" width="738" height="495" /></a></p>
<p dir="ltr">
<p dir="ltr">    <strong>5.4. 사례 3 &#8211; USB VBUS로 연결 하는 방식</strong></p>
<p dir="ltr">    USB 전원공급장치에서 직접 에디슨을 실행할 수는 없습니다. VSYS로 인가되는 최대 전압은 4.5V이기 때문에 그렇습니다. 즉 USB 전원사양(4.75V -5.25V)은 에디슨의 안전 동작범위를 초과합니다. 따라서 USB 전원은 BQ24074와 같은 벅다운 컨버터로 변환해서 공급해야 합니다.</p>
<p dir="ltr">    이상은 인텔사에서 공개한 하드웨어 가이드를 토대로 작성해 본 자료입니다. 무턱대고 접근해 들어가기보다는 해당 보드의 스펙이 어떠한지를 면밀히 따져보고 접근해 들어가는 것이 학습 효과를 높이는데 도움이 되지 않을까 생각됩니다. 다음은 Breakout 보드에 대해서 살펴보도록 하겠습니다.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><strong><span style="font-size: x-large;">[2] <a href="http://www.devicemart.co.kr/1160267">브레이크아웃 보드</a> 살펴보기</span></strong></p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large;"><strong>  1. 개요</strong></span></p>
<p dir="ltr">  Intel® Edison breakout board는 인텔에디슨 모듈로부터 1.8V로 입출력 되도록 설계가 되어 있습니다. 이 보드는 전원공급기, 배터리충전회로, USB OTG, USART to USB 브릿지, I/O 헤더 등으로 구성되어 있습니다.</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/10번.jpg" rel="lightbox[28027]"><img class="aligncenter" alt="10번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/10번.jpg" width="539" height="742" /></a></p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><span style="font-size: large;"><strong>  2. Breakout 보드 상 점퍼의 구성</strong></span></p>
<p dir="ltr">      ■ J2 : 배터리와 연결용 컨넥터로 왼편이 +V, 오른편이 GND이 컨넥터에 리튬이온 전지를 연결하면 자동으로 충전이 이뤄지며 J21, J22, J3 등으로부터 전력을 공급 받게 된다.</p>
<p dir="ltr">      ■ J1 : 써미스터가 내장된 배터리를 연결한 경우에는 open 한다.</p>
<p dir="ltr">      ■ J3 : 마이크로 USB FTDI로 USB to Serial 포트를 제공. 이 포트를 통해서 리눅스 콘솔로 사용할 수 있음</p>
<p dir="ltr">      ■ J16 : 마이크로 USB AB 컨넥터로 OTG 기능을 수행이 포트를 통해 PC와 연결되면 에디슨모듈을 스토리지(USB 메모리)로 PC가 인식</p>
<p dir="ltr">      ■ J17~J20 : 그림의 왼편부터 1번 핀</p>
<p dir="ltr">      ■ J21 : 메인 전원공급핀으로 DC 7~15를 인가할 수 있음</p>
<p dir="ltr">      ■ J22 : 보드 아랫편에 패턴이 준비되어 있으나 실제로는 부품이 없음</p>
<p dir="ltr">
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/11번.jpg" rel="lightbox[28027]"><img class="size-full wp-image-28057 aligncenter" alt="11번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/11번.jpg" width="677" height="307" /></a></p>
<p dir="ltr" style="text-align: center;"><span style="font-size: xx-small;"><strong>그림2 :  Top Wiew</strong></span></p>
<p dir="ltr">
<p dir="ltr" style="text-align: center;"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-12.jpg" rel="lightbox[28027]"><img class="size-full wp-image-28058 aligncenter" alt="29 금강초롱 12" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-12.jpg" width="701" height="308" /></a><strong>그림3 : Bottom View</strong></p>
<p dir="ltr" style="text-align: center;">
<p dir="ltr">   <span style="font-size: small;"><strong> 2.1. USB 인터페이스</strong></span></p>
<p dir="ltr">    에디슨 보드는 단일 USB2.0 인터페이스를 갖고 있습니다. 이 인터페이스의 주된 용도는 프로그램의 다운로드입니다. 또한 ID신호라인과 함께 USB OTG기능을 제공토록 설계 되어 있습니다. 만일 마이크로B USB케이블이 연결되면 에디슨보드는 USB디바이스가 되며 USB케이블로부터 전원을 공급받게 됩니다. 또한 마이크로A USB케이블이 연결되면 에디슨 보드는 호스트로서의 기능을 수행하며 J21, J22를 통해 전력을 공급해주어야 합니다. 이 경우 Breakout 보드는 USB 컨넥터로 5V를 출력하게 될 것입니다.</p>
<p dir="ltr" style="text-align: left;">
<p dir="ltr"><strong>    2.2 Breakout 보드 확장헤더 핀 구성</strong></p>
<p dir="ltr">    GPIO 핀은 Input, Output로 프로그램 될 수 있으며 입력모드로 프로그램 된다면 인터럽트나 웨이크업 소스로 사용될 수 있습니다. 입력 핀은 풀업이나 풀다운으로 프로그램 될 수 있는데 2KΩ, 20KΩ, 50KΩ 등이 가능합니다. I2C핀은 추가적으로 910Ω이 걸리게 됩니다.</p>
<p dir="ltr">    입력핀으로 사용되는 핀은 기본적으로 그리치 제거 동작이 일어납니다.</p>
<p dir="ltr">    • 100 ns for a 50 MHz clock when SoC is in S0 state.</p>
<p dir="ltr">    • 260 ns for 19.2 MHz clock when SoC is in S0i1 or S0i2 State.</p>
<p dir="ltr">    • 155.5 μs for 32 kHz clock (RTC) when SoC is in S0i3 State.</p>
<p dir="ltr">    포트당 출력전류는 최대 ±3mA입니다.</p>
<p dir="ltr">
<p dir="ltr"><strong>    2.3. Breakout 보드 핀헤더와 아두이노 표준핀간 연계</strong></p>
<p dir="ltr">    ■ J17 컨넥터 라인</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="121" />
<col width="126" />
<col width="91" />
<col width="205" />
<col width="100" /></colgroup>
<tbody>
<tr>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;Brrakout\n\ubcf4\ub4dc\ud540&quot;]"><strong>Breakout</strong><br />
<strong>보드핀</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;SoC&quot;]"><strong>SoC</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc6a9\ub3c4&quot;]"><strong>용도</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uae30\ub2a5\uc124\uba85&quot;]"><strong>기능설명</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc544\ub450\uc774\ub178\n\ud45c\uc900\ud540&quot;]"><strong>아두이노</strong><br />
<strong>표준핀</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 1&quot;]">J17 &#8211; pin 1</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP182_PWM2&quot;]">GP182_PWM2</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO capable of PWM output.&quot;]">GPIO capable of PWM output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG6&quot;]">DIG6</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 2&quot;]">J17 &#8211; pin 2</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;NC&quot;]">NC</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;No connect.&quot;]">No connect.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 3&quot;]">J17 &#8211; pin 3</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;NC&quot;]">NC</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;No connect.&quot;]">No connect.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 4&quot;]">J17 &#8211; pin 4</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;VIN&quot;]">VIN</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;7 to 15 V.&quot;]">7 to 15 V.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;5V Out Pin&quot;]">5V Out Pin</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 5&quot;]">J17 &#8211; pin 5</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP135&quot;]">GP135</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART2_TX&quot;]">UART2_TX</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART2 transmit output.&quot;]">GPIO, UART2 transmit output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 6&quot;]">J17 &#8211; pin 6</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;RCVR_MODE&quot;]">RCVR_MODE</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;Firmware recovery mode.&quot;]">Firmware recovery mode.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 7&quot;]">J17 &#8211; pin 7</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP27&quot;]">GP27</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2C6_SCL&quot;]">I2C6_SCL</td>
<td data-sheets-value="[null,2,&quot;GPIO,IC26 SCL output open\ncollector.&quot;]">GPIO,IC26 SCL output open<br />
collector.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;`&quot;]">`</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 8&quot;]">J17 &#8211; pin 8</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP20&quot;]">GP20</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2C1_SDA&quot;]">I2C1_SDA</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2C1 data open collector.&quot;]">GPIO, I2C1 data open collector.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 9&quot;]">J17 &#8211; pin 9</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP28&quot;]">GP28</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2C6_SDA&quot;]">I2C6_SDA</td>
<td data-sheets-value="[null,2,&quot;GPIO, I2C6 data open collector.&quot;]">GPIO, I2C6 data open collector.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 10&quot;]">J17 &#8211; pin 10</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP111&quot;]">GP111</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP5_FS1&quot;]">SSP5_FS1</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 chip select 2 output.&quot;]">GPIO, SSP2 chip select 2 output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 11&quot;]">J17 &#8211; pin 11</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP109&quot;]">GP109</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP5_CLK&quot;]">SSP5_CLK</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP5 clock output.&quot;]">GPIO, SSP5 clock output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 12&quot;]">J17 &#8211; pin 12</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP115&quot;]">GP115</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP5_TXD&quot;]">SSP5_TXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP5 transmit data output.&quot;]">GPIO, SSP5 transmit data output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 13&quot;]">J17 &#8211; pin 13</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;OSC_CLK_OUT_0&quot;]">OSC_CLK_OUT_0</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;High speed clock output.&quot;]">High speed clock output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 14&quot;]">J17 &#8211; pin 14</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP128&quot;]">GP128</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART1_CTS&quot;]">UART1_CTS</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 clear to send input.&quot;]">GPIO, UART1 clear to send input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG2&quot;]">DIG2</td>
</tr>
</tbody>
</table>
<p dir="ltr">
<p dir="ltr">■ J18 컨넥터 라인</p>
<div dir="ltr">
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="121" />
<col width="126" />
<col width="91" />
<col width="205" />
<col width="100" /></colgroup>
<tbody>
<tr>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;Brrakout\n\ubcf4\ub4dc\ud540&quot;]"><strong>Breakout</strong><br />
<strong>보드핀</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;SoC&quot;]"><strong>SoC</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc6a9\ub3c4&quot;]"><strong>용도</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uae30\ub2a5\uc124\uba85&quot;]"><strong>기능설명</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc544\ub450\uc774\ub178\n\ud45c\uc900\ud540&quot;]"><strong>아두이노</strong><br />
<strong>표준핀</strong></td>
</tr>
<tr>
<td style="text-align: center;"></td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP182_PWM2&quot;]">GP182_PWM2</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO capable of PWM output.&quot;]">GPIO capable of PWM output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG6&quot;]">DIG6</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 1&quot;]">J18 &#8211; pin 1</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP13_PWM1&quot;]">GP13_PWM1</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO capable of PWM output.&quot;]">GPIO capable of PWM output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG5&quot;]">DIG5</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 2&quot;]">J18 &#8211; pin 2</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP165&quot;]">GP165</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A5&quot;]">A5</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 3&quot;]">J18 &#8211; pin 3</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GPI_PWRBTN_N&quot;]">GPI_PWRBTN_N</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;Power button input.&quot;]">Power button input.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 4&quot;]">J18 &#8211; pin 4</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;MSIC_SLP_CLK2&quot;]">MSIC_SLP_CLK2</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;32 kHz sleep clock.&quot;]">32 kHz sleep clock.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 5&quot;]">J18 &#8211; pin 5</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;V_VBAT_BKUP&quot;]">V_VBAT_BKUP</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;RTC backup battery input.&quot;]">RTC backup battery input.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 6&quot;]">J18 &#8211; pin 6</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP19&quot;]">GP19</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;I2C1_SCL&quot;]">I2C1_SCL</td>
<td data-sheets-value="[null,2,&quot;GPIO,IC21 SCL output open collector.&quot;]">GPIO,IC21 SCL output open collector.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 7&quot;]">J18 &#8211; pin 7</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP12_PWM0&quot;]">GP12_PWM0</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO capable of PWM output.&quot;]">GPIO capable of PWM output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG3&quot;]">DIG3</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 8&quot;]">J18 &#8211; pin 8</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP183_PWM3&quot;]">GP183_PWM3</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO capable of PWM output.&quot;]">GPIO capable of PWM output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG9&quot;]">DIG9</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 9&quot;]">J18 &#8211; pin 9</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;NC&quot;]">NC</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;No connect.&quot;]">No connect.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 10&quot;]">J18 &#8211; pin 10</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP110&quot;]">GP110</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP5_FS0&quot;]">SSP5_FS0</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP1 chip select 2 output.&quot;]">GPIO, SSP1 chip select 2 output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 11&quot;]">J18 &#8211; pin 11</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP114&quot;]">GP114</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP5_RX&quot;]">SSP5_RX</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP5 receive data input.&quot;]">GPIO, SSP5 receive data input.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 12&quot;]">J18 &#8211; pin 12</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP129&quot;]">GP129</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART1_RTS&quot;]">UART1_RTS</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 ready to send output.&quot;]">GPIO, UART1 ready to send output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG4&quot;]">DIG4</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 13&quot;]">J18 &#8211; pin 13</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP130&quot;]">GP130</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART1_RX&quot;]">UART1_RX</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 receive data input.&quot;]">GPIO, UART1 receive data input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG0&quot;]">DIG0</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 14&quot;]">J18 &#8211; pin 14</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;FW_RCVR&quot;]">FW_RCVR</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;Firmware recovery, active high on boot.&quot;]">Firmware recovery, active high on boot.</td>
<td style="text-align: center;"></td>
</tr>
</tbody>
</table>
</div>
<p dir="ltr">
<p dir="ltr">■ J19 컨넥터 라인</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="121" />
<col width="126" />
<col width="91" />
<col width="205" />
<col width="100" /></colgroup>
<tbody>
<tr>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;Breakout\n\ubcf4\ub4dc\ud540&quot;]"><strong>Breakout</strong><br />
<strong>보드핀</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;SoC&quot;]"><strong>SoC</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc6a9\ub3c4&quot;]"><strong>용도</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uae30\ub2a5\uc124\uba85&quot;]"><strong>기능설명</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc544\ub450\uc774\ub178\n\ud45c\uc900\ud540&quot;]"><strong>아두이노</strong><br />
<strong>표준핀</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 1&quot;]">J19 &#8211; pin 1</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;NC&quot;]">NC</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;No connect.&quot;]">No connect.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 2&quot;]">J19 &#8211; pin 2</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;V_V1P80&quot;]">V_V1P80</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;System 1.8 V I/O output power.&quot;]">System 1.8 V I/O output power.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;1.8V&quot;]">1.8V</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 3&quot;]">J19 &#8211; pin 3</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GND&quot;]">GND</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;Ground.&quot;]">Ground.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GND&quot;]">GND</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 4&quot;]">J19 &#8211; pin 4</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP44&quot;]">GP44</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;ALS_INT_N&quot;]">ALS_INT_N</td>
<td data-sheets-value="[null,2,&quot;GPIO, ALS interrupt input.&quot;]">GPIO, ALS interrupt input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A0&quot;]">A0</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 5&quot;]">J19 &#8211; pin 5</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP46&quot;]">GP46</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;ACCELEROMETER_INT_1&quot;]">ACCELEROMETER_INT_1</td>
<td data-sheets-value="[null,2,&quot;GPIO, accelerometer interrupt input.&quot;]">GPIO, accelerometer interrupt input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A2&quot;]">A2</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 6&quot;]">J19 &#8211; pin 6</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP48&quot;]">GP48</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GYRO_DRDY&quot;]">GYRO_DRDY</td>
<td data-sheets-value="[null,2,&quot;GPIO, gyro data ready input.&quot;]">GPIO, gyro data ready input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG7&quot;]">DIG7</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 7&quot;]">J19 &#8211; pin 7</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;RESET_OUT#&quot;]">RESET_OUT#</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;System reset out low.&quot;]">System reset out low.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;RESET&quot;]">RESET</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 8&quot;]">J19 &#8211; pin 8</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP131&quot;]">GP131</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART1_TX&quot;]">UART1_TX</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART 1 Tx output.&quot;]">GPIO, UART 1 Tx output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG1&quot;]">DIG1</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 9&quot;]">J19 &#8211; pin 9</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP14&quot;]">GP14</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;AUDIO_CODEC_INT&quot;]">AUDIO_CODEC_INT</td>
<td data-sheets-value="[null,2,&quot;GPIO, audio codec interrupt input.&quot;]">GPIO, audio codec interrupt input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A4&quot;]">A4</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 10&quot;]">J19 &#8211; pin 10</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP40&quot;]">GP40</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP2_CLK&quot;]">SSP2_CLK</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 clock output.&quot;]">GPIO, SSP2 clock output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG13(GP40)&quot;]">DIG13(GP40)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 11&quot;]">J19 &#8211; pin 11</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP43&quot;]">GP43</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP2_TXD&quot;]">SSP2_TXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 transmit data output.&quot;]">GPIO, SSP2 transmit data output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG11(GP115)&quot;]">DIG11(GP115)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 12&quot;]">J19 &#8211; pin 12</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP77&quot;]">GP77</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_CDN&quot;]">SD_CDN</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD card detect low input.&quot;]">GPIO, SD card detect low input.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 13&quot;]">J19 &#8211; pin 13</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP82&quot;]">GP82</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_DAT2&quot;]">SD_DAT2</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD data 2&quot;]">GPIO, SD data 2</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 14&quot;]">J19 &#8211; pin 14</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP83&quot;]">GP83</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_DAT3&quot;]">SD_DAT3</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD data 3&quot;]">GPIO, SD data 3</td>
<td style="text-align: center;"></td>
</tr>
</tbody>
</table>
<p dir="ltr">
<p dir="ltr">■ J20 컨넥터 라인</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="121" />
<col width="126" />
<col width="91" />
<col width="205" />
<col width="100" /></colgroup>
<tbody>
<tr>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;Breakout\n\ubcf4\ub4dc\ud540&quot;]"><strong>Breakout</strong><br />
<strong>보드핀</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;SoC&quot;]"><strong>SoC</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc6a9\ub3c4&quot;]"><strong>용도</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uae30\ub2a5\uc124\uba85&quot;]"><strong>기능설명</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc544\ub450\uc774\ub178\n\ud45c\uc900\ud540&quot;]"><strong>아두이노</strong><br />
<strong>표준핀</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 1&quot;]">J20 &#8211; pin 1</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;V_VSYS&quot;]">V_VSYS</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;System input power.&quot;]">System input power.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 2&quot;]">J20 &#8211; pin 2</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;V_V3P30&quot;]">V_V3P30</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;System 3.3 V output.&quot;]">System 3.3 V output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;3.3V&quot;]">3.3V</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 3&quot;]">J20 &#8211; pin 3</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP134&quot;]">GP134</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART2_RX&quot;]">UART2_RX</td>
<td data-sheets-value="[null,2,&quot;UART2 Rx (input).&quot;]">UART2 Rx (input).</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 4&quot;]">J20 &#8211; pin 4</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP45&quot;]">GP45</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;COMPASS_DRDY&quot;]">COMPASS_DRDY</td>
<td data-sheets-value="[null,2,&quot;GPIO, compass data ready input.&quot;]">GPIO, compass data ready input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A1&quot;]">A1</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 5&quot;]">J20 &#8211; pin 5</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP47&quot;]">GP47</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;ACCELEROMETER_INT_2&quot;]">ACCELEROMETER_INT_2</td>
<td data-sheets-value="[null,2,&quot;GPIO, accelerometer interrupt input 2.&quot;]">GPIO, accelerometer interrupt input 2.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A3&quot;]">A3</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 6&quot;]">J20 &#8211; pin 6</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP49&quot;]">GP49</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GYRO_INT&quot;]">GYRO_INT</td>
<td data-sheets-value="[null,2,&quot;GPIO, gyro interrupt input.&quot;]">GPIO, gyro interrupt input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG8&quot;]">DIG8</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 7&quot;]">J20 &#8211; pin 7</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP15&quot;]">GP15</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO.&quot;]">GPIO.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 8&quot;]">J20 &#8211; pin 8</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP84&quot;]">GP84</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_CLK_FB&quot;]">SD_CLK_FB</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD clock feedback input.&quot;]">GPIO, SD clock feedback input.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 9&quot;]">J20 &#8211; pin 9</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP42&quot;]">GP42</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP2_RXD&quot;]">SSP2_RXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 Rx data input.&quot;]">GPIO, SSP2 Rx data input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG12(GP42)&quot;]">DIG12(GP42)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 10&quot;]">J20 &#8211; pin 10</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP41&quot;]">GP41</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP2_FS&quot;]">SSP2_FS</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 frame sync output.&quot;]">GPIO, SSP2 frame sync output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG10(GP41)&quot;]">DIG10(GP41)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 11&quot;]">J20 &#8211; pin 11</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP78&quot;]">GP78</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_CLK&quot;]">SD_CLK</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD clock output.&quot;]">GPIO, SD clock output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 12&quot;]">J20 &#8211; pin 12</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP79&quot;]">GP79</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_CMD&quot;]">SD_CMD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD command.&quot;]">GPIO, SD command.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 13&quot;]">J20 &#8211; pin 13</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP80&quot;]">GP80</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_DAT0&quot;]">SD_DAT0</td>
<td data-sheets-value="[null,2,&quot;GPIO, SD data 0.&quot;]">GPIO, SD data 0.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 14&quot;]">J20 &#8211; pin 14</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP81&quot;]">GP81</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SD_DAT1&quot;]">SD_DAT1</td>
<td data-sheets-value="[null,2,&quot;GP81 SD data 1.&quot;]">GP81 SD data 1.</td>
<td style="text-align: center;"></td>
</tr>
</tbody>
</table>
<p dir="ltr">
<p dir="ltr">■ 아두이노핀과 직접적으로 관련된 핀</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="121" />
<col width="126" />
<col width="91" />
<col width="205" />
<col width="100" /></colgroup>
<tbody>
<tr>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;Breakout\n\ubcf4\ub4dc\ud540&quot;]"><strong>Breakout</strong><br />
<strong>보드핀</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;SoC&quot;]"><strong>SoC</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc6a9\ub3c4&quot;]"><strong>용도</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uae30\ub2a5\uc124\uba85&quot;]"><strong>기능설명</strong></td>
<td style="background-color: #9acd32;" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc544\ub450\uc774\ub178\n\ud45c\uc900\ud540&quot;]"><strong>아두이노</strong><br />
<strong>표준핀</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 4&quot;]">J19 &#8211; pin 4</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP44&quot;]">GP44</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;ALS_INT_N&quot;]">ALS_INT_N</td>
<td data-sheets-value="[null,2,&quot;GPIO, ALS interrupt input.&quot;]">GPIO, ALS interrupt input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A0&quot;]">A0</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 4&quot;]">J20 &#8211; pin 4</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP45&quot;]">GP45</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;COMPASS_DRDY&quot;]">COMPASS_DRDY</td>
<td data-sheets-value="[null,2,&quot;GPIO, compass data ready input.&quot;]">GPIO, compass data ready input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A1&quot;]">A1</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 5&quot;]">J19 &#8211; pin 5</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP46&quot;]">GP46</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;ACCELEROMETER_INT_1&quot;]">ACCELEROMETER_INT_1</td>
<td data-sheets-value="[null,2,&quot;GPIO, accelerometer interrupt input.&quot;]">GPIO, accelerometer interrupt input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A2&quot;]">A2</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 5&quot;]">J20 &#8211; pin 5</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP47&quot;]">GP47</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;ACCELEROMETER_INT_2&quot;]">ACCELEROMETER_INT_2</td>
<td data-sheets-value="[null,2,&quot;GPIO, accelerometer interrupt input 2.&quot;]">GPIO, accelerometer interrupt input 2.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A3&quot;]">A3</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 9&quot;]">J19 &#8211; pin 9</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP14&quot;]">GP14</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;AUDIO_CODEC_INT&quot;]">AUDIO_CODEC_INT</td>
<td data-sheets-value="[null,2,&quot;GPIO, audio codec interrupt input.&quot;]">GPIO, audio codec interrupt input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A4&quot;]">A4</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 2&quot;]">J18 &#8211; pin 2</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP165&quot;]">GP165</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO&quot;]">GPIO</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;A5&quot;]">A5</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 13&quot;]">J18 &#8211; pin 13</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP130&quot;]">GP130</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART1_RX&quot;]">UART1_RX</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 receive data input.&quot;]">GPIO, UART1 receive data input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG0&quot;]">DIG0</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 8&quot;]">J19 &#8211; pin 8</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP131&quot;]">GP131</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART1_TX&quot;]">UART1_TX</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART 1 Tx output.&quot;]">GPIO, UART 1 Tx output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG1&quot;]">DIG1</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 14&quot;]">J17 &#8211; pin 14</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP128&quot;]">GP128</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART1_CTS&quot;]">UART1_CTS</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 clear to send input.&quot;]">GPIO, UART1 clear to send input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG2&quot;]">DIG2</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 7&quot;]">J18 &#8211; pin 7</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP12_PWM0&quot;]">GP12_PWM0</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO capable of PWM output.&quot;]">GPIO capable of PWM output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG3&quot;]">DIG3</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 12&quot;]">J18 &#8211; pin 12</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP129&quot;]">GP129</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;UART1_RTS&quot;]">UART1_RTS</td>
<td data-sheets-value="[null,2,&quot;GPIO, UART1 ready to send output.&quot;]">GPIO, UART1 ready to send output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG4&quot;]">DIG4</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 1&quot;]">J18 &#8211; pin 1</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP13_PWM1&quot;]">GP13_PWM1</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO capable of PWM output.&quot;]">GPIO capable of PWM output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG5&quot;]">DIG5</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 1&quot;]">J17 &#8211; pin 1</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP182_PWM2&quot;]">GP182_PWM2</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO capable of PWM output.&quot;]">GPIO capable of PWM output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG6&quot;]">DIG6</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 6&quot;]">J19 &#8211; pin 6</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP48&quot;]">GP48</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GYRO_DRDY&quot;]">GYRO_DRDY</td>
<td data-sheets-value="[null,2,&quot;GPIO, gyro data ready input.&quot;]">GPIO, gyro data ready input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG7&quot;]">DIG7</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 6&quot;]">J20 &#8211; pin 6</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP49&quot;]">GP49</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GYRO_INT&quot;]">GYRO_INT</td>
<td data-sheets-value="[null,2,&quot;GPIO, gyro interrupt input.&quot;]">GPIO, gyro interrupt input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG8&quot;]">DIG8</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 8&quot;]">J18 &#8211; pin 8</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP183_PWM3&quot;]">GP183_PWM3</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;GPIO capable of PWM output.&quot;]">GPIO capable of PWM output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG9&quot;]">DIG9</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 10&quot;]">J17 &#8211; pin 10</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP111&quot;]">GP111</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP5_FS1&quot;]">SSP5_FS1</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 chip select 2 output.&quot;]">GPIO, SSP2 chip select 2 output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 10&quot;]">J20 &#8211; pin 10</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP41&quot;]">GP41</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP2_FS&quot;]">SSP2_FS</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 frame sync output.&quot;]">GPIO, SSP2 frame sync output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG10(GP41)&quot;]">DIG10(GP41)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 12&quot;]">J17 &#8211; pin 12</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP115&quot;]">GP115</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP5_TXD&quot;]">SSP5_TXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP5 transmit data output.&quot;]">GPIO, SSP5 transmit data output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 11&quot;]">J19 &#8211; pin 11</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP43&quot;]">GP43</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP2_TXD&quot;]">SSP2_TXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 transmit data output.&quot;]">GPIO, SSP2 transmit data output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG11(GP115)&quot;]">DIG11(GP115)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18 - pin 11&quot;]">J18 &#8211; pin 11</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP114&quot;]">GP114</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP5_RX&quot;]">SSP5_RX</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP5 receive data input.&quot;]">GPIO, SSP5 receive data input.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 9&quot;]">J20 &#8211; pin 9</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP42&quot;]">GP42</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP2_RXD&quot;]">SSP2_RXD</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 Rx data input.&quot;]">GPIO, SSP2 Rx data input.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG12(GP42)&quot;]">DIG12(GP42)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 11&quot;]">J17 &#8211; pin 11</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP109&quot;]">GP109</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP5_CLK&quot;]">SSP5_CLK</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP5 clock output.&quot;]">GPIO, SSP5 clock output.</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 10&quot;]">J19 &#8211; pin 10</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GP40&quot;]">GP40</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;SSP2_CLK&quot;]">SSP2_CLK</td>
<td data-sheets-value="[null,2,&quot;GPIO, SSP2 clock output.&quot;]">GPIO, SSP2 clock output.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;DIG13(GP40)&quot;]">DIG13(GP40)</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 7&quot;]">J19 &#8211; pin 7</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;RESET_OUT#&quot;]">RESET_OUT#</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;System reset out low.&quot;]">System reset out low.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;RESET Pin&quot;]">RESET Pin</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20 - pin 2&quot;]">J20 &#8211; pin 2</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;V_V3P30&quot;]">V_V3P30</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;System 3.3 V output&quot;]">System 3.3 V output</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;3.3V Out Pin&quot;]">3.3V Out Pin</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J17 - pin 4&quot;]">J17 &#8211; pin 4</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;VIN&quot;]">VIN</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;7 to 15 V.&quot;]">7 to 15 V.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;5V Out Pin&quot;]">5V Out Pin</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 2&quot;]">J19 &#8211; pin 2</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;V_V1P80&quot;]">V_V1P80</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;System 1.8 V I/O output power.&quot;]">System 1.8 V I/O output power.</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;Voltage In&quot;]">Voltage In</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19 - pin 3&quot;]">J19 &#8211; pin 3</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GND&quot;]">GND</td>
<td style="text-align: center;"></td>
<td data-sheets-value="[null,2,&quot;Ground&quot;]">Ground</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GND&quot;]">GND</td>
</tr>
</tbody>
</table>
<p dir="ltr"><strong>주의) A0~A5핀은 별매인 아두이노Breakout Board에서만 지원함</strong></p>
<p dir="ltr">
<p dir="ltr"><strong>    2.4. 전원공급계통</strong></p>
<p dir="ltr">    에디슨보드는 저전력 장치로 평상시 부하전류가 200mA를 넘지 않으며 Wi-Fi 송신 시 짧게 600mA 정도가 흐릅니다. 외부로부터 7~15V 전원을 받게 되면 내부적으로 DC-DC컨버터에 의해 5V로 변환됩니다. 배터리 충전회로는 최대 4.4V로 제한되어 있습니다. 이 전압은 에디슨보드의 VSYS의 안전권인 5.15V~4.5V에서 동작되어야 하기 때문이기도 합니다.</p>
<p dir="ltr">    내장된 충전기는 표준형 리튬배터리를 최대 4.2V선까지 충전시키며 충전전류는 190mA로 제한되도록 프로그램 되어 있습니다. 안전을 위해 충전중인 배터리가 과열되지 않도록 과열에 대한 대책이 필요합니다.</p>
<p dir="ltr">    요약 정리를 해보자면</p>
<p dir="ltr">    1. USB 호스트 모드에서는 항상 외부 전원 연결을 요구함</p>
<p dir="ltr">    2. 배터리는 과열방지대책이 되어 있는 것을 사용함이 바람직하며 과열 시 차단되도록 설계할 것</p>
<p dir="ltr" style="text-align: center;"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-13.jpg" rel="lightbox[28027]"><img class="aligncenter  wp-image-28060" alt="29 금강초롱 13" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-13.jpg" width="746" height="375" /></a></p>
<p dir="ltr">
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="165" />
<col width="342" />
<col width="100" /></colgroup>
<tbody>
<tr>
<td rowspan="1" colspan="3" data-sheets-value="[null,2,&quot;\ubcc4\ucca8 : \uc544\ub450\uc774\ub178 \uc5f0\uacc4 \ud3ec\ud2b8 \uc0ac\uc6a9&quot;]">&nbsp;</p>
<p><span style="font-size: medium;"><strong>  ★ 별첨 : 아두이노 연계 포트 사용</strong></span></p>
<p>&nbsp;</td>
</tr>
<tr>
<td style="background-color: #e0ffff;" rowspan="1" colspan="3" align="center" valign="middle" data-sheets-value="[null,2,&quot;1. \uc544\ub450\uc774\ub178 Digital pin7\uc5d0\uc11c \ud1a0\uae00 \ub370\uc774\ud130\ub97c \ub0b4\ubcf4\ub0b4\ub294 \uc608&quot;]"><strong>1. 아두이노 Digital pin7에서 토글 데이터를 내보내는 예</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uad6c \ubd84&quot;]"><strong>구 분</strong></td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uba85 \ub839 \uc5b4&quot;]"><strong>명 령 어</strong></td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ube44\uace0&quot;]"><strong>비고</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GPIO \uc124\uc815\ub300\uc0c1 \uc120\ud0dd&quot;]">GPIO 설정대상 선택</td>
<td data-sheets-value="[null,2,&quot;echo -n \&quot;223\&quot; &gt; /sys/class/gpio/export\necho -n \&quot;255\&quot; &gt; /sys/class/gpio/export\necho -n \&quot;48\&quot; &gt; /sys/class/gpio/export&quot;]">echo -n &#8220;223&#8243; &gt; /sys/class/gpio/export<br />
echo -n &#8220;255&#8243; &gt; /sys/class/gpio/export<br />
echo -n &#8220;48&#8243; &gt; /sys/class/gpio/export</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ud480\uc5c5/\ud480\ub2e4\uc6b4\n\ub808\uc9c0\uc2a4\ud130 \uc815\uc9c0&quot;]">풀업/풀다운<br />
레지스터 정지</td>
<td data-sheets-value="[null,2,&quot;echo -n \&quot;in\&quot; &gt; /sys/class/gpio/gpio223/direction&quot;]">echo -n &#8220;in&#8221; &gt; /sys/class/gpio/gpio223/direction</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ub17c\ub9ac\ub808\ubca8 \uc2dc\ud504\ud130 \uc124\uc815&quot;]">논리레벨 시프터 설정</td>
<td data-sheets-value="[null,2,&quot;echo -n \&quot;out\&quot; &gt; /sys/class/gpio/gpio255/direction\necho -n \&quot;1\&quot; &gt; /sys/class/gpio/gpio255/value&quot;]">echo -n &#8220;out&#8221; &gt; /sys/class/gpio/gpio255/direction<br />
echo -n &#8220;1&#8243; &gt; /sys/class/gpio/gpio255/value</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GPIO\ub85c \ucd9c\ub825 \ub0b4\ubcf4\ub0b4\uae30&quot;]">GPIO로 출력 내보내기</td>
<td data-sheets-value="[null,2,&quot;echo -n \&quot;out\&quot; &gt; /sys/class/gpio/gpio48/direction\necho -n \&quot;1\&quot; &gt; /sys/class/gpio/gpio48/value\necho -n \&quot;0\&quot; &gt; /sys/class/gpio/gpio48/value\necho -n \&quot;1\&quot; &gt; /sys/class/gpio/gpio48/value&quot;]">echo -n &#8220;out&#8221; &gt; /sys/class/gpio/gpio48/direction<br />
echo -n &#8220;1&#8243; &gt; /sys/class/gpio/gpio48/value<br />
echo -n &#8220;0&#8243; &gt; /sys/class/gpio/gpio48/value<br />
echo -n &#8220;1&#8243; &gt; /sys/class/gpio/gpio48/value</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;1-&gt;0-&gt;1\n\ubc18\ubcf5\ub428&quot;]">1-&gt;0-&gt;1<br />
반복됨</td>
</tr>
<tr>
<td style="background-color: #e0ffff;" colspan="3" align="center" valign="middle" data-sheets-value="[null,2,&quot;2. \uc544\ub450\uc774\ub178 Digital pin7\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc77d\uc5b4\uc624\ub294 \uc608&quot;]"><strong>2. 아두이노 Digital pin7에서 데이터를 읽어오는 예  </strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uad6c \ubd84&quot;]"><strong>구 분</strong></td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uba85 \ub839 \uc5b4&quot;]"><strong>명 령 어</strong></td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ube44\uace0&quot;]"><strong>비고</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GPIO \uc124\uc815\ub300\uc0c1 \uc120\ud0dd&quot;]">GPIO 설정대상 선택</td>
<td data-sheets-value="[null,2,&quot;echo -n \&quot;223\&quot; &gt; /sys/class/gpio/export\necho -n \&quot;255\&quot; &gt; /sys/class/gpio/export\necho -n \&quot;48\&quot; &gt; /sys/class/gpio/export&quot;]">echo -n &#8220;223&#8243; &gt; /sys/class/gpio/export<br />
echo -n &#8220;255&#8243; &gt; /sys/class/gpio/export<br />
echo -n &#8220;48&#8243; &gt; /sys/class/gpio/export</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ud480\uc5c5 \ub808\uc9c0\uc2a4\ud130 \uc124\uc815&quot;]">풀업 레지스터 설정</td>
<td data-sheets-value="[null,2,&quot;echo -n \&quot;out\&quot; &gt; /sys/class/gpio/gpio223/direction\necho -n \&quot;1\&quot; &gt; /sys/class/gpio/gpio223/value&quot;]">echo -n &#8220;out&#8221; &gt; /sys/class/gpio/gpio223/direction<br />
echo -n &#8220;1&#8243; &gt; /sys/class/gpio/gpio223/value</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\ub17c\ub9ac\ub808\ubca8 \uc2dc\ud504\ud130 \uc124\uc815&quot;]">논리레벨 시프터 설정</td>
<td data-sheets-value="[null,2,&quot;echo -n \&quot;out\&quot; &gt; /sys/class/gpio/gpio255/direction\necho -n \&quot;0\&quot; &gt; /sys/class/gpio/gpio255/value&quot;]">echo -n &#8220;out&#8221; &gt; /sys/class/gpio/gpio255/direction<br />
echo -n &#8220;0&#8243; &gt; /sys/class/gpio/gpio255/value</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GPIO\uc5d0\uc11c \uc77d\uae30&quot;]">GPIO에서 읽기</td>
<td data-sheets-value="[null,2,&quot;echo -n \&quot;in\&quot; &gt; /sys/class/gpio/gpio48/direction\ncat /sys/class/gpio/gpio48/value&quot;]">echo -n &#8220;in&#8221; &gt; /sys/class/gpio/gpio48/direction<br />
cat /sys/class/gpio/gpio48/value</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;1\uc774 \uc77d\ud600\uc9d0&quot;]">1이 읽혀짐</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GPIO\uc5d0\uc11c \uc77d\uae30&quot;]">GPIO에서 읽기</td>
<td data-sheets-value="[null,2,&quot;echo -n \&quot;0\&quot; &gt; /sys/class/gpio/gpio223/value\ncat /sys/class/gpio/gpio48/value&quot;]">echo -n &#8220;0&#8243; &gt; /sys/class/gpio/gpio223/value<br />
cat /sys/class/gpio/gpio48/value</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;0\uc774 \uc77d\ud600\uc9d0&quot;]">0이 읽혀짐</td>
</tr>
</tbody>
</table>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><span style="font-size: x-large;"><strong>[3]  에디슨 보드로 Hello World에 도전하기</strong></span></p>
<p dir="ltr">
<p dir="ltr">  이번에는 에디슨 보드로 LED점멸 동작시켜봄으로써 위대한(?) 첫걸음을 디뎌보려 합니다. 저는 H/W에서 “Hello World!” 격에 해당하는 것이 LED점멸이라고 생각합니다. 우선 LED점멸 기능을 위해 기본적으로 필요한 일들을 준비해 보도록 하겠습니다.</p>
<p dir="ltr">
<p dir="ltr"><strong><span style="font-size: large;">  1. 준비물</span></strong></p>
<p dir="ltr">    ■ Intel Edison Breakout board &#8211; 핀 헤더를 기판 아래에 납땜하여 붙일 것</p>
<p dir="ltr">    ■ Arduino-Intel IDE &#8211; 아두이노 개발환경</p>
<p dir="ltr">    ■ 브레드보드</p>
<p dir="ltr">    ■ LED, 330Ω, 1kΩ 저항 각 1개</p>
<p dir="ltr">    ■ 2SC1815 NPN Transistor</p>
<p dir="ltr">    ■ Male to Female 점퍼와이어 3개</p>
<p dir="ltr">    ■ Male to Male 점퍼와이어 약간</p>
<p dir="ltr">    ■ 1N4007 Diode</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large;"><strong>  2. 브레이크 아웃보드 정비</strong></span></p>
<p dir="ltr">  제일 먼저 DC전원잭을 아래 사진과 같이 연결해 줍니다.</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-15.jpg" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28059" alt="29 금강초롱 15" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-15-620x465.jpg" width="620" height="465" /></a></p>
<p dir="ltr">
<p dir="ltr">  이 커넥터로 DC를 공급해주면 스스로 동작되는 무언가를 만들 수 있게 됩니다.</p>
<p dir="ltr">  다음으로 14핀 헤더를 4개 준비하여 아래 사진과 같이 납땜합니다. 납땜시 중앙 8번핀들을 우선 납땜하고 정렬에 문제가 없는지 확인하고 나머지 핀들을 조심스럽게 납땜합니다.</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-17.jpg" rel="lightbox[28027]"><br />
</a><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-16.jpg" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28062" alt="29 금강초롱 16" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-16-620x465.jpg" width="620" height="465" /></a><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-17.jpg" rel="lightbox[28027]"><img class="aligncenter" alt="29 금강초롱 17" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-17-620x465.jpg" width="620" height="465" /></a></p>
<p>&nbsp;</p>
<p dir="ltr"><strong><span style="font-size: large;">  3. 에디슨 보드를위한 소프트웨어와 드라이버 파일 확보</span></strong></p>
<p dir="ltr">    ■ FTDI Driver : http://www.ftdichip.com/Drivers/CDM/CDM%20v2.10.00%20WHQL%20Certified.exe 이 드라이버파일은 J3포트를 Serial 포트로 인식하게 만드는데 사용됨</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-18.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28064" alt="29 금강초롱 18" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-18.jpg" width="551" height="432" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-19.jpg" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28065" alt="29 금강초롱 19" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-19.jpg" width="555" height="428" /></a></p>
<p dir="ltr">    ■ 에디슨보드 드라이버 : http://downloadmirror.intel.com/24271/eng/IntelEdisonDriverSetup1.0.0.exe</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-20.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28066" alt="29 금강초롱 20" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-20.jpg" width="559" height="424" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-21.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28067" alt="29 금강초롱 21" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-21.jpg" width="554" height="427" /></a></p>
<p dir="ltr">    ■ PuTTY 터미널에뮬레이터</p>
<p dir="ltr">    http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html</p>
<p dir="ltr">
<p dir="ltr"><span style="font-size: large;"><strong>  </strong></span></p>
<p dir="ltr"><span style="font-size: large;"><strong>  4. 에디슨보드에 최신 리눅스이미지 설치하기</strong></span></p>
<p dir="ltr">    <strong>4.1. 최신 이미지 다운로드</strong></p>
<p dir="ltr">     https://communities.intel.com/docs/DOC-23242</p>
<p dir="ltr">    필자가 다운로드한 이미지는 edison-image-rel1-maint-rel1-ww42-14.zip입니다. 이 이미지를 내 로컬 디스크의 적당한 영역에 풉니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-22.jpg" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28070" alt="29 금강초롱 22" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-22-620x535.jpg" width="620" height="535" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">    <strong>4.2. 위 파일들을 에디슨보드에 복사하여 넣습니다.</strong></p>
<p dir="ltr">    이 작업은 J16 커넥터에 마이크로USB케이블이 연결되면 에디슨보드가 마치 대용량 USB메모리처럼 보이므로 이곳에다 복사하여 넣으면 됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-23.jpg" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28071" alt="29 금강초롱 23" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-23-620x534.jpg" width="620" height="534" /></a></p>
<p dir="ltr">
<p dir="ltr"><span style="font-size: large;"><strong>  </strong></span></p>
<p dir="ltr"><span style="font-size: large;"><strong>  5. 에디슨보드에 Yocto Linux 플래시디스크 굽기</strong></span></p>
<p dir="ltr">    J3에 마이크로 USB케이블이 연결된 상태에서 PuTTY등을 써서 Telnet으로 에디슨 보드에 접근 합니다. 아래는 Yocto Linux를 설치하고 설정하는 예입니다.  에디슨 보드를 사용하다보면 플래시OS가 깨져 다운로드가 잘 안 되는 등 이상한 짓을 하는 경우가 있는데 이때도 아래와 같은 방법으로 시스템을 초기화 할 수 있습니다.</p>
<p dir="ltr">  ① 제일 먼저 마이크로USB 케이블(스마트폰과 PC 연결용)을 J3 포트에 연결합니다.</p>
<p dir="ltr">  ② 전원을 공급하기 위해 2번째 USB포트도 연결합니다.</p>
<p dir="ltr">  ③ 장치관리자를 실행합니다.</p>
<p dir="ltr">  ④ 장치관리자의 포트섹션에서 포트번호가 떠오르는지 확인합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-24.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28072" alt="29 금강초롱 24" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-24.jpg" width="592" height="237" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">  ⑤ PuTTY 등 터미널에뮬레이터를 실행합니다.</p>
<p dir="ltr">   - Connection Type : Serial</p>
<p dir="ltr">   - Serial line : ComXX</p>
<p dir="ltr">   - Speed : 115200</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-251.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28073" alt="29 금강초롱 25" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-251.jpg" width="466" height="450" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">   ⑥ Open을 클릭합니다.</p>
<p dir="ltr">   첫 번째 바이트를 까먹는 경우가 생기는데 이는 에디슨이 슬립모드에 있을 때는 Tx, Rx라인을 놓고 있다가 데이터가 들어가면 그때서야 깨어나기 때문이며 이때 1바이트가 달아납니다. 한번 키를 누른 후 20초 이내에 계속 눌러주면 데이터를 잃지 않습니다.</p>
<p dir="ltr">   ⑦ 빈 화면이 나타나면 엔터를 두 번 쳐봅니다.</p>
<p dir="ltr">   ⑧ “root”를 입력하면 암호를 물어보지 않고 그냥 넘어갑니다.</p>
<p dir="ltr">   ⑨ “reboot ota”를 입력한 후 엔터를 누릅니다. 에디슨이 리부팅 되면서 플래시에 굽기를 시작합니다. 약 10분이 소요됩니다.</p>
<p dir="ltr">   ⑩ 에디슨 보드 기본 설정하기</p>
<p dir="ltr">    다음번 프롬프트가 뜨면 “configure_edison”이라고 치면 환경 설정작업을 할 수 있습니다. 부득이한 사정이 없는 한 configure_edison으로 환경을 바꾸는 작업을 권하지 않습니다. 에디슨을 끌 때는 “systemctl poweroff”라고 치며 라즈베리파이에서 사용되는 리눅스 명령어가 대부분 먹혀듭니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: small;"><strong>  ※ 자주 쓰는 명령어 ※</strong></span></p>
<p dir="ltr">       ls : 디렉터리 리스트</p>
<p dir="ltr">      cd : 디렉터리 이동</p>
<p dir="ltr">      cat : 파일의 내용을 봄</p>
<p dir="ltr">      vi : 파일을 편집</p>
<p dir="ltr">      [tab] : 디렉터리에 유사명칭의 파일이 존재할 때 타이핑을 도와줌</p>
<p dir="ltr">      find : 파일이나 디렉터리를 찾기</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><strong><span style="font-size: large;">  6. 에디슨보드에 전원을 공급해보기</span></strong></p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-24-2.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28074" alt="29 금강초롱 24-2" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-24-2.jpg" width="592" height="363" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">   우선 마이크로USB 케이블을 2개 준비하여 J3과 J16에 꽂은 후 PC와 연결합니다. 아두이노 IDE의 com port는 장치관리자에서 확인된 포트번호로 설정해줍니다. 에디슨보드의 GPIO는 1.8V로 입출력이 이뤄지므로 본 LED 점멸테스트를 위해서는 전류 증폭회로가 필요하게 됩니다.</p>
<p dir="ltr">   필자는 일반적으로 디지털스위칭 용도로 많이 사용되는 2SC1815 NPN 트랜지스터를 사용하였습니다. 연결 회로도는 아래와 같습니다.</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="118" />
<col width="180" />
<col width="337" /></colgroup>
<tbody>
<tr>
<td style="text-align: center; background-color: #9acd32;" data-sheets-value="[null,2,&quot;\uad6c\ubd84&quot;]"><strong>구분</strong></td>
<td style="text-align: center; background-color: #9acd32;" data-sheets-value="[null,2,&quot;Breakout Board \ud540\ubc88\ud638&quot;]"><strong>Breakout Board 핀번호</strong></td>
<td style="text-align: center; background-color: #9acd32;" data-sheets-value="[null,2,&quot;\uc6a9 \ub3c4&quot;]"><strong>용 도</strong></td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;Power 3.3V&quot;]">Power 3.3V</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J20-P02&quot;]">J20-P02</td>
<td data-sheets-value="[null,2,&quot;\ud0c0\uac9f(\ube0c\ub808\ub4dc)\ubcf4\ub4dc\ub85c 3.3V \uacf5\uae09&quot;]"> 타겟(브레드)보드로 3.3V 공급</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;GND&quot;]">GND</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J19-P03&quot;]">J19-P03</td>
<td data-sheets-value="[null,2,&quot;\uc811\uc9c0&quot;]"> 접지</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;OUTPUT&quot;]">OUTPUT</td>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;J18-P13&quot;]">J18-P13</td>
<td data-sheets-value="[null,2,&quot;- LED\ub97c \uc810\uba78\ud558\uae30 \uc704\ud55c 1.8V\ub808\ubca8\uc758 \uc2e0\ud638\uc120\n1K\u03a9\uc744 \uac70\uccd0\uc11c 2SC1815 NPN TR\uc758 BASE\ub85c \uc5f0\uacb0\ub428\n\u203b \uc544\ub450\uc774\ub178\uc758 Digital port D0\uc5d0 \ud574\ub2f9\ub428&quot;]">- LED를 점멸하기 위한 1.8V레벨의 신호선<br />
1KΩ을 거쳐서 2SC1815 NPN TR의 BASE로 연결됨<br />
※ 아두이노의 Digital port D0에 해당됨</td>
</tr>
</tbody>
</table>
<div dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-27.jpg" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28075" alt="29 금강초롱 27" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-27-620x363.jpg" width="620" height="363" /></a>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><strong><span style="font-size: large;">  7. 아두이노IDE 환경에서 프로그램 하기</span></strong></p>
<p dir="ltr">   우선 에디슨보드만을 위한 전용 아두이노 IDE 프로그램 설치가 필요하며 아래 주소에서 다운로드를 합니다. 이 프로그램은 인텔사에서 공급합니다. (https://www-ssl.intel.com/content/www/us/en/do-it-yourself/downloads-and-documentation.html)</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-28.jpg" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28076" alt="29 금강초롱 28" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-28-620x437.jpg" width="620" height="437" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">   위 페이지에는 에디슨보드를 운영하는데 필요한 프로그램, 문서자료 등이 가득 들어 있으므로 자주 방문해 보는 것이 좋겠습니다.</p>
<p>아두이노 IDE에서 아래와 같은 간단한 소스를 입력해봅니다.</p>
<table class="aligncenter" style="border-color: #000000; border-width: 0px;" border="0">
<tbody>
<tr>
<td style="border: 1px solid #000000;">
<p dir="ltr">void setup() {</p>
<p dir="ltr">   <span style="color: #99cc00;">// Digital Pin 0 in Arduino IDE is mapped to J18-P13 on the Edison breakout board</span></p>
<p dir="ltr">pinMode(0, OUTPUT);</p>
<p dir="ltr">}</p>
<p dir="ltr">
<p dir="ltr">void loop() {</p>
<p dir="ltr">   <span style="color: #99cc00;">//Tun on the LED</span></p>
<p dir="ltr">digitalWrite(0,HIGH);</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr">
<p dir="ltr">   <span style="color: #99cc00;">//Turn off the LED</span></p>
<p dir="ltr">digitalWrite(0,LOW);</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr">}</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">   컴파일이 끝나고 에디슨보드로 전송이 완료되면 아래와 같은 화면을 볼 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-29.jpg" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28077" alt="29 금강초롱 29" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-29-620x603.jpg" width="620" height="603" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">   파일 &gt; 예제에는 아두이노 IDE에 담겨있는 인텔 에디슨보드용 예제파일이 모여 있는 곳입니다. 이곳에 있는 예제들을 살펴보는 것 만으로도 상당한 발전을 이룰 수 있다고 봅니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="color: #ff0000;">※ 도움말 경로 : C:\arduino-windows-1.0.4\arduino-1.5.3-Intel.1.0.4\reference\index.html</span></p>
<p dir="ltr"><span style="color: #ff0000;">※ 라이브러리 경로 : C:\arduino-windows-1.0.4\arduino-1.5.3-Intel.1.0.4\hardware\arduino\edison\libraries</span></p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-331.bmp" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28078" alt="29 금강초롱 331" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-331.bmp" /></a></p>
<p dir="ltr">   브레드보드 상에서 동작중인 사진입니다. 사실 보기에는 단출해 보이지만 작가의 의도대로 동작이 이뤄지고 있음을 보여주는 의미심장한 사진임이 틀림없습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-30.jpg" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28079" alt="29 금강초롱 30" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-30-620x465.jpg" width="620" height="465" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">   이번 차에는 에디슨보드에 핀 헤더를 부착하여 외부와 전기적으로 소통하는 채널을 형성하였고 이 핀에 LED를 연결하여 점멸하는 예제를 실행하여 봤습니다. 에디슨보드가 Break out보드와 결합되기만 하여도 얼마든지 외부와 소통할 수 있다는 것을 확인한 것이 이번 도전에서 가장 큰 의미가 아닐까 합니다.</p>
<p dir="ltr">   아쉬운 점이라면 에디슨보드에는 자체적인 A/D컨버터가 탑재되어 있지 않다는 점이며 아날로그량을 다루려면 반드시 추가 H/W구성이 반드시 필요하다는 것입니다. 이제 에디슨 보드로 무엇을 만들어 볼 수 있을까요? 진가를 발휘하고 싶다면 와이파이, 블루투스, SDIO, I2S를 활용하는 것이 어떨까요? 에디슨 보드가 인터넷과 한 몸이 되어 홈오토메이션, 헬스케어용 도구로 마구마구 활용될 수 있을 것으로 봅니다.</p>
<p dir="ltr">   다음 장에서는 와이파이나 블루투스 등을 응용한 예제를 진행하고자 합니다.</p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><span style="font-size: x-large;"><strong>[4]  Wi-Fi로 인터넷과 소통하기</strong></span></p>
<p dir="ltr">   이번에는 에디슨보드의 최대 강점인 외부와 소통하는 채널을 활용하는 방법을 다뤄보고자 합니다. 이 부분은 공개된 자료가 거의 없는 것이 현실인지라 Intel 커뮤니티, 유튜브, 구글검색 및 직접 실험을 통해 얻은 정보를 바탕으로 작성되었습니다. 기본적인 무선랜 환경을 만든 다음 웹브라우저를 통해 에디슨보드와 네트웍으로 소통하기까지를 쭉~ 진행해 보도록 하겠습니다.</p>
<p dir="ltr"><em>※ 유의사항 : 만일 실습해 보기를 원할 경우 먼저 본 글을 한번 흝어 전체적인 흐름을 파악하고 따라 하시기를 권합니다.</em></p>
<p dir="ltr">
<p dir="ltr"><span style="font-size: large;"><strong>  1. 실험환경 구성</strong></span></p>
<p dir="ltr">    <strong>1.1. 인텔에디슨 브레이크아웃보드 운영환경 분석</strong></p>
<p dir="ltr">    본 리뷰를 위해 지급받은 인텔 에디슨보드와 인텔 에디슨 브레이크아웃 보드를 활용하여 입출력을 하기에는 여러모로 불편한 점이 많습니다.</p>
<p dir="ltr">      ■ 브레이크아웃보드 핀 배열 문제 : 14핀*4열로 구성된 핀으로는 브레드보드판에 연결하기도 불편하고 신호선을 외부로 인출하기도 몹시 불편함</p>
<p dir="ltr">      ■ 신호레벨문제 : 에디슨보드는 기본적으로 1.8V로 디지털입출력이 이뤄지기에 일반적으로 사용되는 3.3V 내지는 5.0V 주변장치들과 통신에 제약이 있음</p>
<p dir="ltr">   위 문제를 극복하기 위해 필자는 다음과 같이 접근하였습니다.</p>
<p dir="ltr">
<p dir="ltr"><strong>    1.2. 나만의 브레이크 아웃보드 제작</strong></p>
<p dir="ltr">    아래 사진과 같이 인텔 에디슨 브레이크아웃보드 핀 맵상 아두이노와 연계된 핀들을 활용하여 아래와 같이 만능기판에 베이스 보드를 만들게 되었습니다. 핀 배열은 기본적으로 아두이노 우노보드와 동일하게 구성하였습니다. 다만 에디슨 보드는 아날로그 입력 기능이 없는 관계로 DIG0~DIG13만 사용이 가능합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-332.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28090" alt="29 금강초롱 332" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-332.jpg" width="620" height="355" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-333.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28091" alt="29 금강초롱 333" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-333.jpg" width="620" height="353" /></a></p>
<p>※ 인텔에디슨용 아두이노보드는 당연히 Analog 입력이 가능하며 이를 위해 별도의 A/D컨버터칩을 사용하였으며 SPI로 에디슨보드와 통신합니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><strong>    1.3. 1.8v 레벨 컨버터</strong></p>
<p>    아래 사진과 같이 MOSFET를 사용하여 1.8v와 3.3v를 이어주는 변환기를 만들었습니다. SMD 디바이스와 에나멜동선을 사용하면 20핀 DIP타입으로 크게 어렵지 않게 제작이 가능합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-334.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28092" alt="29 금강초롱 334" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-334.jpg" width="620" height="355" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-335.jpg" rel="lightbox[28027]"><img class="aligncenter size-full wp-image-28093" alt="29 금강초롱 335" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱-335.jpg" width="620" height="357" /></a></p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large;"><strong> </strong></span></p>
<p dir="ltr"><span style="font-size: large;"><strong>  2. 에디슨보드 무선랜 접속환경 구성하기</strong></span></p>
<p dir="ltr">
<p dir="ltr">     <strong>2.1. 제 1단계 &#8211; Simple Web Server WiFi.ino 실행</strong></p>
<p dir="ltr">       ■ 아두이노실행 ▶ 파일 ▶ 예제 ▶ Wi-Fi ▶ Simple Web Server WiFi ▶ 컴파일/다운로드</p>
<p dir="ltr">       - 소스상 ssid 수정: 접속하고자 하는 무선랜 공유기의 SSID</p>
<p dir="ltr">       - 소스상 pass 수정: 공유기의 무선랜 암호</p>
<p dir="ltr">       ■ 아두이노 터미널 창을 열면 아래와 같은 내용을 볼 수 있음</p>
<p dir="ltr">        이 창을 통해 방금 에디슨보드가 부여 받은 사설 IP주소를 확인</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱336.bmp" rel="lightbox[28027]"><img class="aligncenter size-large wp-image-28080" alt="29 금강초롱336" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱336.bmp" /></a></p>
<p>&nbsp;</p>
<p dir="ltr"><strong>    2.2. 제 2단계 &#8211; 웹브라우져로 에디슨보드에 접속하기</strong></p>
<p dir="ltr">      ■ Set Device Password 섹션 : 에디슨보드가 AP모드로 사용될 때 사용할 비번과 root 비번이 설정된다. 즉, 여기에 등록되는 비번이 무선랜과 root 두 군데에 동시에 사용된다.</p>
<p dir="ltr">      ■ Change Device 섹션 : 에디슨보드가 AP모드로 사용될 때 쓰일 SSID와 mDNS에서 식별될 이름을 부여 한다. 즉, Host name이 된다.</p>
<p>      ■ Connect a WiFi network 섹션 : 이미 설치된 무선랜으로 접속하기 위해 사용될 SSID와 네트웍프로토콜, 암호를 등록한다.</p>
<p style="text-align: center;"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱337.bmp" rel="lightbox[28027]"><img class="aligncenter  wp-image-28081" alt="29 금강초롱337" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱337.bmp" width="629" height="619" /></a></p>
<p dir="ltr">      ■ 위 화면에서 “Submit”을 누르고 잠시 기다리면 아래와 같이 셋업이 정상적으로 종료되었다는 메시지를 볼 수 있습니다.</p>
<p style="text-align: center;"> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱338.bmp" rel="lightbox[28027]"><img class="aligncenter  wp-image-28082" alt="29 금강초롱338" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱338.bmp" width="631" height="292" /></a></p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large;"><strong>  3. 에디슨보드를 웹서버로 만들기</strong></span></p>
<p dir="ltr">    <strong>3.1. 제 3단계 &#8211; Test_WiFiWebserver.ino 소스 컴파일하고 다운로드</strong></p>
<table class="aligncenter" style="border-color: #000000; border-width: 0px; ; width: 600px;" border="0">
<tbody>
<tr>
<td style="border: 1px solid #000000;">
<p dir="ltr">/*</p>
<p dir="ltr"> WiFi Web Server</p>
<p dir="ltr">A simple web server that shows the value of the digital input pins.</p>
<p dir="ltr">using a <span style="color: #ff0000;">Edison Board Wi-Fi channel.</span></p>
<p dir="ltr">
<p dir="ltr">This example is written for a network using WPA encryption. For</p>
<p dir="ltr">WEP or WPA, change the Wifi.begin() call accordingly.</p>
<p dir="ltr">
<p dir="ltr">Circuit:</p>
<p dir="ltr">* WiFi shield attached</p>
<p dir="ltr">* Analog inputs attached to pins A0 through A5 (optional)</p>
<p dir="ltr">
<p dir="ltr">1.created 13 July 2010</p>
<p dir="ltr">    by dlf (Metodo2 srl)</p>
<p dir="ltr">2.modified 31 May 2012</p>
<p dir="ltr">    by Tom Igoe</p>
<p dir="ltr"><span style="color: #ff0000;">3.modified 2015.02.10</span></p>
<p dir="ltr"><span style="color: #ff0000;">    by Dae-Hwan, Kim</span></p>
<p dir="ltr"><span style="color: #ff0000;">    - Changed digital port reading process.</span></p>
<p dir="ltr">*/</p>
<p dir="ltr">#include &lt;SPI.h&gt;</p>
<p dir="ltr">#include &lt;WiFi.h&gt;</p>
<p dir="ltr"><span style="color: #ff0000;">char ssid[] = “myLivingRoom”; // your network SSID (name)</span></p>
<p dir="ltr"><span style="color: #ff0000;">char pass[] = “??????????”;     // your network password</span></p>
<p dir="ltr">int keyIndex = 0;             // your network key Index number (needed only for WEP)</p>
<p dir="ltr">int status = WL_IDLE_STATUS;</p>
<p dir="ltr">
<p dir="ltr"><span style="color: #ff0000;">WiFiServer server(8080);  // by Dae-Hwan, Kim Modify</span></p>
<p dir="ltr">void setup() {</p>
<p dir="ltr">
<p dir="ltr"> <span style="color: #ff0000;">// initialize the digital pin as an input.</span></p>
<p dir="ltr"><span style="color: #ff0000;"> pinMode(0, INPUT);</span></p>
<p dir="ltr"><span style="color: #ff0000;"> pinMode(1, INPUT);</span></p>
<p dir="ltr"><span style="color: #ff0000;"> pinMode(2, INPUT);</span></p>
<p dir="ltr"><span style="color: #ff0000;"> pinMode(3, INPUT);</span></p>
<p dir="ltr"><span style="color: #ff0000;"> pinMode(4, INPUT);</span></p>
<p dir="ltr"><span style="color: #ff0000;"> pinMode(5, INPUT);</span></p>
<p dir="ltr">
<p dir="ltr"> //Initialize serial and wait for port to open:</p>
<p dir="ltr"> Serial.begin(9600);</p>
<p dir="ltr"> while (!Serial) {</p>
<p dir="ltr">   ; // wait for serial port to connect. Needed for Leonardo only</p>
<p dir="ltr"> }</p>
<p dir="ltr">
<p dir="ltr"> // check for the presence of the shield:</p>
<p dir="ltr"> if (WiFi.status() == WL_NO_SHIELD) {</p>
<p dir="ltr">   Serial.println(“WiFi shield not present”);</p>
<p dir="ltr">   // don’t continue:</p>
<p dir="ltr">   while(true);</p>
<p dir="ltr"> }</p>
<p dir="ltr">
<p dir="ltr"> String fv = WiFi.firmwareVersion();</p>
<p dir="ltr"> if( fv != “1.1.0” )</p>
<p dir="ltr">   Serial.println(“Please upgrade the firmware”);</p>
<p dir="ltr"> // attempt to connect to Wifi network:</p>
<p dir="ltr"> while ( status != WL_CONNECTED) {</p>
<p dir="ltr">   Serial.print(“Attempting to connect to SSID: “);</p>
<p dir="ltr">   Serial.println(ssid);</p>
<p dir="ltr">   // Connect to WPA/WPA2 network. Change this line if using open or WEP network:</p>
<p dir="ltr">   status = WiFi.begin(ssid, pass);</p>
<p dir="ltr">   // wait 10 seconds for connection:</p>
<p dir="ltr">   delay(10000);</p>
<p dir="ltr"> }</p>
<p dir="ltr"> server.begin();</p>
<p dir="ltr"> // you’re connected now, so print out the status:</p>
<p dir="ltr"> printWifiStatus();</p>
<p dir="ltr">}</p>
<p dir="ltr">void loop() {</p>
<p dir="ltr"> // listen for incoming clients</p>
<p dir="ltr"> WiFiClient client = server.available();</p>
<p dir="ltr"> if (client) {</p>
<p dir="ltr">   Serial.println(“new client”);</p>
<p dir="ltr">   // an http request ends with a blank line</p>
<p dir="ltr">   boolean currentLineIsBlank = true;</p>
<p dir="ltr">   while (client.connected()) {</p>
<p dir="ltr">     if (client.available()) {</p>
<p dir="ltr">       char c = client.read();</p>
<p dir="ltr">       Serial.write(c);</p>
<p dir="ltr">       // if you’ve gotten to the end of the line (received a newline</p>
<p dir="ltr">       // character) and the line is blank, the http request has ended,</p>
<p dir="ltr">       // so you can send a reply</p>
<p dir="ltr">       if (c == ‘\n’ &amp;&amp; currentLineIsBlank) {</p>
<p dir="ltr">         // send a standard http response header</p>
<p dir="ltr">         client.println(“HTTP/1.1 200 OK”);</p>
<p dir="ltr">         client.println(“Content-Type: text/html”);</p>
<p dir="ltr">         client.println(“Connection: close”);  // the connection will be closed after completion of the response</p>
<p dir="ltr">         client.println(“Refresh: 5”);  // refresh the page automatically every      5 sec</p>
<p dir="ltr">         client.println();</p>
<p dir="ltr">         client.println(“&lt;!DOCTYPE HTML&gt;”);</p>
<p dir="ltr">         client.println(“&lt;html&gt;”);</p>
<p dir="ltr">
<p dir="ltr">         // output the value of each analog input pin</p>
<p dir="ltr">  <span style="color: #ff0000;">       for (int digitalChannel = 0; digitalChannel &lt; 6; digitalChannel++) {</span></p>
<p dir="ltr"><span style="color: #ff0000;">           int sensorReading = digitalRead(digitalChannel);</span></p>
<p dir="ltr"><span style="color: #ff0000;">           client.print(“Digital input [“);</span></p>
<p dir="ltr"><span style="color: #ff0000;">           client.print(digitalChannel);</span></p>
<p dir="ltr"><span style="color: #ff0000;">           client.print(“] is “);</span></p>
<p dir="ltr"><span style="color: #ff0000;">           client.print(sensorReading);</span></p>
<p dir="ltr"><span style="color: #ff0000;">           client.println(“&lt;br /&gt;”);</span></p>
<p dir="ltr"><span style="color: #ff0000;">         }</span></p>
<p dir="ltr">         client.println(“&lt;/html&gt;”);</p>
<p dir="ltr">          break;</p>
<p dir="ltr">       }</p>
<p dir="ltr">       if (c == ‘\n’) {</p>
<p dir="ltr">         // you’re starting a new line</p>
<p dir="ltr">         currentLineIsBlank = true;</p>
<p dir="ltr">       }</p>
<p dir="ltr">       else if (c != ‘\r’) {</p>
<p dir="ltr">         // you’ve gotten a character on the current line</p>
<p dir="ltr">         currentLineIsBlank = false;</p>
<p dir="ltr">       }</p>
<p dir="ltr">     }</p>
<p dir="ltr">   }</p>
<p dir="ltr">   // give the web browser time to receive the data</p>
<p dir="ltr">   delay(1);</p>
<p dir="ltr">
<p dir="ltr">   // close the connection:</p>
<p dir="ltr">   client.stop();</p>
<p dir="ltr">   Serial.println(“client disonnected”);</p>
<p dir="ltr"> }</p>
<p dir="ltr">}</p>
<p dir="ltr">void printWifiStatus() {</p>
<p dir="ltr"> // print the SSID of the network you’re attached to:</p>
<p dir="ltr"> Serial.print(“SSID: “);</p>
<p dir="ltr"> Serial.println(WiFi.SSID());</p>
<p dir="ltr">
<p dir="ltr"> // print your WiFi shield’s IP address:</p>
<p dir="ltr"> IPAddress ip = WiFi.localIP();</p>
<p dir="ltr"> Serial.print(“IP Address: “);</p>
<p dir="ltr"> Serial.println(ip);</p>
<p dir="ltr">
<p dir="ltr"> // print the received signal strength:</p>
<p dir="ltr"> long rssi = WiFi.RSSI();</p>
<p dir="ltr"> Serial.print(“signal strength (RSSI):”);</p>
<p dir="ltr"> Serial.print(rssi);</p>
<p dir="ltr"> Serial.println(“ dBm”);</p>
<p dir="ltr">}</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p dir="ltr"><strong>    3.2. 제 4단계 &#8211; 아두이노 IDE의 시리얼모니터 실행</strong></p>
<p>    에디슨보드로 다운로드를 실행한 후 곧장 시리얼 모니터를 실행하면 아래와 같은 화면을 볼 수 있습니다. 물론 SSID와 IP주소는 필자와 다르게 보일 것입니다. 여기 보이는 주소가 “에디슨웹서버” 주소가 됩니다.</p>
<p style="text-align: center;"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱339.bmp" rel="lightbox[28027]"><img class="aligncenter  wp-image-28083" alt="29 금강초롱339" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱339.bmp" width="612" height="357" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;">
<p dir="ltr"><strong>    3.3. 제 5단계 &#8211; 웹브라우져를 띄워 웹서버(에디슨보드)로 접속</strong></p>
<p dir="ltr">      ■ 접속주소 : http://192.168.123.108:8080/ 등으로 접속한다. IP주소는 위 시리얼모니터창의 값을 사용하고 포트번호 8080은 다른 값을 사용하면 안 됩니다. 이 값은 에디슨보드에 8080을 사용하겠다고 위 소스코드에서 선언이 되어있기 때문입니다.</p>
<p dir="ltr">      ■ 아래는 센서 상태를 원격으로 읽어 웹브라우져 상에 표시를 하고 있는 것입니다.</p>
<p style="text-align: center;"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱340.bmp" rel="lightbox[28027]"><img class="aligncenter  wp-image-28084" alt="29 금강초롱340" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱340.bmp" width="614" height="269" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;">      ■ 또한 시리얼모니터를 띄워 놓으면 아래와 같이 클라이언트(웹브라우저)가 접속해와 자료를 가져가고 있는 모습을 실시간으로 모니터링 할 수 있습니다.</p>
<p style="text-align: center;"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱341.bmp" rel="lightbox[28027]"><img class="aligncenter  wp-image-28085" alt="29 금강초롱341" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-금강초롱341.bmp" width="612" height="326" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;">
<p dir="ltr"><span style="font-size: large;"><strong>4. 마무리하기</strong></span></p>
<p dir="ltr">   지난 두어 달 간 에디슨보드를 친구삼아 행복한 시간을 보냈습니다. 에디슨보드는 한마디로 초소형 리눅스컴퓨터이며 블루투스와 와이파이를 통해 외부 세계와 소통할 수 있고 자신은 SPI, I2C, USART 등으로 외연을 확대할 수 있는 제품임에 틀림이 없습니다. 에디슨보드가 현장에서 사용될 때는 아마도 STM32F4시리즈나 라즈베리파이2 보드 등과 접전이 불가피해 보입니다. 에디슨보드가 가격에 있어서 특별히 크게 메리트 있어 보이지는 않으나 간단한 센싱과 인터넷에 연결되어 작동하는 상황을 가정해 본다면 이러한 조건에서는 다소간의 경쟁력은 있어 보입니다. 에디슨보드의 컴퓨팅파워를 적극 활용해 웹을 기반으로 동작되는 어플리케이션을 구성한다면 나름 상당히 유용하겠다는 생각이 듭니다. 에디슨보드를 웹상에서 구동하려 한다면 다소간의 지식들은 필요해 보입니다.</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="214" />
<col width="504" /></colgroup>
<tbody>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uc6f9\uc11c\ubc84 \uac1c\ub150&quot;]">웹서버 개념</td>
<td data-sheets-value="[null,2,&quot;3-Tier \uc544\ud0a4\ud14d\uccd0 \ub4f1 Http\uc11c\ube44\uc2a4\uac00 \uc774\ub904\uc9c0\ub294 \uae30\ubcf8 \uc6d0\ub9ac&quot;]"> 3-Tier 아키텍쳐 등 Http서비스가 이뤄지는 기본 원리</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;TCP/IP\uac1c\ub150&quot;]">TCP/IP개념</td>
<td data-sheets-value="[null,2,&quot;\ud074\ub77c\uc774\uc5b8\ud2b8(PC \uc6f9\ube0c\ub77c\uc6b0\uc838)\uc640 \uc11c\ubc84(\uc5d0\ub514\uc2a8\ubcf4\ub4dc)\uac04 \ud1b5\uc2e0\uccb4\uacc4&quot;]"> 클라이언트(PC 웹브라우져)와 서버(에디슨보드)간 통신체계</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;Html/css/java script&quot;]">Html/css/java script</td>
<td data-sheets-value="[null,2,&quot;html\ub85c \uc6f9\ud398\uc774\uc9c0\ub97c \uad6c\uc131\ud558\uace0 \uc11c\ube44\uc2a4\uac00 \uc774\ub904\uc9c0\ub294 \uc6d0\ub9ac&quot;]"> html로 웹페이지를 구성하고 서비스가 이뤄지는 원리</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;Linux&quot;]">Linux</td>
<td data-sheets-value="[null,2,&quot;\uc5d0\ub514\uc2a8 \ubcf4\ub4dc\uc758 \ub3d9\uc791\uc0c1\ud0dc \ubaa8\ub2c8\ud130\ub9c1 \ubc0f \ubb38\uc81c \ud574\uacb0&quot;]"> 에디슨 보드의 동작상태 모니터링 및 문제 해결</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uc544\ub450\uc774\ub178 \uc6b0\ub178&quot;]">아두이노 우노</td>
<td data-sheets-value="[null,2,&quot;IDE\uae30\ubc18\uc5d0\uc11c \uc544\ub450\uc774\ub178 \ud504\ub85c\uadf8\ub798\ubc0d, C\uc5b8\uc5b4 \ud578\ub4e4\ub9c1 \ub4f1&quot;]"> IDE기반에서 아두이노 프로그래밍, C언어 핸들링 등</td>
</tr>
<tr>
<td style="text-align: center;" data-sheets-value="[null,2,&quot;\uae30\ud0c0&quot;]">기타</td>
<td data-sheets-value="[null,2,&quot;\uc544\ub098\ub85c\uadf8/\ub514\uc9c0\ud138\ub85c\uc9c1, SPI, I2C, SD CARD, Power, USB, Serial \ub4f1 \uc774\ud574&quot;]"> 아나로그/디지털로직, SPI, I2C, SD CARD, Power, USB, Serial 등 이해</td>
</tr>
</tbody>
</table>
<p>이상으로 부족하나마 에디슨 보드에 대한 리뷰를 마칩니다.</p>
<div dir="ltr">
<p dir="ltr">감사합니다.</p>
<p dir="ltr">
<p dir="ltr"><span style="font-size: large;"><strong>  5. 참고</strong></span></p>
<p dir="ltr">  · https://www-ssl.intel.com/content/www/us/en/do-it-yourself/downloads-and-documentation.html</p>
<p dir="ltr">  · https://communities.intel.com/message/264386#264386</p>
<p dir="ltr">  · https://communities.intel.com/docs/DOC-23192</p>
<p dir="ltr">  · https://communities.intel.com/community/makers/edison/getting-started</p>
<p dir="ltr">  · https://communities.intel.com/message/264386#264386</p>
<p dir="ltr">  · http://blog.microcasts.tv/2014/10/16/edison-mini-breakout-the-rea l-getting-started-guide</p>
<p dir="ltr">  · 아두이노 우노 스펙 : http://arduino.cc/en/Main/ArduinoBoardUno</p>
<p dir="ltr">  · 아날로그 입력핀 : https://communities.intel.com/thread/57506</p>
<p dir="ltr">  · 1.8v To 3.3v 레벨 변환기 제작</p>
<p dir="ltr">    &#8211; https://learn.sparkfun.com/tutorials/bi-directional-logic-level -converter-hookup-guide</p>
<p dir="ltr">    &#8211; http://dlnmh9ip6v2uc.cloudfront.net/tutorialimages/BD-LogicLevelConverter/an97055.pdf</p>
<p dir="ltr">  · https://communities.intel.com/message/250732#250732</p>
<p dir="ltr">
</div>
</div>
<p>&nbsp;</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="193" />
<col width="485" /></colgroup>
<tbody>
<tr>
<td style="text-align: center; background-color: #9acd32;" rowspan="1" colspan="2" align="center" valign="middle" data-sheets-value="[null,2,&quot;\uc800\uc790\uc18c\uac1c&quot;]"><span style="font-size: medium;"><strong>저자소개</strong></span></td>
</tr>
<tr>
<td> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/99번.jpg" rel="lightbox[28027]"><img class="aligncenter size-thumbnail wp-image-28086" alt="99번" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/99번-150x150.jpg" width="150" height="150" /></a></td>
<td data-sheets-value="[null,2,&quot;\uc81c\uc791, \uc0ac\uc9c4, \uae00 : \uae08\uac15\ucd08\ub871 \uac1d\uc6d0\uae30\uc790 \n\n\n\ud55c\uad6d \ub9c8\uc0ac\ud68c \uc815\ubcf4\uae30\uc220\ucc98 \uadfc\ubb34\n\n\ub124\uc774\ubc84 \ube14\ub85c\uadf8 blog.naver.com/crucian2k3 \uc6b4\uc601 \uc911&quot;]">제작, 사진, 글 : 금강초롱 객원기자&nbsp;</p>
<p>한국 마사회 정보기술처 근무</p>
<p>네이버 블로그 blog.naver.com/crucian2k3 운영 중</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><a href="http://www.devicemart.co.kr/1247051">[기획상품] Intel® Edison Kit for Arduino + Wooden Case</a></p>
<p><a href="http://www.devicemart.co.kr/1160269">Intel® Edison Kit for Arduino</a></p>
<p><a href="http://www.devicemart.co.kr/1160267">Intel® Edison Breakout Board</a></p>
<p><a href="http://www.devicemart.co.kr/1160265">Intel® Edison</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/28027/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2채널 핸디형 오실로스코프 추천. OWON HDS1022M-N</title>
		<link>http://www.ntrexgo.com/archives/1234</link>
		<comments>http://www.ntrexgo.com/archives/1234#comments</comments>
		<pubDate>Fri, 08 Mar 2013 01:46:47 +0000</pubDate>
		<dc:creator>NTRexLAB</dc:creator>
				<category><![CDATA[디바이스마트 미디어]]></category>
		<category><![CDATA[제품 리뷰]]></category>
		<category><![CDATA[2채널]]></category>
		<category><![CDATA[OWON]]></category>
		<category><![CDATA[리뷰]]></category>
		<category><![CDATA[오실로스코프]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=1234</guid>
		<description><![CDATA[
(본 글은 pinkwink.kr에도 동기 기고되는 글입니다.)
이번에는 오실로스코프 하나를 소개할려고 합니다. Owon이라고 하는 중국 회사의 제품입니다. 다양한 모델이 라인업되어 있어서 몽땅 소개하기는 어렵고, 하나를 표본삼에 소개할까 합니다. OWON의 HDS1022M-N이라는 제품인데요. 기본 사양을 먼저 살짝 소개하겠습니다.



OWON HDS1022M-N
Bandwidth 20MHz
Sample rate 100MS/s
Horizontal Scale 5ns/div ~ 100s/div
Rise time &#60;17.5ns @ input, typical
Channels Dual
Display 3.7 inch
Dimension 180*115*40 (mm)



이렇습니다. 일단 20MHz 대역의 밴드폭이니 보급형이라고 보실 수 있습니다. 그러나 같은 보급형이라고 하더라도, 이 정도 대역이면 어마어마한 전력이나 노이즈를 다루는 경우가 아니라 MCU 정도 레벨에서 연구 및 학습을 하시는 거라면 충분히 사용할만 합니다. 특히, 동급에 비해 어마어마한 가격의 매력(50만원대)을 가지면서, 또 그 기능도 괜찮기 때문이지요.
일단, 2채널 오실로스코프, 디지털 멀티미터...]]></description>
				<content:encoded><![CDATA[<p align="justify">
<p align="justify">(본 글은 pinkwink.kr에도 동기 기고되는 글입니다.)</p>
<p align="justify">이번에는 오실로스코프 하나를 소개할려고 합니다. Owon이라고 하는 중국 회사의 제품입니다. 다양한 모델이 라인업되어 있어서 몽땅 소개하기는 어렵고, 하나를 표본삼에 소개할까 합니다. OWON의 HDS1022M-N이라는 제품인데요. 기본 사양을 먼저 살짝 소개하겠습니다.</p>
<div align="justify">
<hr />
</div>
<p align="justify">OWON HDS1022M-N<br />
Bandwidth 20MHz<br />
Sample rate 100MS/s<br />
Horizontal Scale 5ns/div ~ 100s/div<br />
Rise time &lt;17.5ns @ input, typical<br />
Channels Dual<br />
Display 3.7 inch<br />
Dimension 180*115*40 (mm)</p>
<div align="justify">
<hr />
</div>
<p align="justify">이렇습니다. 일단 20MHz 대역의 밴드폭이니 보급형이라고 보실 수 있습니다. 그러나 같은 보급형이라고 하더라도, 이 정도 대역이면 어마어마한 전력이나 노이즈를 다루는 경우가 아니라 MCU 정도 레벨에서 연구 및 학습을 하시는 거라면 충분히 사용할만 합니다. 특히, 동급에 비해 어마어마한 가격의 매력(50만원대)을 가지면서, 또 그 기능도 괜찮기 때문이지요.</p>
<p align="justify"><strong>일단, 2채널 오실로스코프, 디지털 멀티미터 기능을 같이 가지고 있으면서, PC에 USB를 통해 연결해서 오실로스코프를 조작하고 그 데이터를 받아올 수도 있습니다. 그러면서 또한 쉽게 들고 다닐 수 있는 핸디형입니다. 그런데도 50만원대 가격이라면&#8230;. 흠&#8230; 괜춘하군&#8230;^^. 이라고 말 할 수 있지용.^^.</strong></p>
<p align="justify"><a href="http://devicemart.co.kr/goods/view.php?seq=27542" target="_blank"><strong>판매페이지바로가기</strong></a></p>
<p align="justify">
<p align="justify">일단, 간단히 소개를 해볼까용??^^</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/101.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" title="101" alt="101" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/101_thumb.jpg" width="504" height="423" border="0" /></a></p>
<p align="justify">
<p align="justify">박스 포장 상태입니다. 무난하고, 내용물에 대한 안내도 있네요^^</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/102.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" title="102" alt="102" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/102_thumb.jpg" width="504" height="494" border="0" /></a></p>
<p align="justify">
<p align="justify">그걸 열면, 이렇게 알루미늄 케이스가 나타납니다.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/103.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border-width: 0px" title="103" alt="103" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/103_thumb.jpg" width="504" height="433" border="0" /></a></p>
<p align="justify">
<p align="justify">열면 요렇게 잘 포장되어있지요. 뒤의 키보드랑 비교하면 제품의 크기가 손에 들기에 적당하다는 걸 알 수 있습니다.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/104.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="104" alt="104" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/104_thumb.jpg" width="504" height="339" border="0" /></a></p>
<p align="justify">
<p align="justify">또하나 놀랄만한건 이 가격의 제품인데도, 필요한 케이블 및 엑세사리가 모두 들어 있습니다. 응? 당연한거 아닌가? 하시겠지만, 아닙니다. 전 학생때 꽤 많은 계측기를 구매해 봤었는데요. 기본적인 프루브와 전원선을 제외하고 나며지 악세사리는 옵션으로 구매하게끔 해두는 경우도 많이 봤습니다.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/105.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="105" alt="105" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/105_thumb.jpg" width="504" height="646" border="0" /></a></p>
<p align="justify">
<p align="justify">처음 부팅될때 화면입니다. 그럼 이제 제품이 잘 동작하는지 확인해야죠. 오실로스코프같은 애들을 확인할려면 뭐 어떻게 할까&#8230; 망설일 필요없습니다. 대부분의 오실로스코프는 자체적으로 테스트를 할 수 있도록 배려하고 있습니다.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/106.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="106" alt="106" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/106_thumb.jpg" width="504" height="327" border="0" /></a></p>
<p align="justify">
<p align="justify">2채널짜리니까 저렇게 둘 다 연결하구용</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/107.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="107" alt="107" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/107_thumb.jpg" width="504" height="344" border="0" /></a></p>
<p align="justify">
<p align="justify">제품에 포함되어있는 테스트 연결용 단자를 오실로스코프에 연결하고, 두 프루브중 하나만 GND에 연결하시면 됩니다. 그러면 당연히 오실로스코프 화면에는</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/108.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="108" alt="108" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/108_thumb.jpg" width="504" height="354" border="0" /></a></p>
<p align="justify">
<p align="justify">요렇게 뜰겁니다.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/109.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="109" alt="109" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/109_thumb.jpg" width="504" height="350" border="0" /></a></p>
<p align="center">
<p align="justify">화면만 보면 이렇게 1ch, 2ch의 파형이 나타나지요. 테스트 단자의 출력파형이 잘 나타나는 것을 알 수 있습니다. 오실로스코프 이상없음&#8230; 이라고 할 수 있네요.</p>
<p align="justify">
<p align="justify">근데&#8230; 요기서 끝내면, 이왕 소개하는거 좀 모자라죠&#8230; ㅋㅋㅋ 그래서 요 제품을 PC에 USB로 한번 물려보겠습니다.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/110.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="110" alt="110" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/110_thumb.jpg" width="504" height="281" border="0" /></a></p>
<p align="justify">
<p align="justify">추가로, 위에 있는 두번째 단자인 USB단자와 PC를 연결하시면됩니다. 단, 그전에 PC측에 프로그램을 다운받아야죠^^</p>
<p align="justify">OWON의 제품 지원 페이지[<a href="http://www.owon.com.hk/down-en.asp?bigclassname=Drivers_Download" target="_blank">바로가기</a>]에 가시면 됩니다.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/201.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="201" alt="201" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/201_thumb.jpg" width="504" height="244" border="0" /></a></p>
<p align="justify">
<p align="justify">여기서 보시면, Win7까지 지원하고 있다는 것을 알 수 있어요. 그중 OWON_Oscilloscope 프로그램이 버젼이 2.0.8.11이 있네요. 받아서 설치합니다. 그기가 50MB가 좀 넘어요..</p>
<p align="justify">그리고 프로그램을 설치하고, 오실로스코프의 USB단자를 연결하면 간혹 처음이라면 USB장치인식 실패라는 말이 뜰겁니다. 그러면,</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/202.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="202" alt="202" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/202_thumb.jpg" width="504" height="314" border="0" /></a></p>
<p align="center">
<p align="justify">설치된 프로그램 폴더에 가서 USBDRV라는 위 그림의 위치로 가시면 USB 드라이버를 설치할 수 있습니다. 혹은 장치관리자에서 드라이버 수동업데이트를 선택하시고, 위 폴더를 지정하셔도 됩니다.</p>
<p align="justify">
<p align="justify">아무튼 그렇게 PC 쪽 프로그램도 다 설치했다면</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/001.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="001" alt="001" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/001_thumb.jpg" width="504" height="358" border="0" /></a></p>
<p align="center">
<p align="justify">요런 아이가 뜰겁니다. 우측 하단에 check USB가 빨간거 보이시죠?</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/002.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="002" alt="002" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/002_thumb.jpg" width="504" height="358" border="0" /></a></p>
<p align="justify">
<p align="justify">요렇게 녹색이 되어야 PC와 오실로스코프가 잘 연결된겁니다.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/003.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="003" alt="003" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/003_thumb.jpg" width="504" height="356" border="0" /></a></p>
<p align="justify">
<p align="justify">위에 표시된 아이콘이 Continue Data Download라는 기능인데요. 요걸 누르면 처음인 경우 몇몇 설정창이 뜨긴 하지만, 바로 현재 오실로스코프의 화면이 넘어옵니다. 위 그림처럼 말이죵^^</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/004.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="004" alt="004" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/004_thumb.jpg" width="504" height="469" border="0" /></a></p>
<p align="justify">
<p align="justify">오실로스코프에서도 당연히 되는 기능입니다만, PC에서도 됩니다^^. MATH를 선택하면, 두 채널의 신호에 대한 4칙연산의 결과도 보여주고</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/005.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="005" alt="005" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/005_thumb.jpg" width="504" height="489" border="0" /></a></p>
<p align="justify">
<p align="justify">이렇게 신호의 FFT 결과도 보여줍니다. 그런데&#8230; 음&#8230; 결과파형과 x,y축 grid와의 관계는 눈에 잘 안들어오더군요. 뭐 처음 개봉한거니, 살짝 더 봐야겠지요.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/006.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="006" alt="006" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/006_thumb.jpg" width="504" height="562" border="0" /></a></p>
<p align="justify">
<p align="justify">PC화면의 선을 더블클릭하면 원하는 색상으로도 바뀌구요</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/007.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="007" alt="007" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/007_thumb.jpg" width="504" height="354" border="0" /></a></p>
<p align="justify">
<p align="justify">심지어, 위에 표시된 Data Table이라는 아이콘을 누르면, 저렇게 테이블로도 나와서 엑셀등에서 읽을 수도 있습니다.</p>
<p align="justify">
<p align="center"><a class="thickbox" href="http://www.ntrexgo.com/wp-content/uploads/2013/03/008.jpg" rel="lightbox[1234]"><img style="padding-left: 0px;padding-right: 0px;padding-top: 0px;border: 0px" title="008" alt="008" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/008_thumb.jpg" width="504" height="448" border="0" /></a></p>
<p align="justify">
<p align="justify">이건 print preview를 한겁니다. 파형에 대한 설명도 나타나 있는 것을 알 수 있죠. 각 종 발표자료를 꾸밀때 유용할 겁니다.</p>
<p align="justify">이렇게 오늘 소개할 오실로스코프에 대한 내용이 끝났네요. 아주아주 고급형 성능이 필요하지 않다면, 50만원대의 2채널 핸디형 오실로스코프로도 충분히 괜찮은 결과가 나올것 같아요.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/1234/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>팝(pop) 너트를 이용해서 간단히 기계적인 조립을 해결하자</title>
		<link>http://www.ntrexgo.com/archives/679</link>
		<comments>http://www.ntrexgo.com/archives/679#comments</comments>
		<pubDate>Thu, 28 Feb 2013 04:12:59 +0000</pubDate>
		<dc:creator>NTRexLAB</dc:creator>
				<category><![CDATA[제품 리뷰]]></category>
		<category><![CDATA[pop-nut]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[리뷰]]></category>
		<category><![CDATA[사용기]]></category>
		<category><![CDATA[팝너트]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=679</guid>
		<description><![CDATA[(본 글은 PinkWink 블로그 중복 개제하는 것임을 미리 밝힙니다. 또한, ntrexgo 사이트의 베타 테스트의 성격을 함께 가집니다.)
이럴때 편히 쓸 수 있는 것이 있습니다. 바로 팝(pop) 너트, 혹은 블라인드(blind) 너트라고 부르는 건데요.
이렇게 생겼습니다. 너트처럼 생겼는데 좀 이상하죠. 저 주름있는 부분이 압착되는 것이 특징입니다.
이런 구멍이 그냥 뚫려있다면
이런 도구가 하나 필요합니다. 전동 드라이버에 연결하시면 되는데요
여기에 팝 너트를 끼우시구요
여긴 전동 드라이버 혹은 드릴에 끼우시면 됩니다.
&#160;
뭐.. 이런 모습이죠^^
그 끝에 팝너트를 끼우시면 됩니다.
그리고, 구멍에서 사삭 돌려주시면, 저렇게 주름 부분이 압착되면서 홀에 고정되고, 그리고나서 볼트를 끼우실 수 있습니다.
이런 모습이에요. 너트로 고정할 필요도 없이 그냥 탭가공이 어려운 얇은 곳이나, 또 혹은 실수로 탭가공을 하지 않은 곳에 쓸 수...]]></description>
				<content:encoded><![CDATA[<p>(본 글은 <a href="http://pinkwink.kr/519" target="_blank">PinkWink 블로그</a> 중복 개제하는 것임을 미리 밝힙니다. 또한, ntrexgo 사이트의 베타 테스트의 성격을 함께 가집니다.)</p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
로봇을 제작하다가 보면, 항상 사소한 것이 걸릴때가 있습니다. 로봇의 특성상 한 사람이 많은 분야를 두루 다루어야하기 떄문인데요. 제가 학생때는 항상 기계적인 부분이 걸렸죠. 그 중에서 당시 저희를 괴롭히던 것이 바로 볼트와 너트로 채결하는 부분의 마무리가 문제일때가 있었습니다. 탭을 잘 못 뚫는다든지, 볼트 너트로 조립하기 어렵다든지.. 뭐 이런거&#8230;.^^<br />
</div>
<p>이럴때 편히 쓸 수 있는 것이 있습니다. 바로 팝(pop) 너트, 혹은 블라인드(blind) 너트라고 부르는 건데요.</p>
<div id="attachment_680" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/027.jpg" rel="lightbox[679]"><img class="size-medium wp-image-680" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/027-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>이렇게 생겼습니다. 너트처럼 생겼는데 좀 이상하죠. 저 주름있는 부분이 압착되는 것이 특징입니다.</p>
<div id="attachment_681" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/029.jpg" rel="lightbox[679]"><img class="size-medium wp-image-681" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/029-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>이런 구멍이 그냥 뚫려있다면</p>
<div id="attachment_682" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/032.jpg" rel="lightbox[679]"><img class="size-medium wp-image-682" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/032-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>이런 도구가 하나 필요합니다. 전동 드라이버에 연결하시면 되는데요</p>
<div id="attachment_683" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/034.jpg" rel="lightbox[679]"><img class="size-medium wp-image-683" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/034-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>여기에 팝 너트를 끼우시구요</p>
<div id="attachment_684" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/036.jpg" rel="lightbox[679]"><img class="size-medium wp-image-684" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/036-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>여긴 전동 드라이버 혹은 드릴에 끼우시면 됩니다.</p>
<div id="attachment_685" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/038.jpg" rel="lightbox[679]"><img class="size-medium wp-image-685" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/038-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>&nbsp;</p>
<p>뭐.. 이런 모습이죠^^</p>
<div id="attachment_686" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/041.jpg" rel="lightbox[679]"><img class="size-medium wp-image-686" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/041-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>그 끝에 팝너트를 끼우시면 됩니다.</p>
<div id="attachment_687" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/043.jpg" rel="lightbox[679]"><img class="size-medium wp-image-687" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/043-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>그리고, 구멍에서 사삭 돌려주시면, 저렇게 주름 부분이 압착되면서 홀에 고정되고, 그리고나서 볼트를 끼우실 수 있습니다.</p>
<div id="attachment_688" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/045.jpg" rel="lightbox[679]"><img class="size-medium wp-image-688" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/045-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>이런 모습이에요. 너트로 고정할 필요도 없이 그냥 탭가공이 어려운 얇은 곳이나, 또 혹은 실수로 탭가공을 하지 않은 곳에 쓸 수 있죠.</p>
<div id="attachment_689" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/047.jpg" rel="lightbox[679]"><img class="size-medium wp-image-689" alt="팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/047-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">팝너트</p></div>
<p>물론 볼트도 잘 들어가구요^^</p>
<div id="attachment_690" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/049.jpg" rel="lightbox[679]"><img class="size-medium wp-image-690" alt="장착된 팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/049-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">장착된 팝너트</p></div>
<p>조금만 연습해서 숙련되면 저렇게 모양도 괜찮습니다.^^</p>
<div id="attachment_691" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/051.jpg" rel="lightbox[679]"><img class="size-medium wp-image-691" alt="장착된 팝너트" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/051-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">장착된 팝너트</p></div>
<p>주름부분이 저렇게 마무리되는 것을 알 수 있죠.^^</p>
<p>물론 일반적인 볼트-너트보다야 비쌉니다만, 필요할때, 순간순간 사용하기 좋은 것 같아서 소개합니다.^^</p>
<p>아 당연히 어디서 구할 수 있는지를 먼저 알아야죠^^</p>
<blockquote><p>팝너트는 디바이스마트 팝너트 카테고리에서 구할 수 있습니다. [<a href="http://www.devicemart.co.kr/goods/list.php?category=006007011" target="_blank">바로가기</a>]
<p>그리고, 팝너트를 고정하는 도구도 역시 디바이스마트에서 구할 수 있습니다. [<a href="http://www.devicemart.co.kr/goods/view.php?seq=34338" target="_blank">바로가기</a>]</blockquote>
<p>모두들.. 즐거운 작업 되세용^^</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/679/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
