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

<channel>
	<title>NTREXGO - 디바이스마트, 엔티렉스 컨텐츠 통합 사이트 &#187; 미세먼지</title>
	<atom:link href="http://www.ntrexgo.com/archives/tag/%eb%af%b8%ec%84%b8%eb%a8%bc%ec%a7%80/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>[66호]20대 주거환경을 위한 외·내부 환기 제어 시스템</title>
		<link>http://www.ntrexgo.com/archives/40667</link>
		<comments>http://www.ntrexgo.com/archives/40667#comments</comments>
		<pubDate>Wed, 23 Jun 2021 00:00:42 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[특집]]></category>
		<category><![CDATA[ict]]></category>
		<category><![CDATA[공모전]]></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=40667</guid>
		<description><![CDATA[디바이스마트매거진 66호 &#124; 집안의 미세먼지 농도를 확인할 수 있고 내부의 미세먼지가 외부보다 높은 경우 자동으로 창문을 열 수 있는 시스템이다. ]]></description>
				<content:encoded><![CDATA[<p><strong><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-1.png" rel="lightbox[40667]"><img class="alignnone size-large wp-image-40678" alt="66_ict_환기제어 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-1-620x175.png" width="620" height="175" /></a></strong></p>
<p><span style="font-size: medium"><strong>2020 ICT 융합 프로젝트 공모전 장려상</strong></span></p>
<p><span style="font-size: x-large"><span style="color: #0000ff"><strong>20대 주거환경을 위한 </strong></span><span style="color: #0000ff"><strong>외·내부 환기 제어 시스템</strong></span></span></p>
<p style="text-align: right">글 | 항공대학교 이종민</p>
<p><span style="color: #ff9900"><strong>1. 심사평</strong></span><br />
<strong>칩센</strong> 우선 보고서를 통하여 작품에 대하여 조금 더 설명해주었으면 좋았겠다는 생각은 들지만, 주제로 삼은 작품명의 &#8220;20대 주거 환경을 위한~&#8221;으로 시작하는 부분이 매우 인상적입니다. 공기 청정이 필요한 이유를 단순히 외부에서 발현한 공기질의 저하가 아닌, 20대가 사는 주거환경에서는 왠지 실내의 공기질이 더 나쁠 수도 있겠다는 생각이 들었습니다. 작품명을 아주 잘 정하신거 같습니다. 그리고 다른 유사 작품들과의 차이점, 두 개의 장치(실내/외)가 서로 통신하여 연동하도록 한 부분은 매우 기발한 발상으로 보입니다. 스마트폰 또는 인터넷을 통해 추출된 지역의 정보보다는 실제로 필요한 것은 내가 머무르고 있는 실내 공간과 외부 공간의 공기질의 차이가 더 중요하다는 생각이 들기 때문입니다. 전반적으로 데모 작품이 구성이나 제작이 매우 깔끔하게 된 듯 합니다.</p>
<p><strong>펌테크</strong> 실생활과 접목된 실용성을 지닌 작품으로 생각됩니다. 전체적으로 꼼꼼하게 잘 기획되었고, 간결하게 잘 구성한 완성도 높은 작품이라고 생각합니다.</p>
<p><strong>위드로봇</strong> 아이디어가 좀 더 추가되면 좋은 작품이 될 것 같습니다.</p>
<p><span style="color: #ff9900"><strong>2. 배경</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-2.png" rel="lightbox[40667]"><img class="alignnone size-large wp-image-40679" alt="66_ict_환기제어 (2)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-2-620x275.png" width="620" height="275" /></a></p>
<p>미세먼지 농도가 심각하다는 것은 아마 우리 모두가 알고 있을 것이다. 그리고 실제로 미세먼지로 인한 두통, 기침, 폐암, 그리고 직업 능률 감소로까지 이어지고 있다. 네이버 키워드 검색량을 확인해보면 미세먼지라는 것이 큰 문제이고 많은 사람들이 관심을 가지고 있다는 것을 확인할 수 있다.</p>
<p><span style="color: #33cccc"><strong>2.1. 현재상황</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-3.png" rel="lightbox[40667]"><img class="alignnone size-full wp-image-40680" alt="66_ict_환기제어 (3)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-3.png" width="584" height="287" /></a><br />
미세먼지 문제를 해결하기위한 공기기청정기는 2018년 기준으로 2조원 시장을 가지고 있고 미니 공기청정기 시장은 약 1000억원의 시장을 형성하고 있다. 하지만 미니 공기청정기는 단지 필터와 펜으로 이루어진 공기청정기로 사람들이 어느정도 공기가 오염되었는지 확인할 수 없다. 또한 미니 공기청정기를 분해해보면 공기청정기의 필터가 역할을 제대로 하지 못하고 펜이 약한 경우가 대부분이다. 배경에서 말했듯이 대부분의 사람들은 초미세먼지로 인해 창문을 열고 살지 않고 있다 하지만 기사에 따르면 집안의 먼지농도와 밖의 미세먼지 농도를 비교 했을 때 밖의 미세먼지 농도가 높다고 한다. 이러한 상황에는 공기청정기를 계속 틀기보다 창문을 여는 것이 더 효과적인 방법이 될 수 있다. 그래서 저는 이 두가지 문제점을 해결하기 위한 제품을 만들려고 했다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-4.png" rel="lightbox[40667]"><img class="alignnone size-full wp-image-40681" alt="66_ict_환기제어 (4)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-4.png" width="611" height="452" /></a></p>
<p><span style="color: #33cccc"><strong>2.2. 제품의 특징</strong></span><br />
집안의 미세먼지 농도를 확인할 수 있고 내부의 미세먼지가 외부보다 높은 경우 자동으로 창문을 열 수 있는 시스템을 만들었다. 그렇게 함으로써 20대의 주거환경에 필수적인 공기 오염도를 현저히 줄일 수 있고 전기료 감소로 인한 경제적 이익을 취할 수 있다고 생각한다.</p>
<p><span style="color: #33cccc"><strong>2.3. 제품 상세 특징 및 스펙</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-5.png" rel="lightbox[40667]"><img class="alignnone size-large wp-image-40682" alt="66_ict_환기제어 (5)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-5-549x620.png" width="549" height="620" /></a></p>
<p>아두이노 나노 기반인 PCB를 제작하려고 한다. 이 공기청정기는 여러가지 특징이 있다. 브레드 보드를 사용하지 않고 PCB 형태로 제작 되기 때문에 회로가 안정화되어 있고 LED, 미세먼지, 온습도 센서를 통한 정보를 LCD에서 바로 확인을 할 수 있다.<br />
또한 다양한 센서 정보를 다른 쪽 아두이노에 블루투스 통신을 통해서 정보를 보내 내부와 외부의 미세먼지 농도를 비교하여 창문 개폐를 위한 서브모터를 작동시킨다.</p>
<p><span style="color: #33cccc"><strong>2.4. 제품 작동 알고리즘</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-6.png" rel="lightbox[40667]"><img class="alignnone size-large wp-image-40683" alt="66_ict_환기제어 (6)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-6-620x328.png" width="620" height="328" /></a></p>
<p>미세먼지에 따른 LED표시, 미세먼지에 농도에 따라 AUTO 펜 제어, 그리고 미세먼지 농도 심각 시 부저가 울리는 것이다. 그리고 그러한 정보를 LCD에 표현하는 것이다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-7.png" rel="lightbox[40667]"><img class="alignnone size-large wp-image-40684" alt="66_ict_환기제어 (7)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-7-620x298.png" width="620" height="298" /></a></p>
<p>외부장치와 내부장치를 구성하여, HC-06 두개를 페어링하여 외부 미세먼지 농도에 대한 정보를 아두이노에 블루투스 통신을 통해서 보내 창문을 개폐여부를 결정하는 것이다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-8.png" rel="lightbox[40667]"><img class="alignnone size-large wp-image-40685" alt="66_ict_환기제어 (8)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-8-620x270.png" width="620" height="270" /></a></p>
<p>블루투스 통신의 경우 일련의 String 형식으로 값이 전달이 된다. 따라서 여러가지 정보를 보내기가 매우 어려운 사항이다. 따라서 이번 프로젝트에서는 미세먼지 농도를 포함해서, 온도, 습도, 조도의 정보를 블루투스 통신을 통해서 받아야하기 때문에 센서값별로 일련의 String을 파싱하는 소프트웨어 알고리즘이 필요하다. 그 부분을 코딩으로 구현</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-9.png" rel="lightbox[40667]"><img class="alignnone size-large wp-image-40686" alt="66_ict_환기제어 (9)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-9-620x192.png" width="620" height="192" /></a></p>
<p>미세먼지 센서의 값은 정확한 농도를 표현을 하는 것이 아닌 전압을 읽어서 가져오는 것이다. 시리얼 통신을 통해 고정밀 미세저측정기를 통해서, 캘리브레이션 할 수 있는 이동평균 개념을 적용해서 센서값 기복에 대한 부분을 해결했다.</p>
<p><span style="color: #33cccc"><strong>2.5. 회로도 및 부분별 하드웨어 원리</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-10.png" rel="lightbox[40667]"><img class="alignnone size-large wp-image-40687" alt="66_ict_환기제어 (10)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-10-620x206.png" width="620" height="206" /></a></p>
<p>캐패시터는 다양한 용도로 사용된다. 노이즈를 막기위해서 맥류신호를 평활하기 위한 평활용으로 사용되었다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-11.png" rel="lightbox[40667]"><img class="alignnone size-full wp-image-40688" alt="66_ict_환기제어 (11)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-11.png" width="613" height="367" /></a></p>
<p>전원 순단 시 및 IC의 구동 스피드가 급격히 빨라짐에 따라, 부하전류가 증가한 경우, 전원으로부터의 라인 전압이 강하하여, IC의 오동작을 초래하는 경우가 있다. 이를 방지하기 위해, 전원 라인 정상 시에 콘덴서가 축적해 놓은 전기를 IC 측에 공급하여 전원 라인 전압을 일시적으로 유지한다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-12.png" rel="lightbox[40667]"><img class="alignnone size-full wp-image-40689" alt="66_ict_환기제어 (12)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-12.png" width="619" height="254" /></a></p>
<p>아두이노에 전원을 공급하기위해서는 5v전원을 공급해주어야한다. 하지만 모터의 경우 5v를 공급하게 되면 최대 파워를 낼 수 가 없다 그래서 12v전원은 모터에 아두이노에는 전압을 강압시켜 5v를 공급 시켜주기 위해 레귤레이터를 사용하였다. 전원 공급의 경우 12v로 일정한 정전압을 보내므로 스위칭 레귤레이터가 아닌 리니어 레귤레이터를 사용하였다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-13.png" rel="lightbox[40667]"><img class="alignnone size-full wp-image-40690" alt="66_ict_환기제어 (13)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-13.png" width="612" height="450" /></a></p>
<p>12v와 0.7A가 사용되는 모턴팬을 동작시키기 위해 Mosfet을 사용하여, 아두이노 신호에 따라 입력된 12V 전원부에서 전류를 공급할 수 있도록 구성을 하였다</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-14.png" rel="lightbox[40667]"><img class="alignnone size-full wp-image-40691" alt="66_ict_환기제어 (14)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-14.png" width="612" height="408" /></a></p>
<p>경고음을 알리기 위한 용도로서 부저를 사용하였다. 부저 또한 코일성분을 가지고 있기에 직접적으로 아두이노에 연결을 하는 것은 좋지 않으며, 아두이노에서 출력하는 전류의 한계로 소리가 매우 작은 측면을 가지고 있다. 따라서 부저의 경우에는 트랜지스터를 사용하여 전류증폭을 통해 더 큰 경고음을 울릴 수 있도록 회로를 구성하였으며, 다이오드(FLYING WEEL 다이오드)를 사용하여, 역기전력를 방지하고자 구성하였다.</p>
<p><span style="color: #ff9900"><strong>3. 최종 결과물</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-1.jpg" rel="lightbox[40667]"><img class="alignnone size-full wp-image-40677" alt="66_ict_환기제어 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-1.jpg" width="611" height="438" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-15.png" rel="lightbox[40667]"><img class="alignnone size-full wp-image-40692" alt="66_ict_환기제어 (15)" src="http://www.ntrexgo.com/wp-content/uploads/2021/06/66_ict_환기제어-15.png" width="612" height="360" /></a></p>
<p><span style="color: #ff9900"><strong>4.아두이노 소스코드</strong></span></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>// 해당 소스코드는 외부데이터(미세먼지 / 온도 / 습도 / 조도) 측정하고, 내부 데이터와 비교하여<br />
// 외부환기에 대한 부분을 담당하는 부분이다.</p>
<p>#include &#8220;SoftwareSerial.h&#8221;<br />
#include &lt;Adafruit_NeoPixel.h&gt;<br />
#include &#8220;DHT.h&#8221;<br />
#include &lt;Servo.h&gt;<br />
#include &lt;LiquidCrystal_I2C.h&gt;</p>
<p>// 블루통신 관련해서 필요한 변수 정리<br />
const int maxIndex = 10;<br />
byte blockData[maxIndex]; //block 값 저장<br />
int arrIndex = 0; // 배열 arrIndex</p>
<p>byte refined_humidity = 0;<br />
byte refined_temperature = 0;<br />
byte refined_value = 0;<br />
byte refined_dust_data = 0;</p>
<p>byte refined_humidity2 = 0;<br />
byte refined_temperature2 = 0;<br />
byte refined_value2 = 0;<br />
byte refined_dust_data2 = 0;</p>
<p>/*미세먼지센서 변수들*/<br />
#define measurePin A1 //Connect dust sensor to Arduino A0 pin<br />
#define ledPower 6 //Connect 3 led driver pins of dust sensor to Arduino D4<br />
#define SampleTime 30 //먼지센서 30회 샘플링</p>
<p>int samplingTime = 280;<br />
int deltaTime = 40;<br />
int sleepTime = 9680;<br />
float voMeasured = 0;<br />
float calcVoltage = 0;<br />
float dustDensity = 0;</p>
<p>//조도센서&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
#define cds A0</p>
<p>//서보 모터 오브젝트 생성<br />
Servo myservo;</p>
<p>// 온습도 센서를 디지털 4번 핀에 연결합니다.<br />
#define DHTPIN 8<br />
#define DHTTYPE DHT11</p>
<p>//네오픽셀 연결 핀<br />
#define PIN1 4<br />
//네오픽셀 LED개수<br />
#define NUMPIXELS 4<br />
Adafruit_NeoPixel pixels1 = Adafruit_NeoPixel(NUMPIXELS, PIN1, NEO_GRB + NEO_KHZ800);<br />
int delayval = 10;</p>
<p>DHT dht(DHTPIN, DHTTYPE);<br />
SoftwareSerial Serial1(2, 3); // rx,tx</p>
<p>// 서보모터 변수<br />
int val1 = 0;<br />
int val2 = 0;</p>
<p>// LCD의 경우, 고유 주소를 가지고 있는데 대부분의 LCD는 2개의 주소 중 하나로 세팅되어 있다.<br />
// 0x3F, 0&#215;27 이렇게 두가지 주소가 있다.<br />
LiquidCrystal_I2C lcd(0&#215;27, 16, 2);</p>
<p>//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>void GetData();<br />
void get_data_print2();<br />
void data_print1();<br />
void LED_R1();<br />
void LED_B1();<br />
void LED_G1();<br />
void window_open_close(int out, int in);<br />
int dust_val(); // 먼지 값받아오는 함수</p>
<p>void setup () {</p>
<p>// 시리얼통신<br />
Serial.begin(9600);<br />
// 블루투스 통신<br />
Serial1.begin(9600);<br />
//서보 모터 10번핀<br />
myservo.attach(10);<br />
myservo.write(100);<br />
// 조도센서<br />
pinMode(cds, INPUT);<br />
// 미세먼지센서<br />
pinMode(ledPower, OUTPUT);<br />
pinMode(measurePin, INPUT);<br />
//온도습도센서 시작<br />
dht.begin();<br />
// 네오픽셀 시작<br />
pixels1.begin(); // This initializes the NeoPixel library.</p>
<p>lcd.init();<br />
lcd.backlight();<br />
lcd.clear();<br />
}</p>
<p>void loop () {</p>
<p>// 블루투스 통신을 통해 내부데이터를 받아서 파싱을 하고, 각 변수에 저장</p>
<p>if (Serial1.available()) {<br />
GetData();<br />
}<br />
if (arrIndex != 0 &amp;&amp; arrIndex &lt; 9) {<br />
Serial.println(&#8220;내부데이터 변수 저장&#8221;);</p>
<p>if (blockData[0] == 104)<br />
refined_humidity2 = blockData[1];<br />
if (blockData[2] == 116)<br />
refined_temperature2 = blockData[3];<br />
if (blockData[4] == 99)<br />
refined_value2 = blockData[5];<br />
if (blockData[6] == 100)<br />
refined_dust_data2 = blockData[7];<br />
} else {</p>
<p>Serial.println(&#8220;내부데이터 변수 이상으로 미저장 or 블루투스 미연결&#8212;&#8211;&#8221;);<br />
}</p>
<p>// 습도와 온도값을 측정하고, 제대로 측정되었는지 확인해줍니다.<br />
byte humidity = dht.readHumidity();<br />
byte temperature = dht.readTemperature();</p>
<p>refined_humidity = constrain(humidity, 0, 100);<br />
refined_temperature = constrain(temperature, 0, 100);</p>
<p>// 조도센서 값<br />
int value = analogRead(cds);<br />
refined_value = map(value, 0, 1023, 100, 0);</p>
<p>// 먼지센서 값<br />
int dust_data = dust_val(); // 먼지량을 받아옴<br />
refined_dust_data = map(dust_data, 0, 1023, 0, 100);</p>
<p>// 미세먼지 농도에 따라 색변화와 부저를 활용하여 경고음 제공하기.</p>
<p>if (refined_dust_data &gt; 65) {<br />
delay(10);<br />
LED_R1();<br />
} else if (refined_dust_data &lt;= 65 &amp;&amp; refined_dust_data &gt; 50 ) {<br />
delay(10);<br />
LED_RB1();<br />
} else if (refined_dust_data &lt;= 50 &amp;&amp; refined_dust_data &gt; 25) {<br />
delay(10);<br />
LED_B1();<br />
} else {<br />
LED_G1();<br />
}</p>
<p>// 내부데이터와 외부데이터를 비교하여, 창문개폐 진행<br />
// 내부 공기청정기팬의 경우에는 외부,내부 미세먼지 농도에 상관없이, 내부 미세먼지가 25 이상인 경우에는 자동으로 작동이된다.<br />
// 창문개폐의 경우는<br />
// 1) 외부 창문이 열리는 경우<br />
// 외부의 미세먼지농도가 내부보다 낮을 때,<br />
// 외부 미세먼지 농도가 높은 경우에는 창문을 열리지 않고, 내부 팬에 의해서 공기정화가 진행이 된다.<br />
// 내부 미세먼지 농도가 25 이상일 때, 동작한다.<br />
window_open_close(refined_dust_data, refined_dust_data2);</p>
<p>lcd.clear();<br />
lcd.setCursor(0, 0);<br />
lcd.print(&#8220;out dust :&#8221;);<br />
lcd.print(refined_dust_data);<br />
lcd.setCursor(0, 1);<br />
if(refined_dust_data2 ==0){<br />
lcd.print(&#8220;BT disconnected&#8221;);<br />
}else{<br />
lcd.print(&#8220;inner dust :&#8221;);<br />
lcd.print(refined_dust_data2);<br />
}</p>
<p>get_data_print2();<br />
data_print1();<br />
}</p>
<p>//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
void LED_R1() {<br />
for (int i = 0; i &lt; NUMPIXELS; i++) {<br />
pixels1.setPixelColor(i, pixels1.Color(255, 0, 0)); // Moderately bright green color.<br />
pixels1.show(); // This sends the updated pixel color to the hardware.<br />
delay(delayval); // Delay for a period of time (in milliseconds).<br />
}<br />
}</p>
<p>void LED_G1() {</p>
<p>for (int i = 0; i &lt; NUMPIXELS; i++) {<br />
pixels1.setPixelColor(i, pixels1.Color(0, 255, 0)); // Moderately bright green color.<br />
pixels1.show(); // This sends the updated pixel color to the hardware.<br />
delay(delayval); // Delay for a period of time (in milliseconds).<br />
}<br />
}</p>
<p>void LED_B1() {<br />
for (int i = 0; i &lt; NUMPIXELS; i++) {<br />
pixels1.setPixelColor(i, pixels1.Color(0, 0, 255)); // Moderately bright green color.<br />
pixels1.show(); // This sends the updated pixel color to the hardware.<br />
delay(delayval); // Delay for a period of time (in milliseconds).<br />
}<br />
}</p>
<p>void LED_RB1() {<br />
for (int i = 0; i &lt; NUMPIXELS; i++) {<br />
pixels1.setPixelColor(i, pixels1.Color(255, 0, 120)); // Moderately bright green color.<br />
pixels1.show(); // This sends the updated pixel color to the hardware.<br />
delay(delayval); // Delay for a period of time (in milliseconds).<br />
}<br />
}</p>
<p>//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
int dust_val() //센서의 노이즈 값으로인해 여러번 데이터를 받은뒤 평균 먼지량을 구함<br />
{<br />
int dust = 0;<br />
for (int i = 0; i &lt; SampleTime; i++)<br />
{<br />
digitalWrite(ledPower, LOW); // power on the LED 0.028초부터 led가 가장 밝음으로 최소샘플링 타임으로 결정<br />
delayMicroseconds(samplingTime);</p>
<p>voMeasured = analogRead(measurePin); // read the dust value<br />
delayMicroseconds(deltaTime);<br />
digitalWrite(ledPower, HIGH); // turn the LED off<br />
delayMicroseconds(sleepTime);<br />
//////////////////////////////////////////// dust vlaue 받아오기<br />
calcVoltage = voMeasured * (5.0 / 1024.0);<br />
dustDensity = calcVoltage / 0.005; //(0.17 * calcVoltage &#8211; 0.1) * 1000;<br />
/////////////////////value 의 미세한 변화를 수식으로 먼지량으로 변환<br />
if (dustDensity &lt; 0) { // value 의 값이 마이너스일경우 오류 임으로 0을 대입<br />
dustDensity = 0;<br />
}<br />
dust += dustDensity;<br />
}<br />
return (dust / SampleTime)+50; // 센싱한값의 평균을 return<br />
}</p>
<p>void GetData() {<br />
Serial.println();<br />
Serial.println(&#8220;데이터 가져오기 시작 &#8220;);<br />
char temp;<br />
arrIndex = 0;</p>
<p>temp = (char)Serial1.read();<br />
Serial.println(&#8220;&#8221;);<br />
Serial.print(temp);</p>
<p>// 전송 시작 확인<br />
// 블루투스 시작을 알리는 문자를 s로 설정 !!!<br />
if (temp != &#8216;s&#8217;) {<br />
while (temp != &#8216;e&#8217; ) {<br />
temp = (char)Serial1.read();<br />
}<br />
return;<br />
}<br />
String stringTemp;</p>
<p>while (true) {<br />
// Serial.print(&#8220;arrIndex : &#8220;);<br />
// Serial.println(arrIndex);</p>
<p>if (Serial1.available()) {<br />
temp = (char)Serial1.read();<br />
Serial.print(temp);</p>
<p>if (arrIndex &gt; 10) {<br />
// Serial.println(&#8220;내부데이터 변수 이상 &#8212;&#8212;&#8212;-&#8221;);<br />
break;<br />
}</p>
<p>// &#8216;_&#8217; 라는 문자를 통해 구분을 지어준다. 구분을 지어주는 표시라고 생각을 하면된다. &#8212;&#8212;&#8212;&#8211;<br />
if (temp != &#8216;_&#8217;) {</p>
<p>// &#8216;e&#8217; 라는 문자가 나오게 되면 블루투스 통신이 끝났다는 의미이다.<br />
if (temp == &#8216;e&#8217;) {<br />
break;<br />
}</p>
<p>if (isAlpha(temp)) { //temp라는 변수가 문자인지 확인을 한다.</p>
<p>blockData[arrIndex] = temp;<br />
arrIndex++;</p>
<p>} else if (isDigit(temp)) { //temp라는 변수가 숫자인지 확인을 한다.<br />
stringTemp += temp;</p>
<p>} else {<br />
// 원하지 않는 데이터 값<br />
Serial.println(&#8220;upload failed. error: not digit or alpha&#8221;);<br />
arrIndex = 0;<br />
return;<br />
}<br />
}</p>
<p>else if (temp == &#8216;_&#8217;) {<br />
if (stringTemp == &#8220;&#8221;)<br />
continue; // 아래의 것들을 건너뛴다.<br />
blockData[arrIndex] = stringTemp.toInt();<br />
//변수 초기화<br />
stringTemp = &#8220;&#8221;;<br />
arrIndex++;<br />
}<br />
}<br />
}<br />
Serial.println(&#8220;끝&#8221;);<br />
Serial.println(&#8220;&#8221;);<br />
delay(30);<br />
}</p>
<p>// int out은 외부미세먼지농도, int in 내부미세먼지농도<br />
void window_open_close(int out, int in) {</p>
<p>// 내부미세먼지농도가 낮아서 공기정화를 할 필요없는 경우<br />
if(in &lt; 3){<br />
return;}<br />
if (in &lt; 25) {<br />
Serial.println(&#8220;내부 공기가 매우 깨끗합니다.&#8221;);<br />
val1 = 100;<br />
if (val1 != val2) {<br />
myservo.write(val1); // 창문이 닫힘.<br />
val2 = val1;<br />
delay(10);<br />
}<br />
return;<br />
}<br />
// 내부미세먼지농도가 안좋은 경우<br />
else {<br />
if (out &lt; in) {<br />
Serial.println(&#8220;환기를 위해 창문 open. &#8220;);<br />
val1 = 0;<br />
if (val1 != val2) {<br />
myservo.write(val1); // 창문이 닫힘.<br />
val2 = val1;<br />
delay(10);<br />
}<br />
delay(10);<br />
} else {<br />
Serial.println(&#8220;외부 미세먼지 농도가 높아, 창문 close. &#8220;);<br />
val1 = 100;<br />
if (val1 != val2) {<br />
myservo.write(val1); // 창문이 닫힘.<br />
val2 = val1;<br />
delay(10);<br />
}<br />
delay(10);<br />
}<br />
}<br />
}</p>
<p>void data_print1() {<br />
Serial.print(&#8220;외부센서데이터 : &#8220;);<br />
Serial.print(&#8220;humidity : &#8220;);<br />
Serial.print(refined_humidity);<br />
Serial.print(&#8221; temp :&#8221;);<br />
Serial.print(refined_temperature);<br />
Serial.print(&#8221; cds : &#8220;);<br />
Serial.print(refined_value);<br />
Serial.print(&#8221; dust : &#8220;);<br />
Serial.println(refined_dust_data);<br />
delay(300);<br />
}</p>
<p>void get_data_print2() {<br />
Serial.print(&#8220;내부센서데이터 : &#8220;);<br />
Serial.print(&#8220;humidity : &#8220;);<br />
Serial.print(refined_humidity2);<br />
Serial.print(&#8221; temp :&#8221;);<br />
Serial.print(refined_temperature2);<br />
Serial.print(&#8221; cds : &#8220;);<br />
Serial.print(refined_value2);<br />
Serial.print(&#8221; dust : &#8220;);<br />
Serial.println(refined_dust_data2);<br />
delay(300);<br />
아두이노 코드 2 &#8211; 내부 담당 코드<br />
#include &#8220;SoftwareSerial.h&#8221;<br />
#include &lt;Adafruit_NeoPixel.h&gt;<br />
#include &#8220;DHT.h&#8221;<br />
// I2C LCD를 쉽게 제어하기 위한 라이브러리를 추가해줍니다.<br />
#include &lt;LiquidCrystal_I2C.h&gt;</p>
<p>/*미세먼지센서 변수들*/<br />
#define measurePin A1 //Connect dust sensor to Arduino A0 pin<br />
#define ledPower 6 //Connect 3 led driver pins of dust sensor to Arduino D4<br />
#define SampleTime 30 //먼지센서 30회 샘플링</p>
<p>int samplingTime = 280;<br />
int deltaTime = 40;<br />
int sleepTime = 9680;<br />
float voMeasured = 0;<br />
float calcVoltage = 0;<br />
float dustDensity = 0;<br />
// 정제된 변수값<br />
byte refined_humidity = 0;<br />
byte refined_temperature = 0;<br />
byte refined_value = 0;<br />
byte refined_dust_data = 0;</p>
<p>//조도센서&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
#define cds A0</p>
<p>//부저 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
#define buzzer 7</p>
<p>//모터팬 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
#define fan 9</p>
<p>// 온습도 센서를 디지털 4번 핀에 연결합니다.<br />
#define DHTPIN 8<br />
#define DHTTYPE DHT11</p>
<p>//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>//네오픽셀 연결 핀<br />
#define PIN1 4</p>
<p>//네오픽셀 LED개수<br />
#define NUMPIXELS 4<br />
Adafruit_NeoPixel pixels1 = Adafruit_NeoPixel(NUMPIXELS, PIN1, NEO_GRB + NEO_KHZ800);<br />
int delayval = 10;<br />
int color_value=0;</p>
<p>DHT dht(DHTPIN, DHTTYPE);<br />
SoftwareSerial Serial1(2, 3); // rx,tx</p>
<p>// LCD의 경우, 고유 주소를 가지고 있는데 대부분의 LCD는 2개의 주소 중 하나로 세팅되어 있다.<br />
// 0x3F, 0&#215;27 이렇게 두가지 주소가 있다.<br />
LiquidCrystal_I2C lcd(0&#215;27, 16, 2);</p>
<p>//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
void SendData();<br />
void LED_RB1();<br />
void setup () {</p>
<p>// 시리얼통신<br />
Serial.begin(9600);<br />
// 블루투스 통신<br />
Serial1.begin(9600);<br />
// 조도센서<br />
pinMode(cds, INPUT);<br />
// 미세먼지센서<br />
pinMode(ledPower, OUTPUT);<br />
pinMode(measurePin, INPUT);<br />
//온도습도센서 시작<br />
dht.begin();<br />
// 12V 모터팬<br />
pinMode(fan, OUTPUT);<br />
// 네오픽셀 시작<br />
pixels1.begin(); // This initializes the NeoPixel library.</p>
<p>// 부저 // #define buzzer 7<br />
pinMode(buzzer, OUTPUT);<br />
lcd.init();<br />
lcd.backlight();<br />
lcd.clear();<br />
}<br />
int dust_val(); // 먼지 값받아오는 함수<br />
void loop () {</p>
<p>// 습도와 온도값을 측정하고, 제대로 측정되었는지 확인해줍니다.<br />
byte humidity = dht.readHumidity();<br />
byte temperature = dht.readTemperature();</p>
<p>refined_humidity = constrain(humidity, 0, 100);<br />
refined_temperature = constrain(temperature, 0, 100);</p>
<p>// 조도센서 값<br />
int value = analogRead(cds);<br />
refined_value = map(value, 0, 1023, 100, 0);<br />
color_value=map(refined_value, 10, 100, 0, 255);</p>
<p>// 먼지센서 값<br />
int dust_data = dust_val(); // 먼지량을 받아옴<br />
refined_dust_data = map(dust_data, 0, 1023, 0, 100);</p>
<p>Serial.print(&#8221; temp : &#8220;);<br />
Serial.print(refined_temperature);<br />
Serial.print(&#8220;&#8216;c &#8220;);<br />
Serial.print(&#8221; humidity : &#8220;);<br />
Serial.print(refined_humidity);<br />
Serial.print(&#8220;% &#8220;);<br />
Serial.print(&#8221; cds : &#8220;);<br />
Serial.print(refined_value);<br />
Serial.print(&#8221; dust : &#8220;);<br />
Serial.println(refined_dust_data);</p>
<p>lcd.clear();<br />
lcd.setCursor(0, 0);<br />
lcd.print(&#8220;hm:&#8221;);<br />
lcd.print(refined_humidity);<br />
lcd.print(&#8221; tp:&#8221;);<br />
lcd.print(refined_temperature);<br />
lcd.setCursor(0, 1);<br />
lcd.print(&#8220;cds :&#8221;);<br />
lcd.print(refined_value);<br />
lcd.print(&#8221; dust :&#8221;);<br />
lcd.print(refined_dust_data);</p>
<p>// 미세먼지 농도에 따라 색변화와 부저를 활용하여 경고음 제공하기.</p>
<p>if (refined_dust_data &gt; 68) {<br />
analogWrite(fan,150);<br />
delay(10);<br />
LED_R1();<br />
tone(buzzer, 1000);<br />
} else if (refined_dust_data &lt;= 68 &amp;&amp; refined_dust_data &gt; 50 ) {<br />
analogWrite(fan,150);<br />
noTone(buzzer);<br />
delay(10);<br />
LED_RB1();<br />
} else if (refined_dust_data &lt;= 50 &amp;&amp; refined_dust_data &gt; 25) {<br />
analogWrite(fan, 120);<br />
noTone(buzzer);<br />
delay(10);<br />
LED_B1();<br />
} else {<br />
analogWrite(fan, 0);<br />
noTone(buzzer);<br />
LED_G1();<br />
}</p>
<p>SendData();<br />
}</p>
<p>//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>void LED_R1() {<br />
for (int i = 0; i &lt; NUMPIXELS; i++) {<br />
pixels1.setPixelColor(i, pixels1.Color(color_value, 0, 0)); // Moderately bright green color.<br />
pixels1.show(); // This sends the updated pixel color to the hardware.<br />
delay(delayval); // Delay for a period of time (in milliseconds).<br />
}<br />
}</p>
<p>void LED_RB1() {<br />
for (int i = 0; i &lt; NUMPIXELS; i++) {<br />
pixels1.setPixelColor(i, pixels1.Color(color_value, 0, color_value/2)); // Moderately bright green color.<br />
pixels1.show(); // This sends the updated pixel color to the hardware.<br />
delay(delayval); // Delay for a period of time (in milliseconds).<br />
}<br />
}</p>
<p>void LED_G1() {</p>
<p>for (int i = 0; i &lt; NUMPIXELS; i++) {<br />
pixels1.setPixelColor(i, pixels1.Color(0, color_value, 0)); // Moderately bright green color.<br />
pixels1.show(); // This sends the updated pixel color to the hardware.<br />
delay(delayval); // Delay for a period of time (in milliseconds).<br />
}<br />
}</p>
<p>void LED_B1() {<br />
for (int i = 0; i &lt; NUMPIXELS; i++) {<br />
pixels1.setPixelColor(i, pixels1.Color(0, 0, color_value)); // Moderately bright green color.<br />
pixels1.show(); // This sends the updated pixel color to the hardware.<br />
delay(delayval); // Delay for a period of time (in milliseconds).<br />
}<br />
}</p>
<p>void rain_color1() {</p>
<p>for (int i = 0; i &lt; NUMPIXELS; i++) {<br />
int a = random(0, 255);<br />
int b = random(0, 255);<br />
int c = random(0, 255);</p>
<p>pixels1.setPixelColor(i, pixels1.Color(a, b, c)); // Moderately bright green color.<br />
pixels1.show(); // This sends the updated pixel color to the hardware.<br />
delay(delayval); // Delay for a period of time (in milliseconds).<br />
}<br />
}<br />
//int dust_val() //센서의 노이즈 값으로인해 여러번 데이터를 받은뒤 평균 먼지량을 구함<br />
{<br />
int dust = 0;<br />
for (int i = 0; i &lt; SampleTime; i++)<br />
{<br />
digitalWrite(ledPower, LOW); // power on the LED 0.028초부터 led가 가장 밝음으로 최소샘플링 타임으로 결정<br />
delayMicroseconds(samplingTime);</p>
<p>voMeasured = analogRead(measurePin); // read the dust value<br />
delayMicroseconds(deltaTime);<br />
digitalWrite(ledPower, HIGH); // turn the LED off<br />
delayMicroseconds(sleepTime);<br />
////////////////////////////////// dust vlaue 받아오기<br />
calcVoltage = voMeasured * (5.0 / 1024.0);<br />
dustDensity = calcVoltage / 0.005; //(0.17 * calcVoltage &#8211; 0.1) * 1000;<br />
////////////value 의 미세한 변화를 수식으로 먼지량으로 변환<br />
if (dustDensity &lt; 0) { // value 의 값이 마이너스일경우 오류 임으로 0을 대입<br />
dustDensity = 0;<br />
}<br />
dust += dustDensity;<br />
}<br />
return dust / SampleTime; // 센싱한값의 평균을 return<br />
}</p>
<p>void SendData() {<br />
Serial1.print(&#8220;s_&#8221;);<br />
Serial1.print(&#8220;h_&#8221;);<br />
Serial1.print(refined_humidity);<br />
delay(3);<br />
Serial1.print(&#8220;_t_&#8221;);<br />
Serial1.print(refined_temperature);<br />
delay(3);<br />
Serial1.print(&#8220;_c_&#8221;);<br />
Serial1.print(refined_value);<br />
delay(3);<br />
Serial1.print(&#8220;_d_&#8221;);<br />
delay(3);<br />
Serial1.print(&#8220;_e&#8221;);<br />
delay(200);<br />
}<br />
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/40667/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[25호]탁상용 미세먼지 농도측정 및 온도계 만들기</title>
		<link>http://www.ntrexgo.com/archives/25925</link>
		<comments>http://www.ntrexgo.com/archives/25925#comments</comments>
		<pubDate>Tue, 05 Aug 2014 04:32:34 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[blog-posts]]></category>
		<category><![CDATA[DIY 실험실]]></category>
		<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로젝트]]></category>
		<category><![CDATA[25호]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[Projects to build]]></category>
		<category><![CDATA[농도측정]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[미세먼지]]></category>
		<category><![CDATA[온도계]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=25925</guid>
		<description><![CDATA[디바이스마트 매거진 25호 &#124; 냄새가 없고 눈에 보이지 않아 무관심하기 쉬운 미세먼지 농도! 실용성을 높이기 위해 온도기능을 추가하였고 수치와 함께 색 변화를 제공하여 현재의 상태를 직관적으로 인식하게 해주었다. 우리 집의 청결상태는 어떠할까? 내 방의 온도는 얼마일까? 한번쯤 궁금했던 사람들은 저렴하게 탁상용 미세먼지 농도측정 및 온도계를 만들어 보자.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/999E_결과물미세먼지-농도가-높아-붉게-표시된-모습.jpg" rel="lightbox[25925]"><img class="size-medium wp-image-26112 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/999E_결과물미세먼지-농도가-높아-붉게-표시된-모습-300x199.jpg" width="300" height="199" /></a></p>
<p style="text-align: center"><span style="font-size: large;color: #000080">우리 집의 미세먼지농도는 어느 정도일까?</span></p>
<p style="text-align: center"><span style="color: #0000ff"><strong><span style="font-size: x-large">탁상용 미세먼지 농도측정 및 온도계 만들기</span></strong></span></p>
<p style="text-align: center">
<p style="text-align: center">글/그림 | 이민주 객원기자 itstyle@itstyle.kr</p>
<p>&nbsp;</p>
<p>새 집으로 이사 가본 사람들이나 새로운 가구가 집에 들어왔을 때 이상한 냄새가 나 건강상 문제 또는 불쾌감을 느껴본 적 있을 것이다. 이러한 용어를 새집증후군이라 하며 이 현상은 시간이 지날수록 사라지지만 중국 황사의 영향이나 집밖에 지나는 차량들 때문에 미세먼지는 시간이 지나도 사라지지 않는다.<br />
특히 냄새가 없고 눈에 보이지 않아 무관심하기 쉬운 미세먼지 농도! 실용성을 높이기 위해 온도기능을 추가하였고 수치와 함께 색 변화를 제공하여 현재의 상태를 직관적으로 인식하게 해주었다. 우리 집의 청결상태는 어떠할까? 내 방의 온도는 얼마일까? 한번쯤 궁금했던 사람들은 저렴하게 탁상용 미세먼지 농도측정 및 온도계를 만들어 보자.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/20140611_212709.jpg" rel="lightbox[25925]"><img class="wp-image-26113 aligncenter" alt="20140611_212709" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/20140611_212709.jpg" width="496" height="349" /></a></p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td></td>
<td>검색어</td>
<td>용도</td>
<td>단가</td>
<td>수량</td>
<td>총가격</td>
</tr>
<tr>
<td></td>
<td>NEROINO UNO R3-2</td>
<td>스케치 업로드</td>
<td> 22,000</td>
<td> 1</td>
<td> 24,200</td>
</tr>
<tr>
<td>U</td>
<td>ATMEGA328P-PU</td>
<td>UNO 수리용</td>
<td> 4,200</td>
<td>1</td>
<td>4,620</td>
</tr>
<tr>
<td>U</td>
<td>MC14094BCPG</td>
<td>7세그먼트 포트 확장</td>
<td>540</td>
<td>2</td>
<td>1,188</td>
</tr>
<tr>
<td>U</td>
<td>LM35DZ</td>
<td>온도 측정</td>
<td>1,100</td>
<td>1</td>
<td>1,210</td>
</tr>
<tr>
<td>U</td>
<td>먼지센서(케이블포함) GP2Y1010AU0F [SEN0144]</td>
<td>미세먼지농도 측정</td>
<td>19,000</td>
<td>1</td>
<td>20,900</td>
</tr>
<tr>
<td>LED</td>
<td>WCN1-0080RG-C21</td>
<td> 디스플레이</td>
<td>1,000</td>
<td>3</td>
<td>3,300</td>
</tr>
<tr>
<td>XT</td>
<td>X-TAL 16M (ATS Type) Fundamental</td>
<td> 클럭 공급</td>
<td>190</td>
<td>1</td>
<td>209</td>
</tr>
<tr>
<td>C</td>
<td>E/C 25V 100uF (85℃)</td>
<td> 전원 안정화</td>
<td>60</td>
<td>1</td>
<td>66</td>
</tr>
<tr>
<td>C</td>
<td>Mono Cap 0.1uF Y5V 50V</td>
<td> 전원 안정화</td>
<td>30</td>
<td>1</td>
<td>33</td>
</tr>
<tr>
<td>C</td>
<td>Ceramic 18pF, 50V</td>
<td> 클럭 안정화</td>
<td>15</td>
<td>2</td>
<td>33</td>
</tr>
<tr>
<td>Q</td>
<td>2SC1815</td>
<td> 7세그먼트 제어</td>
<td>50</td>
<td>3</td>
<td>165</td>
</tr>
<tr>
<td>R</td>
<td>1/4W 5% Axial Resistor 151J (150Ω)</td>
<td> LED 전류제한</td>
<td>10</td>
<td>8</td>
<td>88</td>
</tr>
<tr>
<td>R</td>
<td>1/4W 5% Axial Resistor 221J (220Ω)</td>
<td> LED 전류제한</td>
<td>10</td>
<td>7</td>
<td>77</td>
</tr>
<tr>
<td>R</td>
<td>1/4W 5% Axial Resistor 222J (2.2KΩ)</td>
<td> 트렌지스터 제어</td>
<td>10</td>
<td>3</td>
<td>33</td>
</tr>
<tr>
<td></td>
<td>아답터 (정전압) DC 5V / 2A [P9581]</td>
<td> 전원</td>
<td>5,800</td>
<td>1</td>
<td>6,380</td>
</tr>
<tr>
<td></td>
<td>PCB서포트 플라스틱 F-50mm</td>
<td> 케이스</td>
<td>135</td>
<td>2</td>
<td>297</td>
</tr>
<tr>
<td></td>
<td>PCB서포트용 육각나사 -5mm</td>
<td>케이스</td>
<td>38</td>
<td>2</td>
<td>84</td>
</tr>
<tr>
<td></td>
<td>2T 스모그(투명) 아크릴 옵션:285&#215;285(mm)</td>
<td>케이스</td>
<td>2,300</td>
<td>1</td>
<td>2,530</td>
</tr>
<tr>
<td></td>
<td>핀헤더소켓 Single 1&#215;20 Straight(2.0mm)</td>
<td>7세그먼트 고정</td>
<td>780</td>
<td>2</td>
<td>1,716</td>
</tr>
</tbody>
</table>
<p><span style="color: #ff0000"> ※가격은 변경될 수 있습니다.</span></p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/002_핀해더-준비.jpg" rel="lightbox[25925]"><img class="wp-image-26075 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/002_핀해더-준비.jpg" width="496" height="330" /></a> <span style="color: #0000ff"><strong>핀헤더 준비</strong></span><br />
이번 프로젝트에서는 3개의 7-세그먼트를 사용하는데 시각적 효과를 극대화하기 위하여 RED와 GREEN LED가 함께 내장된 투톤 7-세그먼트를 이용할 것이다. 안타깝게도 디바이스마트에서 판매하는 투톤 7-세그먼트는 핀 간격이 2mm로 2.54mm 홀 간격을 갖는 일반 기판과 맞지 않는다. 따라서 2mm 핀헤더를 끼워 7-세그먼트가 정렬되도록 할 것이다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/003_핀해더를-세그먼트와-결합하기.jpg" rel="lightbox[25925]"><img class="wp-image-26076 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/003_핀해더를-세그먼트와-결합하기.jpg" width="496" height="330" /></a> <span style="color: #0000ff"><strong>핀헤더를 세그먼트와 결합하기</strong></span><br />
핀헤더 길이가 부족하므로 부족한 부분은 잘라서 끼울 것이다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/004_기판-자르기.jpg" rel="lightbox[25925]"><img class="wp-image-26077 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/004_기판-자르기.jpg" width="496" height="330" /></a> <strong><span style="color: #0000ff">기판 자르기</span></strong><br />
7-세그먼트에 2mm 핀헤더를 끼운다.<br />
7-세그먼트 다리 사이에 끼워넣을 수 있는 크기의 기판을 잘라 만든다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/005_IC소켓-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26078 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/005_IC소켓-삽입.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>IC소켓 삽입</strong></span><br />
잘라진 기판에 IC소켓을 삽입한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/006_기판에-납땜.jpg" rel="lightbox[25925]"><img class="wp-image-26079 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/006_기판에-납땜.jpg" width="496" height="330" /></a> <span style="color: #0000ff"><strong>기판에 납땜</strong></span><br />
기판을 뒤집어 납땜한다. 앞으로 부품을 삽입한 후에는 납땜하여 부품을 고정한다. 납땜할 때에는 인두가 충분히 달궈진 후 사용하는데, 기판 동판에 인두팁을 대어 열을 충분히 전달하고 납을 밀어넣은 후 재빨리 떼어내야 깔끔하게 납땜이 된다. 너무 오래 대면 동판이 떨어질 수 있으므로 주의한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/007_레치IC소켓-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26080 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/007_레치IC소켓-삽입.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>레치IC소켓 삽입</strong></span><br />
아두이노 UNO를 이용할 것인데 GPIO가 13개라 7-세그먼트와 센서, 시리얼포트를 사용하기에는 턱없이 부족하다. 따라서 7-세그먼트 부분에 MC14094 IC를 사용하였다. 4094가 없다면 74HC595 같은 부품을 사용하여도 무방하다(기능은 비슷하지만 핀 배열이 다르다).</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/008_크리스탈-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26081 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/008_크리스탈-삽입.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>크리스탈 삽입</strong></span><br />
아두이노 UNO의 하드웨어를 그대로 사용할 것이므로 16MHz크리스탈을 사용한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/009_DC젝-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26082 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/009_DC젝-삽입.jpg" width="496" height="330" /></a> <span style="color: #0000ff"><strong>DC젝 삽입</strong></span><br />
5V전원을 사용할 수 있도록 DC어댑터 잭을 삽입한다. 필요에 따라 USB나 다른 포트로 변경하여도 좋다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/010_전해콘덴서-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26083 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/010_전해콘덴서-삽입.jpg" width="496" height="330" /></a> <span style="color: #0000ff"><strong>전해콘덴서 삽입</strong></span><br />
전원 안정화를 위해 전해콘덴서를 삽입하였다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/011_세라믹모노리딕콘덴서-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26084 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/011_세라믹모노리딕콘덴서-삽입.jpg" width="496" height="330" /></a> <span style="color: #0000ff"><strong>세라믹(모노리딕)콘센서 삽입</strong></span><br />
전원 잡음을 개선하기 위해 세라믹콘덴서를 삽입하였다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/012_UART통신용-핀해더-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26085 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/012_UART통신용-핀해더-삽입.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>UART통신용 핀헤더 삽입</strong></span><br />
UART통신용 핀헤더를 삽입한다. 단순 UART통신을 위한 것이 아닌 프로그램을 업로드하기 위한 포트이다. 참고로 사진에는 3PIN을 장착했지만 실제 필요한 핀 수는 4PIN이었다. (Ground, Reset, UART Tx, UART Rx)</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/013_LM35DZ온도센서-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26086 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/013_LM35DZ온도센서-삽입.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>LM35DZ온도센서 삽입</strong></span><br />
제품의 실용성을 극대화 하기 위하여 온도센서를 삽입하였다. 온도와 미세먼지 농도가 5초씩 교차하여 표시될 것이다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/014A_저항-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26087 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/014A_저항-삽입.jpg" width="496" height="330" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/014B_저항-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26088 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/014B_저항-삽입.jpg" width="496" height="330" /></a> <span style="color: #0000ff"><strong>저항 삽입</strong></span><br />
7-세그먼트에 흐르는 전류량을 제어하기 위해 저항을 달았다. RED부분에는 220옴, GREEN부분에는 150옴을 사용하였는데 일반적으로 RED가 더 밝기 때문에 더 높은 저항값을 사용하였다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/015_기판-배선.jpg" rel="lightbox[25925]"><img class="wp-image-26089 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/015_기판-배선.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>기판 배선</strong></span><br />
부품 삽입이 끝났다면 배선작업을 한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/016_점퍼선-배선.jpg" rel="lightbox[25925]"><img class="wp-image-26090 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/016_점퍼선-배선.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>점퍼선 배선</strong></span><br />
배선할 수 없는 곳은 점퍼선을 사용한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/017A_MCU삽입하기아두이노UNO에서-MCU분리.jpg" rel="lightbox[25925]"><img class="wp-image-26091 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/017A_MCU삽입하기아두이노UNO에서-MCU분리.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>MCU삽입하기(아두이노UNO에서 MCU분리)</strong></span><br />
아두이노 UNO에서 ATmega328p를 분리한다. 이 MCU에는 부트로더가 내장되어 시리얼통신으로 프로그램을 업로드 할 수 있다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/017B_MCU삽입하기.jpg" rel="lightbox[25925]"><img class="wp-image-26092 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/017B_MCU삽입하기.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>MCU삽입하기</strong></span><br />
계속해서 MCU를 새로 제작된 미세먼지측정기에 삽입한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/018_스케치-업로드를-위해-UART배선.jpg" rel="lightbox[25925]"><img class="wp-image-26093 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/018_스케치-업로드를-위해-UART배선.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>스케치 업로드를 위해 UART배선</strong></span><br />
아두이노 UNO 보드(MCU가 제거된)와 새로 제작된 미세먼지측정기 메인보드와 UART, RESET, GND를 연결한 후 아두이노 스케치프로그램에서 업로드한다. 프로그램을 수정할 필요가 없다면 이 과정에서 업로드를 완료하여도 된다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/019_기판-결합.jpg" rel="lightbox[25925]"><img class="wp-image-26094 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/019_기판-결합.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>기판결합</strong></span><br />
7세그먼트 부분에 메인보드와 결합한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/020_트렌지스터-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26095 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/020_트렌지스터-삽입.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>트렌지스터 삽입</strong></span><br />
필자가 메인보드를 작게 만들어 공간이 부족해 7-세그먼트 부분에 트랜지스터를 연결하였다. (기판을 좀 더 넓게 만든다면 기판에 트랜지스터를 끼우도록 한다.)</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/021_기판과-세그먼트-배선-작업.jpg" rel="lightbox[25925]"><img class="wp-image-26096 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/021_기판과-세그먼트-배선-작업.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>기판과 세그먼트 배선 작업</strong></span><br />
메인보드와 세그먼트와 테프론선 또는 일반 연선을 이용하여 배선을 한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/022_먼지센서-와이어-연결.jpg" rel="lightbox[25925]"><img class="wp-image-26097 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/022_먼지센서-와이어-연결.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>먼지센서 와이어 연결</strong></span><br />
먼지센서 와이어를 메인보드에 연결한다. (참고로 먼지센서 커넥터가 포함된 제품은 해외제품으로 배송이 오래걸릴 수 있으며, 국내 재고 제품은 커넥터를 별도로 구매해야 한다.)</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/023A_완성된-모습전면.jpg" rel="lightbox[25925]"><img class="wp-image-26098 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/023A_완성된-모습전면.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>완성된 모습(전면) </strong></span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/024B_완성된-모습후면.jpg" rel="lightbox[25925]"><img class="wp-image-26099" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/024B_완성된-모습후면.jpg" width="496" height="330" /></a><br />
<span style="color: #0000ff"><strong>완성된 모습(후면) </strong></span><br />
케이스를 제외한 완성된 모습이다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/025A_스케치-업로드하기.jpg" rel="lightbox[25925]"><img class="wp-image-26100 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/025A_스케치-업로드하기.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>스케치 업로드하기</strong></span><br />
7-세그먼트가 연결이 완료되었으니 스케치 프로그램을 이용해 프로그램을 업로드하고 필요한 경우 주석을 참고하여 수정한다. (프로그램은 itstyle.kr/34233에서 다운로드 받을 수 있으며 회로도와 부품목록도 함께 제공된다.)</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/025B_스케치-업로드하기.jpg" rel="lightbox[25925]"><img class="wp-image-26101 aligncenter" alt="025B_스케치 업로드하기" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/025B_스케치-업로드하기.jpg" width="434" height="521" /></a><span style="color: #0000ff"><strong>스케치 업로드하기</strong></span><br />
다운받은 프로그램을 스케치 캔버스에 붙여놓고 빨간색 업로드 버튼을 누르면 컴파일을 진행한 후 업로드가 진행된다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/026_아크릴-자르기.jpg" rel="lightbox[25925]"><img class="wp-image-26102 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/026_아크릴-자르기.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>아크릴 자르기</strong></span><br />
전면 케이스 제작을 위해 아크릴을 잘랐다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/027_아크릴-구멍-뚫기.jpg" rel="lightbox[25925]"><img class="wp-image-26103 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/027_아크릴-구멍-뚫기.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>아크릴 구멍 뚫기</strong></span><br />
자연적으로 공기가 통하도록하여 미세먼지가 측정되게 구멍을 뚫었다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/028A_먼지센서-부착.jpg" rel="lightbox[25925]"><img class="wp-image-26104 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/028A_먼지센서-부착.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>먼지센서 부착</strong></span><br />
먼지센서를 부착하기 위해 비닐을 때어낸 후,</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/028B_먼지센서-부착.jpg" rel="lightbox[25925]"><img class="wp-image-26105 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/028B_먼지센서-부착.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>먼지센서 부착</strong></span><br />
실리콘이나 다른 접착제를 이용해 아크릴에 부착한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/029_세그먼트-부착.jpg" rel="lightbox[25925]"><img class="wp-image-26106 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/029_세그먼트-부착.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>세그먼트 부착</strong></span><br />
세그먼트도 같은 방법으로 부착한다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/030_서포터-삽입.jpg" rel="lightbox[25925]"><img class="wp-image-26107 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/030_서포터-삽입.jpg" width="496" height="330" /></a><span style="color: #0000ff"><strong>서포터 삽입</strong></span><br />
서포터를 아크릴에 끼워 45도 기울여져 세워지도록 만들었다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/999A_아두이노로-제작한-미세먼지농도계.jpg" rel="lightbox[25925]"><img class="wp-image-26108 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/999A_아두이노로-제작한-미세먼지농도계.jpg" width="496" height="330" /></a><strong><span style="color: #0000ff">아두이노로 제작한 미세먼지농도계</span></strong><br />
처음 미세먼지센서를 테스트하기 위해 만든 미세먼지농도측정기다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/999B_결과물가정집-책상-위에서-미세먼지농도-측정중.jpg" rel="lightbox[25925]"><img class="wp-image-26109 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/999B_결과물가정집-책상-위에서-미세먼지농도-측정중.jpg" width="496" height="262" /></a><strong><span style="color: #0000ff">결과물(가정집 책상 위에서 미세먼지농도 측정중)</span></strong><br />
가정집에서는 40~60㎍/㎥정도 수치에서 값이 변동하였다. (기본 프로그램 기준으로 40㎍/㎥ 이하는 녹색, 41~80㎍/㎥는 녹황색, 81~120㎍/㎥는 황색, 121㎍/㎥ 이상은 적색으로 표시한다.)</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/999C_결과물가정집-거실에서-온도측정-중.jpg" rel="lightbox[25925]"><img class="wp-image-26110 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/999C_결과물가정집-거실에서-온도측정-중.jpg" width="496" height="275" /></a><span style="color: #0000ff"><strong>결과물(가정집 거실에서 온도측정 중)</strong></span><br />
온도측정기능을 제공하므로 온도를 볼 수 있다. (기본 프로그램 기준으로 20℃ 이하는 녹색, 21~25℃는 녹황색, 26~28℃는 황색, 29℃ 이상은 적색으로 표시한다.)</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/999D_결과물컴퓨터방에서-미세먼지-측정.jpg" rel="lightbox[25925]"><img class="wp-image-26111 aligncenter" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/999D_결과물컴퓨터방에서-미세먼지-측정.jpg" width="496" height="287" /></a><span style="color: #0000ff"><strong>결과물(컴퓨터방에서 미세먼지 측정)</strong></span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/999E_결과물미세먼지-농도가-높아-붉게-표시된-모습.jpg" rel="lightbox[25925]"><img class="alignnone  wp-image-26112" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/999E_결과물미세먼지-농도가-높아-붉게-표시된-모습.jpg" width="496" height="330" /></a><br />
<span style="color: #0000ff"><strong>결과물(미세먼지 농도가 높아 붉게 표시된 모습)</strong></span><br />
인위적으로 먼지를 불어 붉게 표시되고 있는 모습이다.</p>
<p style="text-align: center">RED와 RED+GREEN, GREEN 3가지 색을 낼 수 있을 것으로 보이지만 RED와 GREEN의 시프트레지스터 IC의 Enable단자는 아두이노 프로그램 내에서 analogWrite로 처리되므로 사실 더 많은 색상을 낼 수 있다.<br />
그러나 실제로는 4가지 정도만 명확하게 구분할 수 있어 4단계로 나누었다.</p>
<table class="aligncenter" style="border-color: #0c09a4;border-width: 1px;width: 617px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><strong><span style="color: #ffffff;font-size: medium;background-color: #0000ff">부록 01 &#8211; USB드라이버 업데이트 하기</span></strong></p>
<p>아두이노UNO는 부트로더가 내장된 전용의 스케치 프로그램과 USB 드라이버 설치가 필요하다.www.arduino.cc 에서 전용 스케치 프로그램 및 USB드라이버(함께 Zip으로 제공됨)를 다운받는다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기001.png" rel="lightbox[25925]"><img class="wp-image-26115" alt="부록A_드라이버업데이트하기001" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기001-620x451.png" width="496" height="361" /></a><br />
“장치관리자”에서 인식되지 않은 Arduino Uno를 선택해 “드라이버 소프트웨어 업데이트”를 누른다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기002.png" rel="lightbox[25925]"><img class="wp-image-26116" alt="부록A_드라이버업데이트하기002" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기002-620x454.png" width="496" height="363" /></a><br />
수동 설치를 해야 하는데 이를 위해 “컴퓨터에서 드라이버 소프트웨어 찾아보기”를 누른다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기003.png" rel="lightbox[25925]"><img class="wp-image-26117" alt="부록A_드라이버업데이트하기003" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기003-620x454.png" width="496" height="363" /></a><br />
다운받은 스케치 및 USB드라이버 압축을 풀고 해당 경로를 지정한다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기004.png" rel="lightbox[25925]"><img class="wp-image-26118" alt="부록A_드라이버업데이트하기004" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기004-620x455.png" width="496" height="364" /></a><br />
설치 동의가 필요한 경우 동의 및 설치를 눌러준다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기005.png" rel="lightbox[25925]"><img class="wp-image-26119" alt="부록A_드라이버업데이트하기005" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록A_드라이버업데이트하기005-620x454.png" width="496" height="363" /></a><br />
드라이버 설치가 완료되었다.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table style="border-color: #0c09a4;border-width: 1px;width: 617px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><span style="font-size: medium"><strong><span style="color: #ffffff;background-color: #0000ff">부록 02 &#8211; 포트번호 확인하기</span></strong></span><br />
스케치 프로그램에서 업로드하기 위해서는 시리얼포트(가상)를 지정해주어야 한다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록B_포트번호-확인하기001.png" rel="lightbox[25925]"><img class="alignnone  wp-image-26071" alt="부록B_포트번호 확인하기001" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록B_포트번호-확인하기001-620x451.png" width="496" height="361" /></a><br />
아두이노 UNO가 지정된 COM포트 번호를 확인하기 위해서는 “장치관리자”에 우선 들어가서 확인할 수 있다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록B_포트번호-확인하기002.png" rel="lightbox[25925]"><img class="alignnone  wp-image-26072" alt="부록B_포트번호 확인하기002" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록B_포트번호-확인하기002.png" width="350" height="420" /></a><br />
시리얼포트를 장치관리자에서 본 COM포트번호와 동일하게 위치한다.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table style="border-color: #0c09a4;border-width: 1px;width: 617px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><span style="color: #ffffff;font-size: medium;background-color: #0000ff"><strong>부록 03 &#8211; 아두이노UNO 수리하기</strong></span><br />
이번 DIY에서는 아두이노 부트로더가 올려진 MCU를 이용하기 위해, 그리고 프로그램 업로드 편리성을 위해 범용으로 가장 많이 사용하는 아두이노 UNO보드를 사용하였다.<br />
그러나 MCU만 제거하여 사용하게 되면 MCU가 제거된 아두이노UNO는 활용할 곳이 없어지고 그밖에 MCU가 고장이 나더라도 새 MCU를 끼워 대처할 수 있는 방법이다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록C_아두이노-수리하기1.jpg" rel="lightbox[25925]"><img class="alignnone  wp-image-26073" alt="SAMSUNG DIGITAL CAMERA" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록C_아두이노-수리하기1-620x369.jpg" width="496" height="295" /></a><br />
새로운 MCU ATmega328을 아두이노 UNO에 삽입한 뒤 ISP프로그래머를 장착한다. mkII나 패러럴타입 ISP모두 작동한다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록C_아두이노-수리하기2.png" rel="lightbox[25925]"><img class="alignnone  wp-image-26074" alt="부록C_아두이노 수리하기2" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록C_아두이노-수리하기2.png" width="372" height="305" /></a><br />
아두이노 스케치를 실행한 뒤 도구-&gt;부트로더 굽기를 누르면 새로운MCU에 부트로더가 업로드된다. 만약 인식되지 않는다면 도구-&gt;프로그래머에서 자신이 사용하는 ISP의 타입이 선택되어 있는지 확인한다.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table style="border-color: #0c09a4;border-width: 1px;width: 617px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><span style="color: #ffffff;font-size: medium;background-color: #0000ff"><strong>부록 04 &#8211; ATmega328 아두이노UNO 핀맵</strong></span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록D_ATmega328-아두이노UNO-핀맵.jpg" rel="lightbox[25925]"><img class="alignnone  wp-image-26114" alt="부록D_ATmega328 아두이노UNO 핀맵" src="http://www.ntrexgo.com/wp-content/uploads/2014/07/부록D_ATmega328-아두이노UNO-핀맵.jpg" width="480" height="314" /></a><br />
아두이노는 AVR을 기반으로 하지만 스케치에서 프로그램할 때 PORTX와 같이 레지스터명을 전혀 몰라도 된다. 디지털 포트번호에 digitalWrite또는 digitalRead와 같은 동작으로 해당 포트를 마음대로 조작할 수 있으며 analogWrite명령 한줄로 PWM도 사용할 수 있다. 따라서 아두이노UNO에서 ATmega328을 분리해 사용하는 경우 헷갈릴 수 있어 옆의 그림을 첨부한다.<br />
스케치 프로그램에서 업로드하기 위해서는 시리얼포트(가상)를 지정해주어야 한다.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table style="border-color: #0c09a4;border-width: 1px;width: 617px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><span style="color: #ffffff;font-size: medium;background-color: #0000ff"><strong>부록 05 &#8211; 회로도</strong></span></p>
<div id='wpdm_file_12' class='wpdm_file wpdm-only-button'><h3>[25호]탁상용 미세먼지 농도측정 및 온도계 만들기 회로도</h3><div class='cont'><div class='btn_outer'><div class='btn_outer_c' style='background-image: url(http://www.ntrexgo.com/wp-content/plugins/download-manager/icon/file_extension_pdf.png);'><a class='btn_left  ' rel='12' title='[25호]탁상용 미세먼지 농도측정 및 온도계 만들기 회로도' href='http://www.ntrexgo.com/?wpdmact=process&did=MTIuaG90bGluaw=='  >Download</a><span class='btn_right'>&nbsp;</span></div></div><div class='clear'></div></div></div></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table style="border-color: #0c09a4;border-width: 1px;width: 617px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><span style="font-size: medium"><strong><span style="color: #ffffff;background-color: #0000ff">저자소개</span></strong></span></p>
<table style="width: 500px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><img class="wp-image-1420 aligncenter" alt="15ledpovleeminju" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/15ledpovleeminju-179x300.jpg" width="107" height="180" /></td>
<td>제작·사진·글 | 이민주 객원기자<br />
www.itstyle.kr 운영자</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/25925/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
