[39호]2016 로보월드
Lead to the future!
2016 로보월드
글 | 이용동 책임기자 bluelyd@ntrex.co.kr
산업통상자원부가 주최하고 한국로봇산업협회 등 4개 기관이 주관하는 ‘2016 로보월드(ROBOT WORLD 2016)’가 일산 킨텍스에서 10월 12일부터 16일까지 5일간 열렸다. 지난 2006년 첫 개최 이후 올해로 11회를 맞이한 ‘2016 로보월드’는 ‘미래로 인도’(Lead to the future)라는 주제로 로봇전시회, 경진대회, 홍보관, 컨퍼런스, 무인기 표준화 콩그레스 등이 동시에 진행됐다. 특히 로보월드는 수출상담회를 병행하는 비즈니스 중심 전시회로서 중국·싱가폴·말레이시아 등 신흥국 바이어를 초청했다.
이번 전시회에는 12개국 219개사가 480개 부스에 참가해 제조용·서비스용 로봇, 부품 등이 전시됐다. 또한 함께 진행된 국제로봇컨퍼런스 행사에서는 미국, 벨기에 등 총 7개국, 12명의 연사가 초청돼, 의료·생체·구조·로봇응용 4개 세션 분과로 기술포럼이 열렸고, 무인기 관련 분야에서도 국내외 전문가 25명이 기술활용 전망 등을 발표했다. 또한 중앙정부 6개 및 지자체 4개의 정책 발표, 농업·안전·촬영 등 각 분야별 활용 및 표준을 중심으로 컨퍼런스도 열렸다.
이번 ‘2016 로보월드’에서 처음 구성된 것으로 알려진 ‘의료로봇미래관’은 미래컴퍼니가 국내에서 최초로 개발해 최근 첫 임상시험에 성공한 복강경 수술로봇 ‘레보아이(Revo-i)’, 고영테크놀러지는 뇌 수술로봇의 일종인 DBS(Deep Brain Stimulation) 가이드 로봇, KIST가 비강 수술로봇을 선보여 국내의 우수한 의료로봇 기술을 만나볼 수 있는 자리가 되었다. 또한 현대중공업 부스 관계자는 로봇을 이용하면 사람이 직접 하는 것보다 더 정확하고 안전하게 ‘바늘삽입형 중재시술’을 할 수 있으며, 암과 같은 질병에 있어서 CT 촬영을 할 필요 없이 이 로봇을 이용하면 질병 위치를 정확히 파악할 수 있다고 설명했다.
관상어 로봇 전문 벤처기업인 주식회사 아이로(대표 오용주)는 세계 최초 비단잉어 로봇의 상용화 버전을 시연했다. 아이로는 이미 한국로봇산업진흥원이 주관하는 ‘2015년 시장 창출형 테스트베드 보급사업’을 진행하면서 대형 관상어 로봇(MIRO-9.0, 53cm) 및 중형 관상어 로봇(MIRO-7.0, 33cm)의 도미 버전을 각각 출시한 바 있다. 이번 전시회에서는 기존 비단잉어의 색감과 특징을 회화적으로 구현한 매화나무 문양(일명 ‘매화 로봇’)을 비롯한 3종의 디자인을 선보였다. 특히 관람객들이 비단잉어 로봇을 통해 살아있는 비단잉어와 흡사한 유영을 감상할 수 있도록 로봇에 새로운 프로그램을 장착하여 실제 물속에서 헤엄치고 다니는 비단잉어 로봇들을 확인할 수 있었다.
한편 관상어 로봇 제조를 넘어서 수중환경에서 가상현실기술 및 증강현실기술 등을 활용한 서비스 영역도 적극 개발할 계획이라고 업체 관계자는 밝혔다.
교육용 로봇 기업 ㈜로보로보는 이번 전시회에서 기존 다양한 로봇 라인과 함께 신제품 2종 유아용 코딩 로봇 ‘유아로(UARO)’와 휴머노이드형 로봇 ‘로맨보(ROMANBO)’를 선보였다. 코딩 로봇 유아로는 미취학 아동을 위한 코딩 교육 로봇으로, ‘만지는 코딩 시스템’이 도입된 제품이다. NFC 무선 통신이 적용된 코딩 블록과 코딩 보드를 이용하여 PC나 스마트기기에 익숙하지 않은 유아들이 완구를 가지고 놀듯이 손쉽게 코딩을 배울 수 있도록 구성되어 있다. 또한 아이들의 학습을 도와주는 교육 활용 콘텐츠를 포함하고 있어 체계적인 학습도 가능하다. 교육용 휴머노이드 로봇 로맨보(ROMANBO)는 이족보행 로봇으로 사람처럼 두 발로 보행이 가능한 로봇 제품이다. 또한 로보로보 GUI 코딩 프로그램인 ‘로직(Rogic)’ 시스템을 접목하여 모션 제작이 전부였던 휴머노이드 로봇에 처음으로 코딩 교육을 접목해 교육과 놀이를 모두 로봇에 집약시켜 한 단계 발전된 로봇으로 로봇 시장에 새로운 도전장을 내밀었다.
‘엠텍’은 창의력 및 두뇌발달에 도움을 주는 블럭장난감 ‘모듈로3’를 선보였다. 모듈로3는 센서, 모터 등을 결합해 구동이 가능하다. 엠텍의 이학용 이사는 “모듈로3는 다양한 형태의 로봇 완구로 응용할 수 있고 교육용으로도 활용될 수 있는 제품”이라고 했다. 특히 이 제품은 모듈로 사용되는 각 도형 사이의 연결고리를 녹말가루 이쑤시개와 유사한 재료인 옥수수 전분 바이오 소재로 만들어 인체에 무해하고, 이를 통해 국내특허 5개와 국제특허 4개를 보유하고 있다. 아이들의 장난감인 만큼, 만지고 입에 넣는 등 유해성 여부가 중요한 부분인데, 이런 면에서 엠텍의 모듈로3는 부모들이 걱정하는 유해성 부분에서 많은 장점을 가지고 있는 제품이다.
기자가 방문한 개막일(12일), 전시회장 한 쪽에서는 오전 10시부터 1시간 동안 ‘로봇의 아버지’로 불리는 로드니 브룩스(매사추세츠공대(MIT) 교수 출신의 로드니 브룩스 리씽크로보틱스 회장 겸 최고기술경영자(CTO))의 기자간담회가 펼쳐졌다. 그는 인공지능 로봇이 인류를 위협할 수 있다는 일각의 우려에 대해 “과도한 생각”이라면서, “로봇이 인간 수준의 인지능력을 갖추려면 500년은 족히 걸릴 것이며, 로봇이 정해진 특정 업무를 잘할 순 있지만, 인간처럼 모든 일을 전체적으로 잘하는 것은 불가능하다”고 말했다. 그는 이어 “사람이 쓰다듬으면 반응을 하는 강아지 모양의 로봇이 있는데 실제로 이 로봇이 쓰다듬는 것을 인지하는 것은 아니다”라면서 “로봇에 너무 많은 기대를 하는 것 역시 실망감을 낳을 수 있으며 기계는 기계로 남는 것이 좋다”고 덧붙였다.
또한 전문 프로그래머가 필요한 산업용 로봇과 달리 간단한 교육을 받으면 현장에서 쉽게 작동할 수 있는 데다가 안전센서가 작동하기 때문에 안전성도 더 뛰어나다는 장점으로 인해 공장 등에서 사람이 하는 일을 대신할 로봇으로서 제조업 분야에서 특히 주목을 받고 있는 ‘협업 로봇’에 대해서도 “선진국은 물론 개발도상국에서도 사람들이 점점 공장에서 일하지 않으려고 하고 인건비도 많이 오르면서 공장에서는 오히려 사람을 구하기 어려운 상황”이라며 “협업 로봇은 사람이 기피하는 부분을 채워주는 보완적인 역할을 할 것”이라고 말해 현재 인간들이 걱정하는 여러 현안에 대해서 ‘걱정할 단계가 아니다’는 종합적인 의견을 피력했다.
국내 업체인 SF태후의 부스는 유난히 남성 관람객들이 많이 북적이는 부스였다. 부스에는 실제 크기가 약 3M에 육박할 정도의 거대한 로봇들이 전시되어 있었다. 그 중에서 블랙이글 T-01 로봇은 사람이 직접 탑승해 조종을 할 수도 있는 유인 로봇이다. 만화영화에나 나올 법한 로봇들이 실제로 부스에 자리잡고 있으니, 어렸을 적부터 건담과 같은 멋진 로봇들에 대한 환상을 가지고 있는 많은 관람객들이 오랜 시간 감상하는 것을 볼 수 있었고, 실제로 구동하는 모습을 시연하지는 않았지만 꽤 디테일이 살아있는 로봇들은 충분히 멋있었고 엄청난 포스를 자랑했다. 업체 관계자는 “SF태후의 로봇은 100% 주문 제작이 이뤄지고, 고객이 원하는 로봇의 기능, 용도, 디자인에 따라 제작 기간과 비용이 달라진다”고 밝혔다.
부천로봇부품산업관에 자리한 IRROBOT은 리니어 서보 엑추에이터 제품(상품코드 : 1290492)과 휴머노이드 로봇(상품코드 : 1324923)을 선보였다. 특히 최근 출시된 휴머노이드 로봇 IRONBOY(IRH-100) 제품은 아두이노 오픈소스 플랫폼 로봇 제품으로, 6축 자이로, 블루투스 모듈, 아두이노 기능을 포함한 올인원 메인보드 기반의 로봇으로, 100개의 기본 모션이 제공/저장되어 있는 스마트폰으로 컨트롤이 가능한 로봇 제품이다. 업체 관계자는 “해박한 전자 지식이 없어도 메인보드인 IRDuino를 제어할 수 있으며, 아두이노와 같은 역할을 하는 보드이기 때문에 C언어를 배우기 위해서도 최적의 솔루션”이라고 설명했다. 일반적으로 다른 휴머노이드 로봇이 100만원이 넘어가는 고가 제품임에 비해, IRONBOY 제품은 80만원대의 가격으로 경쟁력을 확보했다.
한 가지 특이했던 점은, 이번 2016 로보월드에서는 제조용 로봇관을 ‘미성년자 출입 금지’ 또는 ‘Business Only’로 운영했다는 점이다. 제조용 로봇관은 안전사고의 위험이 있어 19세 이하의 출입을 통제한다고 표시되어있고, 해당 로봇관에 입장을 하기 위해서는 좁은 문을 통해야 했으며, 그 과정에서 지정 인원이 관람객의 출입을 통제하였다.
실질적으로 안전사고의 위험을 내포했다고 할 만큼 위험한 장비는 지난 전시회였던 ‘국제정밀자동화기기전’보다 없었음에도, 특별하게 학생들(비지니스 관람객을 제외하면 학생들 말고는 없다)을 통제하는 것이 어떤 큰 메리트가 있는지 기자 개인적으로는 알 길이 없다. 물론 제조업체들의 전시가 결국 기업의 매출이나 발전과 가장 직접적인 연관이 있지만, 신기술을 선보이는 자리라는 의미에서는 자라나는 꿈나무인 학생들에게도 그 기술을, 그것도 전시회에서는 볼 권리가 있지 않나하는 생각이 들어 실질적으로는 사람이 많지 않아 관람이 수월했음에도 약간의 불편한 마음은 지울 수 없었다.
한국과학기술연구원(KIST)에서 개발한 한국 최초의 달 탐사 로봇(한국형 달탐사 로버)은 관람객들의 발길을 붙잡기 충분했다. 1m 길이의 달 탐사 로봇은 4개의 바퀴를 이용해 달 표면을 이동하며 암석을 채취하고 실험장비를 싣고 여러 연구를 보조하는 역할을 한다. 이 로봇은 기존 달 탐사 로버와 차별화된 기구부 메커니즘, 몸체에 구동 모터를 수납하여 효과적인 열 제어 기술 확보 등으로 현재 한국의 달 탐사 관련 로봇의 기술력을 검증하는 데에도 좋은 역할을 해내고 있다.
이 외에도 KIST는 이번 전시회에서 위험 작업 로봇인 Robhaz, Miders와, 메세 수술로봇 등을 선보여 진보되고 다양한 기술들로 선보여 관람객들의 많은 관심을 끌었다.
이번 2016 로보월드를 통해 많은 기업들은 지능정보기술을 적용해 좀 더 똑똑해진 로봇을 선보이며 로봇 기술의 진보를 증명했다. 기존의 단순히 반복되는 동작만 하던 로봇이 학습이 가능해지고 이로 인해 다양하고 스마트한 동작들을 할 수 있게 되면서 로봇의 활용도가 점점 더 높아질 것으로 보인다. 또 로봇 산업이 활기를 띠면서 과거와 비교해 점차 로봇 구매 비용이 낮아지고 있는 로봇 시장의 추세도 엿볼 수 있었다. 수십 만원에 구입 가능한 가정용 로봇들이 나오고 있으며, 의료용 로봇 등 특수 목적용 로봇도 과거 수억 원에서 현재는 수백 만~수천 만원으로 가격이 낮아졌다. 이런 추세로 볼 때, 앞으로는 로봇 구매 비용이 좀 더 낮아지고 활용 범위가 넓어지면서 로봇의 이용이 확산될 것으로 전망하며 관람기를 마친다.
[39호]2016 국제자동화정밀기기전
자동화, 스마트를 입다!
2016 국제자동화정밀기기전
글 | 이용동 책임기자 bluelyd@ntrex.co.kr
한국기계산업진흥회가 주최하는 2016 국제자동화정밀기기전이 2016년 9월 6일(화)부터 9월 9일(금)까지 나흘간 일산 킨텍스 4홀, 5홀에서 개최됐다. 이번 전시회는 ‘자동화, 스마트를 입다!’라는 주제로 자동화 기계류 수요 창출 및 수출 증대, 거래선 발굴 및 시장정보 교류, 첨단기술 소개/보급 등을 목적으로 SFA 및 모션컨트롤전, 금속가공기기 및 금형전, 포장 및 물류기기전, 부품 및 소재전, IT융합 및 3D프린팅전 등 다양한 분야와 참가대상으로 나뉘어 산업 전반에 걸친 최첨단 기술 및 제품을 선보였다. 국내 업체를 비롯해 미국, 중국, 독일 등 18개국의 297개사가 총 2139개 제품을 선보여 상당한 규모로 많은 관람객을 맞이했다.
위드로봇 주식회사는 이번 전시회에서 Handheld 3D 스캐너(ZingScan)와 보드형 USB 카메라(oCam-5CRO-U, oCam-1MGN-U)를 선보였다. 핸드헬드 3D 스캐너는 스테레오 비주얼 슬램이라 불리는 기술을 적용해 자신의 위치를 연속적으로 추적하는 동시에, 스캔 대상 물체의 3D 형상을 라인 레이저를 이용해 정밀하게 스캔 할 수 있으며, 사용하기 편한 핸드헬드 형태로 제작돼 대상 물체의 크기에 제약을 두지 않고 스캔할 수 있다고 위드로봇 관계자는 설명했다. 이 제품은 전시회 현장에서 270만원(VAT 별도)에 판매되고 있었다. 또한 보드형 카메라는 USB 3.0 인터페이스 기술을 바탕으로 가지고 있어 실시간 전송 속도를 확보할 뿐만 아니라 데이터 전송 효율도 좋아져 CPU에 주는 부담이 경감되는 장점이 있어, CPU 자원을 영상의 전송 자체보다는 보다 고도화된 영상 처리에 많이 사용할 수 있어 효율 높은 시스템을 구성할 수 있는 제품이다. 특히 5 MegaPixel 칼라 보드 카메라 제품(oCam-5CRO-U)은 현재 디바이스마트(상품코드 : 1312029)에서 인기리에 판매중(118,800원, VAT 별도)이다.
‘스마트 팩토리’ 시스템 구현을 위한 전체적인 솔루션을 제공하는 키엔스코리아는 이번 전시회에서 이미지 측정시스템과 원 샷 3D 형상 측정기를 선보였다. 관계자는 “이미지 치수 측정 시스템(IM 시리즈)은 복수 측정이 가능해 최대 100개까지 한 번에 측정할 수 있고, 버튼만 누르면 단 몇 초 만에 물체의 다양한 치수에 대한 모든 측정이 완료된다”고 설명했다. 또한 “원 샷 3D 형상 측정기(VR 시리즈)는 면을 사용해 형상을 측정하기 때문에 원하는 부위가 정확하게 측정 가능하고 대상 물체를 놓고 원 클릭으로 측정을 완료한다. 또한 반복 측정과 비교 계측에도 오차 발생이 없다”고 덧붙였다.
키엔스코리아의 원터치 자동 측정 시스템이 작동되는 영상은 아래에서 확인할 수 있다.
한신체인은 소음과 분진, 진동을 최소화할 수 있도록 개발되어 독일 크린룸 인증기관 IPA사로부터 최고 등급인 Class 1인증을 획득한 ‘로보체인’을 메인 제품으로 선보였다. 이번 전시회에서 다양한 크기와 색상, 구조를 가진 수많은 체인 제품들을 선보인 한신체인은 최근 발명특허, 실용신안 등 40여 건의 독창적인 디자인, 상표, 서비스를 등록했으며 전체 생산 제품의 약 70~80% 이상이 특허된 디자인으로 구성돼 신기술 개발 특허 벤처기업인증과 기술혁신형 중소기업인 INO-BIZ에도 선정된 업체로, 각각 고유의 특성에 맞게 개발된 소재를 사용함으로써 제품별로 차별화된 특성을 가지고 있다고 업체 관계자는 설명했다.
태하는 이번 전시회에서 동일 피치 가변형 디스펜싱 시스템으로 15mm 부터 33mm까지 자동 피치 조절이 가능한 Auto Align System ‘DV-20F 8연식’ 제품을 선보였다. 이 제품은 경량, 소형(폭 12mm)이기 때문에 멀티형 구조 설계가 가능하고, 복동식 구동 방식으로 재현성이 좋고 고속제어가 가능한 제품이다. 특히 접액부 내부 용적의 최소화에 성공해 정밀한 소량 토출을 실현해냈다는 것이 가장 큰 장점으로 꼽힌다.
제품의 작동 영상은 아래에서 확인할 수 있다.
한스레이저코리아는 레이저 마킹기를 선보였다. 한스레이저코리아 관계자는 “레이저 마킹기 YLP-H20은 안정성이 매우 뛰어난 독일 IPG 레이저 소스를 적용했다. 또한 금속 자재 마킹에 가장 적합한 화이버 레이저는 기존 방식의 레이저 대비 3배 이상의 수명을 갖고 있다.”며 “자체 제작한 마킹 전용 소프트웨어를 채용해 요구 사항에 따른 소프트웨어 개발이 가능하다”고 덧붙였다. 이번 전시회에서는 레이저 마킹기로 즉석에서 만든 플라스틱 버니어 캘리퍼스를 전시회 특가로 1,000원에 판매했다. 한편 한스레이저코리아 관계자는 2천W급 이상의 고출력 시장의 진입을 위해 중국 내 쌓아온 노하우를 바탕으로 한국 시장을 적극 개척해 나갈 계획이라고 밝혔다.
(주)엔티렉스는 공격적인 R&D 투자를 통해 다양한 제품을 생산해내며 산업자동화계에서 다크호스로 꼽히고 있다. 특히 창사 이래 지속적으로 R&D투자에 앞장서 벨트형 액추에이터, PMSM 서보 드라이버, DC라인업 등 자동화에 필수적인 기기를 개발해내면서, 기업들의 생산원가절감에 이바지하고 있다. 엔티렉스 관계자는 “세계무대에 인정을 받기 위해서는 앞서가는 기술력이 필요하다고 생각해 창립 때부터 R&D에 집중투자했다”며 “지금보다 성능이 좋은 제품들을 더 많이 생산해 고객들의 선택의 폭을 넓히겠다”고 말했다. 엔티렉스의 다양한 서보 드라이버 등의 제품들은 디바이스마트 홈페이지에서 확인할 수 있다.
이번 2016 국제자동화정밀기기전이 열린 나흘간 27,357명이 방문했고, 구매 상담은 5억 9300만 달러(약 6573억 원)에 이른다고 한다. 또한 전시회 종료 후에도 ‘온라인 전시회’를 운영해 바이어가 참가업체 정보를 온라인상으로 확인할 수 있도록 하는 등 다양한 방면으로 참가업체 및 바이어들의 니즈를 충족할 수 있도록 준비했다는 점이 높이 평가되었다. 이번 전시회는 자동화기기와 ICT 융합제품의 시장 진입 교두보를 마련하고 자동화산업의 최신 기술을 소개하기에 좋은 기회가 되었으며, 내년에도 더 많은 신기술과 다양한 기기들을 만나볼 수 있는 자리가 되기를 희망하며 관람기를 마친다.
[39호]4x4x4 RGB LED CUBE Tetris
2016 ICT 융합 프로젝트 공모전 참가상
4x4x4 RGB LED CUBE Tetris
글 | 동서대학교 이성빈, 김지환, 서성욱, 권병욱
심사평
뉴티씨 매우 재미있는 작품으로 생각되며, 만드는 동안도 재미있게 작업했을 것 같다. 학습하는데 이만한 작품도 많이 없을 것으로 생각되며, 실용적이지는 않지만, 작품의 완성도는 만점을 주었다. 보고서도 잘 작성하였지만, 좀 더 내용을 자세히 적을 수 있었다면 좋았을 것으로 보인다.
칩센 유튜브 등에서 많이 나오는 주제다. 심지어 음악에 맞춰 visualize 되는 작품도 본적이 있어 자연스럽게 비교가 된다.
위드로봇 3차원 LED 큐브를 게임과 접목한 작품입니다. 전체적으로 동작하는 시스템을 구현한 부분을 높이 평가하며, 테트리스보다 직관적인 게임이나 활용처를 찾는다면 좀 더 나은 작품이 될 것 같습니다.
작품 개요
3D LED 큐브란 수많은 LED를 3차원으로 배열 하여 소프트웨어로 각 LED의 켜짐과 꺼짐을 제어함으로써 3차원 디스플레이가 되게 하는 기술이다.
최근, 각종 디지털 관련 전시회에서 작품으로 나타나며 인터넷상에도 제작법이 여러 사이트에 공개되어 많은 사람들이 변형된 작품을 제안하고 있다. 당장 유투브, 구글에 검색해 보아도 많은 작품들이 검색되어 나온다. 이 작품들은 대게 LED 큐브 작동을 베이스로 하여 개개인의 패턴을 중점으로 하여 많은 사람들의 이목을 집중 시키는데 목표로 한다.
3x3x3, 4x4x4, 8x8x8, 16x16x16 등 여러가지 모양으로 제작되는데 이 큐브들의 공통점으로는 제작자가 입력한 방식으로만 움직인다는 공통점이 있었다. 대게 패턴을 보여주는데 이 패턴을 작동하는 방식으로 립모션, 프로세싱 등을 이용하여 사용자 인터렉션에 따라 조금씩 움직임이 변화를 줄 수 있지만 실질적으로는 제작자를 제외하고 직접 조작하는데 어려움이 있다고 보고 있다.
그리하여 본 프로젝트에서는 누구나 직접 큐브를 조작할 수 있으며 사용자 인터렉션을 극대화시키는 방안을 생각하던 중 사용자가 가장 다가가기 쉬우며 흥미롭게 조작하는 방식으로 게임을 접목시켜 보기로 하였다.
3D 게임을 접목시키기로 한 후 마땅한 게임을 찾는 도중 가장 대중적으로 알고 있으며 남녀노소 누구나 해보았던 테트리스를 큐브에 맞게 재해석하여 접목시키기로 하였다.
작품 설명
주요 동작 및 특징
본 프로젝트에서는 BARE CONDUCTIVE TOUCH BOARD라는 전도성 터치보드를 이용하여 컨트롤판을 커스텀화 제작한다.
제작된 컨트롤판을 터치하게 되면 개별적인 고유 값이 Processing으로 전달이 되며 큐브에 정보를 전송하게 해준다.
각 이벤트 처리는 아두이노에서 자체적으로 하며 Proceesing에서는 큐브를 컨트롤하는 아두이노와 사용자 컨트롤판을 제어하는 역할을 수행 하며 여러 가지 사운드를 제공한다.
본 프로젝트 Cube Tetris의 규칙은 다음과 같다.
1. START를 누르면 Red/Green/Blue 중 랜덤으로 1층에 생성
2. 화살표를 이용하여 4층에서 나온 섞을 색을 이동
3. 합치고 싶은 색 위에서 DOWN을 눌러 색을 해당 층에 혼합
4. Red/Green/Blue를 합쳐 흰색을 만들게 되면 불이 꺼짐
5. 블록 생성 후 5초 동안 DOWN을 누르지 않으면 자동DOWN
6. 중복이 된 색을 넣으면 그 위층에 쌓임
7. 4층까지 모두 쌓이게 된다면 실패
8. 정해진 개수만큼 불을 끄게 된다면 성공
본 프로젝트에서 다루는 Tetris와 기존의 Tetris와의 차이점으로는 입체와 평면의 차이로써 시작점이 일치하지 않다는 점과 다각도에서 보아야 한다는 점이 있다. 또한 기존의 Tetris 에서는 층 별 설계를 잘 하여야 하지만 본 프로젝트의 Tetris에서는 자신이 어떠한 색을 어디에 두어야 하는지 기억력과 순발력을 요구한다.
전체 구성도
1. Touch Board에서 이벤트 발생
2. 프로세싱으로 이벤트 값 전송
3. 이벤트값을 해석 후 Arduino로 값 전송
4. Arduino에서 이벤트 처리
5. Arduino에서 이벤트 처리 후 결과 Processing으로 리턴
6. Processing 리턴 값에 대한 사운드 발생
개발 환경
(1) Arduino
큐브의 RGB 전구 RED, BLUE, GREEN 3가지 색을 개별적으로 컨트롤 한다. 개별적 컨트롤 하는 방식으로 Charlie Plexing 기법을 사용하였다.
Charlie Plexing 기법이란 적은 I/O핀으로 많은 LED를 다루는 기술 이다. 핀당 제어가 가능한 ELD의 수로는 (N^2-N)의 공식으로 성립하게 되며 본 프로젝트의 4X4X4큐브에서 LED 개수 64개는 아두이노의 16개의 핀으로 제어가 된다.
핀과 연결이 되면 C++파일을 이용하여 Mapping Table을 만든 후 헤더에 추가한다.
LED를 개별적으로 켤 경우 drawLed 함수를 이용하여 x, y, z값과 색상 밝기를 입력하면 그 위치가 켜지는 방식이며 이 drawLed를 활용하여 drawBox, drawWall, drawLine등 큐브를 3차원으로 컨트롤 하는 함수를 cubeplex 클래스에 미리 구현하여 헤더에 추가한다.
RGB 각각을 기본 색상으로만 이루어진 PrimaryColor, 두 가지 색을 합친 SecondaryColor, 그리고 모든 색상이 있는 nextColor의 배열에 추가 되며 각각의 어레이 위치에는 매크로 함수를 이용하여 고유 값이 저장 되어 있으며 다른 색상을 원한다면 위 함수를 호출 해 주는 것으로 색상이 변하게 된다.
큐브에 있는 모든 메모리를 해제하는 ClearBuffer가 있으며 이전의 함수의 메모리를 해제하는 FlushBuffer 두 가지 함수가 있다.
하나의 이벤트를 행한 후 FlushBuffer를 호출하지 않을 경우 다음 이벤트에서 이중으로 이벤트가 발생할 수 있기 때문에 항상 이벤트의 마지막에 Flush Buffer를 호출해 주어야 한다.
(2) Processing
컨트롤판에서 사용하는 BARE CONDUCTIVE TOUCH BOARD의 이벤트 값을 받아와 Arduino에 전송해 준다. 이 때 전송받는 이벤트 값은 키보드에 있는 알파벳 값을 고유값으로 들어오게 되며 Arduino에 전송되는 값은 모두 int형으로 고유값을 변환하여 보내주게 된다. 또한 블록이 생성되면 Thread를 이용하여 5초가 지나게 되면 다운되는 이벤트를 보내주게 되는데, 이를 Arduino에서 구현하지 않는 이유로는 아두이노에서 기본적으로 Thread를 지원하지 않으며 메인 프로세스외에 서브 프로세스로 Thread를 구현 하였을 때 정상적으로 작동하지 않는 문제점도 있었기 때문에 제어 역할을 하는 Processing에서 구현하는 방식을 채택 하였다.
또한 Processing에서는 Arduino에서 생기는 이벤트에 대한 사운드 역할도 함께 한다. 예를 들어 블록이 없어지는 이벤트, 새로운 블록이 생성되는 이벤트, 실패 그리고 성공 이벤트 등 모든 이벤트에 대한 사운드는 Processing에서 제공 한다.
단계별 제작 과정
1. 4층 높이의 RGB LED 기둥 제작
2. 제작된 기둥을 기판에 부착
3. 기판 뒷부분 공통 색상 다리 연결
4. 연결된 선을 아두이노에 연결
5. 아두이노에 소스 이식 하여 작동 여부 확인
6. Processing – Arduino 연결
7. Processing을 이용한 큐브 개별 컨트롤
8. Processing – Touch Board 연결
9. 시리얼 통신 이벤트 전달
10. 큐브 이벤트 동작 확인
기타 자료
회로도
위 그림과 같이 Z축으로 한 개씩 쌓아 가지만 90°씩 돌려 서로 다른 다리가 맞물리도록 쌓아간다.
1층 RGB 전구를 기준으로 각 R, G, B, GND 다리를 공통적으로 모아 한쪽으로 배선을 빼낸다.
배선 번호와 아두이노핀 연결은 다음 표와 같다.
소스코드
(1) Arduino
if(Seral.available()>0) {
int b = Serial.read();
Serial.print(b);
int r = b;
if(Start == false){
if(r==0||r==3)
{
moveY(r);
}
if(r==1||r==2){
MoveX(r);
}
if(r==4){
DownKey();
}
}
if(r==5){
planarFlop3D();
starter();
}
if(r==6){
Rcolor=-7;
clearBuffer();
flushBuffer();
Tstatus=true;
Processing – Arduino간 시리얼 통신
Serial 통신으로 이벤트 값이 전달되었을 경우 int형으로 값을 읽어온다. 읽어온 값에 의해 다음 이벤트를 호출하게 된다.
void MoveY(int a){
if(a==0){
if(Ry!=3){
drawLed(-7,Rx,Ry,Rz);
flushbuffer();
Ry++;
drawLed(Rcolor, Rx, Ry, Rz);
flushBuffer();
delay(200);
}
}
else if(a==3){
if(Ry ! =0){
drawLed(-7,Rx,Ry,Rz);
flushbuffer();
Ry–;
drawLed(Rcolor, Rx, Ry, Rz);
flushBuffer();
delay(200);
}
}
}
Y축 이동 이벤트
void MoveX(int t){
if(t==1){
if(Rx!=0){
drawLed(-7,Rx,Ry,Rz);
flushBuffer();
Rx–;
DrawLed(Rcolor,Rx, Ry,Rz);
flushBuffer();
delay(200);
}
}
else if(t==2){
if(Rx!=3){
drawLed((-7,Rx,Ry,Rz);
flushBuffer();
Rx++;
DrawLed(Rcolor,Rx, Ry,Rz);
flushBuffer();
delay(200);
}
}
}
X축 이동 이벤트
void DownKey(){
int ta=0; //합쳐야 될 z축 값
int hap=0; //합침 유무 확인
for(int i=2; i>=0; i–){
drawLed(Rcolor,Rx,Ry,i+1);
flushBuffer();
delay(100);
drawLed(-7,Rx,Ry,i_1);
flushBuffer();
if(PresentLed[Rx][Ry][i] !=-7){
int Pcolor=PresentLed[Rx][Ry][i];
switch(Pcolor{
Down키 이벤트 호출
Down 이벤트가 호출되었을 경우 Z축 최상위인 3을 제외하며 한 층씩 내려가며 비교하게 된다. 만약 LED가 켜져 있는 경우 Switch 문을 이용하여 비교하게 된다.
현재 Led가 켜져 있는 층의 Color 값과 블록의 Color 값을 비교하여, 기존의 층에 있는 Color에 섞여있지 않은 값이 들어오게 된다면 그 층에 색이 섞여서 반환하게 되며, 이미 있는 색상일 경우 그 위층에 블록의 Color 값을 반환하여 쌓이게 된다.
if(hap==0){
if(PresentLed[Rx][Ry][ta]==6){
drawLed(6, Rx, Ry, ta);
flushBuffer();
delay(300);
PresentLed[Rx][Ry][ta]=-7;
drawLed(-7, Rx, Ry, ta);
flushBuffer();
delay(300(;
Tcount++;
}
else{
drawLed(PresentLed[Rx][Ry][ta], Rx, Ry, ta);
flushBuffer();
}
}
else{
drawLed(PresentLed[Rx][Ry][ta+1], Rx, Ry, ta+1);
flushBuffer();
}
flushBuffer();
delay(300);
Tstatus=true;
}
변수 Hap이 0일 경우 색이 합쳐졌다는 의미이며 현재 층의 Led Color값이 6, 즉 흰색이 되게 되면 0.3초 동안 반짝이며 -7값으로 변경 되면서 꺼지게 된다. Led Color 값이 6이 아니라면 그 층에 색이 합쳐지게 된다.
만약 Hap이 1일 경우 색이 섞이면 안되므로 현재 층 보다 한 칸 위에 색이 쌓이게 된다.
void starter(){
Tcount =0;
flushBuffer();
clearBuffer();
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
for(int a=0; a<4; a++){
PresentLed[i][j][a]=-7;
}
}
}
for(int i=0; i<4; i++){
for(int j=0; J<4; J++){
int rrcolor=random(0,3);
PresentLed[i][j][0];
flushBuffer();
}
}
Start=false;
delay(1000);
}
starter 이벤트가 호출이 되면 현재 클리어한 블록 카운트를 초기화 하며 기존에 켜져있는 모든 LED를 끈다. 그 후 1층에 RED, BLUE, GREEN 중 1가지 색을 랜덤으로 배치하며 현재 start가 되었다는 값을 반환해준다.
void randomCreate(){
Rx = random(0,4);
Ry = random(0,4);
Rz = 3;
Rcolor = random(0,3);
drawLed(Rcolor, Rx, Ry, 3);
flushBuffer();v
Tstatus=false;
Serial,write(1);
}
int Discrimination(){
flushBuffer();
if(Tcount!=3){
for(int i=0; i<4, i++){
for(int j=0; j<4; j++){
if(PresentLed[i][j][3]! = -7(
freurn 1;
}
}
}
return 0;
}
else
return 2;
}
Discrimination 함수는 게임 승패 여부를 확인하는 함수이다. 블록 하나가 다운되어 연산이 실행된 후 호출이 되며 Tcount는 클리어 한 블록의 개수를 나타낸다. 현재 코드에는 3개의 블록을 클리어하게 되면 게임이 승리로 끝나게 되므로 카운트가 Tcount 값이 3일 경우 반환을 2로 하여 게임이 승리하게 되며, Tcount 값이 3이 아니지만 Z축 4층에 LED가 켜져 있다면 실패로 간주한다. Tcount 값이 3이 아니며 4층에 켜져 있는 LED가 없다면 게임을 속행하게 된다.
(2) Processing
Serial Port;
Serial Port2;
void setup() {
size(1200, 600, P3D);
textureMode(NORMAL);’
fill(255);
prot = new Serial(this, Serial.list()[0], 9600);
}
Processing에서 아두이노와 Serial 통신을 위한 포트를 선언하여 준다.
Serial 통신이 다대일 통신이 가능함으로 배열을 통해 포트를 선언하여 설정한다.
void framesmanagement(){
int t=0;
t=port.read();
if(t==1){
Ft.start();
}
if (keyPressed) {
if((key== ‘T’ || key == ‘t’)) {
print(key);
delay(300);
port.write(5);
}
else if((key== ‘F’ || key== ‘f’)) {
print(key);
delay(300);
port.write(6);
}
Touch Board에서 이벤트값이 입력되었을 때 호출되는 함수이다.
t=port.read();는 아두이노에서 Serial 통신을 받아와 읽어오는 역할을 하며 블록이 생성 되었을때 아두이노에서 int형 1의 값이 넘어와 Thread를 시작하는 역할을 수행 한다. 이벤트 값은 키보드의 자판과 동일하게 입력되기 때문에 keyPressed함수로 키가 눌러졌는지 여부를 확인 후 어떤 키가 눌러졌는지 받는다. Touch Board의 키 값과 아두이노에 Serial 통신되는 값은 다음 표와 같다.
public class fillThread implements Runnable
{
Thread thread;
int pauseTime; //Time to wait between loops
int level = 0;
boolean filled=true;
public FillThread(int pt)
{
pauseTime = pt;
}
thread = new Thread(this);
thread.start();
}
public void run()
{
// do something threaded here
while(filled!=false) {
// Wait a little(give other threads time to run)
try {
Thread.sleep(1000);
level++;
if(level==4){
stop();
}
}
public void stop()
{
filled=false;
level=0;
thread = null;
}
블록이 생성되어 Serial통신을 통해 생성되었다는 신호가 Processing에 도착하게 되면 함수가 호출된다.
위 함수에서는 블록이 다운되지 않고 5초가 흐르게 될 경우 다운 이벤트를 포트를 통해 전송하게 되고 Thread가 종료된다.
참고문헌
[1] http://sobisource.com/
[2] 말하고 듣고 대화하는 Physical Computing 아두이노 (한빛 아카데미)
[3] https://www.youtube.com/watch?v=maM-mrrYY3o
[39호]T.E.G(스털링 엔진을 이용한 발전기)
2016 ICT 융합 프로젝트 공모전 참가상
T.E.G(스털링 엔진을 이용한 발전기)
글 | 동양미래대학교 이승민, 이은빈, 윤혜린, 김하은, 이무호, 허창준, 신집섭, 김상훈, 이학기, 김재환
심사평
뉴티씨 스털링 엔진은 에너지 분야나 기계 분야에서 매우 관심있게 현재 조명받고 있는 분야인데, 이를 실제로 만들어 보았다는 것은 큰 의미가 있는 것 같다. 실제로 학생이 이를 구현하였다는 것은 앞으로 좀 더 연구하여 친환경적인 에너지를 전자와 접목할 수 있는 근거가 되리라 본다. 창의성이나 실용성, 기술성 면에서 높은 점수를 받았으나, 완성된 모습이 보이지 않아 작품성이나 완성도는 조금 낮은 점수를 받았다.
칩센 쉽게 접할 수 없는 주제라 흥미롭다. 실제 스털링 엔진을 만들어서 구현했다는 점에서 높은 평가를 한다.
위드로봇 스털링 엔진을 활용하는데 있어 발전기를 돌리는 내용까지 진행한 작품은 아이디어가 좀 부족해 보입니다. 이를 잘 활용할 수 있는 상황을 가정하고 그 상황에서 발생하는 문제점을 해결할 수 있는 내용이 추가가 되면 좋겠습니다.
TEG 목적
현대인에게 없어서는 안 될 필수자원인 전기를 생산하기 위해서는 화석연료의 사용이 주를 이룬다. 그 과정에서 지구 온난화와 같은 기후적 문제가 발생한다. 이러한 환경문제에 대응하기 위하여 신재생 에너지를 이용하여 전기를 만드는 작품을 제작하기로 계획하였다.
먼저 발전기를 돌릴 때 보편적으로 사용하는 소형 DC모터를 사용하기로 결정했다. 이어서 어떻게 이 모터를 돌릴 것인지를 고안해낸 것이 스털링 엔진이다. 이는 발전기에 필요한 동력도 생산해낼 수 있을 뿐 아니라, 주제와 맞게 친환경적으로 접근 가능하고, 열만 있다면 별다른 준비물이 필요하지 않기 때문에 우리의 의도와 맞아 떨어졌다.
TEG 동작 설명
실린더 가열부 가열
스털링 엔진 실린더 가열부에 열을 가한다. 실린더 내부의 공기가 팽창한다.
회전자 회전
실린더 가열과 동시에 기동장치를 동작시켜 기동토크를 가해준다. 실린더 가열부 온도를 측정하여 설정온도에 도달하면 기동장치를 정지시키고 스털링 엔진의 피스톤 운동에 의해 회전자가 회전한다.
전기에너지 생성
회전자가 회전하면 회전자에 연결되어있는 모터가 구동되어 전기에너지가 발생한다.
기대효과
최근 환경오염 문제가 심각해짐에 따라 예전의 석탄, 석유 등 화석연료나 위험한 원자력 에너지를 대체할 방법으로 주목 받고 있는데, TEG는 발전 시 해로운 물질이 배출되지 않기 때문에 그린에너지 개발에 큰 기여를 할 것으로 보인다.
또한 사람이 힘을 쓰지 않고, 열만 있다면 언제든지 스털링 엔진 구동이 가능하므로 시간상의 제약이 없으며, 뜨겁거나 차가운 물체가 따로 필요하지 않기 때문에 기존의 스털링 엔진과는 다르게 발전 시 공간상의 제약도 사라지게 된다. 더 나아가 이 TEG는 전기를 필요로 하는 모든 분야에 적용이 가능할 것으로 보인다.
이론
폐열
일상생활에서 열에너지를 사용할 때, 실질적으로 사용되는 열에너지는 50% 이하이므로 사용하고 남은 열에너지는 버려지고 있다. 이렇게 에너지를 이용하는 과정에서 외부로 버려지는 열을 폐열이라 하는데, 이러한 폐열은 원전의 냉각수, 보일러실의 배기가스 열, 발전소의 냉각수열, 목욕탕 온배수 등 에너지를 사용하는 곳에서는 반드시 발생하게 된다. 이 폐열에너지를 이용한다면 에너지를 효율적으로 사용할 수 있다. 따라서 우리는 이러한 폐열에너지를 이용하여 발전을 통해 전기에너지를 생산하고자 한다.
스털링 엔진
본체인 스털링엔진은 실린더나 피스톤으로 이루어진 공간에 수소나 헬륨 등의 가스를 넣고 이를 외부에서 가열시키거나 냉각시켜, 피스톤 운동을 일으켜 전기를 생산해내는 구조이다. 여기서 수소는 안전상의 문제가 있으므로 헬륨을 이용할 계획이다.
스털링 엔진의 종류에는 α형, β형, γ형 등이 있는데 T.E.G는 2개의 피스톤으로 구성되어 있는 형을 선택하였다. 그 이유로는 압축비(최대 용적/최소 용적)를 높이기 쉽고, 고출력을 얻기가 쉽다는 특징 때문이다.
① 실린더에 열을 가해주면 내부 공기분자가 빠르게 움직여서, 부피가 팽창한다.
② 그 팽창하는 힘에 의해 피스톤운동을 시작하여 피스톤에 연결된 회전자가 돌기 시작한다.
스털링 엔진의 응용분야로는 태양열을 이용한 스털링 엔진 발전 시스템, 가정용 소형 발전 시스템, 스털링 엔진 자동차와 하이브리드 전기차 시스템, 스털링 냉동기, 스털링 히트 펌프 난방기, 폐열 회수 등이 있다. T.E.G는 이 중에서도 발전 시스템으로 응용한 작품이다.
모터
Nihon Micro Motor
· 가정용으로 주로 사용
· AC 모터에 비해 힘이 약함.
· AC 모터에 비해 전력소모가 적어 전기료가 적게 나옴.
· 속도, 경사 등 속도제어가 미세하게 조정이 되어 원하는 속도로 운동이 가능.
· 견고성이 AC 모터에 비해 우수함.
· 미세한 속도제어가 필요한 가정용으로 적합.
· 수리비가 적게 나옴
· 소음이 적어 가정용으로 적합
온도센서
DTS-M300은 적외선온도센서를 기반으로 하여 접촉하지 않고, 원하는 대상의 온도를 정확히 측정할 수 있는 온도센서 모듈. 특징은 다음과 같다.
DTS-M300
· 원거리에 물체온도 측정가능
· 30 ~ 300℃ 타겟온도 측정
· 20 ~ 80℃ 주변온도 측정
· 0.01℃ 분해능
· 1mA 저전류 소비
· Small Size(25mm*33mm)
T.E.G는 온도센서를 이용하여 스털링 엔진 실린더 가열부 측 온도를 측정하고, 설정온도에 도달하면 기동장치를 동작시켜 스털링 엔진에 기동토크를 걸어주어서 회전자를 돌린다.
RPM 측정센서
TCRT 5000은 적외선 반사광을 기반으로 하여 접촉하지 않고, 원하는 대상의 회전속도를 정확히 측정할 수 있는 적외선 반사광 모듈. 특징은 다음과 같다.
TCRT 5000
· 적외선 반사광 모듈
· -40℃~125℃ 사용가능
· 1.5V~6V 공급전압
· 1mm ~ 8mm 측정가능
· Small Size(37.5mm*10.2mm)
T.E.G는 RPM 측정센서를 이용하여 스털링 엔진 회전자측 회전속도를 측정하여, my DAQ를 통해서 LabVIEW 프로그램에 회전속도를 나타낸다.
my DAQ
NI my DAQ은 창의적 공학설계 및 강의를 위한 전문 공학 교육 플랫폼으로, 디지털 멀티미터, 오실로스코프, Function 발생기 등 8가지 계측기와 USB DAQ 기능을 포함하고 있다. 전 세계 수많은 대학에서 널리 사용되고 있는 그래픽 기반 프로그래밍 언어 NI LabVIEW와 Multisim 소프트웨어를 연동하여 다양한 공학 실험이 가능하다.
기존제품과 비교
유사 기존 제품 – 에피파니 원 퍽
에피파니 원 퍽에는 빨간색과 파란색 두 가지 면이 있는데 빨간색 면에는 뜨거운 음료를 파란색 면에는 차가운 음료수를 올려놓으면 휴대폰 충전이 가능하다.
T.E.G
에피파니 원 퍽은 출력이 작아 가정용으로 적합하여 응용이 휴대폰 충전에 초점이 맞춰져 있다. 그런 반면 TEG는 출력이 유사 기존 제품보다 크기 때문에 대형화한다면 공업용으로 사용가능하고 선풍기, 냉각기, 환풍기 등의 여러 가지 응용부하를 선택할 수 있다.
제작 과정
스털링 엔진 도면
[39호]SHUSS (Smart Home Umbrella Stand System)
2016 ICT 융합 프로젝트 공모전 참가상
SHUSS (Smart Home Umbrella Stand System)
글 | 한국해양대학교 이승민, 김남훈, 이동준, 최우성
심사평
뉴티씨 간단한 내용이지만, 실제로 비가 온다거나 할 때에 우산을 가지고 나갈 것을 알람 등을 통하여 확인할 수 있도록 하는 아이디어를 구현한 것인데, 학습하는 데에는 좋은 작품으로 보인다. 그리 어렵지 않게 구현할 수 있지만 실용적인 것으로, 이 작품을 만든 학생은 앞으로도 생활 속작품을 많이 만들 수 있을 것으로 생각된다.
칩센 쉬운 주제지만 실제 생활에 도움이 될만한 주제다. 좋은 아이디어 라고 생각한다.
위드로봇 우산꽂이가 날씨를 파악하여 우산을 챙길 수 있도록 알려주는 아이디어가 재미있다. 하드웨어 구현에 치중하다보니 전체 서비스 관점에서 빠진 부분을 채우지 못한 것 같다. 사람 인식 부분을 좀 더 강화하면 더 재미있는 서비스를 제공할 수 있을 것으로 보인다.
작품 제목
SHUSS(Smart Home Umbrella Stand System)
비나 눈이 오는 날씨에는 비를 맞지 않기 위하여 우산이나 우비가 필수적으로 필요합니다. 아래의 사진들은 비를 맞지 않기 위해서 연잎이라도 사용하여 비를 피하려는 사람들의 의지를 보여줍니다. 저희는 우산이 필요한 날에 우산을 챙기지 못하여 발생하는 불상사를 방지하기 위하여 IoT의 일종인 SHUSS를 만들었습니다.
작품 개요
사람들은 아침에 뉴스를 통해 하루의 날씨를 접합니다. 최근에는 스마트폰의 어플과 스마트 미러 등을 통하여 날씨정보를 접하게 되었습니다. 하지만 날씨정보를 외출하기 전에 꼬박꼬박 확인하는 사람이 있는 반면에 날씨정보에 별로 관심을 가지고 있지 않은 사람들도 있습니다. 보통 이러한 사람들은 소나기나 급작스러운 날씨변화에 직면하게 되면 대게 손해를 보게 됩니다. 그래서 저희는 이러한 사람들을 위하여 비나 눈 등의 자연현상이 발생하였거나 그 날의 날씨 중에 조짐이 보이면 낭패를 당하지 않게 하기 위한 장비를 개발하게 되었습니다. 비나 눈 등 우산이라는 도구를 필요로 하는 날씨에 대해서는 자동으로 우산을 준비할 수 있도록 하는 스마트 우산꽂이를 개발하기로 하였습니다.
작품 설명
주요 동작 및 특징
(가) 주요 동작
저희 작품은 날씨 정보를 받아와 눈과 비 등의 날씨에 우산을 갖추고 외출할 수 있도록 하는 시스템입니다.
와이파이는 아두이노 윤을 사용하여 연결하게 되는데 한번 전원과 WIFI에 연결하여 놓으면 지속적으로 사용가능 합니다. WIFI가 연결되면 기상청에서 RSS를 받아 pty(날씨)값을 받아들여 적외선센서가 작동합니다.
사람인식은 적외선 센서 2개(A,B) 사용하여 A(앞쪽)가 먼저 인식하고 B(뒤쪽)를 두 번째로 인식하면 집에서 나가는 것으로 판단, B(뒤쪽)을 먼저 인식하고 A(앞쪽)을 두 번째로 인식하면 집으로 들어오는 것으로 판단합니다. 우산꽂이 안에도 적외선 센서를 부착하여 출입을 판단하고 우산이 계속 감지되면 부저가 작동하게 됩니다. 그리고 우산을 가지고 가게 되면 소리가 꺼집니다.
사용자에게 알림을 주는 방법은 부저를 이용하여 소리로 인지시켜 주는 방법을 사용했다.
(나) 특징
시중에서 볼 수 없는 아이템이며 저렴한 가격과 실생활에 매우 유용하게 쓰일 수 있습니다. 또한 실생활에 매우 밀착되어 있는 작품이기에 활용도가 매우 높습니다.
집집마다 와이파이를 대부분 갖고 있기 때문에 연동하기도 매우 쉽고, 자동 알림 서비스이므로 편리성이 높습니다. 또한 입출을 판단하여 나갈 때에만 센서가 작동하게 했습니다. 만약에 이 상품이 시중에 나오게 된다면 현대 사회에 필요한 필수품이 될 것 같습니다.
단계별 제작 과정
부품 설명
초기
WIFI연결 방법( 아두이노 윤 or 아두이노 와이파이 쉴드 ), 출입 감지 방법, 알람
중반 (예비 실험)
모의실험으로 LED를 연결하여 각각의 센서 인식 후 불이 들어오는지 확인 작업을 했으며 아두이노 윤으로 와이파이 연결을 하여서 pty 값 즉, 없음(맑음), 비, 눈의 값이 들어오는지 확인을 하는 작업을 동시에 이루었습니다. 또한 적외선센서 역시 거리를 감지를 해보니 원하는 값들이 나오는 것을 확인할 수 있었습니다.
여기서는 적외선 센서를 달아보아서 직접 사람이 움직여서 거리를 감지할 수 있는지 체크와 우산이 통에 들어있다는 것에 대한 인식을 실험을 실행해보니 저의 의도와 맞게 잘 작동을 했다는 것을 확인할 수 있었습니다.
후반 (제작 과정)
작품을 만들기 전 부품 준비 : 적외선 센서, 브레드 보드, 우산꽂이, LED
우산 꽂이의 외관을 위해서 뒤에 브레드 보드를 장착하였습니다. 그래야지 우산을 꽂을 때도 방해가 되지 않고 비를 맞은 우산에 대해 전선에 물이 들어가지 않기 때문입니다.
우산 꽂이 앞 편에는 실질적인 역할을 하는 적외선 센서의 위치를 선정하고 부착하는 모습입니다.
뒤쪽에는 LED부착과 적외선 센서 선을 연결하는 모습입니다. LED의 부착은 앞서 말하듯이 센서의 동작 인식 확인과 소스코드에서 나온 듯이 LED의 불의 유무로 동작을 시키기 때문에 연결을 하는 것입니다.
아두이노 윤을 연결한 후에 각각의 전선을 적외선에는 아날로그 쪽, LED 및 LED는 디지털 핀 쪽에 알맞게 넣어줬습니다. 그 후에 아두이노 윤에는 소스코드를 코딩을 해주고 외부 전압을 연결한 후 부착해서 완성했습니다.
기타(회로도, 소스코드, 참고문헌 등)
회로도
소스코드
int pinNum0 = A0;
int pinNum1 = A1;
int pinNum2 = A2;
// 적외선 입력 핀 설정
int distance0 = 0;
int distance1 = 0;
int distance2 = 0;
// 거리 값 정수형 설정
int led1 = 11;
int led2 = 12;
int led3 = 13;
// led 3개 아날로그 핀 설정
int speakerPIN = 13;
// 부저 쪽 핀 설정
int numTones = 20;
// 20개 값 설정
int c = 0;
int d = 0;
// 적외선 출입 시스템 제어 위한 변수 설정
int tones[] = {262, 294, 330, 349, 392, 440, 494, 262, 294, 330, 349, 392, 440, 494}; // 각 주파수 별 소리 설정 (도 레 미 파 솔 라 시) * 2
#include <Bridge.h>
#include <HttpClient.h>
void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Bridge.begin();
digitalWrite(13, HIGH);
Serial.begin(9600);
pinMode (pinNum0, INPUT);
pinMode (pinNum1, INPUT);
pinMode (pinNum2, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
while (!Serial); // serial접속을 기다린다.
}
void loop() {
// 클라이언트라는 변수를 설정하여 주어서 인터넷 접속 시 데이터를 받아올 수 있게끔 해준다.
HttpClient client;
int data = analogRead(pinNum0);
int data1 = analogRead(pinNum1);
int data2 = analogRead(pinNum2);
int volt = map(data, 0, 1023, 0, 5000);
int volt1 = map(data1, 0, 1023, 0, 5000);
int volt2 = map(data2, 0, 1023, 0, 5000);
distance0 = (21.61/(volt-0.1696))*1000;
distance1 = (21.61/(volt1-0.1696))*1000;
distance2 = (21.61/(volt2-0.1696))*1000;
// 적외선 거리 감지
Serial.print(“distance0 : “);
Serial.println(distance0);
delay(100);
Serial.print(“distance1 : “);
Serial.println(distance1);
delay(100);
Serial.print(“distance2 : “);
Serial.println(distance2);
delay(100);
// 각 센서별 거리 시리얼 모니터에 띄우기
// 인터넷으로 기상청에 접속하여 날씨정보에 관한 RSS값을 받아온다.
client.get(“http://www.kma.go.kr/wid/queryDFSRSS.jsp?zone=2620065000”);
// 들어오는 바이트들을 사용가능한 동안 동작하며 구문을 반복하게 된다.
while (client.available()) {
//라인을 기준으로 문자열을 저장한다.
String line = client.readStringUntil(‘\n’);
//pty는 날씨 정보 코드이므로 파싱한 데이터들중에서 날씨 정보만 판단한다.
int temp11= line.indexOf(“</pty>”);
if(temp11>0) {
String tmp_str=”<pty>”;
String wt_hour = line.substring(line.indexOf(tmp_str)+tmp_str.length(),temp11);
//pty에서 0이 날씨 맑음 코드이므로 0이 아닐때는 비와 눈 등의 날씨 정보를 나타내는 것으로 pty가 0이 아닐 때, 즉 비나 눈이 올 때 구문이 동작하도록 설정해 준다.
//wt_hour은 string형으로 선언되어져 있으므로 이 것과 비교하기 위하여 comp라는 변수를 char배열형, 즉 문자열로 선언해주어 비교가 가능하게 해준다.
char comp[] =”0”; //wt_hour의 값, 즉 pty 의 값이 0이 아니면 if구문 안에 있는 구문들을 동작하여 준다.
if(wt_hour!=&comp[0]){
if(distance0 < 18) // 적외선 센서 1 거리를 감지해 우산의 존재여부를 파악한다.
{
digitalWrite(led1, HIGH);
c = 1;
}
//c라는 값은 우산이 우산꽂이에 존재할 시에 할당되어 있는 값이므로 이 값이 1인 경우 사람이 우산 꽂이 앞을 지나가는 것을 인식하도록 설정해 주었다.
if(c == 1)
{
if(distance1 < 20) // 적외선 센서 2 거리 감지
{
digitalWrite(led2, HIGH);
d = 1;
}
// 우산의 존재여부를 알려주는 변수 c와 사람이 첫 번째 센서를 지나가는 것을 인식하는 변수 d를 사용하여 우산이 존재할 때 사람이 첫 번째 센서를 지나 두 번째 센서에 도달하였을 시에 움직임을 감지하는 센서를 작동시키고 부저를 울려 사람에게 알려준다.
if(c == 1 && d == 1)
{
if(distance2 < 18) // 적외선 센서 3 거리 감지
{
digitalWrite(led3, HIGH);
for (int i = 0; i < numTones; i++)
{
tone(speakerPIN, tones[i]);
delay(500);
}
// 소리 출력
noTone(speakerPIN);
}
// 변수 초기화
else
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
c = 0;
d = 0;
}
}
}
}
}
}
Serial.print(“회차종료”);
//3초마다 동작을 반복한다.
delay(3000);
}
· 밝은 미래 사회구현, ‘스마트 홈’의 기술 세계
· 아두이노 윤 와이파이 연결하기 (https://www.arduino.cc/en/Guide/ArduinoYun)
· 스마트폰의 블루투스 통신을 이용한 다중 오브젝트 제어방법 및 장치에 관한 융합연구
· 스마트 object에 관한 논문( WBAN(Wireless Body Area Network)기반 스마트 오브잭트 설계)
작동영상 : https://youtu.be/m8Mabt70N1A
설명영상 : https://youtu.be/6FnzJuXGNQk