아두이노와 Node.js를 이용한 IoT 프로젝트

Slides:



Advertisements
Similar presentations
사랑과 기쁨으로 연합하는 제 2 회 전교인 한마음 운동회 제 2 회 전교인 한마음 운동회 설명회 대한예수교장로회 자 양 교 회 1.
Advertisements

AVR 응용 라인트레이서 AVR 소개 및 라인트레이서조립 2012 – AVR 응용 라인트레이서 부산대학교 기계공학부 생산자동화 실험실 박사과정 조광호.
음란물에 대하여. 인터넷 음란물의 의미 돈벌이를 위해 단지 성적 욕망을 불러 일으키기 위한 음란한 인터넷 상의 사 진, 동영상, 만화 등을 말한다.
아이핑 소개 (탁구대회) 아이핑 담당 신동일 네이버(다음)에서 아이핑검색 아이핑 소개 (탁구대회) 담당 신동일 아이핑.
학부모 연수 SW교육 연구시범학교 운정초등학교.
2.1 컴퓨터 시스템의 구성 2.2 컴퓨터 시스템의 정보 표현 2.3 중앙처리장치 2.4 저장장치 2.5 컴퓨터 주변기기
D I D (Digital Information Display)
1.IOT ? 2.IOT 관련이미지 3. 현재진행중(ex:) 4.iot에대한 개인소견?
마이크로프로세서설계 - 3 ATmega128 마이크로컨트롤러의 특징 LED 실습 1
변비 재활전문센터 재활 간호사 김은화.
컴퓨터란?.
1. PC 에서 회원가입 1. 회원가입 버튼 클릭 클릭.
아두이노 활용 SW코딩 시작하기 아두이노 소개 개발툴 다운로드 USB 드라이버 설치하기 개발툴 실행하기
㈜ 디지탈프로젝트 목 차 회사소개 및 개요 사업 소개 경쟁 우위 요소 비젼 및 추진 전략 재무계획.
One Step Closer - AVR ATMEGA128 -
Q & A (사실상 혼인·이혼) Q. 사실상 혼인·이혼 관계를 어떻게 처리해야 하나요?   사실 혼인·이혼은 부부 모두 동의 여부를 확인하고, 자녀, 이·통·반장으로부터 「사실(이)혼 확인서」를 징구해야 합니다. 만약 어느 한쪽이 동의하지 않는 경우는.
아두이노 프로그래밍 1일차 – Part2 아두이노 사양 강사: 김영준 목원대학교 겸임교수.
컴퓨터 하드웨어 설치(1) PC 성능을 결정하는 핵심 부품 가이드 내게 맞는 보조 부품 & 모니터 선택하기.
26강 장비 모니터링 : 진동, 온도, 전력량 모듈 실습 ELK 디스플레이
01 복합환경센서 ROIC 기술 기술 요약 기술보유 기관 한국전자통신연구원 기술 완성단계 칩 제작 완료 응용분야
컴퓨터 기초 상식 하드 웨어.
ATmega 128 MCU를 이용한 MP3 보드 제작 김태호 김소정.
Arduino와 Led를 이용하여 Wearable Display 만들기
2 AVR ATmega128 소개 마이크로컨트롤러 AVR ATmega128.
디지털회로설계_강의안 멀티플렉서와 디멀티플렉서.
자동제어 실험(2) 라인트레이서 제어.
Introduce to ATmega128 & Codevision
1. 아두이노란 무엇인가? - 스마트 폰으로 제어하는 아두이노 -.
주방 안전지킴이 강민준 강재성 이로운 최민성.
터치 모니터관련 지식 팁 Usb장치 인식 실패 원인과 해결책.
컴퓨터 구조.
Arduino uno의 Hardware 구성부품의 종류와 그 용도.
UNIT 02 Microprocessor 로봇 SW 교육원 조용수.
컴퓨터 하드웨어 설치(2) PC 조립을 위한 준비물 알아보기 본격적으로 PC 조립하기.
제 3 장 아두이노 무조건 따라하기 - 스마트 폰으로 제어하는 아두이노 -.
아두이노 기초 제 1 주 강의 소개, 환경 설정.
사물인터넷(IoT) 융합실습을 위한 교육용 실습장비
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소 김태성 연구원
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수
초등학생이 pc방을 가도 되는가? 등마 초등학교 5학년 4반 김근아.
공인인증서 신청 및 발급 제일 먼저 은행에 직접 방문하여 인터넷뱅킹 신청.
중앙대 원격교육원 범용공인인증서 홈페이지 등록 방법 .
시각장애인을 위한 길안내 시스템 6월까지 홈네크워크라는 주제를 가지고 제작해 왔으나, 좀더 실생활에 필요한 것을 만들고자 하는욕심에 정말 필요한 기술이 무엇일까 라는생각을 하게 되었음, 지금부터 새로운 주제에대한 proposal 과 중간발표를 시작하겟습니다. DGR 2008.
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.
4. 아두이노로 LED 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
함수를 이용한 키패드 센서 제어하기 재료준비 및 브레드 보드 배선 구성하기 키패드 센서를 통한 함수 이해하기 및 활용 실습
<정보 보안> 담당 교수: 박용대
마음의 성전이 더 아름다운 조촌교회.
1.비 사업용(자가용 및 관용) 차 종 적 용 상 의 구 분 승합 자동차 (버스) 1 종
양궁게임 게임기획서 1차안 2011/01/17 최가운.
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
5차시: 로봇 주행 실습 및 미션 수행하기 준비물 SPL-Duino 보드 (조도센서 내장)
아두이노 프로그래밍 Lecture #
Tone 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 Tone 명령어 기본 및 프로그램 이해 응용 작품 만들기.
100세 시대, 스마트 헬스케어와 미래직업 (3) 고령화 사회에 필요한 웨어러블.
아두이노 서보로봇 제어 (블루투스 스마트폰 조종) -03차시-
유예 X-FILE *조사자* 1301권희원 1315이예지 1317장아정 1322홍자현.
코딩교육, 어떻게 해야 할까 이천양정여자고등학교 김가연 안선영.
4 LED 출력 LED 점멸 LED 밝기 조절 RGB LED로 색상 표현하기 FND 제어 4-digit FND 제어 Dot matrix 제어 Dot matrix를 이용한 애니메이션.
사물인터넷(IoT) 프로그래밍 기초 5. 시리얼통신.
꿈꾸는 코딩 노트북 필수 지참 (중요!!) 모집 대상 : 초등 4~6학년 10명
Lecture 7 7-Segment LED controller using u-controller
Finger Motion 인식 SoC를 이용한 Virtual 입력단말 플랫폼 기술
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
Presentation transcript:

아두이노와 Node.js를 이용한 IoT 프로젝트 한국기술교육대학교 전일규

아두이노는 어떤 보드인가? 아두이노는 이탈리어로 ‘강력한 친구'라는 뜻 하드웨어나 소프트웨어를 잘 모르는 디자이너나 예술가들이 사용할 수 있을 만큼 단순하고 어떤 용도로든 사용이 가능하도록 기능을 자유롭게 확장할 수 있는 저렴한 가격의 보드 MPU(Micro Processor Unit)로 아트멜의 칩을 사용 USB를 통해 프로그래밍이 가능하며 여러 센서와 액츄에이터들을 연동할 수 있는 싱글 마이크로컨트롤러 보드

아두이노는 어떤 보드인가? 아두이노를 다루기 위해 특별한 장비가 필요하지 않다 프로세싱이라는 IDE를 사용해 C/C++를 프로그램 할 수 있다 기존의 AVR 소스도 그대로 가져와 사용 가능 아두이노의 핀과 연결한 뒤 프로그램을 작성하면 그대로 동작

아두이노 스펙

아두이노의 특징(장점) 저렴한 가격 오픈소스 하드웨어 간단한 개발 환경 아두이노를 쉽게 접할 수 있는 여지를 제공 = 대중화 보드의 회로도를 Creative Common 라이선스로 공개 아두이노가 보편화돼 관련 자료들도 쉽게 구할 수 있게 되었다 간단한 개발 환경 아두이노는 AVR을 기반으로 한 보드이다 프로세싱 기반의 IDE를 적용해 프로세싱만큼이나 간단하게 개발을 진행

아두이노의 특징(단점) 성능과 기능의 한계 테스트의 어려움 이러한 단점들을 Node.js를 통해 보완하려는 것이 이 글의 목적 아두이노는 MPU을 사용하고 있는데, 아두이노 우노는 고작 16MHz의 속도로 동작 스토리지가 작아 조금만 복잡한 코드를 작성해도 업로드조차 되지 않는 경우가 발생 테스트의 어려움 IDE를 이용해 쉽게 작성이 됐다고 해도 컴파일이나 업로드, 테스트 과정이 쉽지는 않다 애플리케이션을 작성할 때 요구되는 테스트 코드 역시 존재하지 않는다 테스트 코드를 작성하고 실행하는 것이 어렵다 이러한 단점들을 Node.js를 통해 보완하려는 것이 이 글의 목적

아두이노의 인터페이스와 API

아두이노의 인터페이스와 API 디지털 I/O 아두이노의 핀 레이아웃 중 가장 많은 핀이 배정 디지털 신호들, 소위 0, 1로 대변되는 신호를 감지하거나 반대로 신호를 외부로 보낼 때 사용 표적으로 버튼, LED, LCD 등과 같이 디지털 신호를 주고 받을 때 사용 디지털 핀은 입력과 출력이 같은 핀에서 이뤄지기 때문에 사용 전에 pinMode로 입출력 여부를 지정해야 한다. pinMode() : 디지털 핀의 입력 혹은 출력을 설정함. digitaIRead() : 외부의 신호를 읽음. 5V이면 HIGH(1), 0V이면 LOW(0)을 반환함. digitalWrite() : 외부에 신호를 보냄.

아두이노의 인터페이스와 API 아날로드 I/O 외부의 아날로그 값들을 읽기 위한 핀 이 핀은 외부의 아날로그 신호를 감지해 0~1023 사이의 값으로 변환 아두이노 우노는 아날로그 출력을 하지 못한다 디지털 보드로 아날로그를 표현하기 위해 PWM을 사용한다. analogRead() : 외부의 아날로그 신호(전압)를 받아 디지털 값으로 읽음 analogWrite() : PWM을 이용해 아날로그 신호를 외부로 보냄. 입력 값으로 0~255 사이의 값을 파라미터로 받음

아두이노의 인터페이스와 API SPI(Serail Peripheral Interface) 이를 위해서 4개의 선이 필요하며, ICSP(In Circuit Serial Programming)로 지원된 핀을 사용하거나 디지털 핀 가운데 10, 11, 12, 13 핀을 사용 SPI library : SPI 통신을 위한 라이브러리

아두이노의 인터페이스와 API I2C(Inter-Integrated Circuit) SPI와 마찬가지로 2개 이상의 아두이노 보드를 연결할 때 사용되며, 칩 간의 데이터를 전송하기 위해 사용 2개의 선만으로 간단히 구성할 수 있어 많이 사용 SPI 방식에 비해 속도가 느려 빠른 데이터 교환이 필요치 않은 경우에 사용 I2C 역시 SPI와 마찬가지로 별로의 라이브러리가 제공 Wire library : I2C를 위한 통신용 라이브러리

아두이노의 인터페이스와 API 시리얼 통신 USB와 같은 직렬 통신 방법 중 하나로 아두이노 보드와 PC 간의 데이터 통신에 사용 개발보드에서 디버깅용으로 많이 사용되는 기본 인터페이스 이 방식은 표준 자체가 오래돼 보편적이면서 TX, RX와 같이 2개의 선만 있으면 되기 때문에 구성도 간단 아두이노는 디지털 핀 0과 1을 시리얼 포트에 사용하고 있다. 따라서 시리얼 통신을 하게 된다면 디지털 핀 0과 1은 사용할 수 없다. Serial library : 시리얼 통신용 라이브러리

시리얼 통신을 이용해 아두이노와 Node.js 연결하기 따라서 2개의 별도 시스템을 구성해야 한다. 하나는 Node.js가 실행될 마스터이고 하나는 마스터의 명령을 수행할 슬레이브다. 이 두 시스템은 시리얼 케이블로 연결돼 시리얼 통신을 하게 된다. PC가 마스터 노드가 되도록 아두이노를 USB로 연결했다. 운영체제 Node.js 아두이노 시리얼 통신

아두이노 라이브러리-firmata Node.js와 아두이노 간의 명령이나 데이터를 교환하는 프로토콜을 구현 MIDI 프로토콜을 기초로 만들어진 프로토콜 이 방식을 지원하는 언어에서 다양한 라이브러리로 제공 프로토콜을 표준화하고 있어 Node.js 외에 다양한 언어로 구현된 라이브러리들이 존재 디지털 I/O, 아날로그 I/O뿐 아니라 I2C와 SPI통신 API도 지원

아두이노 라이브러리-duino Node.js와 아두이노 간의 명령이나 데이터를 교환하는 프로토콜을 구현 프로토콜 구조가 간단하고 쉬움 프로토콜의 지원 범위가 한정돼 있어 기능을 확장하기 위해 코드를 수정 자체 프로토콜을 사용하고 있어 Node.js 외에 언어를 사용하려면 라이브러리를 작성 디지털 I/O와 아날로그 I/O, 서보모터 등 기본적인 API만 지원

아두이노에 duino 코드 업로드 하기 duino를 사용하기 위해서 아두이노에 duino 프로토콜을 해석할 수 있는 프로그램을 설치 아두이노 프로그램을 아두이노 IDE에 업로드 du.ino가 아두이노 보드에 올라가면 아두이노 IDE가 필요 없게 된다.

예제1 - 버튼을 눌러 LED에 불 켜기

예제2 - 버튼을 눌러 LED에 불 켜기

시리얼 연결 방식의 문제와 해결 방법 Node.js가 실행되는 OS는 실시간 OS가 아니기 때문에 정밀도가 요구되는 상황에서 적용하기 어렵다. 첫 번째 해결 방법은 아두이노가 실행할 명령을 한 번에 주고 실행시키는 방식이다. 명령마다 매번 통신해서 명령을 전달하고 실행하는 것이 아니라 명령을 하나의 단위로 묶어 전달한 뒤 실행시키는 방법이다. 두 번째 해결 방법은 실시간성이 필요한 코드를 미리 아두이노에 개발해 놓는 방식이다. 명령을 너무 세부적으로 하지 말고, 하나의 명령으로 만든다. 예를 들면 LED를 제어하기 위해 핀 번호를 설정하면 불이 켜지는 명령을 따로 하는 것이 아니라 이를 하나의 명령으로 만들어 문제를 해결한다.

정리 Node.js의 장점은 기능의 확장성에 있다. NPM을 통해 수만 개의 모듈이 제공되고 있다. Node.js는 기본적인 file I/O 기능, 바이너리 데이터를 위한 Buffer 클래스 등 최소한의 기능을 제공하면서 시스템의 안정성에 무게를 두었다. 이외에도 고급 기능들은 NPM으로 관리되는 모듈이 제공된다.