라즈베리파이 circulus api 가이드

42
Circulus API 목록 THINKER TO MAKER

Upload: circulus

Post on 14-Apr-2017

2.226 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: 라즈베리파이 Circulus API 가이드

Circulus API 목록

THINKER TO MAKER

Page 2: 라즈베리파이 Circulus API 가이드

Circulus는 더 많은 사람이 메이커가 되기 원합니다.

그래서, 더 쉽게 메이커로 입문할 수 있도록 Circulus 자체 API 를 제공합니다. 복잡한 코딩을 몰라도 Circulus API를 활용하여 원하는 것을 더 쉽게 구현할 수 있습니다.

Page 3: 라즈베리파이 Circulus API 가이드

Circulus API

THINKER TO MAKER

Circulus API

Page 4: 라즈베리파이 Circulus API 가이드

Circulus API 목록

현재 사용 가능한 API 목록은 아래와 같습니다.

LED 초음파 센서 7-세그먼트 온습도 센서 조도 센서 PWM 제어 TTS 카메라 음성인식 위치파악 시스템 모니터링 OCR(Optical Character Reader/Recognition-광학문자인식)

Page 5: 라즈베리파이 Circulus API 가이드

Circulus OS

20160417이후 버전을 사용해주세요.

rom.circul.us circul.us

※ 기존에 강의를 수강하신 분들은 새로 OS를 다운로드하여 사용해주세요.

Page 6: 라즈베리파이 Circulus API 가이드

Circulus API 소스코드

파일을 clone하여 사용하세요.

Page 7: 라즈베리파이 Circulus API 가이드

GPIO(General Purpose Input/Output) 사용하기

- GPIO란? 신호를 보내거나 받을 수 있는 핀 - 센서나 외부 장치들과 정보를 주고 받음, BCM번호로 각 핀에게 명령을 내림 - 라즈베리파이의 GPIO는 입-출력 외에 또 다른 역할을 하는 핀들이 있음

GROUND : 0V GPIO_XX : ~3.3V 3.3V : 3.3V 5V : 5V

BCM 번호 (각 핀의 일반 적인 이름)

추가 기능을 가진 핀

Page 8: 라즈베리파이 Circulus API 가이드

LED

THINKER TO MAKER

LED

Page 9: 라즈베리파이 Circulus API 가이드

LED

LED를 켜보자!

Ground VCC GPIO

- +

※ GPIO는 입력 또는 출력으로 정할 수 있고, 라즈베리파이는 3.3V까지 출력으로 사용 가능 VCC 또는 GPIO출력 모드를 이용하여 LED를 켤 수 있음

Page 10: 라즈베리파이 Circulus API 가이드

LED ON(led.js)

//circulus 모듈 추가

const us = require(‘circulus’); //GPIO 초기화(GPIO 23을 LED 제어로 사용함)

us.initLED(23); //LED 설정 (true = ON, false = OFF)

us.setLED(true);

LED를 켜보자!

GROUND

GPIO23

Page 11: 라즈베리파이 Circulus API 가이드

LED ON(led2.js)

//circulus 모듈 추가

const us = require(‘circulus’); //두 번째 값(led1,2는 각각 LED를 구분해주는 값)

us.initLED(23, ‘led1’); us.setLED(true, ‘led1’); us.initLED(18, ‘led2’);

us.setLED(true, ‘led2’);

여러 개의 LED를 켜보자!

GROUND

GPIO23

Page 12: 라즈베리파이 Circulus API 가이드

Ultrasonic Sensor

THINKER TO MAKER

초음파 센서(HC-SR04)

Page 13: 라즈베리파이 Circulus API 가이드

초음파 센서 원리

초음파를 통해 일정한 거리 이내에 사물이 있는지 파악 사물과의 거리가 얼마나 떨어졌는지 측정

VCC : 5V GND : Ground Trig : 초음파 전송 Echo : 초음파 수신

Page 14: 라즈베리파이 Circulus API 가이드

초음파 센서 거리 측정하기(distance.js)

// circulus 모듈 추가

const us = require(‘circulus'); // 초음파 센서 초기화 // initDistance (TRIG, ECHO);

us.initDistance(23, 24); // 1초에 한 번씩 거리 측정

setInterval(function(){ console.log(us.getDistance() + ‘cm’); }, 1000);

5V

GROUND

GPIO14

GPIO15

1초에 한 번씩 장애물과의 거리를 측정해보자!

Page 15: 라즈베리파이 Circulus API 가이드

7-Segment

THINKER TO MAKER

7-세그먼트 (4 Digit LED)

Page 16: 라즈베리파이 Circulus API 가이드

7-세그먼트란?

VCC 5v

GROUND Ground

SCLK 동기화 신호

MOSI 라즈베리파이 출력 -> 7-세그먼트 입력

MISO 7-세그먼트 출력 -> 라즈베리파이 입력

CE Chip enable

Page 17: 라즈베리파이 Circulus API 가이드

7-세그먼트 연결하기

VCC GPIO25

GROUND GROUND

SCLK GPIO11(SPI_CLK)

MOSI GPIO10(SPI_MOSI)

MISO -

CE GPIO8(SPI_CE0_N)

Page 18: 라즈베리파이 Circulus API 가이드

7-세그먼트 출력하기(7-segment.js)

const us = require('circulus'); // SPI 연결 7 Segment 초기화 us.initText(); // 4자리 숫자, 텍스트 출력. 단 문자의 경우 표현 제약이 따름 us.setText('hipi'); /* 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);

*/

글자와 숫자를 출력해보자!

Page 19: 라즈베리파이 Circulus API 가이드

Temperature-humidity Sensor

THINKER TO MAKER

온습도 센서(DHT-11)

Page 20: 라즈베리파이 Circulus API 가이드

온습도 센서

GND

DATA

VCC

온도와 습도를 동시에 측정할 수 있는 센서

모델명 용도 온도 측정 범위 습도 측정 범위

DHT11 실내용 0 ~ 50도 20 ~ 80%

Page 21: 라즈베리파이 Circulus API 가이드

온습도 센서(temperature.js)

//circulus 모듈 추가

const us = require(‘circulus); // GPIO 값 초기화 // 가운데 data핀의 BCM 핀 번호 사용

us.initTemp(21); //1초에 한번씩 온도, 습도 값 출력

setInterval(function(){ console.log(us.getTemp()); },1000); /* 실행 예시 { temperature: '23.0', humidity: '34.0' } */

1초에 한 번씩 온도와 습도를 측정해보자!

5V

GROUND

GPIO21

Page 22: 라즈베리파이 Circulus API 가이드

Illumination Sensor

THINKER TO MAKER

조도 센서(BH1750)

Page 23: 라즈베리파이 Circulus API 가이드

조도 센서

빛의 정도에 따라 밝기를 측정하는 센서(i2c 방식)

VCC 5V

GROUND Ground

SCL 동기화

SDA 데이터 수신

ADDR i2c 통신에 이용되는 주소 값으로 연결하지 않아도 됨 (default 설정 값-0x23으로 인식)

Page 24: 라즈베리파이 Circulus API 가이드

조도 센서(light.js)

const us = require('circulus'); // I2C 연결 조도 센서로 밝기 감지setInterval(function(){ us.getLight(function(val){ console.log(val); }); },1000);

1초에 한 번씩 조도를 측정해보자!

5V GROUND

GPIO2 GPIO3

Page 25: 라즈베리파이 Circulus API 가이드

PWM (Pulse Width Modulation)

THINKER TO MAKER

PWM 제어

(모터 및 LED 밝기 제어)

Page 26: 라즈베리파이 Circulus API 가이드

PWM이란?

펄스 값을 조절하여 밝기나 강도를 조절하는 방식 EX) LED 밝기, 서보 모터 움직임

※ 1에 머물러 있는 시간이 길어질수록 밝아진다.

0

1

0

1

0

1

Page 27: 라즈베리파이 Circulus API 가이드

H/W PWM 방식(pwm_hard.js)

var us = require('circulus'); us.initHPWM(18); var num = 30; var isRight = true; setInterval (function(){ console.log(num); us.writeHPWM (num) ; // 1번 핀에 PWM 신호를 보낸다 if (isRight){ num += 1; } else { num -= 1; } if (num === 120){ isRight = false; } if (num === 30) { isRight = true ; } }, 100);

PWM 단계에 의해 모터가 움직입니다.

5V Ground

GPIO18

Page 28: 라즈베리파이 Circulus API 가이드

S/W PWM 방식(pwm_soft.js)

var us = require('circulus'); us.initSPWM(19); var num = 6; var isRight = true; setInterval (function(){ console.log(num); us.writeSPWM (num) ; // 1번 핀에 PWM 신호를 보낸다 if (isRight){ num += 1; } else { num -= 1; } // 정밀도가 HW 방식에 비해 세밀하게 불가능 함 // 실제 동작하면, SW 방식은 정지 동작에서 떨림 현상이 발견됨 if (num === 24){ isRight = false; } if (num === 6) { isRight = true ; } }, 1000);

PWM 단계에 의해 모터가 움직입니다.

5V

Ground GPIO19

Page 29: 라즈베리파이 Circulus API 가이드

TTS(Text To Speech)

THINKER TO MAKER

TTS 사용하기

Page 30: 라즈베리파이 Circulus API 가이드

TTS 사용하기(index.js)

const us = require('circulus'); // 한글 TTS(한글 사용시에는 뒤에 true를 붙입니다.) us.tts('안녕하세요 서큘러스 입니다', true); // 영문 TTS setTimeout(function(){ us.tts('Welcome to Circulus'); }, 10000);

문자를 입력하면 음성으로 출력합니다.

※ Audio 단자에 이어폰 혹은 스피커를 연결하여 결과를 확인할 수 있습니다.

Page 31: 라즈베리파이 Circulus API 가이드

Camera

THINKER TO MAKER

카메라

Page 32: 라즈베리파이 Circulus API 가이드

카메라 사용하기(camera.js)

const us = require('circulus'); console.log('Taking Picture'); us.camera(function(data){ //촬영한 사진 관련 data 출력 //해당 data를 활용하여 모바일로 사진 전송 가능 console.log(data); })

카메라 단자에 카메라를 연결합니다.

※ 카메라로 찍힌 사진은 /tmp 폴더 하위에 pic.jpg로 저장됩니다.

Page 33: 라즈베리파이 Circulus API 가이드

Sound

THINKER TO MAKER

소리 인식

Page 34: 라즈베리파이 Circulus API 가이드

소리 인식하기(sound.js)

const us = require('circulus'); var exec = require('child_process').exec; console.log('Sound Detector'); // 마지막 파라메터는 옵션임 // threshold - 소리 감지 레벨, 미 지정시 7 // timeWindow - 어느정도 소리가 안 들리면 끝낼지, 기본은 1초 us.listen(function(isDetect, listen){ if(isDetect){ console.log('Detected!') } else { console.log('Recorded!'); exec('aplay record.wav', function(){ // 또 다시 반복 listen(); }) } }, { threshold : 10 });

연결된 마이크로 소리를 감지하면 녹음하여 재생합니다.

※ 테스트를 위해 usb단자로 연결하는 마이크를 사용하였습니다.

Page 35: 라즈베리파이 Circulus API 가이드

Location

THINKER TO MAKER

위치파악

Page 36: 라즈베리파이 Circulus API 가이드

위치파악(location.js)

const us = require('circulus'); // WiFi 를 이용하여 현재 위경도 및 주소를 파악 us.getGeolocation(function(data){ console.log(data); }); /* 결과값 예시 { lat: 37.5378584, lng: 127.0968571, addr: '대한민국 서울특별시 광진구 구의3동 631-4' } */

WiFi를 이용하여 현재의 대략적인 위치를 파악할 수 있습니다.

Page 37: 라즈베리파이 Circulus API 가이드

System Monitoring

THINKER TO MAKER

시스템 모니터링

Page 38: 라즈베리파이 Circulus API 가이드

시스템 모니터링하기(monitor.js)

const us = require('circulus'); us.monitor(function(data){ console.log(data); }) /* 시스템 정보 및 사용량 확인 { model: 'ARMv7 Processor rev 4 (v7l)', speed: 1200, cores: 4, temperature: 52, freemem: 755535872, totalmem: 904245248, freedisk: 1839996928, totaldisk: 3788242944, platform: 'linux', release: '4.1.19-v7+', loadavg: 9, uptime: 58 } */

PC처럼 라즈베리파이의 시스템 상태를 확인할 수 있습니다

Page 39: 라즈베리파이 Circulus API 가이드

OCR (Optical Character Reader/Recognition)

THINKER TO MAKER

광학문자인식

Page 40: 라즈베리파이 Circulus API 가이드

OCR 사용하기(ocr.js)

const us = require('circulus'); console.log('Get Text'); // English us.getText('/home/pi/text_image.jpg',function(data){ console.log(data); }); // Korean us.getText('/home/pi/text_image.jpg',function(data){ console.log(data); },true);

빛을 이용해 문자를 판독하는 기술로 문자를 추출합니다.

※ 테스트를 위해 /home/pi 폴더 하위에 저장된 ‘test_image.jpg’ 를 판독하는데 사용하였습니다. 정밀도에 의해 일부 이상한 글자가 보일 수 있습니다.

Page 41: 라즈베리파이 Circulus API 가이드

Thank you 감사합니다.

Page 42: 라즈베리파이 Circulus API 가이드

W www.circul.us G group.circul.us

S social.circul.us C cafe.circul.us

CONTACT.US [email protected]

EXPAND YOUR DIMENSION SINCE 2013