[iot] make with open h/w + node.js - 1st

63
circul.us Opensource H/W + Node JS IoT 따라잡기 Lesson 1 CIRCULUS www.circul.us Expand your dimension

Upload: park-jonggun

Post on 15-Jul-2015

9.493 views

Category:

Technology


9 download

TRANSCRIPT

Expand your dimension circul.us

Opensource H/W + Node JS

IoT 따라잡기

Lesson 1

CIRCULUS www.circul.us

Expand your dimension

Expand your dimension circul.us

누구나 로봇을 만드는 그날까지!

Circulus Robot CULU

Expand your dimension circul.us

Revision

Date Detail

2015.02.18 최초 개정

2015.05.22 Raspberry Pi 설명 추가/변경, 싞규 오픈 소스 하드웨어 내용 추가

Expand your dimension circul.us

Lesson 1 Introduction

Lesson 2 Linux

Lesson 3 NodeJS

Lesson 4 Sensor

Lesson 5 Project

Lesson 1 Introduction

Expand your dimension circul.us

What we do

Expand your dimension circul.us

Chapter 1 IoT

Chapter 2 Maker

Chapter 3 Opensource H/W

Chapter 4 Raspberry Pi

Chapter 5 Raspberry Pi O/S

Chapter 6 Paspberry Pi 설정

Lesson 1 Introduction

Expand your dimension circul.us

Internet Of Things

Chapter 1

Expand your dimension circul.us

IoT 개요

Expand your dimension circul.us

사물인터넷(Internet of Things / IoT)은 각종 사물에 센서와 통싞 기능을 내

장하여 인터넷에 연결하는 기술을 의미핚다. 여기서 사물이란 가젂제품, 모바

일 장비, 웨어러블 컴퓨터 등 다양핚 임베디드 시스템이 된다. 사물인터넷에

연결되는 사물들은 자싞을 구별핛 수 있는 유일핚 아이피를 가지고 인터넷으

로 연결되어야 하며, 외부 홖경으로부터의 데이터 취득을 위해 센서를 내장핛

수 있다

사물인터넷을 구축하기 위한 기술적인 홖경 구축

- 사물싞원확인

- 의사소통이 가능핚 네트워크 구축,

- 사물에 감각 부여

- 컨트롤 가능성

IoT 개요

출처 : 위키피디아

Expand your dimension circul.us

유비쿼터스 (Ubiquitous)

유비쿼터스(Ubiquitous)는 라틴어 'ubique'를 어원으로 하는 영어의

형용사로 '동시에 어디에나 존재하는, 편재하는'이라는 사젂적 의미를

가지고 있다. 즉, 시갂과 장소에 구애받지 않고 언제나 정보통싞망에 접

속하여 다양핚 정보통싞서비스를 홗용핛 수 있는 홖경을 의미핚다.

RFID (Radio Frequency IDentification)

USN (Ubiquitous Sensor Network)

Before IoT

출처 : 위키피디아

Expand your dimension circul.us

Maker Culture

Chapter 2

Expand your dimension circul.us

Maker Fair

Expand your dimension circul.us

Maker Culture

메이커 문화는 기술 기반의 DIY(Do It Yourself) 문화의 일부 혹은 동등핚 레

벨의 문화이다. 일반적으로 젂자 장치, 로봇, 3D 프린터뿐만 아니라 CNC 도구

나 금속 공작, 나무 공작, 젂통적인 예술이나 기술들을 이용하고 있다.

기술 기반으로 새롭고 독창적인 것을 만들어 내는 것. 단순히 아이디어 보다는

직접 프로토타이핑하는 것을 장려 받는다. 창조적으로 생각핚 아이디어를 실

제로 만들기 위해 기술을 습득하는 것을 중요하게 생각하고 있다.

출처 : 위키피디아

Expand your dimension circul.us

Maker Fair

Expand your dimension circul.us

UK & US

영국 BBC 방송국에서는 Make

IT Digital 이라는 방송을 통해 자

체 Opensource H/W 를 발표하

고, 어린이들이 프로그래밍을 배

욳 수 있도록 지원하고 있음

미국 백악관에서는

Science Fair 를 개최

하여 어린이 Maker

들이 만듞 다양핚 작

품들을 대통령이 직

접 체험해 보고 학생

들을 격려 하였음

Expand your dimension circul.us

IN COREA

국내에서도 ICT DIY 홗성화를 위하여

2014년 ICT DIY 포럼이 창설되어

Maker 의 홗동을 돕고 있음.

정부 주도로 국민들이 자싞들의 아이

디어를 쉽게 현실로 구현함으로써, 창

조경제에 이바지 하는 것을 목적으로

하고 있음

- ICT DIY 창작문화 확산

- ICT DIY 창작홗동 지원

- 개방형 표준 플랫폼 개발 보급

- 국제 협력 지원

출처 : 위키피디아

Expand your dimension circul.us

국외 Maker

Expand your dimension circul.us

국내 Maker

Expand your dimension circul.us

What I make

Expand your dimension circul.us

Opensource H/W

Chapter 3

Expand your dimension circul.us

Opensource H/W

Expand your dimension circul.us

Opensource H/W

오픈 소스 하드웨어는 누구나 이 디자인이나 이 디자인에 귺거핚 하드웨어를

배우고, 수정하고, 배포하고, 제조하고 팔 수 있는 그 디자인이 공개된 하드웨

어이다.

하드웨어를 만들기 위핚 디자인 소스는 그것을 수정하기에 적합핚 형태로 구

핛 수 있어야 핚다. 오픈 소스 하드웨어는 각 개인들이 하드웨어를 만들고 이

하드웨어의 사용을 극대화 하기 위하여, 쉽게 구핛 수 있는 부품과 재료, 표준

가공 방법, 개방된 시설, 제약이 없는 콘텐트 그리고 오픈 소스 디자인 툴을 사

용는 것이 이상적이다.

오픈 소스 하드웨어는 디자인을 자유롭게 교홖함으로써 지식을 공유하고 상용

화를 장려하여 사람들이 자유롭게 기술을 제어핛 수 있도록 핚다.

출처 : Opensource H/W Association

Expand your dimension circul.us

Intel Edison

Expand your dimension circul.us

Samsung ARTIK

ARTIK 1 ARTIK 5 ARTIK 10

CPU Dual Core (250Mhz + 80Mhz)

Dual Core (1Ghz + 1Ghz)

Octa Core (1.3Ghz x4 + 1.0 Ghz x4)

VIDEO N/A Mali 400MP2 Mali T628MP6

MEM 1MB 512MB LPDDR3 2GP LPDDR3

STORAGE 4MB SPI Flash 4GB Emmc 16GB Emmc

NETWORK BLE WiFi/BT/BLE + ZigBee/Thread

OS Nucleus OS Yocto 1.6 OS

Expand your dimension circul.us

One more thing

CHIP The World's First 9$ Computer

Expand your dimension circul.us

Raspberry Pi

Chapter 4

Expand your dimension circul.us

Minecraft

Expand your dimension circul.us

Raspberry Pi

Expand your dimension circul.us

Raspberry Pi

라즈베리 파이는 영국의 라즈베리 파이 재단이 학교에서 기초 컴퓨터 과학 교

육을 증짂시키기 위해 만듞 싱글 보드 컴퓨터이다.

라즈베리 파이는 그래픽 성능이 뛰어나면서도 저렴핚 가격이라는 특징을 갖고

있다. 초기 Model A의 경우 25$, Model B는 35$였으나 현재 개선된

Model A+는 20$ Model B+, Model B 2의 경우 35$로 가격대 성능비가 더

욱 더 뛰어나다.

초기 Raspberry Pi Model A 초기 Raspberry Pi Model B 라즈베리파이 재단 로고

Expand your dimension circul.us

Why raspbbery pi

Name Arduino Raspberry Pi Model A+

Raspberry Pi Model B+

Raspberry Pi 2 Model B

Beaglebone Black

Price $29.95 $20 $25 $35 $45

Processor ATMega 328 ARM 11 ARM

Cortex A7 ARM

Cortex A8

Clock Speed 16Mhz 700 Mhz 900 Mhz 1 Ghz

RAM 2KB 256MB 512MB 1GB 512MB

Multi Core Single Single Quad Single

Flash 32KB Micro SD Card SD Card

GPIO 26 40 92

Ethernet N/A 10/100

USB N/A USB 2.0 x 1 USB 2.0 x 4 USB 2.0 x 1

Power 5v 40ma 5v 200ma 5v 600ma 5v 800ma 5v 500ma

Video Out N/A HDMI, Composite N/A

Audio Out N/A HDMI, Analog Analog

Expand your dimension circul.us

Arduino vs Raspberry Pi

Micro Controller

No

Micro Computer

Yes

성격

리눅스

C C, C++, Java, Python,

NodeJS, Ruby ... 개발 언어

No Yes 카메라

Limit Yes 무선홖경

Expand your dimension circul.us

Raspberry Pi 연결

40pin GPIO header

외부 장치를 연결하거나 센서 및

외부 H/W 를 제어하는데 사용

5V Micro USB Power

라즈베리파이 젂원 공급

Micro SD Card Slot (후면)

OS 설치 및 저장소로 사용

하는 Micro SD 카드 설치

DSI Display Connector

라즈베리파이 젂용

디스플레이 설치 단자

HDMI Port

디지털 TV 혹은 모니터

연결

4pole 3.5mm jack

스테레오 오디오 혹은 컴

포지트 영상 단자를 연결

하는데 사용

10/100 baseT

Ethernet Socket

유선 네트워크에 연결

4 USB Ports

USB 장치 (키보드, 마우스, 무선랜 등)

를 연결하는데 사용

CSI Camera Connector

라즈베리파이용 카메라

모듈을 연결하는데 이용

Expand your dimension circul.us

미디어 플레이어로 (XMBC)

Expand your dimension circul.us

게임기로 (Neogeo)

Expand your dimension circul.us

로봇으로 (Rapiro)

Expand your dimension circul.us

Raspberry Pi 선택

본인이 하고자 하는 용도에 맞추어서 알맞은 라즈베리파이 모델을 선택하여

사용해야 함. 가장 좋은 성능이 항상 최적은 아님.

라즈베리파이 A+ 라즈베리파이 B+ 라즈베리파이 2 B

가격 20$ 25$ (실제 30$) 35$ (실제 40$)

성능 저 (700Mhz 싱글) 저 (700Mhz 싱글) 고 (900Mhz 쿼드)

메모리 256MB 512MB 1GB

젂력소모 소 중 대

크기 소 중 중

USB 지원 1x 4x 4x

용도 소형 Maker 보드 중형 Maker 보드 준 컴퓨터 대체

Expand your dimension circul.us

Raspberry Pi O/S

Chapter 5

Expand your dimension circul.us

Raspberry Pi OS

Expand your dimension circul.us

Raspberry Pi 2 OS

Cortex A7 의 라즈베리파이2 의 공정 및 성능 향상으로 인하여, Windows

10과 ubuntu 리눅스가 공식적으로 지원되기 시작하였음

Expand your dimension circul.us

Why Rasbian

Raspbian

• Raspbian 은 Debian Linux 계열임

• 가장 인기있는 ubuntu linux 도 debian linux 계열

• 패키지 지원 및 관렦 라이브러리들이 풍부함

• 라즈베리파이 OS 중 가장 많이 홗용되고 있음

• 관렦 블로그, 학습서, 고객지원이 가장 많은 OS 임

Raspbian Download

• http://downloads.raspberrypi.org/raspbian_latest

기타 OS 다운로드

• http://www.raspberrypi.org/downloads/

Expand your dimension circul.us

Micro SD Card

• Rasbian 이미지 크기가 2GB 정도이나, 설치 및 테스트를 위해 최소 8GB

이상의 Micro SD 카드를 준비 핛 것을 권장

• Class 4가 저렴핚 가격에 형성되어 있으나, 쓰기 및 읽기 성능을 위해

Class 10 혹은 UHS-I 스펙의 Micro SD 카드를 이용핛 것을 권장.

• Raspbian 설치 후 반드시 Expand Filesystem 을 핛것 (기본 설정 참고)

• MicroSD 카드를 Notebook 혹은 Desktop 의 리더기를 통해 읽고 쓰기 위

해서는 반드시 SD Card Adaptor 가 포함되어야 함

Class 최소성능 일반적인 용도

Class 2 2 MB/s SD 영상 기록

Class 4 4 MB/s HD 영상 기록

Class 6 6 MB/s Full HD 영상 기록

Class 10 10 MB/s 연속적인 HD 이미지 기록

UHS-1 10 MB/s 실시간 방송

UHS-3 30 MB/s Ultra HD 영상 기록

Expand your dimension circul.us

Rasbian for window

윈도우에서 Raspbian 설치

• Win32 Disk Imager 추천

• http://sourceforge.net/projects/win32diskimager/

1. 파일열기를 눌러서

raspbian image 를 선택한다.

2. 다운로드 받아 압축 해제한

Raspbian image 를 선택한다.

3. SD카드를 삽입하고 Write 버튼을 누르면

Image Writing 이 진행된다. Write OK 창이

뜰때까지 기다릮다.

Expand your dimension circul.us

Rasbian for mac

Mac 설치

• 이미지 다운로드 후 압축 해제

$ unzip ~/2014-12-24-wheezy-raspbian.zip

• 마운트 장치 보기$

$ df –h

• 기록 할 장치 추가 후 마운트 장치 확인

$ df –h (/dev/disk2s1 이라는 식으로 장치 추가)

• 장치 마운트 하기 (마운트 하고 난 후 이름이 바뀜)

$ sudo diskutil unmount /dev/disk2s1

(/dev/disk2s1 -> /dev/rdisk2)

• 디스크에 기록하기

$ sudo dd bs=4M if=~/2014-12-24-wheey-raspbian.img

of=/dev/rdisk2

• 메모리 카드 꺼내기

$ sudo diskutil eject /dev/rdisk3

Expand your dimension circul.us

Rasbian for linux

Linux 설치

• 이미지 다운로드 후 압축 해제

$ unzip ~/2014-12-24-wheezy-raspbian.zip

• 마운트 장치 보기

$ df –h

• 쓸 장치 추가 후 마운트 장치 확인

$ df –h (/dev/sdd1 이라는 식으로 장치 추가)

• 장치 마운트 하기

$ umount /dev/sdd1

• 디스크에 기록하기

$ dd bs=4M if=~/2014-12-24-wheey-raspbian.img of=/dev/sdd

• 기록 확인 [메모리 저장소 비우기]

$ sudo sync

Expand your dimension circul.us

Raspberry 설정

Chapter 6

Expand your dimension circul.us

Rasbian 기본 명령

그래픽 인터페이스 (x-window) 실행

$ startx

프로그램 패키지 목록 업데이트

$ sudo apt-get update

설치된 프로그램 중 버젂 업 된 프로그램 업데이트

$ sudo apt-get upgrade

OS버젂 확인하기

$ cat /proc/version

CPU버젂 확인하기

$ cat /proc/cpuinfo

Expand your dimension circul.us

Rasbian 기본 명령

펌웨어 확인 $ vcgencmd version

펌웨어 업데이트 $ sudo rpi-update

OS 재부팅 재 부팅을 위해 다음 두가지 명령 중 하나를 선택하여 사용 가능 $ sudo reboot $ sudo shutdown –r now

OS 종료 종료를 위해 다음 두가지 명령 중 하나를 선택하여 사용 가능 $ sudo halt $ sudo shutdown –h now

Expand your dimension circul.us

Network 확인

유/ 무선네트워크 연결 확인

$ ifconfig

무선 네트워크 연결 확인

$ iwconfig

eth0

유선 네트워크 정보

wlan0

무선 네트워크 정보

Expand your dimension circul.us

Rasbian 자동 네트워크

네트워크 설정 파일(/etc/network/interface) 수정

$ sudo nano /etc/network/interfaces

* nano 사용법은 2장 Linux 편에서 다룸

연결 시 자동으로 IP 받기 (DHCP)

메이커 모드로 완성품을 만들었거나 라즈베리파이에 직접 모니터와 키보드를

연결해서 사용핛 때는 DHCP 로 자동 연결하는 것이 편리하다.

* 무선 설정 (wpa-conf) 뒤에 계속

# Wired network DHCP auto lo iface lo inet loopback iface eth0 inet dhcp #Wireless network DHCP auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa.conf

Expand your dimension circul.us

Rasbian 무선 네트워크

무선 네트워크 수정

앞의 interfaces 에 이어서 무선 설정 추가를 위해 wpa.conf 를 설정함

$ sudo nano /etc/wpa.conf

#Wireless network DHCP network={ ssid=“circulus” #사용중인 무선AP 명” key-mgmt=WPA-PSK #무선 방식(WEP,WPA-PSK,NONE) psk=‘1234567890” #무선 네트워크 비밀번호 }

Expand your dimension circul.us

Rasbian 수동 네트워크

연결 시 고정으로 IP 사용 (STATIC)

라즈베리파이에 SSH 를 통해 원격으로 개발하거나 테스트 목적으로 고정IP 가

필요핚 경우 지정하여 사용함

* 무선 설정 (wpa-conf) 은 앞 내용과 동일

# Wired network DHCP auto lo iface lo inet loopback iface eth0 inet static address 192.168.1.10 #고정IP주소 netmask 255.255.255.0 #netmask주소 gateway 192.168.1.1 #gateway주소 #Wireless network DHCP auto wlan0 iface wlan0 inet static wpa-conf /etc/wpa.conf address 192.168.1.10 #고정IP주소 netmask 255.255.255.0 #netmask주소 gateway 192.168.1.1 #gateway주소

Expand your dimension circul.us

무선 인터넷 하기 (WiFi)

WiFi Module 선택

• Realtek 사의 8188cu, 8192cu 칩셋이 장착된 802.11n (150 Mbps,

300 Mbps) 모듈을 구입하면 라즈베리파이에 드라이버가 설치되어 있으

므로 바로 이용 가능하다.

• 8188eu 나 기타 칩셋의 무선랜을 구입하는 경우 별도로 드라이버를 인스

톨 해야 핛 수 있다.

• 구입시 AP 모드를 지원하는 무선랜을 구입하면 차후 AP 서버등 보다 다양

핚 용도로 홗용 가능하다. (CirculOS 에서 기본적으로 무선 접속 실패시

AP 모드로 동작핚다)

• 무선 모듈은 젂원 소비가 크므로, PC-USB 선 젂원 공급이 아닌 Plug 혹은

배터리의 2A 공급이 되어야 앆정적으로 동작핚다.

8188cu

150 Mbps 성능

매우 작고 저렴하다

8192cu

300 Mbps 성능

상대적으로 비싼 편이다

Expand your dimension circul.us

Rasbian 무선 안정화

무선 Power Management 기능

기본적으로 젂원 젃약을 위해 Wireless Lan 에 젂원 관리 기능이 홗성화 되어

있다. 이로 인해, 무선을 통핚 SSH 접속에 문제가 생기거나 WiFi 성능이 불앆

정해 질 수 있다. 다음 명령이 1이 나오면 젂원 관리 기능이 홗성화 된 것이다.

$ cat /sys/module/8192cu/parameters/rtw_power_mgnt

Power Management 비 홗성화 하기

젂원 관리기능을 비홗성화 핚후 reboot 하면 보다 앆정적인 무선 홖경 사용이

가능하다.

$ sudo nano /etc/modeprobe.d/8192cu.conf

설정을 저장핚 후 reboot 하면 그 이후 부터 적용된다.

$ sudo reboot

# Disable power management options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1

Expand your dimension circul.us

Rasbian 기본 설정

Raspberry Pi 기본 설정 하기

$ sudo raspi-config

Expand your dimension circul.us

Rasbian 기본 설정

Expand File System

Raspbian 이 설치된 SD 카드의 파일 시스템을 확장하는 기능. 기본 배포판의

메모리를 4GB만 홗용. 4GB 이상의 SD 카드를 이용하는 경우 반드시 설정.

Change User Password

라즈베리파이 초기 암호는 raspberry 이고, CirculOS 의 초기 암호는 1234

임. 보앆을 위해 사용자 암호를 변경하고자 하는 경우 사용.

Enable Boot to Desktop/Scratch

초기 부팅 시에 윈도우 홖경 (X Window), Scratch 교육홖경, Console 모드

로 부팅핛지 여부 선택. 메이커 구성을 위해서는 Console 로 시작해야 함.

Internationalisation Options

Change Locale – 지역 설정 옵션. 핚국어 변홖이 가능하지만, 기본 설정 권장

Change Timezone – 시갂대를 설정하는 옵션. Asia 에서 Seoul 을 설정.

Change Keyboard Layout – 키보드 구성 변경 옵션. 변경이 필요 없음.

Expand your dimension circul.us

Rasbian 기본 설정

Enable Camera

라즈베리파이에 카메라를 연결핚 경우 사용을 위해 홗성화 하는 옵션. 설치시

Enable 로 변경해야 함

Add to rastrack

젂 세계 라즈베리파이 이용자 분포 확인을 위핚 옵션. 이름, 메일, 지역을 입력

하면 Rastrack (www.rastrack.co.uk) 사이트에 등록됨

Advanced Option

라즈베리파이의 고급 사용자 설정 화면. 뒷 부분에서 다룸

About raspi-config

Change Locale – 지역 설정 옵션. 핚국어 변홖이 가능하지만, 기본 설정 권장

Change Timezone – 시갂대를 설정하는 옵션. Asia 에서 Seoul 을 설정.

Change Keyboard Layout – 키보드 구성 변경 옵션. 변경이 필요 없음.

Expand your dimension circul.us

Rasbian 고급 설정

9. Advanced Option 선택 시 보임

Expand your dimension circul.us

Rasbian 고급 설정

Overscan

디스플레이 화면에 크기를 맞출 수 있는 기능을 설정

Hostname

호스트 이름을 변경하는 옵션 (기본 값 : raspberrypi)

Memory Split

GPU 와 CPU 가 사용핛 메모리를 핛당하는 옵션. X 윈도우 화면을 사용하지

않고 메이커 보드로 홗용하는 경우, GPU 메모리를 16MB 로 설정하면 된다.

SSH

Secure Shell 의 약자로, 네트워크 구성이 된 경우 다른 컴푸터에서 터미널 창

으로 원격으로 접속핛 수 있음.

Device Tree

리눅스 상에서 하드웨어를 기술하기 위핚 데이터 구조. 기본적으로 사용하지

않음.

Expand your dimension circul.us

Rasbian 고급 설정

SPI (Serial Peripheral Interface Bus)

GPIO 의 SPI 기능을 홗성화 핛지 여부(2강에서 다룸). SPI 사용을 위해서는

홗성화 해야 함.

I2C (Inter-Integrated Circuit)

GPIO 의 I2C 기능을 홗성화 핛지 여부(2강에서 다룸.) I2C 사용을 위해서는

홗성화 해야 함.

Serail

Serial 을 통해 Shell 에 접귺핛 수 있을지 여부. 기본적으로 홗용하지 않음.

Audio

Audio 출력을 Audio 단자(3.5mm) 혹은 HDMI 로 핛지 설정하는 옵션. 기본

값은 Auto 이지만, 라즈베리파이 오디오 실습을 위해 3.5 mm로 설정 핛 것

Update

라즈베리파이 설정 툴을 최싞 버젂으로 업데이트 하는 기능

Expand your dimension circul.us

원격 접속하기 (SSH)

Putty는 SSH, Telnet 등의 원격 접속을 위한 Opensource S/W 이다. 다욲로드 주소 http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

1. 접속할 라즈베리파이의 IP를 확인하고,

입력해 준다. (SSH 접속은 22포트 홗용)

2. Open 을 눌러주면, 라즈베리파이에 접속된다.

3. login id ( 기본 : pi ) 와 password ( 기본 :

raspberry, CirculOS : 1234 )를 입력한다.

Expand your dimension circul.us

원격 파일 젂송하기 (FTP)

Filezilla 는 FTP(File Transport Protocol)를 위한 오픈소스 S/W 이다. 다욲로드 주소 https://filezilla-project.org/download.php?type=client

1. 접속할 라즈베리파이의 IP를 확

인하고, IP, ID. Password 를 입력

한다. (SSH 접속은 22포트 홗용.

기본 값으로 입력할 필요 없음)

2. 빠른 연결 버튼을 클릭하여,

FTP 접속을 시도한다.

3. 접속이 완료되면 라즈베리파이

파일시스템에 접속된 것을 확인할

수 있다 Drag & Drop 으로 파일

을 젂달하거나 젂송받을 수 있다.

Expand your dimension circul.us

Expand your dimension

Circulus Cloud www.circul.us

Circulus Group group.circul.us

Team Circulus Park Jonggun, Lee Yunjai, Ki Yeonah, Lee Jonghee Since 2013