<?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; 60호</title>
	<atom:link href="http://www.ntrexgo.com/archives/tag/60%ed%98%b8/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>[60호]층간소음 측정 및 상쇄를 통한 이웃사랑 프로젝트</title>
		<link>http://www.ntrexgo.com/archives/38512</link>
		<comments>http://www.ntrexgo.com/archives/38512#comments</comments>
		<pubDate>Tue, 30 Jun 2020 00:00:48 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[특집]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[ict]]></category>
		<category><![CDATA[공모전]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[융합]]></category>
		<category><![CDATA[프로젝트]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=38512</guid>
		<description><![CDATA[디바이스마트매거진 61호 &#124;  ‘음장상쇄 효과’를 적용해 소음을 실시간으로 인식하고, 부착된 스피커로 반대 위상을 가진 주파수를 내보내어 상쇄시키는 장치를 제작하였다.
]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-49-36-584.png" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38689" alt="Cap 2020-09-07 14-49-36-584" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-49-36-584-620x194.png" width="620" height="194" /></a></p>
<p><span style="font-size: large"><strong>2019 ICT 융합 프로젝트 공모전 참가상</strong></span></p>
<p><strong><span style="font-size: xx-large">층간소음 측정 및 상쇄를 통한 </span></strong></p>
<p><strong><span style="font-size: xx-large">이웃사랑 프로젝트</span></strong></p>
<p style="text-align: right">글 | 성균관대학교 김혁균, 고건우, 권동환, 정혜인, 최민수</p>
<p>&nbsp;</p>
<p><span style="color: #0000ff"><strong>1. 심사평</strong></span><br />
칩센 사회적 이슈로까지 번지고 있는 층간 소음에 대하여 고민을 한 것으로 보이지만, 제작한 결과물이 어떤 효과를 보이는지에 대한 확인이 어렵습니다. 또한 마이크로 입력된 소음 진동에 대하여 스피커를 통해 상쇄한다는 것도 실효성이 부족해 보입니다. 조금 더 구체적인 가설과 대안을 제시할 필요가 있어 보입니다.<br />
뉴티씨 최근 많은 민원이 층간소음에서 발생하고, 실제로 이웃간의 분쟁도 많이 발생하고 있습니다. 이럴 때 이러한 장비를 고안하여 낸 것은 참 좋은 의미인 것 같습니다. FFT를 통한 주파수 확인 후 주요 주파수를 상쇄시키기 위해 스피커로 소리를 내서 층간소음을 줄이는 것은 제대로 구현된다면 참 도움이 될 것입니다. 다만, 작품의 결과가 어떻게 되었는지, 장치 전과 장치한 후의 결과 비교 또한 FFT주파수로 찾고 나서 반대파를 발생시킨 파형, 그리고 상쇄된 최종 파형 등이 함께 나와있다면 보다 좋은 작품이 되었을 것 같습니다. 20여년전에 전화박스를 외부소음으로부터 막아주기 위해 구현되었던 기능과 매우 유사합니다. 실제 생활에 도움이 되는 이러한 생각들은 평소에도 많이 해서, 삶이 변화되는 계기가 되면 좋겠습니다.<br />
위드로봇 노이즈 캔슬링은 실시간 응답성이 매우 중요한데, 이 부분의 구현이 아쉽습니다,<br />
펌테크 최근 들어 사회적 이슈가 되고 있는 층간 소음 문제를 반영한 아이디어와 실용성이 우수한 작품이라고 생각합니다. 작품에 적용된 기술이 단순히 층간 소음을 측정하여 수집하고 표시하는 것 외에도 층간 소음 발생 시 발생된 소음을 경감시키고자 하는 방안으로 FFT 노이즈 캔슬링 방식을 적용한 회로로 구성한 점은 참신한 기획이라고 생각합니다. 단 제출된 보고서 상에서는 구동되는 자세한 동작 영상을 확인할 수 없어 최종 완성이 되지는 않은 것으로 판단됩니다.</p>
<p><span style="color: #0000ff"><strong>2. 작품 개요</strong></span><br />
<span style="color: #008080"><strong>2.1. 제작 배경 및 문제점</strong></span><br />
대한민국에서 ‘층간소음’의 문제점은 이미 사회적으로 큰 이슈가 되고 있다. 실제로 20대에게 ‘층간소음’ 설문조사를 한 결과 ‘층간소음을 겪어봤다’고 답한 응답자는 91.7%에 달했다. 또 10명 중 5명은 ‘소음 때문에 스트레스를 받고 있다’고 답했다. 국민일보 ‘층간소음, 윗집이 남기고 간 메모 때문에‘ ‘항의해 봤다’는 응답도 51.5%에 달했다. 그래서 층간소음 해결을 위하여 관리실에 민원을 넣거나 문자 메시지, 먹을 것을 주는 등 많은 방법을 사용한다. 하지만 해결이 안 될 경우 민원을 넣어도 현행법상 강제력이 없기 때문에 소음을 내는 집에서 협조하지 않게 되면 별다른 방도가 없다. 그로 인하여 직접 항의하거나 소음을 더 크게 내서 복수하는 행위가 나오게 되고, 이러한 과정에서 다툼이 일어나거나 심각한 경우 살인, 방화, 폭력 등 범죄 행위가 발생하는 상황이다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-49-45-577.png" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38690" alt="Cap 2020-09-07 14-49-45-577" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-49-45-577-620x229.png" width="620" height="229" /></a></p>
<p>보통 항의를 하는 경우 구체적인 기준을 알아내기 어려운 경우가 많다. ‘시끄럽다‘의 기준은 주관적이기 때문이다. 물론 국토부와 환경부에서 상단 표와 같이 기준을 만들어 놓았지만, 윗집의 소음 정보를 아랫집에 제공하는 건 개인정보 보호법에 의하여 어렵다. 만약, 층간소음의 갈등이 심화 되어 법적인 절차로 넘어갈 경우, 개인적으로 녹음한 소음과 영상 등은 실효성을 입증하기 어렵다. 측정업체에 50~100만원의 비용을 소비해야 증거자료 사용할 수 있다.<br />
또한, 자신이 내는 소음이 어느 정도로 주변에 영향을 미치는지 확실히 알 수 없는 경우가 많다.</p>
<p><span style="color: #008080"><strong>2.2. 제작 목적 및 기대 효과</strong></span><br />
위의 나열한 문제점을 해결하기 위하여 층간소음 센서를 제작하였다. 애매한 ‘시끄럽다’ 기준을 확실히 하기 위하여 &lt;표1&gt;에 나와 있는 야간의 최고 소음도를 기준(실험환경이 미니어처 집이라서 망치로 내려치는 충격과 시끄러운 음악을 트는 것을 최고 소음도를 넘는다는 기준으로 설정하였다.)으로 일정 기준의 소음을 넘으면 LED 등에 ‘X’ 표시가 나오도록 코드를 작성하였다. 개인정보 보호법을 고려하여 소음을 받는 집에서 진동과 소음을 측정하고 기준을 넘으면 소음이 나는 집에 LED가 표시되도록 하였다.<br />
또한, 주거 위치별 층간소음 피해는 위층의 소음으로 인해 아래층에서 불편을 호소하는 경우가 69.4%로 가장 많다는 설문조사를 바탕으로 윗집에서 아랫집으로 소음이 간다는 상황 설정으로 미니어처 집을 제작하였다. 그리고 우퍼(woofer·저음용 스피커) 설치로 보복 소음을 낸다는 것에서 아이디어를 얻어서 ‘음장상쇄 효과’를 적용해서 아랫집에서 소음을 실시간으로 인식하고, 아래층 천장에 부착된 스피커로 반대 위상을 가진 주파수를 내보내어 상쇄시키는 장치를 제작하였다.<br />
이 센서를 사용할 경우 LED등이 소음이 나는 집에 경고를 주어 소음 제공자 스스로 소음을 억제하여 충돌을 방지하는 효과를 기대할 수 있고, 센서의 기록장치에 의해서 법적인 증거자료로 사용할 수 있다. 게다가, 아랫집에서 음장 상쇄 기능을 가진 스피커를 사용하게 되면, 윗집에서 나는 소음이 크더라도 소음이 감쇄된다. 그렇게 되면 층간소음 문제를 어느 정도 해결할 수 있을 것이다.<br />
<strong></strong></p>
<p><span style="color: #0000ff"><strong>3. 작품 설명</strong></span><br />
<span style="color: #008080"><strong>3.1. 음장 상쇄</strong></span><br />
<span style="color: #33cccc"><strong>3.1.1. FFT(Fast Fourier Transform)</strong></span><br />
FFT(Fast Fourier Transform)이란 이산 푸리에 변환과 그 역변환을 빠르게 수행하는 효율적인 알고리즘을 의미한다. 보통 디지털 신호 처리 및 편미분 방정식의 풀이 등 여러 분야에서 사용된다.<br />
푸리에 변환이란, 시간에 대한 함수를 주파수에 대한 함수로 변환하는 작업이다. 다시 말해, 푸리에 변환은 시간에 대한 함수를 분해하여 각 주파수 대역에 대한 성분으로 분해한다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-49-57-793.png" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38691" alt="Cap 2020-09-07 14-49-57-793" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-49-57-793-620x296.png" width="620" height="296" /></a></p>
<p>위 그림에서 빨간 부분은 특정 신호를 시간에 대한 함수로 나타낸 것이다. 이러한 신호는 대개 여러 개의 사인파의 합성으로 이루어져 있는데, 이것을 주파수 대역에 대하여 분해하고 각 주파수 대역에 대한 진폭을 표시한 것이 파란 부분이다. 푸리에 변환을 이용하면 복잡한 신호를 간결하게 정리할 수 있으며, 특정 신호에서 지배적인 주파수 대역이 어떤 성분인지 확인할 수 있다. 이러한 푸리에 변환은 음성 구별, 다양한 소리 재생, 영상 노이즈 제거 등 여러 신호 처리 분야에서 활용되고 있다.</p>
<p><span style="color: #33cccc"><strong>3.1.2. 아두이노를 이용한 FFT와 노이즈 캔슬링 알고리즘</strong></span><br />
아두이노를 이용한 FFT는 이미 많은 개발자들에 의해 오픈 소스 라이브러리가 제공되고 있다. 본 프로젝트에서는 이를 이용하여 노이즈 캔슬링 알고리즘을 구현한다. 먼저 아두이노의 아날로그 핀을 통해 현실 소리 데이터를 받고 이를 FFT 라이브러리를 이용하여 주파수 영역의 데이터로 전환한다. 그 후, 효율적인 캔슬링을 위해 가장 지배적인 주파수 대역을 선정하여 이에 해당하는 반대 진폭의 음파를 스피커를 통해 출력한다. 그림은 데이터 처리 과정 중, FFT를 이용하여 소리를 시각화한 것과 FFT를 통해 소리를 주파수 대역별로 분리한 후, 그것을 상대적인 진폭으로 나타낸 데이터이다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-06-577.png" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38692" alt="Cap 2020-09-07 14-50-06-577" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-06-577-620x300.png" width="620" height="300" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-16-711.png" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38693" alt="Cap 2020-09-07 14-50-16-711" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-16-711-620x372.png" width="620" height="372" /></a></p>
<p><span style="color: #33cccc"><strong>3.1.3. 상수 및 변수 선언</strong></span></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>&nbsp;</p>
<p>const uint16_t samples = 128;<br />
double signalFrequency = 1000;<br />
double samplingFrequency = 5000;<br />
uint8_t amplitude = 100;</p>
</div>
sample의 크기와 FFT 변환에 필요한 신호 주파수를 정의하는 부분이다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>&nbsp;</p>
<p>double vReal[samples];<br />
double vImag[samples];</p>
</div>
<p>현실의 소리 샘플을 FFT 변환을 통해 주파수 대역으로 분리할 때 사용하는 Array를 선언한다. 아날로그 핀을 통해 얻은 소리 신호를 vReal에 저장하고, FFT 변환을 통해 얻은 주파수 영역 소리 신호를 vImag에 저장한다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>&nbsp;</p>
<p>uint8_t mySensVals[samples];<br />
float freq1;<br />
float freq2;<br />
float freq3;<br />
uint8_t ampl1;<br />
uint8_t ampl2;<br />
uint8_t ampl3;<br />
uint8_t i1;<br />
uint8_t i2;<br />
uint8_t i3;</p>
</div>
<p>FFT를 통해 분석한 소리 대역을 저장하는 mySensVals를 정의하고 그 중에서 진폭이 가장 큰 주파수 대역을 freq1, freq2, freq3에 저장한다. 그 후 각 주파수 대역에 대한 진폭을 ampl1, ampl2, ampl3에 저장한다. i1, i2, i3는 mySensVals에서 주파수가 큰 세 개의 인덱스를 의미한다,</p>
<p><span style="color: #33cccc"><strong>3.1.4. 메인 loop 함수</strong></span></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">for (uint8_t i = 0; i &lt; samples; i++)</span></p>
<p><span style="font-size: 13px">  {</span></p>
<p><span style="font-size: 13px">    vReal[i] = analogRead(A0);</span></p>
<p><span style="font-size: 13px">    delayMicroseconds(100);</span></p>
<p><span style="font-size: 13px">    vImag[i] = 0;</span></p>
<p><span style="font-size: 13px">  }</span></p>
</div>
vReal에 마이크 센서를 이용해 아날로그 핀을 통해 실제 소리 데이터를 받는다, 그 후, vImag의 모든 데이터를 0으로 정리한다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">FFT.Windowing(vReal, samples, FFT_WIN_TYP_HAMMING, FFT_FORWARD);</span></p>
<p><span style="font-size: 13px">  FFT.Compute(vReal, vImag, samples, FFT_FORWARD);</span></p>
<p><span style="font-size: 13px">  FFT.ComplexToMagnitude(vReal, vImag, samples);</span></p>
<p><span style="font-size: 13px">  PrintVector(vReal, (samples &gt;&gt; 1), SCL_FREQUENCY);</span></p>
</div>
vReal에 있는 소리 데이터를 FFT를 이용하여 주파수 대역에 대하여 정리한 후, vImag에 저장한다. 해당 부분 코드는 FFT를 아두이노에 맞게 적용할 수 있는 arduinoFFT.h 오픈 소스 라이브러리를 이용하였다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>PrintVector(vImag, (samples &gt;&gt; 1), SCL_FREQUENCY);</p>
</div>
vReal을 FFT를 통해 정리하여 주파수 영역의 소리 데이터를 mySensVals array에 저장한다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">i1 = 2;</span></p>
<p><span style="font-size: 13px">  for (int k = 2;k &lt; 64; k++){</span></p>
<p><span style="font-size: 13px">    if(mySensVals[k]&gt;mySensVals[i1]){</span></p>
<p><span style="font-size: 13px">      i1 = k;</span></p>
<p><span style="font-size: 13px">    }</span></p>
<p><span style="font-size: 13px">  }</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">  i2 = 2;</span></p>
<p><span style="font-size: 13px">  for (int k = 2;k &lt; 64; k++){</span></p>
<p><span style="font-size: 13px">    if((mySensVals[k]&gt;mySensVals[i2]) &amp;&amp; (k!=i1)){</span></p>
<p><span style="font-size: 13px">      i2 = k;</span></p>
<p><span style="font-size: 13px">    }</span></p>
<p><span style="font-size: 13px">  }</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">  i3 = 2;</span></p>
<p><span style="font-size: 13px">  for (int k = 2;k &lt; 64; k++){</span></p>
<p><span style="font-size: 13px">    if((mySensVals[k]&gt;mySensVals[i3]) &amp;&amp; (k!=i1) &amp;&amp; (k!=i2)){</span></p>
<p><span style="font-size: 13px">      i3 = k;</span></p>
<p><span style="font-size: 13px">    }</span></p>
<p><span style="font-size: 13px">  }</span></p>
</div>
mySensVals의 데이터 중, 가장 진폭이 큰 데이터 3개를 추출하는 과정이다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">freq1 = scailing(i1);</span></p>
<p><span style="font-size: 13px">freq2 = scailing(i2);</span></p>
<p><span style="font-size: 13px">freq3 = scailing(i3);</span></p>
</div>
freq 변수에 진폭이 가장 큰 주파수 대역에 인덱스를 주파수로 변환해 저장한다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">tone(speaker_pin1, freq1);</span></p>
<p><span style="font-size: 13px">tone(speaker_pin2, freq2);</span></p>
<p><span style="font-size: 13px">tone(speaker_pin3, freq3);</span></p>
</div>
선택한 주파수 대역을 3개의 스피커를 통해 재생한다.</p>
<p><span style="color: #33cccc"><strong>3.1.5. 기타 함수 설정</strong></span></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">void PrintVector(double *vData, uint8_t bufferSize, uint8_t scaleType)</span></p>
<p><span style="font-size: 13px">{</span></p>
<p><span style="font-size: 13px">  for (uint16_t i = 2; i &lt; bufferSize; i++)</span></p>
<p><span style="font-size: 13px">  {</span></p>
<p><span style="font-size: 13px">    uint8_t val_temp = map(vData[i],0,1000,0,255);</span></p>
<p><span style="font-size: 13px">    mySensVals[i] = val_temp;</span></p>
<p><span style="font-size: 13px">    /*Serial.print(bufferSize);</span></p>
<p><span style="font-size: 13px">    Serial.print(&#8221; &#8220;);*/</span></p>
<p><span style="font-size: 13px">  }</span></p>
<p><span style="font-size: 13px">}</span></p>
</div>
선택한 영역의 데이터를 글로벌 변수인 mySensVals에 저장하는 함수이다. 이 과정에서 진폭의 스케일을 0에서 255로 조정한다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">float scailing(int i){</span></p>
<p><span style="font-size: 13px">  float ans = 200 + (1000-200)/(50-12)*(i-12);</span></p>
<p><span style="font-size: 13px">  return ans;</span></p>
<p><span style="font-size: 13px">}</span></p>
</div>
소리 데이터의 인덱스를 주파수로 변환하는 함수이다.</p>
<p><span style="color: #008080"><strong>3.2. 소음 및 진동 센서</strong></span><br />
<span style="color: #33cccc"><strong>3.2.1. 라이브러리</strong></span></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">#include &lt;FrequencyTimer2.h&gt;</span></p>
<p><span style="font-size: 13px">//도트 매트릭스 사용에 필요한 라이브러리를 가져옴.</span></p>
<p><span style="font-size: 13px">//진동, 소음 센서의 경우 추가적인 라이브러리 불필요.</span></p>
</div>
<span style="color: #33cccc"><strong>3.2.2. 도트매트릭스 설정</strong></span></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">#define X  { \</span></p>
<p><span style="font-size: 13px">    {1, 0, 0, 0, 0, 0, 0, 1}, \</span></p>
<p><span style="font-size: 13px">    {0, 1, 0, 0, 0, 0, 1, 0}, \</span></p>
<p><span style="font-size: 13px">    {0, 0, 1, 0, 0, 1, 0, 0}, \</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 1, 1, 0, 0, 0}, \</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 1, 1, 0, 0, 0}, \</span></p>
<p><span style="font-size: 13px">    {0, 0, 1, 0, 0, 1, 0, 0}, \</span></p>
<p><span style="font-size: 13px">    {0, 1, 0, 0, 0, 0, 1, 0}, \</span></p>
<p><span style="font-size: 13px">    {1, 0, 0, 0, 0, 0, 0, 1}  \</span></p>
<p><span style="font-size: 13px">} </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">#define D { \</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 0, 0, 0, 0, 0},\</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 0, 0, 0, 0, 0},\</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 0, 0, 0, 0, 0},\</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 0, 0, 0, 0, 0},\</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 0, 0, 0, 0, 0},\</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 0, 0, 0, 0, 0},\</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 0, 0, 0, 0, 0},\</span></p>
<p><span style="font-size: 13px">    {0, 0, 0, 0, 0, 0, 0, 0},\</span></p>
<p><span style="font-size: 13px">}</span></p>
<p><span style="font-size: 13px">//도트 매트릭스로 비춰줄 X 모양 상태와 불빛이 모두 꺼져있는 상태를 1과 0으로 지정해줌.</span></p>
</div>
<span style="color: #33cccc"><strong>3.2.3. 상수 및 변수 선언</strong></span><br />
<strong></strong></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p><span style="font-size: 13px">int SOUND_SENSOR = A5;</span></p>
<p><span style="font-size: 13px">int threshold = 25;</span></p>
<p><span style="font-size: 13px">//소음 센서를 A5로 받고, 감도조절 threshold를 25로 설정, Sensor_Value로 소음센서 정의함.</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">int tact = A5;      </span></p>
<p><span style="font-size: 13px">//택트 스위치 A5에 연결</span></p>
<p><span style="font-size: 13px">byte col = 0;       </span></p>
<p><span style="font-size: 13px">//COL을 0으로 초기화</span></p>
<p><span style="font-size: 13px">byte leds[8][8];    </span></p>
<p><span style="font-size: 13px">//현재 출력해야 할 LED 모양 업로드하는 배열함.</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">//맨 처음 PINS[0]은 사용하지 않기때문에 -1로 설정. 1~16번까지의 핀을 PIN에 연결함.</span></p>
<p><span style="font-size: 13px">int pins[17]= {-1, 5, 4, 3, 2, 14, 15, 16, 17, 13, 12, 11, 10, 9, 8, 7, 6};</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">//행 0~7번까지 핀 연결해 주기</span></p>
<p><span style="font-size: 13px">int cols[8] = {pins[13], pins[3], pins[4], pins[10], pins[6], pins[11], pins[15], pins[16]};</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">//열 0~ 7번까지 핀 연결해 주기</span></p>
<p><span style="font-size: 13px">int rows[8] = {pins[9], pins[14], pins[8], pins[12], pins[1], pins[7], pins[2], pins[5]};</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">const int numPatterns = 2;      </span></p>
<p><span style="font-size: 13px">//총 사용할 패턴 수를 지정하기.</span></p>
<p><span style="font-size: 13px">byte patterns[numPatterns][8][8] = { X, D };   </span></p>
<p><span style="font-size: 13px">//위에서 정의한 led 모양을 patterns에 입력해 주기</span></p>
<p><span style="font-size: 13px">int pattern = 0;</span></p>
<p><span style="font-size: 13px">pattern의 초기값을 0으로 지정.</span></p>
<p><span style="font-size: 13px">int Sensor_value;</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">void clearLeds() { </span></p>
<p><span style="font-size: 13px">  for (int i = 0; i &lt; 8; i++) </span></p>
<p><span style="font-size: 13px">    for (int j = 0; j &lt; 8; j++) </span></p>
<p><span style="font-size: 13px">      leds[i][j] = 0;  }</span></p>
<p><span style="font-size: 13px">//led를 다 초기화 시키는 clearLeds 정의.</span></p>
<p><span style="font-size: 13px">void display() {</span></p>
<p><span style="font-size: 13px">  digitalWrite(cols[col], HIGH);  </span></p>
<p><span style="font-size: 13px">//이전 행들 다 꺼지게끔 해주기</span></p>
<p><span style="font-size: 13px">  col++;</span></p>
<p><span style="font-size: 13px">  if (col == 8) {</span></p>
<p><span style="font-size: 13px">    col = 0;</span></p>
<p><span style="font-size: 13px">  }</span></p>
<p><span style="font-size: 13px">  for (int row = 0; row &lt;= 7; row++) {</span></p>
<p><span style="font-size: 13px">    if (leds[col][7 - row] == 1) {     // 위의 배열에서 1일때 해당되는 위치 불빛 켜주기</span></p>
<p><span style="font-size: 13px">      digitalWrite(rows[row], HIGH);</span></p>
<p><span style="font-size: 13px">    }</span></p>
<p><span style="font-size: 13px">    else {                          // 위 배열에서 0일때 해당되는 위치 불빛 꺼줌.</span></p>
<p><span style="font-size: 13px">      digitalWrite(rows[row], LOW);</span></p>
<p><span style="font-size: 13px">    }</span></p>
<p><span style="font-size: 13px">  }</span></p>
<p><span style="font-size: 13px">  digitalWrite(cols[col], LOW);     </span></p>
<p><span style="font-size: 13px">// 다음 패턴을 위해 led 다 꺼줌.</span></p>
<p><span style="font-size: 13px">}</span></p>
<p><span style="font-size: 13px">void setPattern(int pattern) {        // LED 배열에 PATTREN 입력하기</span></p>
<p><span style="font-size: 13px">  for (int i = 0; i &lt; 8; i++) </span></p>
<p><span style="font-size: 13px">    for (int j = 0; j &lt; 8; j++) </span></p>
<p><span style="font-size: 13px">      leds[i][j] = patterns[pattern][i][j];  </span></p>
<p><span style="font-size: 13px">}</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">void setup() {</span></p>
<p><span style="font-size: 13px">// 1~16번 까지의 핀을 출력으로 설정</span></p>
<p><span style="font-size: 13px">  for (int i = 1; i &lt;= 16; i++) {</span></p>
<p><span style="font-size: 13px">    pinMode(pins[i], OUTPUT);</span></p>
<p><span style="font-size: 13px">  }</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">// 행 0~7번까지를 high로 </span></p>
<p><span style="font-size: 13px">  for (int i = 0; i &lt; 8; i++) {</span></p>
<p><span style="font-size: 13px">    digitalWrite(cols[i], HIGH );</span></p>
<p><span style="font-size: 13px">  }</span></p>
<p><span style="font-size: 13px">// 열 0~7번 까지를 low로</span></p>
<p><span style="font-size: 13px">  for (int i = 0; i &lt; 8; i++) {</span></p>
<p><span style="font-size: 13px">    digitalWrite(rows[i], HIGH);</span></p>
<p><span style="font-size: 13px">  }</span></p>
<p><span style="font-size: 13px"> clearLeds();   // led 초기화</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">FrequencyTimer2::setOnOverflow(display);  </span></p>
<p><span style="font-size: 13px">//leds를 보여주기 위해서 setOnOverFlow를 사용</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">  pinMode(tact, INPUT); </span></p>
<p><span style="font-size: 13px">//SW 를 설정, 아두이노 풀업저항 사용</span></p>
<p><span style="font-size: 13px">  setPattern(pattern); </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">Serial.begin(9600); </span></p>
<p><span style="font-size: 13px">// 시리얼모니터 출력</span></p>
<p><span style="font-size: 13px">  pinMode(SOUND_SENSOR, INPUT);  </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">-메인 loop 함수</span></p>
<p><span style="font-size: 13px">void loop() { </span></p>
<p><span style="font-size: 13px">  int val; </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px"> val=analogRead(4);</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px"> Serial.print(val,DEC);</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">delay(100);  </span></p>
<p><span style="font-size: 13px">//진동 센서 값을 아날로그 4핀으로 받고 val 로 정의한 뒤 delay 100의 지연시간으로 진동 센서 값을 시리얼 모니터에 표시함.</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">Sensor_value = analogRead(A5);   </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">  Serial.println(Sensor_value);   </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">  delay(100);</span></p>
<p><span style="font-size: 13px">//소음 센서 값을 아날로그 5핀으로 받고 Sensor_value로 정의한 뒤 delay 100의 지연시간으로 소음 센서 값을 시리얼 모니터에 표시함.</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">int readTact = digitalRead(tact);</span></p>
<p><span style="font-size: 13px">  if((Sensor_value&gt;=300) || (val&gt;=300)){</span></p>
<p><span style="font-size: 13px"> // 소음센서 또는 진동센서의 값이 300을 넘는 값을 가질 때</span></p>
<p><span style="font-size: 13px">    </span></p>
<p><span style="font-size: 13px">    if(readTact == LOW){     </span></p>
<p><span style="font-size: 13px">// 택트 스위치가 low일때 </span></p>
<p><span style="font-size: 13px">      if(pattern == 2) pattern = 0;   </span></p>
<p><span style="font-size: 13px">//패턴의 끝까지 다 출력하고 다시 처음을 출력</span></p>
<p><span style="font-size: 13px">      else pattern++;                </span></p>
<p><span style="font-size: 13px">// 다음 패턴 출력을 위해 pattern ++</span></p>
<p><span style="font-size: 13px">     delay(300);                 </span></p>
<p><span style="font-size: 13px">// 길게 눌러 패턴이 순식간에 넘어가지 않기 위해서 딜레이를 줌</span></p>
<p><span style="font-size: 13px">    }    </span></p>
<p><span style="font-size: 13px">       setPattern(pattern);           </span></p>
<p><span style="font-size: 13px">// 패턴 출력 </span></p>
<p><span style="font-size: 13px">  }</span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px"> </span></p>
<p><span style="font-size: 13px">  else  </span></p>
<p><span style="font-size: 13px"> clearLeds();</span></p>
<p><span style="font-size: 13px">  Sensor_value = analogRead(A5);</span></p>
<p><span style="font-size: 13px">//아닐 경우 다시 처음으로 돌아가 측정을 시작.</span></p>
<p><span style="font-size: 13px">  }</span></p>
</div>
<p><span style="color: #008080"><strong>3.3. 전체 시스템 구성</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-31-077.png" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38694" alt="Cap 2020-09-07 14-50-31-077" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-31-077-620x347.png" width="620" height="347" /></a><br />
본 시스템은 크게 주요한 두 가지 기능으로 나뉜다. 첫 번째는 두 개의 센서를 이용해 소음을 입력 값으로 받고, LED로 출력하는 과정이다. 이 과정은 층간소음의 진동과 소음을 각각 진동 감지 센서와 소음 감지 센서에서 인식한다. 이때, 진동과 소음의 정도가 일정 값을 넘게 되면 기준치와 비교해 LED에 표시를 해주게 된다.<br />
두 번째는 마이크를 이용해 소음을 입력 받은 후 Fast Fourier Transform 변환 과정을 거쳐 일상의 소음을 사인파로 분석한다. 분석된 여러 주파수 중 가장 큰 주파수를 선택해 그에 반대되는 파장을 내보냄으로써 소음을 상쇄시킬 수 있다.<br />
이때, 진동은 진동 감지 센서에서만 입력되고, 소음은 소음 감지 센서와 마이크 두 곳에서 입력을 받게 된다. 또한, 개인정보보호를 위해, 본 팀은 LED는 위층에 표시하고, 소음을 상쇄시키는 파장은 아래층에 있는 스피커에서 송출하도록 구성하였다. 따라서 위층은 자신의 소음을 인식할 수 있고, 아래층은 소음을 상쇄시킨 조용한 환경에서 지낼 수 있다.</p>
<p><span style="color: #008080"><strong>3.4. 개발 환경</strong></span><br />
본 팀은 프로젝트의 목적하는 바를 구현하기 위해 Arduino Uno와 Arduino Due를 사용하였다. 소음센서, 진동센서의 값을 받아들여 LED와 스피커를 통제하기 위해 상호작용이 가능한 시스템을 만들어 내기 위해 아두이노 보드를 선택하였다. 또한, 임베디드 시스템 중의 하나로 장치의 제어를 쉽게 개발할 수 있다는 장점 때문에 우노 보드를 사용하였다.<br />
아두이노의 IDE에서 소음 및 진동 값의 기준 비교와 음장 상쇄 등 프로젝트의 주된 기능들을 구현하였다. 기본적으로 내장된 라이브러리를 이용해 소음 및 진동센서 제어와 LED 출력을 프로그래밍 하였고, 음장상쇄 과정에서는 FFT관련한 오픈 소스 라이브러리를 사용하여 프로그래밍 하였다. 한편, 빠르게 연산 과정을 수행해야 하는 음장상쇄 기능에 있어서 아두이노 보드는 비교적 느린 사이클을 가지고 있었고, 소음의 발생보다 조금 늦게 반대파가 생성되는 것이 한계점이라 할 수 있다.</p>
<p><span style="color: #0000ff"><strong>4. 단계별 제작 과정</strong></span><br />
<span style="color: #008080"><strong>4.1. 진동센서와 소음센서를 이용한 소음인식과 디스플레이 장치</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-42-178.jpg" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38695" alt="Cap 2020-09-07 14-50-42-178" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-42-178-620x365.jpg" width="620" height="365" /></a><br />
1. 진동센서. 소음센서와 LED디스플레이를 아두이노와 연결한다.<br />
2. 진동센서의 진동 적정값과 소음센서의 소음 적정값을 구한다.<br />
3. 아두이노가 진동과 소음을 동시에 느낄 때 디스플레이에 X표시가 뜨도록 코딩한다.</p>
<p><span style="color: #008080"><strong>4.2. 마이크와 스피커를 이용한 음장상쇄 장치</strong></span><br />
1. 마이크와 스피커를 아두이노에 연결한다.<br />
2. 마이크로 들어온 소리의 주파수를 분석해 역파장을 스피커로 출력하는 코딩한다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-47-511.jpg" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38696" alt="Cap 2020-09-07 14-50-47-511" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-47-511-620x365.jpg" width="620" height="365" /></a></p>
<p><span style="color: #008080"><strong>4.3. 층간소음 모형 및 실험</strong></span><br />
1. 아래층과 위층으로 나뉜 공간을 만든다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-54-711.jpg" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38697" alt="Cap 2020-09-07 14-50-54-711" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-54-711-620x365.jpg" width="620" height="365" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-59-310.jpg" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38698" alt="Cap 2020-09-07 14-50-59-310" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-50-59-310-620x365.jpg" width="620" height="365" /></a><br />
2. 아래층의 천장 부분에 센서들과 스피커를 붙인다. 진동 및 소음 센서는 아래층의 소음이 감지되지 않고, 위층의 소음과 진동만 감지하도록 방음이 되는 재료로 둘러싸준다.<br />
3. 위층에 충격과 소음을 일으켜 정상적으로 소음과 진동이 인식되어 디스플레이와 스피커가 반응하는지 확인한다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-51-05-360.jpg" rel="lightbox[38512]"><img class="alignnone size-large wp-image-38699" alt="Cap 2020-09-07 14-51-05-360" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-09-07-14-51-05-360-620x211.jpg" width="620" height="211" /></a></p>
<p><span style="color: #008080"><strong>4.4. 소스코드</strong></span></p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>&nbsp;</p>
<p>#include &#8220;arduinoFFT.h&#8221;<br />
#define twoPi 6.28318531<br />
#define fourPi 12.56637061<br />
arduinoFFT::arduinoFFT(void)<br />
{<br />
/* Constructor */<br />
}</p>
<p>arduinoFFT::~arduinoFFT(void)<br />
{<br />
/* Destructor */<br />
}</p>
<p>uint8_t arduinoFFT::Revision(void)<br />
{<br />
return(FFT_LIB_REV);<br />
}<br />
void arduinoFFT::Compute(double *vReal, double *vImag, uint16_t samples, uint8_t dir)<br />
{<br />
Compute(vReal, vImag, samples, Exponent(samples), dir);<br />
}</p>
<p>void arduinoFFT::Compute(double *vReal, double *vImag, uint16_t samples, uint8_t power, uint8_t dir)<br />
{<br />
/* Computes in-place complex-to-complex FFT */<br />
/* Reverse bits */<br />
uint16_t j = 0;<br />
for (uint16_t i = 0; i &lt; (samples &#8211; 1); i++) {<br />
if (i &lt; j) {<br />
Swap(&amp;vReal[i], &amp;vReal[j]);<br />
Swap(&amp;vImag[i], &amp;vImag[j]);<br />
}<br />
uint16_t k = (samples &gt;&gt; 1);<br />
while (k &lt;= j) {<br />
j -= k;<br />
k &gt;&gt;= 1;<br />
}<br />
j += k;<br />
}<br />
/* Compute the FFT */<br />
double c1 = -1.0;<br />
double c2 = 0.0;<br />
uint8_t l2 = 1;<br />
for (uint8_t l = 0; (l &lt; power); l++) {<br />
uint8_t l1 = l2;<br />
l2 &lt;&lt;= 1;<br />
double u1 = 1.0;<br />
double u2 = 0.0;<br />
for (j = 0; j &lt; l1; j++) {<br />
for (uint16_t i = j; i &lt; samples; i += l2) {<br />
uint16_t i1 = i + l1;<br />
double t1 = u1 * vReal[i1] &#8211; u2 * vImag[i1];<br />
double t2 = u1 * vImag[i1] + u2 * vReal[i1];<br />
vReal[i1] = vReal[i] &#8211; t1;<br />
vImag[i1] = vImag[i] &#8211; t2;<br />
vReal[i] += t1;<br />
vImag[i] += t2;<br />
}<br />
double z = ((u1 * c1) &#8211; (u2 * c2));<br />
u2 = ((u1 * c2) + (u2 * c1));<br />
u1 = z;<br />
}<br />
c2 = sqrt((1.0 &#8211; c1) / 2.0);<br />
if (dir == FFT_FORWARD) {<br />
c2 = -c2;<br />
}<br />
c1 = sqrt((1.0 + c1) / 2.0);<br />
}<br />
/* Scaling for reverse transform */<br />
if (dir != FFT_FORWARD) {<br />
for (uint16_t i = 0; i &lt; samples; i++) {<br />
vReal[i] /= samples;<br />
vImag[i] /= samples;<br />
}<br />
}<br />
}<br />
void arduinoFFT::ComplexToMagnitude(double *vReal, double *vImag, uint16_t samples)<br />
{<br />
/* vM is half the size of vReal and vImag */<br />
for (uint8_t i = 0; i &lt; samples; i++) {<br />
vReal[i] = sqrt(sq(vReal[i]) + sq(vImag[i]));<br />
}<br />
}</p>
<p>void arduinoFFT::Windowing(double *vData, uint16_t samples, uint8_t windowType, uint8_t dir)<br />
{<br />
/* Weighing factors are computed once before multiple use of FFT */<br />
/* The weighing function is symetric; half the weighs are recorded */<br />
double samplesMinusOne = (double(samples) &#8211; 1.0);<br />
for (uint16_t i = 0; i &lt; (samples &gt;&gt; 1); i++) {<br />
double indexMinusOne = double(i);<br />
double ratio = (indexMinusOne / samplesMinusOne);<br />
double weighingFactor = 1.0;<br />
/* Compute and record weighting factor */<br />
switch (windowType) {<br />
case FFT_WIN_TYP_RECTANGLE: /* rectangle (box car) */<br />
weighingFactor = 1.0;<br />
break;<br />
case FFT_WIN_TYP_HAMMING: /* hamming */<br />
weighingFactor = 0.54 &#8211; (0.46 * cos(twoPi * ratio));<br />
break;<br />
case FFT_WIN_TYP_HANN: /* hann */<br />
weighingFactor = 0.54 * (1.0 &#8211; cos(twoPi * ratio));<br />
break;<br />
case FFT_WIN_TYP_TRIANGLE: /* triangle (Bartlett) */<br />
weighingFactor = 1.0 &#8211; ((2.0 * abs(indexMinusOne &#8211; (samplesMinusOne / 2.0))) / samplesMinusOne);<br />
break;<br />
case FFT_WIN_TYP_BLACKMAN: /* blackmann */<br />
weighingFactor = 0.42323 &#8211; (0.49755 * (cos(twoPi * ratio))) + (0.07922 * (cos(fourPi * ratio)));<br />
break;<br />
case FFT_WIN_TYP_FLT_TOP: /* flat top */<br />
weighingFactor = 0.2810639 &#8211; (0.5208972 * cos(twoPi * ratio)) + (0.1980399 * cos(fourPi * ratio));<br />
break;<br />
case FFT_WIN_TYP_WELCH: /* welch */<br />
weighingFactor = 1.0 &#8211; sq((indexMinusOne &#8211; samplesMinusOne / 2.0) / (samplesMinusOne / 2.0));<br />
break;<br />
}<br />
if (dir == FFT_FORWARD) {<br />
vData[i] *= weighingFactor;<br />
vData[samples - (i + 1)] *= weighingFactor;<br />
}<br />
else {<br />
vData[i] /= weighingFactor;<br />
vData[samples - (i + 1)] /= weighingFactor;<br />
}<br />
}<br />
}</p>
<p>double arduinoFFT::MajorPeak(double *vD, uint16_t samples, double samplingFrequency)<br />
{<br />
double maxY = 0;<br />
uint16_t IndexOfMaxY = 0;<br />
for (uint16_t i = 1; i &lt; ((samples &gt;&gt; 1) &#8211; 1); i++) {<br />
if ((vD[i-1] &lt; vD[i]) &amp;&amp; (vD[i] &gt; vD[i+1])) {<br />
if (vD[i] &gt; maxY) {<br />
maxY = vD[i];<br />
IndexOfMaxY = i;<br />
}<br />
}<br />
}<br />
double delta = 0.5 * ((vD[IndexOfMaxY-1] &#8211; vD[IndexOfMaxY+1]) / (vD[IndexOfMaxY-1] &#8211; (2.0 * vD[IndexOfMaxY]) + vD[IndexOfMaxY+1]));<br />
double interpolatedX = ((IndexOfMaxY + delta) * samplingFrequency) / (samples-1);<br />
/* retuned value: interpolated frequency peak apex */<br />
return(interpolatedX);<br />
}</p>
<p>/* Private functions */</p>
<p>void arduinoFFT::Swap(double *x, double *y)<br />
{<br />
double temp = *x;<br />
*x = *y;<br />
*y = temp;<br />
}</p>
<p>uint8_t arduinoFFT::Exponent(uint16_t value)<br />
{<br />
/* Computes the Exponent of a powered 2 value */<br />
uint8_t result = 0;<br />
while (((value &gt;&gt; result) &amp; 1) != 1) result++;<br />
return(result);<br />
}</p>
</div>
<span style="color: #008080"><strong>4.5. 참조</strong></span><br />
· <a href="http://news.kmib.co.kr/article/view.asp?arcid=0012277815" target="_blank">국민일보 ‘층간소음, 윗집이 남기고 간 메모 때문에’ : </a><br />
· <a href="https://bbangpan.tistory.com/46" target="_blank">약한 진동까지 감지할 수 있는Piezo Disk Vibration Sensor(피에조 디스크 진동 센서) :</a><br />
·<a href="https://m.blog.naver.com/PostView.nhn?blogId=eduino&amp;logNo=221130299439&amp;proxyReferer=http%3A%2F%2Fwww.google.com%2Furl%3Fsa%3Di%26rct%3Dj%26q%3D%26esrc%3Ds%26source%3Dimages%26cd%3D%26ved%3D2ahUKEwjoxOjklZDhAhUG5rwKHdZ8C38Qjhx6BAgBEAM%26url%3Dhttp%253A%252F%252Fm.blog.naver.com%252Feduino%252F221130299439%26psig%3DAOvVaw1vZnVPafvLEAIR7tuQR4sj%26ust%3D1553152326948501" target="_blank"> [아두이노 강좌] 8 x8 도트 매트릭스 사용하기</a> :<br />
· <a href="https://github.com/kosme/arduinoFFT" target="_blank">아두이노 FFT 오픈소스 라이브러리 (arduinoFFT) </a>:</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38512/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[60호]유니케어(스파인키퍼)</title>
		<link>http://www.ntrexgo.com/archives/38503</link>
		<comments>http://www.ntrexgo.com/archives/38503#comments</comments>
		<pubDate>Tue, 30 Jun 2020 00:00:46 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[특집]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[ict]]></category>
		<category><![CDATA[공모전]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[프로젝트]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=38503</guid>
		<description><![CDATA[디바이스마트매거진 60호 &#124; 궁극적으로 허리통증으로 불편함을 겪는 사람들이 간편하게 올바른 자세를 유지 할 수 있도록 IoT 헬스케어 솔루션을 제공하는 헬스케어 플랫폼을 준비하고자 한다.]]></description>
				<content:encoded><![CDATA[<p><strong style="font-size: large"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-1.png" rel="lightbox[38503]"><img class="alignnone size-large wp-image-38604" alt="60 ict 유비케어 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-1-620x184.png" width="620" height="184" /></a></strong></p>
<p><span style="font-size: large"><strong>2019 ICT 융합 프로젝트 공모전 참가상</strong></span></p>
<p><span style="font-size: x-large"><strong>유니케어(스파인키퍼)</strong></span></p>
<p style="text-align: right">글 | 고려대학교 신승우, 김율, 김준, 한유경</p>
<p style="text-align: right">
<p><span style="color: #0000ff"><strong>1. 심사평</strong></span><br />
칩센 자세 데이터를 입력받아 사용자에게 잘못된 자세에 대한 교정을 하게 하고, 누적 데이터를 이용하여 사용자에게 맞는 스트레칭 방법 제시 등으로 헬스케어링 솔루션을 할 수 있도록 하게 하는 장치로 보입니다. 제품의 서비스가 운용되기 이전에 어느 정도 안정화되고 일반화된 DB를 구축하고, 사용자에게 적절한 sign을 줄수 있는 기본 데이터 구축이 관건으로 보입니다. 개발 작품의 개념과 소프트웨어 적인 부분은 보고서를 통해 어느정도 이해를 할 수 있으나, 실제 하드웨어나 제품의 정보가 부족하여 평가를 진행하는 데 어려움이 있습니다.<br />
뉴티씨 자세는 삶을 살아가는 가운데 있는 매우 중요한 요소입니다. 이를 통해서, 몸의 형태가 달라지고, 건강에 큰 영향을 끼치게 됩니다. 이를 바로잡을 수 있는 장치를 방석 하나로 제안해줄 수 있다면 누구나 하나 정도 구매하고 싶지 않을까 싶습니다. 향후 좋은 제품이 되기를 바랍니다.<br />
위드로봇 제품의 기획은 뛰어나나 작품의 완성도가 부족한 부분이 많습니다. 좀 더 추가 연구가 필요합니다.<br />
펌테크 아이디어와 실용성을 갖춘 작품이라고 생각이 듭니다. 단 제출된 보고서 내용을 고려하자면 작품에 대한 기획의도는 우수하다고 생각되지만 계획에 대비해서 출품작의 진행과정이나 완성도를 확인할 수가 없었습니다</p>
<p><span style="color: #0000ff"><strong>2. 개요</strong></span><br />
<span style="color: #3366ff"><strong>2.1. 아이템 소개</strong></span><br />
· 올바른 자세를 유도하는 H/W와 맞춤형 스트레칭 콘텐츠를 제공하는 S/W로 구성된 스마트 헬스케어 IoT 서비스입니다.<br />
· H/W에서 얻은 표준데이터를 기점으로 압력에 따라 사용자의 자세를 측정하고 분석하며 이에 대한 데이터를 클라우드 서버로 수신합니다.<br />
· S/W를 통하여 사용자는 자세에 대한 정보를 얻고 서비스 제공자는 전체 사용자 데이터를 활용하여 스트레칭 정보 제공 알고리즘에 활용합니다.<br />
· 성별, 연령, 직업특성 등 기본 정보에 따라 맞춤형 스트레칭 정보를 제공합니다.<br />
· Openpose 모델을 이용하여 사용자의 스트레칭 모션에 대한 실시간 음성 피드백을 제공합니다.</p>
<p><span style="color: #3366ff"><strong>2.2. 아이템의 차별성</strong></span><br />
· H/W를 통하여 자세 측정 및 분석에 그치는 것이 아니라 애플리케이션을 통하여 개개인의 데이터에 따라 맞춤형 근력 강화 운동 및 스트레칭 콘텐츠 제공합니다.<br />
· 실생활에 편리한 방석형 하드웨어로 방석에 센서가 분포되어 있어 착용형 디바이스보다 오차 범위가 작고, 정확하고 세밀한 자세 측정이 가능합니다.</p>
<p><span style="color: #3366ff"><strong>2.3. 국내외 목표시장</strong></span><br />
· 앉아있는 시간이 많은 28~39세의 직장인을 주요 타겟으로, 14~27세의 학생 및 장시간 앉아있고 척추 건강에 관심이 많은 세그먼트를 서브 타겟으로 설정하여 국·내외 스마트 헬스케어 시장 접근합니다.<br />
· 국·내외 클라우드 펀딩을 기반으로 국내 온라인 판매, B2B영업 및 복지몰 입점, Amazon.com 입점 등으로 성공적인 판매 유통 라인 구축합니다.</p>
<p><span style="color: #0000ff"><strong>3. 개발목표</strong></span><br />
저희의 개발목표는 허리통증으로 불편함을 겪는 사람들이 간편하게 올바른 자세를 유지 할 수 있도록 IoT 헬스케어 솔루션을 제공하는 헬스케어 플랫폼을 준비하는 것입니다. 이를 위해 데이터, 성능, 디자인에서의 목표를 설정하였습니다. 이러한 목표를 달성하기 위해 저희는 저희의 개발의 비전의 개념도를 그려보았습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-2.png" rel="lightbox[38503]"><img class="alignnone size-full wp-image-38605" alt="60 ict 유비케어 (2)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-2.png" width="609" height="398" /></a></p>
<p><span style="color: #3366ff"><strong>3.1. 아이템 개발동기 및 목적(필요성)</strong></span><br />
<span style="color: #008080"><strong>3.1.1. 아이템 개발 동기</strong></span><br />
◦ 기하급수적으로 증가하는 척추질환 환자<br />
· 장시간 움직이지 않은 상태로 앉아 있는 자세가 허리 긴장은 물론 노화를 가속화하고 척추에 무리를 더하기 때문에 허리통증이 발생합니다.<br />
· 2013년 775만 148명에서 2017년 863만 9712명으로 5년 간 척추 환자 88만 9564명 증가 (건강보험심사평가원 의료통계정보)<br />
· 2017년도 일반척추수술은 33개 주요 수술 분야 중 수술 비용 6천74억원으로 1위, 다빈도 수술 17만2천429건으로 3위 차지 (국민건강보험공단)<br />
◦ 잘못된 자세와 생활 습관이 척추 질환에 끼치는 영향<br />
· 구부정한 자세는 바른자세에 비해 1.5~3배 가량의 압력이 척추에 가해지며, 하루 평균 앉아서 지내는 시간은 7시간 30분인 것을 감안하면 구부정한 자세로 장시간 노출 될 경우 척추와 주변 신경에 긴장감을 주어 척추질환으로 이어질 수 있습니다.<br />
· 필라테스, 요가, PT 등은 비용적, 시간적, 공간적 제약이 따름으로 올바른 자세와 생활 습관을 개선하고 교정하기 위해선 지속적인 노력과 개개인에 맞춘 명확한 헬스케어 솔루션 필요합니다.</p>
<p><span style="color: #008080"><strong>3.1.2. 아이템 목적(필요성)</strong></span><br />
◦ 데이터 기반 자세 측정 및 분석<br />
· 내장된 압력 센서로부터 사용자들의 자세를 분석하고 사용자에 맞는 최적의 자세와 근력강화 운동 및 스트레칭 컨텐츠를 제공함으로서 척추질환을 예방하고 스마트 디지털 라이프 스타일 도약<br />
◦ 기존 자세분석 IoT의자 경쟁사의 한계점<br />
· ‘듀오백온’의 장점은 높은 퀄리티의 CMF 디자인과 인체공학적인 설계로 편한 착용감을 제공하지만 애플리케이션(S/W)의 부제와 사용자의 자세 데이터를 축적하는 Tracking Mode 기능만 제공하기 때문에 자세를 교정하는데 취약합니다.<br />
· SeatLogger(싯로거)는 PCB 설계가 잘 되어있어 정확한 측정이 가능하지만 진동 알림을 주는 Training Mode가 과다하여 사용자에게 편안함을 주지 못하는 한계점이 있습니다.<br />
◦ 단점을 보완하고 장점은 극대화<br />
· 사용자에게 편안한 착석감은 물론 정확한 측정이 가능하고 User Friendly한 S/W 인터페이스를 제공함으로서 사용자 본인이 언제든지 자신의 자세파악 및 Training과 Tracking 모드를 선택 가능하게 하고 알림 주기 설정 등의 옵션을 제공을 통해 사용자를 고려한 서비스를 제공합니다.<br />
· 기존 자세분석 IoT기구들은 사용자의 자세 분석에 그치는 반면 자사 제품은 사용자들의 자세 분석 및 자세 분석을 토대로 개개인에게 맞는 스트레칭 콘텐츠 제공 및 피드백을 줌으로써 지속적인 케어 서비스를 제공한다는 점에서 가장 큰 차별점을 가집니다.</p>
<p><span style="color: #3366ff"><strong>3.2. 아이템 기술성 및 우수성</strong></span><br />
◦ 제품·서비스 운영 시나리오</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>자세 불균형도 계산 : FRS 센서와 로드 셀센서를 활용하여 방석에서 사용자 자세의 불균형도 계산<br />
자세 불균형 알림 : 자시 불균형시 알림과 1시간에 한번씨 휴식 및 스트레칭 신호 전송<br />
스트레칭 정보 제공 : 사용자의 앉아 있는 자세를 추정하여 사용자의 다른 신체정보와 결합(사용자에게 맞는 최적의 스트레칭 방법을 제공)<br />
사용자의 자세 확인 : 애플리케이션을 통해 사용자는 자세습관, 실리는 무게, 앉아있는 시간, 몸을 움직이는 빈도 등의 자세에 대한 다양한 정보 확인 가능<br />
사용자 간의 자세정보 공유 : 클라우드를 통해 사용자의 자세, 스트레칭 정보 등을 공유, 전문가와 사용자의 정보 공유를 통해 전문적인 헬스케어 솔루션 제</p>
</div>
<p>◦ 제품·서비스 핵심 요소</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>라즈베리파이 : FSR센서 등의각종 부속품과 프로그램을 연결해주는 플랫폼 역할을 수행<br />
FRS센서 : 방석에 가해지는 압력 측정에 따른 사용자의 자세 데이터 측정<br />
애플리케이션 : 입력 받은 자세 데이터를 활용하여 사용자에게 바른 자세와 스트레칭 방법을 제시<br />
클라우드 : 각 사용자의 제품에서 FSR센서를 통해 데이터와 이에 제공되는 솔루션 데이터 공유</p>
</div>
<p>◦ H/W 개발</p>
<div id="attachment_38641" class="wp-caption alignnone" style="width: 630px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-18-50-029.png" rel="lightbox[38503]"><img class="size-large wp-image-38641" alt="Cap 2020-10-23 10-18-50-029" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-18-50-029-620x532.png" width="620" height="532" /></a><p class="wp-caption-text">PCB기판</p></div>
<p>· 사용자 자세 데이터를 압력 센스가 내장된 하드웨어로 얻어 Cloud Server로 수신 후 표준데이터 기점으로 자세를 측정하고 분석합니다.<br />
· 센서 : FSR센서, 진동센서, 로드셀, 가속도센서로 구성되어 사용자의 움직임을 감지하고 프로세서의 제어에 따라 입·출력합니다.</p>
<div id="attachment_38642" class="wp-caption alignnone" style="width: 630px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-18-59-526.png" rel="lightbox[38503]"><img class="size-large wp-image-38642" alt="센서 개요도" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-18-59-526-620x260.png" width="620" height="260" /></a><p class="wp-caption-text">센서 개요도</p></div>
<p>· 프로세서 : BCM2835, ATmega328로 구성, 센서들을 제어하고 통신 데이터를 송·수신합니다.</p>
<div id="attachment_38643" class="wp-caption alignnone" style="width: 630px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-05-359.png" rel="lightbox[38503]"><img class="size-large wp-image-38643" alt="프로세서 개요도" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-05-359-620x305.png" width="620" height="305" /></a><p class="wp-caption-text">프로세서 개요도</p></div>
<p>· 통신 : ESP8266, IMP005로 구성되어 프로세서에서 가공한 데이터를 WI-FI 또는 블루투스의 형태로 수·발신합니다.</p>
<div id="attachment_38644" class="wp-caption alignnone" style="width: 630px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-12-110.png" rel="lightbox[38503]"><img class="size-large wp-image-38644" alt="통신 개요도" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-12-110-620x314.png" width="620" height="314" /></a><p class="wp-caption-text">통신 개요도</p></div>
<div id="attachment_38645" class="wp-caption alignnone" style="width: 630px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-18-244.png" rel="lightbox[38503]"><img class="size-large wp-image-38645" alt="MQTT 개요도" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-18-244-620x370.png" width="620" height="370" /></a><p class="wp-caption-text">MQTT 개요도</p></div>
<p>&nbsp;</p>
<p>◦ S/W 개발</p>
<p>· 애플리케이션을 통해 사용자는 자신의 자세 정보를 얻고 서비스 제공자는 전체 사용자 데이터를 활용하여 스트레칭 정보 제공의 알고리즘에 활용합니다.<br />
· 디바이스 (사용자기기) : 사용자에게서 수집된 데이터를 정리하고 사용자와 물리적으로 소통합니다.</p>
<div id="attachment_38646" class="wp-caption alignnone" style="width: 630px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-28-409.png" rel="lightbox[38503]"><img class="size-large wp-image-38646" alt="디바이스 개요도" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-28-409-620x452.png" width="620" height="452" /></a><p class="wp-caption-text">디바이스 개요도</p></div>
<p>· 서버(클라우드) : 인터넷 통신을 통해 디바이스에서 받은 데이터를 출력하고, 그에 대한 아웃풋을 보냅니다.</p>
<div id="attachment_38647" class="wp-caption alignnone" style="width: 630px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-35-259.png" rel="lightbox[38503]"><img class="size-large wp-image-38647" alt="서버 개요도" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/Cap-2020-10-23-10-19-35-259-620x283.png" width="620" height="283" /></a><p class="wp-caption-text">서버 개요도</p></div>
<p>· S/W는 앉아있는 자세, 앉아있는 시간, 둔부에 실리는 무게, 몸을 움직이는 빈도 등의 데이터를 수집하고, 서버를 통한 실시간 동기화, 알고리즘에 따른 자세 추정, 사용자 데이터 다운로드, 자체 알고리즘 업데이트 등을 운영합니다.</p>
<p>◦ 콘텐츠 서비스<br />
사용자의 동의로 얻은 기본 정보인 성별, 연령, 직업, 특성 등은 하드웨어로 수집된 자세 정보에 따라 맞춤형 스트레칭 가이드를 제공합니다.<br />
· 자체 제작한 전문가 스트레칭 학습 영상을 제공합니다.<br />
· Openpose Model을 이용하여 사용자의 스트레칭 모션에 대한 음성 피드백을 제공합니다.</p>
<p><span style="color: #3366ff"><strong>3.3. 아이템 시장분석 및 경쟁력 확보방안</strong></span><br />
◦ 실생활에서 편리하게 사용할 수 있는 방석형 하드웨어입니다,<br />
· 별도로 착용하는 형태가 아닌 일상생활에서 사용하는 방석에 스마트 하드웨어를 결합합니다.<br />
◦ 방석형 하드웨어를 통하여 보다 정확한 자세 측정이 가능합니다.<br />
· 방석에 센서가 분포되어 있어 착용형 디바이스보다 오차 범위가 작고, 보다 정확하고 세밀한 자세 측정이 가능합니다.<br />
◦ 하드웨어와 소프트웨어의 융합으로 바른 자세를 돕는 스마트 헬스케어 서비스를 제공합니다.<br />
· 하드웨어와 소프트웨어의 융합을 통하여 구부정한 자세에서 알람을 제공하는 1차원적인 형태에서 발전하여, 사용자의 자세를 분석하고, 맞춤형 스트레칭 가이드 제공을 통하여 스마트 헬스케어 서비스를 구축합니다.<br />
◦ 합리적인 가격으로 정확하고 체계적인 솔루션을 제공합니다.<br />
· 권장 소비자가 99,000원(예정)과 스트레칭 애플리케이션 기본 콘텐츠 무료 제공을 통하여 합리적인 가격으로 소비자 솔루션을 제공합니다.<br />
· 스마트 의자를 제공하는 시디즈는 20만원 후반대, 듀오백은 20만원~30만원 후반대로 방석과 기존 의자 제품이 결합 된 일체형이며, 제공 소프트웨어가 있을 경우 자세 분석에 그칩니다.</p>
<p><span style="color: #3366ff"><strong>3.4. 시뮬레이션</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-4.png" rel="lightbox[38503]"><img class="alignnone size-full wp-image-38607" alt="60 ict 유비케어 (4)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-4.png" width="609" height="355" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-5.png" rel="lightbox[38503]"><img class="alignnone size-full wp-image-38608" alt="60 ict 유비케어 (5)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-5.png" width="609" height="335" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-6.png" rel="lightbox[38503]"><img class="alignnone size-full wp-image-38609" alt="60 ict 유비케어 (6)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-유비케어-6.png" width="609" height="428" /></a></p>
<p><span style="color: #3366ff"><strong>3.5. 시장진입 전략</strong> </span><br />
◦ 내수시장 타겟<br />
· 주요 타겟 : 28~39세의 직장인<br />
· 서브 타겟 : 14~27세의 학생 및 장시간 앉아서 생활을 하며 척추 건강에 관심이 많은 사람<br />
◦ 합리적 가격 : 권장소비자가 99,000원 설정<br />
◦ 성공적인 클라우드 펀딩을 통하여 내수시장 진입<br />
◦ B2C 시장 : 온라인 판매 라인 확충 및 온라인 마케팅 활성화<br />
· 네이버 스토어팜을 기반으로 온라인 판매 시스템 구축<br />
· 주요 타겟을 대상으로 구매푸쉬형 온라인 광고 진행<br />
· 온라인 판매 라인 구축 후 백화점, 박람회 등의 오프라인 판매 순차적 진입<br />
◦ B2B 시장 : 병원, 콜센터, 운전 관련 업종 대상<br />
· 장시간 앉아서 근무하는 환경 업종을 대상으로 B2B 영업 진행<br />
· 헬스케어 및 B2B 관련 박람회 적극적 참여<br />
· 국내 기업의 복지몰 입점<br />
◦ 영미권 시장 현황<br />
· 미국의 헬스케어 지출은 2017년 약 1만633달러로, 향후 2021년까지 연간 3% 증가해 1만1982달러에 달할 것으로 예측 (Statista, Kotra)<br />
· 2016년 기준 피트니스 애플리케이션의 매출은 약 4억3300만 달러, 피트니스 웨어러블 기기의 매출은 약 7억5900만 달러로 집계 (Statista, Kotra)<br />
· 생활보조 디바이스는 2016년 기준 3억6600만 달러의 매출을 창출했으며, 앞으로 빠른 속도로 성장해 2021년 23억 달러의 규모로 성장하게 될 것으로 전망 (Statista, Kotra)<br />
◦ 영미권 클라우드 펀딩을 통하여 해외시장 홍보 및 진입<br />
· 영미권 클라우드 펀딩 ‘킥스타터’ 프로젝트 진행<br />
· 펀딩 프로젝트 전후 홍보 블로그 글 배포, 오피니어 및 블로거 체험 시제품 배송<br />
◦ 영미권 시장 온라인 유통 시장 확보<br />
· 아마존(Amazon) 입점 및 영미권 국가 대상 온라인 광고 진행</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38503/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[60호]시각장애인 안전 지킴이</title>
		<link>http://www.ntrexgo.com/archives/38507</link>
		<comments>http://www.ntrexgo.com/archives/38507#comments</comments>
		<pubDate>Tue, 30 Jun 2020 00:00:44 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[ict]]></category>
		<category><![CDATA[공모전]]></category>
		<category><![CDATA[디바이스마트매거진]]></category>
		<category><![CDATA[융합]]></category>
		<category><![CDATA[참가상]]></category>
		<category><![CDATA[프로젝트]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=38507</guid>
		<description><![CDATA[디바이스마트매거진 60호 &#124; 시각장애인들이 정확한 방향을 찾아갈 수 있도록 도와주는 디바이스를 설계하였다.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-46-19-345.png" rel="lightbox[38507]"><img class="alignnone size-large wp-image-38675" alt="Cap 2020-09-07 14-46-19-345" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-46-19-345-620x186.png" width="620" height="186" /></a></p>
<p><strong>2019 ICT 융합 프로젝트 공모전 참가상</strong></p>
<p><span style="font-size: x-large"><strong>시각장애인 안전 지킴이</strong></span></p>
<p style="text-align: right">글 | 광운대학교 백현은, 김주원</p>
<p><span style="color: #0000ff"><strong>1.심사평</strong></span><br />
칩센 시각 장애인과 같은 사회적 약자들에게 도움이 될 수 있는 많은 방안이 준비되고 있습니다. &#8220;시각 장애인 안전 지킴이&#8221; 또한 그러한 의도로 기획이 되었으리라는 것을 충분히 알 수 있습니다만, 몇 가지 고려되지 않은 부분들이 보여 아쉬움이 있습니다. Device2의 경우 사용자가 소유하고 다녀야 하는데, 그것을 고려하면 최소화 및 경량화가 필요할 것으로 보입니다. 이를 위해 다양한 방안이 있겠으나, 이어폰 적용 등을 고려했으면 어떠했을까 하는 아쉬움이 듭니다. 그리고 제작 과정상에 나타난 문제점으로 여러 peripheral을 연동하여 동작하는데 조금은 불안한 형태가 보입니다. 기능별 모듈 등을 적용하는데 조금 더 신중하게 검토가 필요할 것으로 보입니다. 조금 더 안정된 제품을 위한 연구가 추가로 진행되면 좋을 듯 합니다.<br />
뉴티씨 해당 기능을 실제로 구현하는 것은 핸드폰에 기능을 넣어도 좋지 않을까 생각해 보았습니다. 핸드폰용 어플로 제작을 해서, 해당 기능의 일부분을 구현해 준다면 시각장애인들에게 도움이 되지 않을까 하고, 실제로 많이 쓰이는 필수 어플로 등극하기를 기대해 봅니다.<br />
위드로봇 GPS 정밀도에 대한 대책이 추가되면 더욱 좋은 작품이 될 것 같습니다.<br />
펌테크 작품의 아이디어가 돋보이며 추후 작품을 발전시키면 실제 시각장애인에게서 활용이 가능한 제품이 될 수 있으리라 생각이 듭니다. 단 사용자가 사용할 디바이스의 경우 아두이노로 구성된 디바이스가 아닌 편의성과 휴대성을 갖춘 스마트폰으로 구성이 되어야 좀더 완성도 높은 작품이 되지 않을까 생각이 듭니다. 제출된 문서 내용을 고려하자면 계획 대비 최종 완성이 되지는 않은 것으로 판단됩니다.</p>
<p><span style="color: #0000ff"><strong>2. 작품 개요</strong></span><br />
위험한 도로를 이용하는 시각장애인을 보고 있으면 사고가 나지는 않을까 하는 불편한 마음이 들었고 시각장애인이 길을 건널 때에는 도움을 주지 않을 수 없었습니다. 또, 시각장애인들을 위한 점자 블록들은 보도 공사 후 다시 제자리를 찾지 못하여 제 기능을 못 하거나, 심지어는 도시 미관을 해친다는 이유로 없애기도 합니다. 그래서 시각장애인들이 잘못된 점자로 인한 위험에 처할 일이 없는, 점자블록이 없는 보도에서 정확한 방향을 찾아갈 수 있도록 도와주는 휴대 가능한 디바이스(이하 디바이스1)를 설계하고자 했습니다.<br />
시각장애인들을 안전한 방향으로 안내해 줄 휴대용 디바이스를 설계할 것에 더하여, 횡단보도가 있음에도 알지 못하여 돌아가는 일이 없도록, 또, 시각장애인용 음성안내 버튼을 찾아 헤매며 위험한 상황에 처하는 일이 없도록 하기 위해, 시각장애인이 건널목 근방에 오면 자동으로 음성 안내가 시작되고 멀어지면 음성 출력을 하지 않는 장치(이하 디바이스2)를 설계하고자 했습니다.<br />
두 가지 장치(디바이스1과 디바이스2)가 서로 통신하며 시각장애인들의 안전한 보행을 보장해줄 수 있는 작품을 설계하는 것을 목표로 프로젝트를 진행 하였습니다.</p>
<p><span style="color: #0000ff"><strong>3. 작품 설명</strong></span><br />
<span style="color: #33cccc"><strong>3.1 주요 동작 및 특징</strong></span><br />
<strong> 3.1.1. Device 1 동작</strong><br />
보행자 디바이스는 크게 두 가지 가능을 수행합니다. 첫번째 기능은 위성통신과 지자기센서로 읽은 값을 이용하여 디바이스의 화살표가 보도를 가리키도록 합니다. 그리고, 보행자의 위치가 건널목 주변인 경우(GPS로 알 수 있음.) 건널목이 있음을 알리기 위해 모터를 좌 우로 회전시키는 방식으로 진동을 만들어 보행자에게 건널목임을 알려줍니다. 두번째 기능은 신호등에 부착된 Device2와 무선 통신하여 보행자가 신호등이 주변에 도달할 경우 신호등 디바이스에 주변에 있음을 알립니다.</p>
<p><strong>3.1.2. Device 2 동작</strong><br />
보행자 디바이스가 신호등 디바이스의 일정거리 이내로 들어오면 nRF를 이용한 무선통신을 하게 됩니다. 신호등과 동기화된 신호등 디바이스는 두 디바이스가 연결된 순간 신호등의 상태를 음성신호로 나타내 줍니다. 초록신호인 경우 남은 시간을 계산해 보행자가 건너기에 충분치 못한 시간이 남았을 경우 다음 신호를 기다리라는 안내를 내보낸 후 다음 초록불 신호를 알려줍니다. 건너기에 충분한 시간이 남았을 경우 기존 신호등 알리미가 내는 소리를 스피커로 출력해줍니다.<br />
위 Device1의 두 가지 기능과 Device2의 동작으로 시각장애인이 점자가 없거나 잘못된 보도에서도 안전하게 보행할 수 있도록 도움을 줄 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-46-31-361.png" rel="lightbox[38507]"><img class="alignnone size-large wp-image-38676" alt="Cap 2020-09-07 14-46-31-361" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-46-31-361-620x512.png" width="620" height="512" /></a></p>
<p><strong>3.1.3. Device 1. 보행자 휴대용 (processor: 1. Arduino Mega &amp; 2. Promicro)</strong><br />
1. GPS Module: 위치 정보 파악. -&gt; 보도별로 나아가 나아가는 방향을 분류<br />
2. Gyro Sensor: 방향 정보 파악. -&gt; 회전량 계산<br />
3. Servo Motor: 방향 정보 제시. -&gt; GPS에서 분류된 Case와 회전량을 계산하여 도로가 나아가는 방향으로 화살표가 가리키도록 모터 제어.<br />
4. RF Sensor: 무선통신. -&gt; Device 2로 송신<br />
사용 모듈 : Arduino Mega, Arduino Micro, GPS, MPU6050, nRF24l01, NEO 06M</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-46-41-011.png" rel="lightbox[38507]"><img class="alignnone size-large wp-image-38677" alt="Cap 2020-09-07 14-46-41-011" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-46-41-011-620x495.png" width="620" height="495" /></a></p>
<p><strong>3.1.4. Device 2. 신호등 부착용 (processor: 1. Arduino Uno)</strong><br />
1. NRF Sensor: 무선통신 -&gt; Device １으로부터 수신 (통신거리에 Device 1 이 들어 올시)<br />
2. DFPlayer mini: mp3 파일 저장 -&gt; 시간정보를 주는 millis() 함수를 이용하여 시간에 맞는 소리 출력 (빨간불, 파란불)<br />
3. Speaker: 소리 신호 알림 -&gt; SDPlayer mini의 data를 소리로 출력<br />
사용 모듈 : Arduino UNO, DFPlayer mini, nRF24l01</p>
<p><span style="color: #0000ff"><strong>4. 개발 환경</strong></span><br />
<strong>4.1.1. Device 2 중요 코드 설명</strong></p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p>void loop() {</p>
<p>printFloat1(gps.location.lat(), gps.location.isValid(), 11, 10);<br />
printFloat(gps.location.lng(), gps.location.isValid(), 12, 10);<br />
c=a+b;<br />
Serial.println(c);<br />
motorControl = c;<br />
if (millis() &gt; 5000 &amp;&amp; gps.charsProcessed() &lt; 10){<br />
Serial.println(F(&#8220;No GPS data received: check wiring&#8221;));<br />
}</p>
<p>if (mpuInterrupt ) {<br />
GetDMP();<br />
}<br />
if ( motorControl == 101 || motorControl == 304 || motorControl == 405 || motorControl == 709 || motorControl == 109 ) { // GPS case0 == 90<br />
if(-180&lt;Yaw&amp;&amp;Yaw&lt;-90) { // Target Angle : -90 &#8211; Yaw<br />
targetAngle = -90 &#8211; Yaw;<br />
}<br />
else if(-90&lt;=Yaw&amp;&amp;Yaw&lt;90) { // Target Angle : 90 &#8211; Yaw<br />
targetAngle = 90 &#8211; Yaw;<br />
}<br />
else if(90&lt;=Yaw&amp;&amp;Yaw&lt;180) { //Target Angle : 270 &#8211; Yaw<br />
targetAngle = 270 &#8211; Yaw;<br />
}</p>
<p>if(targetAngle&gt;angle) {<br />
angle++;<br />
}<br />
else if (targetAngle &lt; angle) {<br />
angle&#8211;;<br />
}<br />
servo.write(180-angle);<br />
}<br />
else if( motorControl == 813 || motorControl == 713 ) {</p>
</div>
<p>GPS의 위도와 경도를 &#8220;TinyGPS++.h&#8221;에 있는 gps.location.lat()와 gps.location.lng() 함수를 이용하여 받아옵니다. 그리고 받아온 값을 이용하여 &#8216;미리 나누어 놓은 일정 범위의 GPS값&#8217;(학교주변)에 대입하고 값으로 받고 (경도 * 100 + 위도) 값을 변수 c에 저장합니다. 그 후 &#8220;MPU6050_6Axis_MotionApps20.h&#8221;를 이용하여 만든 GetDMP()를 사용하여 디바이스의 Yaw(초기로부터의 회전)값을 설정합니다. 마지막으로 GPS정보인 c값과 자이로정보인 yaw값을 이용하여 Servo를 컨트롤합니다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>void loop(){</p>
<p>mp3.setVolume(5);</p>
<p>if(Serial.write(9))<br />
{ callTime=millis();<br />
exeTime=callTime/1000;<br />
callee=exeTime%78;</p>
<p>if( (0&lt;=callee) &amp;&amp; callee&lt;=53)<br />
{ Red=53-callee;<br />
r=Red*1000;<br />
Serial.println(&#8220;RED&#8221;);<br />
mp3.playMp3FolderTrack(1); // sd:/mp3/0001.mp3<br />
waitMilliseconds(r);</p>
<p>Serial.println(&#8220;NOW YOU CAN GO(CHANGE TO GREEN)&#8221;);<br />
mp3.playMp3FolderTrack(2);<br />
waitMilliseconds(25000);<br />
}</p>
<p>if( (54 &lt;= callee) &amp;&amp; (callee &lt;78 ))<br />
{<br />
Green=78-callee;<br />
g=Green*1000;</p>
<p>if(Green&lt;15)<br />
{<br />
Serial.println(&#8220;WAIT UNTIL NEXT SIGNAL&#8221;);<br />
delay(g);<br />
}<br />
else{<br />
g=Green*1000;<br />
Serial.println(&#8220;GREEN&#8221;);<br />
mp3.playMp3FolderTrack(2);//sd:mp3.0002.mp3<br />
waitMilliseconds(g);}<br />
}<br />
}</p>
</div>
<p>신호등 디바이스는 신호등의 빨간불의 시작시간부터 동기가 맞춰져 있습니다. 케이스로 잡은 신호등은 빨간불이 53초 초록불이 25초로 설정되어 있습니다. 신호등은 78초의 주기를 가지고 있습니다.<br />
nRF통신이 연결되면 프로그램카운터의 시간(millis())을 읽어와 신호등의 상태를 계산합니다. Milliseconds를 초단위로 바꾸기 위해 1000으로 나눠 줍니다. 초로 계산된 시간은 신호등의 상태를 알기 위해 신호등의 주기인 78로 나누어 계산된 callee변수를 이용해 신호등의 상태를 아래 코드와 같이 출력해줍니다.<br />
초록색인 신호등이 건너기에 충분치 못한 시간이 남은 경우(15초 미만) 저장된 음성파일을 출력해줍니다.</p>
<p><span style="color: #0000ff"><strong>5. 단계별 제작 과정</strong></span><br />
<strong>5.1.1. 1주차 : 설계 시작</strong><br />
nRF 모듈 및 아두이노 구매 후, 무선통신으로 데이터 주고받는 코드를 작성합니다.<br />
무선통신이 이루어지지 않아 nRF24l01 모듈과 아두이노를 바꾸어 가며 해보았고 결국 와이어 문제임을 발견하여 문제를 해결합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-48-28-616.png" rel="lightbox[38507]"><img class="alignnone size-full wp-image-38678" alt="Cap 2020-09-07 14-48-28-616" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-48-28-616.png" width="184" height="150" /></a></p>
<p><strong>5.1.2. 2주차 : GPS 모듈</strong><br />
GPS모듈 NEO6M으로 위성에서 보내는 GPS 정보를 받아 실생활에서 사용하는 Google Earth에서 지도 확인결과 위성에서 보내는 값을 변환해야 함을 인지하였고, www.gonmand.co.uk 에서 값 변환 후 정확한 위치가 찍힘을 확인했습니다.</p>
<p><strong>5.1.3. 3주차 : 엡을 이용한 GPS 위치 정보 파악</strong><br />
더 정확한 위치 파악을 위해 안드로이드 App을 계발하여 GPS정보를 블루투스로 송신합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-48-40-894.png" rel="lightbox[38507]"><img class="alignnone size-large wp-image-38679" alt="Cap 2020-09-07 14-48-40-894" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-48-40-894-620x278.png" width="620" height="278" /></a></p>
<p><strong>5.1.4. 4주차 : 아두이노를 이용하여 GPS 정보 파악</strong><br />
시각 장애인들이 핸드폰을 사용하기에 무리가 있을 수 있으므로 핸드폰을 이용하지 않기로 하였고, Navigation처럼 이용 할 계획으로 GPS모듈 NEO 6M을 이용하여 광운대 주변을 Case분류하여 나눔니다.</p>
<p><strong>5.1.5. 5주차 : 자이로 센서를 이용하여 회전량 측정</strong><br />
이용자가 향하는 방향을 알 수 있어야 하므로 디바이스의 회전 정보를 측정하기 위해 지자기센서 이용합니다.<br />
지자기센서가 축의 기울기 DATA를 측정하는 것을 확인하고 오일러 변환을 통하여 회전 값으로 변환.(소프트웨어적 해결)합니다.</p>
<p><strong>5.1.6. 6주차 : 자이로 모터 연동</strong><br />
지자기센서를 이용하여 측정된 디바이스의 회전 값만큼 모터가 반대로 회전하여 화살표가 한 방향만 가르치도록 설계 후 GPS로 분류한 Case별로 화살표가 가리킬 방향을 설정합니다.</p>
<p><strong>5.1.7. 7주차 : 음성출력 코드 작성</strong><br />
두 nRF24l01 모듈의 통신을 이용하여 RTT(round trip time)값을 계산하여 두 디바이스간의 거리를 파악 한 후 일정 거리안에 들어오면 음성 출력을 하도록 설계 계획합니다. 구매한 nRF의 통신 거리가 사전 조사한 거리보다 많이 짧아 RTT값을 계산 할 필요 없이 통신이 될때 신호등에서 음성이 출력 되도록 한 후, DFPlayer mini 모듈과 음성 파일을 저장한 SD카드를 이용하여 적절한 시간에 필요한 음성파일이 출력 되도록 합니다.</p>
<p><strong>5.1.8. 8주차 : 아두이노 핀과 용량부족(uno -&gt; mega)</strong><br />
아두이노 우노에 nRF, GPS, 지자기, 모터를 집어 넣기에 프로세서의 용량이 부족함을 인지 하고 용량이 더 큰 마이크로 프로세서 보드인 아두이노 메가를 구매하기로 결정합니다.</p>
<p><strong>5.1.9. 9주차 : 서로 다른 프로세서간의 통신 문제발생 and 해결 UNO &amp; MEGA</strong><br />
UNO와 MEGA사이에 통신 문제 발생하였으나, 코드에서 통신을 제한하는 부분을 제거하여 문제를 해결합니다.</p>
<p><strong>5.1.10. 10주차 : 서로 다른 두 통신( GPS &amp; 나머지 ) 간의 Serial 문제 소프트웨어적 해결</strong><br />
GPS 위성통신과 프로세서의 Serial 통신간의 충돌 발생하여 기존에 아두이노에서 지원하던 softwareserial.h 헤더파일을 수정하여 문제를 해결합니다.</p>
<p><strong>5.1.11. 11주차 : 두 I2C 통신 모듈을 한 보드에 사용하여 충돌 발생</strong><br />
GPS와 nRF모듈의 충돌 발생, nRF를 작은 보드에 담아 동작시킵니다.</p>
<p><strong>5.1.12. 12주차 : 보고서 작성</strong><br />
회로도, 시각자료, 플로우 차트, 시각자료 보고서를 작성합니다.</p>
<p><span style="color: #0000ff"><strong>6. 전체 시스템 구성</strong></span><br />
<strong></strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-48-52-346.png" rel="lightbox[38507]"><img class="alignnone size-large wp-image-38680" alt="Cap 2020-09-07 14-48-52-346" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-48-52-346-620x569.png" width="620" height="569" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-48-58-995.png" rel="lightbox[38507]"><img alt="Cap 2020-09-07 14-48-58-995" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-48-58-995-620x574.png" width="620" height="574" /></a></p>
<p><span style="color: #0000ff"><strong>7. 회로도 및 완성작</strong></span><br />
<strong></strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-49-07-913.png" rel="lightbox[38507]"><img class="alignnone size-large wp-image-38682" alt="Cap 2020-09-07 14-49-07-913" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-49-07-913-611x620.png" width="611" height="620" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-49-17-127.jpg" rel="lightbox[38507]"><img class="alignnone size-large wp-image-38683" alt="Cap 2020-09-07 14-49-17-127" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-49-17-127-620x360.jpg" width="620" height="360" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-49-24-261.jpg" rel="lightbox[38507]"><img class="alignnone size-large wp-image-38684" alt="Cap 2020-09-07 14-49-24-261" src="http://www.ntrexgo.com/wp-content/uploads/2020/08/Cap-2020-09-07-14-49-24-261-620x363.jpg" width="620" height="363" /></a></p>
<p><span style="color: #0000ff"><strong>8. 참고문헌</strong></span><br />
· https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050<br />
· https://github.com/DFRobot/DFPlayer-Mini-mp3<br />
· https://github.com/nRF24/RF24<br />
· https://kocoafab.cc/make/view/657<br />
· http://jamcoding.me/22111073439<br />
· https://forum.arduino.cc/index.php?topic=385659.0<br />
· http://forum.arduino.cc/index.php?topic=219375.0</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38507/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[60호]안전거리 이격 시스템</title>
		<link>http://www.ntrexgo.com/archives/38505</link>
		<comments>http://www.ntrexgo.com/archives/38505#comments</comments>
		<pubDate>Tue, 30 Jun 2020 00:00:39 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[특집]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[ict]]></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=38505</guid>
		<description><![CDATA[디바이스마트 매거진 60호 &#124; 도로 유형마다 다른 안전거리에 대한 정보 전달과 운전석와 조수석에서 내용을 확인하고 감속을 하여 안전거리를 유지할 수 있도록 하는 시스템이다.]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p><strong style="font-size: large"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-1.png" rel="lightbox[38505]"><img class="alignnone size-large wp-image-38650" alt="60 ict 안전거리 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-1-620x184.png" width="620" height="184" /></a> </strong></p>
<p><strong style="font-size: large">2019 ICT 융합 프로젝트 공모전 참가상</strong></p>
<p><span style="font-size: x-large"><strong>안전거리 이격 시스템</strong></span></p>
<p style="text-align: right">글 | 명지대학교 이경수</p>
<p><span style="color: #0000ff"><strong>1. 심사평</strong></span><br />
칩센 차량 안전 시스템에서 가장 기본적으로 적용되고 있는 형태가 개발 작품과 같은 형태입니다. 다만 여기에서 중요한 부분은 차량은 꼭 정지된 피사물이 아닌 움직이는 상대장치가 함께 존재한다는 것이고, 이것에 대하여 수많은 예외 상황이 존재하게 됩니다. 이러한 부분을 보완하고자 수많은 센싱 솔루션들이 검토되고 있고, 개발 작품에도 한가지의 방안뿐 아니라 다른 센싱 방안에 대하여 추가 고려하여 변수에 대한 최소화를 하는 과정이 있었으면 더 좋을 듯 합니다.<br />
뉴티씨 안전에 대한 자동차와 관련된 시스템은 매우 다양한 종류가 있으며, 최근 라이다 등을 이용한 연구도 그 중 하나입니다. 앞차와의 안전거리 등을 알고 사고가 나지 않도록 정지시키는 기술은 목숨과 관련된 매우 중요한 기술입니다. 다양한 연구를 통하여, 앞으로 많이 발전해 나가시기 바랍니다.<br />
위드로봇 전체 시스템 구현까지 완성도 높게 제작이 되었습니다. 기존 시스템에 비해 창의성이 돋보이는 부분이 추가되면 더욱 좋을 것 같습니다.<br />
펌테크 작품에 사용된 로봇을 레고의 마인드스톰 대신 라즈베리 파이 또는 아두이노를 사용해서 독자적인 시스템으로 작품을 구현해보는 것이 좋지 않았을까 생각해봅니다. 학부과정의 학생이 구현하기에 적정한 난이도를 가진 작품이라고 생각합니다.<br />
<strong></strong></p>
<p><span style="color: #0000ff"><strong>2. 작품 개요</strong></span><br />
도로 유형마다 다른 안전거리에 대한 정보 전달과 운전석와 조수석에서 내용을 확인하고 감속을 하여 안전거리를 유지할 수 있도록 하는 시스템이다.<br />
<strong></strong></p>
<p><span style="color: #008080"><strong>2.1. 필요성</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-2.png" rel="lightbox[38505]"><img class="alignnone size-full wp-image-38652" alt="60 ict 안전거리 (2)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-2.png" width="609" height="296" /></a></p>
<p>위와 같은 관련 자율주행 사고와 안전거리 미확보에 따른 사고 예방을 동시에 충족시키는 방법을 고민했습니다. 기술력의 대부분은 자율주행의 완성을 향해서 나아가고 있지만, 운전자와 주변상황을 모두 사람처럼 즉각적으로 판단하는 것에는 어려움이 있습니다. 특히, 사람을 인식하지만, 어디로 이동하고 있는 지는 파악 못하는 센서처럼 기계가 스마트해지고 자율주행이 된다고 하더라도 안전에 대해서는 사람이 직접적으로 제어할 수 있도록 해야 할 것입니다.<br />
그 방법 중 하나로 현재 발전 중이고 상용화도 되어 있는 커넥티드 카를 중점으로 제어가 가능하도록 만드는 것을 생각했습니다.</p>
<p><span style="color: #008080"><strong>2.2. 기대효과</strong></span><br />
1. 안전성 : 무엇보다도 중요한 사람의 안전을 기계를 직접 제어함으로서 예방과 사고를 방지할 수 있다.<br />
2. 원활한 도로 주행 : 느리지도 빠르지도 않은 속도를 제안하며, 앞차와의 속도를 파악할 수 있어 급작스런 변화에도 대응이 가능하도록 설계한다.</p>
<p><span style="color: #0000ff"><strong>3. 작품 설명</strong></span><br />
차량 종류에 구애받지 않고 설치할 수 있는 간단한 장치를 이용하여 데이터 값을 앱을 통해서 받고 어플을 통해서 사용자가 도로 유형에 따라 정보를 제공받고 경고를 할 수 있게 합니다.<br />
<strong></strong></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-3.png" rel="lightbox[38505]"><img class="alignnone size-full wp-image-38654" alt="60 ict 안전거리 (3)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-3.png" width="609" height="248" /></a></p>
<p><span style="color: #008080"><strong>3.1. 주요 동작 및 특징</strong></span><br />
<span style="color: #33cccc"><strong>3.1.1. 주요 동작</strong></span><br />
1. 도로유형을 선택할 수 있다. (자동차 카메라 연동이 안될 경우)<br />
사용자가 타는 도로를 선택 시 자동으로 해당 안전거리와 속도가 제한이 걸린다. (속도를 과다하게 올릴 경우에는 속도를 자동으로 줄이도록 함 on/off 설정가능)<br />
2. 도로유형 기준치 안전거리가 미만으로 측정될 시에 속도를 줄이도록 경고한다.<br />
3. 안전거리 미만이 될 경우는 속도가 줄어들면서 30~0 km/h으로 진입될 경우 경고를 하지 않도록 하여 편의성을 높였다.(불필요한 기능제거)</p>
<p><span style="color: #33cccc"><strong>3.1.2. 특징</strong></span><br />
1. 애플리케이션을 이용한 사용자의 편의성이 증가한다.<br />
2. 시스템적인 측면을 애플리케이션이 아닌 자동차 시스템에 이식이 가능하다.<br />
3. 타 사용자(앞서 가는 차량)의 데이터를 통해서 도로상황 파악가능하며 확장성을 지니고 있다.</p>
<p><span style="color: #008080"><strong>3.2. 전체 시스템 구성</strong></span><br />
1. 애플리케이션으로 센서값을 전송받는 IoT</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-4.png" rel="lightbox[38505]"><img class="alignnone size-full wp-image-38655" alt="60 ict 안전거리 (4)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-4.png" width="279" height="421" /></a></p>
<p>기술 실험 시에는 학교의 지원을 받아서 통신 가능한 레고마인드스톰을 이용하였다. 라즈베리파이 혹은 아두이노로도 구동가능 할 정도의 낮은 사양을 요구하지만, 통신이 가능해야한다는 조건이 있다.</p>
<p>2. 애플리케이션 혹은 시스템이 구동가능한 플랫폼</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-5.png" rel="lightbox[38505]"><img class="alignnone size-full wp-image-38656" alt="60 ict 안전거리 (5)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-5.png" width="609" height="326" /></a></p>
<p>데이터를 받기 위한 플랫폼, 스마트폰 혹은 커넥티드카처럼 지속적인 데이터 통신이 가능해야한다.<br />
자체 내부 데이터망이 있는 경우가 해당되야하고, 커넥티드카의 경우 센서를 전달받아서 실시간으로 대응이 가능해야 할 것이다. 현재 개발단계에서는 당장 적용할 수 있는 kit를 이용하였다.</p>
<p><span style="color: #008080"><strong>3.3. 개발 환경</strong></span><br />
· 개발 언어의 경우 접근성이 좋은 앱인벤터를 사용하였다.<br />
· 장비로는 조립 분해가 가능한 레고마인드스톰을 사용하였다.</p>
<p><span style="color: #0000ff"><strong>4. 단계별 제작 과정</strong></span><br />
· app inventor를 이용한 애플리케이션 제작 : 레고마인드스톰과 연결된 라이브러리를 이용하였습니다.<br />
· 자체모듈에 대해 커넥티드 카 개념 적용 : 레고마인드스톰에 리눅스 경량화 버전이 적용이 되어 블루투스통신이 가능한 것을 이용하였습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-6.png" rel="lightbox[38505]"><img class="size-large wp-image-38657 alignnone" alt="도로 변화에 따른 안전거리 변화 설계 소스코드 " src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-6-581x620.png" width="581" height="620" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-7.png" rel="lightbox[38505]"><img class="alignnone size-full wp-image-38658" alt="60 ict 안전거리 (7)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-7.png" width="609" height="598" /></a></p>
<p><span style="color: #008080"><strong>4.1. 제작과정</strong></span><br />
<span style="color: #33cccc"><strong>4.1.1. 레고마인드 스톰 제작</strong></span><br />
조립 당시 단순한 에듀케이터를 따라서 조립(차량 소형화)하였다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-1.jpg" rel="lightbox[38505]"><img class="alignnone size-full wp-image-38649" alt="60 ict 안전거리 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-1.jpg" width="609" height="303" /></a></p>
<p>아이디어 구체화 후 불필요한 조향센서와 터치센서를 제거하였다. 추가적으로 안전거리 실험을 위한 추가적인 모듈 조립하였다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-2.jpg" rel="lightbox[38505]"><img class="alignnone size-full wp-image-38651" alt="60 ict 안전거리 (2)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-2.jpg" width="609" height="203" /></a></p>
<p><span style="color: #33cccc"><strong>4.1.2. 앱 인벤터를 이용한 애플리케이션 제작</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-4.png" rel="lightbox[38505]"><img class="alignnone size-full wp-image-38655" alt="60 ict 안전거리 (4)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-4.png" width="279" height="421" /></a><br />
1. 레고마인드스톰과 블루투스 연동<br />
2. 거리 값 계산을 위한 실시간 통신<br />
3. 속도 값을 추가하여 추가적인 통신<br />
4. 정지와 시작 버튼으로 모듈 동작 설정<br />
5. 도로유형에 따라 안전거리 변수를 적용하도록 설정<br />
6. 관련 정보가 나타나도록 이미지 설정</p>
<p><span style="color: #0000ff"><strong>5. 기타</strong></span><br />
· 블루투스를 이용한 통신<br />
고차원적인 데이터 송수신을 가능하게 하였다.</p>
<p>· 커넥티드 카<br />
차량 데이터 차체 보관 및 통신이 가능하게 하였다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-3.jpg" rel="lightbox[38505]"><img class="alignnone size-large wp-image-38653" alt="60 ict 안전거리 (3)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-3-620x245.jpg" width="620" height="245" /></a></p>
<p>차량용 인포메이션 시스템 중 하나인 내비게이션이 커넥티드카의 일부입니다. 센서들의 정보를 모아서 자체적으로 판단을 가능하게 만드는 단계로 볼 수 있습니다. 특히, 중요한 점은 모든 시스템이 통신을 통해서 하나로 연결될 수 있다는 점입니다.<br />
V2X(vehicle to everything)처럼 모든 것과 연결되는 것이 최종 목적지입니다. 궁극적으로는 자율주행차라고 볼 수 있습니다.</p>
<p>※ 벤츠, 볼보 등의 자동차 업체들은 애플과 파트너십을 맺고 2014 제네바모터쇼에서 카플레이를 탑재했습니다.<br />
※ 독자적인 커넥티드 카 연합인 OAA(Open Automotive Alliance)를 발족했습니다. 혼다, 아우디, 제너럴모터스, 현대기아차 등 세계적인 자동차 업체들을 비롯해 LG전자, 파나소닉, 엔비디아 등이 가입했습니다.</p>
<p><span style="color: #008080"><strong>5.1. 결과 및 적용가능성</strong></span><br />
처음의 목표를 세웠던 것과 동일하게 돌발 상황에 사용자가 언제든 사용가능하도록 애플리케이션의 형식으로 완성하였습니다. 또한, 주행상의 변동물체를 초음파 센서로 인식하여 안전거리와 속도 값까지 실시간 블루투스 통신을 이용하여 핸드폰으로 받는 것을 가능하게 하였습니다.<br />
도로유형(일반 국도, 고속도로 등)에 따라 안전거리 변수를 설정하였으며 커넥티드 카의 운전자와 다른 인원들이 차와 통신연결 후에 돌발 상황 발생 시 제어를 할 수 있도록 하여 안전사고를 막도록 하였습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-9.png" rel="lightbox[38505]"><img class="alignnone size-large wp-image-38660" alt="60 ict 안전거리 (9)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-ict-안전거리-9-620x532.png" width="620" height="532" /></a></p>
<p>추가적으로 최종 형태인 자율주행차의 안전성 보완을 생각 하였습니다. 자율주행차의 경우에는 운전자가 아닌 인원들이 타고 다니는 운전수단이기 때문에, 조수석 혹은 뒷자리 사용자로 하여금 안전에 대해서 확인과 제어를 할 수 있도록 하는 것을 가능하도록 하였습니다. 즉각적인 대응이 어렵다는 문제를 해결하기 위해서 블루투스로 실시간 통신하여 차량과 사람이 연결되어 적절한 대응을 할 수 있게 만들어 안정성을 높였습니다.<br />
기존의 커넥티드 카는 차량에 탑재는 센서를 이용하기 때문에 갑작스런 돌발 상황에 대해 적절한 대응을 하지 못합니다. 하지만, 불안정함에도 불구하고 자동차기업들의 커넥티드 카의 관심은 매년 점차적으로 증가하고 있는 추세이며 안전성에 대한 커넥티드 카의 연구도 증가하고 있습니다.<br />
안전거리 이격 시스템은 돌발적인 상황이나 도로 유형에 따라 그 정보를 사람과 실시간 통신하여 안전성이 특화되었다는 장점을 지니고 있습니다. 커넥티드 카가 4차 산업혁명을 맞이해 우리의 생활을 180도 바꾸어 줄 미래형 자동차로 주목받고 있는 지금 무엇보다 안전을 위해서는 안전거리 이격 시스템이 필요할 것입니다.<br />
우리의 삶을 더 편리하게 해줄 과학 기술이 있지만, 이에 앞서 충분히 예상되는 안전을 어떻게 해결해나갈지 안전거리 이격 시스템을 비롯한 제품들에 대한 수요가 증가할 것입니다.</p>
<p><span style="color: #008080"><strong>5.2. 참고문헌</strong></span><br />
시현동영상 주소 : https://youtu.be/U1HgzHRUf8g<br />
· http://w3.incom79.com/bbs_data/study_data/drive/summary10.htm<br />
· https://www.sktinsight.com/97717<br />
· http://smartsmpa.tistory.com/4474<br />
· https://github.com/mit-cml/appinventor-sources/blob/master/appinventor/components/src/com/google/appinventor/components/runtime/util/ErrorMessages.java<br />
· http://www.martyncurrey.com/android-mit-app-inventor-auto-connect-to-bluetooth/<br />
· http://appinventor.mit.edu/explore/content/legomindstorms.html<br />
· http://open-roberta.org/<br />
· http://www.itworld.co.kr/news/92201#csidx2beed884a9d96f6abc6dbfc050e424a</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38505/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[60호]주목받는 비분산적외선 가스센서란 무엇인가</title>
		<link>http://www.ntrexgo.com/archives/38522</link>
		<comments>http://www.ntrexgo.com/archives/38522#comments</comments>
		<pubDate>Tue, 30 Jun 2020 00:00:32 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[스페셜 컬럼]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[showcase]]></category>
		<category><![CDATA[가스센서]]></category>
		<category><![CDATA[광학식]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[이엘티센서]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=38522</guid>
		<description><![CDATA[디바이스마트매거진 60호 &#124; 광학식 가스센서인 비분산적외선 가스센서(NDIR)의 원리 및 이를 이용한 가스센서를 소개하고자 한다.]]></description>
				<content:encoded><![CDATA[<p><span style="font-size: medium;background-color: #000080;color: #ffffff"><strong><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-1.png" rel="lightbox[38522]"><img class="alignnone size-large wp-image-38739" alt="60 showcase 이엘티센서 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-1-620x220.png" width="620" height="220" /></a></strong></span></p>
<p><span style="font-size: medium;background-color: #000080;color: #ffffff"><strong>이엘티센서</strong></span></p>
<p><span style="font-size: x-large;color: #000080"><strong>주목받는 비분산적외선 가스센서란 무엇인가</strong></span></p>
<p style="text-align: right">글 | 이엘티센서 천동기</p>
<p><span style="font-size: small">광학식 가스센서인 비분산적외선 가스센서(NDIR)의 </span><span style="font-size: small">원리 및 이를 이용한 가스센서를 소개하고자 한다.</span></p>
<p><strong style="color: #0000ff">1. 가스 센서의 정의 및 종류</strong></p>
<p>가스 센서는 가스의 농도(concentration)를 측정하는 센서이다. 여기서 농도는 전체 가스 중에 특정 가스가 차지하는 비율을 의미하며 그 단위로는 ppm, %, %LEL 등이 있다.<br />
가스 센서의 측정방식(원리)은 다양한 분류가 있으나 가스를 검출하는 원리에 따라 분류해 보면 광학식, 접촉식, 복합식으로 나눌 수 있다. 광학식은 가스분자의 화학반응이 일어나지 않는 비접촉식이며 접촉식은 가스분자와 반응물질간에 직접 접촉되는 방식, 복합식은 광과 화학반응이 발생하는 원리이다. 다음 표1은 각 방식의 가스 센서에 대한 간략하게 비교 정리한 것이다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-2.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38740" alt="60 showcase 이엘티센서 (2)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-2.png" width="474" height="598" /></a></p>
<p><span style="color: #ff6600">(1)</span> 가스 선택성(Gas Selectivity) : 측정 목표 가스(target gas) 외의 다른 가스의 간섭없이 측정하는 특성<br />
<span style="color: #ff6600">(2)</span> 재현성(Repeatability) : 동일 환경 조건에서 가스 농도 변화 시 동일 농도 조건에서 측정되는 농도 오차<br />
<span style="color: #ff6600">(3)</span> 수명(Life Time) : 재교정(recalibration)을 포함하여 센서가 사양을 충족시키는 성능이 유지되는 시간<br />
<span style="color: #ff6600">(4)</span> 측정 한도(Lowest Detection Limit) : 0 영역에서 센서가 구분할 수 있는 최소 농도 변화 값</p>
<p>앞의 센서 대표 원리별로 간략히 특징과 장단점을 비교해 본다.<br />
<strong></strong></p>
<p><span style="color: #0000ff"><strong>2. 접촉식 센서</strong> </span><br />
<span style="color: #33cccc"><strong>2.1 반도체식 센서</strong></span><br />
접촉식센서의 대표적인 반도체식 가스센서는 감지 물질 반도체 표면에 가스가 접촉했을 때 일어나는 전기전도도의 변화를 이용하는 것이 많으며 대부분 대기 중에서 가열하여 사용하여 고온에서 안정한 금속 산화물이 주로 사용된다. 금속 산화물은 반도체의 성질을 나타내는 것이 많고, 이중 금속원자가 과잉 (산소 결핍)인 경우에는 n형 반도체, 금속원자가 결핍인 경우에는 p형 반도체가 된다. 이러한 금속 산화물 반도체 중 전기전도도가 크고 융점이 높아서 사용온도 영역에서 열적으로 안정한 성질을 가진 물질이 감지 소재로 센서에 이용되고 있다.<br />
또한 검출회로의 구성이 간단한 편이고 가격이 저렴한 편이나 표면의 금속산화물 반도체에 의해서 전기전도도가 변하기 때문에 여러 종류의 가스에 영향을 많이 받고 습도에도 반응하여 정확한 가스농도 측정에는 단점이 있으나 MEMS의 소형화가 가능하고 상대적으로 가격이 저렴하여 정확도가 크게 중요하지 않는 대량 수요처에 많이 활용되고 있다.<br />
생활속의 많이 사용되는 반도체 방식 센서는 온습도 센서가 있으며, 가스측정에는 휘발성 유기화합물(VOCs), 일산화탄소, 수소계등을 측정할 때 많이 사용된다. 다른 가스에 영향이 크고 고농도에 노출되면 수명과 측정오차가 커진다는 단점이 극복하기 쉽지 않은 과제이기도 하다.<br />
<strong></strong></p>
<p><span style="color: #33cccc"><strong>2.2 전기화학식 센서</strong></span><br />
접촉식 센서의 또다른 대표적인 방식으로 전기화학식 센서가 있다. 전기화학식은 내장된 전극의 작용에 의해 측정 대상 가스가 산화 또는 환원 반응을 일으킬 때 발생하는 전류를 측정함으로써 가스의 농도를 검지한다. 내부에 보통 3개의 전극이 있으며 산화(환원) 반응이 일어나는 검지 전극(working electrode)과 이와 동시에 환원(산화) 반응이 일어나는 대항전극(counter electrode), 그리고 산화환원 반응과 함께 변화하는 전위를 감지하고 전위를 일정하게 유지하기 위한 참조 전극(Reference electrode)이다. 사용자는 센서 외부로 노출된 3개의 전극을 회로에 연결하여 사용한다.<br />
사용자가 전기화학식의 정상작동 또는 성능평가를 위해서는 산소가 필요하기 때문에 공기중에서 실시해야 한다. 또한 표준가스를 주문할 때도 질소베이스가 아닌 공기베이스의 표준가스를 주문하여 시험해야 한다. 질소베이스의 표준가스에서 실시하면 반응량이 적어 측정치가 낮게 표시된다. 경험에 의하면 질소 환경에서 시험시 초기 실험에서는 약 10 ~20%정도 수치가 낮게 나온다.<br />
통상 산업분야에서 사용하는 전기화학식 센서의 사용은 2년 정도이나 생활속에서 사용하는 센서는 대기중에 해당가스가 거의 없기 때문에 수명이 길게는 5년이상까지도 사용 가능한 센서도 판매되고 있다.<br />
장점으로는 빠른 응답시간, 안정성, 낮은 농도도 감지 가능하고, 재현성이 우수하다. 반면 접촉식 센서의 단점인 다른 가스에 대한 반응성, 그리고 고농도에 노출시 수명이 빨리 단축된다는 단점은 원리상 나타나는 현상이다.<br />
주로 전기화학식 센서로는 일산화탄소, 산소, 황화수소, 암모니아가스등을 측정할 때 유리한 성능을 갖는다.</p>
<p><span style="color: #0000ff"><strong>3. 복합식 센서</strong></span><br />
VOCs를 측정할 때 반도체방식은 정확성에서 타방식에 비해 어려움이 있으나 광이온화(PID Photoionization detector)방식으로 측정할 때 우수한 정확성과 재현성을 가진다.<br />
PID 원리는 자외선(UV) 빛을 가스분자에 조사하여 양이온과 음이온화시키고 이를 전극으로 집전시켜 가스농도에 비례한 전류를 감지하며 광 조사와 화학적 반응을 동반한다.<br />
현재 PID 센서를 장착한 측정기로 VOCs를 ppm 이하 ppb 저농도까지 재현성있게 측정하고 있다. 하지만 경제적인 부담 없이 사용하기에는 가격이 타 방식에 비해 상대적으로 많이 고가이기 때문에 아직까지 타 방식의 센서처럼 확대되지 못하고 있고 VOC측정에는 주로 반도체방식을 많이 사용하고 있다.<br />
PID 특성으로 습도에 간섭이 적고 감도가 우수한 장점이 있다.</p>
<p><span style="color: #0000ff"><strong>4. 광학식 가스 센서</strong> </span><br />
비분산적외선(NDIR Non-Dispersive Infrared)식은 여러 종류의 가스 측정 원리중에서 비접촉식의 대표적 방식으로 가장 정확성과 신뢰성, 안정성, 긴 수명등의 장점을 많이 가지고 있다. 하지만 광학계 부품의 고가로 인해 타 방식에 비해 상대적으로 가격이 높았다. 따라서 NDIR식은 기존에는 주로 고가의 분석기에 사용되어 왔으나 지속적으로 광학센서의 사용량이 크게 늘어나면서 광학계 부품들의 가격이 낮아져 일상 생활속에서도 사용할 수 있게 되었다. 예로서 가장 대중화된 NDIR 이산화탄소센서의 경우는 전기화학식이나 반도체식에 비해서도 가격의 차이가 없어졌다. 이로 인해 시장에서 이산화탄소 센서는 거의 90%이상을 NDIR식을 사용하고 있다. 최근 코로나바이러스로 인해 음주 측정용 알콜 센서 방식도 기존에 주로 사용하는 반도체식, 전기화학식 방식에서 비접촉식인 비분산 적외선식이 확대되고 있는 것도 정확성이 높고 비접촉으로 감지하기 때문이다. 이산화탄소 센서의 경우처럼 광학식의 장점이 많아 가격이 낮아지면 기존 접촉식 센서들의 상당부분이 광학식으로 확대될 것으로 예상된다. 그리고 기존까지는 광학식 기술은 선진국에서 앞서 있었으나 국내 기술의 발전으로 상당부분 대등한 기술수준까지 오게 되었다.<br />
다음은 이엘티센서의 중점 사업 기술 분야인 NDIR센서에 대해서 구체적인 핵심 기술과 대표 신제품을 알아본다.</p>
<p><span style="color: #33cccc"><strong>4.1. 광학식 가스 센서의 기본 구성</strong></span><br />
광학식 비분산적외선(NDIR) 가스 센서는 가스 분자가 특정 파장의 광을 흡수하는 특성을 이용하여 가스 농도에 대한 광 흡수율을 측정하는 방식이다. 검지부의 중요 부품은 광원(Light Source)과 광 검출기(Light Detector), 그리고 광이 지나가는 경로와 광 효율을 결정하는 광 도파관(Optical Wave Guide 또는 Cavity &#8211; 아래 금색 부)이 있고, 광신호를 처리하는 회로부와 제어를 담당하는 펌웨어 부가 있다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-3.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38741" alt="60 showcase 이엘티센서 (3)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-3.png" width="475" height="203" /></a></p>
<p>이 중에서 광 도파관은 각 회사의 고유한 기술이며 광경로, 길이, 집광도 등의 광 효율성을 결정는 핵심기술로서 회사의 주요 특허 대상이다. 이엘티센서는 국내, 미국, 일본, 중국, 유럽등에 20여건의 특허를 등록하여 국내에서 가장 많은 비분산적외선 센서 관련 기술특허를 보유중이다.<br />
아래 그림들은 특허로 등록된 광 도파관의 광 이동 구조의 예시 들이다.<br />
통상의 타 회사의 간단한 직선형구조 보다 더 긴 광경로를 이루도록 기하학적 구조를 배치하여 정확성과 정밀성을 높일 수 있다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-4.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38742" alt="60 showcase 이엘티센서 (4)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-4.png" width="475" height="203" /></a></p>
<p>NDIR 센서 모듈의 구성 흐름을 간단히 보이면 아래 그림과 같이 광 검출기에서 출력되는 전기 신호는 증폭 회로와 아날로그-디지털 변환기(ADC)를 거쳐 처리 장치(CPU, Micro Processor)에서 가스 농도를 계산하여 출력해준다. 농도 산출은 기본적으로 비어-램버트 함수를 이용하지만 각 설계환경에 맞추어 적정하게 변형 도출되어야 한다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-5.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38743" alt="60 showcase 이엘티센서 (5)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-5.png" width="475" height="411" /></a></p>
<p><span style="color: #33cccc"><strong>4.2. NDIR로 측정하는 가스의 광학적 특징</strong> </span><br />
측정기의 크기에 제한 없이 수 미터 이상 광 경로를 길게 할 수 있다면 매우 더 낮은 농도를 측정할 수 있다. 하지만 분석기가 아닌 센서류는 크기와 관련되기 때문에 수 센티미터 크기에서는 낮은 농도를 측정할 수 있는 한계성이 있다. 현재 이산화탄소와 메탄은 수 센티 크기의 모듈로도 제작 가능한 기술이 개발 되었고 지속적으로 소형화되고 있으나 일산화탄소, 이산화질소등의 대기중에 낮은 농도까지 측정해야 하는 가스는 소형화하는데 많은 어려움이 있어 아직 정밀하게 측정할 수 있는 광학식 센서로는 연구개발 단계에 있다. 수년 안에 상품화될 것이다. 아래 표2는 대기중의 주요 가스와 흡수파장, 그리고 가스분자의 광 흡수특성에 따른 간략비교를 보여준 것이다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-6.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38744" alt="60 showcase 이엘티센서 (6)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-6.png" width="475" height="275" /></a></p>
<p>모든 분자는 광을 흡수하면 열 진동(Thermal Vibration)을 하게 되는데 흡수하는 광은 원자 간 결합의 세기에 따라 그 파장(또는 진동수)이 달라진다. 예를 들어 이산화탄소의 경우 3종의 열 진동 모드(Thermal Vibration Mode)를 갖는데 표3과 같다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-7.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38745" alt="60 showcase 이엘티센서 (7)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-7.png" width="475" height="211" /></a></p>
<p>일반적으로 단원자 분자의 결합력이 강하여 흡수하는 에너지가 더 높은 단 파장대의 광을 흡수하고 다원자 분자의 경우 결합력이 약하여 에너지가 낮은 장 파장대의 광을 흡수한다. CO2의 경우 가장 에너지가 높은 4.26㎛ 파장대를 이용하여 센서를 만들고 있다.<br />
하지만 산소와 질소 같은 단원자 분자로 되어 있는 것은 적외선 흡수율이 적어서 NDIR 센서는 만들기 어려운 한계성이 있다.</p>
<p><span style="color: #0000ff"><strong>5. 가스 센서의 개발 및 시장의 요구 동향</strong></span><br />
기술의 발전에 따라 타 산업과 마찬가지로 가스센서도 시장에서는 지속적으로 더 작은 센서, 더 낮은 소비전류 센서, 더 낮은 가격의 센서를 요구하고 있다. 정확도 또한 유지하면서 이러한 성능을 요구하기 때문에 센서 제조사들은 지속적으로 제품개발과 연구에 더 많은 비용과 시간을 투입해서 대응하고 있지만, 기술발전의 속도가 느리고 기초과학에서 출발하는 센서기술의 특성상 원천 소재와 광 부품등의 동반 발전과 지원이 반드시 필요하다.<br />
다음에는 현재 개발되어 판매되고 있는 대표적인 NDIR 가스센서(CO2, CH4)의 센서모듈의 사양과 특징을 소개한다.<br />
아래 소개한 신제품 가스센서는 디바이스마트 사이트에서 손쉽게 구입할 수 있어 편리하다.</p>
<p><span style="color: #0000ff"><strong>6. 대표적인 CO2, CH4, CO 센서 모듈, 제품</strong></span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-8.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38746" alt="60 showcase 이엘티센서 (8)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-8.png" width="475" height="309" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-9.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38747" alt="60 showcase 이엘티센서 (9)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-9.png" width="475" height="317" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-10.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38748" alt="60 showcase 이엘티센서 (10)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-10.png" width="475" height="317" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-11.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38749" alt="60 showcase 이엘티센서 (11)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-11.png" width="475" height="332" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-12.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38750" alt="60 showcase 이엘티센서 (12)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-12.png" width="475" height="315" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-13.png" rel="lightbox[38522]"><img class="alignnone size-full wp-image-38751" alt="60 showcase 이엘티센서 (13)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-이엘티센서-13.png" width="475" height="315" /></a></p>
<p><span style="color: #0000ff"><strong>7. 마무리</strong></span><br />
가스센서의 개발은 원천기술 확보를 통해 선진국으로부터 기술 독립이 가능하며 센서의 신뢰성을 검증받는데 최소 10년 이상 센서 개발 경력이 있어야 한다. 또한 전세계 수출을 위해 독자적인 센서로 인정받기 위해 국내외 다수 특허 확보가 필요하고 다양한 신모델 개발이 필요하다. 이러한 노력을 계속하고 있는 이엘티센서는 국내 센서기술이 선진국과 대등한 기술수준으로 인정받을 수 있도록 견고한 기초를 다져가고 있다.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38522/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[60호]2020 ICT 융합 프로젝트 공모전 결과 발표 및 시상 소식</title>
		<link>http://www.ntrexgo.com/archives/38499</link>
		<comments>http://www.ntrexgo.com/archives/38499#comments</comments>
		<pubDate>Tue, 30 Jun 2020 00:00:25 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[핫 뉴스]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[ict]]></category>
		<category><![CDATA[공모전]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[융합]]></category>
		<category><![CDATA[프로젝트]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=38499</guid>
		<description><![CDATA[디바이스마트매거진 60호 &#124; 전자 로봇, 기계 분야 중 자유 주제로 2020년 2월 1일부터 3월 31일까지 진행된 2020 ICT 융합 프로젝트 공모전 발표와 시상이 지난 6월 8일 (주)엔티렉스 본사 대회의실에서 진행되었다. ]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-1.png" rel="lightbox[38499]"><img class="alignnone size-large wp-image-38595" alt="60 hot 시상소식 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-1-620x235.png" width="620" height="235" /></a></p>
<p><span style="font-size: large"><strong>2020 ICT 융합 프로젝트 공모전 결과 발표 및 시상 소식</strong></span></p>
<p>전자 로봇, 기계 분야 중 자유 주제로 2020년 2월 1일부터 3월 31일까지 진행된 2020 ICT 융합 프로젝트 공모전 발표와 시상이 지난 6월 8일 (주)엔티렉스 본사 대회의실에서 진행되었다.<br />
이번 2020 ICT 융합 프로젝트 공모전에는 총 78개 팀 및 개인이 응모하여, 이 중 28개 작품을 최종 선정하였으며, 대상은 광운대학교 신동빈, 나영은, 선아라, 조수현, 최희우님이 응모한 “Can you see me?”가 수상하였다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-1.jpg" rel="lightbox[38499]"><img class="alignnone size-full wp-image-38594" alt="60 hot 시상소식 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-1.jpg" width="620" height="396" /></a></p>
<p>대상을 수상한 광운대학교 신동빈, 나영은, 선아라, 조수현, 최희우님이 본사를 방문하여 상장과 상금을 수령하고 간단한 인터뷰 시간을 가졌다.<br />
이번 공모전 심사는 (주)엔티렉스, 위드로봇(주), (주)칩센, (주)펌테크, (주)뉴티씨에서 심사를 담당하였고, 심사결과는 우측 페이지에서 확인할 수 있다.<br />
이번 공모전에 수상하신 모든 분들께 축하의 말씀을 드리며, 참여하신 심사업체 및 지원자 분들에게 감사의 인사를 드립니다.<br />
수상작들에 대한 내용은 다음 디바이스마트 매거진을 통해 소개하고자 하며, 내년 2월에 진행될 다음 대회에도 많은 참여와 관심 부탁드립니다.</p>
<div id="attachment_38598" class="wp-caption alignnone" style="width: 619px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-3.jpg" rel="lightbox[38499]"><img class="size-full wp-image-38598" alt="대상 [ Can you see me? ]" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-3.jpg" width="609" height="356" /></a><p class="wp-caption-text">대상 [ Can you see me? ]</p></div><div id="attachment_38597" class="wp-caption alignnone" style="width: 619px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-2.png" rel="lightbox[38499]"><img class="size-full wp-image-38597" alt="최우수상 [ 시각장애인을 위한 음성 안내 버스표지판 ]" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-2.png" width="609" height="356" /></a><p class="wp-caption-text">최우수상 [ 시각장애인을 위한 음성 안내 버스표지판 ]</p></div><div id="attachment_38599" class="wp-caption alignnone" style="width: 619px"><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-3.png" rel="lightbox[38499]"><img class="size-full wp-image-38599" alt="최우수상 [ 파파고 api를 사용한 점자 번역기 ]" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-hot-시상소식-3.png" width="609" height="338" /></a><p class="wp-caption-text">최우수상 [ 파파고 api를 사용한 점자 번역기 ]</p></div>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center"><span style="color: #0000ff;font-size: large"><strong>2020 ICT 융합 프로젝트 공모전 심사결과</strong></span></p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="1">
<tbody>
<tr>
<td bgcolor="gray" width="60"> 구분</td>
<td bgcolor="gray" width="250"> 수상자</td>
<td bgcolor="gray" width="250">작품명</td>
<td bgcolor="gray" width="60">시상 내역</td>
</tr>
<tr>
<td>대상</td>
<td> 광운대학교 신동빈, 나영은, 선아라, 조수현, 최희우</td>
<td> Can you see me?</td>
<td> 100만원</td>
</tr>
<tr>
<td rowspan="2">최우수상</td>
<td> 인하대학교 이승화, 이상우, 박민아</td>
<td> 시각장애인을 위한 음성 안내 버스표지판</td>
<td> 50만원</td>
</tr>
<tr>
<td> 국민대학교 이동윤</td>
<td> 파파고 api를 사용한 점자 번역기</td>
<td> 50만원</td>
</tr>
<tr>
<td rowspan="5"> 우수상</td>
<td> 성균관대학교 김승년, 임혁수, 최윤수</td>
<td> 우울증 치료로봇 IWMYS(I will make you smile)</td>
<td> 20만원</td>
</tr>
<tr>
<td>한국항공대학교 노윤석, 고려대학교 이준세,<br />
가천대학교 김지연, 정진화</td>
<td> TWO EYES (Two Camera watch wet road)</td>
<td> 20만원</td>
</tr>
<tr>
<td> 한국과학기술원 김동주</td>
<td> 180도 방향을 한번에 탐지하여 interaction한&nbsp;</p>
<p>반응형 스마트 지팡이</td>
<td> 20만원</td>
</tr>
<tr>
<td> 국민대학교 구창진, 박지호, 임성현, 최형종</td>
<td> 자동시스템과 원격 제어 앱을 갖춘 버스용 창문</td>
<td> 20만원</td>
</tr>
<tr>
<td> 숭실대학교 최영림, 최지웅, 이하영, 김수희</td>
<td> Mindwave mobile 2를 이용한 뇌파 기반&nbsp;</p>
<p>응급호출 시스템</td>
<td> 20만원</td>
</tr>
<tr>
<td rowspan="20">장려상</td>
<td> 이문기</td>
<td>초 광 시야각 스마트 안경<br />
(super wide field of view smart glasses)</td>
<td> 10만원</td>
</tr>
<tr>
<td> 인하대학교 이은성, 강태욱, 남성훈, 이태민, 이홍찬, 정원욱</td>
<td> 씀(SSM, Smart Spice machine)</td>
<td> 10만원</td>
</tr>
<tr>
<td> 한양대학교 (ERICA) 김민서, 김동연, 정우진, 이성준, 이도걸, 김경현</td>
<td> 이룽이의 방역세트</td>
<td> 10만원</td>
</tr>
<tr>
<td>국민대학교 홍희정, 서울시립대학교 박진석,<br />
서울과학기술대학교 윤승한</td>
<td> WhoRU</td>
<td> 10만원</td>
</tr>
<tr>
<td> 금오공과대학교 김진욱, 김병준, 정수현, 조혜수</td>
<td> 앱 연동이 가능한 점자 프린트기</td>
<td> 10만원</td>
</tr>
<tr>
<td> 이화여자대학교 황시은, 오지영, 박지은, 김가연</td>
<td> EYE SHOE</td>
<td> 10만원</td>
</tr>
<tr>
<td> 전남대학교 조유진, 이예찬</td>
<td> Dollying</td>
<td> 10만원</td>
</tr>
<tr>
<td> 김창운</td>
<td> 두근두근 원격 모니터링, Electro Cardio Gram</td>
<td> 10만원</td>
</tr>
<tr>
<td> 대구카톨릭대학교 한진효, 김현준, 서동운, 최동근</td>
<td> Fire Guard</td>
<td> 10만원</td>
</tr>
<tr>
<td> 포항공과대학교 김재유</td>
<td> 실험용 온도계 (Temperature data logger)</td>
<td> 10만원</td>
</tr>
<tr>
<td> 동양미래대학교 김선우, 김문, 김재아, 최대원</td>
<td> AI-Based Guide Robot System for the Blind</td>
<td> 10만원</td>
</tr>
<tr>
<td> 서울과학기술대학교 김태욱, 금현주, 민성재, 이동현</td>
<td> Cable-driven Anthropomorphic Dexterous Robot hand</td>
<td> 10만원</td>
</tr>
<tr>
<td>동양미래대학교 박재범, 김도경, 김성곤, 김예빈, 김종혁,<br />
이연수, 이정원, 장여원</td>
<td> Simple Touch</td>
<td> 10만원</td>
</tr>
<tr>
<td> 영남대학교 양성은, 박유나, 지준영</td>
<td> 스마트 차선 변경 시스템</td>
<td> 10만원</td>
</tr>
<tr>
<td> 대구대학교 정원용</td>
<td> 자동문 쓰레기통</td>
<td> 10만원</td>
</tr>
<tr>
<td> 선문대학교 곽호권</td>
<td> 물체탐지 4족 보행로봇</td>
<td> 10만원</td>
</tr>
<tr>
<td> KAIST 이준, 정송현, 박종건, 고형석, 강민수</td>
<td> Minister</td>
<td> 10만원</td>
</tr>
<tr>
<td> 명지대학교 한찬영</td>
<td> AutoSwitch</td>
<td> 10만원</td>
</tr>
<tr>
<td> 항공대학교 이종민</td>
<td> 20대주거환경을 위한 외.내부 환기 제어 시스템</td>
<td> 10만원</td>
</tr>
<tr>
<td> 서울시립대학교 박진석, 서재원, 송태헌</td>
<td> Automatic Serving &amp; Order System</td>
<td> 10만원</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38499/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[60호]초소형 레이더 MDR, 어떻게 제어하고 활용하나</title>
		<link>http://www.ntrexgo.com/archives/38520</link>
		<comments>http://www.ntrexgo.com/archives/38520#comments</comments>
		<pubDate>Tue, 30 Jun 2020 00:00:23 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[스페셜 컬럼]]></category>
		<category><![CDATA[제품 리뷰]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[showcase]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[레이더]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[인지니어스]]></category>
		<category><![CDATA[초소형]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=38520</guid>
		<description><![CDATA[디바이스마트매거진 60호 &#124; 인지니어스는 레이더 모듈을 개발하고 공급하기 위한 고주파 안테나 설계, RF 기판 및 회로 설계, 그리고 레이더 제어 S/W를 독자적으로 개발하고 서비스하는 전문 기업이다. ]]></description>
				<content:encoded><![CDATA[<p><span style="background-color: #000080; color: #ffffff;"><strong><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-7.png" rel="lightbox[38520]"><img class="alignnone size-large wp-image-38726" alt="60 showcase 초소형레이더 (7)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-7-620x188.png" width="620" height="188" /></a></strong></span></p>
<p><span style="background-color: #000080; color: #ffffff;"><strong>인지니어스</strong></span></p>
<p><span style="font-size: x-large;"><strong>초소형 레이더 MDR, 어떻게 제어하고 활용하나</strong></span></p>
<p>&nbsp;</p>
<p style="text-align: right;">글 | 인지니어스 라승탁</p>
<p>&nbsp;</p>
<p>인지니어스는 레이더 모듈을 개발하고 공급하기 위한 고주파 안테나 설계, RF 기판 및 회로 설계, 그리고 레이더 제어 S/W를 독자적으로 개발하고 서비스하는 전문 기업이다. 십여년의 기술 개발을 통해서 많은 수의 레이더를 상용화하였다. 이를 바탕으로 인지니어스는 산업용, 자동차용, 그리고 방산용 레이더를 개발하고 공급하고 있다.</p>
<p>현재 디바이스마트에서 판매 중인 24GHz 기반의 MDR(Motion Detect Radar) 모델은 2018년도에 상용화를 완료한 세계에서 제일 작은 크기의 초소형레이더로 다양한 응용 분야에서 사용 중이고, 현재도 지속적으로 소프트웨어를 업데이트하여 속도(방향 포함)까지 알 수 있는 버전인 MDR Ver2.0을 곧 지원한다. 이는 기존에 단순히 움직이는 사물의 존재 유무만을 감지하던 기능에서 감지된 물체가 레이더에 접근 중인지, 멀어지고 있는지를 구별할 수 있는 기능이 추가된 것이다.<br />
또한 60GHz 기반의 산업용 레이더에서는 최고 사양을 갖는 고성능 레이더도 최근에 개발을 완료하여 공급이 가능한 상태이다. 고성능 레이더는 CCTV와 연동해서 지능형 추적이 가능하고 과속 단속 카메라, 그리고 사람의 호흡이나 심박을 검출하는 바이탈 센싱 등으로 적용되고 있다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-1.jpg" rel="lightbox[38520]"><img class="alignnone size-large wp-image-38727" alt="60 showcase 초소형레이더 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-1-607x620.jpg" width="607" height="620" /></a></p>
<p><strong>MDR 특징</strong><br />
MDR 레이더 모듈은 24GHz의 K밴드 대역 전파를 이용하여 움직이는 사물의 존재 유무를 감지하는 용도로 사용한다. 다른 센서와 비교하여 환경의 영향을 적게 받기 때문에 햇빛과 같이 강한 빛, 먼지, 비, 눈, 안개, 그리고 흐린 날씨에도 사용이 가능하다.<br />
모듈은 MCU를 내장하고 있어서 전원만 공급하면 자체적으로 동작을 수행하고, 검출한 결과는 GPIO나 UART를 통해서 출력한다. 또한 IOT와도 연동이 가능하도록 패킷 통신을 지원하고, 외부에서 모듈의 기능을 설정할 수 있다.<br />
감지 각도와 범위에 따라서 mini와 micro의 두 가지 모델이 있고, 성인 남성 기준으로 7m 이상의 감지거리를 가지고 있다. 크기는 mini가 30x30x3.1mm, micro가 22.1&#215;18.1&#215;3.1mm로, 작아서 다양한 제품에 내장 시키는 것이 가능하다.</p>
<p><strong>MDR Ver2.0 사용법과 제어</strong><br />
이번 장에서는 곧 지원 예정인 속도 정보까지 알 수 있는 MDR Ver2.0의 사용법과 제어에 대해 알아보겠다.<br />
우선 아래의 핀 맵 그림에 맞게 MDR의 5개의 핀을 연결한다. 5개 핀은 VCC, GND, GPIO_OUT, UART_TX, UART_RX를 의미한다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-1.png" rel="lightbox[38520]"><img class="alignnone size-full wp-image-38728" alt="60 showcase 초소형레이더 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-1.png" width="537" height="609" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-2.png" rel="lightbox[38520]"><img class="alignnone size-full wp-image-38729" alt="60 showcase 초소형레이더 (2)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-2.png" width="537" height="560" /></a></p>
<p>MDR의 가장 큰 장점은 사용자가 사용하기 쉽게 설계되었다는 점이다. 기본 사용법은 전원 연결 후, GPIO OUT핀의 상태로 현재 움직임이 있는가를 판단하면 된다. 기본 펌웨어의 GPIO OUT핀은 움직임이 있으면 High, 없으면 Low를 출력한다. 만약 간편한 사용만을 원한다면 UART TX, RX 핀을 제외한 VCC, GND, GPIO_OUT 3개의 핀만 사용하면 된다.<br />
MDR을 제어하기에 앞서 특정 용어를 먼저 확인해보자. 첫 번째로 DetectValue는 MDR에 감지된 움직임의 크기를 수치로 나타낸 것이며, 가까운 거리거나 큰 움직임 일수록 더 큰 수치를 나타낸다. 두 번째로 DetectLevel은 DetectValue의 Threshold값으로 DetectValue가 DetectLevel보다 크면 GPIO_OUT1로 감지신호를 출력한다. 마지막으로 MotionData는 MDR에 감지된 움직임의 DetectValue, 속도, GPIO_OUT1 상태를 통합한 용어이다.<br />
MDR은 UART 시리얼 통신으로 특정 커맨드를 이용해 제어가 가능하다. 핀 맵대로 연결한 후, Tera Term에서 아래의 그림과 같이 “MotionDataEnable 1” 커맨드를 입력 후 엔터를 누르면 MotionData가 실시간으로 출력된다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-3.png" rel="lightbox[38520]"><img class="alignnone size-full wp-image-38730" alt="60 showcase 초소형레이더 (3)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-3.png" width="537" height="366" /></a><br />
MotionData의 표현식은 “MotionData⌴+ DetectValue⌴±속도⌴GPIO_State(0 or 1)”이다. ‘Space’(0&#215;20)는 ‘⌴’로 표현하였다. 이 상태에서 MDR에 움직임을 주게 되면 DetectValue가 상승할 것이고 설정된 DetectLevel을 넘게 되면 GPIO 상태가 1로 바뀔 것이다. 반대로 가만히 멈춘 상태가 유지되면 DetectValue가 내려갈 것이고 DetectLevel보다 낮아지기에 GPIO 상태가 0으로 바뀔 것이다.<br />
MDR을 사용하는 환경에 따라 움직임이 없는 환경에서도 기본적으로 DetectValue가 높은 경우가 있다. 예를 들면 주변에 컴퓨터 Fan이 돌고 있다거나, 환풍기 등의 움직임이 고정적으로 발생하고 있는 환경이다. 이 경우, DetectValue가 항상 DetectLevel을 넘게 된다면 MDR의 GPIO 상태는 항상 High 일 것이다.<br />
DetectValue가 항상 DetectLevel을 넘게 될 경우, MDR의 파라미터를 제어하면 문제를 해결할 수 있다. 예를 들어 설정된 DetectLevel이 1만이고, 현재 평균적으로 DetectValue가 1만이 나온다면 DetectLevel을 1만보다 높게 설정하는 커맨드를 입력하여 제어하면 된다. 아래의 그림과 같이 “DetectLevel 11000” 커맨드를 입력 후 엔터를 누르면 DetectLevel이 1.1만으로 설정된다. 추천하는 DetectLevel은 MDR을 사용하는 환경의 평균 DetectValue + 5000 정도이다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-4.png" rel="lightbox[38520]"><img class="alignnone size-full wp-image-38731" alt="60 showcase 초소형레이더 (4)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-4.png" width="537" height="269" /></a></p>
<p><strong>MDR 활용</strong><br />
MDR은 독자적으로 동작하는 초소형 레이더라서 조명제어, 보안 시스템, 공장 자동화, 출입 감지, 비접촉 스위치 등에 활용되고 있다. 또한 MDR은 기존 PIR 센서의 단점을 대부분 극복한 고성능 센서라서 PIR을 사용할 수 없는 환경에도 사용이 가능하다. 이번 장에서는 MDR이 실제로 활용되어 제품이 된 예를 알아보겠다.</p>
<p>아래 그림과 같이 블랙박스 주차보조에 활용되었다. 주차 시간동안 항상 블랙박스를 녹화할 수는 없기에 현재 사용되고 있는 주요 센서는 충격감지 센서이다. 하지만 충격감지 센서의 단점은 이미 사고가 발생되어버린 시점부터 녹화가 진행된다는 것이다. 이를 방지하기 위해 충격감지 센서와 연계하여 MDR로 움직임을 미리 감지하여 사고 발생 전과 후의 영상을 확보하도록 하였다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-5.png" rel="lightbox[38520]"><img class="alignnone size-full wp-image-38732" alt="60 showcase 초소형레이더 (5)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-5.png" width="537" height="269" /></a><br />
다음 MDR 활용으로는 원격 침입 감지가 있다. 아래 그림과 같이 기존의 침입 감지 시스템에 사물인터넷을 연계한 제품이다. 또한 기존의 침입 감지용 센서와 다르게 레이더 특성을 이용하여 벽을 투과한 물체의 움직임도 감지가 된다는 장점을 잘 살렸다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-6.png" rel="lightbox[38520]"><img class="alignnone size-full wp-image-38733" alt="60 showcase 초소형레이더 (6)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-6.png" width="537" height="394" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-2.jpg" rel="lightbox[38520]"><img class="alignnone size-full wp-image-38734" alt="60 showcase 초소형레이더 (2)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-showcase-초소형레이더-2.jpg" width="537" height="378" /></a></p>
<p>마지막으로 소개할 MDR 활용 제품은 지능형 아파트 초인종이다. 기존의 초인종을 눌러야 녹화가 되는 제품과 다르게 설정된 시간만큼의 지속적인 움직임이 감지되면 자동으로 녹화가 되도록 하였다. 요즘 같은 흉흉한 세상에 장시간 현관문 앞의 움직임은 곧 범죄로 이어질 확률이 높기 때문에 범죄 예방 차원에서 굉장히 좋은 MDR 활용이라고 볼 수 있다.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38520/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기</title>
		<link>http://www.ntrexgo.com/archives/38517</link>
		<comments>http://www.ntrexgo.com/archives/38517#comments</comments>
		<pubDate>Tue, 30 Jun 2020 00:00:20 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[제품 리뷰]]></category>
		<category><![CDATA[특집]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[디바이스마트]]></category>
		<category><![CDATA[만들기 nano33iot]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[블루투스]]></category>
		<category><![CDATA[수평계]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=38517</guid>
		<description><![CDATA[디바이스마트매거진 60호 &#124; 캠핑카를 운용하다보면 필수적으로 수평을 맞추어야 하는데 이 때, 활용할 수 있는 블루투스 수평계를 만들어 보고자한다.]]></description>
				<content:encoded><![CDATA[<p><strong><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-1.png" rel="lightbox[38517]"><img alt="60 쇼케 블루투스 수평계 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-1-620x236.png" width="620" height="236" /></a></strong></p>
<p><span style="font-size: x-large; color: #000080;"><strong>NANO 33 IoT보드를 활용한 </strong></span></p>
<p><span style="font-size: x-large; color: #000080;"><strong>블루투스 수평계 만들기</strong></span></p>
<p>요즘 우리나라에서도 많은 분들이 캠핑카를 운용하고 있습니다. 캠핑카를 운용하다보면 필수적으로<br />
수평을 맞추어야 하는 데 이 때 활용할 수 있는 블루투스 수평계를 만들어 보고자 합니다.</p>
<p style="text-align: right;">글 | 김진섭 naturaljs@hanmail.net</p>
<p>NANO 33 IoT 보드는 기본적으로 블루투스 기능과 가속도 센서를 내장하고 있기 때문에 별도의 회로 구성없이도 블루투스 수평계를 만들 수 있습니다.</p>
<p><span style="color: #0000ff;"><strong>1. 아두이노 IDE 설치하기</strong></span></p>
<p>NANO 33 IoT보드가 블루투스 수평계로 동작하도록 하기 위해서는 적당한 소스코드를 보드에 업로드 해야합니다. 이를 위해서는 아두이노 IDE(통합개발환경)이 필요합니다.</p>
<p>아두이노 공식 홈페이지 : https://www.arduino.cc/<br />
홈페이지에 접속하여 소프트웨어 다운로드 페이지로 들어갑니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-2.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38542" alt="60 쇼케 블루투스 수평계 (2)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-2.png" width="620" height="366" /></a></p>
<p>다운로드 페이지를 보면 Arduino IDE버전의 옆에 다양한 다운로드가 표시되어 있습니다. 여기에서 설치 버전인 Installer와 무설치 버전인 ZIP파일용, 윈도우 10의 앱버전 맥, 리눅스용 개발 환경을 다운로드 받을 수 있습니다. 여기에서는 설치 버전인 Installer버전을 다운로드 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-3.png" rel="lightbox[38517]"><img alt="60 쇼케 블루투스 수평계 (3)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-3.png" width="620" height="317" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-4.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38544" alt="60 쇼케 블루투스 수평계 (4)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-4.png" width="620" height="203" /></a><br />
이제 설치 파일을 이용해서 설치해봅니다.<br />
설치 파일을 실행하면 설치 화면이 나옵니다. 순서대로 I Aree ▶ Next ▶ Install 버튼을 눌러 설치해줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-5.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38545" alt="60 쇼케 블루투스 수평계 (5)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-5.png" width="620" height="300" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-6.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38546" alt="60 쇼케 블루투스 수평계 (6)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-6.png" width="620" height="301" /></a> <a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-7.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38547" alt="60 쇼케 블루투스 수평계 (7)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-7.png" width="620" height="301" /></a></p>
<p><span style="color: #0000ff;"><strong>2. 소스코드 업로드하기</strong></span><br />
아두이노를 실행하면 다음과 같은 화면을 볼 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-8.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38548" alt="60 쇼케 블루투스 수평계 (8)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-8.png" width="620" height="318" /></a><br />
이제 본격적인 시작입니다.<br />
먼저 아두이노 NANO 33 IoT에 대한 설정을 해야 합니다. 그러나 기본 IDE에서는 아두이노 NANO 33 IoT보드를 찾을수 없기에 추가를 해주어야 합니다.<br />
​아두이노 IDE에서 보드를 없는 보드를 추가할 때에는 보드 툴-보드의 상단의 &#8216;보드 매니저&#8230;&#8217;로 다양한 보드들을 검색하여 추가할 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-9.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38549" alt="60 쇼케 블루투스 수평계 (9)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-9.png" width="620" height="318" /></a><br />
NANO 33 IoT를 추가할 때에는 검색창에 &#8220;NANO 33&#8243;이라고 검색하고 &#8216;Arduino SAMD Boards (32-bits ARM Cortex-M0+)&#8217;를 확인하고 설치합니다. 보드를 설치하고 다시 보드 옵션을 확인해보면 Arduino SAMD 하위에 Arduino NANO 33 IoT를 확인할 수 있습니다. NANO 33 IoT를 선택하여 보드를 설정해줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-10.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38550" alt="60 쇼케 블루투스 수평계 (10)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-10.png" width="620" height="351" /></a></p>
<p>보드를 설정한 후에는 포트 설정이 필요합니다. 포트를 사용하기 위해서는 보드의 드라이버를 설치해야 하지만 Nano 33 IoT 보드의 드라이버는 연결시 기본적으로 설치가 됩니다.<br />
드라이버 설치가 완료되면 장치 관리자에서 포트를 확인할 수 있습니다.<br />
보드 인식이 확인되면 IDE에서 툴-포트의 옵션을 통해 아두이노를 설정해 주면 보드 설정은 완료됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-11.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38551" alt="60 쇼케 블루투스 수평계 (11)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-11.png" width="620" height="390" /></a></p>
<p>블루투스 수평계를 만들기 위해 “LSM6DS3”이라는 6축센서와 블루투스 기능의 라이브러리를 얻어야합니다. 이를 위해 Arduino Software (IDE)에서 사용 가능한 라이브러리 관리자를 열어줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-12.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38552" alt="60 쇼케 블루투스 수평계 (12)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-12.png" width="620" height="297" /></a></p>
<p>라이브러리 관리에서 “LSM6DS3”과 “ArduinoBLE”를 검색하여 설치 버튼을 눌러줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-13.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38553" alt="60 쇼케 블루투스 수평계 (13)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-13.png" width="620" height="311" /></a></p>
<p>이제 다음 소스 파일을 보드에 업로드 하여 줍니다. (Caravan_check.ino)<br />
다운로드 링크 : https://blog.naver.com/geniusus/221828233778</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>#include &lt;ArduinoBLE.h &gt;<br />
#include &lt;Arduino_LSM6DS3.h &gt;</p>
<p>BLEService DeviceInformation(&#8220;180A&#8221;);<br />
BLEFloatCharacteristic Weight(&#8220;2A98&#8243;, BLERead | BLENotify);<br />
BLEShortCharacteristic WeightMeasurement(&#8220;2A9D&#8221;, BLERead | BLENotify);</p>
<p>float acc_x, acc_y, acc_z;<br />
float acc_pitc, acc_roll;<br />
short acc_pit, acc_rol;</p>
<p>long previousMillis = 0;</p>
<p>void setup() {<br />
Serial.begin(9600);<br />
if (!IMU.begin()) { //LSM6DS3센서 시작<br />
Serial.println(&#8220;LSM6DS3센서 오류!&#8221;);<br />
while (1);<br />
}<br />
if (!BLE.begin()) {<br />
Serial.println(&#8220;starting BLE failed!&#8221;);<br />
while (1);<br />
}</p>
<p>// set advertised local name and service UUID:<br />
BLE.setLocalName(&#8220;CaravanInfo&#8221;);<br />
BLE.setAdvertisedService(DeviceInformation);<br />
DeviceInformation.addCharacteristic(Weight);<br />
DeviceInformation.addCharacteristic(WeightMeasurement);<br />
BLE.addService(DeviceInformation);</p>
<p>Weight.writeValue(0);<br />
WeightMeasurement.writeValue(0);</p>
<p>// start advertising<br />
BLE.advertise();<br />
Serial.println(&#8220;BLE LED Peripheral&#8221;);<br />
}</p>
<p>void updateAngle() {<br />
if (IMU.accelerationAvailable()) {<br />
IMU.readAcceleration(acc_x, acc_y, acc_z);<br />
//각도 계산(라디안을 각도로 180/PI = 57.27755)<br />
acc_pitc = RAD_TO_DEG * atan(acc_x / sqrt(acc_y *acc_y + acc_z *acc_z));<br />
acc_roll = RAD_TO_DEG * atan(acc_y / sqrt(acc_x *acc_x + acc_z *acc_z));</p>
<p>acc_pit = acc_pitc * 100;<br />
acc_rol = acc_roll * 100;</p>
<p>Serial.print(&#8220;pit = &#8220;); // print it<br />
Serial.print(acc_pit);<br />
Serial.print(&#8220;, rol = &#8220;); // print it<br />
Serial.println(acc_rol);</p>
<p>Weight.writeValue(acc_pit); // and update the battery level characteristic<br />
WeightMeasurement.writeValue(acc_rol);<br />
}<br />
}</p>
<p>void loop() {<br />
// listen for BLE peripherals to connect:<br />
BLEDevice central = BLE.central();</p>
<p>// if a central is connected to peripheral:<br />
if (central) {<br />
Serial.print(&#8220;Connected to central: &#8220;);<br />
Serial.println(central.address());<br />
// while the central is still connected to peripheral:<br />
while (central.connected()) {<br />
long currentMillis = millis();<br />
if (currentMillis &#8211; previousMillis &gt;= 50) {<br />
previousMillis = currentMillis;<br />
updateAngle();<br />
}<br />
}<br />
Serial.print(F(&#8220;Disconnected from central: &#8220;));<br />
Serial.println(central.address());<br />
}<br />
}<br />
</div>
<p>업로드를 하실 때 꼭 빨간 부분을 확인 하시고 업로드 버튼을 눌러줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-14.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38554" alt="60 쇼케 블루투스 수평계 (14)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-14.png" width="620" height="350" /></a></p>
<p>확인이 끝났으면 업로드 버튼을 눌러줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-15.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38555" alt="60 쇼케 블루투스 수평계 (15)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-15.png" width="620" height="350" /></a></p>
<p>이렇게 하면 보드에서는 기울기 신호를 연결되어 있는 블루투스 기기(핸드폰)로 보내주게 됩니다. 그럼 데이터가 수신되는 핸드폰의 애플리케이션에 대해 알아보기 전에 코드를 잠시 분석해 보도록 하겠습니다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>#include &lt;ArduinoBLE.h &gt;<br />
#include &lt;Arduino_LSM6DS3.h &gt;<br />
</div>
NANO 33 IoT보드에 내장된 블루투스와 6축센서를 사용하기 위한 라이브러리를 포함시키는 코드입니다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>BLEService DeviceInformation(&#8220;180A&#8221;);<br />
BLEFloatCharacteristic Weight(&#8220;2A98&#8243;, BLERead | BLENotify);<br />
BLEShortCharacteristic WeightMeasurement(&#8220;2A9D&#8221;, BLERead | BLENotify);<br />
</div>
UUID를 추가하는데 이미 쓰이고 있는 16BIT의 공식적인 UUID를 사용했습니다. 여기에서 DeviceInformation은 0000180a-0000-1000-8000-00805f9b34fb의 UUID로 게시가 되며, 밑에 Weight와 WeightMeasurement의 UUID도 진하게 표시된 부분만 바뀐 UUID로 게시가 됩니다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>float acc_x, acc_y, acc_z;<br />
float acc_pitc, acc_roll;<br />
short acc_pit, acc_rol;<br />
long previousMillis = 0;<br />
</div>
<p>프로그램에서 사용될 변수를 지정합니다. 저의 경우 임의로 위와 같은 이름을 지정했는데 편하신 이름으로 바꾸어도 됩니다. 피치와 롤값이 두 개인데 그 이유는 나중에 보내는 데이터를 소수점 2자리로 고정하기 위해 위와 같은 편법을 썼습니다.<br />
또한 Delay함수를 사용하지 않고 일정한 시간간격으로 지정된 동작을 하도록 하기 위해 previousMillis를 변수로 지정하였습니다. 이에 관한 자료는 아두이노 예제 중 BlinkWithoutDelay를 참고하시면 됩니다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>void setup() {<br />
Serial.begin(9600);<br />
if (!IMU.begin()) { //LSM6DS3센서 시작<br />
Serial.println(&#8220;LSM6DS3센서 오류!&#8221;);<br />
while (1);<br />
}<br />
if (!BLE.begin()) {<br />
Serial.println(&#8220;starting BLE failed!&#8221;);<br />
while (1);<br />
}<br />
</div>
<p>동작에 앞서 보드에 전원이 들어왔을 때 한번 실행될 Setup동작을 지정합니다. 여기에서는 6축센서와 BLE가 제대로 동작하는지 확인을 하게 됩니다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>BLE.setLocalName(&#8220;CaravanInfo&#8221;);<br />
BLE.setAdvertisedService(DeviceInformation);<br />
DeviceInformation.addCharacteristic(Weight);<br />
DeviceInformation.addCharacteristic(WeightMeasurement);<br />
BLE.addService(DeviceInformation);</p>
<p>Weight.writeValue(0);<br />
WeightMeasurement.writeValue(0);</p>
<p>BLE.advertise();<br />
</div>
<p>Setup구문 안에 있는 내용입니다.<br />
BLE 기기(NANO 33 IoT보드)가 공시할 이름과 서비스 UUID, 특성 UUID의 이름을 지정하고 초기값을 0으로 지정한 후 BLE신호를 주변에 뿌리도록 합니다.</p>
<div class="symple-box gray none" style="text-align:left; width:100%;"> 
<p>void loop() {<br />
BLEDevice central = BLE.central();<br />
if (central) {<br />
Serial.print(&#8220;Connected to central: &#8220;);<br />
Serial.println(central.address());<br />
while (central.connected()) {<br />
long currentMillis = millis();<br />
if (currentMillis &#8211; previousMillis &gt;= 50) {<br />
previousMillis = currentMillis;<br />
updateAngle();<br />
}<br />
}<br />
Serial.print(F(&#8220;Disconnected from central: &#8220;));<br />
Serial.println(central.address());<br />
}<br />
}<br />
</div>
<p>updateAngle 구문 이전에 loop문을 살펴보겠습니다.<br />
여기에서는 BLE기기(NANO 33 IoT보드)가 BLE central과 접속된 경우 시간을 재도록 하며 50ms(0.05초)가 지난 경우 updateAngle함수를 실행시키도록 합니다.</p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p>void updateAngle() {<br />
if (IMU.accelerationAvailable()) {<br />
IMU.readAcceleration(acc_x, acc_y, acc_z);<br />
//각도 계산(라디안을 각도로 180/PI = 57.27755)<br />
acc_pitc = RAD_TO_DEG * atan(acc_x / sqrt(acc_y *acc_y + acc_z *acc_z));<br />
acc_roll = RAD_TO_DEG * atan(acc_y / sqrt(acc_x *acc_x + acc_z *acc_z));</p>
<p>acc_pit = acc_pitc * 100;<br />
acc_rol = acc_roll * 100;</p>
<p>Serial.print(&#8220;pit = &#8220;);<br />
Serial.print(acc_pit);<br />
Serial.print(&#8220;, rol = &#8220;);<br />
Serial.println(acc_rol);</p>
<p>Weight.writeValue(acc_pit);<br />
WeightMeasurement.writeValue(acc_rol);<br />
}<br />
}</p>
</div>
<p>updateAngle내부가 가장 핵심적인 부분이라고 할 수 있습니다. 여기에서는 가속도 값을 받아 이를 통해서 기울기를 측정하게 되고 여기에서 나오는 피치값은 Weight UUID를 통해 송신하고 롤 값은 WeightMeasurement UUID를 통해 송신하게 됩니다.</p>
<p><span style="color: #0000ff;"><strong>3. 애플리케이션 제작</strong></span><br />
애플리케이션은 블록코딩으로 간단하게 만들 수 있는 앱인벤터를 이용하여 만들어 보도록 하겠습니다. (물론 기능을 여러 가지를 넣다보니 블록이 복잡해졌습니다.) 간단하게 만드실 분들은 블록을 참고하셔서 필요없는 부분은 과감히 삭제 하셔도 됩니다.<br />
먼저 애플리케이션을 만드는 앱 인벤터에 접속합니다.</p>
<p>http://ai2.appinventor.mit.edu/</p>
<p>접속시 로그인 화면이 뜹니다. google계정이 있다면 쉽게 로그인 할 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-16.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38556" alt="60 쇼케 블루투스 수평계 (16)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-16.png" width="263" height="302" /></a><br />
로그인 하면 아래와 같이 프로젝트를 만들 수 있습니다. ‘새 프로젝트 시작하기’를 눌러 프로젝트 이름을 넣어줍니다</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-17.png" rel="lightbox[38517]"><img alt="60 쇼케 블루투스 수평계 (17)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-17.png" width="620" height="329" /></a></p>
<p>레이아웃-수평배치를 드래그 하여 넣어줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-18.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38558" alt="60 쇼케 블루투스 수평계 (18)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-18.png" width="620" height="367" /></a></p>
<p>오른쪽의 속성창에서 너비는 부모 요소에 맞추어 줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-19.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38559" alt="60 쇼케 블루투스 수평계 (19)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-19.png" width="620" height="367" /></a></p>
<p>사용자 인터페이스에서 ‘목록 선택버튼’과 ‘버튼’을 하나씩 넣어줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-20.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38560" alt="60 쇼케 블루투스 수평계 (20)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-20.png" width="620" height="314" /></a></p>
<p>이런 식으로 하여 자신이 원하는 디자인의 앱을 만들어줍니다.<br />
저는 ‘보이기’ 기능을 이용하여 스크린을 두 페이지로 나누어 만들었습니다. (다른 스크린에 들어가더라도 블루투스 연결을 유지하기 위해서입니다.)</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-21.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38561" alt="60 쇼케 블루투스 수평계 (21)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-21.png" width="620" height="427" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-22.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38562" alt="60 쇼케 블루투스 수평계 (22)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-22.png" width="620" height="427" /></a></p>
<p>이제 동작이 되도록 하기 위하여 각 버튼에 코딩을 해주어야 합니다.<br />
오른쪽 윗 부분에 ‘블록’을 클릭하여 줍니다. 제가 만든 수평계의 블록구성은 아래와 같습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-23.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38563" alt="60 쇼케 블루투스 수평계 (23)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-23.png" width="620" height="315" /></a></p>
<p>기능을 하나 두 개 추가하다보니 블록의 개수가 많아졌네요. 확대하여 하나씩 확인해보고 그 기능에 대해 설명해 드리도록 하겠습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-24.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38564" alt="60 쇼케 블루투스 수평계 (24)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-24.png" width="620" height="281" /></a></p>
<p>먼저 변수들을 지정해줍니다. BLE기기의 데이터를 받아오기 위해서는 서비스 UUID와 특성 UUID가 지정되어야 하며, 각 UUID를 통해 데이터가 전송될 수 있습니다. Classic Bluetooth보다 복잡하긴 하지만 동시에 여러 개의 데이터를 독립적으로 전송한다는 데에 큰 장점이 있습니다. 이제 연결을 위한 버튼인 SCAN, 연결하기, 연결끊기가 동작하는 코드에 대하여 알아보도록 하겠습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-25.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38565" alt="60 쇼케 블루투스 수평계 (25)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-25.png" width="620" height="193" /></a></p>
<p>먼저 SCAN버튼입니다.<br />
SCAN버튼을 누르면 주변 BLE기기를 스캔하게 됩니다. 이때 스캔된 기기를 블루투스 리스트에 하나씩 추가하게 되는데, 저는 블루투스 리스트를 평소에 안보이도록 해두었기 때문에 블루투스 보이기 값을 ‘참’으로 바꾸어 주는 코드를 더 추가 하였습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-26.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38566" alt="60 쇼케 블루투스 수평계 (26)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-26.png" width="620" height="66" /></a></p>
<p>주변의 블루투스 코드가 발견되면 블루투스 리스트를 추가하도록 하는 코드입니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-27.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38567" alt="60 쇼케 블루투스 수평계 (27)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-27.png" width="620" height="240" /></a></p>
<p>이제 블루투스 리스트에서 하나의 항목을 선택한 후 ‘연결하기’버튼을 누르면 항목 번호로 연결이 실행됩니다. 나중에 자동연결을 위하여 이때 연결되는 기기의 MAC주소를 ‘saveDevice’라는 태그로 TinyDB에 저장해두게 됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-28.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38568" alt="60 쇼케 블루투스 수평계 (28)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-28.png" width="620" height="136" /></a></p>
<p>마지막으로 연결끊기를 누르면 BLE연결을 끊고 블루투스 리스트를 안보이도록 해줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-29.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38569" alt="60 쇼케 블루투스 수평계 (29)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-29.png" width="620" height="240" /></a></p>
<p>블루투스가 연결되었다면 상태 메세지를 “블루투스가 연결되었습니다.”로 바꾸고 수평계 화면을 보이도록 하며, 블루투스가 끊어졌다면 “블루투스가 끊겼습니다.”로 상태 메시지를 바꾸고 수평계 화면을 안보이도록 하는 동작입니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-30.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38570" alt="60 쇼케 블루투스 수평계 (30)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-30.png" width="620" height="240" /></a></p>
<p>위에 코드는 애플리케이션이 초기화되었을 때(시작할 때) 자동연결하도록 하는 코드입니다. 만약 연결되었던 기기가 있었다면 자동연결을 실행하도록 하게 되며, TinyDB저장된 기기의 MAC 어드레스를 불러와 연결을 시도하게 됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-31.png" rel="lightbox[38517]"><img alt="60 쇼케 블루투스 수평계 (31)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-31.png" width="620" height="107" /></a><br />
핸드폰에서 뒤로 가기 버튼을 눌렀을 때의 동작을 지정해줄 필요가 있습니다. 만약 뒤로가기로 종료가 되는 경우 앱은 새로 시작하는데 블루투스의 연결을 유지되는 현상이 발생하는 경우가 있기 때문에 뒤로가기 버튼이 눌리는 경우 동작할 코드를 따로 지정해줍니다. 저는 블루투스의 연결을 끊고 애플리케이션을 종료하도록 하였습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-32.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38572" alt="60 쇼케 블루투스 수평계 (32)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-32.png" width="619" height="309" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-33.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38573" alt="60 쇼케 블루투스 수평계 (33)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-33.png" width="619" height="377" /></a></p>
<p>수평계에서 핵심적인 코드입니다. 블루투스 연결이 유지되는 동안 같은 동작을 반복합니다. 두 개의 UUID에서 전송하는 값을 받아와 이를 필요한 데이터로 계산하는 과정을 거칩니다. 이후 이 값을 출력하고, 차량의 정면사진과 측면사진을 회전시켜 쉽게 확인 가능하도록 하는 동작을 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-34.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38574" alt="60 쇼케 블루투스 수평계 (34)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-34.png" width="619" height="94" /></a></p>
<p>이 블루투스 수평계를 사용하는 사람마다 차량의 상태가 다르기 때문에 차량 설정하는 창을 열어주는 버튼의 동작코드입니다. 스크린을 바꿀 수도 있지만 스크린이 바뀌는 경우 블루투스 연결이 끊어지기 때문에 저는 화면이 꽉차는 레이아웃을 크게 두 개를 만들고 차량설정으로 들어가는 경우 첫 번째 레이아웃을 안보이도록 하고 두 번째 레이아웃을 보이게 하여 블루투스 연결을 유지하도록 하였습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-35.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38575" alt="60 쇼케 블루투스 수평계 (35)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-35.png" width="620" height="182" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-36.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38576" alt="60 쇼케 블루투스 수평계 (36)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-36.png" width="620" height="472" /></a><br />
블루투스 수평계를 차량에 설치한 경우 정확히 수평인 곳에 설치될 가능성은 거의 없습니다. 그렇기 때문에 영점을 조절할 수 있는 버튼을 넣어 영점조정을 눌러 현재의 기울기 값을 저장해 측정값에서 기준값을 빼주도록 하였습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-37.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38577" alt="60 쇼케 블루투스 수평계 (37)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-37.png" width="620" height="140" /></a></p>
<p>혹시나 잘못된 BLE기기와 연결되는 경우 잘못된 값을 받아와 계속 오류가 나게 되는데, 이를 해결하기 위하여 자동연결을 초기화 시키는 버튼이 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-38.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38578" alt="60 쇼케 블루투스 수평계 (38)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-38.png" width="620" height="252" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-39.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38579" alt="60 쇼케 블루투스 수평계 (39)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-39.png" width="620" height="601" /></a><br />
차량 설정 페이지 안에서는 다양한 값을 변경할 수 있습니다. 차량마다 그 길이와 너비가 다르기 때문에 각자의 차량에 맞도록 길이와 너비를 지정해 줄 수 있으며, 좀 더 애정이 가도록 이미지도 자신의 차량에 맞도록 변화시켜줄 수 있습니다. 또한 소수점의 개수를 변경시켜 보이는 민감도도 변화시켜줄 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-40.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38580" alt="60 쇼케 블루투스 수평계 (40)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-40.png" width="620" height="144" /></a></p>
<p>수평계를 충전잭 위치에 따라 앞뒤를 바꾸어 연결할 수 있도록 앞뒤를 변경하는 버튼을 추가하였습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-41.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38581" alt="60 쇼케 블루투스 수평계 (41)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-41.png" width="620" height="486" /></a></p>
<p>이렇게 다양하게 차량을 설정한 값이 애플리케이션을 껐다고 사라지면 안되기 때문이 이 모든 값은 TinyDB에 저장을 하게 됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-42.png" rel="lightbox[38517]"><img class="alignnone size-large wp-image-38582" alt="60 쇼케 블루투스 수평계 (42)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-42-578x620.png" width="578" height="620" /></a></p>
<p>그리고 애플리케이션이 초기화 되는 경우(새로 앱을 실행시킨 경우) TinyDB에 저장된 값을 불러오게 되며, 자동 연결시도를 하게 됩니다.<br />
처음 애플리케이션을 만들었을 때는 코드가 매우 적었습니다만 점점 오류를 해결하고 편의기능을 넣다보니 코드가 점점 늘어났습니다. 위 코드에서 원하는 부분만 발췌하여 사용하시더라도 수평계 애플리케이션을 만들 수 있습니다.</p>
<p><span style="color: #0000ff;"><strong>4. 애플리케이션 설치 및 동작확인하기</strong></span><br />
이제 핸드폰(블루투스 4.0이상)에 만들어진 앱을 설치하고 사용해봅니다. 애플리케이션의 링크는 다음과 같습니다. (https://play.google.com/store/apps/details?id=appinventor.ai_jinsub8506.Caravan_check) 혹은 구글 플레이에서 “카라반 블루투스(BLE) 수평계”를 검색하여 다운로드 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-1.jpg" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38540" alt="60 쇼케 블루투스 수평계 (1)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-1.jpg" width="620" height="365" /></a></p>
<p>애플리케이션을 실행한 후 ‘SCAN’을 눌러 주변에 NANO 33 보드를 검색한 후 ‘연결하기’를 누르면 카라반의 수평수치가 표시되는 것을 확인할 수 있습니다.<br />
이후 다시 애플리케이션을 실행시키면 마지막에 접속되었던 블루투스 기기를 검색하여 자동으로 연결됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-43.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38583" alt="60 쇼케 블루투스 수평계 (43)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-43.png" width="620" height="484" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-44.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38584" alt="60 쇼케 블루투스 수평계 (44)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-44.png" width="620" height="501" /></a></p>
<p>차량 설정에서는 자신의 카라반에 대한 설정을 할 수 있습니다.<br />
자신의 카라반의 크기, 표시되는 소수점의 개수를 조절할 수 있으며 화면에 나오는 카라반의 사진을 바꿀 수도 있습니다.<br />
수평조정 버튼은 현재의 기울기를 0으로 놓는 영점조절 버튼입니다.<br />
혹시 앞뒤를 바꾸어야하는 상황이라면 전후 좌우 변경 버튼으로 유동적으로 사용할 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-45.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38585" alt="60 쇼케 블루투스 수평계 (45)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-45.png" width="620" height="475" /></a></p>
<p>이처럼 NANO 33 보드를 사용하면 별도의 회로 구성없이 원격에서 수평수치를 받아볼 수 있습니다.</p>
<p><span style="color: #0000ff;"><strong>5. 자주 묻는 질문</strong></span><br />
<span style="text-decoration: underline; color: #ff6600;">Q1. 뭘 사야하나요?</span><br />
녹색창에 &#8220;NANO 33 IoT&#8221;를 검색하셔서 나오는 보드를 사시면 됩니다. (뒤에 길게 있는 숫자는 의미 없는 듯합니다.) 핀이 있는 모델과 없는 모델은 기능상 차이는 없고 추후 어떻게 사용할지의 차이입니다.</p>
<p><span style="text-decoration: underline; color: #ff6600;">Q2. 컴퓨터와 보드를 연결하여 보드에 녹색불이 들어오지만 포트가 잡히지 않습니다.</span><br />
보드와 연결한 Micro 5핀 케이블이 충전 전용 케이블인듯 합니다. 데이터 케이블을 사용하셔야 컴퓨터와 보드간의 통신이 가능합니다. 혹시 이런 현상이 있을 경우에 핸드폰과 컴퓨터를 연결하여 핸드폰이 컴퓨터에서 인식이 되는지 확인해보시면 데이터 케이블인지 아닌지를 쉽게 판단 가능합니다.(핸드폰이 내 PC에 떠야 데이터 케이블입니다.)</p>
<p><span style="text-decoration: underline; color: #ff6600;">Q3. 카라반 어디에 설치하는게 좋나요?</span><br />
카라반 어디든 설치하셔도 됩니다. 기울어진 곳에 설치해도 괜찮으나 너무 큰 각도로 기울어지면 정밀도가 낮아집니다. 가급적이면 평평한 곳에 설치하시되 꼭 긴방향이 카라반의 전면 또는 후면을 바라보도록 나란히 설치해주시면 됩니다.</p>
<p><span style="text-decoration: underline; color: #ff6600;">Q4. 전원 연결은 어떻게 하나요?</span><br />
전원 연결 시 USB-5핀 단자를 이용하면 5V전기를 이용하시면 됩니다. 시가잭에 꼽는 5V USB단자를 이용하시면 됩니다. 만약 12V의 배터리를 직결하시고 싶다하시면 배터리의 +를 보드의 VIN에, 배터리의 -를 보드의 GND에 연결하시면 됩니다.(24V는 안됩니다.)</p>
<p><span style="text-decoration: underline; color: #ff6600;">Q5. 보조배터리로 전원을 공급하면 10~30초 후 보드의 전원이 꺼집니다.</span><br />
제 생각에 보조배터리는 충전용으로 많이 쓰이기 때문에 과충전 방지기능이 들어있어 적은 전류를 소비하는 경우 전기를 차단하는 경우가 있습니다. 아마도 이때문에 보드의 전원이 꺼지는 듯합니다. 웬만하면 카라반의 전기를 연결하는 방식을 추천합니다.</p>
<p><span style="text-decoration: underline; color: #ff6600;">Q7. 보드를 사서 어플만 깔면 바로 사용가능한가요.?</span><br />
아쉽지만 아닙니다. &#8216;아두이노 통합 소프트웨어&#8217;를 설치하신 후 내부에서 3번의 내부파일을 설치하시고 소스코드를 업로드 해야합니다. 글에서 만드는 과정을 꼭 봐주세요.</p>
<p><span style="color: #0000ff;"><strong>6. 아두이노 보드를 잘못 구입한 경우</strong></span><br />
가끔 실수로 IoT보드가 아닌 BLE나 BLE Sense보드를 구입하는 경우가 있습니다. 이런 경우 환불이나 버리실 필요는 없고 약간 다른 방법으로 수평계 만들기가 진행됩니다. BLE보드는 IoT보드와 달리 WiFi기능은 없으나 오히려 블루투스 5.0을 이용하므로 사용가능 거리가 더 길다는 장점이 있습니다.<br />
다른 부분은 IoT보드를 세팅하는 과정과 동일한 과정을 거치나 NANO 33 BLE를 추가할 때에는 검색창에 &#8220;NANO 33&#8243;이라고 검색한 후 IoT와 달리 &#8216;Arduino nRF528x Boards&#8217;를 확인하고 설치합니다. 보드를 설치하고 다시 보드 옵션을 확인해보면 Arduino NANO 33 BLE를 확인할 수 있습니다. NANO 33 BLE를 선택하여 보드를 설정해줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-46.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38586" alt="60 쇼케 블루투스 수평계 (46)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-46.png" width="620" height="237" /></a></p>
<p>블루투스 수평계를 만들기 위하여 IoT보드와 달리 “LSM9DS1”이라는 9축센서와 블루투스 기능의 라이브러리를 얻어야합니다. 이를 위해 Arduino Software (IDE)에서 사용 가능한 라이브러리 관리자를 열어줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-47.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38587" alt="60 쇼케 블루투스 수평계 (47)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-47.png" width="620" height="235" /></a><br />
라이브러리 관리에서 “LSM9DS1”과 “ArduinoBLE”를 검색후 설치 버튼을 눌러줍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-48.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38588" alt="60 쇼케 블루투스 수평계 (48)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-48.png" width="620" height="235" /></a><br />
보드와 라이브러리를 설치하였으면, 이후 과정을 NANO 33 IoT보드와 완전히 동일하게 진행되게 됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-49.png" rel="lightbox[38517]"><img class="alignnone size-full wp-image-38589" alt="60 쇼케 블루투스 수평계 (49)" src="http://www.ntrexgo.com/wp-content/uploads/2020/06/60-쇼케-블루투스-수평계-49.png" width="620" height="245" /></a></p>
<p>이 글을 보시고 계시는 분들이 무언가를 만들 때 한 줄이라도 도움이 되었으면 좋겠다는 마음으로 제가 만들어 보었던 ‘블루투스 수평계’를 만드는 방법에 대해 알려드렸습니다.</p>
<p>&nbsp;</p>
<h3><a href="https://www.devicemart.co.kr/goods/view?no=12196582" target="_blank">Arduino Nano 33 IoT 제품 상세보러가기</a></h3>
<p><strong><a href="https://www.devicemart.co.kr/goods/view?no=12229354" target="_blank">Arduino Nano 33 IoT with headers 제품 상세보러가기</a></strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38517/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[60호]Grove &#8211; PH 센서 키트 (E-201C-Blue) 출시</title>
		<link>http://www.ntrexgo.com/archives/38480</link>
		<comments>http://www.ntrexgo.com/archives/38480#comments</comments>
		<pubDate>Mon, 01 Jun 2020 06:08:08 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[SEEED]]></category>
		<category><![CDATA[디바이스마트매거진]]></category>
		<category><![CDATA[센서 키트]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=38480</guid>
		<description><![CDATA[디바이스마트매거진 60호ㅣGrove - PH 센서 키트 (E-201C-Blue) 출시
]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="https://lh4.googleusercontent.com/zGIcX22DkibDujae-7ukNSOIAiuo10qye6N9hDLv3_CSYM1k-Tf9V866KEehqSQtT3VJZyK7G_l4rcbFprVCFxzTPeJEPeH7JM_oA6cTCIfoBkcFMefMvDFJ3k5TcMAwr9MYQK5r" width="364" height="320" /></p>
<p><span style="background-color: #000000; color: #ffffff;"><strong>Seeed</strong></span></p>
<p><span style="font-size: x-large;"><strong>Grove &#8211; PH 센서 키트 (E-201C-Blue) 출시</strong></span></p>
<p>PH 측정기는 화학 산업, 제약 산업, 염료 산 업 및 산도 및 알칼리도 테스트가 필요한 과 학 연구에 널리 사용되는 장비이다. 사용하기에 쉽고 가성비 좋은 PH센서를 찾 고 있었다면 이 센서 키트를 주목해봐도 좋다. 오픈소스 하드웨어 혁신 플랫폼 Seeed에서 새롭게 출시한 PH 센서 키트는 수성 용액에 서 수소 이온 활동을 측정하며 일반적으로 액 체의 PH를 측정하는 데 사용된다. 이 키트의 드라이브 보드는 3.3V 및 5V 시 스템을 모두 지원하며 stander BNC 프로브 인터페이스와 Grove 커넥터를 사용하면 아두 이노와 라즈베리파이와도 함께 사용이 가능 하다. 사용 방법이 동영상으로 제작되어 있어 서 혼자서도 쉽게 사용할 수 있을 것이다. 다만 사용 시 주의 사항이 몇 가지 있다면 측정하기 전에 전극은 알려진 PH값의 표준 버퍼 용액으로 교정해야 한다. 측정이 완료되면 전극 보호 슬리브를 착용해야 하며 출력의 양쪽 끝에 단락이 발생하지 않도록 전극의 선 단을 깨끗하고 건조하게 유지해야 한다. 그렇 지 않으면 측정 결과가 부정확하거나 유효하 지 않게 되니 주의하도록 하자. PH센서를 비롯해 EC센서와 ORP센서도 같 이 출시되었으며 더 자세한 사양은 디바이스 마트에서 확인할 수 있다.</p>
<p><img alt="" src="data:image/png;base64,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" /></p>
<p><a href="https://www.devicemart.co.kr/goods/view?no=12546560"><strong>PH 센서 키트 바로 확인하기 </strong></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38480/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[60호]아두이노를 활용한 STEAM 교육 키트! Crowtail 스타터, 어드밴스, 디럭스 키트 출시</title>
		<link>http://www.ntrexgo.com/archives/38476</link>
		<comments>http://www.ntrexgo.com/archives/38476#comments</comments>
		<pubDate>Mon, 01 Jun 2020 05:59:53 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[60호]]></category>
		<category><![CDATA[Crowtail]]></category>
		<category><![CDATA[STEAM 교육]]></category>
		<category><![CDATA[디럭스 키트]]></category>
		<category><![CDATA[디바이스마트. 매거진]]></category>
		<category><![CDATA[스타터]]></category>
		<category><![CDATA[아두이노]]></category>
		<category><![CDATA[어드밴스]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=38476</guid>
		<description><![CDATA[디바이스마트매거진 60호ㅣ아두이노를 활용한 STEAM 교육 키트! Crowtail 스타터, 어드밴스, 디럭스 키트 출시]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="https://lh4.googleusercontent.com/nOHWvK0xwWqCNt22grARXqIpA482lp3wsHKfcOwAziHk5jiio_SgZL6wfkwdWmMaDqCpdAQX9sbGW2z2fMpgImAIdoX_cvQYtZQiywsSQb1GjZFusQ4TbQEEXPBjxFXwcEjDMp9N" width="196" height="206" /><img alt="" src="https://lh6.googleusercontent.com/n9S10N2tX0HmGyM4-us-QBDmGvH8A2JuNGprcF8dvgv5eEtSkN_spPQWBFkH9tYOHTMRJahEucG77IBNQeGn6E1yhC_w_MfG89-LI4UXYzl5DVv09GUZ7HVKRVTFg_iZuuTnTE27" width="200" height="194" /><img alt="" src="https://lh5.googleusercontent.com/SOXSYHNMCIKpDeFMTXJFxp4__-o2WWbs1-aq12IEhJAcTalD6Zm6UO7abnCMEQStIeMzHg0rFYh12T2JE3fwHp96gKVbPlcAdZJBlUIyGecyQSVNtRM_EWFDQ88GCFM5gCT4uEIZ" width="191" height="211" /></p>
<p><span style="background-color: #000000; color: #ffffff;">ELECROW</span></p>
<p><strong><span style="font-size: x-large;">아두이노를 활용한 STEAM 교육 키트! Crowtail 스타터, 어드밴스, 디럭스 키트 출시</span></strong></p>
<p>ELECROW는 오픈소스 하드웨어 기반 연구, 개발, 생산, 판매까지 원스톱 OEM 솔루션을 제 공하는 브랜드이다. 최근 아두이노용 Crowtail 스타터, 어드밴스, 디럭스키트 총 3종을 출시해 고품질 콘텐츠를 제공하고 있다. 위 세 가지 키트 모두 각각 기능이 다양한 Crowtail 모듈로 구성되어 있고 플러그 앤 플레 이 방식으로 번거로운 납땜 및 복잡한 배선이 없 다. 또한, 간단한 것부터 어려운 것까지 단계별로 20개의 흥미롭고 유익한 튜토리얼이 포함되어 있어 단계별로 학습함과 동시에 전자 모듈에 익 숙해지고 논리적 사고를 연습할 수 있다. 각각의 Crowtail 모듈에 대한 문서와 라이브 러리를 제공하기 때문에 각 모듈의 사용법 또한 ELECROW 위키를 통해 확인할 수 있다. Crowtail 스타터, 어드밴스, 디럭스키트는 STEAM 교육을 위해 연구 개발되었다. Crowtail스타터는 기본 센서의 원리와 용도를 다뤄 초보 자가 쉽고 재미있게 Arduino를 시작하기에 적 합하고, 어드밴스 키트는 디지털 신호, 아날로 그 신호, 디지털-아날로그 변환, 디스플레이 시 스템 등을 익힐 수 있어 이미 전자 공학 및 프로 그래밍 기술에 대한 지식이 있는 상태에서 논리/ 사고/프로그래밍 기능 등을 지속해서 학습하고 강화할 수 있다. 마지막으로 디럭스 키트는 무선 원격 제어, 장애물 회피 등 아이디어를 다양화하고 더 복잡한 전자 부품의 작동 및 프로그램 방 법을 배워 프로젝트를 달성하게끔 도와준다. 코딩, 전자 제품 및 Arduino에 관심이 있지만 어디서부터 시작해야 할지 모르겠다면 학생, 교 사, 메이커 모두 개개인에 알맞은 키트를 선택해 아두이노와 각종 모듈, 프로그래밍까지 쉽고 재 미있게 시작해보길 바란다.</p>
<p><a href="https://www.devicemart.co.kr/goods/search?keyword_log_flag=Y&amp;search_text=SEA000&amp;q=SEA000&amp;x=0&amp;y=0">관련제품 바로 확인하기 </a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/38476/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
