66
아아아아아 아아아 아아아 아아아 ( 아아 ) 아아아아아아 아아 아아아아아아아아아 아아아

아두이노로 배우는 피지컬 컴퓨팅(중급)

Embed Size (px)

Citation preview

아두이노로 배우는 피지컬 컴퓨팅 ( 중급 )

부산전자공고 부설 전자계열공동실습소

김기태

목차

차시 교육 내용

(01 차시 ) 아두이노 HC-06 블루투스 모듈 사용하기

(02 차시 ) 아두이노와 앱인벤터를 통한 블루투스 모듈 연동

(03 차시 ) 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

(04 차시 ) 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅱ

(05 차시 ) 아두이노 IoT 통한 LED 제어Ⅰ

(06 차시 ) 아두이노 IoT 통한 LED 제어Ⅱ

실습부품

01. 아두이노 1 개 02. 아두이노케이블 1 개 03. 브레드보드 ( 긴것 ) 1 개 04. 점퍼케이블 F/F 6 개

실습부품

05. 점퍼케이블 F/M 3 개 06. SW(Push 버튼 ) 1 개 07. 330 저항 1 개 08. 1 채널 릴레이 1 개

실습부품

09. 조명 소켓 (E26 타입 ) 1 개10. 220V 전원 코드선 1 개11. 조명 1 개12. 블루투스 모듈 (HC-06) 1 개

소스코드 저장소

http://gist.github.com/taesamja

mid_02_ardu.ino ~ mid_24_py.py

1. 아두이노 HC-06 블루투스 모듈 사용하기

1. 아두이노 HC-06 블루투스 모듈 사용하기

1. 아두이노 HC-06 블루투스 모듈 사용하기

1. 아두이노 HC-06 블루투스 모듈 사용하기

1. 아두이노 HC-06 블루투스 모듈 사용하기

1. 아두이노 HC-06 블루투스 모듈 사용하기

1. 아두이노 HC-06 블루투스 모듈 사용하기

1. 아두이노 HC-06 블루투스 모듈 사용하기

아두이노 스케치 코드#include <SoftwareSerial.h>int rx=2;int tx=3;

SoftwareSerial BTSerial(rx, tx);

void setup() { Serial.begin(9600); BTSerial.begin(9600);}

void loop() { if(BTSerial.available()) Serial.write(BTSerial.read()); if(Serial.available()) BTSerial.write(Serial.read());}

1. 아두이노 HC-06 블루투스 모듈 사용하기

동작설명# 시리얼모니터 창을 통한 HC-06 모듈 환경설정 ① 아두이노 시리얼 모니터 창의 맨 밑에 “ line ending 없음”으로 설정 . ② 아두이노 시리얼 모니터 창 입력에 다음 순서대로 입력 . ▷ AT ⇒ OK : 블루투스 통신 준비가 됨 . ▷ AT+NAMEtae01⇒ OKsetname : 블루투스 이름을 “ tae01" 로 설정 ▷ AT+PIN1234⇒ OKsetPin : 블루투스 비밀번호를 “ 1234” 로 설정 ▷ AT+BAUD4⇒ OK9600 : 블루투스 통신속도를 “ 9600bps" 로 설정 (※ 참고 : BAUD1=1200, 2=2400, 3=4800, 4=9600, BAUD5=19200, 6=38400, 7=57600, 8=115200 )

2. 아두이노와 앱인벤터를 통한 블루투스 모듈 연동

아두이노 스케치 코드#include <SoftwareSerial.h>

int rx=2; int tx=3;

SoftwareSerial BTSerial(rx, tx);

const int ledPin = 13;

void setup() {

BTSerial.begin(9600);

pinMode(ledPin, OUTPUT);

}

void loop() {

if(BTSerial.available()) {

char ind = BTSerial.read();

if(ind == 'H')

digitalWrite(ledPin, HIGH);

if(ind == 'L')

digitalWrite(ledPin, LOW);

}

}

2. 아두이노와 앱인벤터를 통한 블루투스 모듈 연동

앱인벤터 주소 : http://ai2.appinventor.mit.edu

http://ai2.appinventor.mit.edu

2. 아두이노와 앱인벤터를 통한 블루투스 모듈 연동

2. 아두이노와 앱인벤터를 통한 블루투스 모듈 연동

앱인벤터 디자인

2. 아두이노와 앱인벤터를 통한 블루투스 모듈 연동

앱인벤터 블럭

2. 아두이노와 앱인벤터를 통한 블루투스 모듈 연동

스마트폰과 HC-06 블루투스 모듈 페어링 과정 1. 스마트폰에서 블루투스 기능 활성화

2. 아두이노와 앱인벤터를 통한 블루투스 모듈 연동

스마트폰과 HC-06 블루투스 모듈 페어링 과정2. 스마트폰과 HC-06 블루투스 모듈 페어링

2. 아두이노와 앱인벤터를 통한 블루투스 모듈 연동

아두이노 , 블루투스 모듈 , 스마트폰과의 연동 동작설명

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

[ 접점식 릴레이 ] [ 비 접점식 릴레이 ]

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

릴레이와 푸쉬버튼을 이용한 AC220V 전등 제어

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

릴레이와 푸쉬버튼을 이용한 AC220V 전등 제어 회로도

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

릴레이와 아두이노를 활용한 AC220V 전등 제어

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

릴레이와 아두이노를 활용한 AC220V 전등 제어 회로도

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

릴레이와 아두이노를 활용한 AC220V 전등 제어 아두이노 코드int light = 9;

void setup() { Serial.begin(9600); pinMode(light, OUTPUT);}

void loop() { if(Serial.available()) { char ind = Serial.read();

if(ind == 'H' || ind == 'h') digitalWrite(light, HIGH); if(ind == 'L' || ind == 'l') digitalWrite(light, LOW); }}

3. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅰ

릴레이와 아두이노를 활용한 AC220V 전등 제어 동작

4. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅱ

릴레이 , 블루투스 , 아두이노를 활용한 AC220V 전등 제어

4. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅱ

릴레이 , 블루투스 , 아두이노를 활용한 AC220V 전등 제어 회로도

4. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅱ

릴레이 , 블루투스 , 아두이노를 활용한 AC220V 전등 제어 아두이노 코드#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2,

3);

// 2 번 :Rx -> HC-06:Tx, // 3 번 :Tx -> HC-06:Rxconst int ledPin = 9;

char indata;

void setup() {

BTSerial.begin(9600);

pinMode(ledPin, OUTPUT);

}

void loop() {

if(BTSerial.available()) {

indata = BTSerial.read();

if(indata == 'H')

digitalWrite(ledPin,

HIGH);

if(indata == 'L')

digitalWrite(ledPin,

LOW);

}

}

4. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅱ

앱인벤터 디자인

4. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅱ

앱인벤터 블럭

4. 아두이노 블루투스 통신을 이용한 릴레이 제어Ⅱ

아두이노 , 블루투스 모듈 , 스마트폰과의 연동 동작설명

5. 아두이노 IoT 통한 LED 제어Ⅰ

5. 아두이노 IoT 통한 LED 제어Ⅰ

https://www.youtube.com/watch?v=deolstthDr4&t=4s

https://www.youtube.com/watch?v=oYLi1eWBUvU

https://www.youtube.com/watch?v=RKT1wsG4BmE

5. 아두이노 IoT 통한 LED 제어Ⅰ

파이선 설치http://www.python.org

5. 아두이노 IoT 통한 LED 제어Ⅰ

파이선 설치

5. 아두이노 IoT 통한 LED 제어Ⅰ

파이선 환경설정[ 제어판 ]-[ 시스템및보안 ]-[ 시스템 ]-[ 설정변경 ]-[ 고급 ]-[ 환경변수 ]-[ 시스템변수 ]의 “ Path" 항목 편집을 클릭하여 "C:\Python27" 추가 입력한다 .

5. 아두이노 IoT 통한 LED 제어Ⅰ

윈도우 커맨드 창

python –m pip install –U pip setuptoolspip 설치시작 – 실행 – cmd 입력

5. 아두이노 IoT 통한 LED 제어Ⅰ

파이선 시리얼 패키지 설치 (pyserial)

python –m pip install pyserial

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노와 파이선 시리얼 통신 : 아두이노 코드void setup() {

Serial.begin(9600);

}

void loop() {

Serial.println("Hello World");

delay(1000);

}

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노와 파이선 시리얼 통신 : 파이선 코드# python 2.7 version

from serial import Serial

ser = Serial('COM6', 9600)

while 1:

print ser.readline()

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노와 파이선 시리얼 통신 : 동작

5. 아두이노 IoT 통한 LED 제어Ⅰ

파이선과 간단한 웹서버 구축 : 파이선 코드# python 2.7 version from BaseHTTPServer import HTTPServer, BaseHTTPRe-questHandler

class MyHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers()

self.wfile.write("Hello world")

if __name__ == '__main__': server = HTTPServer(('',8888), MyHandler) print "Started WebServer on port 8888..." print "Press ^C to quit webserver" server.serve_forever()

5. 아두이노 IoT 통한 LED 제어Ⅰ

파이선과 간단한 웹서버 구축 : 동작

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노 IoT 통신을 활용한 제어 구성도

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노 IoT 통신을 활용한 제어 회로도

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노 IoT 통신을 활용한 제어 : 아두이노 코드int led = 13;

void setup() { Serial.begin(9600);

pinMode(led, OUTPUT);}

void loop() { if(Serial.available()) { char indata = Serial.read(); if(indata == 'H') digitalWrite(led, HIGH); if(indata == 'L') digitalWrite(led, LOW); }}

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노 IoT 통신을 활용한 제어 : 파이선 코드# python 2.7 versionimport BaseHTTPServerfrom serial import Serialser = Serial('COM6')class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler): def do_POST(self): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() length = int(self.headers.getheader('content-length')) data = self.rfile.read(length) print data if data == 'H': ser.write('H') elif data == 'L': ser.write('L') return

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노 IoT 통신을 활용한 제어 : 파이선 코드print('Starting server...')server_address = ('', 9999)server = BaseHTTPServer.HTTPServer(server_address, MyHan-dler)print('Running server...')server.serve_forever()

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노 IoT 통신을 활용한 제어 : 앱인벤터 디자인

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노 IoT 통신을 활용한 제어 : 앱인벤터 블럭

5. 아두이노 IoT 통한 LED 제어Ⅰ

아두이노 IoT 통신을 활용한 제어 : 동작

아두이노 IoT 통신을 활용한 제어 회로도6. 아두이노 IoT 통한 LED 제어Ⅱ

아두이노 IoT 통신을 활용한 제어 : 아두이노 코드int light = 9;

void setup() { Serial.begin(9600); pinMode(light, OUTPUT);}

void loop() { if(Serial.available()) { char indata = Serial.read(); if(indata == 'H') digitalWrite(light, HIGH); if(indata == 'L') digitalWrite(light, LOW); }}

6. 아두이노 IoT 통한 LED 제어Ⅱ

아두이노 IoT 통신을 활용한 제어 : 파이선 코드 3.5 버전6. 아두이노 IoT 통한 LED 제어Ⅱ

# python 3.5 versionfrom http.server import BaseHTTPRequestHandler, HTTPServerfrom serial import Serialser = Serial('COM9')

class MyHandler(BaseHTTPRequestHandler): def do_POST(self): self.send_response(200) self.send_header('Content-type','text/html') self.end_headers() print(self.headers) data=self.rfile.read(1) print(data) ser_data = data.decode() print(ser_data) if ser_data == 'H': ser.write(data) elif ser_data == 'L': ser.write(data) return ()

아두이노 IoT 통신을 활용한 제어 : 파이선 코드 3.5 버전6. 아두이노 IoT 통한 LED 제어Ⅱ

print('starting server...')server_address = ('', 9999)httpd = HTTPServer(server_address, MyHandler)print('running server...')httpd.serve_forever()

아두이노 IoT 통신을 활용한 제어 : 앱인벤터 디자인6. 아두이노 IoT 통한 LED 제어Ⅱ

아두이노 IoT 통신을 활용한 제어 : 앱인벤터 블럭6. 아두이노 IoT 통한 LED 제어Ⅱ

아두이노 IoT 통신을 활용한 제어 : 동작6. 아두이노 IoT 통한 LED 제어Ⅱ