SlideShare una empresa de Scribd logo
1 de 74
Descargar para leer sin conexión
누구나, 메이커!!
라즈베리파이로 IoT 시작하기
THINKER TO MAKER
Maker Movement
THINKER TO MAKER
메이커 운동
Maker
무언가를 만드는 사람
Maker Movement
Maker들이 만드는 법을 공유하고 발전시키는 흐름
메이커 행사
Maker Faire Hacker-thon
메이커 작품
Open Source H/W
THINKER TO MAKER
오픈소스 하드웨어
Arduino vs. Raspberry Pi
Micro Controller
No
Micro Computer
Yes
성격
리눅스
C
C, C++, Java, Python,
Node.JS, Ruby ...
개발 언어
No Yes카메라
Limit Yes무선환경
Raspberry Pi
Name
Raspberry Pi
Model A+
Raspberry Pi
Model B+
Raspberry Pi2
Model B
Raspberry Pi
Zero
Raspberry Pi 3
Model
Price $20 $35 $5 $35
Processor ARM 11
ARM
Cortex A7
ARM 11
ARM
Coretex-A53
Clock Speed 700Mhz 900Mhz 1Ghz 1.2Ghz
RAM 256MB 512MB 1GB 512MB 1GB
Multi Core Single Quad Single Quad
Flash Micro SD Card
GPIO 40
Ethernet N/A 10/100 N/A 10/100
USB USB 2.0X1 USB 2.0X4 Micro 1 USB 2.0X4
Power 5V, 200mA 5V, 600mA 5V, 800mA 5V, 160mA N/A
Video Out HDMI, Composite Mini-HDMI
HDMI,
Composite
Audio Out HDMI, Analog Mini-HDMI HDMI, Analog
Wi-Fi 모듈
블루투스 지원
Circulus 소개
THINKER TO MAKER
온라인 코딩교육 + 메이커 플랫폼
Circulus Architecture
Core Engine
API Gateway
M2M Controller
Cloud Storage
CirculOS
Intelligence Agent
Circulus
App
Circulus
Web
Data Processing
H2H Controller
모바일부터 하드웨어까지. IoT 개발 학습/제작 클라우드 플랫폼
복잡한 IoT 지식 없이, 생각을 다양한 API를 사용하여 손쉽게 구현 가능
One JavaScript - Multi Use
JavaScript (+Node.JS) 만으로 모바일 부터 하드웨어 개발까지 구현
IoT 서비스 제작/배포 지원 솔루션
www.circul.us
1. E-mail, Password만 넣으면 가입 완료!
www.circul.us
2. Raspberry Pi 시리얼 번호 입력
OR
2497c978
홈페이지 좌측 상단 본인 아이디 클릭 후, My Profile에 시리얼 등록
부팅 시, 음성으로 시리얼 확인 가능
www.circul.us
3. 프로젝트 생성하기
Lecture_01
Basic sensor study
리모컨 (웹페이지)
본인의 라즈베리파이에
실행되는 부분
www.circul.us
4. 라즈베리파이 접속 상태 확인
프로젝트 안의 Check 버튼을 눌렀을 때, 정상적으로 연결되었다면,
해당 시리얼에 IP주소가 출력됩니다.
What to do?
THINKER TO MAKER
오늘 배울 것은?
LED, 초음파 센서, 온습도 센서, 7-세그먼트
다양한 센서를 다루어 보자
Basic
THINKER TO MAKER
그 전에 잠깐, 기초
JavaScript 기초
1. 모듈 추가하기(어떤 기능을 가지고 있는 모음)
var wpi = require('wiring-pi');
2. 변수 선언하기(변수: 값을 담아두는 상자)
var val = 10;
3. 출력문 만들기
console.log(“Hello, Raspberry Pi”);
var num = 10;
console.log(“저는 ” + num + “살 입니다.”);
var isOn = 1;
setInterval(function(){
wpi.digitalWrite(pin, isOn);
isOn = +!isOn;
}, 1000);
Javascript 기초
4. 주기적으로 반복하기
if(a >= b)
return a;
5. 조건문 사용하기
While(a == true)
console.log(“true”);
6. 반복문 사용하기
Bread board 사용하기
납땜없이 선 연결 만을 이용하여 센서와 라즈베리파이를 연결
가로로 표시된 부분이 하나로 연결되어 있음
GPIO(General Purpose Input/Output) 사용하기
- GPIO란? 신호를 보내거나 받을 수 있는 핀
- 센서나 외부 장치들과 정보를 주고 받음, BCM번호로 각 핀에게 명령을 내림
- 라즈베리파이의 GPIO는 입-출력 외에 또 다른 역할을 하는 핀들이 있음
GROUND : 0V
GPIO_XX : ~3.3V
3.3V : 3.3V
5V : 5V
BCM 번호
(각 핀의 일반 적인 이름)
추가 기능을 가진 핀
Wiring-pi 사용하기
- GPIO를 사용하는 기능을 모아 둔 모음집 중 하나
- 아두이노와의 연계를 위해 새롭게 핀 번호를 지정
- Wiring-pi의 기능을 사용하는 경우는 Wiring-pi의 이름(핀번호)을 사용해야 함
15
16
1
4
5
6
10
11
26
27
28
29
8
9
7
0
2
3
12
13
14
21
22
23
24
25
LED
THINKER TO MAKER
LED
LED
LED를 켜보자!
Ground VCC
GPIO
- +
※ GPIO는 입력 또는 출력으로 정할 수 있고, 라즈베리파이는 3.3V까지 출력으로 사용 가능
VCC 또는 GPIO출력 모드를 이용하여 LED를 켤 수 있음
LED ON
//circulus 모듈 추가
var us = require(‘circulus’);
//GPIO 초기화
us.initLED(23);
//LED 설정 (true = ON, false = OFF)
us.setLED(true);
LED를 켜보자!
GROUND
GPIO23
LED ON/OFF
//circulus 모듈 추가
var us = require(‘circulus’);
//LED 초기화
us.initLED(23);
//LED 설정 (ture = ON, false = OFF)
var isOn = 1;
setInterval(function(){
us.setLED(isOn);
isOn = +!isOn;
}, 1000);
1초에 한 번씩 LED가 ON/OFF되도록 해보자!
GROUND
GPIO23
Ultrasonic Sensor
THINKER TO MAKER
초음파 센서(HC-SR04)
초음파 센서 원리
초음파를 통해 일정한 거리 이내에 사물이 있는지 파악
사물과의 거리가 얼마나 떨어졌는지 측정
VCC : 5V GND : Ground
Trig : 초음파 전송 Echo : 초음파 수신
초음파 센서 원리
[High가 끝나는 시간 – Low가 끝나는 시간] / 58
초음파 센서 거리 측정하기
// circulus 모듈 추가
var us = require(‘circulus');
// 초음파 센서 초기화
// initDistance (TRIG, ECHO);
us.initDistance(15, 14);
// 1초에 한 번씩 거리 측정
setInterval(function(){
var dist = us.getDistance();
console.log(‘distance: ’+dist+’cm’);
}, 1000);
5V
GROUND
GPIO14
GPIO15
1초에 한 번씩 장애물과의 거리를 측정해보자!
응용 1
THINKER TO MAKER
LED와 초음파 센서
응용!
// circulus 모듈 추가
var us = require('circulus');
us.initDistance(15, 14);
us.initLED(23);
setInterval(function(){
var dist = us.getDistance();
console.log(‘distance: ’+dist+’cm’);
if(dist < 5)
us.setLED(true);
else
us.setLED(false);
}, 1000);
5cm 안에 장애물이 있으면 LED에 불을 켜자!
7-Segment
THINKER TO MAKER
세븐-세그먼트 (4 Digit LED)
7-Segment란?
VCC 5v
GROUND Ground
SCLK 동기화 신호
MOSI 라즈베리파이 출력 -> 7-세그먼트 입력
MISO 7-세그먼트 출력 -> 라즈베리파이 입력
CE Chip enable
7-Segment 연결하기
VCC GPIO25
GROUND GROUND
SCLK GPIO11(SPI_CLK)
MOSI GPIO10(SPI_MOSI)
MISO -
CE GPIO8(SPI_CE0_N)
초음파 센서 거리 측정하기
//circulus 모듈 추가
var us = require(‘circulus’);
// Segment 초기화
us.initText();
//글자 출력
us.setText('piau');
//1초에 한 번씩 다른 숫자 출력
// 정수.toString() = 정수를 문자열로 변경함 ex) 1  ‘1’
var i = 0;
setInterval(function(){
us.setText(i.toString() + i.toString() + i.toString() + i.toString());
i++;
if(i === 10)
i = 0;
}, 1000);
글자와 숫자를 출력해보자!
Temperature-humidity Sensor
THINKER TO MAKER
온습도 센서(DHT-11)
온습도 센서
GND
DATA
VCC
온도와 습도를 동시에 측정할 수 있는 센서
모델명 용도 온도 측정 범위 습도 측정 범위
DHT11 실내용 0 ~ 50도 20 ~ 80%
온습도 센서
//circulus 모듈 추가
Var us = require(‘circulus);
// GPIO 값 초기화
// 가운데 data핀의 BCM 핀 번호 사용
us.initTemp(21);
//1초에 한번씩 온도, 습도 값 출력
setInterval(function(){
console.log(us.getTemp());
},1000);
1초에 한 번씩 온도와 습도를 측정해보자!
5V
GROUND
GPIO21
Remote Control with Smart Phone
THINKER TO MAKER
스마트폰으로 제어하기
개념
Internet 라즈베리파이
리모컨
JavaScript JavaScript
Send/Receive
HTML
외부접속 가능
<html>
<head>
<title>remote control</title>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="http://www.circul.us/circulus.js"></script>
<script src="index.js"></script>
</head>
<body>
<div> LED </div>
<button id='ledon'>ON</button>
<button id='ledoff'>OFF</button></br></br>
<div>ULTRA</div>
<button id='ultra'>ULTRA</button>
<span id='distance'>0</span>cm </br></br>
<div>TEMP/HUMI</div>
<button id='temp'>TEMP</button>
<span id='tempinfo'>0</span></br>
<button id='humi'>HUMI</button>
<span id='humiinfo'>0</span></br></br>
<span> SEGMENT</span>
<span id='segment'>0</span>
</body>
</html>
HTML로 외관 만들기
리모컨 확인하기
해당 주소로 PC, 스마트폰 등 다양한 기기에서 바로 사용 가능
간편 주소
circul.us/cloud/ID/프로젝트 이름/파일명.html
리모컨 초기화
$c.ready(function(us){
us.init('b5861b8d')
…
…
//us.send(KEY, DATA);
//us.receive(KEY, DATA);
});
## 리모컨 JavaScript (index.js)
: 리모컨과 자신의 라즈베리파이가 통신하기 위해, 시리얼 번호를 등록함
자신의 라즈베리파이 시리얼 번호로 초기화
뒤의 통신 관련 부분 코드는
이곳에 작성합니다.
Socket 통신
var data = ‘hello’;
us.send (‘KEY’, data);
JavaScript JavaScript
Send/Receive
us.receive(‘KEY,’ function(data){
/* 수행하고 싶은 내용 */
console.log(data);
});
## hello
us.receive(‘KEY,’ function(data){
/* 수행하고 싶은 내용 */
});
us.send(‘KEY’, data);
리모컨
HTML
[Internet]
[라즈베리파이]
CASE 1 (LED ON/OFF)
//HTML파일에서의 각 버튼을 클릭하면 호출
$('#ledon').click(function(){
us.send('ledon');
});
$('#ledoff').click(function(){
us.send('ledoff');
});
var us = require('circulus');
us.receive('ledon', function(data){
console.log(‘ledon receive’);
us.initLED(23);
us.setLED(true);
});
us.receive('ledoff', function(data){
console.log(‘ledoff receive’);
us.initLED(23);
us.setLED(false);
});
Remote Controller (index.js) Raspberry Pi (index.js)
리모컨에서 라즈베리파이로 명령 전달
CASE 2(초음파 센서 거리 출력)
$('#ultra').click(function(){
us.send('ultra');
});
// HTML 파일에서 span id = ‘distance’에 출력함
us.receive('distance', function(data){
$('#distance').text(data);
});
us.receive('ultra', function(data){
console.log(‘ultra receive’);
us.initDistance(15, 14);
var dist = Math.floor(us.getDistance());
us.send('distance', dist);
console.log(dist + ‘ cm’);
});
Remote Controller (index.js) Raspberry Pi (index.js)
리모컨에서 라즈베리파이로 명령 전달 + 응답 수신
us.receive('temp', function(data){
console.log(‘temp receive’);
us.initTemp(21);
var tempinfo = us.getTemp();
console.log(tempinfo.temperature);
us.send('tempinfo', tempinfo.temperature);
});
us.receive('humi', function(data){
console.log(‘humi receive);
us.initTemp(21);
var humi = us.getTemp();
console.log(humi.humidity);
us.send('humiinfo', humi.humidity);
CASE 2(온/습도 출력)
$('#temp').click(function(){
us.send('temp');
});
us.receive('tempinfo', function(data){
$('#tempinfo').text(data);
});
$('#humi').click(function(){
us.send('humi');
});
us.receive('humiinfo', function(data){
$('#humiinfo').text(data);
});
Remote Controller (index.js) Raspberry Pi (index.js)
리모컨에서 라즈베리파이로 명령 전달 + 응답 수신
리모컨에서 명령 없이, 라즈베리파이의 응답만 수신
us.initText();
var i = 0;
setInterval(function(){
us.setText(i.toString() + i.toString() + i.toString() +
i.toString(), true, false, false, true);
var text = i.toString() + i.toString() + i.toString() +
i.toString();
i++;
if(i == 10)
i = 0;
console.log(text);
us.send('segment', text);
}, 1000);
세그먼트 출력
us.receive('segment', function(data){
$('#segment').text(data);
});
Remote Controller (index.js) Raspberry Pi (index.js)
Design
THINKER TO MAKER
자신만의 작품 구상하기
무엇을 만들 수 있을까요?
IDEA를 실행하는 것이 중요합니다.
Making
THINKER TO MAKER
만들어보기
메이킹 과정
아이디어
서비스 기획
프로토 타이핑
하드웨어 구성
소프트웨어 구성
3D 프린팅
결과 공유
만들고자 하는 아이디어를 떠올리는 단계이다.
아이디어를 서비스로 구체화 한다. 이 단계에서는 보여질 모습 뿐만 아니라,
보이지는 않지만 사용자에게 어떤 가치를 제공할지도 염두 해 둔다.
블록 등으로 만들어질 하드웨어 모습을 구성해 보고, 이를 사용할 모바일 어
플리케이션이 있다면 종이에 그 이미지를 구성해 본다.
오픈소스 하드웨어로 만들고자 한 내용을 구성해 본다. 프로토 타이핑및 최
종적으로 보여질 외관을 고려하여 센서 및 각종 하드웨어의 배치도 고려한다.
하드웨어를 제어할 소프트웨어와 리모콘 용도로 사용될 소프트웨어, 그리고
서비스 제공을 위한 소프트웨어를 구성한다.
Making 한 제품의 외관과 인쇄 가능 한 부속들을 3D 모델링하고, 결과물을
3D 프린팅하여 하드웨어를 최종 완성한다.
제품을 완성하여 외부에 공개한다. 만일 판매를 목적으로 한 제품이라면 소
셜 펀딩을 이용하여 판매 가능성을 확인해 본다.
외관을 만드는 방법!
3D 프린터 레이저 커터 CNC 라우터
메이커 스페이스
국내현황
성수 메이커스페이스 02-2115-0525 경기 창조경제혁신센터 031-8016-1102
서울 창조경제혁신센터 02-723-9100 Fab. Lab. 서울 070-7743-0806
메이커스빌 1544-8622 과천 과학관 무한상상실 02-509-6925
경기콘텐츠 코리아랩 021-776-4677 K-ICT 디바이스랩 경기 031-776-4736
필요한 도안을 찾는 법!
Thingiverse Instructables Makeall.com
Appendix A
THINKER TO MAKER
부 록 : 범용 소스코드
LED
// wiring-pi 함수를 사용할 수 있도록 초기화
var wpi = require('wiring-pi');
wpi.setup('gpio');
wpi.wiringPiSetup();
// wiringpi맵 핀 번호 사용
var pin = 4;
// 출력 모드로 설정 (전류) pin(4) --> LED --> GND
wpi.pinMode(pin, wpi.OUTPUT);
// LED ON
var isOn = 1;
wpi.digitalWrite(pin, isOn);
LED ON
var wpi = require('wiring-pi');
wpi.setup('gpio');
wpi.wiringPiSetup();
var pin = 4;
wpi.pinMode(pin, wpi.OUTPUT);
var isOn = 1;
// 1초 주기로 LED ON/OFF
setInterval(function(){
wpi.digitalWrite(pin, isOn);
isOn = +!isOn;
}, 1000);
1초에 한 번씩 LED ON/OFF
LED
// wiring-pi 함수를 사용할 수 있도록 초기화
var wpi = require('wiring-pi');
wpi.setup('gpio');
wpi.wiringPiSetup();
// wiringpi맵 핀 번호 사용
var pin = 4;
// 출력 모드로 설정 (전류) pin(4) --> LED --> GND
wpi.pinMode(pin, wpi.OUTPUT);
// LED ON
var isOn = 1;
wpi.digitalWrite(pin, isOn);
LED ON
var wpi = require('wiring-pi');
wpi.setup('gpio');
wpi.wiringPiSetup();
var pin = 4;
wpi.pinMode(pin, wpi.OUTPUT);
var isOn = 1;
// 1초 주기로 LED ON/OFF
setInterval(function(){
wpi.digitalWrite(pin, isOn);
isOn = +!isOn;
}, 1000);
1초에 한 번씩 LED ON/OFF
초음파 센서로 거리 측정하기
var wpi = require('wiring-pi');
var sleep = require('sleep');
var microtime = require('microtime');
var TRIG, ECHO;
TRIG = 16; // Wiring-pi MAP 기준, 핀 번호
ECHO = 15; // Wiring-pi MAP 기준, 핀 번호
wpi.setup('gpio');
wpi.wiringPiSetup();
// TRIG: 보내는 핀 (출력)
wpi.pinMode(TRIG, wpi.OUTPUT);
// ECHO: 받는 핀 (입력)
wpi.pinMode(ECHO, wpi.INPUT);
// 초음파 센서 거리 구하는 공식
setInterval(function(){
var cnt1 = 0;
var cnt2 = 0;
wpi.digitalWrite(TRIG, wpi.LOW);
sleep.usleep(2);
wpi.digitalWrite(TRIG, wpi.HIGH);
sleep.usleep(20);
wpi.digitalWrite(TRIG, wpi.LOW);
while(wpi.digitalRead(ECHO) == wpi.LOW)
{
if(cnt1++ > 1000)
break;
}
var startTime = microtime.now();
while(wpi.digitalRead(ECHO) == wpi.HIGH)
{
if(cnt2++ > 10000)
break;
}
var endTime = microtime.now();
// Cm로 변환
var distance = (endTime - startTime) / 58;
console.log('distance ' + distance);
}, 1000);
7-Segment 연결하기
startup 동작 모드 시작
setDecodeNone Bit 단위의 데이터로 보여줌
setDedcodeAll 인코딩하여 보여줌 (“0”~”9”, “E”, “H”, “L”, “P”, “-”, “ ”만)
setDigitSegments Bit단위로 계산하여 정보를 표시(setDecodeNone)
setDigitSymbol 인코딩 가능한 값만 정보를 표시(setDecodeAll)
setScanLimit 화면에 출력할 글자 개수 제한 (MAX: 8)
setDisplayIntensity 화면 밝기 제한(MAX : 15)
7-Segment 출력하기
// max7219 패키지 초기화
var MAX7219 = require('max7219');
/*
* spidev 사용 초기화 - 라즈베리파이에서 SPI활성화 필
요
* 세그먼트의 Chip Select를 CE0에 연결하면,
* /dev/spidev0.0, CE1에 연결하면 /dev/spidev0.1
* console창에 ls /dev/*spi*로 확인 가능
*/
var disp = new MAX7219("/dev/spidev0.0");
// 세그먼트 초기화
// 해독하지 않는 모드 - 7 segment 각각의 led를 선택함
disp.setDecodeNone();
// 사용하는 세그먼트 수 (8개까지 지원)
disp.setScanLimit(8);
disp.startup();
// 밝기 0-15 (0으로 입력해도 꺼지지는 않음)
disp.setDisplayIntensity(15
// 출력
// setDigitSegments (세그먼트 번호, [7개의 led, 아래
점 1(ON), 0(OFF)]);
disp.setDigitSegments(0, [0, 0, 0, 0, 1, 1, 0, 1]);
disp.setDigitSegments(1, [1, 0, 1, 1, 0, 1, 1, 1]);
disp.setDigitSegments(2, [1, 0, 0, 1, 1, 1, 1, 1]);
disp.setDigitSegments(3, [0, 1, 0, 0, 1, 1, 0, 1]);
DigitSegments 방식 출력하기
7-Segment에 출력하기
//max7219 패키지 초기화
var MAX7219 = require('max7219');
var disp = new MAX7219("/dev/spidev0.0");
//세그먼트 초기화
// 해독하는 모드 세그먼트의 led를 각각 제어하지 않고, 숫자 혹은 출력 가능한 문자를 입력한다.
disp.setDecodeAll();
disp.setScanLimit(8);
disp.startup();
disp.setDisplayIntensity(15);
// 출력
// 사용할 수 있는 값은 0 - 9, ‘H’, ‘E’, ‘L’, ‘P’, ‘-’, ‘ ‘이다
disp.setDigitSymbol(0, "H", true);
disp.setDigitSymbol(1, 2);
disp.setDigitSymbol(2, "L");
disp.setDigitSymbol(3, "-", true);
DigitSymbol 방식 출력하기
온습도 센서
//DHT11 패키지 초기화
Var dht = require('node-dht-sensor');
//핀 번호 초기화
dht.initialize(11, 21); // dht.initialize (온도센서 버전-11번 (DHT11), 핀 번호);
//1초에 한 번씩 온도와 습도 값 읽기
setInterval(function(){
var dt = dht.read(); // 읽어오기
console.log ('Temp: '+ dht.temp....);
console.log ('Humd: '+ dht.humd....);
}, 1000);
1초에 한 번씩 온도, 습도 출력하기
Appendix B
THINKER TO MAKER
부 록
www.circul.us
1. WIFI 연결
1 2
3 4
Disconnected
from circulus!!
Raspbian OS 설치하기
https://www.raspberrypi.org/downloads/raspbian/
Circulus OS 설치하기
rom.circul.us circul.us
S/W를 손쉽게!!
www.npmjs.com
자바스크립트 관련 패키지를 사용해보자
S/W를 손쉽게!!
1. 센서 또는 기능 조회
2. npm 설치
3. 소스코드에서 require
1) 라즈베리파이를 지원하는지 확인한다.
2) 클릭하여 설치하는 방법과 사용법을 확인한다
var wpi = require('wiring-pi');
SSH 사용법은부록 참조
SSH 접속하기(접속 PC와 라즈베리파이가 같은 네트워크에 있을 때)
Raspberry Pi IP주소
Rasbian
ID : pi
PWD : raspberry
Circulus OS
ID : pi
PWD : circulus
Thank you
감사합니다.
W www.circul.us G group.circul.us
S social.circul.us C cafe.circul.us
CONTACT.US circulus@circul.us
EXPAND YOUR DIMENSION
생각에 머무는 THINKER 에서
직접 만드는 MAKER 시대
CIRCULUS 가 함께 합니다
SINCE 2013

Más contenido relacionado

La actualidad más candente

허봉춘씨의 파란만장한 IoT 보드 만들기
허봉춘씨의 파란만장한 IoT 보드 만들기허봉춘씨의 파란만장한 IoT 보드 만들기
허봉춘씨의 파란만장한 IoT 보드 만들기Bongjun Hur
 
라즈베리파이로 시작하는 Iot세상
라즈베리파이로 시작하는 Iot세상라즈베리파이로 시작하는 Iot세상
라즈베리파이로 시작하는 Iot세상Jin-Hyun Park
 
NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기TaeYoung Kim
 
About raspberrypi
About raspberrypiAbout raspberrypi
About raspberrypiYeonah Ki
 
IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1Park Jonggun
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
 
[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1stPark Jonggun
 
[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5th[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5thPark Jonggun
 
메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)JongyoonWon1
 
04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습봉조 김
 
1장 사물인터넷과 라즈베리 파이
1장 사물인터넷과 라즈베리 파이1장 사물인터넷과 라즈베리 파이
1장 사물인터넷과 라즈베리 파이Young Jin Suh
 
라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기Tai Hoon KIM
 
Raspberry-PI GPIO with Python
Raspberry-PI GPIO with PythonRaspberry-PI GPIO with Python
Raspberry-PI GPIO with Pythonsewoo lee
 
Raspberry pi 개발환경 구축
Raspberry pi 개발환경 구축Raspberry pi 개발환경 구축
Raspberry pi 개발환경 구축MoamBae
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to ArduinoSeokjun Kim
 
아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작chcbaram
 
IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3Park Jonggun
 
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.chcbaram
 

La actualidad más candente (20)

허봉춘씨의 파란만장한 IoT 보드 만들기
허봉춘씨의 파란만장한 IoT 보드 만들기허봉춘씨의 파란만장한 IoT 보드 만들기
허봉춘씨의 파란만장한 IoT 보드 만들기
 
라즈베리파이로 시작하는 Iot세상
라즈베리파이로 시작하는 Iot세상라즈베리파이로 시작하는 Iot세상
라즈베리파이로 시작하는 Iot세상
 
NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기
 
About raspberrypi
About raspberrypiAbout raspberrypi
About raspberrypi
 
PI day in COREA
PI day in COREAPI day in COREA
PI day in COREA
 
IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st[IoT] MAKE with Open H/W + Node.JS - 1st
[IoT] MAKE with Open H/W + Node.JS - 1st
 
[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5th[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5th
 
메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)
 
04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습
 
1장 사물인터넷과 라즈베리 파이
1장 사물인터넷과 라즈베리 파이1장 사물인터넷과 라즈베리 파이
1장 사물인터넷과 라즈베리 파이
 
라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기
 
Raspberry-PI GPIO with Python
Raspberry-PI GPIO with PythonRaspberry-PI GPIO with Python
Raspberry-PI GPIO with Python
 
Raspberry pi 개발환경 구축
Raspberry pi 개발환경 구축Raspberry pi 개발환경 구축
Raspberry pi 개발환경 구축
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작
 
IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3
 
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
 
Init to systemd
Init to systemdInit to systemd
Init to systemd
 

Similar a Start io t_with_raspberrypi

ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02정출 김
 
[1C6]오픈소스 하드웨어 플랫폼과 Node.js로 구현하는 IoT 플랫폼
[1C6]오픈소스 하드웨어 플랫폼과 Node.js로 구현하는 IoT 플랫폼[1C6]오픈소스 하드웨어 플랫폼과 Node.js로 구현하는 IoT 플랫폼
[1C6]오픈소스 하드웨어 플랫폼과 Node.js로 구현하는 IoT 플랫폼NAVER D2
 
2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)
2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)
2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)JiandSon
 
2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptx
2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptx2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptx
2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptxRinandarMuslimin
 
스크래치로 배우는 사물인터넷 DIY 창작키트
스크래치로 배우는 사물인터넷 DIY 창작키트스크래치로 배우는 사물인터넷 DIY 창작키트
스크래치로 배우는 사물인터넷 DIY 창작키트봉조 김
 
ARTIK 710 IoT class
ARTIK 710 IoT class ARTIK 710 IoT class
ARTIK 710 IoT class 정출 김
 
20140219 techdays mini 앱 개발 세미나(4)
20140219 techdays mini  앱 개발 세미나(4) 20140219 techdays mini  앱 개발 세미나(4)
20140219 techdays mini 앱 개발 세미나(4) 영욱 김
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
magicEco recruiting (서버개발자/하드웨어개발자/디자이너 모집)
magicEco recruiting (서버개발자/하드웨어개발자/디자이너 모집)magicEco recruiting (서버개발자/하드웨어개발자/디자이너 모집)
magicEco recruiting (서버개발자/하드웨어개발자/디자이너 모집)Hugh Choi 최형욱
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
Google hack fair 발표 20121117
Google hack fair 발표   20121117Google hack fair 발표   20121117
Google hack fair 발표 20121117영호 라
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기John Kim
 
Vr cctv 제작 ver1
Vr cctv 제작 ver1Vr cctv 제작 ver1
Vr cctv 제작 ver1병재 김
 
한글시계웍샵_SW
한글시계웍샵_SW한글시계웍샵_SW
한글시계웍샵_SW영광 송
 
Softbox review and quickstartguide-20180926
Softbox review and quickstartguide-20180926Softbox review and quickstartguide-20180926
Softbox review and quickstartguide-20180926봉조 김
 
20160420 ROS 3차 강의 (for 아스라다 팀)
20160420 ROS 3차 강의 (for 아스라다 팀)20160420 ROS 3차 강의 (for 아스라다 팀)
20160420 ROS 3차 강의 (for 아스라다 팀)Yoonseok Pyo
 
한글시계웍샵_ SW
한글시계웍샵_ SW한글시계웍샵_ SW
한글시계웍샵_ SW영광 송
 
메이커 페어 서울 2017 발표자료 - 레고 거북차 가습기(Smart Turtle Ship) (라즈베리파이 활용)
메이커 페어 서울 2017 발표자료 - 레고 거북차 가습기(Smart Turtle Ship) (라즈베리파이 활용)메이커 페어 서울 2017 발표자료 - 레고 거북차 가습기(Smart Turtle Ship) (라즈베리파이 활용)
메이커 페어 서울 2017 발표자료 - 레고 거북차 가습기(Smart Turtle Ship) (라즈베리파이 활용)JongyoonWon1
 

Similar a Start io t_with_raspberrypi (20)

ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
 
Meteor IoT
Meteor IoTMeteor IoT
Meteor IoT
 
[1C6]오픈소스 하드웨어 플랫폼과 Node.js로 구현하는 IoT 플랫폼
[1C6]오픈소스 하드웨어 플랫폼과 Node.js로 구현하는 IoT 플랫폼[1C6]오픈소스 하드웨어 플랫폼과 Node.js로 구현하는 IoT 플랫폼
[1C6]오픈소스 하드웨어 플랫폼과 Node.js로 구현하는 IoT 플랫폼
 
2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)
2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)
2015.03.14 Piday in Korea 지앤선 라즈베리 미트업(박종건)
 
2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptx
2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptx2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptx
2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptx
 
스크래치로 배우는 사물인터넷 DIY 창작키트
스크래치로 배우는 사물인터넷 DIY 창작키트스크래치로 배우는 사물인터넷 DIY 창작키트
스크래치로 배우는 사물인터넷 DIY 창작키트
 
ARTIK 710 IoT class
ARTIK 710 IoT class ARTIK 710 IoT class
ARTIK 710 IoT class
 
Designing Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom TabletDesigning Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom Tablet
 
20140219 techdays mini 앱 개발 세미나(4)
20140219 techdays mini  앱 개발 세미나(4) 20140219 techdays mini  앱 개발 세미나(4)
20140219 techdays mini 앱 개발 세미나(4)
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
magicEco recruiting (서버개발자/하드웨어개발자/디자이너 모집)
magicEco recruiting (서버개발자/하드웨어개발자/디자이너 모집)magicEco recruiting (서버개발자/하드웨어개발자/디자이너 모집)
magicEco recruiting (서버개발자/하드웨어개발자/디자이너 모집)
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
Google hack fair 발표 20121117
Google hack fair 발표   20121117Google hack fair 발표   20121117
Google hack fair 발표 20121117
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
 
Vr cctv 제작 ver1
Vr cctv 제작 ver1Vr cctv 제작 ver1
Vr cctv 제작 ver1
 
한글시계웍샵_SW
한글시계웍샵_SW한글시계웍샵_SW
한글시계웍샵_SW
 
Softbox review and quickstartguide-20180926
Softbox review and quickstartguide-20180926Softbox review and quickstartguide-20180926
Softbox review and quickstartguide-20180926
 
20160420 ROS 3차 강의 (for 아스라다 팀)
20160420 ROS 3차 강의 (for 아스라다 팀)20160420 ROS 3차 강의 (for 아스라다 팀)
20160420 ROS 3차 강의 (for 아스라다 팀)
 
한글시계웍샵_ SW
한글시계웍샵_ SW한글시계웍샵_ SW
한글시계웍샵_ SW
 
메이커 페어 서울 2017 발표자료 - 레고 거북차 가습기(Smart Turtle Ship) (라즈베리파이 활용)
메이커 페어 서울 2017 발표자료 - 레고 거북차 가습기(Smart Turtle Ship) (라즈베리파이 활용)메이커 페어 서울 2017 발표자료 - 레고 거북차 가습기(Smart Turtle Ship) (라즈베리파이 활용)
메이커 페어 서울 2017 발표자료 - 레고 거북차 가습기(Smart Turtle Ship) (라즈베리파이 활용)
 

Más de Yeonah Ki

게임프로그래밍입문 9
게임프로그래밍입문 9게임프로그래밍입문 9
게임프로그래밍입문 9Yeonah Ki
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7Yeonah Ki
 
게임프로그래밍입문 6주차 강의자료
게임프로그래밍입문 6주차 강의자료게임프로그래밍입문 6주차 강의자료
게임프로그래밍입문 6주차 강의자료Yeonah Ki
 
게임프로그래밍입문 5주차
게임프로그래밍입문 5주차게임프로그래밍입문 5주차
게임프로그래밍입문 5주차Yeonah Ki
 
게임프로그래밍입문 4주차
게임프로그래밍입문 4주차게임프로그래밍입문 4주차
게임프로그래밍입문 4주차Yeonah Ki
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차Yeonah Ki
 
게임프로그래밍입문 2주차
게임프로그래밍입문 2주차게임프로그래밍입문 2주차
게임프로그래밍입문 2주차Yeonah Ki
 
게임프로그래밍입문 1주차
게임프로그래밍입문 1주차게임프로그래밍입문 1주차
게임프로그래밍입문 1주차Yeonah Ki
 
Circulus Raspberry Pi wifi setting guide
Circulus Raspberry Pi wifi setting guideCirculus Raspberry Pi wifi setting guide
Circulus Raspberry Pi wifi setting guideYeonah Ki
 
Circulus user guide
Circulus user guideCirculus user guide
Circulus user guideYeonah Ki
 
Circulus user guide
Circulus user guideCirculus user guide
Circulus user guideYeonah Ki
 

Más de Yeonah Ki (11)

게임프로그래밍입문 9
게임프로그래밍입문 9게임프로그래밍입문 9
게임프로그래밍입문 9
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7
 
게임프로그래밍입문 6주차 강의자료
게임프로그래밍입문 6주차 강의자료게임프로그래밍입문 6주차 강의자료
게임프로그래밍입문 6주차 강의자료
 
게임프로그래밍입문 5주차
게임프로그래밍입문 5주차게임프로그래밍입문 5주차
게임프로그래밍입문 5주차
 
게임프로그래밍입문 4주차
게임프로그래밍입문 4주차게임프로그래밍입문 4주차
게임프로그래밍입문 4주차
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차
 
게임프로그래밍입문 2주차
게임프로그래밍입문 2주차게임프로그래밍입문 2주차
게임프로그래밍입문 2주차
 
게임프로그래밍입문 1주차
게임프로그래밍입문 1주차게임프로그래밍입문 1주차
게임프로그래밍입문 1주차
 
Circulus Raspberry Pi wifi setting guide
Circulus Raspberry Pi wifi setting guideCirculus Raspberry Pi wifi setting guide
Circulus Raspberry Pi wifi setting guide
 
Circulus user guide
Circulus user guideCirculus user guide
Circulus user guide
 
Circulus user guide
Circulus user guideCirculus user guide
Circulus user guide
 

Start io t_with_raspberrypi

  • 1. 누구나, 메이커!! 라즈베리파이로 IoT 시작하기 THINKER TO MAKER
  • 2. Maker Movement THINKER TO MAKER 메이커 운동
  • 3. Maker 무언가를 만드는 사람 Maker Movement Maker들이 만드는 법을 공유하고 발전시키는 흐름
  • 6. Open Source H/W THINKER TO MAKER 오픈소스 하드웨어
  • 7. Arduino vs. Raspberry Pi Micro Controller No Micro Computer Yes 성격 리눅스 C C, C++, Java, Python, Node.JS, Ruby ... 개발 언어 No Yes카메라 Limit Yes무선환경
  • 8. Raspberry Pi Name Raspberry Pi Model A+ Raspberry Pi Model B+ Raspberry Pi2 Model B Raspberry Pi Zero Raspberry Pi 3 Model Price $20 $35 $5 $35 Processor ARM 11 ARM Cortex A7 ARM 11 ARM Coretex-A53 Clock Speed 700Mhz 900Mhz 1Ghz 1.2Ghz RAM 256MB 512MB 1GB 512MB 1GB Multi Core Single Quad Single Quad Flash Micro SD Card GPIO 40 Ethernet N/A 10/100 N/A 10/100 USB USB 2.0X1 USB 2.0X4 Micro 1 USB 2.0X4 Power 5V, 200mA 5V, 600mA 5V, 800mA 5V, 160mA N/A Video Out HDMI, Composite Mini-HDMI HDMI, Composite Audio Out HDMI, Analog Mini-HDMI HDMI, Analog Wi-Fi 모듈 블루투스 지원
  • 9. Circulus 소개 THINKER TO MAKER 온라인 코딩교육 + 메이커 플랫폼
  • 10. Circulus Architecture Core Engine API Gateway M2M Controller Cloud Storage CirculOS Intelligence Agent Circulus App Circulus Web Data Processing H2H Controller 모바일부터 하드웨어까지. IoT 개발 학습/제작 클라우드 플랫폼 복잡한 IoT 지식 없이, 생각을 다양한 API를 사용하여 손쉽게 구현 가능
  • 11. One JavaScript - Multi Use JavaScript (+Node.JS) 만으로 모바일 부터 하드웨어 개발까지 구현 IoT 서비스 제작/배포 지원 솔루션
  • 12. www.circul.us 1. E-mail, Password만 넣으면 가입 완료!
  • 13. www.circul.us 2. Raspberry Pi 시리얼 번호 입력 OR 2497c978 홈페이지 좌측 상단 본인 아이디 클릭 후, My Profile에 시리얼 등록 부팅 시, 음성으로 시리얼 확인 가능
  • 14. www.circul.us 3. 프로젝트 생성하기 Lecture_01 Basic sensor study 리모컨 (웹페이지) 본인의 라즈베리파이에 실행되는 부분
  • 15. www.circul.us 4. 라즈베리파이 접속 상태 확인 프로젝트 안의 Check 버튼을 눌렀을 때, 정상적으로 연결되었다면, 해당 시리얼에 IP주소가 출력됩니다.
  • 16. What to do? THINKER TO MAKER 오늘 배울 것은?
  • 17. LED, 초음파 센서, 온습도 센서, 7-세그먼트 다양한 센서를 다루어 보자
  • 18. Basic THINKER TO MAKER 그 전에 잠깐, 기초
  • 19. JavaScript 기초 1. 모듈 추가하기(어떤 기능을 가지고 있는 모음) var wpi = require('wiring-pi'); 2. 변수 선언하기(변수: 값을 담아두는 상자) var val = 10; 3. 출력문 만들기 console.log(“Hello, Raspberry Pi”); var num = 10; console.log(“저는 ” + num + “살 입니다.”);
  • 20. var isOn = 1; setInterval(function(){ wpi.digitalWrite(pin, isOn); isOn = +!isOn; }, 1000); Javascript 기초 4. 주기적으로 반복하기 if(a >= b) return a; 5. 조건문 사용하기 While(a == true) console.log(“true”); 6. 반복문 사용하기
  • 21. Bread board 사용하기 납땜없이 선 연결 만을 이용하여 센서와 라즈베리파이를 연결 가로로 표시된 부분이 하나로 연결되어 있음
  • 22. GPIO(General Purpose Input/Output) 사용하기 - GPIO란? 신호를 보내거나 받을 수 있는 핀 - 센서나 외부 장치들과 정보를 주고 받음, BCM번호로 각 핀에게 명령을 내림 - 라즈베리파이의 GPIO는 입-출력 외에 또 다른 역할을 하는 핀들이 있음 GROUND : 0V GPIO_XX : ~3.3V 3.3V : 3.3V 5V : 5V BCM 번호 (각 핀의 일반 적인 이름) 추가 기능을 가진 핀
  • 23. Wiring-pi 사용하기 - GPIO를 사용하는 기능을 모아 둔 모음집 중 하나 - 아두이노와의 연계를 위해 새롭게 핀 번호를 지정 - Wiring-pi의 기능을 사용하는 경우는 Wiring-pi의 이름(핀번호)을 사용해야 함 15 16 1 4 5 6 10 11 26 27 28 29 8 9 7 0 2 3 12 13 14 21 22 23 24 25
  • 25. LED LED를 켜보자! Ground VCC GPIO - + ※ GPIO는 입력 또는 출력으로 정할 수 있고, 라즈베리파이는 3.3V까지 출력으로 사용 가능 VCC 또는 GPIO출력 모드를 이용하여 LED를 켤 수 있음
  • 26. LED ON //circulus 모듈 추가 var us = require(‘circulus’); //GPIO 초기화 us.initLED(23); //LED 설정 (true = ON, false = OFF) us.setLED(true); LED를 켜보자! GROUND GPIO23
  • 27. LED ON/OFF //circulus 모듈 추가 var us = require(‘circulus’); //LED 초기화 us.initLED(23); //LED 설정 (ture = ON, false = OFF) var isOn = 1; setInterval(function(){ us.setLED(isOn); isOn = +!isOn; }, 1000); 1초에 한 번씩 LED가 ON/OFF되도록 해보자! GROUND GPIO23
  • 28. Ultrasonic Sensor THINKER TO MAKER 초음파 센서(HC-SR04)
  • 29. 초음파 센서 원리 초음파를 통해 일정한 거리 이내에 사물이 있는지 파악 사물과의 거리가 얼마나 떨어졌는지 측정 VCC : 5V GND : Ground Trig : 초음파 전송 Echo : 초음파 수신
  • 30. 초음파 센서 원리 [High가 끝나는 시간 – Low가 끝나는 시간] / 58
  • 31. 초음파 센서 거리 측정하기 // circulus 모듈 추가 var us = require(‘circulus'); // 초음파 센서 초기화 // initDistance (TRIG, ECHO); us.initDistance(15, 14); // 1초에 한 번씩 거리 측정 setInterval(function(){ var dist = us.getDistance(); console.log(‘distance: ’+dist+’cm’); }, 1000); 5V GROUND GPIO14 GPIO15 1초에 한 번씩 장애물과의 거리를 측정해보자!
  • 32. 응용 1 THINKER TO MAKER LED와 초음파 센서
  • 33. 응용! // circulus 모듈 추가 var us = require('circulus'); us.initDistance(15, 14); us.initLED(23); setInterval(function(){ var dist = us.getDistance(); console.log(‘distance: ’+dist+’cm’); if(dist < 5) us.setLED(true); else us.setLED(false); }, 1000); 5cm 안에 장애물이 있으면 LED에 불을 켜자!
  • 35. 7-Segment란? VCC 5v GROUND Ground SCLK 동기화 신호 MOSI 라즈베리파이 출력 -> 7-세그먼트 입력 MISO 7-세그먼트 출력 -> 라즈베리파이 입력 CE Chip enable
  • 36. 7-Segment 연결하기 VCC GPIO25 GROUND GROUND SCLK GPIO11(SPI_CLK) MOSI GPIO10(SPI_MOSI) MISO - CE GPIO8(SPI_CE0_N)
  • 37. 초음파 센서 거리 측정하기 //circulus 모듈 추가 var us = require(‘circulus’); // Segment 초기화 us.initText(); //글자 출력 us.setText('piau'); //1초에 한 번씩 다른 숫자 출력 // 정수.toString() = 정수를 문자열로 변경함 ex) 1  ‘1’ var i = 0; setInterval(function(){ us.setText(i.toString() + i.toString() + i.toString() + i.toString()); i++; if(i === 10) i = 0; }, 1000); 글자와 숫자를 출력해보자!
  • 38. Temperature-humidity Sensor THINKER TO MAKER 온습도 센서(DHT-11)
  • 39. 온습도 센서 GND DATA VCC 온도와 습도를 동시에 측정할 수 있는 센서 모델명 용도 온도 측정 범위 습도 측정 범위 DHT11 실내용 0 ~ 50도 20 ~ 80%
  • 40. 온습도 센서 //circulus 모듈 추가 Var us = require(‘circulus); // GPIO 값 초기화 // 가운데 data핀의 BCM 핀 번호 사용 us.initTemp(21); //1초에 한번씩 온도, 습도 값 출력 setInterval(function(){ console.log(us.getTemp()); },1000); 1초에 한 번씩 온도와 습도를 측정해보자! 5V GROUND GPIO21
  • 41. Remote Control with Smart Phone THINKER TO MAKER 스마트폰으로 제어하기
  • 43. <html> <head> <title>remote control</title> <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script> <script src="http://www.circul.us/circulus.js"></script> <script src="index.js"></script> </head> <body> <div> LED </div> <button id='ledon'>ON</button> <button id='ledoff'>OFF</button></br></br> <div>ULTRA</div> <button id='ultra'>ULTRA</button> <span id='distance'>0</span>cm </br></br> <div>TEMP/HUMI</div> <button id='temp'>TEMP</button> <span id='tempinfo'>0</span></br> <button id='humi'>HUMI</button> <span id='humiinfo'>0</span></br></br> <span> SEGMENT</span> <span id='segment'>0</span> </body> </html> HTML로 외관 만들기
  • 44. 리모컨 확인하기 해당 주소로 PC, 스마트폰 등 다양한 기기에서 바로 사용 가능 간편 주소 circul.us/cloud/ID/프로젝트 이름/파일명.html
  • 45. 리모컨 초기화 $c.ready(function(us){ us.init('b5861b8d') … … //us.send(KEY, DATA); //us.receive(KEY, DATA); }); ## 리모컨 JavaScript (index.js) : 리모컨과 자신의 라즈베리파이가 통신하기 위해, 시리얼 번호를 등록함 자신의 라즈베리파이 시리얼 번호로 초기화 뒤의 통신 관련 부분 코드는 이곳에 작성합니다.
  • 46. Socket 통신 var data = ‘hello’; us.send (‘KEY’, data); JavaScript JavaScript Send/Receive us.receive(‘KEY,’ function(data){ /* 수행하고 싶은 내용 */ console.log(data); }); ## hello us.receive(‘KEY,’ function(data){ /* 수행하고 싶은 내용 */ }); us.send(‘KEY’, data); 리모컨 HTML [Internet] [라즈베리파이]
  • 47. CASE 1 (LED ON/OFF) //HTML파일에서의 각 버튼을 클릭하면 호출 $('#ledon').click(function(){ us.send('ledon'); }); $('#ledoff').click(function(){ us.send('ledoff'); }); var us = require('circulus'); us.receive('ledon', function(data){ console.log(‘ledon receive’); us.initLED(23); us.setLED(true); }); us.receive('ledoff', function(data){ console.log(‘ledoff receive’); us.initLED(23); us.setLED(false); }); Remote Controller (index.js) Raspberry Pi (index.js) 리모컨에서 라즈베리파이로 명령 전달
  • 48. CASE 2(초음파 센서 거리 출력) $('#ultra').click(function(){ us.send('ultra'); }); // HTML 파일에서 span id = ‘distance’에 출력함 us.receive('distance', function(data){ $('#distance').text(data); }); us.receive('ultra', function(data){ console.log(‘ultra receive’); us.initDistance(15, 14); var dist = Math.floor(us.getDistance()); us.send('distance', dist); console.log(dist + ‘ cm’); }); Remote Controller (index.js) Raspberry Pi (index.js) 리모컨에서 라즈베리파이로 명령 전달 + 응답 수신
  • 49. us.receive('temp', function(data){ console.log(‘temp receive’); us.initTemp(21); var tempinfo = us.getTemp(); console.log(tempinfo.temperature); us.send('tempinfo', tempinfo.temperature); }); us.receive('humi', function(data){ console.log(‘humi receive); us.initTemp(21); var humi = us.getTemp(); console.log(humi.humidity); us.send('humiinfo', humi.humidity); CASE 2(온/습도 출력) $('#temp').click(function(){ us.send('temp'); }); us.receive('tempinfo', function(data){ $('#tempinfo').text(data); }); $('#humi').click(function(){ us.send('humi'); }); us.receive('humiinfo', function(data){ $('#humiinfo').text(data); }); Remote Controller (index.js) Raspberry Pi (index.js) 리모컨에서 라즈베리파이로 명령 전달 + 응답 수신
  • 50. 리모컨에서 명령 없이, 라즈베리파이의 응답만 수신 us.initText(); var i = 0; setInterval(function(){ us.setText(i.toString() + i.toString() + i.toString() + i.toString(), true, false, false, true); var text = i.toString() + i.toString() + i.toString() + i.toString(); i++; if(i == 10) i = 0; console.log(text); us.send('segment', text); }, 1000); 세그먼트 출력 us.receive('segment', function(data){ $('#segment').text(data); }); Remote Controller (index.js) Raspberry Pi (index.js)
  • 52. 무엇을 만들 수 있을까요? IDEA를 실행하는 것이 중요합니다.
  • 54. 메이킹 과정 아이디어 서비스 기획 프로토 타이핑 하드웨어 구성 소프트웨어 구성 3D 프린팅 결과 공유 만들고자 하는 아이디어를 떠올리는 단계이다. 아이디어를 서비스로 구체화 한다. 이 단계에서는 보여질 모습 뿐만 아니라, 보이지는 않지만 사용자에게 어떤 가치를 제공할지도 염두 해 둔다. 블록 등으로 만들어질 하드웨어 모습을 구성해 보고, 이를 사용할 모바일 어 플리케이션이 있다면 종이에 그 이미지를 구성해 본다. 오픈소스 하드웨어로 만들고자 한 내용을 구성해 본다. 프로토 타이핑및 최 종적으로 보여질 외관을 고려하여 센서 및 각종 하드웨어의 배치도 고려한다. 하드웨어를 제어할 소프트웨어와 리모콘 용도로 사용될 소프트웨어, 그리고 서비스 제공을 위한 소프트웨어를 구성한다. Making 한 제품의 외관과 인쇄 가능 한 부속들을 3D 모델링하고, 결과물을 3D 프린팅하여 하드웨어를 최종 완성한다. 제품을 완성하여 외부에 공개한다. 만일 판매를 목적으로 한 제품이라면 소 셜 펀딩을 이용하여 판매 가능성을 확인해 본다.
  • 55. 외관을 만드는 방법! 3D 프린터 레이저 커터 CNC 라우터
  • 56. 메이커 스페이스 국내현황 성수 메이커스페이스 02-2115-0525 경기 창조경제혁신센터 031-8016-1102 서울 창조경제혁신센터 02-723-9100 Fab. Lab. 서울 070-7743-0806 메이커스빌 1544-8622 과천 과학관 무한상상실 02-509-6925 경기콘텐츠 코리아랩 021-776-4677 K-ICT 디바이스랩 경기 031-776-4736
  • 57. 필요한 도안을 찾는 법! Thingiverse Instructables Makeall.com
  • 58. Appendix A THINKER TO MAKER 부 록 : 범용 소스코드
  • 59. LED // wiring-pi 함수를 사용할 수 있도록 초기화 var wpi = require('wiring-pi'); wpi.setup('gpio'); wpi.wiringPiSetup(); // wiringpi맵 핀 번호 사용 var pin = 4; // 출력 모드로 설정 (전류) pin(4) --> LED --> GND wpi.pinMode(pin, wpi.OUTPUT); // LED ON var isOn = 1; wpi.digitalWrite(pin, isOn); LED ON var wpi = require('wiring-pi'); wpi.setup('gpio'); wpi.wiringPiSetup(); var pin = 4; wpi.pinMode(pin, wpi.OUTPUT); var isOn = 1; // 1초 주기로 LED ON/OFF setInterval(function(){ wpi.digitalWrite(pin, isOn); isOn = +!isOn; }, 1000); 1초에 한 번씩 LED ON/OFF
  • 60. LED // wiring-pi 함수를 사용할 수 있도록 초기화 var wpi = require('wiring-pi'); wpi.setup('gpio'); wpi.wiringPiSetup(); // wiringpi맵 핀 번호 사용 var pin = 4; // 출력 모드로 설정 (전류) pin(4) --> LED --> GND wpi.pinMode(pin, wpi.OUTPUT); // LED ON var isOn = 1; wpi.digitalWrite(pin, isOn); LED ON var wpi = require('wiring-pi'); wpi.setup('gpio'); wpi.wiringPiSetup(); var pin = 4; wpi.pinMode(pin, wpi.OUTPUT); var isOn = 1; // 1초 주기로 LED ON/OFF setInterval(function(){ wpi.digitalWrite(pin, isOn); isOn = +!isOn; }, 1000); 1초에 한 번씩 LED ON/OFF
  • 61. 초음파 센서로 거리 측정하기 var wpi = require('wiring-pi'); var sleep = require('sleep'); var microtime = require('microtime'); var TRIG, ECHO; TRIG = 16; // Wiring-pi MAP 기준, 핀 번호 ECHO = 15; // Wiring-pi MAP 기준, 핀 번호 wpi.setup('gpio'); wpi.wiringPiSetup(); // TRIG: 보내는 핀 (출력) wpi.pinMode(TRIG, wpi.OUTPUT); // ECHO: 받는 핀 (입력) wpi.pinMode(ECHO, wpi.INPUT); // 초음파 센서 거리 구하는 공식 setInterval(function(){ var cnt1 = 0; var cnt2 = 0; wpi.digitalWrite(TRIG, wpi.LOW); sleep.usleep(2); wpi.digitalWrite(TRIG, wpi.HIGH); sleep.usleep(20); wpi.digitalWrite(TRIG, wpi.LOW); while(wpi.digitalRead(ECHO) == wpi.LOW) { if(cnt1++ > 1000) break; } var startTime = microtime.now(); while(wpi.digitalRead(ECHO) == wpi.HIGH) { if(cnt2++ > 10000) break; } var endTime = microtime.now(); // Cm로 변환 var distance = (endTime - startTime) / 58; console.log('distance ' + distance); }, 1000);
  • 62. 7-Segment 연결하기 startup 동작 모드 시작 setDecodeNone Bit 단위의 데이터로 보여줌 setDedcodeAll 인코딩하여 보여줌 (“0”~”9”, “E”, “H”, “L”, “P”, “-”, “ ”만) setDigitSegments Bit단위로 계산하여 정보를 표시(setDecodeNone) setDigitSymbol 인코딩 가능한 값만 정보를 표시(setDecodeAll) setScanLimit 화면에 출력할 글자 개수 제한 (MAX: 8) setDisplayIntensity 화면 밝기 제한(MAX : 15)
  • 63. 7-Segment 출력하기 // max7219 패키지 초기화 var MAX7219 = require('max7219'); /* * spidev 사용 초기화 - 라즈베리파이에서 SPI활성화 필 요 * 세그먼트의 Chip Select를 CE0에 연결하면, * /dev/spidev0.0, CE1에 연결하면 /dev/spidev0.1 * console창에 ls /dev/*spi*로 확인 가능 */ var disp = new MAX7219("/dev/spidev0.0"); // 세그먼트 초기화 // 해독하지 않는 모드 - 7 segment 각각의 led를 선택함 disp.setDecodeNone(); // 사용하는 세그먼트 수 (8개까지 지원) disp.setScanLimit(8); disp.startup(); // 밝기 0-15 (0으로 입력해도 꺼지지는 않음) disp.setDisplayIntensity(15 // 출력 // setDigitSegments (세그먼트 번호, [7개의 led, 아래 점 1(ON), 0(OFF)]); disp.setDigitSegments(0, [0, 0, 0, 0, 1, 1, 0, 1]); disp.setDigitSegments(1, [1, 0, 1, 1, 0, 1, 1, 1]); disp.setDigitSegments(2, [1, 0, 0, 1, 1, 1, 1, 1]); disp.setDigitSegments(3, [0, 1, 0, 0, 1, 1, 0, 1]); DigitSegments 방식 출력하기
  • 64. 7-Segment에 출력하기 //max7219 패키지 초기화 var MAX7219 = require('max7219'); var disp = new MAX7219("/dev/spidev0.0"); //세그먼트 초기화 // 해독하는 모드 세그먼트의 led를 각각 제어하지 않고, 숫자 혹은 출력 가능한 문자를 입력한다. disp.setDecodeAll(); disp.setScanLimit(8); disp.startup(); disp.setDisplayIntensity(15); // 출력 // 사용할 수 있는 값은 0 - 9, ‘H’, ‘E’, ‘L’, ‘P’, ‘-’, ‘ ‘이다 disp.setDigitSymbol(0, "H", true); disp.setDigitSymbol(1, 2); disp.setDigitSymbol(2, "L"); disp.setDigitSymbol(3, "-", true); DigitSymbol 방식 출력하기
  • 65. 온습도 센서 //DHT11 패키지 초기화 Var dht = require('node-dht-sensor'); //핀 번호 초기화 dht.initialize(11, 21); // dht.initialize (온도센서 버전-11번 (DHT11), 핀 번호); //1초에 한 번씩 온도와 습도 값 읽기 setInterval(function(){ var dt = dht.read(); // 읽어오기 console.log ('Temp: '+ dht.temp....); console.log ('Humd: '+ dht.humd....); }, 1000); 1초에 한 번씩 온도, 습도 출력하기
  • 66. Appendix B THINKER TO MAKER 부 록
  • 67. www.circul.us 1. WIFI 연결 1 2 3 4 Disconnected from circulus!!
  • 71. S/W를 손쉽게!! 1. 센서 또는 기능 조회 2. npm 설치 3. 소스코드에서 require 1) 라즈베리파이를 지원하는지 확인한다. 2) 클릭하여 설치하는 방법과 사용법을 확인한다 var wpi = require('wiring-pi'); SSH 사용법은부록 참조
  • 72. SSH 접속하기(접속 PC와 라즈베리파이가 같은 네트워크에 있을 때) Raspberry Pi IP주소 Rasbian ID : pi PWD : raspberry Circulus OS ID : pi PWD : circulus
  • 74. W www.circul.us G group.circul.us S social.circul.us C cafe.circul.us CONTACT.US circulus@circul.us EXPAND YOUR DIMENSION 생각에 머무는 THINKER 에서 직접 만드는 MAKER 시대 CIRCULUS 가 함께 합니다 SINCE 2013