[58호]2019 한국산업대전
2019 한국산업대전
한국기계전 KOMAF / 제조 IT서비스전 MACHINESOFT
글 | 박진아 기자 jin@ntrex.co.kr
5회째를 맞이한 이번 한국산업대전은 42년의 역사를 보유한 한국기계전(KOMAF)과 제조 IT서비스전 머신소프트(MachineSoft) 2019를 함께 개최한 국내 최대 규모의 산업 융합 박람회로 지난 10월, 3일에 걸쳐 일산 킨텍스에서 열렸다. 산업통상자원부가 주최하고 한국기계산업진흥회가 주관하는 이번 전시회에는 국내 주요 기업뿐만 아니라 미국, 독일, 중국 등 전세계 27개국, 752개사가 참여하였고, 공작, 건설기계, 발전기자재등 전통적 기계류와 AI, 5G 등 IT 서비스 기술 등 1,400여 품목이 전시되었다.
두산 로보틱스에서는 다섯 대의 협동 로봇이 작업자와 함께 산업용 수소 드론을 조립하는 모습을 시연하며 실제 산업현장에 적용되고 있는 공정을 선보였다. 점차 발전되는 기술에 따라 산업용 로봇은 사람의 손처럼 민감한 작업도 맡아서 진행해야 하기 때문에 두산 로보틱스에서는 이 부분에 특화된 프리미엄 협동 로봇 제작에 집중하였다. 그 결과 협동 로봇 시리즈는 민감한 힘도 쉽게 감지할 수 있는 조인트토크센서가 부착돼 섬세한 작업이 가능해졌으며, 그 외에도 다양한 기능을 추가하여 성능 및 생산 효율성을 극대화하였다.
이런 협동 로봇을 알아보자면 M0609은 제한된 공간에서 고속으로 반복적인 작업을 수행하도록 최적화되어 설계되었고, M1509는 작업자를 지원하기 위해 무거운 물체를 다루는데 효과적이며, M1013은 모든 응용 분야에 적합한 표준모델 M1013과 여러 작업 또는 장거리 작업에 이상적인 M0617 협동 로봇으로 제작되어 사용자의 필요한 환경에 맞게 활용할 수 있다.
국내 소형 정밀 Motor 산업의 선두주자 인아오리엔탈모터에서는 소형화 전동 그리퍼 EH Series를 선보였다. EH Series는 Rack-pinion기구에 AZ Series를 조합한 전동그리퍼 시리즈로 사람의 손가락처럼 섬세하게 잡는 기술을 실현한 제품이다. AZ 시리즈를 탑재하였기 때문에 운전 전류 1% 단위로 설정하여 잡는 물건에 맞춰 파지력을 다양하게 컨트롤할 수 있다. 워크물의 크기에 맞춰 파지력의 파지 시간, 속도를 자유 자재로 설정할 수 있고, 반송물에 충격을 주지 않아 부서지기 쉬운 유리나 스프링 등 안전하고 확실하게 잡을 수 있는 특징이 있다.
핑거 최소 이동량이 0.02mm이므로 워크의 크기에 맞게 방향과 위치를 정렬할 수 있으며 핑거의 작동 범위를 드라이버의 출력 신호 (TLC 출력, AREA 출력)에 의해 확인함으로써 작업의 크기와 유무의 판정을 할 수 있다. 다면 설치를 지원하도록 설계되어 로봇 암등에 설치가 적합하고, 크기가 91 × 46 × 48.5mm에 무게는 380g로 소형화 장치 다양한 분야에서 사용이 기대되어지는 제품이다.
많은 관람객의 발걸음을 멈추게 한곳은 3D 측정 기술 및 3D 엔지니어링 서비스 분야 전문기업 Creaform 부스였다. 고정밀 산업용 3D 스캐너를 선보이며, 직접 다양한 물체를 스캐닝 하는 모습을 시연하였기 때문이다. Creaform이 선보인 제품으로 첫 번째는 사진 속 1번 제품인 전문가용 휴대용 3D 스캐너이다. 이 제품은 복잡한 표면을 신속하게 측정하고, 측정물의 색상 정보와 함께 스캔 데이터를 3D 모델링 소프트웨어에서 활용할 수 있다. 해상도 0.100mm 복잡한 형상에 대한 고해상도 스캐닝 기능을 탑재하였고, 1.25kg에 작은 여행 가방에 들어가는 크기로 휴대성이 높아 측정 환경에 영향을 받지 않고 어디서든 측정이 가능하다. 또한, 빠른 셋업 기능으로 2분 이내 스캐닝 준비가 완료되며 측정 속도가 최대 1,500,000 measurements/s 99개 화이트라이트 스캐닝 라인이 있다.
2번째 제품은 쉽고 빠르게 정확한 3D 측정을 원하는 제조, 엔지니어링 전문가, 품질 관리 전문가의 요구 사항을 반영하여 이번에 새롭게 개발된 HANDYSCAN 3D 산업용 고정밀 스캐너이다. 공간 정확도는 최대 0.025mm로 세밀한 측정을 위해 고정밀 제품으로 설계되었으며, 0.94kg으로 기존 제품보다 가볍고, 어디서나 자유롭게 측정이 가능하다. 11개의 크로스 레이저 라인의 넓은 스캐닝 영역을 측정할 수 있는 특징을 갖는다.
3번째는 가장 유연한 휴대용 3D 측정 솔루션인 광학 CMM 3D 스캐너: METRASCAN 3D로 모든 유형의 재료 스캔하며, 흑색, 다색 및 광택 표면도 거뜬히 처리가 가능하다. 이 제품은 0.064mm의 용적 정확도를 갖고 있어, 0.2 ~ 10m 크기 부품을 정확하게 측정할 수 있고, 측정 중 언제든지 부품 및 시스템 이동이 가능한 점이 가장 큰 특징이다.
용접 자동화 시스템 전문 기업 베스트에프에이에서는 피로니우스의 MIG/MAG 용접기 TPS/i 사용하는 모습을 관람객 앞에서 선보였다. 베스트에프에이는 오스트리아 용접기 전문 회사인 프로니우스(Fronius)와 협업하는 국내 유일의 파트너사이기도 하다.
이날 선보인 제품은 TPS/i로 기존의 TPS 시리즈와는 달리 하나의 하드웨어 플랫폼에서 소프트웨어의 업그레이드만으로 다양한 용접 프로세스를 사용할 수 있다. 가장 큰 특징으로는 용접 시작과 종료까지의 용접 현상을 리얼타임으로 감시 및 제어하며 용접 속도 및 CTWD 변화에도 즉각적으로 반응하여 일정한 용입 깊이 및 비드형상을 유지할 수 있다. 또한, 320, 400, 500 및 600A 전원 범주에서 사용할 수 있으며, 사용자가 편리하게 용접기를 조작할 수 있도록 30개의 언어가 지원되고, 파라미터 설정 및 터치가 가능한 LCD 디스플레이가 함께 탑재되어있다. 자동차 및 부품 공급 산업, 파이프라인 및 압력 용기, 구조물 건설 분야에 사용하기에 적합한 제품이다.
차세대 로봇 자동화를 선도하는 인아텍에서는 스마트 자율 주행 로봇 MiR 제품들을 선보였다. MiR(Mobile Industrial Robots)은 공장, 병원 등 물류 이송 현장 어디에서든 적용할 수 있는 협업 자율 주행 로봇이다. 먼저 MiR100 및 MiR 200은 내부 운송 및 물류를 빠르게 자동화하는 안전하고 비용 효율적인 모바일 로봇이다. 최대 200kg까지 자동으로 운송할 수 있으며 보이는 이미지처럼 상부 모듈을 변경할 수 있어 다양한 작업에 맞춰 로봇을 설정할 수 있다.
MiR500은 산업 전반에서 팔레트와 무거운 화물 운송을 자동화할 수 있도록 설계되어 있다. 리프팅 기능으로 팔레트 이송 작업에 최적화돼 있어 최대 500Kg 중량물 및 팔레트를 이송할 수 있으며 시간당 7.2Km를 운행할 수 있다. 360도 시야를 확보한 최신 레이저 스캐닝 기술을 갖추고 있으며 3D 카메라는 바닥에서 0~3.5m 떨어진 범위를 인식할 수 있어 이동 시 사람, 장애물 등을 감지해 운전할 수 있기 때문에 근무자들이 안전하게 작업할 수 있다.
이 외에도 1,000Kg 중량물을 운반할 수 있는 MiR1000과 카트를 자동으로 픽업, 하역하며 광범위한 견인 작업이 가능하게 만들어주는 MiR Hooks 제품들이 있으며 선보인 제품들은 스마트폰, 태블릿, PC 등 스마트 기기를 통해 MiR 웹 인터페이스로 손쉽게 제어가 가능한 특징을 갖는다.
이번 한국산업대전 머신소프트부분에서는 KT와 퀄컴이 5G+ Stadium 특별관을 마련하고, 국내 8개의 중소기업들과 함께 다양한 5G 스마트팩토리 및 IoT 협력 사례를 선보였다. 퀄컴과 함께 협력한 기업 중 하나인 블루버드는 기업/산업용 loT RFID, 모바일 및 태블릿, 모바일 핀테크 기기를 생산하고 직접 공급하는 세계적인 기업이다.
블루버드에서는 산업용 모바일, RFID 리더, 산업용 태블릿 제품을 선보였다. 사진 속 가운데 위치한 EF501R 제품이 실외 및 거친 산업 환경에서 사용할 수 있는 블루 버드의 가장 견고한 5인치 터치 모바일 컴퓨터이다. 대용량의 사용자 교체 가능 배터리를 사용하여 가장 긴 작업 시간을 제공하며 핫 스왑 모드를 통해 재부팅하지 않고도 배터리를 교체할 수 있는 특징을 갖고 있다.
실내 및 외부에서 가장 빠른 Wi-Fi 및 4G LTE를 지원하여 안정적인 무선 연결이 가능하며 고급 스캔 기술을 통해 1D 및 2D 바코드뿐만 아니라 더럽고 손상된 바코드를 빠르고 정확하게 캡처할 수 있어 대형 저장, 물류, 제조, 경찰 및 응급 서비스를 갖춘 유통 시장과 같은 다양한 산업에 유용하게 사용된다.
맨 왼쪽 첫번째 제품인 RFR900은 태그 인식 속도와 정확도 모두에서 뛰어난 판독 성능을 제공하며 고속 판독 기능과 초당 6미터까지 확장 된 판독 거리로 초당 900개 이상의 태그를 판독 할 수 있다. 또한 RFR900은 배치 모드에서 4만 개가 넘는 RFID 태그를 저장할 수 있습니다. 5.5인치 풀 HD 멀티 터치 디스플레이 및 매우 얇고 가벼운 권총 손잡이로 설계되어 소매, 제조 및 유통에서 사용하기 이상적인 RFID 제품이다.
특별관에서는 스마트 비전 및 최적화된 Platform을 통해 다양한 제품으로 인공지능 기반의 영상 인식 솔루션을 제공하는eyedea(아이디어)도 만나 볼 수 있었다. 아이디어에서는 ERVS(Eyedea Robot Vision System)인 스마트팩토리 분야에 특화된 로봇 영상인식 기술을 탑재한 Edge Device를 선보였다. 엣지디바이스는 중앙집중적인 서버/클라우드에 데이터를 전송하고 명령을 전달받는 게 아닌, 서비스를 제공하고 있는 사용자 근접 종단(Edge)에서 바로바로 데이터를 분석하고 처리하여 지연 없이 즉각적으로 서비스를 제공할 수 있는 장치로 독립된 시스템의 처리 속도를 극대화 시켜준다.
또한, 디바이스에서 대부분의 영상처리를 진행하므로 전체 시스템의 부하를 최소화 시켜주며, 기존 시스템 인프라 기반에 디바이스를 장착함으로써 손쉽게 시스템 업그레이드가 가능한 특징이 있다. 기존 기업들이 다양한 고객사의 Needs에 맞는 Customizing Service를 제공하기에는 기술적 한계가 있어 다품종 소량 시스템을 구축하기에는 도입 및 유지 비용 등 막대한 투자가 불가피하였으나, 아이디어는 모듈 형태의 솔루션 공급으로 시스템 구축에 따른 비용 부담이 없어 스마트팩토리 분야에서 특히 비용부문의 강점이 두드러졌다.
미국 최대의 CNC 머시닝 센터 제조업체 하스오토메이션에서는 금형 및 공구, 다이, 기타 고정밀 부품 가공용으로 고객 맞춤형 컨피규레이션이 가능한 VM시리즈를 소개하였다. Haas VM Series 기계는 금형 제작, 공구 및 금형 작업 및 기타 고정밀 산업에 필요한 정확성, 강성 및 열 안정성을 제공하는 고성능 VMC으로. 각 기계에는 넉넉한 작업 큐브, 다중 고정 테이블 및 12,000rpm 인라인 다이렉트 드라이브 스핀들이 있다. 표준 12,000rpm 스핀들은 저속 토르크 또는 고속 파워의 저하없는 고rpm을 제공하고, 소형 공구를 장착하여 더 나은 표면 이송을 위해 15,000rpm 인라인 스핀들과 30,000rpm 30테이퍼 스핀들도 제공된다.
이외에도 전면 전망, 측면 장착 툴 체인저, 프로그래밍 가능 냉각수 노즐, 자동 에어건 등을 갖춘 Haas 고속 제어 기능을 탑재하였다.
또한, 제공되는 컨트롤러는 공작 기계 산업에서 가장 사용자 친화적인 CNC 컨트롤러로 간단한 사용자 인터페이스가 제공되어 직관적인 탐색 기능을 통해 빠른 조작이 가능하다.
산업용 센서, 컨트롤러 전문기업으로 잘 알려진 오토닉스는 각종 센서류를 비롯하여 내년출시 예정인 세이프티 제품 및 변위센서등의 고기능 신제품을 선보여 많은 관람객들로 붐볐다. 이번에 선보인 신제품 중 세이프티 도어락 장치는 보호물 또는 출입구의 위치를 감시하는 장치로 보호물이 개방될 때 전원을 차단하고 사람의 접근을 통제하며, 장비 시동을 중단할 수 있다. 이 제품은 기존에 사용되어왔던 외국산 제품이 아닌 국산 제품이기에 가성비가 좋으며, 기존 점등의 가시성, 스위치 키를 뺄 때 힘이 많이 들어가거나, 너무 쉽게 빠지는 문제점을 개선하여 개발되었다.
변위센서는 대상물의 물리 변화량을 다양한 소자로 검지하여 그 변화량을 거리로 환산함으로써 센서에서 대상물의 거리와 높이를 계측하는 제품이다. 레이저를 쓰는 변위센서는 높은 직진성을 지니면서 스팟 자체가 포토센서에 비해 작고, CMOS 센서를 써서 정확하게 어떤 위치에 레이저가 맺히는지 반사되기 때문에 정밀한 측정이 가능하다. 두 가지 제품 모두 정확한 스펙이나 자료는 내년에 배포될 예정이라 하니 국산화된 두가지 제품군이 어떻게 출시될지 기대된다.
산업 분야에서 매뉴얼 리프팅 작업용 핸들링 기술을 제공하는 슈말츠에서는 진공 리프터 및 크레인 시스템을 소개하며 관람객들 앞에서 직접 시현을 보이고 있다. 진공 리프터는 진공기술을 이용하여 작업물을 흡착, 이송해주는 진공 흡착이송장치로 압축된 공기로 흡착하여 에어밸런스, 에어 바란스라고도 불린다. 손가락을 사용하여 상하 조작 버튼을 조정하고, 한 손으로는 이송 방향을 살짝 밀어 움직이기 때문에 사용이 쉽고, 직관적으로 제품을 작동 시킬 수 있다.
알루미늄 구성 부품으로 제작된 크레인 시스템과 완벽하게 조합된 크레인 진공 리프터를 제공하며 리프트는 최대 300kg 중량의 상품을 쉽고 빠르게 옮길 수 있다. 이렇듯 자동화 설비에 추가하여 공정개선과 함께 스마트 물류를 실현할 수 있으며, 진공을 사용하여 화물을 들어 올리거나 내리기 때문에 무거운 화물을 옮기는 작업에서 비롯되는 부상을 사전에 예방할 수 있다.
최대 규모로 진행된 이번 전시회에는 6만여명의 관람객이 다녀가며 성황리에 막을 내렸다고 전해진다. 큰 규모에 맞게 전시회장을 다 둘러보기란 매우 힘들었으나, 한국기계전과 머신 소프트 2019가 함께 개최되어 IT 기술과 제조 트렌드를 한 번에 확인할 수 있는 좋은 기회였다. 단순히 제품 정보를 얻는것이 아닌 실제로 어떻게 작동을 하고 어떻게 활용할 수 있는지를 직접 시연하고, 설명해주는 부스들이 유독 눈에 많이 띄어 끝까지 집중해서 둘러볼 수 있었다. 또한, 대다수의 업체들이 스마트 기계류를 선보이며 스마트 팩토리에 대한 업계의 관심과 스마트화가 국내 기계분야에서는 어느 수준까지 도달했는지 살펴볼 수 있었다. 내년 한국산업대전에서는 어떤 혁신적인 제품들이 미래산업의 모습을 바꿀지 기대하며 이번 관람기를 마친다. DM
[58호]세이프티 볼라드
2019 ICT 융합 프로젝트 공모전 참가상
세이프티 볼라드
글 | 경북대학교 김도훈, 박선우, 박은빈
1. 심사평
칩센 횡단보도등에서 발생하는 사고소식을 접할때마다 늘 생각이 들던 시스템이고, 간혹 주차장 입출입구 등에 유사한 시스템이 적용되어 있는 것을 본적이 있는듯 하다. 하지만 여러가지 현실적인 문제로 인하여 아직까지도 적용이 되지 않는게 아닐까 하는 막연한 추측을 하고 있다. Mechanic적인 요소를 적용한 것이 매우 흥미로우며, 시제품의 완성도도 생각보다는 높게 평가할수 있을듯 하다. 앞서 설명한것과 같이 실제 시스템을 적용하기 위한 현실적인 문제에 대하여 조금 더 고민하여 개선된 제품이 나온다면 아파트 단지등과 같은 변수고려가 적은 환경에 있어 적용가능할 것으로 보인다.
뉴티씨 법적으로 근거가 있는 아이디어이며, 또한, 많은 특허들도 등록되어 있습니다. 실용화가 가능한 것으로, 이미 국내 및 일본 등에서 실용화가 되어 있는 곳도 있는것으로 알고 있습니다. 장소에 따라서는 사고를 막기위하여 매우 중요한 시설로 사용될 수 있다고 생각됩니다. 학생으로 스스로 이런 생각을 해내었다는 점에서 박수를 보냅니다.
위드로봇 아이디어가 독보이는 작품입니다. 실용성 측면을 좀 더 고민하면 더욱 좋은 작품이 될 것 같습니다.
펌테크 작품의 하우징 구성은 상당히 깔끔하고 훌륭하게 구성이 되었으나, 작품의 구성 측면에서는 너무 단순하고 심플한 느낌을 받았습니다. 작품전 출전이라는 것을 감안한다면 현재의 작품에 아디디어를 좀 더 반영한 형태로 출품이 되었다면 좋지 않았을까 생각합니다.
2. 작품 동기 및 개요
2.1. 동기
[랩해서남줄랩]이라는 TV프로그램의 주제 중 ‘나는 장애를 극복하지 않았다.’라는 편을 보았습니다. 이 프로그램에서는 지체장애인분들이 일상생활에서 많은 불편함을 겪고 있고, 이것을 해결하기위해 직접 나서는 모습을 담고 있었습니다. 특히 차가 들어오는 것을 막기 위해 설치를 해둔 볼라드 때문에 휠체어가 지나가지 못하거나, 걸린다는 것을 알게 되었습니다. 이런 불편사항을 보안하기 위해 ‘자동으로 움직이는 볼라드는 어떨까?‘라는 생각을 하게 되었고 주로 횡단보도에 설치되어있는 볼라드에 적용해보기로 했습니다.
볼라드가 올라오고 내려오는 과정을 토의하면서 주의할 점을 파악해 나갔습니다. 무턱대고 볼라드가 땅에서 올라오면 횡단보도에 서있던 보행자가 다칠 위험이 클 것이라고 생각했습니다. 그래서 볼라드를 윈기둥 형태가 아닌 ‘π’자 형태로 만들기로 했습니다. 세이프티 볼라드의 윗부분은 일반 보행자들에게 잘 보이는 색상으로 구성하였고, 지체장애인 분들도 볼라드의 위치를 알도록 들어갔을 때도 약간 볼록한 형태로 구상을 했습니다.
또한, 이 볼라드는 지체장애인분들 뿐만 아니라 보호구역에서도 유용하게 사용될 수 있을 것이라고 판단했습니다. 어린이 보호구역에 세이프티 볼라드가 설치된다면 아이들에게 신호체계를 보다 정확하게 알려 줄 수 있을 것이라고 생각합니다. 더불어 빨간불일 때 횡단보도에서 무단횡단을 하는 사람들이 줄어들어 보다 나은 교통질서를 제공할 것입니다. 결과적으로 안전사고를 예방하는데 큰 도움이 되는 시스템이라고 자부합니다.
2.2. 개요
이 세이프티 볼라드는 신호에 따라 올라가고 내려가는 시스템을 가지고 있다. 이것은 장애인분들의 이동권을 보장 해 줄 수 있을 뿐만 아니라 일반인들의 무단횡단을 줄여 안전사고를 예방할 수 있다. 또한 어린이 보호구역에 설치하여 초록어머니를 대신하는 횡단보도 지킴이가 될 것이다.
3. 작품 설명
3.1. 구상도
차량이 지나다니지 않아도 신호등이 빨간불이 되면 볼라드에 신호를 주어 땅에서 올라와 보행자가 지나가지 못하도록 길을 막습니다. 마찬가지로 신호등이 파란불이 되면 볼라드에 신호를 주어 땅으로 들어가서 보행자가 길을 다닐 수 있도록 합니다.
3.2. 결과물 사양
4. 제작과정
4.1. 단계별 제작과정
도로의 안, 즉 땅 속을 나타낼 틀을 제작합니다. 이 때 볼라드가 만들어질 위치에 모터와 볼라드를 설치할 지지대를 만들어 줍니다.
볼라드 지지대를 만들어 올라가고 내려갈 수 있도록 기존의 지지대에 설치해 줍니다. 이는 모터에 부착된 톱니바퀴가 회전을 하면 아래, 위로 움직여주는 역할을 합니다.
모터를 볼라드와 연결된 부분에 연결시켜 주어 모터가 돌아가면 볼라드가 올라가고 내려가도록 설정해줍니다.
시스템 상단에 도로를 구현해 줍니다. 분홍색부분은 인도 부분이며 검은색부분은 차도로 횡단보도만 나타냈습니다. 빨간색 LED와 초록색LED를 연결한 신호등을 설치해 줍니다.
볼라드를 설치할 구멍을 뚫어 볼라드가 내려가고 올라가도록 합니다.
빨간불 일 때는 볼라드가 올라오도록 모터가 정방향 회전을 합니다.
초록불 일 때는 볼라드가 내려가도록 모터가 후방향 회전을 합니다.
4.2. 주요 동작 및 특징
전체적인 동작 내용은 신호등과 횡단보도를 표현하고 신호등 신호에 맞게 볼라드를 위아래로 움직여 주는 것이다. 이를 위해 아두이노 보드와 모터 쉴드를 이용해 모터의 동작과 LED 깜박임을 제어하도록 구성하였다. 먼저 신호등 빨간불에서 초록불로 바뀌는 경우에 LED-green에 전압을 인가하고 LED-red의 전압을 차단하는 동시에 두 모터에 동작명령을 주어 횡단보도 양측 볼라드가 같이 내려가도록 설계하였다. 초록불 시간이 거의 다 끝나갈 때 즈음 LED-green이 깜박이도록 명령을 주어 신호가 거의 끝나간다는 것을 표현하였다. 이후 시간이 다 되면 LED-green의 불이 꺼짐과 동시에 LED-red의 불이 켜지면서 볼라드가 올라오도록 설계하였다.
상하로 움직일 수 있는 볼라드로 인해 볼라드의 주 기능인 차량 통제의 역할을 수행할 수 있는 동시에 볼라드로 인해 발생했던 보행자의 통행 불편함을 해소할 수 있게 되었다.
또한 제작 과정에서 볼라드가 내려갈 때와 올라갈 때의 모터 구동 시간을 다르게 설정하여 중력으로 인한 모터의 부하로 발생하는 볼라드의 높이 오차를 해결하였다.
4.3. 전체 시스템 구성
#include <AFMotor.h>
AF_DCMotor motor1(3); // M3에 연결
AF_DCMotor motor2(2); // M2에 연결
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println(“Motor test!”);
// turn on motor
motor1.setSpeed(0); // 모터 회전속도 설정
motor2.setSpeed(0);
motor1.run(RELEASE);
motor2.run(RELEASE);
// analog input pin을 output으로 초기화
pinMode(A0, OUTPUT); // RED
pinMode(A5, OUTPUT); // GREEN
}
void loop() {
uint8_t i;
delay(1000);
Serial.print(“tick”);
// 정방향 회전
motor1.run(FORWARD);
motor2.run(FORWARD);
digitalWrite(A0, LOW); // RED off
digitalWrite(A5, HIGH); // GREEN on
// 모터 구동 시작
for (i=0; i<60; i++) {
motor1.setSpeed(180);
motor2.setSpeed(180);
delay(10);
}
// 모터 정지
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(5000);
Serial.print(“tock”);
// 초록불 점멸
for (i=0; i<5; i++) {
digitalWrite(A5, LOW);
delay(200);
digitalWrite(A5, HIGH);
delay(200);
}
Serial.print(“tech”);
// 역방향 회전
motor1.run(BACKWARD);
motor2.run(BACKWARD);
digitalWrite(A0, HIGH); // RED on
digitalWrite(A5, LOW); // GREEN off
// 모터 구동 시작
for (i=0; i<80; i++) {
motor1.setSpeed(200);
motor2.setSpeed(200);
delay(10);
}
// 모터 정지
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(7000);
}
위는 스마트 볼라드의 모형을 구동시키기 위한 소스 코드이다. 상하로 왕복운동을 하는 구조는 과학상자로 만들었으며, 이에 필요한 두 개의 모터를 제어하기 위한 장치로 아두이노(UNO R3 ATmega328)와 아두이노 모터 쉴드(Adafruit L293D Motor Shield)를 선택하였다. 아두이노의 코드는 C++을 기반으로 만들어졌다. 따라서 코드의 문법은 모두 C++과 동일하다. 아두이노에서 모터쉴드를 제어하기 위한 헤더파일(AFMotor.h)이 제공되고 있으므로 이를 활용하였다. 아두이노의 코드는 크게 두 부분으로 구분된다. LED, 모터 등의 객체를 생성하고 객체들의 초기 설정을 해주는 부분인 void setup() 함수와 무한 반복되며 하드웨어의 실질적인 동작을 기술하는 부분인 void loop() 함수로 이루어진다. 먼저, 가장 첫 부분은 다음과 같다.
#include <AFMotor.h>
AF_DCMotor motor1(3); // M3에 연결
AF_DCMotor motor2(2); // M2에 연결
#include <AFMotor.h>는 Adafruit L293D Motor Shield를 활용하기 위한 라이브러리를 추가하는 부분이다. 미리 만들어져있는 헤더파일을 통해 모터 객체를 쉽게 생성하고, 다양한 메소드를 편리하게 사용할 수 있게 된다. 아래의 두 줄은 AFMotor 라이브러리에 정의되어있는 AF_DCMotor 클래스를 사용해 두 개의 모터를 제어하기 위해 각각 motor1, motor2 라는 모터 객체를 생성한다. 이때 생성자의 매개변수로 각각 3, 2를 넘겨주었는데, 이는 모터 쉴드의 4개의 모터 연결 포트 중 motor1은 3번 포트에, motor2는 2번 포트에 연결하겠다는 의미이다.
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println(“Motor test!”);
// turn on motor
motor1.setSpeed(0); // 모터 회전속도 설정
motor2.setSpeed(0);
motor1.run(RELEASE);
motor2.run(RELEASE);
// analog input pin을 output으로 초기화
pinMode(A0, OUTPUT); // RED
pinMode(A5, OUTPUT); // GREEN
}
Serial.begin(speed)는 아두이노가 시리얼 통신을 사용하게 만드는 메소드이다. Serial은 시리얼 통신과 관련된 메소드들이 포함되어있는 정적(static) 클래스이다. 메소드의 인자로 넘겨주는 speed 초당 몇 비트의 속도로 통신을 할지 설정하는 값이다. 이는 컴퓨터 쪽의 시리얼 통신 속도와 일치하여야 시리얼 모니터에 정상적으로 출력이 된다. 다음은 모터와 LED를 초기화하는 부분이다. setup() 함수 이전에 생성한 두 개의 모터 객체의 속도와 현재 구동 상태를 각각 0과 RELEASE 상태로 초깃값을 설정해 준다. 아두이노 보드에는 12개의 출력 핀과 6개의 아날로그 인풋 포트가 있다. 그런데 Adafruit L293D Motor Shield는 2번, 13번 핀을 제외하고는 모두 사용하는 방식으로 아두이노 보드에 장착된다. 따라서 모터를 구동시키는 것 외에 신호등을 구현하기 위한 두 개의 LED의 출력을 제어하기 위해서는 아날로그 인풋 포트를 디지털 아웃풋 핀으로 사용할 필요가 있었다. 그 설정을 해주는 부분이 pinMode() 함수이다.
void loop() {
uint8_t i;
delay(1000);
loop() 함수는 setup() 함수가 실행된 후 프로그램이 종료될 때까지 함수 내부의 내용이 무한 반복되며 실행된다. 먼저 uint8_t i; 는 loop() 함수 내부의 반복문에서 계속 사용할 지역변수 i를 선언하는 코드이다. 자료형 uint8_t 는 <stdint.h>에 정의되어있는 자료형으로, 8비트의 부호가 없는 정수형의 자료형을 나타낸다. 즉, 정수 0에서부터 255까지 표현할 수 있다. 아두이노 UNO R3 ATmega328는 8-bit의 프로세서를 가지고 있어 8비트 보다 큰 자료를 한 번에 처리하지 못하므로 해당 자료형을 사용한다. delay() 함수는 의미 그대로 코드를 실행하는데 시간을 지연시키는 역할을 한다. 함수의 인자로 전달받는 시간의 단위는 ms(밀리세컨드) 이므로 위의 예처럼 1000 을 넘기면 1000ms 즉 1초를 지연시킨다. 이 delay() 함수를 통해 신호등의 빨간불, 초록불이 켜지는 시간과 모터를 동작시키는 반복문의 시간을 제어할 수 있다.
Serial.print(“tick”);
// 정방향 회전
motor1.run(FORWARD);
motor2.run(FORWARD);
digitalWrite(A0, LOW); // RED off
digitalWrite(A5, HIGH); // GREEN on
// 모터 구동 시작
for (i=0; i<60; i++) {
motor1.setSpeed(180);
motor2.setSpeed(180);
delay(10);
}
// 모터 정지
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(5000); Serial.print(“tick”);
// 정방향 회전
motor1.run(FORWARD);
motor2.run(FORWARD);
digitalWrite(A0, LOW); // RED off
digitalWrite(A5, HIGH); // GREEN on
// 모터 구동 시작
for (i=0; i<60; i++) {
motor1.setSpeed(180);
motor2.setSpeed(180);
delay(10);
}
// 모터 정지
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(5000);
Serial.print(“tick”) 메소드는 아두이노 개발환경의 시리얼 모니터에 “tick”이라는 문자열을 출력한다. 이를 통해 loop() 함수 내부에서 해당 메소드까지 소프트웨어적으로 문제없이 실행되고 있음을 확인하기 위한 목적으로 활용한다. 초록불이 되고 모터가 정방향으로 구동되기 시작할 때 “tick”을, 초록불이 깜빡거리기 시작할 때 “tock”을, 빨간불이 되고 모터가 역방향으로 구동되기 시작할 때 “tock”을 출력하도록 하였다.
motor1.run(FORWARD); 는 모터를 회전시키기 위하여 모터 객체(motor1, motor2) 의 상태를 정지(RELEASE)에서 정방향 회전(FORWARD)로 변경시켜 주는 부분이다. digitalWrite(pin, value); 함수는 HIGH 또는 LOW 값을 디지털 핀에 출력하는 함수이다. setup() 함수에서 아날로그 입력 단자 A0, A5를 pinMode() 함수를 통해 디지털 출력 핀으로 설정해 주었기 때문에 A0, A5 단자에 대해서 HIGH, LOW의 값을 출력할 수 있다. A0 단자에는 빨간색의 LED를 연결하고, A5 단자에는 초록색의 LED를 연결할 것이므로, 빨간색 신호등은 끈 상태로, 초록색 신호등은 켜진 상태로 만들기 위해 digitalWrite() 함수의 value 인자를 각각 LOW, HIGH로 설정하였다.
초록불이 켜지고 난 다음은 올라가 있던 스마트 볼라드가 땅으로 내려올 차례이다. AF_DCMotor클래스의 메소드인 .setSpeed(speed) 메소드는 모터의 속력을 설정한다. speed 인자의 값으로 0에서 255까지의 값을 받을 수 있으며, 0은 꺼진 상태를, 255는 최대 속력을 나타낸다. 우리가 설정한 speed 값인 180은 어떤 정확한 수치를 나타내는 것이 아니다. DC 모터의 응답이 일반적으로 선형적이지 않으므로, 실제 RPM이 설정된 값인 180에 비례하게 나타나지는 않는다. 다양한 값으로 구동을 시켜본 결과 볼라드 구조물의 무게와 부하를 이겨내기 위한 적절한 속도를 구한 것이 180이다.
반복문의 한 루프에 10ms씩의 시간 지연이 들어가 있어 총 60번의 반복을 하므로 이론적으로는 총 0.6초가 걸리겠지만, 모터가 구동되는 시간으로 인해 시간이 조금 더 걸려 1초 내외로 동작을 마친다. 반복문의 실행을 마치고 나면 양쪽의 볼라드가 하강하여 땅으로 완전히 내려와 있는 상태가 된다. motor1.run(RELEASE); 메소드는 볼라드가 정지한 이후 두 개의 모터의 동작 상태를 정방향 구동 중에서 정지로 바꿔주는 부분이다. 또한, 초록불이 점멸하기 시작하기 전까지 5초 동안의 시간 지연을 준다.
Serial.print(“tock”);
// 초록불 점멸
for (i=0; i<5; i++) {
digitalWrite(A5, LOW);
delay(200);
digitalWrite(A5, HIGH);
delay(200);
}
초록불이 일정 시간이 지나 빨간불로 바뀌기 전 깜빡이는 기능을 수행하는 부분이다. 따라서 위에서 말한 대로 초록불이 점멸하기 전 Serial.print() 메소드를 통해 “tock”을 시리얼 모니터에 출력하여 프로그램이 정상 작동하고 있는지 확인한다. 초록색 LED가 연결된 A5 포트의 출력을 LOW, HIGH로 0.2초의 시간 지연을 두고 번갈아 가면서 5번 바꾼다. 다시 말해서, 초록불이 다섯 번 깜빡이고 끝난다.
Serial.print(“tech”);
// 역방향 회전
motor1.run(BACKWARD);
motor2.run(BACKWARD);
digitalWrite(A0, HIGH); // RED on
digitalWrite(A5, LOW); // GREEN off
// 모터 구동 시작
for (i=0; i<80; i++) {
motor1.setSpeed(200);
motor2.setSpeed(200);
delay(10);
}
// 모터 정지
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(7000);
초록불이 깜빡거리기를 끝내고 빨간불로 바뀌면서 모터가 작동하여 볼라드가 올라가는 동작을 시키는 부분이다. 초록불이 되고 볼라드가 내려가는 동작을 하는 loop() 함수의 첫 번째 블록과 거의 같은 코드 구성을 하고 있다. 하지만 세세한 설정은 정반대이다. 모터가 구동되는 방향이 반대여야 하므로 이전에 FORWARD로 설정하였던 값을 BACKWARD로 바꾸고, 초록불과 빨간불의 켜지고 꺼짐도 반대로 바뀌었다. 모터 구동 부분의 반복문의 경우 반복 횟수가 위의 블록과 같지 않다. 같은 구조로 코드를 작성하여 실행시켜 보았을 때, 볼라드 구조물의 무게로 인해 볼라드가 내려가는 길이에 비해 올라가는 길이가 적었다. 따라서 반복문의 횟수를 더 크게 설정하여 올라가고 내려오는 길이가 거의 같도록 조절하였다. 또한, 모터의 상태를 정지(RELEASE)로 변경한 후 주는 시간 지연이 더 긴 것은 초록불과는 다르게 깜빡거리는 시간을 고려하지 않았기 때문이다.
4.4. 기대효과 및 예상되는 장애요인과 해결방안
스마트 볼라드가 실제로 도입된다면 필요에 따라 볼라드를 설치 및 제거함으로써 차량 통제가 필요한 곳에 널리 쓰일 수 있을 것이다. 예를 들어 주차장에서의 차량 통제나 인도의 불법 주정차 예방에도 사용될 수 있고, 큰 행사로 인해 넓은 지역의 대규모 차량 통제가 필요한 경우 손쉽게 스마트 볼라드를 이용하여 차량 진입을 막을 수 있다.
또한 스마트 볼라드는 횡단보도에서 지하철의 스크린 도어와 비슷한 역할을 해줄 수 있기 때문에 무단횡단 예방의 효과가 있고, 횡단보도에서의 교통사고 발생 위험을 상당히 낮출 수 있을 것으로 기대된다.
특히, 어린이 보호 구역이나 보행 약자가 많은 지역에서 스마트 볼라드가 빛을 발할 수 있는데 사람 없이도 24시간 교통 약자의 보행을 보호해줄 수 있어 교통 상황을 관리해주는 교통 경찰이나 경비원, 녹색 어머니회의 역할을 대신할 수 있다.
스마트 볼라드를 제작하는 과정에서 여러 좋은 아이디어가 나왔지만 직접 제작하는 데까지는 이르지 못하였다. 예를 들어 볼라드에 LED를 설치하여 야간에 어두운 길을 밝혀 주는 역할을 할 수도 있고, 센서를 부착해 사람을 인식하여 차가 없으면 신호가 바뀌고 자동으로 내려가게 하는 기능과 시간대 별로 보행자와 차량의 통행량 정보를 측정해 교통 정보도 수집할 수 있도록 할수 있을것이다. 그리고 볼라드가 움직이기 전에 음성안내를 해주어 보행자에게 미리 알려주는 기능도 추가되면 좋을 것 같다.
스마트 볼라드에서 예상되는 장애요인으로는 갑자기 움직이는 볼라드로 인한 보행자 피해와 볼라드의 설치 및 유지 관리 문제가 있다.
하지만 이런 문제는 향후 발전 방향에서 언급한 것처럼 볼라드가 움직이기 전에 LED점멸이나 음성 안내 메시지를 통해 보행자가 볼라드의 움직임을 미리 예측할 수 있도록 한다면 보행자가 볼라드의 움직임을 인지하지 못해 생기는 사고를 예방할 수 있을 것이다. 또한 스마트 볼라드는 땅 밑에 장치를 설치하여 볼라드가 올라오는 방식이므로 설치가 비교적 쉬운 편이고 외부 충격으로 인한 파손이 있다 하더라도 볼라드 기둥만 교체해 주면 되기 때문에 수리하기도 편리할 것이다. 또한 컴퓨터로 볼라드를 제어할 수 있기 때문에 볼라드 관리도 간편할 것으로 예상된다.
5. 참고
· 아두이노 코드 및 구동방법: https://youtu.be/V-MXQN3CjEE https://www.youtube.com/watch?v=D5JX2N-7zWo
[58호]대한민국 4차 산업혁명 페스티벌 2020
대한민국 4차 산업혁명페스티벌 2020
글 | 박진아 기자 jin@ntrex.co.kr
4차 산업혁명의 미래와 지속적인 성장 전략을 마련한 산업, 지식, 체험이 융합된 국내 최대규모 종합 산업 박람회인 대한민국 4차 산업혁명 페스티벌이 지난 12월 17일부터 3일간 코엑스에서 개최하였다. 우리나라의 미래 산업을 한눈에 살펴볼 수 있는 2020 대한민국 4차 산업혁명 페스티벌은 글로벌 비즈니스 플랫폼 마련, 내수 활성화, 정부 각 부처 대응 현황과 미래비전 공유, 스타트업 발굴 및 지원 환경 조성을 목적으로 전시회뿐만 아니라, 컨퍼런스, 어워드, 다채로운 부대행사가 함께 진행되었다.
부대행사로는 채용 설명회, 기술 설명회, 공유 킥보드 체험 등 정보를 얻고, 직접 체험을 해볼 수 있는 프로그램들이 눈에 띄었으며, 컨퍼런스에서는 주요 연사들이 4차 산업혁명 정부 정책, 초시대 초개인화된 인공지능, 모빌리트 비즈니스 인사이트 2020 등을 주제로 강연을 하였다.
그중 기자는 전시회 위주로 둘러보았으며, 전시장에 들어서면 가장 먼저 보이는 곳은 인공지능 분야 전문 업체 라온피플 부스였다. 라온피플은 AI 기반의 비전 검사 솔루션을 제공하는 기업이다. 영상신호처리 분야와 인공지능 딥러닝 알고리즘 기술을 기반으로 해외 의존도가 높은 2D/3D 카메라, 열화상 카메라, 바코드 리더기, 카메라 모듈 및 렌즈 검사기 전 제품을 오로지 라온피플의 자체 내부 역량으로 연구 개발, 생산 및 판매하고 있다. 또한 딥러닝 기반의 비전 검사 소프트웨어 ‘나비(NAVI) AI’를 업계 최초로 개발하고 출시함으로써 4차 산업혁명의 중심인 스마트 팩토리 산업에서 빠르게 성장하고 있다. 자체적으로 구축해 온 AI 알고리즘을 활용해 올해부터 출시한 스마트 시티와 스마트 덴탈 솔루션을 이번 전시회에서 선보였다.
우선 스마트 팩토리 분야에서는 20M 픽셀 카메라(PMVC-3U020C)와 카메라 모듈 검사솔루션(LPMC-990OP, LPMC-1000OP)이 대표적이다. 20M 픽셀 카메라는 넓은 영역을 검사할 수 있으며, 20M 픽셀의 고해상도임에도 불구하고 타사 제품보다 가격이 저렴하다. 또한 한 대의 PC에 최대 12개의 카메라를 연결할 수 있어 여러 각도에서 제품을 검사할 수 있다. 990OP와 1000OP는 자동화기기에 최적화되어 Embedded AF를 통해 빠른 검사 속도를 자랑하며 검사에 필요한 영역만 전송하는 Multi-ROI 기능으로 프레임 레이트를 2배 이상 증가시킨다. 이 외에도 스마트시티 분야에서는 교통분야 솔루션인 ‘AI 교차로, 그린라이트’를 선보였는데 차량 대기행렬, 차량 대기 유무, 교차로 중앙 차량 감시 등의 기능을 통해 혼잡한 교차로에서 차량의 운행 방향을 풀어주고 주행 중인 차량이 통과할 수 있게 신호를 배분한다. 가장 큰 특징은 루프검지기를 설치할 필요 없이 신호등에 카메라를 거치하면 된다는 점이다. 라온피플은 그린라이트로 인해 출퇴근 시간을 30% 단축하고 교차로 대기시간을 줄여 초미세먼지의 배출량을 감소시킬 수 있을 것으로 보고 있다. 이렇듯 사용자 환경에 최적화된 하드웨어와 인공지능 소프트웨어를 통합한 뛰어난 품질과 기술력은 국내를 비롯해 해외에서도 가능성을 인정받고 있으며, 이번 전시회에서는 기술·시장·혁신 부문에서 최고의 점수를 받아 정보통신 산업진흥원장상을 수상하는 영예 또한 얻었다.
가축 헬스케어 서비스를 제공하는 유라이크코리아에서는 농업 ICT 기술을 통해 축우의 생체 변화를 실시간으로 모니터링하고 발정/분만/질병 관리를 한 번에 관리하는 라이브 케어 서비스를 선보였다. 지난 과거 가축들 사이에서 발생한 바이러스를 통해 소, 돼지 등 많은 가축을 살처분하고, 큰 피해액을 입힌 구제역 바이러스를 들어 보았을 것이다. 이 바이러스는 특별한 치료법이 없어 조직배양 백신을 이용한 사전 예방이 중요하다고 알려져 있다. 이런 질병 예방 서비스에 주목하여 개발된 제품이 라이브 케어이다.
라이브 케어는 각종 센서, 통신 모듈, 배터리 등이 들어 있는 바이오 캡슐을 소에게 먹이고, 이 캡슐이 축우의 위 속에 안착하면 체온, 활동량 등 생체 정보를 실시간으로 확인할 수 있게 해준다. 캡슐은 최대 6년간 사용이 가능하며, 사탕수수로 만들어져 소고기 품질과 소의 안전에 해를 끼치지 않고, 도축 시 위 속에 있는 부산물들과 함께 폐기 처리된다. 또한, 캡슐을 통해 얻은 데이터는 PC 또는 모바일을 통해 사전에 질병 여부를 파악할 수 있으며, 데이터 분석을 통해 수정 적기를 예측해 수정 확률을 높이거나, 분만일에 맞춰 사전에 준비할 수 있도록 도움을 준다. 축우 사육에 도움을 주는 이 제품은 상용화가 완료된 일부 글로벌 시장에서도 많은 주목을 끌고 있다.
글로벌 IT 성능 관리 및 빅데이터 플랫폼 기업인 엑셈에서는 첫 번째 InterMax와 두 번째 EXEM AIOps 솔루션을 선보였다. InterMax는 End-to-End 거래 추적을 통하여 애플리케이션 서버와 데이터베이스 서버 등 전 구간의 성능 관리를 통합·효율적으로 수행하기 위한 성능 관리 솔루션이다.
기존 복잡한 비즈니스 거래 환경에서 시스템별로 각각 모니터링 툴을 사용하면, 시간이 많이 소요되고, 장애 발생 시 신속한 대응을 하지 못하였지만, InterMax는 사용자 요청부터 외부 시스템 연계 구간까지 비즈니스 거래 전 구간에 걸친 거래 추적 기능을 제공한다, WAS의 액티브 트랜잭션과 DB의 세션 정보를 동시에 파악이 가능하여 장애 원인 분석 및 대응에 용이한 특징을 갖는다.
이처럼 사용자, Web, WAS, TP, 외부 연계의 통합 모니터링을 제공하고, 액티브 트랜잭션과 상태 정보를 초 단위 수집/저장하며 장애 발생 시 알림 및 원인 분석 기능을 제공하기에 금융·공공·통신·제조 등 대규모 시스템 관제 시에 효과적으로 사용되는 제품이다.
EXEM AIOps는 국내 최초 딥러닝 기반 지능형 IT 운영 솔루션으로 기업의 다양한 데이터를 실시간으로 수집하여 부하 특성과 패턴을 학습하고, 장애 상황을 예측함으로써 IT 운영자의 선제 대응을 지원한다.
실시간 이상 징후 탐지, 미래의 특정 기간의 부하를 예측하고 대비하여 서비스 중단으로 인한 손실 비용을 최소화할 수 있으며, 사람이 인지하기 힘든 개별 시스템 사이의 연관도까지 고려한 분석을 통해 장애에 대한 근본적인 원인을 추적할 수 있는 제품이다.
4차 산업혁명 시대 이동통신사에서는 5G 기반 B2B, B2C 서비스에 주목하고 있다. 이에 이번 박람회에서 KT는 산업과 융화돼 활용될 수 있는 5G B2B 솔루션인 기가 IVI, 스마트팩토리, 스마트글래스, 기가 센싱, AI 아파트·호텔, 디지털 바우처, 드론 등을 소개하였다.
KT 전시장 한쪽에는 기가 IVI를 직관적으로 보여주기 위한 자동차가 전시돼있었다. 기가 IVI는 차량용 인포테인먼트 시스템으로 인포테인먼트는 이름 그대로 주행 정보(Information)와 놀거리(Entertainment)를 합한 시스템을 말한다.
인공지능(AI) 서비스 기가 지니를 탑재한 음성 제어형 기가 IVI를 활용해 별도의 터치없이 차량 내 인포테인먼트를 조작할 수 있다. 사용자가 “지니야, 강남역 가는 길 알려줘”라고 말하면, 차량 내부 디스플레이에 경로가 나타나며, 이외에도 음성 제어를 통해 KT 원내비, 지니뮤직을 비롯한 11개 서비스를 이용할 수 있다. 현재 기가 IVI는 르노삼성과 제휴해 차량에 탑재되고 있으며, 탑재된 차량은 QM6 한 종이다.
AI 호텔 로봇 엔봇(N bot)은 호텔 투숙객이 객실 내 기가 지니 호텔 단말을 통해 음성이나 터치로 객실 용품을 요청하면 배달해주는 로봇이다.
KT 융합 기술원에서 자체 기술로 개발한 3D 공간맵핑 기술, 자율 주행 기술 등 최첨단 정보통신기술(ICT)이 적용돼 객실까지 자율주행으로 이동할 수 있다. 또한, 호텔 엘리베이터와의 통신을 통해 스스로 엘리베이터를 승하차하며 층간 이동도 가능하다. 엔봇은 노보텔 앰배서더 동대문에 상용화되어 현재 일상에서도 손쉽게 만나볼 수 있다.
LG 유플러스에서는 이용자의 일상과 결합하여 새로운 재미를 제공하는5G B2C서비스인 U+ 5G 갤러리를 선보였다. 예술에 U+5G를 접목시킨 5G 갤러리의 일상 속의 움직임을 주제로 한 증강현실 작품들은 박람회 기간 외에도 2월 29일까지 지하철 6호선 공덕역에서 만나 볼 수 있다고 한다. U+ 5G 갤러리는 예술 작품에 5G 기술을 추가하여 멈춰있던 작품들이 360도로 살아 움직이는 모습을 보여준다.
이번 프로젝트를 위해 서울문화재단, 구족화가협회 그리고 스무 명 이상의 시각 예술가들, 무용과 공연 분야의 퍼포머, 다원예술가들이 협력하여 다양한 작품을 전시하였다. 관람방법으로는 유플러스 앱을 이용하여 작품을 인식하거나, 구글렌즈 앱을 통해 감상하고 싶은 작품에 카메라를 대고 인식시키면, 나레이션과 함께 살아 움직이는 작품을 감상 할 수 있다. 실제 현장에서 요즘 엄청난 인기를 끄는 펭수 등 다양한 작품에 관람객들이 휴대전화를 이용하여 갤러리 곳곳을 체험하는 모습을 볼 수 있었다.
VR 스포츠 시뮬레이터를 개발하는 브이알카버에서는 실내에서 안전하게 익스트림 스포츠를 즐길 수 있는 싱크로 바이크를 관람객이 직접 체험해볼 수 있게 하였다.
싱크로 바이크는 운동과 VR콘텐츠를 함께 이용할 수 있는 신개념 바이크로 Interactive model을 이용하면 VR 게임과 연동되어 페달 속도, 몸의 기울임에 따라 게임 캐릭터를 조정할 수 있고, 기기 전체가 120도 회전해 코너링 상황을 그대로 구현하여 실제 사이클 레이싱을 하는 느낌을 받는다. Non-interactive model은 360도 VR 디스플레이를 똑같이 사용하지만, VR외에도 사용자가 원하는 콘텐츠를 즐길 수 있으며, 기기 전체가 360도 회전해 VR 콘텐츠를 편하게 시청할 수 있고, 몸을 기울이는 대로 전/후/좌/우 제품이 함께 기울어져 실내에서도 실제 바이크를 탈때처럼 현장감을 구현할 수 있다. 이 제품은 향후 헬스클럽, VR 게임장, 운동선수/군인 실내 훈련, 병원 재활 시설로 다양하게 활용될 예정이다.
산업용 드론 개발 전문기업인 에어로비전에서는 다양한 임무 수행이 가능한 드론제품을 선보였다. 그 중 AVD-16L모델과 MX410L모델은 농약 살포용 드론으로 AVD-16L 1회 8~12분 작업으로 3,200평에서 4,000평에 16L의 농약을 살포할 수 있다. 작업속도는 21Km/h 이며, Lipo 22,000mAh 20c 일체형 배터리를 사용하는 특징을 갖는다.
아래 물통을 단것 같은 모형의 MX410L은 4~6m 면적에 10L의 농약을 살포 할 수 있으며, 농약을 가득 채웠을 경우, 26kg으로 AVD-16L이 농약을 가득채웠을때 37kg이 되는것과 비교하여 가벼우며 더 작은 형태를 띄고 있다. 넓은 면적에 농약을 살포하려면 많은 인력과 시간이 소요되는데 이러한 산업용 드론을 사용하면 시간과 비용을 모두 아낄 수 있어 앞으로 농업산업에서 제품의 활용도가 기대된다.
OBSBOT의 공식 공급업체 에이아원에서는 중국의 Reni Techg가 개발한 세계최초 자동 AI 카메라 OBSBOT Tail을 선보였다. 1인 미디어가 강세인 요즘 대부분의 유튜버는 촬영과 편집 그리고 연출을 직접 진행하게 되는데 움직이는 동선에 맞춰 자연스럽게 촬영하는 것은 매우 어렵다. 이런 문제점을 완벽하게 날려주는 촬영 장비 OBSBOT Tail은 AI Tracking 기술을 기반으로 저조도 환경, 시끄러운 거리, 부정확한 자세등 보다 복잡한 환경에서도 피사체를 안정적이고 부드러게 따라다니며 영상을 촬영할 수 있다. 사용자는 앱에서 원하는 추적 대상을 간단한 클릭으로 설정 및 고정할 수 있으며, 구도 조정 및 편집이 가능하다.
또한, OBSBOT Tail은10개 광학렌즈와 소니 CMOS 센서를 탑재하여 최대 4K/60fps의 UHD로 영상 촬영이 가능하고, 최대 1,200만 화소의 이미지를 담아낼 수 있다. 3축 짐벌을 탑재하여 떨림 현상을 줄여주고, 360도 자유자재로 회전하는 짐벌은 영화와 같은 장면을 촬영할 수 있게 해준다. 그 밖에도 컴퓨팅 성능의 5 TFLOPS를 가진 Hitilicon Hi3559A 칩을 사용하며, HDR10/3DLUT/3DNR 등과 같은 프리미엄 촬영 기술이 지원된다.
국내 인공지능 솔루션 업체인 브이디 컴퍼니에서는 자율주행 솔루션을 탑재한 지능형 운반로봇 Pudubot을 선보였다. 푸두봇은 컨트롤과 맵핑 센서를 통해 미리 경로를 잡아주고, 근거리 송수신기를 통해 제어하는 지능형 운반로봇이다. 푸두봇에는 라이다 센서와 비주얼 센서, UWB, IMU, 엔코더, 적외선 초음파 센서 등을 기반으로 하는 다중 센서 퓨전 기술을 사용하여 정확하게 위치를 파악하고 이동할 수 있다.
자율주행차에 들어가는 동시적 위치추정 및 지도 작성 기술을 탑재하여 정확한 지도 작성, 최적의 이동경로 탐색, cm 단위 위치 이동, 민첩한 장애물 회피가 가능하다.
또한, 최대 15도 기울기까지 올라가고 내려올 수 있으며, 1~5단계까지 용도에 맞게 트레이를 조절할 수 있고, 30Kg으로 적재하중은 10Kg이다. 4시간 충전하면 최대 24시간 사용이 가능한 푸두봇은 화면에 좌석번호를 입력하는 방식으로 한번에 최대 4개의 테이블에 음식을 운반이 가능하며 호텔과 레저, 쇼핑몰, 비즈니스 공간 등 다채로운 공간에서 활용될 수 있다.
이번 대한민국 4차 산업혁명 페스티벌 2020에서는 컨퍼런스 및 부대행사를 통해 다채로운 정보를 손쉽게 얻을 수 있다는 이점이 있었으나, 일부 가상현실 체험관을 제외하고는 관람객에게 재미나 흥미를 이끌어낼만한 요소가 많이 부족해보였다.
현재 가장 이슈화되고 있는 4차 산업혁명을 주제로한 전시회로 많은 기대를 품고 방문하였으나, 다소 한정적인 전시규모와 제품들이 아쉬웠으며, 내년 4차 산업혁명 페스티벌에는 보다 많은 기업들이 참여하여 미래산업을 확인해 볼 수 있는 기회가 되길 바란다. DM
[58호]컬러테라피에 기반한 이모션 램프
2019 ICT 융합 프로젝트 공모전 참가상
컬러테라피에 기반한 이모션 램프
글 | 건양대학교 장건호
1. 심사평
칩센 컬러테라피를 이용하여 사용자의 감정 기복을 완화하려는 목표는 충분히 이해하나, 작품의 구성이 아쉽습니다. 우선 개발된 작품은 불쾌지수의 indicator로서의 역할이 더 주요해 보여, 이를 궁극적으로 해결할수 있는 에어컨이나 선풍기등과 같은 장치도 함께 동시에 컨트롤 할수 있는 형태로 구성하여 불쾌지수 자체를 낮출수 있는 방안도 함께 제안되었으면 좋았겠습니다. 또한 제작된 제품의 경우 램프 조명을 컨트롤 하는 형태이므로 매뉴얼 동작을 위한 빛과 파장에 민감한 IR 적외선 리모콘 보다는 간단한 무선 기술을 이용한 리모콘으로 제작하면 좋았겠다는 생각도 듭니다. 최근 IoT 조명들에 대한 관심이 높아지고 있고, 조명을 이용한 컬러테라피 등에 대한 아이디어도 많아 지고 있습니다. 금번에 진행한 작품을 기반으로 IoT/ICT 등으로 확장하면 더 흥미롭고 좋은 작품을 볼수 있을듯 합니다.
뉴티씨 생활에서 얻은 아이디어로 센서를 사용하여 기분을 전환할 수 있는 장치를 만든 점에서 관찰력에 많은 점수를 주고 싶습니다. 첫 작품으로 이렇게 기획하고, 실제로 만들어가면서 고민한 흔적이 많이 보입니다. 계속 노력한다면, 다음에는 더 좋은 작품을 만들수 있을 것으로 생각합니다. 작품의 난이도는 높지 않지만, 실제 생활에 도움이 될 수 있는 장치를 만들고자 노력한 점이 참 돋보이는 작품입니다.
위드로봇 최근 유행하는 IoT와 연동할 수 있으면 더 재미있는 작품이 될 것 같습니다.
펌테크 아이디어와 실용성을 겸비한 우수한 작품이라고 생각합니다. 추후 안마기, 러닝머신 등의 건강에 관련된 헬스기구 또는 흥미를 유발할 수 있는 실내외 인테리어 등과 연동해서 실생활에서 다양한 활용이 가능할 것으로 판단됩니다. 작품 자체의 시스템 구성과 기술적 난이도는 평범한 수준으로 생각이 되며 작품의 완성도를 높일 경우 힐링과 재미를 느낄 수 있는 상업용 성격을 지닌 제품으로도 충분히 활용이 가능할 것으로 생각됩니다.
2. 작품 개요
1. 개발 목표 : 날씨 변화에 따라 감정기복을 완화 시킬 요법으로 컬러 테라피를 이용하고자 한다. 이에 따라 자동으로 색이 바뀌는 램프를 개발하는 것
2. 세부 목표 : 날씨에 따라 조명의 색을 바꾸어 방안의 분위기를 바꾼다. 날씨의 객관적인 지표로 불쾌지수를 사용한다. 불쾌지수 4단계에 따라서 점진적으로 파란빛으로 방안을 채운다. 더운 여름날 높은 온도와 습도 때문에 불쾌함을 느끼는데 파란 빛을 통해 시원한 느낌을 불러 일으켜 불쾌함을 상쇄시키고자 한다. 실제 실내 등을 기획한다는 가정 하에 수동모드의 필요성을 느꼈다. 적외선 리모컨을 사용하여 보다 다양한 색을 설정할 수 있는 기능을 첨가 하였다.
3. 초기 램프 디자인 :
3. 작품 설명
3.1. 주요 동작 및 특징
· 온습도 센서를 사용하여 불쾌지수를 자동으로 계산한다.
· 불쾌지수 4단계에 따라서 백색 등에 파란빛을 첨가한다.
· 버튼을 통해 자동 모드에서 수동모드로 전환, 반대로도 가능하다,
· 적외선 리모컨을 사용하여 다양한 색으로 설정 가능하다.
3.2. 핵심 강조 사항
가. LCD 한글 및 이모티콘 출력
아두이노 LCD는 기본적으로 한글이 지원이 되지 않는다. ‘불쾌지수’ 글자를 표현하기 위해 커스텀 문자를 디자인 해야만 했다. ‘Design a Custom Character for an LCD’ 사이트를 이용하면 내가 원하는 문자를 디자인 할 수 있고 그에 해당되는 픽셀 좌표를 2진수로 바꿔준다. 글자 하나하나를 직접 만들어서 적재적소에 사용했다. 일단 기본적으로 LCD에 한글로 ‘불쾌지수’를 프린트 했고 얼굴 이모티콘을 4가지를 만들어서 불쾌지수 4단계 마다 긍정에서 부정으로 바뀌도록 프로그래밍 하였다.
나. 불쾌지수 계산
온습도 센서로 읽은 값은 건구 온도이다. 하지만 실제 불쾌지수 계산에는 습구온도를 사용하고 건구온도를 습도온도로 변환하는 식은 또한 습도에 따라 바뀌기 때문에 상당히 복잡하다. 그래서 오차를 인정하고 대략적인 값으로 계산해주는 식을 찾았다. 온도와 습도 값을 각각 변수에 저장하고 수식을 계산하여 60~90 사이의 값을 도출해내었다. 1.8*온도-0.55*(1-습도/100)*(1.8*온도-26)+32;
다. 적외선 리모컨 수동모드
실용적인 램프를 설계한다는 가정 하에 커스텀 모드를 만들 필요성이 있었고 적외선 리모컨을 사용하기로 하였다. 가장 먼저 간단한 적외선 수신회로를 만들어서 각 리모컨 버튼에 해당된 16진수 번호를 알아냈다. 그다음 원하는 색을 뽑아내기 위해서 RGB led를 3개의 가변 저항으로 제어하는 회로를 만들어서 수동으로 색을 조절하고 그때에 해당하는 가변저항 값을 0~255 범위로 변환하여 설정 값을 알아냈다. 최종적으로 리모컨을 사용하여 램프 색을 바꿀 수 있게 되었다. < on, off, 빨, 주, 노, 초, 파, 하늘, 보 > 온오프와 7가지 색 설정
라. 자동 수동 모드 전환
불쾌지수에 따른 자동모드와 적외선 리모컨 수신모드가 서로 따로 loop를 돌아야 했었다. 일반적인 구조로는 실행할 수 없었고 방법을 찾던 중 인터럽트 함수를 이용하기로 했다. 버튼의 전압이 바뀔 때마다 count 변수 값을 0 혹을 1로 바뀌도록 하였고, 0일 땐 자동 1일 땐 수동. 이런 식으로 count값이 바뀌지 않는 이상 해당 명령어는 계속 루프로 수행되었다. 이렇게 인터럽트를 이용하여 모드 스위칭 문제를 해결하였다.
3.3. 전체 시스템 구성
3.4. 개발 환경 및 사용 부품
4. 단계별 제작 과정
4.1. 적외선 리모컨 작동원리 습득, 킷값 조사
적외선 통신은 특정 리모컨 키를 눌렀을 때마다 각기 다른 신호를 쏜다. 갖고 있는 리모컨의 모든 버튼의 시리얼 값을 알아내어 차 후 원하는 동작을 실행시킬 때 이용하고자 한다.
간단하게 IR 수신기 테스트 회로를 만들었다. 센서의 작동 유무 확인과 리모컨 버튼별 값을 추출하기 위함이다. 적외선 신호를 받을 때마다 LED가 켜지게 하여 시각적으로 제대로 작동하고 있음을 확인했다. 시리얼통신을 통해서 각 버튼별 HEX값을 확인한다.
int RECV_PIN = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
}
HEX 값은 다음과 같다.
4.2. 온습도 센서 작동원리 습득, 불쾌지수 계산식 조사
온습도 센서는 DHT 11 모듈을 사용하였다. 온도와 습도를 아날로그 신호로 출력해주며 이 외부 정보를 내부에서 다시 계산식을 통해 불쾌지수를 계산하였다.
불쾌지수는 Thom이 제창한 것으로서 기온과 습도의 조합으로 구성되어 있으며 일반적으로 온습도지수라고도 한다. 불쾌지수에 따른 신체증상을 보면 DI 68 이하(20℃ 이하)는 전원 쾌적, DI 70(21℃)은 불쾌를 나타냄, DI 75(24℃)은 10% 정도 불쾌, DI 80(26.5℃)은 50% 정도 불쾌, DI 83(28.5℃)은 전원 불쾌, DI 86(30.0℃)은 매우 불쾌한 것으로 보고 있다. 원래 불쾌지수 DI=0.4(건구온도+습구온도)+15로 화씨온도를 사용하도록 고안되었으나, DI=0.72(건구온도+습구온도)+40.6으로 수정하여 섭씨온도로도 사용할 수 있다. [출처 : 네이버 지식백과 불쾌지수 [不快指數, discomfort index] (지구과학사전, 2009. 8. 30. 북스힐]
따라서 다음과 같은 수식을 세울 수 있다.
불쾌지수 = 1.8 * 건구 온도 -0.55*(1-습도/100)*(1.8*건구 온도-26)+32
제품의 전면부에 표시할 목적으로 각 불쾌지수의 4단계에 따라 표시등이 켜지도록 하였다. (전원쾌적 : Blue , 불쾌 : Green, 10%불쾌: Yellow , 50% 불쾌 : Red)
#include<DHT.h> //DHT.h 라이브러리 추가
DHT dht(2, DHT11); //DHT 설정 dht(핀, DHT종류)
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600); //시리얼모니터 시작
}
void loop() {
delay(1000);
int tem = dht.readTemperature(); //온도 값 정수형 변수 tem에 저장
int hum = dht.readHumidity(); //습도 값 정수형 변수 hum에 저장
int rate = 1.8*tem-0.55*(1-hum/100)*(1.8*tem-26)+32;
Serial.print(“Temperature :”); //Temperature : 글자 출력
Serial.print(tem); //측정된 온도 값 출력
Serial.print(“C “); //온도C로 표현
Serial.print(“Humidity : “);
Serial.print(hum);
Serial.print(“% “); //온도와 동일
Serial.println(rate);
if( rate < 68 ){
digitalWrite(10, HIGH);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}else if(rate >=68 && rate <75){
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}else if (rate >=75 && rate <80){
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
}else{
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
}
}
4.3. 가변저항 RGB 회로로 원하는 색상 값 조사
방안의 온습도를 측정하여 불쾌지수를 계산하고 또한 그 값에 따라 4단계로 나누어 표시등 제어 까지 완료 하였다. 표시등 제어 뿐만 아니라 RGB LED를 제어하여 점진적으로 파란빛을 첨가하는 건 일도 아닐 것이다. 하지만 실제로 실내 전등을 제작한다는 목표아래 수동으로 커스터 마이징 할 수 있는 전등의 필요성이 느껴졌다. 앞서 적외선 리모컨을 사용할 준비는 완료 되었다. RBG led의 각 색상 값을 기존의 색 배합 값으로 적용하였을 때 원하는 색과 분위기를 연출할 수 없었다. 그래서 각 색상 값을 가변저항으로 컨트롤 하는 회로를 만들어서 수동으로 색 배합을 하였고 원하는 색이 나올 때마다 시리얼 통신을 통해 수치를 확인하였다.
원하는 색상 값을 알아낸 후 RGB led를 적외선 리모컨을 통해 제어하는 시스템을 만들었다. 전체 전원 trun, off와 red, orenge, yellow, green, blue, navy, purple 등 6개의 색을 설정했다.
int red =6;
int green=5;
int blue=3;
void setup (){
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
Serial.begin(9600);
}
void loop(){
int redco = analogRead(A0);
int greenco = analogRead(A1);
int blueco = analogRead(A2);
int redbri = map(redco, 0, 1023, 0, 255);
int greenbri = map(greenco, 0, 1023, 0, 255);
int bluebri = map(blueco, 0, 1023, 0, 255);
analogWrite(red, redbri);
analogWrite(green, greenbri);
analogWrite(blue, bluebri);
Serial.println(String(redbri)+String(“..”)+String(greenbri)+String(“..”)+String(bluebri));
}
온습도 센서로 불쾌지수를 계산하게 되었고, 적외선 리모컨을 통해 led를 제어할 수 있게 되었다. 물론 불쾌지수의 단계별로 led 제어도 가능하다.
4.4. LCD 내용 출력하기
온도와 습도를 첫째 줄에 프린트 하였고 둘째 줄에 ‘불쾌지수’와 함께 불쾌지수 4단계별로 변화하는 이모티콘을 삽입하였다.
1. : ) 2. :| 3. : / 4. : (
이모티콘과 불쾌지수 한글 단어를 프린트하기 위해 세부 픽셀 하나하나를 컨트롤 할 필요가 있었고 ‘Design a Custom Character for an LCD’ 웹사이트를 이용했다.
왼쪽 사각형 배열을 클릭하여 원하는 모양으로 만들면 자동으로 각 픽셀별 2진수 코드를 계산해준다. 좀 더 직관적인 정보 습득을 위해 온도와 습도를 제공하고 한글과 이모티콘을 활용했다.
4.5. 인터럽트 함수 습득. 버튼으로 모드전환 기능 수행
불쾌지수에 따른 자동모드와 적외선 리모컨 수신모드가 서로 따로 loop를 돌아야 했었다. 일반적인 구조로는 실행할 수 없었고 방법을 찾던 중 인터럽트 함수를 이용하기로 했다. 버튼의 전압이 바뀔 때마다 count 변수 값을 0 혹은 1로 바뀌도록 하였고 0일 땐 자동 1일 땐 수동. 이런 식으로 count값이 바뀌지 않는 이상 해당 명령어는 계속 루프로 수행되었다. 이렇게 인터럽트를 이용하여 모드 스위칭문제를 해결하였다.
4.6. 회로·작품 제작
5. 결과물
6. 회로도 및 소스코드와 참고문헌
6.1. 회로도
6.2. 소스코드
#include <IRremote.h> #include<DHT.h>
#include <Wire.h> #include <LiquidCrystal_I2C.h> // 라이브러리 불러옴
DHT dht(9, DHT11); // 온습도 센서 핀 지정
int RECV_PIN = 8; // 적외선 수신부 핀 지정
int L_r = 6; int L_g = 5; int L_b = 3; // 이모션 램프 변수 설정
IRrecv irrecv(RECV_PIN); // IR리모콘 사용을 위한 클래스 생성
decode_results decodedSignal; // IR리모콘으로부터 받은 데이터
LiquidCrystal_I2C lcd(0x3f, 16, 2); // LCD 준비
int button = 2; volatile int flag = 0; volatile int count = 1; // 인터럽트 변수 설정
byte smile1[8] = {B00000, B01010, B01010, B00000, B10001, B10001, B01110, B00000};
byte smile2[8] = {B00000, B01010, B01010, B00000, B00000, B11111, B00000, B00000};
byte smile3[8] = {B00000, B01010, B01010, B00000, B00000, B11110, B00001, B00000};
byte smile4[8] = {B00000, B01010, B01010, B00000, B00000, B01110, B10001, B10001};
byte cel[8] = {B01000, B10100, B01000, B00110, B01001, B01000, B01001, B00110};
byte muc[8] = {B00000, B01111, B01111, B01001, B01001, B11001, B11011, B00011};
byte bul[8] = {B01010, B01110, B01010, B11111, B00100, B01110, B01110, B01110};
byte que[8] = {B11101, B00101, B11101, B00101, B10111, B11101, B00101, B00101};
byte ji[8] = {B00001, B11101, B01001, B01001, B10101, B10101, B00001, B00001};
byte soo[8] = {B00100, B01010, B10001, B00000, B11111, B00100, B00100, B00100};
// lcd 문자 커스텀 디자인
void setup() {
digitalWrite(button, INPUT_PULLUP);
attachInterrupt( digitalPinToInterrupt(button), BUTTON, CHANGE); // 인터럽트 함수 셋팅
lcd.init(); // lcd 초기화
lcd.backlight(); // lcd 라이트 켜기
lcd.createChar(1, smile1); lcd.createChar(2, smile2);
lcd.createChar(3, smile3); lcd.createChar(4, smile4);
lcd.createChar(5, bul); lcd.createChar(6, que);
lcd.createChar(7, ji); lcd.createChar(8, soo); // lcd 커스텀 문자
pinMode(L_r, OUTPUT); pinMode(L_g, OUTPUT); pinMode(L_b, OUTPUT); // 이모션 램프 핀 설정
pinMode(13, OUTPUT); pinMode(12, OUTPUT);
pinMode(11, OUTPUT); pinMode(10, OUTPUT); // 불쾌지수 표시등 핀 설정
irrecv.enableIRIn(); // 리모콘 수신 시작
Serial.begin(9600); //시리얼모니터 시작
}
void loop() {
if (count == 0) { // 인터럽트 입력 후 카운트가 0일때 수동모드 전환
lcd.setCursor(0, 0); lcd.print(“Customizing Mode”);
lcd.setCursor(0, 1); lcd.print(“ By. KONO “);
digitalWrite(10, LOW); digitalWrite(11, LOW);
digitalWrite(12, LOW); digitalWrite(13, LOW); // 수동 모드 초기설정
if (irrecv.decode(&decodedSignal) == true) { // IR 수신값이 있는지 판단.
Serial.println(decodedSignal.value);
switch (decodedSignal.value) {
case 0xFFA25D: analogWrite(L_r, 255); analogWrite(L_g, 255); analogWrite(L_b, 255);
break; // CH- -> LED on
case 0xFF629D: analogWrite(L_r, 0); analogWrite(L_g, 0); analogWrite(L_b, 0);
break; // CH -> LED OFF
case 0xFF30CF: analogWrite(L_r, 255); analogWrite(L_g, 0); analogWrite(L_b, 0);
break; // 1 -> red on
case 0xFF18E7: analogWrite(L_r, 255); analogWrite(L_g, 37); analogWrite(L_b, 0);
break; // 2 -> orange on
case 0xFF7A85: analogWrite(L_r, 255); analogWrite(L_g, 88); analogWrite(L_b, 0);
break; // 3 -> yellow on
case 0xFF10EF: analogWrite(L_r, 0); analogWrite(L_g, 255); analogWrite(L_b, 0);
break; // 4 -> green on
case 0xFF38C7: analogWrite(L_r, 0); analogWrite(L_g, 0); analogWrite(L_b, 255);
break; // 5 -> blue on
case 0xFF5AA5: analogWrite(L_r, 0); analogWrite(L_g, 255); analogWrite(L_b, 255);
break; // 6 -> sky on
case 0xFF42BD: analogWrite(L_r, 255); analogWrite(L_g, 0); analogWrite(L_b, 255);
break; // 7 -> purple on
} delay(100); irrecv.resume(); // IR 다음 데이터 수신
}
} else if (count == 1) { // 인터럽트 입력 후 카운트가 0일때 자동모드 전환
delay(1000);
int tem = dht.readTemperature(); //온도 값 정수형 변수 tem에 저장
int hum = dht.readHumidity(); //습도 값 정수형 변수 hum에 저장
int rate = 1.8 * tem – 0.55 * (1 – hum / 100) * (1.8 * tem – 26) + 32;
// 불쾌지수 계산 변수 rate에 저장
Serial.print(“Temperature :”); Serial.print(tem); Serial.print(“C “);
Serial.print(“Humidity : “); Serial.print(hum); Serial.print(“% “);
Serial.println(rate); Serial.print(“count”); Serial.println(count); // 센싱값 시리얼 통신
lcd.clear();
lcd.setCursor(2, 0); lcd.print(“T:”); lcd.print(tem); lcd.print(“c’”);
lcd.setCursor(9, 0); lcd.print(“H:”); lcd.print(hum); lcd.print(“%”); // lcd 온습도 프린트
lcd.setCursor(3, 1); for (int i = 5; i < 9; i++) { lcd.write(byte(i));}//’불쾌지수’ 프린트
if ( rate < 68 ) {
digitalWrite(10, HIGH); digitalWrite(11, LOW);
digitalWrite(12, LOW); digitalWrite(13, LOW); // 불쾌지수 표시등
lcd.setCursor(7, 1); lcd.print(“: “); lcd.print(rate);
lcd.print(“ “); lcd.write(byte(1)); // 이모티콘 설정
analogWrite(L_r, 255); analogWrite(L_g, 255); analogWrite(L_b, 255); // 이모션 램프 제어
} else if (rate >= 68 && rate < 75) {
digitalWrite(10, LOW); digitalWrite(11, HIGH);
digitalWrite(12, LOW); digitalWrite(13, LOW); // 불쾌지수 표시등
lcd.setCursor(7, 1); lcd.print(“: “); lcd.print(rate);
lcd.print(“ “); lcd.write(byte(2)); // 이모티콘 설정
analogWrite(L_r, 127); analogWrite(L_g, 127); analogWrite(L_b, 255);// 이모션 램프 제어
} else if (rate >= 75 && rate < 80) {
digitalWrite(10, LOW); digitalWrite(11, LOW);
digitalWrite(12, HIGH); digitalWrite(13, LOW); //불쾌지수 표시등
lcd.setCursor(7, 1); lcd.print(“: “); lcd.print(rate);
lcd.print(“ “); lcd.write(byte(3)); //이모티콘 설정
analogWrite(L_r, 63); analogWrite(L_g, 63); analogWrite(L_b, 255);// 이모션 램프 제어
} else {
digitalWrite(10, LOW); digitalWrite(11, LOW);
digitalWrite(12, LOW); digitalWrite(13, HIGH); //불쾌지수 표시등
lcd.setCursor(7, 1); lcd.print(“: “); lcd.print(rate);
lcd.print(“ “); lcd.write(byte(4)); // 이모티콘 설정
analogWrite(L_r, 0); analogWrite(L_g, 0); analogWrite(L_b, 255);// 이모션 램프 제어
}
}
}
void BUTTON () { // 인터럽트 함수 버튼을 누르는 동작시
if (digitalRead(button) == LOW) {
if (count == 1) {
if (flag == 0) { flag = 1; count = count – 1;
Serial.print(“count”); Serial.println(count); } else {}
} else if (count == 0) {
if (flag == 0) { flag = 1; count = count + 1;
Serial.print(“count”); Serial.println(count); } else {}
}
} else {
flag = 0;
}
}
LCD 2진수 변환 사이트 : https://mikeyancey.com/hamcalc/lcd_characters.php
[58호]자연환경을 쉽게 이해할 수 있는 마이크로비트 환경 과학 보드 (V1.0) 출시
DFROBOT
자연환경을 쉽게 이해할 수 있는 마이크로비트 환경 과학 보드 (V1.0) 출시
디에프로봇에서 새롭게 출시한 환경 과학 보드 (V1.0)는 상징적인 나무, 집 및 눈 덮인 산 모양으로 설계되었으며, 넓고 사용하기 쉬 운 PCB에서 자연 과학의 많은 센서 모듈을 통합하여 이용할 수 있다. 버저, OLED 디스플 레이 등이 함께 제공되며, UV 센서, 온도 센 서, 습도 센서, 기압 센서, 사운드 센서, 컬러 센서, 광센서, 수온 센서, TDS 수질 센서, 토 양센서등 10개의 센서가 포함되어 있어 자연 환경을 광범위하게 관찰할 수 있다. 특히, 학습 과정에서 학생들은 다양한 자연 데이터의 측정 원리를 배울 수 있으며 관련 데이터를 측정하기 위해 자체 그래픽 프로그 램을 프로그래밍함으로써 프로그래밍에 대한 이해와 자연 과학 인식을 심화시킬 수 있다. 또한 디에프로봇 사이트에서는 제품을 가지 고 직접 실행해볼 수 있는 튜토리얼을 제공하 기 때문에 다양한 연령대의 학습자 또는 교육 자 모두 손쉽게 데이터를 측정해볼 수 있다. 이 제품의 전원 공급 장치는 3.5V ~ 5V 로 1.5V AAA 배터리 3개가 필요하며, 디지 털 출력 전압 0V / 3.3V 아날로그 입력 전압 0 ~ 3.3V DC 공통 인터페이스 IIC, UART, P1, P2, P8, P12가 사용된다. 환경 과학 보드 (V1.0)에는 마이크로비트가 포함되어있지 않 기에, 디바이스마트를 통하면 두 제품 모두 편 리하게 구매도 가능하다.
제품 사양
· Power supply: 3.5V~5V (AAA 1.5V Battery x3)
· GPIO: P1, P2, P8, P12, UART, I2C
· WS2812-RGB-LED
· Dimension: 196mm×110.6mm
· Programming platform: Makecode and Mind+