<?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; Arduino</title>
	<atom:link href="http://www.ntrexgo.com/archives/tag/arduino/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>[56호]IoT, Arduino 및 무선 솔루션을 배울 수 있는 ESP8266 Thing Dev 스타터 키트</title>
		<link>http://www.ntrexgo.com/archives/37517</link>
		<comments>http://www.ntrexgo.com/archives/37517#comments</comments>
		<pubDate>Thu, 03 Oct 2019 07:19:23 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[56호]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ESP8266 Thing Dev]]></category>
		<category><![CDATA[IOT]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[스타터키트]]></category>
		<category><![CDATA[스파크펀]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=37517</guid>
		<description><![CDATA[디바이스마트매거진 56호 &#124; IoT, Arduino 및 무선 솔루션을 배울 수 있는 ESP8266 Thing Dev 스타터 키트가 출시되었다.]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="https://lh6.googleusercontent.com/1y3E4_ZNp8oF9EpAbB9aWD2glwg9_4uC_rmcdbDrk-kUd8GTfJ7kKD5QhwI8jHuZqIuU1keIVdZLnRVgGN600kdswGkYBe5Ezp5n5jGJ1T0r4Z7m7vxo_3KWvb6Dvax4eqajKQPB" width="362" height="362" /></p>
<p><strong><span style="color: #ffffff; background-color: #000000;">SparkFun </span></strong></p>
<p><strong><span style="font-size: x-large;">IoT, Arduino 및 무선 솔루션을 배울 수 있는 ESP8266 Thing Dev 스타터 키트</span></strong></p>
<p>스파크펀에서 아두이노를 시작하기에 적합 한 ESP8266 Thing Dev 스타터 키트를 출시 했다. 이 키트는 아두이노 공부에 앞서 필요 한 부품들을 개별적으로 구매했던 번거로움을 덜어주며, ESP8266 Thing Dev (USB 케이블 포함), 점퍼 와이어, 브레드보드, LED 및 다양 한 헤더로 구성되어 IoT, Arduino 및 무선 솔 루션에 대해 배우고 싶은 사용자에게 적합하다. ESP8266 Thing Dev는 FTDI USB-toSerial 칩이 통합된 ESP8266을 중심으로 개 발된 개발 보드로 합리적인 가격과 뛰어난 성 능을 갖춘 WiFi지원 마이크로 컨트롤러가 사 용되었다. 모든 마이크로 컨트롤러와 마찬가지 로 LED를 깜박이거나, 릴레이 / 센서를 모니 터링할 수 있으며, WiFi 지원이 가능하기에 인 터넷 연결이 필요한 프로젝트에 사용이 가능 하다. 펌웨어는 Arduino에서 개발할 수 있으며 간 단한 직렬 인터페이스를 통해 업로드할 수 있 다. 누구나 사용할 수 있는 이 키트의 자세한 내용과 사용법은 디바이스마트를 통해 확인할 수 있다.</p>
<p><a href=" http://www.devicemart.co.kr/goods/view?no=12234068"><span style="color: #0000ff;"> ESP8266 Thing Dev 스타터 키트 보러가기</span></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/37517/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[46호]IoT 프로젝트를 위한 솔루션, Arduino MKR1000 WIFI 출시</title>
		<link>http://www.ntrexgo.com/archives/34885</link>
		<comments>http://www.ntrexgo.com/archives/34885#comments</comments>
		<pubDate>Mon, 22 Jan 2018 00:00:21 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[36호]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[NEWS]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[아두이노]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=34885</guid>
		<description><![CDATA[디바이스마트 매거진 46호 &#124; 현재 세계적으로 아두이노 또는 라즈베리파이를 활용한 메이커들의 프로젝트가 활발하게 진행중이다. ]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="http://www.devicemart.co.kr/skin/goods/large/1361037.jpg" /></p>
<p><span style="background-color: #000000;color: #ffffff"><strong>Arduino</strong></span></p>
<p><span style="font-size: large"><strong>IoT 프로젝트를 위한 솔루션, Arduino MKR1000 WIFI 출시</strong></span></p>
<p><strong><span style="color: #0000ff">아두이노의 가능성, 와이파이의 자유로움을 단 하나의 보드로!</span></strong></p>
<p>현재 세계적으로 아두이노 또는 라즈베리파이를 활용한 메이커들의 프로젝트가 활발하게 진행중이다. 특히, 어디에서나 활용할 수 있도록 무선(Wireless) 통신을 활용하는 경우가 최근에는 더욱 인기를 끌고있어 WiFi, Bluetooth 등의 무선 관련 제품들이 반응이 좋다. 어떤 기구나 장치에 부착하는 경우도 있지만, 어디서나 휴대가 가능하도록 더 작게, 더 가볍게, 더 간단하게 작동시킬 수 있는 제품들은 이런 면에서 더욱 수요가 높다.</p>
<p>무언가를 만들고 싶어하는 모든 이들을 ‘메이커’로, 누구나 손쉽게 나만의 프로젝트를 시작해 볼 수 있는 세계를 열어준 것으로 평가받는 이탈리아의 Arduino 社는, 기존의 Arduino Uno, Mega 등의 스테디 셀러 제품들 외에도, 보다 더 새롭고, 보다 더 유용한 제품들을 지속적으로 개발하고 있다. 그런 꾸준한 연구의 한 결과물로, 기존의 Arduino Zero와 Wi-Fi Shield의 기능을 결합한 Arduino MKR1000 WIFI(이하 MKR1000)가 출시되었다.</p>
<p>IoT 프로젝트를 위한 실용적인 솔루션을 제공할 MKR1000 와이파이 제품은 핀헤더소켓이 납땜된 버전(상품명 : Arduino MKR1000 WIFI (with Headers Mounted), 상품코드 : 1361037)과 핀헤더소켓이 납땜되지 않은 버전(상품명 : Arduino MKR1000 WIFI, 상품코드 : 1360944)으로 구분된다.</p>
<p>이 제품은 Atmel SAMD21 Cortex-M0+ 32비트 저전력 ARM MCU, WINC1500 저전력 2.4GHz IEEE® 802.11 b/g/n Wi-Fi 칩셋이 통합되었으며, 특히 ECC508 CryptoAuthentication이 통합되어 최근 이슈가 되고있는 보안 관련 프로젝트에도 활용할 수 있는 Atmel社의 ATSAMW25 SoC(System On Chip) 기반 제품이다. 또한 ATSAMW25은 PCB 안테나를 내장해 별도의 외장안테나 없이도 기본적인 무선 프로젝트에 활용할 수 있고, 보드에 Li-Po 충전 회로를 내장하고 있어 5V 배터리를 통해 전원을 공급하거나 외장 전원을 활용하면서 Li-Po 배터리를 충전할 수 있다.</p>
<p>다만 다른 아두이노/제누이노 보드들과는 달리, MKR1000은 Logic 3.3V로, I/O 핀 역시 최대 3.3V까지만(과전압 금지) 입력 가능하다. 그렇기때문에 5V 디지털 장치로의 출력은 가능하지만, 5V 장치와의 양방향 통신은 적절한 레벨 시프팅이 필요하다. VIN 핀을 통한 5V 이상의 입력도 권장되지 않는다.<br />
제품에 대한 더 자세한 내용은 디바이스마트 홈페이지, Arduino Store에서 확인할 수 있다.</p>
<p><strong>제품사양</strong><br />
· Microcontroller : SAMD21 Cortex-M0+ 32bit low power ARM MCU<br />
· Board Power Supply (USB/VIN) : 5V<br />
· Supported Battery(*) : Li-Po single cell, 3.7V, 700mAh minimum<br />
· Circuit Operating Voltage : 3.3V<br />
· Digital I/O Pins : 8<br />
· PWM Pins : 12 (0, 1, 2, 3, 4, 5, 6, 7, 8, 10, A3 &#8211; or 18 -, A4 -or 19)<br />
· DC Current per I/O Pin : 7mA<br />
· Flash Memory : 256 KB<br />
· Lenght : 61.5mm<br />
· Width : 25mm<br />
· Weight : 32g</p>
<p>&nbsp;</p>
<p><a href="http://www.devicemart.co.kr/1361037" target="_blank">Arduino MKR1000 WIFI (with Headers Mounted) 제품 구매하러가기</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/34885/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[45호]Arduino Zero &amp; Arduino MKR Zero 출시</title>
		<link>http://www.ntrexgo.com/archives/34439</link>
		<comments>http://www.ntrexgo.com/archives/34439#comments</comments>
		<pubDate>Sat, 25 Nov 2017 00:00:29 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[45호]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[NEWS]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[아두이노]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=34439</guid>
		<description><![CDATA[디바이스마트매거진 45호 &#124; Arduino.cc 에서는 최근 Arduino UNO와 같은 플랫폼을 사용하지만, 강력한 32비트 확장 기능을 지원하는 Atmel SAMD21 MCU 기반의 Arduino Zero 및 Arduino MKR Zero를  출시하였다. ]]></description>
				<content:encoded><![CDATA[<p><span style="color: #ffffff;background-color: #000000"><strong>Arduino</strong></span></p>
<p><span style="font-size: x-large"><strong>다양한 메이커 프로젝트에 활용 가능한 </strong></span></p>
<p><span style="font-size: x-large"><strong>Arduino Zero &amp; Arduino MKR Zero 출시</strong></span></p>
<p>&nbsp;</p>
<p>Arduino.cc 에서는 최근 Arduino UNO와 같은 플랫폼을 사용하지만, 강력한 32비트 확장 기능을 지원하는 Atmel SAMD21 MCU 기반의 Arduino Zero 및 Arduino MKR Zero를  출시하였다. 두 제품은 32비트 응용 프로그램 개발을 배우기 위한 교육용 보드로써 역할을 충실히 한다.</p>
<table border="0">
<tbody>
<tr>
<td><img style="color: #333333;font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: 13px" alt="" src="http://www.devicemart.co.kr/skin/goods/large/1360946.jpg" width="300" /></td>
<td><img style="color: #333333;font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: 13px" alt="" src="http://www.devicemart.co.kr/skin/goods/large/1360942.jpg" width="300" /></td>
</tr>
<tr>
<td style="text-align: center">Arduino Zero</td>
<td style="text-align: center"> <span>Arduino MKR ZERO</span></td>
</tr>
</tbody>
</table>
<p>일반적인 아두이노 보드와는 달리 3.3V에서 작동하며 micro-USB 케이블로 컴퓨터에 연결하거나 배터리로 전원을 공급한다.  Arduino Zero의 차별점은 메이커들이 스마트 IoT 장치, 웨어러블, 자동화, 로봇 등의 아두이노 프로젝트에 활용할 수 있다는 점이다.</p>
<p>중요한 기능 중 하나는 Atmel의 Embedded Debugger (EDBG) 를 갖추고 있어 추가 하드웨어 없이 완전한 디버그 인터페이스를 지원해 디버깅을 쉽게 할 수 있다. 또한 가상 컴포트를 지원해 장치 및 부트 로더 프로그래밍에 사용할 수 있다.</p>
<p>Arduino MKR Zero는 별도의 하드웨어 없이 음악 파일을 재생 가능한 전용 SPI 인터페이스가 있는 온보드 SD 커넥터를 갖추고 있다. 현재 Arduino Zero &amp; Arduino MKR Zero는 디바이스마트(www.devicemart.co.kr)에서 판매하고 있으며 자세한 정보를 확인해볼 수 있다.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.devicemart.co.kr/1360946#" target="_blank">Arduino Zero 제품 구매하러 가기</a></p>
<p><a href="http://www.devicemart.co.kr/1360942" target="_blank">Arduino MKR ZERO 제품 구매하러 가기</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/34439/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[43호] 아두이노로 만드는 사물인터넷(IoT), Arduino LUCKY SHIELD 출시</title>
		<link>http://www.ntrexgo.com/archives/33708</link>
		<comments>http://www.ntrexgo.com/archives/33708#comments</comments>
		<pubDate>Tue, 25 Jul 2017 00:00:31 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[43호]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[NEWS]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[아두이노]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=33708</guid>
		<description><![CDATA[
Arduino
아두이노로 만드는 사물인터넷(IoT), 
Arduino LUCKY SHIELD 출시
&#160;
사물인터넷(IoT)이 활성화되는 것을 넘어서 오픈소스로 누구나 사물과 사물을 연결할 수 있는 시대이다. 마음만 먹으면 단 5일 만에 실생활에서 원하는 사물인터넷(IoT) 전자제품을 직접 제작할 수 있다고 한다.
Arduino에서 제품명 그대로 운이 좋은 “Arduino LUCKY SHIELD”가 출시되었다. 대기압, 자세제어, 밝기, 온도, 모션, 온습도 등 대부분의 센서와 릴레이, 부저, 조이스틱까지 모두 통합으로 구성되어 보다 편리하게 IoT를 구현할 수 있다. 또한 간단한 컨트롤러와 OLED 디스플레이 시스템으로 변경할 수 있어 IoT를 위한 최적화된 제품이다. 실드는 외부 전원을 필요로 하지 않으며 PCB의 최대 길이와 폭은 각각 2.7, 2.1인치 (68.6X53.4 mm)이다. 아두이노 보드 5V, 3.3V 표준과 호환이 가능하다.
각종 여러 센서와 장비들을 아두이노...]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="http://www.devicemart.co.kr/skin/goods/large/1342048.jpg" /></p>
<p><span style="background-color: #000000;color: #ffffff"><strong>Arduino</strong></span></p>
<p><span style="font-size: x-large"><strong>아두이노로 만드는 사물인터넷(IoT), </strong></span></p>
<p><span style="font-size: x-large"><strong>Arduino LUCKY SHIELD 출시</strong></span></p>
<p>&nbsp;</p>
<p>사물인터넷(IoT)이 활성화되는 것을 넘어서 오픈소스로 누구나 사물과 사물을 연결할 수 있는 시대이다. 마음만 먹으면 단 5일 만에 실생활에서 원하는 사물인터넷(IoT) 전자제품을 직접 제작할 수 있다고 한다.<br />
Arduino에서 제품명 그대로 운이 좋은 “Arduino LUCKY SHIELD”가 출시되었다. 대기압, 자세제어, 밝기, 온도, 모션, 온습도 등 대부분의 센서와 릴레이, 부저, 조이스틱까지 모두 통합으로 구성되어 보다 편리하게 IoT를 구현할 수 있다. 또한 간단한 컨트롤러와 OLED 디스플레이 시스템으로 변경할 수 있어 IoT를 위한 최적화된 제품이다. 실드는 외부 전원을 필요로 하지 않으며 PCB의 최대 길이와 폭은 각각 2.7, 2.1인치 (68.6X53.4 mm)이다. 아두이노 보드 5V, 3.3V 표준과 호환이 가능하다.<br />
각종 여러 센서와 장비들을 아두이노 보드에 따로 부착해야 했지만, 이런 번거로움 없이 센서들을 잘 활용하여 다양한 나만의 DIY 프로젝트에 사용할 수 있다.<br />
현재 디바이스마트 홈페이지(http://www.devicemart.co.kr/)에서 구매 가능하다.<br />
상세 사양은 다음과 같다.</p>
<p><span style="color: #0000ff"><strong>상세 사양</strong></span><br />
· 작동 전압 : 3.3VDC / 5VDC<br />
· LEDs: POWER(Green), LED1(Yellow), LED2(Yellow)<br />
· 조이스틱: 5방향 택트 스위치<br />
· 부저: MINIMUM SPL 90dBA RESONANT FREQUENCY 500 Hz<br />
· 릴레이: 최소 50000(NC) at 250VAC, 8A (저항 로드) 최소 50000 at 30VDC, 5A (저항 로드)<br />
· PIR 센서: 캡슐형 TO5 스펙트럼 응답 7~14μm, 투과율≥77%, 필드뷰 139º<br />
· 조도 센서: 최대 감도 파장 630nm, 작동 온도 -40 ~ +85°C<br />
· 온습도: 작동 온도 -40 ~ +85°C<br />
· 압력 센서: 작동 압력 범위 300 ~ 1100hPa<br />
· 자력계: E-나침반, 전체 범위 ±1000T, 출력 데이터 범위 (ODR) up to 80Hz<br />
· 가속도: G-센서, 초고속 데이터 출력 시간, ~700μs ±8g 전체 범위 3축, 45° 경사 출력</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><span style="color: #0000ff">Overview</span></h3>
<p>Arduino Lucky Shield is an easy way to use your Arduino boards, that grants you access to barometric pressure, relative altitude, luminosity, temperature, motion and presence. You can also turn it into a simple controller and OLED display system. It is the perfect shield for IoT.</p>
<p>Recently a restyling of the shield has been made. However the board maintained the same features.</p>
<p><strong>Warning:</strong><br />
If you want to use the <a href="http://www.arduino.org/downloads">Arduino IDE 1.8.x</a> then download the <a href="http://www.arduino.org/learning/reference/Lucky">Lucky library</a> and <a href="http://www.arduino.org/learning/reference/how-to-import-a-library-on-the-arduino-ide-1-8-x">import it into the IDE</a>.<br />
You can download it <a href="http://www.arduino.org/images/Arduino_Lucky_shield_master.zip">here</a>.</p>
<div>
<table>
<tbody>
<tr>
<th colspan="2">FEATURES</th>
</tr>
<tr>
<td>Relays</td>
<td>OMRON G6RL-1 (5V DC)</td>
</tr>
<tr>
<td>PIR Sensor</td>
<td>MOSDESIGN M7616</td>
</tr>
<tr>
<td>Ambient Light Sensor</td>
<td>EVERLIGHT ALS-PT19-315C/L177/TR8</td>
</tr>
<tr>
<td>Humidity Sensor</td>
<td>BOSCH SENSORTEC BME 280</td>
</tr>
<tr>
<td>Temperature Sensor</td>
<td>BOSCH SENSORTEC BME 280</td>
</tr>
<tr>
<td>Pressure sensor</td>
<td>BOSCH SENSORTEC BME 280</td>
</tr>
<tr>
<td>3-axis magnetometer</td>
<td>NXP MAG3110</td>
</tr>
<tr>
<td>3 Axis accelerometer</td>
<td>NXP MMA8491Q</td>
</tr>
<tr>
<td>Buzzer</td>
<td>PUI AUDIO SMT-0927-S-6-R</td>
</tr>
<tr>
<td>Joystick</td>
<td>5-directional tact switch</td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<th colspan="2">GENERAL</th>
</tr>
<tr>
<td>Operating Voltage</td>
<td>3.3 V / 5 V</td>
</tr>
<tr>
<td>Extra</td>
<td>DogOLED support</td>
</tr>
<tr>
<td>PCB size</td>
<td>53 x 68.5 mm</td>
</tr>
<tr>
<td>Weight</td>
<td>0.054 Kg</td>
</tr>
<tr>
<td>Product Code</td>
<td>A000125</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h3><span style="color: #0000ff">Techniacal specifics</span></h3>
<p><strong>Operating voltage</strong>:  3.3 VDC / 5 VDC<br />
<strong>LEDs</strong>:  POWER (Green) . LED1 (Yellow) . LED2 (Yellow)<br />
<strong>Joystick</strong>: 5-directional tact switch<br />
<strong>Buzzer</strong>:  MINIMUM SPL   90 dBA RESONANT FREQUENCY  500 Hz<br />
<strong>Relay</strong>: 50000 operations min (NC) at 250VAC, 8A (resistive load) 50000 operations min at 30 VDC, 5A (resistive load)<br />
<strong>PIR sensor</strong>: Encapsulation type TO5, Spectral response 7~14μm, Transmittance ≥77%, Field of view 139º<br />
<strong>Ambient light sensor</strong>: Peak sensitivity wavelength 630nm , Operating temperature  -40 ~ +85°C<br />
<strong>Temperature / humidity</strong>: Operating temperature  -40 ~ +85°C<br />
<strong>Pressure sensor</strong>: Operating pressure range  300 ~ 1100 hPa<br />
<strong>Magnetometer</strong>: E-compass, Full-scale range ±1000 T, Output data rates (ODR) up to 80 Hz<br />
<strong>Accelerometer</strong>: G-sensor, Ultra-fast data output time, ~700 μs ±8g full-scale range 3-axis, 45° tilt outputs</p>
<p>&nbsp;</p>
<p><img alt="" src="http://static.arduino.org/images/software/Arduino-Lucky-Shield-schema.png" width="620" /></p>
<h5>Power</h5>
<div>The shield doesn&#8217;t need external power. It will be provided by the Arduino base board, through the 5V and 3.3V pins of the base.</div>
<h5>Physical Characteristics</h5>
<div>The maximum length and width of the Lucky Shield PCB are 2.7 by 2.1 inches,respectively (68.6 x 53.4 mm). Four screw holes allow the Shield to be attached to a surface or case. Note that the distance between digital pins 7 and 8 is 160 mil (0.16&#8243;), not an even multiple of the 100 mil spacing of the other pins.</div>
<h5>Compatible Boards</h5>
<div>The shield is compatible with all Arduino board 5V and 3.3V standards.</div>
<div></div>
<div></div>
<div></div>
<div>
<h3><span style="color: #0000ff">Documentation</span></h3>
<p>EAGLE files: <a href="http://download.arduino.org/products/LUCKY/SHIELD_LUCKY_V032_20150225-GERBER.pdf">arduino-Lucky-Shield-reference-design.zip</a><br />
<a href="http://www.arduino.org/images/Arduino-Lucky-Shield-Rev2-web.zip" target="_blank" rel="noopener noreferrer">arduino-Lucky-Shield-V2-reference-design.zip</a></p>
<p>Schematic: <a href="http://download.arduino.org/products/LUCKY/SHIELD_LUCKY_V032_20150224_SCH.pdf" target="_blank" rel="noopener noreferrer">arduino-Lucky-Shield-schematic.pdf</a><br />
<a href="http://www.arduino.org/images/Arduino_Lucky_Shield_V2_Schematic.zip" target="_blank" rel="noopener noreferrer">arduino_lucky-Shield-V2-schematic</a></p>
<p>&nbsp;</p>
<h3><span style="color: #0000ff">Learning</span></h3>
<div>
<div>Getting Started</div>
<div id="prod_learning">
<p><a href="http://www.arduino.org/learning/getting-started">Start with Arduino</a></p>
</div>
</div>
<div>
<div>Tutorials</div>
<div id="prod_learning">
<div id="k2ModuleBox373">
<ul>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/luckytest">LuckyTest</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/simplegpio">SimpleGPIO</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/presencealarm">PresenceAlarm</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/weatherstation">WeatherStation</a></li>
</ul>
<p><img alt="" src="http://www.devicemart.co.kr/skin/goods/detail/1342048_1.jpg" /></p>
<p>&nbsp;</p>
<p><img alt="" src="http://www.devicemart.co.kr/skin/goods/detail/1342048_2.jpg" /></p>
<p><img alt="" src="http://www.devicemart.co.kr/skin/goods/detail/1342048_3.jpg" /></p>
<p>&nbsp;</p>
<p><a href="http://www.devicemart.co.kr/1342048" target="_blank">Arduino LUCKY SHIELD 제품 구매하러 가기</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/33708/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[42호]ESP8266 와이파이를 내장한 아두이노 Uno, Arduino UNO WiFi 출시</title>
		<link>http://www.ntrexgo.com/archives/33406</link>
		<comments>http://www.ntrexgo.com/archives/33406#comments</comments>
		<pubDate>Thu, 25 May 2017 00:00:52 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[42호]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[NEWS]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=33406</guid>
		<description><![CDATA[디바이스마트매거진 42호 &#124; Arduino(Arduino.org 및 Arduino.cc)는 Atmega328P 마이크로컨트롤러와 ESP8266 WiFi 통합모듈을 탑재해 Arduino UNO와 와이파이를 하나의 보드로 통합한 “Arduino Uno WiFi”를 출시했다. 
]]></description>
				<content:encoded><![CDATA[<p><span style="background-color: #000000;color: #ffffff"><strong>  Arduino  </strong></span></p>
<p><span style="font-size: x-large"><strong>ESP8266 와이파이를 내장한 </strong></span></p>
<p><span style="font-size: x-large"><strong>아두이노 Uno, Arduino UNO WiFi 출시</strong></span></p>
<p><img alt="" src="http://www.devicemart.co.kr/skin/goods/large/1330985.jpg" /></p>
<p>Arduino(Arduino.org 및 Arduino.cc)는 Atmega328P 마이크로컨트롤러와 ESP8266 WiFi 통합모듈을 탑재해 Arduino UNO와 와이파이를 하나의 보드로 통합한 “Arduino Uno WiFi”를 출시했다.<br />
이 제품은 14개의 디지털 입/출력 핀헤더, 6개의 아날로그 입력 핀, 16MHz 세라믹 공진기(공명기), USB 포트, 전원 잭, ICSP 헤더, 그리고 Reset 버튼을 내장하고 있다. 또한 USB 케이블을 통해 간편하게 컴퓨터와 연결하거나, AC-DC 아답터 또는 배터리를 활용해 쉽게 전원을 공급할 수 있는 등 마이크로컨트롤러를 활용하는데 필요한 것들을 모두 내장하고 있다.<br />
특히 Arduino Uno Wi-Fi의 가장 유용한 기능 중 하나는 OTA (over-the-air) 프로그래밍을 지원해 케이블없이 온라인으로 Arduino 스케치나 Wi-Fi 펌웨어 작업이 가능한 점이다.<br />
제품에 대한 더 자세한 사항은 디바이스마트 홈페이지(http://www.devicemart.co.kr/)에서 확인할 수 있다.</p>
<p><strong>제품 특징</strong><br />
· 보드에 장착된 센서나 엑츄에이터에 와이파이로 통신하여 IoT 시스템을 쉽고 빠르게 만들 수 있음<br />
· USB를 통하거나 외부 전원을 통한 작동이 모두 가능<br />
· USB가 아닌 외부의 전원은 AC-DC 아답터(DC잭 활용) 또는 배터리(Gnd. Vin핀 활용)로 공급</p>
<p><strong>Features</strong></p>
<p>Arduino Uno Wi-Fi는 ATmega328P (<a href="http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf" target="_blank"><span style="color: #03747b">datasheet</span></a>)와 ESP8266 Wi-Fi 통합 모듈(<a href="http://download.arduino.org/products/UNOWIFI/0A-ESP8266-Datasheet-EN-v4.3.pdf" target="_blank"><span style="color: #03747b">datasheet</span></a>) 기반의 새로운 Arduino Uno 입니다. 14개의 디지털 입/출력 핀헤더(6개는 PWM 출력으로 사용 가능), 6개의 아날로그 입력 핀, 16MHz 세라믹 공진기(공명기), USB 포트, 전원 잭, ICSP 헤더, 그리고 Reset 버튼을 내장하고 있습니다. 또한 USB 케이블을 통해서 간편하게 컴퓨터와 연결하거나, AC-DC 아답터 또는 배터리를 활용해 쉽게 전원을 공급할 수 있는 등 마이크로컨트롤러를 활용하는데 필요한 모든 것들을 포함하고 있습니다.</p>
<p>ESP8266 Wi-Fi 모듈은 자기제어(Self-contained) SoC 칩셋으로, 와이파이 네트워크에 접속하기 위한 통합 TCP/IP protocol stack을 내장하고 있습니다. (또는 액세스포인트로도 활용 가능합니다) Uno Wi-Fi의 가장 유용한 기능 중 하나는, OTA (over-the-air) 프로그래밍을 지원해 온라인으로(케이블 없이) Arduino sketches나 Wi-Fi firmware의 데이터 이동이 가능합니다.</p>
<div>
<table>
<tbody>
<tr>
<th colspan="2">ARDUINO MICROPROCESSOR</th>
</tr>
<tr>
<td>Processor</td>
<td>ESP8266</td>
</tr>
<tr>
<td>Architecture</td>
<td>Tensilica Xtensa LX106</td>
</tr>
<tr>
<td>Operating Voltage</td>
<td>3.3 V</td>
</tr>
<tr>
<td>Flash Memory</td>
<td>4 MB</td>
</tr>
<tr>
<td>RAM</td>
<td>8 MB instruction, 12 MB data</td>
</tr>
<tr>
<td>Clock Speed</td>
<td>80 MHz</td>
</tr>
<tr>
<td>WiFi</td>
<td>802.11 b/g/n 2.4 GHz</td>
</tr>
<tr>
<td>Wake up time</td>
<td>&lt; 2 ms</td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<th colspan="2">ARDUINO MICROCONTROLLER</th>
</tr>
<tr>
<td>Microcontroller</td>
<td>ATmega328</td>
</tr>
<tr>
<td>Architecture</td>
<td>Atmel AVR 8-bit</td>
</tr>
<tr>
<td>Operating Voltage</td>
<td>5 V</td>
</tr>
<tr>
<td>Flash memory</td>
<td>32 KB</td>
</tr>
<tr>
<td>SRAM</td>
<td>2 KB</td>
</tr>
<tr>
<td>Clock Speed</td>
<td>16 MHz</td>
</tr>
<tr>
<td>Analog I/O Pins</td>
<td>6</td>
</tr>
<tr>
<td>EEPROM</td>
<td>1 KB</td>
</tr>
<tr>
<td>DC Current per I/O Pins</td>
<td>40 mA</td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<th colspan="2">GENERAL</th>
</tr>
<tr>
<td>Digital I/O Pins</td>
<td>20</td>
</tr>
<tr>
<td>PWM Output</td>
<td>6</td>
</tr>
<tr>
<td>Power Consumption</td>
<td>93 mA</td>
</tr>
<tr>
<td>PCB Size</td>
<td>53 x 68.5 mm</td>
</tr>
<tr>
<td>Weight</td>
<td>0.025 Kg</td>
</tr>
<tr>
<td>Product Code</td>
<td>A000133</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<h5><span style="font-size: small">Power</span>Technical Specifics</h5>
<div>Arduino Uno Wi-Fi 제품은 USB를 통하거나 외부 전원을 통한 작동이 모두 가능합니다(자동 선택). USB가 아닌 외부의 전원은 AC/DC 아답터 또는 배터리로 공급할 수 있습니다. 아답터의 경우에는 아답터의 2.1mm 플러그와 보드의 DC잭을 연결해 사용 가능합니다. 배터리로 전원을 공급하는 경우에는 &#8216;Gnd&#8217;와 &#8216;Vin&#8217; 핀헤더에 전선을 연결하는 형태로 가능합니다.&nbsp;</p>
<p>외부 전원을 통해 전원을 공급할 때는 6~20V 전압으로 제품을 작동할 수 있습니다. 하지만 7V 미만의 전원만이 공급되는 경우에는 5V 핀에서도 5V 이하의 전원이 공급될 수 있으며, Uno Wifi 보드 역시도 불안정한 작동을 할 수 있습니다. 또한 12V를 초과하는 전압을 공급하는 경우에는 전압 레귤레이터가 과열되거나 보드에 손상을 입힐 수도 있습니다. 즉 7V에서 12V의 전압 공급을 권장합니다.</p>
<p>전원 Pin 상세 설명 :</p>
<ul>
<li>VIN. 외부 전원을 사용할 때 아두이노 보드에 입력되는 전압. (USB 연결 혹은 기타 조정된 전원 소스의 5 전압과는 반대)</li>
<li>5V. 보드의 레귤러에이터로부터 조정된 5V로 출력되는 핀. 보드는 DC 전원잭 (7 &#8211; 12V), USB 커넥터 (5V)나 보드의 VIN pin (7-12V) 5V나 3.3V 핀을 통한 공급 전압은 레귤레이터를 우회하고, 보드는 손상될 수 있습니다. 권장하지 않습니다.</li>
<li>3V3. 온보드 레귤레이터에 의해 발생된 A 3.3 전압 공급. 최대 전류는 1 A 입니다. (파워 입력 소스에 따른)</li>
<li>GND. 접지 핀.</li>
<li>IOREF. 아두이노 보드의 이 핀은 마이크로컨트롤러가 작동하는 전압 기준을 제공합니다. 올바르게 구성된 쉴드는 IOREF 핀 전압을 읽고 적절한 전원 소스을 선택하거나 5V 또는 3.3V 전원 공급 장치로 작업하기 위해 출력에서 전압 변환기를 활성화하십시오.</li>
</ul>
</div>
<h5><span style="font-size: small">Memory</span></h5>
<div>ATmega328는 32 KB 플래시입니다. (부트로더용으로 0.5 KB 사용) 또한 SRAM 2 KB,  EEPROM 1 KB 이 있습니다. (EEPROM 라이브러리로 읽고 쓸 수 있음)</div>
<h5><span style="font-size: small">Input and Output</span></h5>
<div>우노의 각 14 디지털 핀은 pinMode(), digitalWrite() and digitalRead() 입출력에 사용됩니다. 5 전압으로 작동됩니다. 각 핀은 최대 40 mA으로 제공되거나 수신할 수 있으며 내부 풀업 저항(기본적으로 연결되지 않음)은 20-50kOhms 입니다. 게다가 몇몇의 핀은 다음과 같은 기능으로 특화됩니다.</div>
<div>
<ul>
<li>Serial: 0 (RX), 1 (TX). TTL 시리얼 데이터를 수신 (RX) 및 전송(TX) 하는 데 사용됩니다. 이 핀은 ATmega8U2 USB-to-TTL 시리얼 칩의 해당 핀에 연결됩니다.</li>
<li>외부 인터럽트: 2, 3. 이 핀은 낮은 값, 어떤값의 상승, 하락할 때 인터럽트가 발생하도록 할 수 있습니다. 자세한 사항은 attachInterrupt() 기능을 참조 하십시오.</li>
<li>PWM: 3, 5, 6, 9, 10 and 11. analogWrite() 을 사용하여 8-bit PWM 출력을 제공합니다.</li>
<li>SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). 이 핀은 . SPI 라이브러리를 사용하는 SPI 통신을 지원합니다.</li>
<li>LED: 디지털 핀 13으로 연결된 LED가 내장되어 있습니다. 이 핀이 높은 값일 때, LED는 켜집니다. 핀이 낮은 값을 때에는 꺼집니다. 우노는 6 아날로그 입력이며, 10비트의 분해능(1024 다른 값)이 제공되는 A0 부터 A5까지 표시됩니다. AREF 핀, analogReference()를 사용하여 범위의 상단을 변경할 수 있지만 기본적으로 접지에서 5V까지 측정됩니다. 게다가 몇몇의 핀은 기능적으로 특화되어 있습니다.</li>
<li>TWI: TWI: A4 혹은 SDA 핀, A5 혹은 SCL 핀. 와이어 라이브러리를 사용하여 TWI 통신 지원. 참조: A4 혹은 SDA 핀, A5 혹은 SCL 핀은 IO 확장기 SC16IS750IBS에서 사용중입니다. 보드에 다른 두개의 핀이 있습니다:</li>
<li>AREF. Reference voltage for the analog inputs. Used with analogReference(). 아날로그 입력을 위한 기준 전압. analogReference() 사용.</li>
<li>RESET. 라인을 LOW로 가져와서 마이크로컨트롤러를 리셋하십시오. 일반적으로 보드의 차단하는 쉴드에 리셋버튼을 추가합니다.</li>
</ul>
</div>
<h5><span style="font-size: small">Communication</span></h5>
<div>
<p>The Arduino Uno Wi-Fi 는 컴퓨터, 다른 아두이노, 다른 마이크로컨트롤러와 통신하는 많은 시설을 갖추고 있습니다. ATmega328는 디지털 핀 0 (RX), 1 (TX) 로 사용 가능한 UART TTL (5V) 시리얼 통신을 제공합니다. 보드상의 ATmega16U2 채널의 USB 연결된 시리얼 통신은 컴퓨터 소프트웨어에 대한 가상 컴포트로 나타납니다. 16U2 펌웨어는 표준화된 USB COM 드라이버를 사용하며, 외부 드라이버가 필요 없습니다. 그러나 윈도우에서는, inf 파일이 요구됩니다. 아두이노 소프크웨어는 아두이노 보드로부터 온 간단한 문자 데이터가 허용된 시리얼 모니터를 포함합니다. 보드의 RX, TX LEDs는 데이터가 USB 시리얼 칩, USB 연결을 통해 전송될 때, 깜박입니다. (그러나 핀0, 1은 시리얼 통신이 아님).</p>
<p>소프트웨어 시리얼 라이브러리는 어떤 우노의 디지털 핀의 시리얼 통신에도 허용됩니다.</p>
<p>ATmega328은 I2C (TWI)와 SPI 통신을 물론 지원합니다. 아두이노 소프트웨어는 I2C 버스의 사용을 간단하게 하는 와이어 라이브러리를 포함합니다; SPI 라이브러리 사용에는 SPI 통신을 사용하십시오.</p>
<p>Arduino Uno Wi-Fi에는 AtMega 16u2, AtMega 328p 및 ESP8266EX 사이의 통신을 허용하는 I2C 버스/ SPI 인터페이스가 있는 SC16IS750IBS IO 확장기 단일 UART가 있습니다.</p>
<p align="center"><img alt="" src="http://static.arduino.org/images/products/details/ArduinoUNOWIFI_drawing2.jpg" width="600" /></p>
<p>The Arduino Uno Wi-Fi를 사용하면 보드에 장착된 센서나 엑츄에이터에 와이파이로 통신하여 IoT 시스템을 쉽고 빠르게 만들 수 있습니다. Arduino Uno Wi-Fi를 Wi-Fi network 클라이언트로 다른 장치와 연결하는 서버로 사용하거나 ad&#8217;hoc Wi-Fi 연결을 만들 수 있습니다. Arduino Uno Wi-Fi를 통해 인터넷으로 접속하는 완벽한 방법은 Ciao Library이며 REST connector를 사용하는 것입니다. Arduino Uno Wi-Fi에는 브라우저를 통해 즉시 보드를 명령할 수 있는 RestServer 스케치가 미리 업로드되어 있습니다: Arduino Uno Wi-Fi SSID를 연결하십시오, http://192.168.240.1/arduino/digital/13/1 링크로 이동하여 LED L을 켜십시오.</p>
<div>다른 가능한 명령들은 다음과 같습니다:&nbsp;</p>
<p>* &#8220;/arduino/digital/13&#8243;     -&gt; digitalRead(13)<br />
* &#8220;/arduino/digital/13/1&#8243;   -&gt; digitalWrite(13, HIGH)<br />
* &#8220;/arduino/analog/2/123&#8243;   -&gt; analogWrite(2, 123)<br />
* &#8220;/arduino/analog/2&#8243;       -&gt; analogRead(2)<br />
* &#8220;/arduino/mode/13/input&#8221;  -&gt; pinMode(13, INPUT)<br />
* &#8220;/arduino/mode/13/output&#8221; -&gt; pinMode(13, OUTPUT)</p>
</div>
<p>&nbsp;</p>
<h5><span style="font-size: small">Programming</span></h5>
<div><em> The Arduino Uno Wi-Fi는 아두이노 소프트웨어가 있는 고전적인 아두이노 우노로 프로그래밍할 수 있습니다. (<a href="http://www.arduino.org/download" target="_blank">download</a>). the Tools &gt; Board menu (보드의 마이크로컨트롤러와 맞는) Arduino Uno Wi-Fi를 클릭하십시오.</em></div>
<div><em>Arduino Uno Wi-Fi의 새로운 특징은 Wi-Fi를 통해(Arduino Yun의 같은 방식으로) 스케치를 업로드할 수 있습니다.</em></div>
<div><em> Arduino Uno Wi-Fi의 ATmega328에는 외부 하드웨어 프로그래머 없이 새로운 코드를 업로드할 수 있는 부트 로더가 미리 설치되어 있습니다.</em></div>
<div> 물론 부트로더를 우회시킬 수 있으며 Arduino ISP를 사용하거나 비슷한 것을 사용하는 ICSP((In-Circuit Serial Programming) 헤더 마이크컨트롤러를 프로그래밍할 수 있습니다.</div>
<p>&nbsp;</p>
<h5><span style="font-size: small">Automatic (Software) Reset</span></h5>
<div>Arduino Uno Wi-Fi는 업로드하기 전에, 리셋 버튼을 물리적으로 누르지 않고 연결된 컴퓨터에서 실행되는 소프트웨어로 리셋할 수 있도록 설계되었습니다. ATmega8U2/16U2의 하드웨어 흐름 제어 라인 (DTR) 중 하나는 100 nanofared capacitor를 통해 ATmega328의 리셋 라인에 연결됩니다. 아두이노 환경에서 아두이노 소프트웨어는 이 기능을 사용하여 업로드 버튼을 누르기만 하면 코드가 업로드 됩니다. 즉, DTR을 낮추면 업로드 시작과 잘 맞을 수 있으므로 부트 로더의 시간이 더 짧아질 수 있습니다.&nbsp;</p>
<p>이 설정에는 다른 의미가 있습니다. Uno Wifi가 Mac OS X 또는 Linux를 실행하는 컴퓨터에 연결되면 소프트웨어가 USB를 통해 연결될 때마다 리셋됩니다. 0.5초 동안, 부트로더는 Uno에서 실행중입니다. 형식이 잘못된 데이터(새 코드를 업로드하는 것 이외에)를 무시하도록 프로그래밍 되어있지만, 연결이 되면 보드에 전송된 데이터의 처음 몇 바이트는 차단됩니다. 보드에서 스케치가 시작될 때 일회성 구성이나 다른 데이터를 수신하는 경우 해당 데이터를 전송하기 전에 연결하고나서 통신하는 소프트웨어가 대기하고 있는지 확인하십시오.</p>
<p>Uno Wifi는 자동 리셋을 사용할 수 없도록 차단하는 trace가 포함되어 있습니다. trace의 양쪽 패드를 함께 납땜하여 다시 활성화시킬 수 있습니다. 이것은 &#8220;RESET-EN&#8221;라고 부릅니다. 물론 110V 저항을 5V에서 리셋 라인에 연결하여 자동 리셋을 비활성화할 수도 있습니다.</p>
</div>
<p>&nbsp;</p>
<h5><span style="font-size: small">USB Overcurrent Protection</span></h5>
<div>Arduino Uno Wi-Fi는 컴퓨터 USB 포트의 합선, 과전류로부터 자체 보호되는 리셋 가능한 폴리퓨즈가 있습니다. 대부분의 컴퓨터가 자체 보호를 제공하지 않더라도, 퓨즈는 보호 외부 레이어를 제공합니다. USB 포트에 500 mA 이상이 적용되면, 퓨즈는 합선이나 과전류가 제거될 때까지 자동적으로 연결이 차단됩니다.</div>
<p>&nbsp;</p>
<h5><span style="font-size: small">Physical Characteristics</span></h5>
<div>Uno Wi-Fi PCB의 최대 길이 및 넓이는 각각 2.7, 2.1 인치이며, USB 커넥터와 파워잭은 이전 치수에서 벗어나서 확장됩니다. 네 개의 나사 구멍으로 보드를 표면이나 케이스에 부착할 수 있습니다. 참조로 디지털 핀 7, 8 사이의 거리는 160 mil (0.16&#8243;) 이며, 다른 핀의 100mil 간격의 배수가 아닙니다.</div>
<p>Documentation</p>
<ul>
<li>Eagle files: <a href="http://download.arduino.org/products/UNOWIFI/Arduino-UNO-WiFi-V4_AF1.zip" target="_blank">arduino-uno-wifi-reference-design.zip</a></li>
<li>Schematic: <a href="http://download.arduino.org/products/UNOWIFI/Arduino-UNO-WiFi-V4_AF1.pdf" target="_blank">arduino-uno-wifi-schematic.pdf</a></li>
</ul>
</div>
<p align="center"><img alt="" src="http://static.arduino.org/images/products/details/ArduinoUNOWIFI_drawing1.jpg" width="600" /></p>
<p align="center">
<p><a href="http://www.arduino.org/learning/getting-started" target="_blank"><span style="color: #03747b"><br />
Arduino를 시작</span></a>하거나 보드에 지금 바로 실행해보세요. <a href="http://www.arduino.org/learning/getting-started/getting-started-with-arduino-uno-wifi" target="_blank"><span style="color: #03747b">Arduino UNO WiFi 시작</span></a><b>Getting Started</b></p>
<p><b>Tutorials</b></p>
<ul>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/restserver" target="_blank">RestServer only for ESP-Link firmware</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/restclient" target="_blank">RestClient only for ESP-Link firmware</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/mqttsub" target="_blank">MqttSub only for ESP-Link firmware</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/mqttpub" target="_blank">MqttPub only for ESP-Link firmware</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/webserverblink" target="_blank">WebServerBlink only for ESP-Link firmware</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/webserver" target="_blank">WebServer only for ESP-Link firmware</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/restserver-and-restclient" target="_blank">RestServer and RestClient only for ESP-Link firmware</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/readmacaddress" target="_blank">ReadMacAddress only for ESP-Link firmware</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/boards-tutorials/ciaorestclient-thingspeak-2" target="_blank">CiaoRestClient-ThingSpeak only for ESP-Link firmware</a></li>
</ul>
<p><b>Advanced</b></p>
<ul>
<li><a href="http://www.arduino.org/learning/tutorials/advanced-guides/arduino-uno-wifi-firmware-updater" target="_blank">Arduino UNO WiFi firmware updater</a></li>
<li><a href="http://www.arduino.org/learning/tutorials/advanced-guides/how-to-change-the-firmware-on-an-arduino-uno-wifi" target="_blank">How to change the firmware</a></li>
</ul>
<p>&nbsp;</p>
<p><a href="http://www.devicemart.co.kr/1330985" target="_blank">Arduino UNO WiFi 제품 상세 보러가기</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/33406/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[35호]Arduino M0 &amp; Arduino 9 Axes Motion Shield 리뷰</title>
		<link>http://www.ntrexgo.com/archives/30749</link>
		<comments>http://www.ntrexgo.com/archives/30749#comments</comments>
		<pubDate>Tue, 15 Mar 2016 05:35:39 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[스페셜 컬럼]]></category>
		<category><![CDATA[35호]]></category>
		<category><![CDATA[Arduino]]></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=30749</guid>
		<description><![CDATA[디바이스마트 매거진 35호 &#124; 스마트폰에서 촉발된 IOT 기술의 빅뱅은 영향을 받지 않는 곳이 없을 정도로 무섭게 확산되고 있습니다. 마치 나비효과처럼 전 세계에서 자신의 손으로 뭔가를 만들고 싶어하는 DIY(Do It Yourself)족 및 컴퓨터를 잘 모르는 이들에게도 교육차원으로 많이 사용되어 선풍적인 인기를 끌고 있는 아두이노, 라즈베리파이 등등에도 그 바람을 피하기 힘든 듯합니다. ]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-2.png" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30846" alt="35 re (2)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-2-620x290.png" width="620" height="290" /></a></p>
<p>&nbsp;</p>
<p><span style="color: #ff6600;font-size: x-large;background-color: #ffffff"><strong>Arduino M0 &amp;<br />
</strong></span></p>
<p><strong><span style="font-size: x-large;color: #ff6600;background-color: #ffffff">Arduino 9 Axes Motion Shield 리뷰</span><br />
</strong></p>
<p>&nbsp;</p>
<p style="text-align: right">글 | 금강초롱 객원기자 blog.naver.com/crucian2k3</p>
<p>스마트폰에서 촉발된 IOT 기술의 빅뱅은 영향을 받지 않는 곳이 없을 정도로 무섭게 확산되고 있습니다.<br />
마치 나비효과처럼 전 세계에서 자신의 손으로 뭔가를 만들고 싶어하는 DIY(Do It Yourself)족 및 컴퓨터를 잘 모르는 이들에게도 교육차원으로 많이 사용되어 선풍적인 인기를 끌고 있는 아두이노, 라즈베리파이 등에도 그 바람을 피하기 힘든 듯합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-1.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30843" alt="35 re (1)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-1-620x348.jpg" width="620" height="348" /></a></p>
<p>유난히 폭 넓은 사용자층을 형성하고 있는 아두이노 진영에서도 앙증맞은 32비트급 아두이노 보드가 정식출시 되었으며, 이제는 프로토타이핑 보드도 고사양이 되는 길이 열린 듯합니다. 언제나 그래 왔듯이 세월이 지나면 더 쎈 녀석이 등장할 것입니다만&#8230;</p>
<p>여기서 프로토타이핑이란 용어가 낯설은 독자를 위해 첨언을 좀 하자면 실험실습 등을 위해 간이로 만들어보는 보드 혹은 도구 또는 그러한 일들을 의미합니다. 억지스럽게 표현해 본다면 시작품, 시제품, 연습용 제품 등으로 해석될 수 있을 듯합니다.</p>
<p>요 근래 이러한 아두이노 진영에 내분이 있었으며 2016. 3월 현재 arduino.cc 진영과 arduino.org로 나뉘어 아두이노에 대한 기술지원이 이뤄지고 있는 점은 제 개인적인 생각으로는 그리 바람직해 보이지 않습니다. 그도 그럴 것이 동일한 하드웨어를 다른 명칭으로 불러 혼란을 유발하거나 arduino IDE의 버전이 헛갈리게 발표되고 있는 점도 그러한 사실을 충분히 뒷받침 한다고 봅니다.</p>
<p>이러한 거시적(?) 상황을 살짝 감안 해보며 이번 차에는 막강한 성능을 가진 ‘아두이노-M0’를 다뤄보려 합니다. 본격적으로 ‘아두이노-M0’를 거론하기 전에 한두 해를 거슬러 올라가면, 지난 2014년 5월경 arduino.cc 진영에서 ‘ARDUINO-Zero’라는 Atmel 32비트 MCU를 사용하는 모델을 발표 합니다. 발표 후 1년여가 흐를 무렵 ‘arduino.cc’와 ‘arduino.org’로 조직이 분열되면서 ‘ARDUINO-Zero’가 ‘ARDUINO-M0-Pro’라는 명칭으로 arduino.org에서 발표가 됩니다. 그리고 얼마 후 arduino.org에서 ‘ARDUINO-M0-Pro’ 하드웨어에서 Atmel 의 디버거 기능인 EDBG를 제외한 새로운 모델인 ‘ARDUINO-M0’를 발매하게 됩니다.</p>
<p>위에서 열거한 ‘ARDUINO-Zero, ARDUINO-M0, ARDUINO-M0-Pro’는 사실상 같은 MCU를 사용하고 있으며 H/W 적으로는 EDBG만 있고 없을 뿐입니다. 이번에 다루게 될 ‘ARDUINO-M0’는 사실 이전에 발매된 ‘아두이노-레오나르도’와 닮은 점이 많습니다. 이에 대한 내용도 아래에서 잠깐 다뤄보고자 합니다.</p>
<p>이러한 ‘ARDUINO-M0’를 살펴보면서 제가 흥미를 가졌던 부분은</p>
<p>· D0, D1을 제외한 전 포트에 PWM 기능이 동작됨을 의미하는 ~ 문양이 있는데 이에 대한 특성은?<br />
· Serial Port 어떻게 클래스 매핑이 되어 있는가?<br />
· 8비트급 MCU를 쓰는 모델들에 비해 새로운 기능은 무엇이 있는가?<br />
· 12비트 ADC는 충분히 쓸만 한가?<br />
· 10비트 DAC를 어떻게 사용할 수 있는가?<br />
· 실행속도는 8비트급에 비해 어느 정도 빠른가?</p>
<p>‘아두이노-M0’는 종래의 Atmega328을 사용하는 ‘아두이노-우노’ 시리즈 혹은 Atmega23u4를 사용하는 ‘아두이노-레오나르도’ 시리즈와 견주어 볼 때 노는 물이 다름은 이론의 여지가 없습니다. 저에게 M3를 사용하는 ‘아두이노-두에’가 있었다면 서로 비교해 볼 수 있었을 텐데 사정상 ‘아두이노-레오나르도’와 성능이나 기타 특이점에 대해만 논해 보려합니다.<br />
이번 포스팅은 ㈜엔티렉스-디바이스마트의 지원을 받아 작성하게 되었습니다.</p>
<p><span style="color: #ff6600"><strong>1. 제품 개봉기</strong></span></p>
<p>‘아두이노-우노-R3’의 폼팩터를 그대로 계승하고 있기에 그다지 새로울 것은 없습니다. 다만 보드 자체가 매우 작고 정교하게 만들어 졌다는 느낌이 드는 것은 사실입니다.<br />
기왕 하는 김에 ‘아두이노-M0-Pro’ 모델이었다면 디버그 기능도 살펴 볼 수 있었을 텐데 하는 아쉬움도 있었습니다만 디버그 기능 외 차이점은 없다고 봅니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-2.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30845" alt="35 re (2)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-2-620x348.jpg" width="620" height="348" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림1 : 아두이노-M0 박스 외관</td>
</tr>
</tbody>
</table>
<p>뒷면에는 이탈리아에서 제조된 물품임을 확인하는 로고가 선명하게 인쇄되어 있습니다. 박스를 열면 앙증맞은(?) 보드가 한 장 덩그러니 들어가 있으며 ‘아두이노-우노’와 마찬가지로 Atmel사의 SAMD21G18A-AUT을 기반으로 한 보드가 보이며 전체적인 분위기는 ‘아두이노-레오나르도’와 유사하다고 생각됩니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-3.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30847" alt="35 re (3)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-3-620x348.jpg" width="620" height="348" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림2 : 아두이노-M0 전면부</td>
</tr>
</tbody>
</table>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-4.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30849" alt="35 re (4)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-4-620x348.jpg" width="620" height="348" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림3 : 아두이노-M0 후면부</td>
</tr>
</tbody>
</table>
<p>‘9축 모션 센서 쉴드’ 보드는 그보다 약간 큰 박스로 구성되어져 있으며 얼핏 본다면 아두이노 본체로 오해라도 할 수 있을 만큼 비슷하게 생겼습니다.</p>
<p>쉴드 보드는 아두이노의 확장보드로 매우 다양한 쉴드보드가 존재합니다. 이번에 리뷰하는 쉴드 보드는 3축 14bit 가속도센서, 3축 16bit 자이로센서, 3축 지자기센서가 원칩에 들어있는 보쉬센서텍의 BNO055라는 칩을 기반으로 하고 있습니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-5.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30851" alt="35 re (5)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-5-620x348.jpg" width="620" height="348" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림4 : 9축 모션센서 쉴드 박스 외관</td>
</tr>
</tbody>
</table>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-6.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30853" alt="35 re (6)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-6-620x348.jpg" width="620" height="348" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림5 : 9축 모션센서 쉴드 후면부</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><span style="color: #ff6600"><strong>2. 아두이노-M0 살펴보기</strong></span></p>
<p>기 발매중인 모델 중 ‘아두이노-레오나르도’와 폼펙터 측면에서 유사성이 많음에 따라 두 모델을 상호 비교해 보도록 하겠습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-2.png" rel="lightbox[30749]"><img class="alignnone  wp-image-30761" alt="35sr  (2)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-2-620x416.png" width="446" height="299" /></a></p>
<p><strong><span style="color: #ff9900">2.1 기본적인 스펙</span></strong><br />
우선 눈에 띄는 부분이 동작전압이 3.3V라는 점입니다.<br />
5V를 기반으로 만들어진 쉴드를 연결할 때 주의가 필요해 보입니다.<br />
다음으로 A/D변환기의 분해능이 12비트로 올라갔고 플래시메모리가 대폭 늘어났으며 무엇보다도 클럭 속도가 올라갔습니다.<br />
한마디로 컴퓨팅 파워를 끌어 올렸다고 보면 틀림이 없을 것 같습니다.<br />
이제 세부적인 변경 사항들을 하나하나 살펴보도록 하겠습니다.</p>
<p><span style="color: #ff9900"><strong>2.2 전원공급핀</strong></span><br />
외부에서 전원을 공급받는 방법은 2가지가 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-7.jpg" rel="lightbox[30749]"><img class="alignnone size-full wp-image-30855" alt="35 re (7)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-7.jpg" width="303" height="196" /></a></p>
<p>2.1mm 규격의 DC아답터를 사용하여 6~15V를 인가하는 방법과 마이크로USB 컨넥터를 통해 DC 5V를 인가하는 방법이 있습니다.<br />
USB 2.0포트에 연결되는 경우 500mA가 한계치이므로 전력이 부족한 경우 DC아답터를 사용하여 공급할 수 있습니다.<br />
DC아답터는 시중에서 9V, 12V를 흔히 구입할 수 있을 것 같으며 중심축이 +전원이고 외경은 GND가 되어야 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-3.png" rel="lightbox[30749]"><img class="alignnone size-full wp-image-30762" alt="35sr  (3)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-3.png" width="445" height="167" /></a></p>
<p><span style="color: #ff9900"><strong>2.3 메모리 관련사항</strong></span><br />
ATSAMD21G18 MCU는 256KB의 플레시메모리를 내장하고 있으며 이중 4KB는 부트로더 영역으로 사용됩니다. 이 부트로더 영역은 NVM 퓨즈에 의해 보호되도록 설정되어 있습니다. 램은 32KB가 내장되어 있으며 이중 16KB는 EEPROM 라이브러리에 의해 에뮬레이션 될 수 있습니다. 즉, EEPROM 라이브러리로 램 영역을 활용할 수는 있으나 전원이 차단되면 데이터는 유실 되게 됩니다.</p>
<p><span style="color: #ff9900"><strong>2.4 입출력핀 관련사항</strong></span><br />
‘아두이노-M0’는 디지털 I/O핀으로 총 14개가 설정되어 있습니다. 이들은 pinMode(), digitalWrite(), digitalRead()함수를 사용하여 손쉽게 입·출력이 이뤄지게 됩니다.<br />
위에서 언급한 바와 같이 ATSAMD21G18은 3.3V에서 동작되므로 신호 레벨은 3.3V가 됩니다. 풀업저항은 20∼60kΩ의 내부 풀업저항이 연결될 수 있으며 전원이 투입되면 기본적으로는 해제되어 있습니다. 최대 출력전류는 7mA입니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-4.png" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30763" alt="35sr  (4)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-4-607x620.png" width="607" height="620" /></a></p>
<p><span style="color: #ff9900"><strong>2.5 프로그래밍 관련사항</strong></span><br />
‘아두이노-M0’에 프로그래밍을 하기 위해서는 일단 플레시메모리가 삭제되어져야 합니다. 이 기능은 마이크로USB 커넥터로 구성된 네이티브USB포트를 통해 진행됩니다.<br />
이 포트는 SAMD21에 직접 연결되어 있으며 업로드 진행시 일단 1200bps에서 플레시메모리 삭제가 진행된 후 다시 부트로더에 의해 57600bps등으로 연결되게 됩니다.<br />
이러한 기능은 ‘아두이노 레오나르도’도 동일하며 프로그램을 업로드 시킨 후 네이티브 USB포트를 사용할 수 없는 지경으로 만들면 전용프로그래머를 사용하지 않고는 다시는 아두이노 IDE로 접근이 곤란해질 수 있는 위험이 있습니다.</p>
<p><span style="color: #ff9900"><strong>2.6 USB 과전류 보호회로</strong></span><br />
아두이노-M0는 폴리퓨즈를 설치하여 과전류로부터 SAMD21을 보호하도록 되어 있습니다. 일반적으로 사용되는 USB2.0포트는 500mA이상의 전류가 흐르면 출력을 차단하는 기능을 갖고 있습니다. 과도한 전류를 흐르게 하는 경우에 다양한 요인에 의해 아두이노-M0가 동작되지 않거나 동작이 불안정해질 수 있음을 유의해야 합니다.</p>
<p><span style="color: #ff6600"><strong>3. 아두이노-M0 연결하기</strong></span></p>
<p>서두에서 밝힌 바와 같이 아두이노 진영에서 지난해 여름 무렵 상표분쟁이 있었다고 합니다. 2016. 3월 현재 www.arduino.cc와 www.arduino.org로 양분되어 아두이노 IDE와 각종 보드들을 공식적으로 지원하고 있는 형국입니다. 아두이노 IDE버전 1.6.x는 arduino.cc에서 공급하고 있고 1.7.x는 arduino.org에서 공급하고 있습니다. 또한 arduino studio란 IDE도 있는데 현재 알파버젼이 발표된 상태입니다.<br />
금번에 리뷰가 진행되고 있는 ‘Arduino-M0’는 www.arduino.org에서만 공급되고 있으며 1.7.x버젼의 IDE에서 정상적으로 사용할 수 있습니다. 이런 이유로 보드에는 ‘NEW IDE www.arduino.org’라는 딱지가 가운데에 붙어 있습니다. 이러한 정보 없이 ’아두이노-M0’를 구입하면 다소 난감하리라 봅니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-8.jpg" rel="lightbox[30749]"><img class="alignnone size-full wp-image-30857" alt="35 re (8)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-8.jpg" width="523" height="343" /></a></p>
<p><span style="color: #ff9900"><strong>3.1. ‘아두이노-M0’에 네이티브USB 연결하기</strong></span><br />
정확한 원인은 알 수 없었으나 USB드라이버가 제대로 인식되지 않아 애를 먹었습니다. 해결책을 찾아 arduino.org 포럼을 수소문한 끝에 방법을 알아내었고 다름 아닌 수동드라이버 인식 이었습니다. 아마도 이 글을 읽는 독자 중에는 동일한 증상을 겼을 가능성이 충분히 있다고 봅니다. ‘아두이노-레오나르도’인 경우에는 ‘아두이노 설치경로/driver’에서 손쉽게 드라이버 문제를 해결 할 수 있었습니다만 ‘Arduino-M0’는 이 방법이 소용이 없었습니다.<br />
아래 그림과 같이 ‘기타장치 ▶ 알 수 없는 장치’ 현상이 있을 때 해결책입니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-9.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30859" alt="35 re (9)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-9-620x443.jpg" width="620" height="443" /></a></p>
<p>장치관리자 ▶ 기타장치 ▶ 알 수 없는 장치 ▶ 드라이버 소프트웨어 업데이트<br />
▶ 컴퓨터에서 드라이버 소프트웨어 업데이트<br />
▶ 컴퓨터의 장치목록에서 직접 선택<br />
▶ 포트 (COM &amp; LPT)<br />
▶ (제조업체)Arduino Sri(www.arduino.org)<br />
▶ (모델)Arduino Zero Native Port 를 순서대로 선택합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-10.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30861" alt="35 re (10)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-10-620x446.jpg" width="620" height="446" /></a></p>
<p>이에 대한 설명을 <a href="http://labs.arduino.org/Manual+installation+of+drivers+on+Windows" target="_blank">http://labs.arduino.org/Manual+installation+of+drivers+on+Windows</a>에서도 확인할 수 있습니다.</p>
<p><span style="color: #ff9900"><strong>3.2. (Demo1)Hello World에 도전하기</strong></span><br />
LCD가 없으니 LED로 도전해 보고자 합니다. 위에서 LED는 D13에 연결되어 있음을 알았습니다.<br />
‘아두이노-우노’ 시리즈 등 8비트 계열과는 다른 MCU를 사용한 상황이므로 우선 www.arduino.org에서 특별히 제공하는 예제로 테스트를 해봅니다.<br />
만일 시작하면서 로그를 꼭 보고자 한다면 setup()에 아래와 같은 코드를 넣어줍니다.</p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p><span style="color: #008000">// If Serial moniter Used!</span><br />
<span style="color: #ff0000">while (!SerialUSB);</span></p>
</div>
<p><strong>● 소스의 위치 :</strong><br />
· http://labs.arduino.org ▶ DOCUMANTATION ▶ Boards<br />
▶ Arduino M0<br />
· http://labs.arduino.org/Arduino+M0<br />
· http://labs.arduino.org/ArduinoM0+Blink+example</p>
<p><strong>● 보드설정 : 아래와 같이</strong><br />
· 아두이노IDE1.7.8 ▶ 도구 ▶ 보드 ▶ Arduino M0를 선택합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-11.jpg" rel="lightbox[30749]"><img class="alignnone size-full wp-image-30862" alt="35 re (11)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-11.jpg" width="351" height="257" /></a></p>
<p>일단 아래와 같이 초 간단 코드를 넣어봅니다.</p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p><span style="color: #339966">// setup() is the first function executed when you plug you board</span><br />
<span style="color: #339966">// or when you reset it. This funcion runs once</span><br />
void setup() {<br />
<span style="color: #339966">// The pinMode sets digital pin 13 as an Output</span><br />
pinMode(13, OUTPUT);<br />
}</p>
<p><span style="color: #339966">// After the setup() function, the loop runs over and over</span><br />
<span style="color: #339966">// until you stop the board</span><br />
void loop() {<br />
digitalWrite(13, HIGH); <span style="color: #339966">// turn the LED on setting the pin 13 to HIGH</span><br />
delay(1000);// wait for a second<br />
digitalWrite(13, LOW); <span style="color: #339966">// turn the LED off setting the pin 13 to LOW</span><br />
delay(1000);// wait for a second<br />
}</p>
<p>Source Code1 : Blink</p>
</div>
<p>위 코드를 실행하기 위한 회로는 다음 장과 같습니다. 사실은 D13에 이미 LED가 하나 붙어 있으므로 이마저도 필요 없습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-12.jpg" rel="lightbox[30749]"><img class="alignnone  wp-image-30863" alt="35 re (12)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-12-594x620.jpg" width="535" height="558" /></a></p>
<p>1초 주기로 깜빡거리면 이제 ‘아두이노-M0’와 소통이 시작되었음을 의미합니다. 이제부터는 맛있게 요리하는 일만 남았습니다.</p>
<p><span style="color: #ff9900"><strong>3.3. (Demo2) 인터럽트방식으로 알람시각을 알려주는 리얼타임시계</strong></span><br />
‘아두이노-M0’에는 RTC를 내장하고 있습니다. 정교한 32.768Khz 오실레이터까지 포함하고 있으므로 DS1302 등 RTC칩을 사용하지 않고도 시계 어플리케이션을 만들 수 있을 것 같습니다.<br />
arduino.org 에 올라와 있는 예제를 한번 돌려 보기로 합니다.</p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p><span style="color: #339966">***********************************************************************</span><br />
<span style="color: #339966">* This sketch demonstrate how to use alarm in interrupt mode.</span><br />
<span style="color: #339966">This mode is more conveniently because you use processor for other tasks and when alarm match occurs interrupt routine is executed.</span><br />
<span style="color: #339966">In this way, alarm flag checking is indipendent from main program flow.</span><br />
<span style="color: #339966">***********************************************************************</span><br />
<span style="color: #339966">//*RTC Alarm in interrupt mode*/</span><br />
#include &lt;RTCInt.h&gt; <span style="color: #339966">//include RTCint library</span></p>
<p>RTCInt rtc; <span style="color: #339966">//create an RTCInt type object</span><br />
int buzzer=11; <span style="color: #339966">//connect the buzzer to digital pin 11</span><br />
int red=12; <span style="color: #339966">//connect red led to digital pin 12</span><br />
int green=13; <span style="color: #339966">//connect green led to digital pin 13</span><br />
<span style="color: #339966">/*setup*/</span><br />
void setup()<br />
{<br />
SerialUSB.begin(9600); <span style="color: #339966">//serial communication initializing</span><br />
pinMode(green,OUTPUT); <span style="color: #339966">//define green as output</span><br />
pinMode(red,OUTPUT); <span style="color: #339966">//define red as output</span><br />
pinMode(buzzer,OUTPUT); <span style="color: #339966">//define buzzer as output</span><br />
digitalWrite(green,LOW); <span style="color: #339966">//initialize the green to LOW level</span><br />
digitalWrite(red,LOW); <span style="color: #339966">//initialize the green to LOW level</span><br />
rtc.begin(TIME_H24); <span style="color: #339966">//RTC initializing with 24 hour representation mode</span><br />
rtc.setTime(17,0,5,0); <span style="color: #339966">//setting time (hour minute and second)</span><br />
rtc.setDate(13,8,15); <span style="color: #339966">//setting date</span><br />
rtc.enableAlarm(SEC,ALARM_INTERRUPT,alarm_int); <span style="color: #339966">//enabling alarm in interrupt mode</span><br />
rtc.local_time.hour=17; <span style="color: #339966">//setting hour alarm</span><br />
rtc.local_time.minute=1;<span style="color: #339966"> //setting minute alarm</span><br />
rtc.local_time.second=10;<span style="color: #339966"> //setting second to match</span><br />
rtc.setAlarm();<span style="color: #339966"> //write second in alarm register</span><br />
}<br />
<span style="color: #339966">/*loop*/</span><br />
void loop()<br />
{ noTone(buzzer); <span style="color: #339966">// disable the buzzer</span><br />
digitalWrite(green,HIGH); <span style="color: #339966">//turn on green led</span><br />
delay(500); <span style="color: #339966">//wait 500 millisecond</span><br />
}</p>
<p><span style="color: #339966">*************** Interrupt routine for alarm ******************************</span><br />
void alarm_int(void)<br />
{<br />
SerialUSB.println(“Alarm match!”);<br />
for(int i=0; i &lt; 30; i++)<br />
{ digitalWrite(green,LOW);<span style="color: #339966"> //turn off green led</span><br />
tone(buzzer,200); <span style="color: #339966">//play buzzer</span><br />
digitalWrite(red,HIGH); <span style="color: #339966">//turn on red green</span><br />
for(int j=0; j &lt; 1000000; j++)<br />
asm(“NOP”); <span style="color: #339966">//in interrupt routine you cannot use delay function then an alternative is NOP instruction cicled many time as you need</span><br />
digitalWrite(red,LOW); <span style="color: #339966">//turn off red green italWrite(13,LOW);</span><br />
for(int j=0; j &lt; 2000000; j++)<br />
asm(“NOP”);<br />
}<br />
RTC-&gt;MODE2.INTFLAG.bit.ALARM0=1; <span style="color: #339966">//clearing alarm0 flag</span><br />
}</p>
<p>- Source Code2 : RTC Alarm Clock</p>
</div>
<p>문제없이 잘 동작됨을 알 수 있기는 합니다만 전원을 끄거나 프로그램을 내려 보내면 다시 초기화 되어버리는 상황에서 얼마나 실효성이 있을지 의문이 들기도 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-13.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30864" alt="35 re (13)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-13-620x479.jpg" width="620" height="479" /></a></p>
<p><span style="color: #ff9900"><strong>3.4. (Demo3) D/A컨버터 기능 맛보기</strong></span><br />
‘아두이노 M0’에는 10비트 D/A컨버터 기능이 있음을 살펴보았습니다. 이 D/A컨버터의 기능을 시험해보려고 arduino.org를 이곳저곳 기웃거려 봤으나 마땅 정보가 없었고 arduino.cc에서 아두이노-Zero 보드용으로 공개해 놓은 라이브러리를 입수 할 수 있었습니다.<br />
소스를 쭉 살펴보니 44.1Khz로 sampling된 wav파일을 디코딩하는 라이브러리였고 과연 어느 정도의 음질인지 확인해 보고 싶었습니다. 그러나 아쉽게도 ‘아두이노-M0’에는 wave 파일을 담을 매체인 SD-CARD가 부착되어져 있지 않으므로 SD메모리카드소켓을 아래와 같이 직접 부착을 하였습니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-14.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30865" alt="35 re (14)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-14-620x482.jpg" width="620" height="482" /></a></td>
</tr>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-15.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30866" alt="35 re (15)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-15-620x348.jpg" width="620" height="348" /></a></td>
</tr>
<tr>
<td>
<p style="text-align: center">회로도3 : SD Card Interface 부착</p>
</td>
</tr>
</tbody>
</table>
<p>소리는 제 블로그(http://blog.naver.com/crucian2k3)를 방문하면 들을 수 있을 것입니다만 우선 오실로스코프에 나타난 파형은 아래와 같이 관찰할 수 있었습니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-16.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30867" alt="35 re (16)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-16-620x348.jpg" width="620" height="348" /></a></td>
</tr>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-17.jpg" rel="lightbox[30749]"><img class="size-full wp-image-30868 aligncenter" alt="35 re (17)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-17.jpg" width="342" height="256" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림7 : DAC Analog Signal 출력</td>
</tr>
</tbody>
</table>
<p>소스코드는 다음과 같습니다.</p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p><span style="color: #339966">/*</span><br />
<span style="color: #339966"> Simple Audio Player for Arduino Zero</span></p>
<p><span style="color: #339966">Demonstrates the use of the Audio library for the Arduino Zero</span></p>
<p><span style="color: #339966">Hardware required :</span><br />
<span style="color: #339966"> * Arduino shield with a SD card on CS4</span><br />
<span style="color: #339966"> * A sound file named “test.wav” in the root directory of the SD card</span><br />
<span style="color: #339966"> * An audio amplifier to connect to the DAC0 and ground</span><br />
<span style="color: #339966"> * A speaker to connect to the audio amplifier</span></p>
<p><span style="color: #339966"> Arturo Guadalupi &lt;a.guadalupi@arduino.cc&gt;</span><br />
<span style="color: #339966"> Angelo Scialabba &lt;a.scialabba@arduino.cc&gt;</span><br />
<span style="color: #339966"> Claudio Indellicati &lt;c.indellicati@arduino.cc&gt;</span></p>
<p><span style="color: #339966">This example code is in the public domain</span></p>
<p><span style="color: #339966">http://arduino.cc/en/Tutorial/SimpleAudioPlayerZero</span><br />
<span style="color: #339966"> */</span></p>
<p><span style="color: #339966"> /*</span><br />
<span style="color: #339966"> Modify 2016.2.29 By D.H.Kim SD Memory Card Interface</span></p>
<p><span style="color: #339966"> [SD CARD]&#8212;-[ARDUINO]</span><br />
<span style="color: #339966"> 9: NC &#8212;&#8211;</span><br />
<span style="color: #339966"> 1: CS &#8212;&#8211;D4</span><br />
<span style="color: #339966"> 2: DI &lt;&#8212;-MOSI(84)</span><br />
<span style="color: #339966"> 3: VSS1&#8212;&#8211;GND(86)</span><br />
<span style="color: #339966"> 4: VDD &#8212;&#8211;3.3V</span><br />
<span style="color: #339966"> 5: CLK &lt;&#8212;-CLK(83)</span><br />
<span style="color: #339966"> 6: VSS2&#8212;&#8211;GND(86)</span><br />
<span style="color: #339966"> 7: DO &#8212;-&gt;MISO(81)</span><br />
<span style="color: #339966"> 8: NC &#8212;&#8211;</span><br />
<span style="color: #339966">*/</span></p>
<p>#include &lt;SD.h&gt;<br />
#include &lt;SPI.h&gt;<br />
#include &lt;AudioZero.h&gt;</p>
<p>void setup()<br />
{<br />
<span style="color: #339966">// debug output at 115200 baud</span><br />
SerialUSB.begin(115200);</p>
<p><span style="color: #339966"> //Wait until USB CDC port connects</span><br />
while(!SerialUSB);</p>
<p><span style="color: #339966">// setup SD-card</span><br />
SerialUSB.print(“Initializing SD card&#8230;”);<br />
if (!SD.begin(4)) {<br />
SerialUSB.println(“ failed!”);<br />
while(true);<br />
}<br />
SerialUSB.println(“ done.”);</p>
<p><span style="color: #339966">// 44100kHz stereo =&gt; 88200 sample rate</span><br />
AudioZero.begin(44100);<br />
}</p>
<p>void loop()<br />
{<br />
int count = 0;</p>
<p>// open wave file from sdcard<br />
File myFile = SD.open(“test.wav”);<br />
if (!myFile) {<br />
<span style="color: #339966">// if the file didn’t open, print an error and stop</span><br />
SerialUSB.println(“error opening test.wav”);<br />
while (true);<br />
}</p>
<p>SerialUSB.print(“Playing”);</p>
<p><span style="color: #339966">// until the file is not finished</span><br />
AudioZero.play(myFile);</p>
<p>SerialUSB.println(“End of file. Thank you for listening!”);<br />
//while (true) ;<br />
}</p>
<p>- Source Code3 : WAV File 출력<br />
</div>
음질은 FM 라디오수준 정도는 되는듯합니다만 사람에 따라 느낌은 다소 다르리라 봅니다. 코덱칩이 붙어있지 않은 상황에서도 ‘아두이노-M0’는 wav정도는 거뜬히 재생할 수 있음을 확인할 수 있었습니다.</p>
<p>· 인코딩작업 조건 : 44.1Khz, 8bit mono sampling<br />
· 라이브러리 출처 : https://www.arduino.cc/en/Tutorial/SimpleAudioPlayerZero</p>
<p>&nbsp;</p>
<p><span style="color: #ff6600;font-size: medium"><strong>4. 시리얼 포트와 관련된 유의 사항</strong></span></p>
<p>아래와 같이 시리얼 클래스는 Serial5를 써서 Pin0, Pin1을 통해 통신(TTL Level)하는 방법과 SerialUSB(CDC)를 사용하는 방법이 있습니다.<br />
즉 Serial5는 H/W타입의 시리얼포트라고 볼 수 있겠습니다.<br />
이 시리얼5와 SerialUSB는 동시에 사용될 수 있으며 매우 간단하게 USB To Serial Bridge를 만들 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-5.png" rel="lightbox[30749]"><img class="alignnone size-full wp-image-30764" alt="35sr  (5)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-5.png" width="593" height="191" /></a></p>
<p><span style="color: #ff9900"><strong>4.1. (Demo4) USB To Serial 브릿지 구현 예</strong></span><br />
아래에 실제로 구현된 Bridge Source입니다.<br />
D0, D1을 통해 TTL신호가 들어오거나 나가게 되며 USB CDC를 통해 PC측과 연결되게 됩니다. 이러한 기능은 유사한 H/W 구조를 가진 ‘아두이노 레오나르도’에서도 구현이 가능합니다.<br />
이때는 시리얼클래스명이 다르므로 주의해야 합니다.</p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p><span style="color: #339966">/*</span><br />
<span style="color: #339966"> leo_usb2serial</span><br />
<span style="color: #339966"> 아두이노 M0를 활용한 USB to Serial Bridge</span><br />
<span style="color: #339966"> 자료참고 : https://petervanhoyweghen.wordpress.com/2012/11/08/</span><br />
<span style="color: #339966"> using-the-leonardo-as-usb-to-serial-converter/</span><br />
<span style="color: #339966"> */</span><br />
static long baud = 57600;<br />
static long newBaud = baud;</p>
<p><span style="color: #339966">// this pin will output the DTR signal (as set by the pc)</span><br />
#define DTR_PIN 13</p>
<p>#define LINESTATE_DTR 1</p>
<p>void lineCodingEvent(long baud, byte databits, byte parity, byte charFormat)<br />
{<br />
newBaud = baud;<br />
}</p>
<p>void lineStateEvent(unsigned char linestate)<br />
{<br />
if(linestate &amp; LINESTATE_DTR)<br />
digitalWrite(DTR_PIN, HIGH);<br />
else<br />
digitalWrite(DTR_PIN, LOW);<br />
}</p>
<p>void setup() {<br />
pinMode(DTR_PIN, OUTPUT);<br />
digitalWrite(DTR_PIN, LOW);</p>
<p>Serial5.begin(baud);<br />
SerialUSB.begin(baud);</p>
<p><span style="color: #339966">//Wait until USB CDC port connects</span><br />
while(!SerialUSB){};<br />
}</p>
<p>void loop() {</p>
<p><span style="color: #339966">// Set the new baud rate</span><br />
if(newBaud != baud) {<br />
baud = newBaud;<br />
SerialUSB.end();<br />
SerialUSB.begin(baud);<br />
}</p>
<p>//Copy byte incoming via TTL serial<br />
if (Serial5.available()) {<br />
char c = (char)Serial5.read();<br />
SerialUSB.write(c);<br />
}</p>
<p>//Copy byte incoming via CDC serial<br />
if (SerialUSB.available()) {<br />
char c = (char)SerialUSB.read();<br />
Serial5.write(c);<br />
}<br />
}</p>
<p>- Source Code4 : USB 2 SERIAL<br />
</div>
<p><span style="color: #ff6600;font-size: medium"><strong>5. (Demo 5) A/D 컨버터관련 사항</strong></span></p>
<p><strong>● 함수명 : analogReference(ref)</strong><br />
· AR_DEFAULT : VDDana(3.3V) 핀의 전압을 사용<br />
· AR_INTERNAL : 1V<br />
· AR_EXTERNAL : 가변적이다.</p>
<p><strong>● 함수명 : analogReadResolution(res)</strong><br />
· 8: 0 to 255<br />
· 10: 0 to 1023<br />
· 12: 0 to 4096 (최고 해상도)</p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p><span style="color: #339966">//Define the Temperature Sensor Pin</span><br />
#define ADCVREF 3.3f<br />
#define ADCMAXCOUNT 4096.0f<br />
#define ADCVDIV 1.0f<br />
#define ADCACCUR (ADCVREF / ADCMAXCOUNT) // 0.00080566<br />
#define ADCRESOLUTION 12</p>
<p>int sensorPin = A0;<br />
int inTmp;</p>
<p><span style="color: #339966">/********************************************************************</span><br />
<span style="color: #339966">* Function Name: int lowPassFilter2(int adVal)</span><br />
<span style="color: #339966">* Return Value:</span><br />
<span style="color: #339966">* Parameters:</span><br />
<span style="color: #339966">* Description: 제1차 저주파 필터로 여러 함수에서 공통적으로 사용될 수 있으므로 구조체를</span><br />
<span style="color: #339966">* 통해 접근이 이뤄지도록 한다.</span><br />
<span style="color: #339966">*</span><br />
<span style="color: #339966">* NOTE: http://wlsgk123123.blog.me/</span><br />
<span style="color: #339966">********************************************************************/</span><br />
#define LPFALPHA 0.95f<br />
int lowPassFilter2(int adVal)<br />
{<br />
static float xLFP;<br />
static float prevX;<br />
static unsigned short firstRun;</p>
<p>if (firstRun == 0){<br />
<span style="color: #339966">// 필터가 호출되면 처음 실행되는 부분으로 함수 내부의 변수들을 초기화 한다.</span><br />
prevX = 0;<br />
firstRun = 1;<br />
}<br />
<span style="color: #339966">// 이전 값에다 현재 값의 LPFALPHA 만큼을 더한 값이 최종 현재 값이 된다. 즉, 이전 값과 현재 값의 일정 퍼센트 만을 더해 현재 값을 생성해 내는 방식으로 필터링 한다.</span><br />
xLFP = (LPFALPHA * prevX) + (1 &#8211; LPFALPHA) * (float)adVal;<br />
prevX = xLFP;<br />
return (unsigned int)prevX; // 정수값 만을 반환 시킨다.<br />
}</p>
<p><span style="color: #339966">/*</span><br />
<span style="color: #339966">-AR_DEFAULT: the default analog reference are 5V or 3.3V; </span><br />
<span style="color: #339966">-AR_INTERNAL: an built-in reference, equal to 1 volts </span><br />
<span style="color: #339966">-AR_EXTERNAL: use as reference the voltage applied to AREF pin in the range 0-5V only. </span><br />
<span style="color: #339966">*/</span><br />
void setup() {<br />
//Start Serial connection to read results in Serial Monitor<br />
SerialUSB.begin(9600);<br />
analogReadResolution(ADCRESOLUTION);<br />
analogReference(AR_DEFAULT);<br />
}</p>
<p>void loop() {<br />
int lpfVar;<br />
int adVal;<br />
float rawADVoltage;<br />
signed int adcMiliVolts;<br />
signed int miliRealTemp;</p>
<p><span style="color: #339966">//Get the sensor raw reading </span><br />
<span style="color: #339966"> //then convert it from a </span><br />
<span style="color: #339966"> // 10bit: 0 to 1023 digital range(1step = 0.00322)</span><br />
<span style="color: #339966"> // 12bit: 0 to 4095 digital range(1step = 0.0008056)</span><br />
<span style="color: #339966"> // 만일 12bit모드면 [21.9℃] 는 888이 읽힌다</span><br />
<span style="color: #339966"> // 888 = 0.719v / 0.0008056</span><br />
adVal = analogRead(sensorPin);</p>
<p><span style="color: #339966">// A/D채널을 읽어</span><br />
lpfVar = lowPassFilter2(adVal); // 저역통과필터</p>
<p><span style="color: #339966">// A/D변환 결과를 Voltage로 변환 시킨다. </span><br />
<span style="color: #339966"> // 이때 절사가 일어나 0.1도의 편차가 발생한다.</span><br />
rawADVoltage = (float)lpfVar * ADCACCUR * ADCVDIV;</p>
<p><span style="color: #339966">// Voltage를 MCP9700의 온도값 형태인 mV로 변환 시켜준다.</span><br />
<span style="color: #339966"> // 719.00 = (0.719 * 10000) / 10</span><br />
adcMiliVolts = rawADVoltage * 1000.0f;</p>
<p><span style="color: #339966">// MCP9700스타일의 온도를 섭씨 형태로 변환 시켜준다.</span><br />
<span style="color: #339966"> // 이때 온도는 219 = 719 &#8211; 500</span><br />
miliRealTemp = adcMiliVolts &#8211; 500;</p>
<p><span style="color: #339966">//Convert the raw value to Celsius</span><br />
<span style="color: #339966"> //temperature = (temperature &#8211; .5) * 100;</span></p>
<p>SerialUSB.print(adVal); SerialUSB.print(“, “);<br />
SerialUSB.print(lpfVar); SerialUSB.print(“, “);<br />
<span style="color: #339966">//SerialUSB.print(rawADVoltage); SerialUSB.print(“, “);</span><br />
<span style="color: #339966"> //SerialUSB.print(adcMiliVolts); SerialUSB.print(“, “);</span><br />
SerialUSB.println(miliRealTemp);</p>
<p><span style="color: #339966">//Print the temperature value to Serial Monitor</span><br />
<span style="color: #339966"> //SerialUSB.println(voltage);</span></p>
<p><span style="color: #339966">//Read the temperature each second</span><br />
delay(10);<br />
}</p>
<p>- Source Code5 : 12Bit ADC<br />
</div>
<p>10bit 상태에서는 ADC 값이 1 증가 혹은 감소할 때마다 0.00322v (3.3v/1024)를 차지하게 됩니다. 이로 인해 MCP9700 등 고정밀 아날로그 센서를 사용하면 수숫점 이하의 온도는 약 0.3V 단위로 증가 혹은 감소하게 됩니다(19.8℃ ▶ 20.1℃).<br />
그러나 12bit에서는 1스텝 당 0.0008056(3.3/4096)이 되므로 좀 더 정확한 소숫점 이하 자릿수 표현이 가능합니다(0.1도씩 증가 : 21.5℃ ▶21.6℃).</p>
<p><span style="color: #ff6600;font-size: medium"><strong>6. 9축 모션센서 쉴드</strong></span></p>
<p>BNO055 9축 모션센서 칩은 종래의 칩에 비하면 대단히 고 집적화된 기능을 포함하고 있습니다. 우선 3축 14비트 가속도계, 3축 16비트 자이로스코프, 3축 지자기센서로 구성되어 있으며 BSX3.0 FusionLib를 통해 손쉬운 접근이 가능하도록 만들어졌습니다.<br />
이 라이브러리는 내장된 32비트 머신에서 실행되며 초당 ±2,000℃ 범위를 출력할 수 있습니다. 이를 통해 3차원 가속기능, 3가지 방향의 지자기 강도데이터를 얻을 수 있고 오일러각도, 회전벡터, 선형가속, 중력벡터와 같은 센서 융합정보를 산출해 낼 수 있습니다.<br />
이 보드는 5V가 인가되지만 내부적으로는 3.3V로 레벨쉬프트 되어 구동됩니다. 또한 이 칩은 네비게이션, 로봇, 운동, 증강현실, 상황인식, 태블릿, 울트라북 등의 하이테크한 전자제품에 두루 사용될 수 있다고 합니다. 그럼 BOSCH의 데이터쉬트에 기재된 내용을 바탕으로 각 파트를 좀 더 상세히 살펴보도록 하겠습니다.</p>
<p><span style="color: #ff9900"><strong>6.1. Bosch Sensortec GmbH의 BNO055칩 스펙</strong></span><br />
<strong></strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-6.png" rel="lightbox[30749]"><img class="alignnone size-full wp-image-30765" alt="35sr  (6)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-6.png" width="518" height="342" /></a></p>
<p><strong><span style="color: #ff9900">6.2 시스템 아키텍처</span></strong><br />
<strong></strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-1.png" rel="lightbox[30749]"><img class="alignnone size-full wp-image-30844" alt="35 re (1)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-1.png" width="452" height="288" /></a></p>
<p><strong><span style="color: #ff9900">6.3. 9축 모션쉴드에 장착된 컨넥터</span></strong><br />
<strong>● 기판 상부에 위치한 커넥터는 다음과 같이 맵핑되어 있습니다.</strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-7.png" rel="lightbox[30749]"><img class="alignnone  wp-image-30766" alt="35sr  (7)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-7.png" width="358" height="168" /></a></p>
<p><strong>● 기판 상부에 위치한 솔더링 점퍼</strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-1.png" rel="lightbox[30749]"><img class="alignnone  wp-image-30760" alt="35sr  (1)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35sr-1.png" width="361" height="90" /></a><br />
모션쉴드와 아두이노-M0는 TWI를 통해 서로 연결되게 됩니다.<br />
INT핀은 기본적으로 오픈이 되어 있으나 인터럽트 서비스 등을 하기위해서는 D7 또는 D2에 연결되어야 합니다.</p>
<p><strong><span style="color: #ff9900">6.4. 센서 테스트</span></strong><br />
센서를 테스트 해보기 전에 Pitch, Roll, Yaw에 대해서 간단히 짚고 넘어갑니다.<br />
말 그대로 모션을 처리하기 위해서는 3차원 좌표계에서 물체의 위치나 이동경로를 표현할 수 있어야 하는데, 이와 관련된 아주 기초적인 용어가 위에 언급한 피치, 롤, 요입니다. 이러한 용어는 항공기, 드론, 균형로봇 등에서 활발하게 사용됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-19.jpg" rel="lightbox[30749]"><img class="alignnone  wp-image-30870" alt="35 re (19)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-19-620x430.jpg" width="496" height="344" /></a></p>
<p>● Pitch(X축) : 피치는 비행기의 승강, 하강 개념입니다. 즉 조종사가 조종간을 앞으로 밀거나 뒤로 당기면 동체가 상승, 하강을 하게 되는데 여기에서 사용되는 용어에 해당합니다.<br />
● Roll(Y축) : 항공기의 조종간을 좌우로 밀면 동체가 그에 따라 기울어질 때 나타나게 되는 현상입니다.<br />
● Yaw(Z축) : 자동차의 핸들을 돌리면 좌, 우측으로 주행하는 방향을 칭하며 항공기에서는 왼발, 오른발 패달에 해당합니다.</p>
<p>가속도 센서는 현재의 기울어짐을 정확히 나타내는데 사용됩니다. 자이로센서는 센서가 회전이 되는 상황에서 시간에 따른 움직임을 추적할 수 있으며 적분방식으로 사용되고 이에 따라 시간에 따른 오차를 동반하게 됩니다.<br />
따라서 정확한 피치와 롤 값을 얻기 위해 가속도센서와 자이로센서를 동시에 사용하게 됩니다. 여기서 가속도센서와 자이로센서만으로는 요 값을 정확히 산정해 낼 수 없는 문제에 봉착하며 이를 해결하기 위해 지자기센서가 사용됩니다. 이러한 내용을 좀 더 깊이 있게 접하고자 하는 독자는 아래 주소를 참고하시기 바랍니다.<a href="//www.hardcopyworld.com/ngine/aduino/index.php/archives/126)" target="_blank">(http://www.hardcopyworld.com/ngine/aduino/index.php/archives/126)</a><br />
이론은 이 정도로만 하고 9축 모션쉴드를 동작시켜 보고 과연 피치, 롤, 요가 어떻게 반응 하는지를 그래프로 살펴보도록 하겠습니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-20.jpg" rel="lightbox[30749]"><img class="aligncenter" alt="35 re (20)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-20.jpg" width="493" height="510" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림9 : 9축 모션센서 출력</td>
</tr>
</tbody>
</table>
<p>우선 Serial Oscilloscope 프로그램을 아래 주소에서 다운로드 받습니다. (<a href="http://www.x-io.co.uk/serial-oscilloscope/" target="_blank">http://www.x-io.co.uk/serial-oscilloscope/</a>) 다음으로 아래의 프로그램을 ‘아두이노-M0’로 내려 보냅니다.</p>
<p>이 프로그램에는 쉴드에서 얻어진 가속도 데이터를 1줄에 3개씩 묶어 Native USB포트를 통해 PC로 전송을 하게 됩니다.<br />
Serial Oscilloscope로 데이터가 들어오면 첫 번째 데이터는 적색, 두 번째 데이터는 녹색, 세 번째는 청색으로 그래프가 그려지게 됩니다.<br />
아래 그래프를 보면 가속도 센서에서 피치(X축), 롤(Y축) 정보가 잘 얻어 짐을 알 수 있습니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-21.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30872" alt="35 re (21)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-21-620x398.jpg" width="620" height="398" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림10 : 가속도센서 출력화면</td>
</tr>
</tbody>
</table>
<p>arduino.org에서 공개해 놓은 예제를 Serial Oscilloscope로 볼 수 있도록 조금만 변경해 봅니다.</p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p><span style="color: #339966">/********************************************************************</span><br />
<span style="color: #339966">* Copyright (C) 2011 &#8211; 2014 Bosch Sensortec GmbH</span><br />
<span style="color: #339966">*</span><br />
<span style="color: #339966">* Usage: Example code to stream Accelerometer data</span><br />
<span style="color: #339966">*</span><br />
<span style="color: #339966">* License:</span><br />
<span style="color: #339966">* Redistribution and use in source and binary forms, with or without</span><br />
<span style="color: #339966">* modification, are permitted provided that the following conditions are met:</span><br />
<span style="color: #339966">* Redistributions of source code must retain the above copyright</span><br />
<span style="color: #339966">* notice, this list of conditions and the following disclaimer.</span><br />
<span style="color: #339966">* Redistributions in binary form must reproduce the above copyright</span><br />
<span style="color: #339966">* notice, this list of conditions and the following disclaimer in the</span><br />
<span style="color: #339966">* documentation and/or other materials provided with the distribution.</span><br />
<span style="color: #339966">* Neither the name of the copyright holder nor the names of the</span><br />
<span style="color: #339966">* contributors may be used to endorse or promote products derived from</span><br />
<span style="color: #339966">* this software without specific prior written permission.</span><br />
<span style="color: #339966">*</span><br />
<span style="color: #339966">* The information provided is believed to be accurate and reliable.</span><br />
<span style="color: #339966">* The copyright holder assumes no responsibility for the consequences of use</span><br />
<span style="color: #339966">* of such information nor for any infringement of patents or</span><br />
<span style="color: #339966">* other rights of third parties which may result from its use.</span><br />
<span style="color: #339966">* No license is granted by implication or otherwise under any patent or</span><br />
<span style="color: #339966">* patent rights of the copyright holder.</span><br />
<span style="color: #339966">*/</span></p>
<p><span style="color: #339966">/* </span><br />
<span style="color: #339966">9축모션쉴드를 테스트해보기 위해 만들어진 프로그램</span><br />
<span style="color: #339966">*동작시키는 방법*</span><br />
<span style="color: #339966">1. Serial Osciloscope 프로그램을 아래 주소에서 다운로드 받는다.</span><br />
<span style="color: #339966"> ( http://www.x-io.co.uk/serial-oscilloscope/ )</span><br />
<span style="color: #339966">2. 아래 3개 파트로 나뉘어진 주석을 한 영역씩만 풀어가며 아두이노-m0로 내려 보낸다. </span><br />
<span style="color: #339966">3. Serial Osciloscope로 데이터가 들어오면 첫번째 데이터는 적색, </span><br />
<span style="color: #339966"> 두번째 데이터는 녹색, 세번째는 청색으로 그래프가 그려진다.</span><br />
<span style="color: #339966">4. 결과 : 가가속도 센서에서는 피치(X축), 롤(Y축) 정보가 잘 얻어 짐을 알 수 있다.</span><br />
<span style="color: #339966">*/</span></p>
<p><span style="color: #339966">//Contains the bridge code between the API and the Arduino Environment</span><br />
#include “NAxisMotion.h”<br />
#include &lt;Wire.h&gt;</p>
<p><span style="color: #339966">//Object that for the sensor</span><br />
NAxisMotion mySensor;</p>
<p><span style="color: #339966">//To store the last streamed time stamp</span><br />
unsigned long lastStreamTime = 0;</p>
<p><span style="color: #339966">//To stream at 25Hz without using additional timers</span><br />
<span style="color: #339966">//(time period(ms) =1000/frequency(Hz))</span><br />
const int streamPeriod = 40;</p>
<p><span style="color: #339966">//Flag to update the sensor data</span><br />
<span style="color: #339966">//Default is true to perform the first read before the first stream</span><br />
bool updateSensorData = true;</p>
<p><span style="color: #339966">//This code is executed once</span><br />
void setup() {<br />
<span style="color: #339966">//Peripheral Initialization</span></p>
<p><span style="color: #339966">//Initialize the Serial Port</span><br />
<span style="color: #339966">//to view information on the Serial Monitor</span><br />
SerialUSB.begin(115200);</p>
<p>while(!SerialUSB);</p>
<p><span style="color: #339966">//Initialize I2C communication to the let the</span><br />
<span style="color: #339966">//library communicate with the sensor.</span><br />
I2C.begin();</p>
<p><span style="color: #339966">//Sensor Initialization</span><br />
<span style="color: #339966">//The I2C Address can be changed here</span><br />
<span style="color: #339966">//inside this function in the library</span><br />
mySensor.initSensor();</p>
<p><span style="color: #339966">//Can be configured to other operation modes as desired</span><br />
mySensor.setOperationMode(OPERATION_MODE_NDOF);</p>
<p><span style="color: #339966">//The default is AUTO</span><br />
<span style="color: #339966">//Changing to manual requires calling the relevant</span><br />
<span style="color: #339966">//update functions prior to calling the read functions</span><br />
mySensor.setUpdateMode(MANUAL);<br />
<span style="color: #339966">//Setting to MANUAL requires lesser reads to the sensor</span></p>
<p>mySensor.updateAccelConfig();<br />
updateSensorData = true;</p>
<p>SerialUSB.println();<br />
SerialUSB.println(“Default accelerometer configuration settings&#8230;”);<br />
SerialUSB.print(“Range: “);<br />
SerialUSB.println(mySensor.readAccelRange());<br />
SerialUSB.print(“Bandwidth: “);<br />
SerialUSB.println(mySensor.readAccelBandwidth());<br />
SerialUSB.print(“Power Mode: “);<br />
SerialUSB.println(mySensor.readAccelPowerMode());</p>
<p><span style="color: #339966">//Countdown</span><br />
SerialUSB.println(“Streaming in &#8230;”);<br />
SerialUSB.print(“3&#8230;”);<br />
delay(1000); //Wait for a second<br />
SerialUSB.print(“2&#8230;”);<br />
delay(1000); //Wait for a second<br />
SerialUSB.println(“1&#8230;”);<br />
delay(1000); //Wait for a second<br />
}</p>
<p>void loop() { <span style="color: #339966">//This code is looped forever</span><br />
<span style="color: #339966">//Keep the updating of data as a separate task</span><br />
if (updateSensorData) {<br />
//Update the Accelerometer data<br />
mySensor.updateAccel();<br />
//Update the Linear Acceleration data<br />
mySensor.updateLinearAccel();<br />
//Update the Gravity Acceleration data<br />
mySensor.updateGravAccel();<br />
//Update the Calibration Status<br />
mySensor.updateCalibStatus();<br />
updateSensorData = false;<br />
}<br />
if ((millis() &#8211; lastStreamTime) &gt;= streamPeriod) {<br />
lastStreamTime = millis();<br />
//Accelerometer X-Axis data : 적색그래프<br />
SerialUSB.print(“ aX: “);<br />
SerialUSB.print(mySensor.readAccelX());<br />
SerialUSB.print(“m/s2, “);</p>
<p>//Accelerometer Y-Axis data : 녹색그래프<br />
SerialUSB.print(“ aY: “);<br />
SerialUSB.print(mySensor.readAccelY());<br />
SerialUSB.print(“m/s2, “);</p>
<p>//Accelerometer Z-Axis data : 청색그래프<br />
SerialUSB.print(“ aZ: “);<br />
SerialUSB.print(mySensor.readAccelZ());<br />
SerialUSB.print(“m/s2, “);</p>
<p>SerialUSB.println();<br />
updateSensorData = true;<br />
}<br />
}</p>
<p>- Source Code5 : 가속도센서 테스트<br />
</div>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-22.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30873" alt="35 re (22)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-22-620x348.jpg" width="620" height="348" /></a></td>
</tr>
<tr>
<td style="text-align: center">9축모션쉴드를 장착한 모습</td>
</tr>
</tbody>
</table>
<p>모션쉴드를 ‘아두이노-M0’에 결합하여 실제로 어떻게 동작 되는지 까지를 살펴봤습니다. 지면 관계상 위 예에서는 가속도센서만 그래프를 그렸습니다만 자이로센서나 지자기센서도 동일한 방식으로 접근하여 실제로 동작되는 모습들을 충분히 눈으로 볼 수 있을 것으로 봅니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-23.jpg" rel="lightbox[30749]"><img class="alignnone size-large wp-image-30874" alt="35 re (23)" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/35-re-23-620x348.jpg" width="620" height="348" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림11 : 모션센서 방향각, X축 방향은 보드의 가로방향이며 Y축은 세로방향, Z축은 중심점이다</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><strong style="color: #ff6600">7. 마무리</strong></p>
<p>아두이노 진영이 이처럼 각광 받을 수 있었던 것은 폼펙터 표준화와 쉴드 호환성이 가장 큰 요인이 아니었나 봅니다.<br />
심지어 아두이노와 아주 이질적으로 보이는 제조사 측에서도 아두이노의 폼펙터를 따라하고 심지어 명령어까지도 동일하게 만드는 것을 보면 대세는 아두이노가 맞는 듯합니다. 이러한 상황에서 최근에 출시된 ‘아두이노-M0, 아두이노-M0-Pro, 아두이노-Zero’ 등은 동일한 MCU를 사용하기에 성능은 대동소이하며 컴퓨팅 파워에 목말라 하던 하이엔드 지향형 사용자층에게 강하게 어필 할 수 있을 것으로 봅니다.<br />
특히 ‘아두이노-M0’의 기능 중 DAC는 간단한 효과음, 음악, 목소리 등을 발생시킬 수 있음에 따라 다양한 용도가 있을 듯합니다.<br />
9축 모션센서 쉴드 또한 막강한 성능을 자랑하긴 합니다만, 이 쉴드보드는 임베디드컴퓨터 쪽을 전문을 다루는 사람이 아니라면 상당한 진입장벽을 느낄 수도 있을 것 같습니다. ‘아두이노-M0’와 모션쉴드를 결합하면 게임컨트롤러, 균형로봇, 드론 등등에 매우 유용하게 사용될 수 있을 것으로 기대됩니다.<br />
시간이 허락되는 대로 모션쉴드를 응용한 재미나는 프로젝트로 진행해보고자 하며 제 블로그(blog.naver.com/crucian2k3)에서 결과물을 보실 수 있을 것입니다.<br />
감사합니다.<br />
<span style="color: #ff6600"><strong>8. 참고자료</strong></span></p>
<p>1. Arduino-M0 공식제품 소개서 : www.arduino.org<br />
2. Arduino-M0 ‘How to your board.’ Document : labs.arduino.org<br />
3. 9축 모션쉴드 : www.arduino.org<br />
4. 자세제어와 관련된 아티클 : www.hardcopyworld.com<br />
5. DAC 라이브러리 및 예제 : www.arduino.cc<br />
6. 시리얼 오실로스코프 : www.x-io.co.uk</p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2016/03/Cap-2016-05-20-11-01-08-470.jpg" rel="lightbox[30749]"><img class="alignnone size-full wp-image-30875" alt="Cap 2016-05-20 11-01-08-470" src="http://www.ntrexgo.com/wp-content/uploads/2016/03/Cap-2016-05-20-11-01-08-470.jpg" width="474" height="194" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/30749/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[30호] 너무 쉬운 아두이노 DIY ② &#8211; 카멜레온 반지 + 빨노파 게임기 만들기</title>
		<link>http://www.ntrexgo.com/archives/28375</link>
		<comments>http://www.ntrexgo.com/archives/28375#comments</comments>
		<pubDate>Fri, 15 May 2015 06:27:24 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[프로젝트]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[devicemart]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[jcnet]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[아두이노]]></category>
		<category><![CDATA[제이씨넷]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=28375</guid>
		<description><![CDATA[[너무 쉬운 아두이노 DIY(Do It Yourself)]
제이씨넷 신상석 연구소장님의 친절하고 꼼꼼한 강의!
아두이노를 가지고 이것 저것 만들어봅시다.^^
출발!!]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/30-아두이노-카멜레온.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28290" alt="30 아두이노 카멜레온" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/30-아두이노-카멜레온.jpg" width="620" height="246" /></a></p>
<p><strong>             글 ㅣ 신상석 ssshin@jcnet.co.kr</strong></p>
<p>&nbsp;</p>
<table cellpadding="10" align="center">
<tbody>
<tr>
<td style="border: 1px solid #000000; background-color: #e6e6fa;" valign="middle">  여러분, 안녕하세요. 앞으로 1년에 걸쳐(6번 정도) [너무 쉬운 아두이노 DIY(Do It Yourself)] 강의를 진행할 강사 신상석입니다.<br />
제 소개 간단히 드립니다.<br />
· 서울대 제어계측공학과(학사) →, KAIST 전산과(석사) → KAIST 전산과(박사 수료)<br />
· ETRI 책임연구원 → 해동정보통신 연구소장 → 욱성전자 연구소장 → (현재) 제이씨넷 연구소장, 상명대학교 컴퓨터시스템공학과 겸임교수, 임베디드홀릭 카페(http://cafe.naver.com/lazydigital) 부매니저, 아두이노 / AVR 강사<br />
· 자격증 : 전자계산기 기술사<br />
· 취미 : 영화보기, 바둑두기, 책읽기, 글쓰기(?), 여행하기, 이야기하기<br />
· 연락처 : ssshin@jcnet.co.kr, 있는그대(cafe.naver.com/lazydigital)<span style="font-size: 11px; line-height: 19px;">이 강의는 아두이노를 가지고 간단하게 생활에 필요한 용품을 만들어 보는 강의입니다. 뚝딱뚝딱 뭔가 자신만의 DIY 용품을 만들어 보는 쏠쏠한 재미가 있는 강의라고나 할까요? 이미 주변에 아두이노와 관련한 많은 책이 출간되었고 카페나 블로그를 통하여 강의가 진행된 경우도 꽤나 많이 있는데도 불구하고, 이 지면을 통하여 강의를 개설한 이유는 다음과 같습니다.</span>&nbsp;</p>
<p>1. 아두이노의 초보자들을 위한 쉽고 재미있는 강의가 거의 없는 것 같아, 가능하면 초등학생(?)까지도 함께 해 볼 수 있는 그런 강의를 한 번 해보고 싶어서…<br />
2. 아두이노를 가지고 뭔가 조금은 다른, 자신만의 창의적인(?) DIY를 할 수 있는 자리를 만들어주고 싶어서…<br />
3. 디바이스마트매거진은 임베디드와 관련된 독자들이 많고, 발행 부수도 많아, 저와 제가 속한 회사(제이씨넷) 그리고 임베디드홀릭 카페의 홍보에 도움이 될 것 같아서…</p>
<p><img class="alignright" style="font-size: 11px; line-height: 19px;" alt="아두이노 계획표" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8-%EA%B3%84%ED%9A%8D%ED%91%9C-300x133.png" width="300" height="133" />현재 구상하고 있는 회차별 내<span style="font-size: 11px; line-height: 19px;">용을 간략</span><span style="font-size: 11px; line-height: 19px;">하게 정</span><span style="font-size: 11px; line-height: 19px;">리해 보면 다음과 같습니다. (변경될 수 있습니다.) 앞으로 즐겁고 알찬 강의가 될 수 있도록 최선을 다할 것을 약속 드리며, </span><span style="font-size: 11px; line-height: 19px;"><span style="font-size: 11px;">이 강의를 보는 독자들도 메일이나 카페를  통하여 Q&amp;A(Question &amp; Answer)나 피드백을 주셔서, 함께 정감을 나눌 수 있는 계기가 되기를 기대해 봅니다.</span></span></td>
</tr>
</tbody>
</table>
<p dir="ltr">   여러분, 안녕하세요. 신상석 강사입니다. 이번 회에서는 컬러 LED를 가지고 만들 수 있는 DIY 작품을 2가지를 만들어 보겠습니다. 하나는 여러가지 색깔로 변하는 ‘카멜레온 반지’이고, 또 하나는 가위 바위 보 게임과 비슷한 ‘빨노파 게임기’입니다. 간단하고 재미있는 DIY이므로, 이를 약간씩 응용하여 최종적으로는 각자 자신만의 개성있는 DIY 작품을 만들어 보면 좋겠습니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large; background-color: #008000;"><strong><span style="color: #ffffff;"> ■ 카멜레온 반지                                                                                            </span></strong></span></p>
<p>   카멜레온(chameleon)을 아시나요? ‘땅 위의 사자’라는 뜻을 가진 그리이스어에서 유래한 카멜레온은 주변의 색에 따라 아주 비슷한 보호색으로 변하는 능력을 가진 재주꾼입니다. 자신의 감정을 표현하기 위하여 자신이 원하는 색깔로 변할 수도 있다고 하니, 세상에는 인간 말고도 오묘한 동물이 정말 많은 것 같네요.</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-02.jpg" rel="lightbox[28375]"><img class=" wp-image-28392 alignleft" style="margin-left: 10px; margin-right: 10px;" alt="30 카멜레온반지 02" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-02-620x384.jpg" width="260" height="161" /></a></p>
<p> 그런데 “카멜레온 반지”가 뭐냐구요? 아마도 다들 모르실텐데요. 왜냐하면 제가 얼마 전에 작명한 이름이어서요. 카멜레온 반지는 카멜레온처럼 반지의 색깔이 자유자재로 변하는 반지를 말합니다. 가만히 있으면 저절로 색깔이 변하는 반지라고나 할까요?.</p>
<p>&nbsp;</p>
<p>아래 그림은 12개의 달을 상징하는 보석으로 탄생석입니다. 에머랄드, 다이아몬드, 루비… 참 아름답지요. 무엇보다도 알록달록한 색깔이 압권입니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-03.jpg" rel="lightbox[28375]"><img class="aligncenter size-large wp-image-28393" alt="30 카멜레온반지 03" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-03-620x460.jpg" width="620" height="460" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">   그래서 오늘은 이렇게 멋진 보석이 콕 박혀있는 반지를 상상하며 12개의 보석으로 변신이 가능한 카멜레온 반지를 만들어볼까 합니다. 반지의 링은 준비가 되었다고 가정하고 보석 부분만 카멜레온처럼 색깔이 변하도록 만들면 될 것 같네요. 그런데, 어떻게 만드냐구요? 예. 컬러 LED로 만들지요.</p>
<p dir="ltr">
<p dir="ltr"><span style="font-size: large; background-color: #008000;"><strong><span style="color: #ffffff;"> ■ 컬러 LED                                                                                              </span></strong></span></p>
<p>   컬러 LED는 빨강, 녹색, 파랑 LED 3개를 하나로 모아 1개의 캡슐로 씌운 LED입니다. 그러니까 3개의 LED를 바짝 붙여서 한 개의 전구 속에 넣은 것이지요. 요렇게요.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-04.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28394" alt="30 카멜레온반지 04" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-04.jpg" width="405" height="294" /></a></p>
<p>다리가 가장 긴 것이 공통 애노드(Anode, +), 또는 공통 캐소드(Cathode, -)로 공통 애노드 타입의 경우는 (+) 핀을 High(VCC, 5V)에 연결하고, R, G, B 핀에는 Low(GND, 0V) 값을 연결하는 경우에만 불이 들어오고, 공통 캐소드 타입의 경우는 반대로 (-) 핀을 Low(GND, 0V)에 연결하고, R, G, B 핀에는 High(VCC, 5V) 값을 연결하는 경우만 불이 들어옵니다. (물론, 지난번 설명처럼 직렬 저항은 연결한다고 가정하였습니다.) 여기서는 아래와 같이 공통 캐소드 타입의 컬러 LED를 사용하여 제작해 보는 것으로 하겠습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-05.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28395" alt="30 카멜레온반지 05" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-05.jpg" width="330" height="248" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;"><span style="font-size: x-small;">(53N RGB 262C-9001, 참조 : 디바이스마트)</span></p>
<p>&nbsp;</p>
<p dir="ltr">  어 그런데, LED가 3개면 다리가 6개라야 되는 것 아닌가요? 다리가 4개 밖에 없는데&#8230;</p>
<p dir="ltr">  예, 원래는 6개지만 (-)에 해당되는 다리는 공통이니까(공통 캐소드), 빨강, 녹색, 파랑, 공통 (-), 이렇게 다리를 4개로 줄일 수 있겠습니다. 지난번 3색 신호등을 만들 때 각 LED의 (-)에 해당되는 것은 모두 GND로 함께 연결한 것을 생각해 보면 쉽게 이해가 갈 겁니다..</p>
<p dir="ltr">  그렇다면, 이 컬러 LED는 빨강, 녹색, 파랑으로 색깔이 고정되어 있는데, 어떻게 카멜레온처럼 여러가지 오묘한 색깔을 나타낼 수 있을까요?</p>
<p dir="ltr">  이 질문에 대한 해답은 바로 빛의 혼합에 있습니다.</p>
<p dir="ltr">  아래 그림은 누구나 초등학교 시절에 한 번은 보았을 것입니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-06.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28396" alt="30 카멜레온반지 06" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-06.jpg" width="541" height="230" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">  왼쪽은 빛의 삼원색(빨강(Red), 녹색(Green), 파랑(Blue), RGB)이고, 오른쪽은 색의 삼원색(자홍(Magenta), 청록(Cyan), 노랑(Yellow))입니다. 우리는 LED를 가지고 색깔을 만들 예정이므로 빛의 3원색의 경우만 보면, 3개의 빛이 합해지는 부분에 다른 색이 나타나는 것을 볼 수 있습니다.</p>
<p>&nbsp;</p>
<p dir="ltr">   ■ 빨강 + 녹색 = 노랑</p>
<p dir="ltr">   ■ 녹색 + 파랑 = 청록</p>
<p dir="ltr">   ■ 파랑 + 빨강 = 자홍</p>
<p dir="ltr">   ■ 빨강 + 녹색 + 파랑 = 흰색</p>
<p>&nbsp;</p>
<p dir="ltr">  오. 그렇네요. 이렇게 하니까 4개의 색이 더 만들어졌습니다. 하지만, 탄생석과 같이 알록달록한 여러가지 색은 아직도 만들어지지 않았는데 이것은 어떻게 만들 수 있을까요?</p>
<p dir="ltr">  이것은 광량(빛의 양)에 해답이 있습니다.</p>
<p dir="ltr">  즉, 빨강과 녹색, 파랑을 각각 100%씩 섞으면 흰색이 나오지만, 예를 들어 빨강 100% + 녹색 75% + 파랑 75% 로 빛을 섞으면 핑크(Pink)색이 나오는 원리입니다.</p>
<p dir="ltr">  결국 관건은 우리가 3가지 LED의 광량을 강하게 했다 약하게 했다 조절할 수 있느냐 하는 것인데 결론은 “할 수 있다” 입니다.</p>
<p>  아래 그림을 보시지요.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-07.jpg" rel="lightbox[28375]"><img class="aligncenter size-large wp-image-28397" alt="30 카멜레온반지 07" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-07-620x164.jpg" width="620" height="164" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">  원래 디지털 값은 <strong>High(1, 5V, 100%), Low(0, GND, 0%)</strong>의 2가지 값밖에 존재하지 않지만, 위 그림과 같이 어떤 핀의 값을 <strong>High ▶ Low ▶ High ▶ Low</strong> … 형태로 상태를 변환시키게 되면, 출력 전압의 평균(%)은 빨강색 점선과 같은 값을 갖게 됩니다. 예를 들어 High를 유지하는 시간과 Low를 유지하는 시간의 비율이 3:7이라면 평균값은 High값의 30%가 된다고 말할 수 있는 것이지요. 이렇게 주기적으로 High ▶ Low를 반복하는 신호를 펄스(Pulse)라고 하는데, 이 펄스(Pulse)의 폭(Width)을 조절(Modulation)하여 평균값을 조절하는 방법을 PWM(Pulse Width Modulation)이라고 합니다. 즉, PWM을 이용하면 디지털 출력인 High(1)와 Low(0)을 가지고 0.3(30%), 0.85(85%)와 같은 아날로그 값을 만들 수 있게 되는 것입니다. 핑크색을 컬러 LED로 표현해 본다면 아래와 같이 되겠네요.</p>
<p>    ■ 핑크 = 빨강 PWM 100% + 녹색 PWM 75% + 파랑 PWM 75%</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large; background-color: #008000;"><strong><span style="color: #ffffff;"> ■ PWM 출력을 만드는 방법                                                                   </span></strong></span></p>
<p dir="ltr">  이제 PWM 출력을 만드는 방법을 알아봅시다. 아두이노에서는 다음과 같은 analogWirte( ) 라이브러리 함수를 제공하는데 이것을 이용하면 PWM 0% ~ PWM 100% 까지의 펄스를 아주 쉽게 만들 수 있습니다. 단, analogWrite( ) 함수를 사용할 수 있는 핀은 핀 번호 앞에 틸드(~) 표시가 있는 핀으로 한정되어 있다는 점은 주의하셔야 합니다.</p>
<p>&nbsp;</p>
<p dir="ltr">   <span style="color: #008000;"> ■ analogWrite(pin, value)</span></p>
<p dir="ltr"><span style="color: #008000;">    ■ pin : 입출력핀 번호에 해당되는 숫자, 틸드(~) 표시가 되어 있는 핀만 가능</span></p>
<p dir="ltr"><span style="color: #008000;">    ■ value : 0~255까지의 값으로 0이면 PWM 0%, 255이면 PWM 100%를 의미함</span></p>
<p>&nbsp;</p>
<p dir="ltr">  예를 들어 “analogWrite(5, 128)”으로 프로그램 한다면, 핀 5번의 출력을 PWM 50%(128/256 = 0.5 = 50%)로 출력한다는 의미가 되겠습니다.</p>
<p dir="ltr">  왜 value 값으로 알기 쉽게 0~100을 사용하지 않고 0~255를 사용하게 되었을까요? 사실 그렇게 라이브러리를 만들 수도 있겠지만 디지털 세계는 2진법으로 이루어져 있어, 1, 2, 4, 8, 16, 32, 64, 128, 256 이렇게 만들어지는 수를 더욱 좋아한답니다. 아두이노 내부적으로 본다면 Atmega328, 타이머, ADC(Analog Digital Converter) 등 좀 더 자세하게 알아야 할 것이 많지만 우리는 그냥 이 정도만 알고 넘어가는 것으로 하겠습니다.</p>
<p dir="ltr">  이제 색의 배합을 %로 할 수 있다는 것을 배웠으므로, 간단히 한 번 연습해 보지요.</p>
<p dir="ltr">  노랑과 흰색, 핑크를 R, G, B의 value 값으로 표현해 보세요. 아래와 같이 나오면 정답!.</p>
<p>&nbsp;</p>
<p dir="ltr">   ▶ 노랑 : R(255), G(255), B(0)</p>
<p dir="ltr">   ▶ 흰색 : R(255), G(255), B(255)</p>
<p dir="ltr">   ▶ 핑크 : R(255), G(192), B(192) // 192/256 = 0.75 = 75%</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large; color: #ffffff; background-color: #008000;"><strong> ■ 컬러 LED 연결                                                                    </strong></span></p>
<p>&nbsp;</p>
<p dir="ltr">  자, 그럼 이제 기본 원리는 모두 이해했으니, 프로그램을 하기 전에 컬러 LED를 아두이노와 연결해 보겠습니다. 컬러 LED는 시중에서 구할 수 있는 것 아무거나 구하셔도 됩니다.  R, G, B 및 (-) 핀을 아래와 같이 연결하면 되겠네요.</p>
<p>&nbsp;</p>
<p dir="ltr">    ■ R (가장 왼쪽) ←→ 330오옴 저항 ←→ 아두이노 6번핀</p>
<p dir="ltr">    ■ (-) (왼쪽에서 2번째, 길이가 가장 긴 다리) ←→ 아두이노 GND</p>
<p dir="ltr">    ■ G (오른쪽에서 2번째) ←→ 330오옴 저항 ←→ 아두이노 5번핀</p>
<p dir="ltr">    ■ B (가장 오른쪽) ←→ 330오옴 저항 ←→ 아두이노 3번핀</p>
<p>&nbsp;</p>
<p dir="ltr">  우리가 연결한 아두이노 6번, 5번, 3번 핀의 옆쪽에 실크로 쓰여진 숫자에는 틸드(~) 표시가 되어 있는데, 이것은 아두이노 핀 중에서 analog_write( ) 함수로 PWM 신호를 만들어 낼 수 있는 핀이라는 것은 앞에서 설명하였습니다. 우리는 3개 핀에 모두 PWM을 사용하여야 하므로 반드시 틸드(~) 표시가 연결된 핀을 R, G, B에 연결해야 합니다. 아래의 그림처럼 연결이 되겠네요.</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-08.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28398" alt="30 카멜레온반지 08" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-08.jpg" width="602" height="433" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #ffffff; font-size: large; background-color: #008000;"><strong> ■ 연습 프로그램 작성                                                                   </strong></span></p>
<p dir="ltr">  이제 연결은 끝났으니 프로그램을 작성하여 실행할 차례입니다.</p>
<p dir="ltr">  최종 목표는 카멜레온 반지이지만 기왕 회로를 꾸몄으니 지난번 배운 것도 복습할 겸 7가지 색(빨강, 녹색, 파랑, 노랑, 청록, 자홍, 흰색)을 먼저 만들어 보도록 하겠습니다.</p>
<p dir="ltr">  아래는 기능 규격입니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: small;"><strong>[7가지 색 만들기 기능 규격]</strong></span></p>
<p dir="ltr">  1. LED가 ON되는 순서는 빨강 ▶ 녹색 ▶ 파랑 ▶ 노랑 ▶ 청록 ▶ 자홍 ▶ 흰색 ▶ 빨강 ▶ … 으로 무한 반복됨</p>
<p dir="ltr">  2. LED는 어떤 한 순간 한가지 색깔만 표시함</p>
<p dir="ltr">  3. 표시된 색깔은 1초 동안 켜진 상태를 유지함</p>
<p>&nbsp;</p>
<p dir="ltr">  위의 7가지 색 중 노랑, 청록, 자홍은 동시에 2개의 LED를 ON 하면 얻을 수 있고 흰색은 3개의 LED를 동시에 ON하면 얻을 수 있으므로 analogWrite( ) 함수를 사용하지 않고 digitalWrite( ) 함수만 사용하여도 충분히 구현이 가능하겠습니다. 스스로 혼자 구현해 보신 후 10분 후에 함께 해보도록 하지요. (10분간 실시!)</p>
<p dir="ltr">(1분), (2분), ……, (10분)</p>
<p dir="ltr">모두 잘 되셨으리라 생각합니다. 함께 해 보겠습니다.</p>
<table style="border-color: #000000; border-width: 0px; ; width: 600px;" border="0">
<tbody>
<tr>
<td style="border: 1px solid #000000;">
<p dir="ltr">#define RED_LED 6</p>
<p dir="ltr">#define GREEN_LED 5</p>
<p dir="ltr">#define BLUE_LED 3</p>
<p dir="ltr">void setup()</p>
<p dir="ltr">{</p>
<p dir="ltr"> pinMode(RED_LED, OUTPUT);</p>
<p dir="ltr"> pinMode(GREEN_LED, OUTPUT);</p>
<p dir="ltr"> pinMode(BLUE_LED, OUTPUT);</p>
<p dir="ltr">}</p>
<p dir="ltr">void loop()</p>
<p dir="ltr">{</p>
<p dir="ltr"> digitalWrite(RED_LED, HIGH);     digitalWrite(GREEN_LED, LOW);   digitalWrite(BLUE_LED, LOW); // R=ON, G=OFF, B=OFF &#8211;&gt; 빨강(Red)</p>
<p dir="ltr"> delay(1000);</p>
<p dir="ltr"> digitalWrite(RED_LED, LOW);     digitalWrite(GREEN_LED, HIGH);   digitalWrite(BLUE_LED, LOW); // R=OFF, G=ON, B=OFF &#8211;&gt; 녹색(Green)</p>
<p dir="ltr"> delay(1000);</p>
<p dir="ltr"> digitalWrite(RED_LED, LOW);     digitalWrite(GREEN_LED, LOW);   digitalWrite(BLUE_LED, HIGH); // R=OFF, G=OFF, B=ON &#8211;&gt; 파랑(Blue)</p>
<p dir="ltr"> delay(1000);</p>
<p dir="ltr"> digitalWrite(RED_LED, HIGH);     digitalWrite(GREEN_LED, HIGH);   digitalWrite(BLUE_LED, LOW); // R=ON, G=ON, B=OFF &#8211;&gt; 노랑(Yellow)</p>
<p dir="ltr"> delay(1000);</p>
<p dir="ltr">digitalWrite(RED_LED, LOW);     digitalWrite(GREEN_LED, HIGH);   digitalWrite(BLUE_LED, HIGH); // R=OFF, G=ON, B=ON &#8211;&gt; 청록(Cyan)</p>
<p dir="ltr"> delay(1000);</p>
<p dir="ltr">digitalWrite(RED_LED, HIGH);     digitalWrite(GREEN_LED, LOW);   digitalWrite(BLUE_LED, HIGH); // R=ON, G=OFF, B=ON &#8211;&gt; 다홍(Magenta)</p>
<p dir="ltr"> delay(1000);</p>
<p dir="ltr">digitalWrite(RED_LED, HIGH);   digitalWrite(GREEN_LED, HIGH);    digitalWrite(BLUE_LED, HIGH); // R=ON, G=ON, B=ON &#8211;&gt; 흰색(White)</p>
<p dir="ltr"> delay(1000);</p>
<p dir="ltr">}</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">약간 긴 듯하지만 알고리즘은 지난번과 거의 비슷하고 간단합니다.</p>
<p>자, 컴파일 ▶ 업로드 ▶ 실행해 봅시다. 그리고 결과는 ?</p>
<p style="text-align: center;">
<object width="425" height="344">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="movie" value="http://www.youtube.com/v/MiqNYWnWk-M?autoplay=0&loop=0&rel=0" />
<param name="wmode" value="transparent">
<embed src="http://www.youtube.com/v/MiqNYWnWk-M?autoplay=0&loop=0&rel=0" type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" width="425" height="344">
</embed>
</object>


<p dir="ltr">동영상에서는 LED 빛이 너무 밝아서 색깔 구별이 또렷하지 않지만, 실제 눈으로 보면 아주 예쁜 7가지 색깔이 나옵니다. 이 정도면 만족스럽네요.</p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><span style="font-size: large; background-color: #008000;"><strong><span style="color: #ffffff;"> ■ 컬러 및 컬러값 선택                                                                   </span></strong></span></p>
<p dir="ltr">
<p dir="ltr">  연습으로 몸을 풀었으니, 이제 본격적으로 카멜레온 반지를 D.I.Y.하러 가겠습니다. 우리가 할 일은 12개 탄생석의 대표색을 찾아서 이것이 R, G, B의 어떤 값(어떤 세기, %)으로 표현되는지를 알아낸 다음 이것을 analog_write( ) 함수를 이용하여 구현하면 될 것 같습니다.</p>
<p dir="ltr">  자, 이제 탄생석의 색깔에 알맞은 R, G, B의 값을 찾아내면 되겠는데… 2가지 방법이 있습니다.</p>
<p dir="ltr">
<p dir="ltr"><strong>1. 색상표를 이용하는 방법</strong></p>
<p dir="ltr">  아래와 같이 색상표가 있으므로 이것을 보고 탄생석과 가장 비슷한 색깔을 찾아 그 코드값을 추출하는 방법입니다. 6개의 숫자는 16진법으로 나타낸 코드 값으로 앞의 2개는 R(Red), 중간 2개는 G(Green), 마지막 2개는 B(Blue)에 해당되는 값을 나타냅니다. (혹, 2진법, 10진법, 16진법의 표기법이나 변환이 익숙하지 않은 분은 이 부분에 대하여 따로 각자 공부하신 후 다시 오시기 바랍니다.) 가장 왼쪽 줄의 위에서 6번째 색상이 노랑인데, 이 값을 보면 FFFF00 으로 표기되어 있으니까 [R(FF), G(FF) B(00)] ▶ [R(255), G(255), B(0)]가 되어 노랑색 PWM 표기값과 동일하다는 것을 확인할 수 있습니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-10.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28400" alt="30 카멜레온반지 10" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-10.jpg" width="550" height="283" /></a></p>
<p dir="ltr">
<p dir="ltr"><strong>2. 컬러 추출 응용프로그램을 이용하는 방법</strong></p>
<p dir="ltr">  PC 상에서 특정 컬러에 대한 코드값을 추출해 내는 응용프로그램을 실행시켜서 원하는 색상을 클릭하여 코드값을 추출하는 방법입니다.</p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-11.jpg" rel="lightbox[28375]"><img class="alignleft size-full wp-image-28401" style="margin-left: 10px; margin-right: 10px;" alt="30 카멜레온반지 11" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-11.jpg" width="244" height="287" /></a></p>
<p dir="ltr">   탄생석은 코드표로 똑 떨어지는 색상이 아니고 우리가 색상을 직접 추출해보는 것도 재미있을 것 같으니까 우리는 두번째 방법을 사용하도록 하지요. 여러가지 프로그램이 있겠지만 여기서는 그냥 간단하게 실행시킬 수 있는 컬러캅(ColorCop)이라는 무료 프로그램을 사용하는 것으로 하겠습니다. (인터넷에서 찾아 다운로드받아 실행하면 됩니다.) 아래와 같은 화면이 나오는데요. 중간 왼쪽에 있는 스포이드처럼 생긴 아이콘을 드래그(클릭한 후 끌기)하여 원하는 컬러 위치에 가져다 놓으면 10진수로 표시된 R, G, B 값이 나타나게 됩니다. 참 쉽네요.</p>
<p dir="ltr">  자, 그러면 지금부터는 탄생석의 대표색에 대한 코드값를 추출해 보는 시간입니다. 색깔도 감상해 가면서 즐거운 마음으로 표를 작성해 보면 더욱 좋겠네요.</p>
<p dir="ltr">  코드 추출은 혼자서도 가능하겠지요? 12분 드립니다.</p>
<p>&nbsp;</p>
<p dir="ltr">1분, 2분, …, 11분, 12분</p>
<p>&nbsp;</p>
<p dir="ltr">  제가 직접 찍어서 추출한 값은 아래와 같습니다. (각자 다를 수 있습니다.)</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="45" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" /></colgroup>
<tbody>
<tr>
<td style="border: 1px solid #000000; text-align: center; background-color: #e6e6fa;" data-sheets-value="[null,2,&quot;\uc6d4&quot;]">월</td>
<td style="border: 1px solid #000000; text-align: center; background-color: #e6e6fa;" data-sheets-value="[null,2,&quot;\ud55c\uae00 \uc774\ub984&quot;]">한글 이름</td>
<td style="border: 1px solid #000000; text-align: center; background-color: #e6e6fa;" data-sheets-value="[null,2,&quot;\uc601\uc5b4 \uc774\ub984&quot;]">영어 이름</td>
<td style="border: 1px solid #000000; text-align: center; background-color: #e6e6fa;" data-sheets-value="[null,2,&quot;R&quot;]">R</td>
<td style="border: 1px solid #000000; text-align: center; background-color: #e6e6fa;" data-sheets-value="[null,2,&quot;G&quot;]">G</td>
<td style="border: 1px solid #000000; text-align: center; background-color: #e6e6fa;" data-sheets-value="[null,2,&quot;B&quot;]">B</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,1]">1</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\uac00\ub137&quot;]">가넷</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;garnet&quot;]">garnet</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,254]">254</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,26]">26</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,27]">27</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,2]">2</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\uc790\uc218\uc815&quot;]">자수정</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;amethyst&quot;]">amethyst</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,179]">179</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,117]">117</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,180]">180</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,3]">3</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\uc544\ucfe0\uc544\ub9c8\ub9b0&quot;]">아쿠아마린</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;aquamarine&quot;]">aquamarine</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,211]">211</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,146]">146</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,251]">251</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,4]">4</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\ub2e4\uc774\uc544\ubaac\ub4dc&quot;]">다이아몬드</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;diamond&quot;]">diamond</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,254]">254</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,155]">155</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,255]">255</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,5]">5</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\uc5d0\uba54\ub784\ub4dc&quot;]">에메랄드</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;emerald&quot;]">emerald</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,14]">14</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,219]">219</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,133]">133</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,6]">6</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\uc9c4\uc8fc&quot;]">진주</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;pearl&quot;]">pearl</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,246]">246</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,241]">241</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,237]">237</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,7]">7</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\ub8e8\ube44&quot;]">루비</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;ruby&quot;]">ruby</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,206]">206</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,3]">3</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,163]">163</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,8]">8</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\ud398\ub9ac\ub3c4\ud2b8&quot;]">페리도트</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;peridot&quot;]">peridot</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,167]">167</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,212]">212</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,31]">31</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,9]">9</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\uc0ac\ud30c\uc774\uc5b4&quot;]">사파이어</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;sapphaire&quot;]">sapphaire</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,26]">26</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,27]">27</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,216]">216</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,10]">10</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\uc624\ud314&quot;]">오팔</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;opal&quot;]">opal</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,203]">203</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,200]">200</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,149]">149</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,11]">11</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\ud1a0\ud30c\uc988&quot;]">토파즈</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;topaz&quot;]">topaz</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,254]">254</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,198]">198</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,40]">40</td>
</tr>
<tr>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,12]">12</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;\ud130\ud0a4\uc11d&quot;]">터키석</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,2,&quot;turquoise&quot;]">turquoise</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,58]">58</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,197]">197</td>
<td style="width: 600px; border: 1px solid #000000;" align="center" data-sheets-value="[null,3,null,189]">189</td>
</tr>
</tbody>
</table>
<p>참, 가넷이라는 보석은 얼마전 종료된 ‘지니어스’라는 TV 프로에 이름이 소개되었던 짙은 자주색계통의 보석이지요. 꽤나 재미있었던 시리즈물이었는데 여러분들도 기회가 되면 꼭 한 번 시청해 보시기 바랍니다.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large; background-color: #008000;"><strong><span style="color: #ffffff;"> ■ 카멜레온 반지 프로그램 작성</span>                                                                          </strong></span></p>
<p>&nbsp;</p>
<p dir="ltr">  모든 준비가 끝났으니 이제 목표 프로그램을 작성하여 실행할 차례입니다. 우리가 원하는 기능 규격을 작성해 보지요.</p>
<p>&nbsp;</p>
<p dir="ltr"><strong>[12가지 탄생석의 대표색을 디스플레이하는 카멜레온 반지 기능 규격]</strong></p>
<p dir="ltr">  1. 컬러 LED로 12개 탄생석의 대표색 12개를 차례대로 ON하며, 무한 반복된다.</p>
<p dir="ltr">  2. 한 가지의 색은 1초 동안 켜진 상태를 유지한다.</p>
<p>&nbsp;</p>
<p dir="ltr">  지난번에는 digitalWrite( ) 함수를 사용했지만 이번에는 analogWrite( )를 사용하고 작성된 표를 참조하여 R, G, B에 해당하는 PWM value값을 정해주는 것만 조금 다를 것 같습니다.</p>
<p dir="ltr">  같이 한 번 작성해 보시지요.</p>
<table style="border-color: #000000; border-width: 0px; ; width: 600px;" border="0">
<tbody>
<tr>
<td style="border: 1px solid #000000;">
<p dir="ltr">#define RED_LED 6</p>
<p dir="ltr">#define GREEN_LED 5</p>
<p dir="ltr">#define BLUE_LED 3</p>
<p dir="ltr">void setup()</p>
<p dir="ltr">{</p>
<p dir="ltr"> pinMode(RED_LED, OUTPUT);</p>
<p dir="ltr"> pinMode(GREEN_LED, OUTPUT);</p>
<p dir="ltr"> pinMode(BLUE_LED, OUTPUT);</p>
<p dir="ltr">}</p>
<p dir="ltr">void loop()</p>
<p dir="ltr">{</p>
<p dir="ltr"> analogWrite(RED_LED, 254);  analogWrite(GREEN_LED, 26);  analogWrite(BLUE_LED, 27);  // 가넷</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 179);  analogWrite(GREEN_LED, 117);  analogWrite(BLUE_LED, 180);  // 자수정</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 211);  analogWrite(GREEN_LED, 246);  analogWrite(BLUE_LED, 251);  // 아쿠아마린</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 254);  analogWrite(GREEN_LED, 255);  analogWrite(BLUE_LED, 255);  // 다이아몬드</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 14);  analogWrite(GREEN_LED, 219);  analogWrite(BLUE_LED, 133);  // 에메랄드</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 246);  analogWrite(GREEN_LED, 241);  analogWrite(BLUE_LED, 237);  // 진주</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 206);  analogWrite(GREEN_LED, 3);  analogWrite(BLUE_LED, 163);  // 루비</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 167);  analogWrite(GREEN_LED, 212);  analogWrite(BLUE_LED, 31);  // 페리도트</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 26);  analogWrite(GREEN_LED, 27);  analogWrite(BLUE_LED, 216);  // 사파이어</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 203);  analogWrite(GREEN_LED, 200);  analogWrite(BLUE_LED, 149);  // 오팔</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 254);  analogWrite(GREEN_LED, 198);  analogWrite(BLUE_LED, 40);  // 토파즈</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 58);  analogWrite(GREEN_LED, 197);  analogWrite(BLUE_LED, 189);  // 터키석</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr">}</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">  음. 조금 많이 길긴 하지만…</p>
<p dir="ltr">  일단, 컴파일 ▶ 업로드 ▶ 실행해 봅시다. 결과는?</p>
<p style="text-align: center;">
<object width="425" height="344">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="movie" value="http://www.youtube.com/v/Xqr8GSvWKiA?autoplay=0&loop=0&rel=0" />
<param name="wmode" value="transparent">
<embed src="http://www.youtube.com/v/Xqr8GSvWKiA?autoplay=0&loop=0&rel=0" type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" width="425" height="344">
</embed>
</object>


<p dir="ltr">  카메라에 찍힌 것은 색깔 구별이 또렷하지는 않은데, 실제로 보면 아름다운 색깔이 구분되어 나타납니다. 보석에 비할 수는 없지만 그래도 아주 색상이 화려하고 아름답습니다.</p>
<p dir="ltr">  그런데 프로그램 짜면서 조금 마음에 걸리는 것이 있습니다.</p>
<p dir="ltr">  무엇이냐구요? 비슷한 내용이 12번이나 반복되고 코드 값을 일일이 입력해 주는 것이 조금 불편한 듯 하네요. 그래서, 12번 반복하는 것은 for 문을 이용하여 수정하고, 코드 값은 미리 어레이에 지정해 놓았다가 사용하도록 하여 위 코드를 조금 단순화시켜 보겠습니다. 아래와 같이 될 것 같습니다.</p>
<table style="border-color: #000000; border-width: 0px; ; width: 600px;" border="0">
<tbody>
<tr>
<td style="border: 1px solid #000000;">
<p dir="ltr">#define RED_LED 6</p>
<p dir="ltr">#define GREEN_LED 5</p>
<p dir="ltr">#define BLUE_LED 3</p>
<p dir="ltr">void setup()</p>
<p dir="ltr">{</p>
<p dir="ltr"> pinMode(RED_LED, OUTPUT);</p>
<p dir="ltr"> pinMode(GREEN_LED, OUTPUT);</p>
<p dir="ltr"> pinMode(BLUE_LED, OUTPUT);</p>
<p dir="ltr">}</p>
<p dir="ltr">void loop()</p>
<p dir="ltr">{</p>
<p dir="ltr"> analogWrite(RED_LED, 254);  analogWrite(GREEN_LED, 26);  analogWrite(BLUE_LED, 27);  // 가넷</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 179);  analogWrite(GREEN_LED, 117);  analogWrite(BLUE_LED, 180);  // 자수정</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 211);  analogWrite(GREEN_LED, 246);  analogWrite(BLUE_LED, 251);  // 아쿠아마린</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 254);  analogWrite(GREEN_LED, 255);  analogWrite(BLUE_LED, 255);  // 다이아몬드</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 14);  analogWrite(GREEN_LED, 219);  analogWrite(BLUE_LED, 133);  // 에메랄드</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 246);  analogWrite(GREEN_LED, 241);  analogWrite(BLUE_LED, 237);  // 진주</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 206);  analogWrite(GREEN_LED, 3);  analogWrite(BLUE_LED, 163);  // 루비</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 167);  analogWrite(GREEN_LED, 212);  analogWrite(BLUE_LED, 31);  // 페리도트</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 26);  analogWrite(GREEN_LED, 27);  analogWrite(BLUE_LED, 216);  // 사파이어</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 203);  analogWrite(GREEN_LED, 200);  analogWrite(BLUE_LED, 149);  // 오팔</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 254);  analogWrite(GREEN_LED, 198);  analogWrite(BLUE_LED, 40);  // 토파즈</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr"> analogWrite(RED_LED, 58);  analogWrite(GREEN_LED, 197);  analogWrite(BLUE_LED, 189);  // 터키석</p>
<p dir="ltr">delay(1000);</p>
<p dir="ltr">}</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">  예. 요렇게 작성해서 다시 실행시켜보면&#8230; 처음 프로그램하고 똑같이 실행되는 것을 알 수 있습니다. 이것도 당근 성공이겠죠?</p>
<p dir="ltr">  그럼, 마지막으로… 이 반지를 진짜 반지처럼 한 번 연출해 볼까요?</p>
<p dir="ltr">  손가락에 켜보는 형태로 흉내를 내보지요.</p>
<p dir="ltr">  컬러 LED를 뽑아서 4개의 다리에 선을 연결하고 이선을 원래 LED가 위치했던 브레드보드의 핀 위치에 꼽으면 원래 회로와 똑같은 회로입니다. 이것을 반지 모양으로 손가락 앞쪽으로 LED만 보이게 만들고 아두이노에 전원을 넣으면?</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-14.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28404" alt="30 카멜레온반지 14" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-14.jpg" width="610" height="343" /></a></p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-15.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28405" alt="30 카멜레온반지 15" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-15.jpg" width="553" height="380" /></a></p>
<p style="text-align: center;"> 
<object width="425" height="344">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="movie" value="http://www.youtube.com/v/JSAJRt3HpHE?autoplay=0&loop=0&rel=0" />
<param name="wmode" value="transparent">
<embed src="http://www.youtube.com/v/JSAJRt3HpHE?autoplay=0&loop=0&rel=0" type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" width="425" height="344">
</embed>
</object>


<p dir="ltr">  야호~~~ 카멜레온 반지가 완성되었습니다.</p>
<p dir="ltr">  소품을 이용하여 잘 만들면 어느 정도 쓸만한 것도 만들 수 있을 것 같은데, 이것은 여러분들이 D.I.Y. 해보시기 바랍니다. 잘 만들어졌으면 주변에 자랑도 한 번 해 보시구요.</p>
<p dir="ltr">  시간나실 때 아래 과제도 한 번 해보시면 더욱 좋겠죠?</p>
<table style="border-color: #000000; border-width: 0px; ; width: 600px;" border="0">
<tbody>
<tr>
<td style="background-color: #adff2f;">
<p dir="ltr"><span style="font-size: small;"><strong> [과제-카멜레온반지-1]</strong></span></p>
<p dir="ltr"><span style="font-size: small;"><strong> R, G, B 색이 임의로 변하는 카멜레온 링을 만들어 보세요.</strong></span></p>
</td>
</tr>
</tbody>
</table>
<table style="border-color: #000000; border-width: 0px; ; width: 600px;" border="0">
<tbody>
<tr>
<td style="background-color: #adff2f;">
<p dir="ltr"><span style="font-size: small;"><strong> [과제-카멜레온반지-1]</strong></span></p>
<p><span style="font-size: small;"><strong> R, G, B 각각이 0~255까지 짧은 시간 내에 계속 변화하면서 모든 색상을 디스플레이할 수 있는 카  멜레온링을 만들어 보세요. 총 256 x 256 x 256 = 16,777,226 가지의 색깔을 만들수 있을까요?</strong></span></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large; color: #ffffff; background-color: #008000;"><strong> ■ 스위치 연결                                                                                </strong></span></p>
<p dir="ltr">  바로 전 강의까지 우리는 아두이노로 할 수 있는 2가지 기초 기능을 다루어 보았습니다. 디지털 출력(digitalWrite())과 아날로그 출력(analogWrite())이지요. 여기서의 아날로그 출력은 엄밀히 말하면 디지털 출력을 PWM을 이용하여 만든 유사 아날로그 출력이지만요.</p>
<p>&nbsp;</p>
<p dir="ltr">  기본적인 출력을 2가지 해보았으니 이번에는 기본적인 입력을 이용하여 ‘빨노파 게임기’ D.I.Y.에 도전해 보겠습니다. 빨노파게임기란 빨강 ▶ 노랑 ▶ 파랑 순으로 LED 색깔이 상당히 빠르게(0.1초 이내) 변하다가 스위치를 누르는 순간 빨강, 노랑, 파랑 중의 1가지로 약 5초 정도 고정되는 LED 디스플레이어입니다. 아주 빠르게 색깔이 변하므로 사람이 임의로 색깔의 변화를 읽어서 스위치를 누른다는 것은 불가능하다고 볼 수 있으므로 임의의 색깔이 나타나는 상황이 됩니다. 그러므로 가위바위보 게임과 비슷하게 빨강은 파랑을 이기고, 노랑은 빨강을 이기고, 파랑은 노랑을 이긴다고 룰을 정한 후 두 사람이 스위치를 순서대로 눌러서 나온 색깔로 승부를 가린다면 간단한 게임기가 될 수 있겠습니다.</p>
<p dir="ltr">  아 참, 이건 여담인데, 빨노파… 하니까 생각나는게 하나 있네요. ‘개그콘서트’라는 TV 프로의 ‘나는 킬러다’ 코너에 등장하는 빨노파 3형제…  ‘일소일소(一笑一少)’라는 말이 있는데 한 번 웃으면 한 번 젊어진다고 하니, 여러분도 틈나는 대로 개그 프로 열심히 보면서 많이 웃으시기 바랍니다.</p>
<p dir="ltr">  LED가 대표적인 기본 디지털 출력 부품이라면, 스위치는 대표적인 기본 디지털 입력 부품입니다. 스위치를 모르는 사람은 천지(天地)에 없겠지만, 기왕 말이 나왔으니까 많이 쓰는 스위치 2-3가지만 조금 살펴보고 가는 것도 나쁘지는 않을 듯 합니다.</p>
<p dir="ltr">  우리가 제일 흔하게 많이 보고 많이 쓰는 스위치는 무엇일까요?</p>
<p dir="ltr">  요렇게 생긴 것이겠죠? 전자기기 전원 껐다 켰다 하는 스위치, 형광등 껐다 켰다 스위치.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-16.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28406" alt="30 카멜레온반지 16" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-16.jpg" width="194" height="201" /></a></p>
<p style="text-align: center;"><span style="font-size: small;"><strong>(KCD1-101A RED, 상품코드: <a href="http://www.devicemart.co.kr/1790" target="_blank">1790</a>)</strong></span></p>
<p dir="ltr">  실생활에서 가장 많이 쓰이는 스위치로 이름은 로커(Locker) 스위치입니다. 잠긴(lock) 것처럼 ON이거나 OFF이거나 한가지 상태로 존재하지요.</p>
<p dir="ltr">  또, 어떤 스위치가 있을까요? 아래와 같이 생긴 슬라이드(Slide) 스위치도 많이 사용됩니다. 왼쪽이나 오른쪽으로 옮기면 각각 가운데 신호가 왼쪽이나 오른쪽에 연결된 신호와 연결되는 구조를 가진 스위치입니다. 요건 2단으로 되어 있어 2개의 서로 다른 신호가 동시에 왼쪽 또는 오른쪽으로 연결되는 형태네요.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-17.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28407" alt="30 카멜레온반지 17" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-17.jpg" width="167" height="168" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;"><span style="font-size: small;"><strong>(MSL-1C2P(듀얼)-2mm, 상품코드: <a href="http://www.devicemart.co.kr/30530" target="_blank">30530</a>)</strong></span></p>
<p dir="ltr">  이번 강의에서 사용할 스위치는 아래와 같이 생긴 택트(Tact) 스위치입니다. 이것도 굉장히 많이 사용됩니다. 아마도 contact에서 이름이 유래(?)된 듯한데, 손가락으로 누르면(contact 되면) ON, 떼면 OFF 상태가 되는 스위치이지요.</p>
<p>  아래 것은 다리가 4개가 있어서 2쌍의 신호가 한꺼번에 연결되거나(ON), 끊어지거나(OFF) 하는 스위치가 되겠습니다.</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-18.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28408" alt="30 카멜레온반지 18" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-18.jpg" width="142" height="141" /></a></p>
<p dir="ltr">
<p dir="ltr" style="text-align: center;"><span style="font-size: small;"><strong>(ITS-1105-5mm, 상품코드: <a href="http://www.devicemart.co.kr/34555" target="_blank">34555</a>)</strong></span></p>
<p dir="ltr">  자, 스위치가 결정되었으니 그럼 이제 스위치를 연결해 볼까요?</p>
<p dir="ltr">  스위치 심볼은 보통 아래와 같은 2가지 형태를 취합니다. 스위치가 눌려지면 왼쪽과 오른쪽에 연결된 전선이 연결되는 것이지요. 스위치를 놓으면 양쪽의 연결은 끊어지는 것이구요.</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-19.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28409" alt="30 카멜레온반지 19" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-19.jpg" width="470" height="141" /></a></p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-20.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28410" alt="30 카멜레온반지 20" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-20.jpg" width="466" height="62" /></a></p>
<p dir="ltr">
<p dir="ltr">  스위치가 디지털 입력이라고 하였고, 스위치는 양쪽 끝이 있으니까 한 쪽은 당연히 아두이노의 디지털 신호선 중 하나에 연결하여야 할 것이고, 다른 한쪽은 어디에 연결해야 할까요? 스위치를 눌렀을 때 ‘1’(HIGH)이나 ‘0’(LOW)이 입력되어야 하므로, ‘1’이 연결되려면 VCC(+5V)가 연결되어야 하고, ‘0’이 입력되려면 GND(0V, Ground)가 연결되어야 할 것입니다.</p>
<p dir="ltr">  그러면 이렇게 연결이 되겠네요.</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-21.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28411" alt="30 카멜레온반지 21" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-21.jpg" width="575" height="239" /></a></p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-22.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28412" alt="30 카멜레온반지 22" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-22.jpg" width="550" height="210" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">  그런데 가만히 보니까, 스위치를 눌렀을 때는 연결된 상태에 따라서 +5V 또는 0V(GND)가 연결되지만 스위치가 눌리지 않았을 때는 선이 끊어진 상태(floating 상태)가 되는데… 어라, 이렇게 되면 아두이노는 이 핀의 값을 HIGH(1)로 판단할까요? 아니면, LOW(0)로 판단할까요? 조금 어려운 문제인데 이것은 아두이노의 내부 로직과 상태에 따라 값이 결정될 수 있으므로 정확하게 HIGH 또는 LOW라고 단정지어 말할 수 없습니다. 즉, 상황에 따라 HIGH가 될 수도 있고 LOW로 될 수도 있다는 뜻인데, 이렇게 되면 값이 확정되지 않으므로 프로그램을 작성하는 사람은 대략난감(大略難堪, 이러지도 저러지도 못하는 당황스러운 상황)하게 됩니다. 그래서, 이렇게 선이 끊어진 상태가 될 때는 아두이노가 HIGH 또는 LOW 중, 하나의 값으로만 결정되도록 만들어 주는 조치가 필요합니다. 즉, 스위치를 눌렀을 때 HIGH가 되는 회로는 눌러지지 않았을 때 LOW가 되도록 조치해 놓아야 하고, 반대로 스위치를 눌렸을 때 LOW가 되는 회로는 눌러지지 않았을 때는 HIGH가 되도록 조치해 놓아야 하겠습니다. 아래와 같이 될 것 같습니다.</p>
<p dir="ltr"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-23.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28413" alt="30 카멜레온반지 23" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-23.jpg" width="595" height="401" /></a></p>
<p dir="ltr">
<p dir="ltr" style="text-align: center;"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-24.jpg" rel="lightbox[28375]"><img class="aligncenter  wp-image-28414" alt="30 카멜레온반지 24" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-24.jpg" width="542" height="299" /></a></p>
<p dir="ltr">
<p dir="ltr">  하지만 위 그림도 아직은 문제가 있어 보입니다. 왜냐하면 스위치가 눌려졌다고 생각하면 위 2개 회로 모두가 +5V와 GND가 직접 연결되는 형상이 되어 버리니까요.</p>
<p dir="ltr">  뿌직~~~ 번쩍! 푸쉬푸쉬~~~</p>
<p dir="ltr">  무엇인가 터지던지… 불꽃이 튀던지… 연기가 나던지… 뭔가 문제가 생길 것 같습니다. 그래서 이런 경우를 방지하기 위한 대비책이 필요한데 이 역할을 수행하는 것은 저항입니다. 아래와 같이 스위치가 눌렸을 때와 눌려지지 않았을 때의 값이 서로 다르게 입력되는 위치에 저항을 달면 문제가 해결되겠습니다. (저항값은 보통 1K~10K 정도를 사용합니다.) 참고로 GND에 저항이 연결되는 것을 풀다운(pull down) 저항이라고 하고, VCC(+5V)에 연결되는 것을 풀업(pull up) 저항이라고 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-25.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28415" alt="30 카멜레온반지 25" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-25.jpg" width="573" height="295" /></a></p>
<p>&nbsp;</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-26.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28416" alt="30 카멜레온반지 26" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-26.jpg" width="581" height="291" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr">  하나 하나 설명하다보니 조금 장황해졌는데요. 어쨌든 이제 연결 방법은 알았으니, 실제로 회로를 아두이노에 연결해 봅시다. 조금 전에 만들었던 카멜레온반지 회로에 스위치 한 개를 추가하여 2번핀(D2)에 연결하는 것으로 하겠습니다. 아래와 같이 되겠네요.</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-27.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28417" alt="30 카멜레온반지 27" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-27.jpg" width="518" height="390" /></a></p>
<p dir="ltr">  오, 그럴듯하게 잘 꾸며진 것 같습니다. 만족? 만족!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: large; color: #ffffff; background-color: #008000;"><strong> ■ 신호등 게임기 프로그램 작성                                                  </strong></span></p>
<p>&nbsp;</p>
<p dir="ltr">  이제 프로그램을 작성하여야 하는데요. 언제나 마찬가지로 일단 원하는 기능 규격을 작성해 봅시다.</p>
<p>&nbsp;</p>
<p dir="ltr"><strong>[신호등 게임기 기능 규격]</strong></p>
<p dir="ltr">  1. 컬러 LED,의 색깔은 0.1초 마다 빨강 ▶ 노랑 ▶ 파랑 ▶ 빨강 ▶ 노랑 ▶ 파랑… 의 순으로 계속 바뀐다..</p>
<p dir="ltr">  2. 스위치를 누르는 순간 5초 동안만 현재의 LED 색이 유지되었다가 다시 ‘1’번을 수행한다.</p>
<p>&nbsp;</p>
<p dir="ltr">  컬러 LED의 색깔이 바뀌는 것은 지난번에 했으니까 별 문제가 없을 것이고, 스위치 값을 읽어서 그 값이 0(LOW, 스위치 눌림)인지 1(HIGH, 스위치 눌리지 않음)인지를 검사할 수만 있으면 쉽게 해결될 것 같습니다. 이런 경우에 대비해서 아두이노에서는 digitalRead(pin)라는 기능의 함수를 제공하므로 이것을 이용하도록 합니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="color: #3366ff;">digitalRead(pin)</span></p>
<p dir="ltr"><span style="color: #3366ff;">  ■  pin : 핀 번호</span></p>
<p dir="ltr"><span style="color: #3366ff;">  ■  return 값 : pin을 통하여 들어온 디지털 값으로 0 또는 1</span></p>
<p>&nbsp;</p>
<p dir="ltr">  이제 기능 규격을 만족할 수 있는 프로그램의 알고리즘을 만들어 보지요. 아래를 보기 전에 각자 먼저 5분 정도 생각해 보시구요.</p>
<p dir="ltr">… (1분) … (2분) … (3분) … (4분) … (5분)</p>
<p dir="ltr">  아래와 같은 모습이 될 것 같습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-28.png" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28418" alt="30 카멜레온반지 28" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-28.png" width="433" height="275" /></a></p>
<p dir="ltr">  이제 프로그램을 함께 해볼까요?</p>
<table style="border-color: #000000; border-width: 0px; ; width: 600px;" border="0">
<tbody>
<tr>
<td style="border: 1px solid #000000;">
<p dir="ltr">int SW=2; // #define을 이용해도 되지만 이와 같이 변수로 선언하는 것도 방법</p>
<p dir="ltr">int BLUE_LED=3</p>
<p dir="ltr">int GREEN_LED=5;</p>
<p dir="ltr">int RED_LED=6;</p>
<p dir="ltr">void setup()</p>
<p dir="ltr">{</p>
<p dir="ltr"> pinMode(SW, INPUT); // 2번핀은 스위치 입력</p>
<p dir="ltr"> pinMode(BLUE_LED, OUTPUT); // 3번핀은 파랑 LED 출력</p>
<p dir="ltr"> pinMode(GREEN_LED, OUTPUT); // 5번핀은 녹색 LED 출력</p>
<p dir="ltr"> pinMode(RED_LED, OUTPUT); // 6번핀은 빨강 LED 출력</p>
<p dir="ltr">}</p>
<p dir="ltr">void loop()</p>
<p dir="ltr">{</p>
<p dir="ltr">analogWrite(RED_LED, 255);  analogWrite(GREEN_LED, 0);  analogWrite(BLUE_LED, 0); // 빨강</p>
<p dir="ltr">if (digitalRead() == 0)</p>
<p dir="ltr">   delay(5000); // 스위치를 눌렀으면 5초 대기</p>
<p dir="ltr">else</p>
<p dir="ltr">delay(100); // 스위치를 누르지 않았으면 0.1초만 대기</p>
<p dir="ltr">analogWrite(RED_LED, 255);  analogWrite(GREEN_LED, 255);  analogWrite(BLUE_LED, 0);   // 노랑</p>
<p dir="ltr">if (digitalRead() == 0)</p>
<p dir="ltr">   delay(5000);</p>
<p dir="ltr">else</p>
<p dir="ltr">delay(100);</p>
<p dir="ltr">analogWrite(RED_LED, 0);  analogWrite(GREEN_LED, 0);  analogWrite(BLUE_LED, 255); // 파랑</p>
<p dir="ltr">if (digitalRead() == 0)</p>
<p dir="ltr">   delay(5000);</p>
<p dir="ltr">else</p>
<p dir="ltr">delay(100);</p>
<p dir="ltr">}</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">  digitalRead()를 수행하여 값이 ‘0’인 상태가 나타나면 스위치가 눌려진 것이니까 그 상태에서 delay(5000); (5초 동안 아무것도 하지 않음)을 수행하게 되므로 LED가 5초 동안 한가지 색깔을 유지하게 됩니다. 자신의 색깔이 결정되는 것이지요.</p>
<p dir="ltr">  작성이 다 되었으면… 컴파일 ▶ 업로드 ▶ 실행! 잘 나오나요?</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-29.jpg" rel="lightbox[28375]"><img class="aligncenter size-full wp-image-28419" alt="30 카멜레온반지 29" src="http://www.ntrexgo.com/wp-content/uploads/2015/08/30-카멜레온반지-29.jpg" width="598" height="397" /></a></p>
<p style="text-align: center;">
<object width="425" height="344">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="movie" value="http://www.youtube.com/v/u-4GemaNhfo?autoplay=0&loop=0&rel=0" />
<param name="wmode" value="transparent">
<embed src="http://www.youtube.com/v/u-4GemaNhfo?autoplay=0&loop=0&rel=0" type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" width="425" height="344">
</embed>
</object>


<p style="text-align: center;">
<p dir="ltr">  옆에 있는 가족/친구/상사/동료와 간단히 게임 한 번 해 보시지요! 나는 빨강, 상대는 파랑, 야호~ 내가 이겼다. 밥 먹으러 갑시다.</p>
<p dir="ltr">  오늘은 여기까지입니다. 다음 시간에는 FND(Flexible Numeric Display)를 가지고 007 영화에 항상 등장하는 카운트다운 계수기 D.I.Y.에 도전해 보겠습니다. 아래 과제는 짬을 내서 해보시고 다음 강의에서 예쁜 얼굴로 또 만나겠습니다. 감사합니다.</p>
<table style="border-color: #000000; border-width: 0px; ; width: 600px;" border="0">
<tbody>
<tr>
<td style="background-color: #adff2f;">
<p dir="ltr"><span style="font-size: small;"><strong> [과제-빨노파게임기-1]</strong></span></p>
<p dir="ltr"><span style="font-size: small;"><strong> 스위치를 누르면 ‘1’이 되도록 연결하고 프로그램해 보세요.</strong></span></p>
</td>
</tr>
</tbody>
</table>
<table style="border-color: #000000; border-width: 0px; ; width: 600px;" border="0">
<tbody>
<tr>
<td style="background-color: #adff2f;">
<p dir="ltr"><span style="font-size: small;"><strong> [과제-빨노파게임기-2]</strong></span></p>
<p dir="ltr"><span style="font-size: small;"><strong> 스위치를 2개 사용하여 더 재미있는 DIY 작품을 만들어 보세요.</strong></span></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>아두이노 구매하러 가기 : <a href="http://www.devicemart.co.kr/34404" target="_blank">클릭!</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/28375/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[29호] 너무 쉬운 아두이노 DIY &#8211; ① 3색 신호등 만들기</title>
		<link>http://www.ntrexgo.com/archives/28246</link>
		<comments>http://www.ntrexgo.com/archives/28246#comments</comments>
		<pubDate>Tue, 10 Mar 2015 06:59:21 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[프로젝트]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[devicemart]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[jcnet]]></category>
		<category><![CDATA[ntrex]]></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=28246</guid>
		<description><![CDATA[[너무 쉬운 아두이노 DIY(Do It Yourself)]
제이씨넷 신상석 연구소장님의 친절하고 꼼꼼한 강의!
아두이노를 가지고 이것 저것 만들어봅시다.^^
출발!!]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호등MA.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28289" alt="29 아두이노 신호등MA" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호등MA.jpg" width="620" height="246" /></a></p>
<p><strong>           글 ㅣ 신상석 ssshin@jcnet.co.kr</strong></p>
<p>&nbsp;</p>
<table class="aligncenter" style="width: 600px;" cellpadding="10" align="center">
<tbody>
<tr>
<td style="border: 1px solid #000000; background-color: #e6e6fa;" valign="middle">  여러분, 안녕하세요. 앞으로 1년에 걸쳐(6번 정도) [너무 쉬운 아두이노 DIY(Do It Yourself)] 강의를 진행할 강사 신상석입니다.<br />
제 소개 간단히 드립니다.<br />
· 서울대 제어계측공학과(학사) →, KAIST 전산과(석사) → KAIST 전산과(박사 수료)<br />
· ETRI 책임연구원 → 해동정보통신 연구소장 → 욱성전자 연구소장 → (현재) 제이씨넷 연구소장, 상명대학교 컴퓨터시스템공학과 겸임교수, 임베디드홀릭 카페(http://cafe.naver.com/lazydigital) 부매니저, 아두이노 / AVR 강사<br />
· 자격증 : 전자계산기 기술사<br />
· 취미 : 영화보기, 바둑두기, 책읽기, 글쓰기(?), 여행하기, 이야기하기<br />
· 연락처 : ssshin@jcnet.co.kr, 있는그대(cafe.naver.com/lazydigital)&nbsp;</p>
<p>이 강의는 아두이노를 가지고 간단하게 생활에 필요한 용품을 만들어 보는 강의입니다. 뚝딱뚝딱 뭔가 자신만의 DIY 용품을 만들어 보는 쏠쏠한 재미가 있는 강의라고나 할까요? 이미 주변에 아두이노와 관련한 많은 책이 출간되었고 카페나 블로그를 통하여 강의가 진행된 경우도 꽤나 많이 있는데도 불구하고, 이 지면을 통하여 강의를 개설한 이유는 다음과 같습니다.</p>
<p>1. 아두이노의 초보자들을 위한 쉽고 재미있는 강의가 거의 없는 것 같아, 가능하면 초등학생(?)까지도 함께 해 볼 수 있는 그런 강의를 한 번 해보고 싶어서…<br />
2. 아두이노를 가지고 뭔가 조금은 다른, 자신만의 창의적인(?) DIY를 할 수 있는 자리를 만들어주고 싶어서…<br />
3. 디바이스마트매거진은 임베디드와 관련된 독자들이 많고, 발행 부수도 많아, 저와 제가 속한 회사(제이씨넷) 그리고 임베디드홀릭 카페의 홍보에 도움이 될 것 같아서…</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/아두이노-계획표.png" rel="lightbox[28246]"><img class="alignright size-medium wp-image-28247" alt="아두이노 계획표" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/아두이노-계획표-300x133.png" width="300" height="133" /></a><span style="font-size: 11px; line-height: 19px;">  현재 구상하고 있는 회차별 내용을 간략하게 정리해 보면 다음과 같습니다. (변경될 수 있습니다.)  앞으로 즐겁고 알찬 강의가 될 수 있도록 최선을 다할 것을 약속 드리며, 이 강의를 보는 독자들도 메일이나 카페를  통하여 Q&amp;A(Question &amp; Answer)나 피드백을 주셔서, 함께 정감을 나눌 수 있는 계기가 되기를 기대해 봅니다.</span></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><span style="font-size: large;"><span style="background-color: #808000;"><strong><span style="color: #ffffff;">  </span></strong><strong><span style="color: #ffffff;">■</span></strong></span><span style="background-color: #808000;"><strong><span style="color: #ffffff;"><a href="http://www.devicemart.co.kr/34404" target="_blank"> 아두이노</a>가 뭔가요?   </span></strong></span></span></p>
<p dir="ltr">   자, 그럼 시작해 보겠습니다. 요렇게 생긴 물건을 보신 적이 있나요?</p>
<p style="text-align: left;"><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-00.jpg" rel="lightbox[28246]"><img class="size-large wp-image-28259 aligncenter" alt="29 아두이노 신호기 00" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-00-620x348.jpg" width="620" height="348" /></a>   예. 요 물건의 이름이 아두이노인데요, 조금 더 정확하게 이야기하면 아두이노 UNO R3입니다. 파란색 플라스틱처럼 보이는 PCB(Printed Circuit Board) 판에 조그만 컴퓨터에 해당하는 마이크로콘트롤러(마이크로프로세서) 칩(IC, Integrated Circuit)이 장착되어 있어서 이것으로 계산 등 여러가지 일을 처리합니다. 전기는 +5V를 공급해주어야 하는데 이것은 USB 커넥터에 USB 케이블을 연결하여 공급합니다. 아두이노는 또한 입출력커넥터를 가지고 있는데, 여기에 전선을 꼽아서 LED(Light Emitted Diode, 발광다이오드)도 연결하여 불도 켰다 껐다 하고, 버저나 모터 등 여러 가지 다른 전자 부품도 연결하여 소리도 내고 움직이게 할 수도 있습니다.</p>
<p dir="ltr">   참, 아두이노(arduino)라는 이름은 이탈리아어로 ‘친한 친구’라는 뜻이라네요, 이 아두이노를 처음 고안해 낸 사람들이 이탈리아 사람들이어서 이름도 이탈리아어인데, 발음하기 편하고 입에 짝 달라붙는 정겨운 이름인 것 같습니다.</p>
<p style="text-align: left;">
<p dir="ltr"><span style="font-size: large;"><strong><span style="color: #ffffff; background-color: #808000;">  ■ <a href="http://www.devicemart.co.kr/goods/view.php?seq=34404" target="_blank">아두이노</a>로 뭘 할 수 있나요?   </span></strong></span></p>
<p dir="ltr">   이 아두이노로 뭘 할 수 있을까요? 앞으로 하나씩 DIY(Do It Yourself)로 만들어보겠지만, 아두이노로는 전등도 켤 수 있고, 음악도 연주할 수 있고, 장난감 로봇도 조정할 수 있고, 이것 저것 아주 많은 것을 할 수 있습니다. 유튜브(http://www.youtube.com)에서 볼 수 있는 실례를 몇 개만 소개해 보겠습니다. 가능하면 여러분이 직접 방문하여 동영상을 보면 더욱 좋겠네요.</p>
<p style="text-align: center;"><iframe width="425" height="350" src="http://www.youtube.com/embed/mXMIdq6ouG0" frameborder="0"></iframe></p>
<p style="text-align: center;"><strong>아두이노로 만든 종이 피아노</strong></p>
<p style="text-align: center;"><iframe width="425" height="350" src="http://www.youtube.com/embed/-oJytWP6pU4" frameborder="0"></iframe></p>
<p style="text-align: center;"><strong>아두이노 UNO를 활용해서 만든 초음파 레이더</strong></p>
<p style="text-align: center;"><iframe width="425" height="350" src="http://www.youtube.com/embed/VNRX5Xkz_00" frameborder="0"></iframe></p>
<p style="text-align: center;"><strong>WALL-E  로봇 아두이노</strong></p>
<p style="text-align: center;">
<p>   예로 든 것이 조금은 복잡한 것일 수 있겠지만, 작은 것부터 하나씩 공부하다 보면 나중에는 여러분도 위와 같은 작품을 DIY로 만들 수 있답니다! 자신감을 가지세요!</p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><strong><span style="color: #ffffff; font-size: large; background-color: #808000;">  ■ 그러면 준비를 해 봅시다!   </span></strong></p>
<p dir="ltr">   아두이노를 이용하여 뭔가를 만들어 보려면, 일단 약간의 준비가 필요합니다. 꼭 필요한 것 먼저 확인해 봅시다.</p>
<p>&nbsp;</p>
<p dir="ltr">1.  아두이노 보드 : 오리지널 보드는 물론 OK이구요. 값이 싼 중국산 호환 보드나 블루투스 통신이나 모터 드라이버 등의 기능을 추가로 내장한 아두이노 보드도 OK</p>
<p dir="ltr">* 아두이노 오리지널 보드: <a href="http://www.devicemart.co.kr/34404" target="_blank">http://www.devicemart.co.kr/34404</a></p>
<p dir="ltr">* 아두이노 호환 보드 (예 : 뉴티씨 제품) : <a href="http://www.devicemart.co.kr/1137923" target="_blank">http://www.devicemart.co.kr/1137923</a></p>
<p dir="ltr">* 아두이노 호환 부가 기능 내장 보드 (예 : 제이씨넷 제품) : <a href="http://www.devicemart.co.kr/1137972" target="_blank">http://www.devicemart.co.kr/1137972</a></p>
<p>&nbsp;</p>
<p dir="ltr">2. PC 또는 노트북 (아무거나 OK)</p>
<p dir="ltr">
<p dir="ltr">3. 아두이노와 PC(노트북)을 연결할 USB 케이블 (한쪽은 USB-A 타입, 다른 한쪽은 USB-B 타입의 케이블, 보통 아두이노 구입시 함께 제공됨)</p>
<p>&nbsp;</p>
<p dir="ltr">4. 아두이노 프로그램 (이것의 이름도 아두이노입니다.)</p>
<p dir="ltr">4번은 소프트웨어이므로 인터넷에서 설치프로그램을 찾아 이를 PC에 설치하여야 합니다. 스마트폰으로 뭔가 재미있는 것을 하려면 앱을 설치해야 하는 것과 마찬가지지요.</p>
<p dir="ltr">
<p dir="ltr">설치 순서는 다음과 같습니다.</p>
<p> 1. 아두이노 공식 홈페이지(http://arduino.cc) 방문</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-04.jpg" rel="lightbox[28246]"><img class="aligncenter size-large wp-image-28263" alt="29 아두이노 신호기 04" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-04-620x368.jpg" width="620" height="368" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">2. 위쪽 메뉴 [Download]를 누르고 → 나타나는 창의 조금 아래 부분에 [Arduino 1.0.6]을 찾아 클릭 → [Windows Installer]를 클릭하면, [arduino-1.0.6-windows.exe]가 다운로드 됨</p>
<p>&nbsp;</p>
<p dir="ltr">3. 다운받은 arduino-1.0.6-windows.exe 파일 실행</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-05.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28264" alt="29 아두이노 신호기 05" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-05.jpg" width="480" height="275" /></a></p>
<p style="text-align: center;"><strong>[실행] 클릭</strong></p>
<p><img class="aligncenter size-large wp-image-28265" alt="29 아두이노 신호기 06" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-06.jpg" width="426" height="291" /></p>
<p style="text-align: center;"><strong>[I Agree] 클릭</strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-07.jpg" rel="lightbox[28246]"><img class="aligncenter size-large wp-image-28266" alt="29 아두이노 신호기 07" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-07.jpg" width="426" height="291" /></a></p>
<p style="text-align: center;"><strong>[Next] 클릭</strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-08.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28267" alt="29 아두이노 신호기 08" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-08.jpg" width="426" height="291" /></a></p>
<p style="text-align: center;"> <strong>[Install] 클릭</strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-09.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28268" alt="29 아두이노 신호기 09" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-09.jpg" width="426" height="291" /></a></p>
<p style="text-align: center;"><strong> 기다립니다.</strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-10.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28269" alt="29 아두이노 신호기 10" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-10.jpg" width="508" height="239" /></a></p>
<p style="text-align: center;"><strong> [V]표시를 클릭하고 [설치]클릭</strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-11.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28270" alt="29 아두이노 신호기 11" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-11.jpg" width="426" height="291" /></a></p>
<p style="text-align: center;"><strong> 설치완료 후 [Close] 클릭</strong></p>
<p>4. PC 바탕화면에  <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-12.jpg" rel="lightbox[28246]"><img class=" wp-image-28271 alignnone" alt="29 아두이노 신호기 12" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-12.jpg" width="31" height="36" /></a>  이런 아이콘이 생겼으면 설치가 잘 된 것입니다.</p>
<p>그러면, 내친김에 얼른 실행시켜 볼까요?</p>
<p dir="ltr">
<p dir="ltr">1. 아두이노와 PC를 USB 케이블로 연결</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-26.jpg" rel="lightbox[28246]"><img class="aligncenter size-large wp-image-28285" alt="29 아두이노 신호기 26" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-26-620x348.jpg" width="620" height="348" /></a></p>
<p dir="ltr">2. 전원 LED에 녹색으로 불이 들어오면 일단 OK!!! 구요.</p>
<p>PC 화면에서 <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-12.jpg" rel="lightbox[28246]"><img alt="29 아두이노 신호기 12" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-12.jpg" width="31" height="36" /></a> 아이콘 클릭하여 아래와 같은 화면이 나타나면 설치도 일단 OK!!! 네요.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-13.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28272" alt="29 아두이노 신호기 13" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-13.jpg" width="500" height="600" /></a></p>
<p>내 아두이노가 준비되었고 나와 아두이노와 이야기를 나눌 아두이노 앱(App. 응용프로그램)이 준비되었으니 가장 기본적인 주거환경은 만들어진 것이네요.</p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><span style="font-size: large;"><strong><span style="color: #ffffff; background-color: #808000;">  ■ 프로그램을 짜서 실행시켜 보기   </span></strong></span></p>
<p dir="ltr">   잠시 쉬었으니까, 이제 첫번째 DIY 프로젝트로 빨강-노랑-녹색 불이 반짝 반짝 켜졌다 꺼지는 3색 신호등을 한 번 만들어 보겠습니다.</p>
<p dir="ltr">   걸음마도 못하는 아기가 뭐 벌써 만드냐구요? 뭐, 일단 목표를 세우고 만들어가는 과정에서 필요한 것은 차근차근 하나씩 배우고 익히면 되겠지요. 힘들면 쉬었다 가고, 재미있는 것이 나오면 조금 놀다 가고&#8230;</p>
<p dir="ltr">   “배우고 익힌다!”는 구절은 제가 아주 좋아하는 구절인데요. 논어의 가장 첫번째 장에 이런 구절이 있습니다. “學而時習之 不易說乎” (학이시습지 불역열호) &#8211; 배우고 때로 익히면 또한 기쁘지 아니한가! 나머지 2개도 멋있습니다. “有朋自遠方來 不亦樂乎” (유붕자원방래 불역낙호) &#8211; 벗이 있어 멀리서 찾아오면 또한 즐겁지 아니한가! “人不知而不溫 不易君子乎” (인불지이불온 불역군자호) 사람들이 알아주지 않는다 하여도 성내지 않으면 또한 군자(멋진 사람)가 아닌가! 옆 길로 잠시 샜는데&#8230;다시 원래 길로 돌아 갑니다.</p>
<p dir="ltr">   앞에서 아두이노는 마이크로콘트롤러가 들어있는 간단한 컴퓨터라고 이야기했습니다. 좀 더 쉽게 이해하기 위하여 아두이노를 그냥 “잘 훈련된 훈련견”이라고 생각하면 이해하기 쉬울 것 같습니다. 명령을 내리면 훈련견이 명령에 알맞은 동작을 취하듯, 아두이노에게 해야 할 명령을 내리면 아두이노가 실행하게 되는 것이지요. 여기서 명령이라는 것이 바로 프로그램인데, 훈련견이 정해진 명령어에만 반응하는 것처럼, 아두이노도 정해진 형식을 갖춘 정해진 명령어만 알아듣습니다.</p>
<p dir="ltr">   오우~ 그럼 명령어의 종류를 알아서 필요한 명령만 죽 연결해서 명령을 내리면 되겠네요.</p>
<p dir="ltr">   짝~짝~짝~</p>
<p dir="ltr">   예. 맞습니다. 너무 잘 하는데요?</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-14.jpg" rel="lightbox[28246]"><img class="aligncenter size-large wp-image-28273" alt="29 아두이노 신호기 14" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-14-620x402.jpg" width="620" height="402" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">   그러면, 어떤 명령어가 있을까요? 마음이 급하니까 일단 제일 쉬운 명령어 두 세 개만 배워서 명령을 내려봅시다. 아래와 같이 진행해 볼까요?</p>
<p>&nbsp;</p>
<p dir="ltr">1. 아두이노와 PC를 USB 케이블로 연결</p>
<p dir="ltr">
<p dir="ltr">2. PC에서 아두이노(앱, 엄밀하게는 IDE(Integrated Development Environment, 통합개발환경)) 실행</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-15.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28274" alt="29 아두이노 신호기 15" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-15.jpg" width="500" height="600" /></a></p>
<p>&nbsp;</p>
<p>3. 메뉴에서 [도구] -&gt; [보드] -&gt;[Arduino Uno] 선택</p>
<p dir="ltr">(아두이노는 사실 우노(UNO)뿐만 아니라 NANO, MEGA, MINI 등 다양한 종류가 있으나 UNO가 가장 많이 사용되고 있음)</p>
<p dir="ltr">
<p dir="ltr">4. 메뉴에서 [도구] -&gt; [시리얼포트] -&gt; [COMx] 선택 (단, x는 [시작] -&gt; [제어판] -&gt; [장치관리자] -&gt; [포트] -&gt; [Arduino Uno(COMx)]로 보이는 상태에서 x에 대응되는 숫자임) (아두이노는 USB로 연결되기 때문에 PC 입장에서는 USB 장치이므로 USB 드라이버가 필요하며 이 드라이버는 아두이노 프로그램 설치시 이미 함께 설치되었음. 만약 설치되지 않았다면 수동으로 설치하여야 함)</p>
<p>&nbsp;</p>
<p>5. 흰색 창에 아래와 같은 프로그램을 입력</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-16.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28275" alt="29 아두이노 신호기 16" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-16.jpg" width="500" height="600" /></a></p>
<p>&nbsp;</p>
<p>6. 상단 메뉴에서 <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-17.jpg" rel="lightbox[28246]"><img class=" wp-image-28276 alignnone" alt="29 아두이노 신호기 17" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-17.jpg" width="29" height="25" /></a> 생긴 아이콘을 찾아 클릭하면 아래쪽에 “스케치 컴파일” ▶ “업로딩” ▶ “업로딩 완료”로 제목이 나타나며 진행이 되고, 아래쪽 검정색 창에는 진행되는 내용이 스크롤되면서 디스플레이되며, 최종적으로는 아래의 형태가 나타납니다.(최종적으로 제목으로 “업로드 완료”가 나타나고 메시지 내용으로 “avrdude done. Thank you.”,가 나타나면 성공입니다.)</p>
<p>(<a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-17.jpg" rel="lightbox[28246]"><img alt="29 아두이노 신호기 17" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-17.jpg" width="29" height="25" /></a> 아이콘은 컴파일 및 업로드를 수행하라는 아이콘이며, 컴파일은 C, C++ 언어와 같은 프로그램언어를 마이크로콘트롤러가 직접 알아먹을 수 있는 좀 더 직접적인 기계어로 바꾸어주는 작업을 말하며, 업로드는 컴파일의 결과로 생긴 기계어를 마이크로콘트롤러에게 전달하여 이를 마이크로콘트롤러 내부에 실행할 수 있는 형태로 저장하는 작업을 말함.)</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-18.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28277" alt="29 아두이노 신호기 18" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-18.jpg" width="500" height="600" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">7. 위와 같은 형태가 나오지 않고 “컴파일 에러”가 나오면 입력한 프로그램의 형식이 잘못된 것이고, 메시지 출력 부분에서 “Retry timeout ERROR” 등이 나타나면 USB 연결선이 잘못되었거나, 아두이노가 고장 난 경우 등등입니다. 만약, 정상적으로 업로드되지 않았다면 그 원인을 찾아내어 이를 해결한 후 다시 실행하여야 합니다.</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="color: #ff0000;"><strong>   [ setup() 과 loop() ]</strong></span></p>
<p>&nbsp;</p>
<p dir="ltr">   아두이노에서 프로그램을 작성하는 것을 스케치(sketch)라고 합니다. 아두이노는 예술가와 같은 비전공자도 쉽게 사용할 수 있도록 간단한 인터페이스를 제공하는데, 원하는 것을 쉽게 쓱쓱 그려낸다는 의미를 담아 스케치라고 하였다네요.</p>
<p dir="ltr">   아두이노 프로그램의 기반은 C++이라는 컴퓨터 프로그래밍 언어(C++ 언어는 C언어에 기반을 둔 목적기반 언어)이며, 이 언어로 올바르게 작성된 프로그램만 아두이노가 명령어로 받아들이고 실행하게 됩니다. 그러므로, 아두이노에게 일을 시켜려면 이 언어에 대한 기본 형식과 구조 등에 대한 내용을 알아야만 합니다. 전체적인 내용을 모두 배우려면 시간이 많이 걸릴 수 있으므로, 우리는 DIY 작품을 만드는데 꼭 필요한 부분만 필요할 때마다 배우고 익히도록 해보지요. (다만, 이 강좌가 C 및 C++ 언어에 대한 강좌는 아니기 때문에, C 및 C++에 대하여는 최소한의 기초적인 내용은 알고 있다고 가정하고, 진행합니다.)</p>
<p dir="ltr">   일단, 위에서 작성한 프로그램을 보겠습니다.</p>
<p dir="ltr">   아두이노의 프로그램은 크게 두 부분으로 나누어집니다. 하나는 setup() 이라는 부분이고, 다른 하나는 loop()라는 부분입니다. 원래 C 프로그램은 main()이라는 함수의 형태를 취하도록 되어 있고, 이 main() 함수 내에서 필요한 명령을 순차적으로 작성하여 실행하게 되어 있습니다.</p>
<p dir="ltr">   아두이노 개발환경(IDE)은 사용자가 쉽게 프로그램할 수 있도록 항상 main() 프로그램을 공짜로 넣어주도록 되어있고, 이 main() 프로그램 안에서 첫번째로 setup()이라는 함수를 실행하고, 두번째로 loop()라는 프로그램을 반복적으로 실행하도록 이미 만들어져 있다고만 알아두면 되겠습니다.</p>
<p dir="ltr">   이렇게 실행이 되겠네요.</p>
<p>&nbsp;</p>
<p dir="ltr">   <strong><span style="color: #ff0000;">setup()</span></strong></p>
<p dir="ltr"><strong><span style="color: #ff0000;">   loop()</span></strong></p>
<p dir="ltr"><strong><span style="color: #ff0000;">   loop()</span></strong></p>
<p dir="ltr"><strong><span style="color: #ff0000;">   …</span></strong></p>
<p dir="ltr"><strong><span style="color: #ff0000;">   Loop()</span></strong></p>
<p dir="ltr"><strong><span style="color: #ff0000;">   …</span></strong></p>
<p dir="ltr"><strong><span style="color: #ff0000;">   … (무한 실행)</span></strong></p>
<p>&nbsp;</p>
<p dir="ltr">   우리가 작성한 setup() 함수와 loop() 함수는 중괄호로 둘러싸인 부분의 내용이 하나도 없으므로, 이 프로그램은 아무 것도 안하고 그냥 다시 원위치로 돌아가는 프로그램이 되겠습니다. 하지만 우리는 이 프로그램이 잘 컴파일되고, 잘 업로드 되었다는 사실만으로도 이제부터 우리가 원하는 진짜 프로그램을 작성할 수 있는 준비를 끝낸 것이 됩니다.</p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><span style="font-size: large; background-color: #808000;"><strong><span style="color: #ffffff;">  ■<a href="http://www.devicemart.co.kr/goods/view.php?seq=34404" target="_blank"> 아두이노</a>에 LED 연결하기   </span></strong></span></p>
<p dir="ltr">   신호등을 만들어서 이것을 아두이노에 연결해서 불을 켜고 끄려면, 일단 아두이노가 이 신호등에 전기를 넣었다 끊었다 할 수 있어야 할 것 같은데… 이것은 어떻게 할 수 있을까요?</p>
<p dir="ltr">   보통 집에서 사용하는 전등이나 전열기 등은 콘센트를 꼽으면 전기가 통하고 뽑으면 전기가 끊어집니다. 또는 전등과 같이 미리 전원은 연결해 놓고 중간에 스위치를 넣어서 이것을 ON/OFF 위치로 이동하여서 껐다 켰다 할 수도 있겠지요.</p>
<p dir="ltr">   아두이노도 이러한 기능을 하는 전기선을 가지고 있는데 이러한 선이 바로 입출력 핀(커넥터)입니다. 전기를 공급하였다가 끊었다가 할 수 있는 선이지요. 아두이노는 프로그램에 의하여 각각의 입출력 전압을 ON(5V, High) 상태로 만들거나, OFF(0V(GND), Low) 상태로 만들 수 있는 능력이 있답니다. 이런 핀들이 아래와 같이 커넥터로 나와 있는데. 아두이노 UNO의 경우는 총 20개나 되지요.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-19.jpg" rel="lightbox[28246]"><img class="aligncenter size-large wp-image-28278" alt="29 아두이노 신호기 19" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-19-620x425.jpg" width="620" height="425" /></a></p>
<p dir="ltr">   물론, 집에 있는 콘센트는 220V의 교류(AC : Alternating Current) 전원이고, 아두이노의 입출력핀은 5V의 직류(DC : Direct Current)를 제공하는 점이 다르지만, 전기를 공급한다는 점에서는 비슷하답니다. 음, 그렇다면, 형광등이나 전등처럼 빛을 발산하는 것으로 5V의 전원으로 동작하는 부품을 찾아 이것을 연결하면 될 것 같은데, 이 부품은 뭘까요? 뭐, 모두 다 잘 아시리라 생각하는데… 이것이 바로 LED(Light Emitting Diode)랍니다. 요렇게 생겼지요. (심볼은 오른쪽 그림)</p>
<p dir="ltr"> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/아두이노1-자료.png" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28297" alt="아두이노1 자료" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/아두이노1-자료.png" width="440" height="133" /></a></p>
<p dir="ltr">   2개의 다리를 가지고 있고, 색깔은 빨강, 파랑, 노랑, 녹색, 흰색이 있답니다. 크기는 지름이 3mm나 5mm 인 것이 보통이고, 형태는 둥근 것이 보통이나 사각형 형태도 있지요.</p>
<p dir="ltr">   LED를 그대로 번역해보면, Light(빛) + Emitting(발산) + Diode(다이오드)가 되어서 보통 ‘발광다이오드’라고 칭하는데, 다이오드여서 한쪽 방향으로만 전기가 통합니다. 즉, 순방향으로 전압을 가하면 전류가 잘 흘러서 불이 켜지고, 역방향으로 전압을 가하면 전류가 흐르지 않아 불이 꺼지게 되는 것이지요.</p>
<p dir="ltr">   가정용 전구와 LED의 연결을 비교해 보면 아래와 같습니다. (LED는 보통 200오옴 ~ 1K 오옴의 저항을 직렬로 연결해 주어야 하며, 이 저항이 전류의 양을 조절하여 빛의 밝기를 조절할 수 있게 해줍니다. 저항 없이 직접 연결하면 빛은 엄청 밝지만 수명은 매우 짧아지므로 주의 요망!)</p>
<p dir="ltr">   또한, 교류 전원은 방향이 없어서 콘센트를 아무쪽 방향으로 꽂아도 되지만, LED의 연결은 방향이 있어서 그림에서와 같이 입출력핀에서 순방향이 되도록(LED는 다리의 길이가 긴 쪽이 ‘+’ 임!) +5V 전원 ▶ 저항 ▶ LED ▶ GND로 연결하여야 합니다.</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-21.jpg" rel="lightbox[28246]"><img class="aligncenter size-large wp-image-28280" alt="29 아두이노 신호기 21" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-21-620x417.jpg" width="620" height="417" /></a></p>
<p dir="ltr">   이제 실전 DIY로 넘어가기 전에 잠깐 또 쉬겠습니다.</p>
<p dir="ltr">   10분간 휴식! 기지개도 좀 펴시고, 간단한 스트레칭도 해 봅시다. 헛! 둘! 헛! 둘!</p>
<p dir="ltr">
<p dir="ltr">
<p dir="ltr"><strong><span style="color: #ffffff; font-size: large; background-color: #808000;">  ■ LED 1개 켜기 / 끄기   </span></strong></p>
<p dir="ltr">   자, 드디어 실전 DIY 시간입니다. 3개의 LED 켜기에 앞서 먼저 1개의 빨강 LED를 다뤄보지요. “뱁새가 황새 따라가다가는 가랑이가 찢어진다”는 속담과 “천리길도 한걸음부터”라는 속담을 새기면서 말이죠.</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: medium;"><strong>[실행 순서]</strong></span></p>
<p dir="ltr">1. 아두이노를 준비하고, 브레드보드와 부품, 케이블을 이용하여 다음과 같이 연결. 즉, LED를 ‘2’ 핀(앞으로는 ‘D2’라고 이름하겠습니다. 여기서 ‘D’는 Digital의 의미)에 연결 (LED는 일반 5mm(또는 3mm) 빨강 LED, 저항은 200~1K 오옴)</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-22.jpg" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28281" alt="29 아두이노 신호기 22" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-22.jpg" width="351" height="344" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">2. USB 케이블로 아두이노와 PC 연결</p>
<p>&nbsp;</p>
<p dir="ltr">3. 메뉴에서 [도구] ▶ [보드] ▶ [Arduino Uno] 선택 (처음 한번 세팅되면 다음부터는 생략!)</p>
<p>&nbsp;</p>
<p dir="ltr">4. 메뉴에서 [도구] ▶ [시리얼포트] ▶ [COMx] 선택 (단, x는 [시작] ▶ [제어판] ▶ [장치관리자] ▶ [포트] ▶ [Arduino Uno(COMx)]로 보이는 상태에서 x에 대항되는 숫자)</p>
<p>&nbsp;</p>
<p dir="ltr">5. 아래의 스케치 프로그램 입력</p>
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td style="border: 1px solid #000000;" valign="middle">
<p dir="ltr">void setup()</p>
<p dir="ltr">{</p>
<p dir="ltr">   pinMode(2, OUTPUT);                           // 2번핀을 출력으로 선언</p>
<p dir="ltr">}</p>
<p dir="ltr">void loop()</p>
<p dir="ltr">{</p>
<p dir="ltr">   digitalWrite(2, HIGH);                         // 2번핀에 High(1)를 출력</p>
<p dir="ltr">}</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">   setup() 함수는 한번만 실행이 되고 loop() 함수는 무한 반복으로 실행된다고 하였으니 실제 실행되는 내용은 아래와 같이 되겠네요.</p>
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td style="border: 1px solid #000000;" valign="middle">
<p dir="ltr">        pinMode(2, OUTPUT);</p>
<p dir="ltr">        digitalWrite(2, HIGH);</p>
<p dir="ltr">        digitalWrite(2, HIGH);</p>
<p dir="ltr">        …</p>
<p dir="ltr">        digitalWrite(2, HIGH);</p>
<p dir="ltr">        …</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">   아두이노는 상당히 많은 라이브러리 함수를 제공하는데요. 이것 때문에 우리는 아두이노의 내부를 알 필요 없이, 그냥 아두이노가 제공하는 함수를 불러다 쓰면 되기 때문에 매우 편리합니다. pinMode() 함수와 digitalWrite() 함수도 아두이노가 제공하는 라이브러리입니다.</p>
<p dir="ltr">   그러면 이 라이브러리는 어떻게 동작하는 좀 더 자세히 알아보겠습니다.</p>
<p style="text-align: left;">   pinMode() 함수는 아두이노의 입출력핀을 입력으로 사용할 것이냐, 출력으로 사용할 것이냐를 정해주는 함수입니다. 어떤 핀? 입력?/출력? 을 결정해 주어야 하니까 2개의 값이 필요하겠네요. 즉, 어떤 핀?에 해당되는 값을 pin이라는 변수로, 입력?/출력?에 해당되는 값을 mode 형태로 전달하면 되므로 다음과 같은 형태가 됩니다.</p>
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td style="border: 1px solid #000000;" valign="middle">
<p dir="ltr">pinMode(pin, mode)</p>
<p dir="ltr">pin : 입출력핀 번호에 해당하는 숫자</p>
<p dir="ltr">mode : 이 핀을 입력으로 사용하는 경우는 “INPUT”, 출력으로 사용하는 경우는 “OUTPUT” (INPUT이나 OUTPUT은 상수값인데요. 이것도 이미 아두이노에서 정해준 값이므로 그냥 이렇게 사용하면 됩니다.)</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">   우리는 LED를 D2핀에 연결하였고, 이 핀은 아두이노 입장에서 출력이므로 pinMode(2, OUTPUT)으로 프로그램합니다.</p>
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td style="border: 1px solid #000000;" valign="middle">
<p dir="ltr">digitalWrite(pin, value)</p>
<p dir="ltr">pin : 입출력핀 번호에 해당하는 숫자</p>
<p>value : 이 핀을 HIGH 상태로 만들려면 “HIGH”, LOW 상태로 만들려면 “LOW”</td>
</tr>
</tbody>
</table>
<p dir="ltr">   digitalWrite() 함수는 아두이노의 입출력핀에 출력으로 어떤 값을 내보낼 것인가, 즉, HIGH(ON, +5V) 또는 LOW(OFF, 0V)를 정해주는 함수입니다. 이 함수도 어떤 핀?을 HIGH?/LOW?로 만들 것인지를 결정해야 하므로 2개의 변수값이 필요하므로 digitalWrite(pin, value) 형태가 되겠습니다.</p>
<p dir="ltr">   이제 2개 함수를 종합적으로 이해해본다면, 위 프로그램은 D2핀을 출력으로 하고, 이 D2핀을 HIGH로 출력하는 것을 무한히 반복하는, 즉 LED가 항상 켜지는 프로그램이 되겠습니다!</p>
<p dir="ltr">   정말 그런지 얼른 실행해 봅시다.</p>
<p style="text-align: left;">
<p dir="ltr">6. 상단 메뉴에서 생긴 아이콘을 찾아 클릭하고 아래쪽에 “스케치 컴파일” ▶ “업로딩” ▶ “업로딩 완료” 및 “avrdude done. Thank you.”, 메시지가 나타나는지 확인!</p>
<p style="text-align: left;">
<p dir="ltr">7. 에러가 없는 경우 빨강색 LED가 켜지는지 확인!</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-23.jpg" rel="lightbox[28246]"><img class="aligncenter size-large wp-image-28282" alt="29 아두이노 신호기 23" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-23-620x348.jpg" width="620" height="348" /></a></p>
<p>&nbsp;</p>
<p dir="ltr">   켜졌다면 와우! 3번째 “축하축하”입니다. 이제 8부 능선에 도착했네요.</p>
<p dir="ltr">   정상이 코 앞에 다달았습니다. 여기서 다시 충분한 휴식을 취한 후에 정상 공격에 나서겠습니다. 10분간 또 휴식~~~ 그리고 막간을 이용해서 아래의 간단 과제 실행 실시! 윽!</p>
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td style="background-color: #9acd32;" valign="middle">
<p dir="ltr"><strong>[과제-3색신호등-1]</strong></p>
<p dir="ltr"><strong>위의 LED를 끄는 스케치 프로그램을 작성하고 실행하여 실제로 꺼보세요!</strong></p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">
<p dir="ltr">
<p dir="ltr"><strong><span style="color: #ffffff; font-size: large; background-color: #808000;">  ■ 3색 신호등 연결하기    </span></strong></p>
<p dir="ltr">   “시작이 반이다”라는 속담이 있는데 정말 시작이 반인 것 같다는 생각을 가끔 합니다. 실행하려면 미리 준비하여야 하는 것도 있고, 일단 시작하면 특별한 일이 없는 한 계속 가야 하는 것이어서 마음 먹는 것, 실행하는 것 자체가 반은 진행된 것이라는 느낌이지요.</p>
<p dir="ltr">   조금 전 첫 DIY로 빨강 LED 하나 달랑 켜는 것을 해 보았습니다. (참, LED 끄는 과제는 내드렸는데 다들 해보셨죠? 너무 너무 쉬었겠지만&#8230;) 어느새 우리는 간단한 중간 목표를 한 개 달성했습니다. 시작했다 싶었는데 벌써 결과가 나온 것이지요. LED를 한 개 켜보았으니, 3개(3색 신호등), 100개(전광판)도 켜고 끌 수 있고, LED가 아닌 것(버저, 모터 등)도 얼마든지 연결하면 동작시킬 수 있다는 가능성을 연 것입니다. 정말 “시작이 반이지요?” 또, 옆으로 샜는데… 다시 원위치로 돌아가, 정상 공격에 나서겠습니다.</p>
<p dir="ltr">   빨강색 LED 1개를 연결하는 것을 방금 배웠으니, LED 3개 연결하는 것도 이것을 그대로 응용하면 될 것 같습니다. LED 1개를 아두이노 입출력 포트 1개에 연결한 방법과 똑같이 LED 3개를 각각 다른 포트에 연결하면 되겠네요. 오~ 너무 쉽다.</p>
<p dir="ltr">   음. 그런데 어떤 핀에다 연결할까요? 입출력핀이 20개나 있으니까 아무데나 연결해도 괜찮긴 하지만, 기왕이면 순서대로 연결하도록 하지요. 이번에는 D4-빨강, D3-노랑, D2-녹색 LED를 연결하는 회로를 꾸며봅시다. 혼자서도 할 수 있겠지요? 이번 DIY가 3색 신호등이니까 당연히 LED는 빨강-노랑-녹색 순으로 브레드보드에 그럴듯하게 꽂아야 합니다. 자, 그럼 아래 그림 보기 전에 각자 회로 꾸미기 시작~~~~ 누가 누가 예쁘게 꾸미나~~~ (5분 줍니다.) (참, 브레드보드 내의 핀 연결은 어떻게 되는지 모두 알지요? 혹시 모르면 다음 그림 참조)</p>
<p style="text-align: left;">
<p dir="ltr"><span style="color: #0000ff;">(1분)</span></p>
<p dir="ltr"><span style="color: #0000ff;">(2분)</span></p>
<p dir="ltr"><span style="color: #0000ff;">(3분)</span></p>
<p dir="ltr"><span style="color: #0000ff;">(4분)</span></p>
<p dir="ltr"><span style="color: #0000ff;">(5분)</span></p>
<p dir="ltr"><span style="color: #0000ff;">…</span></p>
<p style="text-align: left;">
<p dir="ltr">   저는 요렇게 만들어 보았습니다. 실제로 장착할 때는 선 길이와 부품 모양이 달라서 요것과는 조금 다르게 보이겠지만요. 예쁜가요?</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-28.jpg" rel="lightbox[28246]"><img class="aligncenter size-large wp-image-28287" alt="29 아두이노 신호기 28" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/29-아두이노-신호기-28-620x502.jpg" width="620" height="502" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #ffffff; font-size: large; background-color: #808000;"><strong>  ■ 3색 신호등 알고리즘    </strong></span></p>
<p dir="ltr">   이제 연결은 끝났으니 프로그램을 작성하여 실행할 차례네요.</p>
<p dir="ltr">   그런데, 프로그램을 작성할 때는 항상 주어진 문제를 어떤 식으로 풀어갈 것인지를 먼저 생각하여야 합니다. 그냥 무작정 프로그램을 작성할 수도 없을뿐더러 별 생각없이 생각나는대로 아무렇게나 프로그램을 작성하다 보면 효율성도 떨어지고 해결책을 찾는 것도 뒤죽박죽이 되어 쉽지 않은 경우가 대부분이지요.</p>
<p dir="ltr">   그러면 어떻게 해야 할까요?</p>
<p dir="ltr">   “어떤 문제를 해결하기 위해 명확히 정의된 유한 개의 규칙과 절차의 모임”을 알고리즘(algorithm)이라고 하는데, 우리는 어떤 문제를 해결하려고 할 때 이러한 알고리즘을 먼저 작성한 후 이를 프로그램으로 바꾸는 방법을 사용하도록 하겠습니다. 뭐, 똑 떨어지게 꼭 이렇게 해야 한다는 법도 없고 실제로 일을 하다 보면 그렇게 되지도 않지만, 가능한(조금 부족하거나 모호한 경우가 있더라도) 알고리즘을 작성한 후에 프로그램을 하도록 하는 것이 정상적인 방법입니다. 완벽하지는 않더라도 어느 정도는 방향을 잡고 가야 한다는 이야기입니다.</p>
<p dir="ltr">  알고리즘을 기술하는 방식은 크게 아래와 같이 3가지가 있습니다.</p>
<p dir="ltr">1. 자연어를 이용하는 방법 : 말(글)로 자연스럽게 기술</p>
<p dir="ltr">2. 순서도(flow chart)를 이용하는 방법 : 미리 의미가 정해진 도형과 선을 이용하여 기술</p>
<p dir="ltr">3. 유사 코드(psudo code)를 이용하는 방법 : 프로그램 언어와 비슷하지만 문법에는 크게 얽매이지 않게 어느 정도 자유롭게 기술하는 방법</p>
<p dir="ltr">   저는 위 3가지를 혼합하여 이해하기 쉽게 표현하는 형태를 취하도록 하겠습니다.</p>
<p dir="ltr">   참, 알고리즘을 기술하려면, 이것에 앞서 일단 해결하고자 하는 목표(요구사항)를 정확하게 규정할 필요가 있습니다. 즉, 제작하려고 하는 것이 무엇인지? 기능이 무엇인지? 어떻게 동작하여야 하는지? 등이 명확하게 기술되어 있어야 실제로 구현을 어디까지 해야 하는지가 명확하게 되기 때문입니다. 보통 이것을 규격(스펙, SPEC, Specification)이라고 하는데, 우리의 목표인 3색 신호등 DIY를 위하여 기능적인 부분만 규격을 작성해 보기로 하지요.</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="font-size: medium;"><strong>[3색 신호등 기능 규격]</strong></span></p>
<p>1. 처음 전원이 들어오면 빨강 LED에 불이 켜진다.</p>
<p dir="ltr">2. 불이 들어오는 순서는 빨강 → 노랑 → 녹색 → 빨강 → 노랑 → … 으로 무한 반복된다.</p>
<p dir="ltr">3. 불은 어떤 한 순간 1개만 켜져 있어야 한다.</p>
<p dir="ltr">4. 한 개의 불은 3초 동안 켜진 상태를 유지한다.</p>
<p dir="ltr">   위 기능을 만족하기 위한 프로그램을 작성하기 위하여 먼저 알고리즘을 기술해 봅시다.</p>
<p dir="ltr">   순서도 비슷하게 기술해 보면 다음과 같은 형태가 될 것 같네요.</p>
<p> <a href="http://www.ntrexgo.com/wp-content/uploads/2015/07/Cap-2015-07-16-15-59-13-417.png" rel="lightbox[28246]"><img class="aligncenter size-full wp-image-28288" alt="Cap 2015-07-16 15-59-13-417" src="http://www.ntrexgo.com/wp-content/uploads/2015/07/Cap-2015-07-16-15-59-13-417.png" width="430" height="273" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><span style="color: #ffffff; font-size: large; background-color: #808000;"><strong>  ■ 3색 신호등 코딩(cording)하기    </strong></span></p>
<p dir="ltr">   프로그램을 작성하는 것을 보통 코딩(cording)한다고 합니다. 위의 알고리즘을 보면서 순서대로 알맞은 코딩을 하면 되겠네요. 우리는 이미 배워서 알고 있는 것은 그 방법을 사용하여 코딩하면 되고, 잘 모르는 것은 새로운 코딩 방법을 배워야 합니다. 새로운 코딩은 기존에 배웠던 것을 응용하거나 조합하여 만들어 내는 방법도 있지만, 일단 아두이노에서는 혹시 우리가 원하는 기능을 라이이브러리로 이미 만들어 놓았는지, 아니면 다른 몇 개의 기존 라이브러리를 응용하거나 조합하여 구현할 수 있는지를 확인해 보는 것이 중요합니다. (남들이 애써서 다 만들어 놓은 것을 내가 낑낑대면서 또 만들 필요가 없으니까요. “고맙습니다” 하면서 낼름 갔다 쓰는게 장땡!이고, 사실 아두이노는 이것이 가장 큰 장점 중의 하나입니다.) 하나씩 체크해 볼까요?</p>
<p dir="ltr">   LED를 켜고 끄는 것은 조금 전에 배웠으므로 그것을 이용하면 되고, 일정 시간(초) 동안 기다리는 기능이 있는데, 이것을 해결해 줄 수 있는 아두이노 라이브러리(들)이 있는지를 잘 찾아 봐야겠습니다.</p>
<p dir="ltr">   다행히, delay( )라는 함수가 있네요. 그럼 형태와 기능이 어떤지 살펴볼까요.</p>
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td style="border: 1px solid #000000;">
<p dir="ltr">void delay(unsigned long ms)</p>
<p dir="ltr">                  // 1/1000초(millisec) 단위로 시간을 지연하는 함수</p>
<p dir="ltr">                  // “void”는 함수 실행 종료 후 리턴값(출력값)이 없음을 의미</p>
<p dir="ltr">                  // “unsigned long ms”는 함수 입력값은 ms이고</p>
<p dir="ltr">                  // 타입은 unsigned long임을 나타냄 (4바이트 크기, 최대 40억 정도까지 표현 가능)</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">   예를 들어 “delay(500);” 을 코딩하면 500ms = 0.5초가 지연되는(흘러가는) 것이 되겠습니다. Good~~~ 그렇다면, 이제 모든 부분이 해결되었으니까 여러분이 직접 코딩해 보겠습니다. 10분 기다리면 되겠지요? 참, 앞에서도 그랬지만 같이 해보기 전에 무조건 자신이 먼저 시도해 보는 것이 바람직합니다. (이래야 실력이 쑥쑥 늡니다.). 잘 안되면 그 때 아래에 제시한 내용을 보고 이해한 후, 다시 처음부터 혼자 힘으로 한 번 더 코딩해서 똑같은 결과를 얻어야만 자기 것이 되지요. 꼭~꼭~꼭~ 그렇게 해보세요!! 10분 기다립니다. 저도 하러 갑니다.</p>
<p dir="ltr">   모두(?) 잘(?) 되었죠? YES or NOT? 다음을 보시지요.</p>
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td style="border: 1px solid #000000;">
<p dir="ltr">#define RED_LED 4           // “#define A B”은 이후 프로그램에서 A가 나오면 B로 치환</p>
<p dir="ltr">#define YELLOW_LED 3      // 프로그램에서 직접 숫자를 써도 되지만 이렇게 해놓으면</p>
<p dir="ltr">#define GREEN_LED 2        // 번호가 아닌 Label로 의미가 전달되므로 더 쉬움</p>
<p dir="ltr">void setup()                     // 초기에 한 번만 실행</p>
<p dir="ltr">{</p>
<p dir="ltr"> pinMode(RED_LED, OUTPUT);                     // 4번핀은 출력</p>
<p dir="ltr"> pinMode(YELLOW_LED, OUTPUT);                // 3번핀도 출력</p>
<p dir="ltr"> pinMode(GREEN_LED, OUTPUT);                  // 2번핀도 출력</p>
<p dir="ltr"> digitalWrite(RED_LED, HIGH);                     // 빨강 LED ON</p>
<p dir="ltr">}</p>
<p dir="ltr">void loop()                       // 무한 반복 루프</p>
<p dir="ltr">{</p>
<p dir="ltr"> delay(3000);                                            // 3초 대기</p>
<p dir="ltr"> digitalWrite(RED_LED, LOW);  digitalWrite(YELLOW_LED, HIGH);</p>
<p dir="ltr">                                                              // 빨강 LED OFF, 노랑 LED ON</p>
<p dir="ltr">  delay(3000);</p>
<p dir="ltr"> digitalWrite(YELLOW_LED, LOW);  digitalWrite(GREEN_LED, HIGH);</p>
<p dir="ltr">                                                              // 노랑 LED OFF, 녹색 LED ON</p>
<p dir="ltr">  delay(3000);</p>
<p dir="ltr"> digitalWrite(GREEN_LED, LOW);  digitalWrite(RED_LED, HIGH);</p>
<p dir="ltr">                                                               // 녹색 LED ON, 빨강 LED ON</p>
<p dir="ltr">}</p>
</td>
</tr>
</tbody>
</table>
<p dir="ltr">   이제 아두이노 연결하고 스케치 프로그램 입력하고 실행하는 것은 다 아시니까 실행해 봅시다. 다들 잘 동작하나요?</p>
<p style="text-align: center;"><iframe width="425" height="350" src="http://www.youtube.com/embed/JVNDQeTjNb0" frameborder="0"></iframe></p>
<p>   이 동영상처럼 3초마다 돌아가면서 빨강-노랑-녹색 LED가 잘 켜지면 되겠습니다. 성공입니다! 자축의 박수~ 짝! 짝! 짝!</p>
<p dir="ltr">   여러분, 오늘 모두모두 너무너무 수고하셨고 자랑스럽습니다.</p>
<p dir="ltr">   첫번째 단추를 잘 끼웠으니 여러분은 벌써 목표의 반은 이루신 것이지요.</p>
<p dir="ltr">   다음 시간에는 3색 LED를 가지고 “카멜레온 반지 만들기 DIY”에 도전해 보기로 하고, 오늘은 기쁜마음으로 여기에서 강의를 마치겠습니다.</p>
<p dir="ltr">   아래 과제는 시간 나실 때 해보시고, 다음 강의에서 건강한 얼굴로 뵙겠습니다. 모두모두 안녕~!</p>
<p dir="ltr">   감사합니다.</p>
<p dir="ltr">
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td style="background-color: #9acd32;" valign="middle">
<p dir="ltr"><strong>[과제-3색신호등-2]</strong></p>
<p dir="ltr"><strong>LED 불의 움직임이 0.5초 간격으로 (녹색 → 노랑 → 빨강 → 녹색 → …)이 무한 반복되는 프로그램을 작성해 보세요.</strong></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table style="width: 600px;" border="0" cellpadding="10">
<tbody>
<tr>
<td style="background-color: #9acd32;" valign="middle">
<p dir="ltr"><strong>[과제-3색신호등-3]</strong></p>
<p><strong>LED가 1초 간격으로 (빨강-노랑 → 빨강-녹색 → 녹색-노랑 → 빨강-노랑-녹색 → 모두 꺼짐 → …)이 무한 반복되는 프로그램을 작성해 보세요.</strong></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center;"><span style="font-size: medium;"><strong> </strong></span></p>
<p style="text-align: center;">
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/28246/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>[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!!</title>
		<link>http://www.ntrexgo.com/archives/27020</link>
		<comments>http://www.ntrexgo.com/archives/27020#comments</comments>
		<pubDate>Mon, 02 Feb 2015 04:33:11 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[이벤트]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Uno(R3)]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[센서키트]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=27020</guid>
		<description><![CDATA[[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!!
디바이스마트에서 Arduino Uno(R3) 구입시 제품에서 옵션선택으로 구매가능합니다.
이벤트 보러가기 &#62;&#62;


]]></description>
				<content:encoded><![CDATA[<p align="center"><span style="font-family: 굴림;font-size: small"><strong>[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!!</strong></span></p>
<p align="center"><span style="font-family: 굴림;font-size: small"><span style="font-family: 굴림">디바이스마트에서 Arduino Uno(R3) 구입시 제품에서 옵션선택으로 구매가능합니다.</span></span></p>
<p align="center"><a href="http://www.devicemart.co.kr/goods/event.php?seq=327" target="_blank">이벤트 보러가기 &gt;&gt;</a></p>
<div></div>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2015/02/10.jpg" rel="lightbox[27020]"><img class="alignnone size-full wp-image-27006" alt="10" src="http://www.ntrexgo.com/wp-content/uploads/2015/02/10.jpg" width="680" height="806" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/27020/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
