Top Banner
Circulus API 목록 THINKER TO MAKER
42

라즈베리파이 Circulus API 가이드

Apr 14, 2017

Download

Technology

Circulus
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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