임베디드시스템개론 : AVR MCU & Arduino 활용 Lecture #15: Bluetooth 통신
강의목차 Bluetooth 개요 Bluetooth Module HC-05/HC-06 Bluetooth Module 설정 AT Commands Blynk Bluetooth를이용한간단 IoT 구현 2
3 1. Bluetooth 개요
Bluetooth 개요 (1) Bluetooth 개요 수미터에서수십미터정도의거리를둔정보기기사이에, 전파를이용해서간단한정보를교환하는데사용 에릭슨인텔, IBM, 노키아, 도시바, 마이크로소프트, 모토로라, 애플, Nordic Semiconductor 총 9 개회사가프로모터기업으로참가 IEEE 에서는규격명 IEEE 802.15.1 으로등재되어있으나, 현재블루투스는 Bluetooth Special Interest Group (SIG) 을통해관리 ISM 대역인 2.45GHz 를사용한다. 버전 1.1 과 1.2 의경우속도가 723.1kbps 에달하며, 버전 2.0 의경우 EDR 을특징으로하는데, 이를통해 2.1Mbps 의속도를지원 암호화에는 SAFER 을사용한다. 장치끼리믿음직한연결을성립하려면키워드를이용한페어링이이루어지는데, 이과정이없는경우도있다. 4
Bluetooth 개요 (2) Bluetooth 개요 2.4 GHz의대역폭사용 1 Mbps Symbol rate 1 MHz씩 79개채널을사용주파수호핑 (Hopping) 방식 1개의채널에서 625micro sec. 만큼씩머물다채널이동 ( 초당 1600회 hopping, 1개의 Timeslot은 625micro sec.) 홉핑순서는자신의 Clock 을통해그순서가정해짐 두기기간통신시에는한쪽 Clock 과동기를맞춤 (TimeSlot 번호의홀 / 짝수에따라서로번갈아전송 ) 5
Bluetooth 개요 (3) Bluetooth 개요 주파수대역 국가 주파수범위 채널수 미국과유럽 2400 2483.5 MHz : (2.400 2.483 GHz) 78 일본 2471 2497 MHz : (2.471 2.497 GHz) 22 스페인 2445 2475 MHz : (2.445 2.475 GHz) 22 프랑스 2466.5 2483.5 MHz : (2.466 2.485 GHz) 22 6
Bluetooth 개요 (4) Bluetooth 개요 7
Bluetooth 개요 (5) Bluetooth 개요 - 버전 8
Bluetooth 개요 (6) Bluetooth Networking 구성형태 피코넷 (Piconet) 과스캐터넷 (Scatternet) 이라는 2 종류의무선접속형태 피코넷은최소단위의네트워크로 1 개의마스터 (Master) 와 7 개의슬레이브 (Slave) 가접속할수있음 Master M/S bridge Slave S/S bridge A B C 9
Bluetooth 개요 (7) Bluetooth Networking 피코넷 (Piconet) 2개또는그이상의기기들이연결되어형성된작은무선네트워크 Pico( 작은 ) + Net( 망 ) = 작은네트워크 Piconet Slave 2 Slave 1 Master 10
Bluetooth 개요 (8) Bluetooth Networking 스캣터넷 (Scatternet) 한개또는그이상의 Piconet 이중복형성된상태에서서로공유할수있는무선네트워크 Scatter( 분산 ) + Net( 망 ) = 분산네트워크 Scatternet Slave 2 Slave 1 Slave 1 Master 11 Master Piconet A Piconet B
Bluetooth 개요 (9) Bluetooth Networking 접속방법 기기간의연결은 Paging 과 Inquiry 절차로이루어진다. 상대방기기의고유주소 (BD_ADDR) 를알경우 Paging 만으로연결이성립되나그렇지않으면 Inquiry 로상대방기기의고유주소를우선확인한후 Paging 으로연결을성립한다. Paging 호출한다는뜻 Inquiry 문의한다는뜻 Page Inquiry 12
Bluetooth 개요 (10) Bluetooth Networking 동기화 각블루투스기기는고유의시스템 clock을갖고있다사용자는시스템 clock을조절할수없다 Piconet의동기화는 Master의시스템 clock에의해이루어진다 Slave는자체시스템 clock을 Master의 clock에일치시킨다 동기화이전 - Master 와 Slave 는각자다른시스템 clock 을갖고있다 13 동기화이후 - Master 와 Slave 의시스템 clock 이같아진다
Bluetooth 개요 (11) Bluetooth Networking 사용자운영모드 (1) Piconet 또는 ScatterNet 에연결된기기들은효율적인전력소모를갖추기위해 4 가지의운영모드를갖는다. 시스템모드 전력소모 Active Mode ( 활성모드 ) : 가장높음 Sniff Mode ( 감시모드 ) : 높음 Hold Mode ( 일시중지모드 ) : 낮음 Park Mode ( 대기모드 ) : 가장낮음 14
Bluetooth 개요 (12) Bluetooth Networking 사용자운영모드 (2) Active Mode : 활성모드 Master Slave 간에이루어지는 Packet 교환을지속적으로감지하는모드 Sniff Mode : 감시모드 정해진시간간격으로 Packet 교환감지하는모드 Hold Mode : 일시중지모드 일정시간동안 ACL Packet 교환이지원되지않도록 Packet 교환감지를일시중지한모드. Park Mode : 대기모드 Slave 의전력소모를최소화하기위한모드 15
Bluetooth 개요 (13) Bluetooth & IoT 16
17 2. Bluetooth Module
Bluetooth Module (1) Bluetooth Module HC-05/HC-06 Low-cost Bluetooth Sub-modules Cambridge Silicon Radio BC417 2.4 GHz Bluetooth Radio chip 사용 UART I/F 지원 3.3V 동작 3.3V 신호레벨입출력 HC-05 - Master or Slave 기능지원, 응용성이높음 HC-06 - Slave 기능만지원 18
Bluetooth Module (2) Bluetooth Module HC-05/HC-06 19
Bluetooth Module (3) Bluetooth Module HC-05/HC-06 Breakout B/D PinOut : KEY: If brought HIGH before power is applied, forces AT Command Setup Mode. LED blinks slowly (2 seconds) VCC: +5 Power GND: System / Arduino Ground TXD: Transmit Serial Data to Arduino Serial Receive(3.3V Level) RXD: Receive Serial Data from Arduino Serial Transmit(3.3V Level) STATE: Tells if connected or not 20
Bluetooth Module (4) Bluetooth Module HC-05/HC-06 Operation Mode Operation Mode Command Mode AT Command를이용하여모듈설정및제어수행 Data Transfer Mode Bluetooth 모듈간에데이터를송수신 Data Transfer Mode Power-on 기본모드 HC-06 : Command Mode, Pairing 후에 Data transfer Mode 로전환 기본통신설정 Baud Rate: 9600 bps, Data : 8 bits, Stop Bits: 1 bit, Parity : None, Handshake: None Passkey: 1234 ( 모듈에따라다름 ) Device Name: HC-05 ( 모듈에따라다름 ) 21
Bluetooth Module (5) Bluetooth Module HC-05/HC-06 Operation Mode Command Mode HC-06 : Power-on 기본모드, Pairing 후에 Data Transfer Mode 로전환 HC-05 Command Mode Setup Method #1: Connect the KEY pin high before applying power to the module put the module into command mode at 38400 baud. This is commonly used, and needed if you don't know the baud rate the module is set to. Method #2: Apply power to the module then pull the KEY pin high. enter command mode at the currently configured baud rate. This is useful if you want to send AT commands from a microcontroller as the KEY pin can be controlled from one of the microcontroller pins. BUT you need to know the currently configured Baud Rate. AT Command 를전송하여통신환경설정및페어링등의동작수행 22
Bluetooth Module (5) Bluetooth Module HC-05/HC-06 Operation Mode Command Mode HC-06 : Power-on 기본모드, Pairing 후에 Data transfer Mode 로전환 HC-05 Command Mode Setup Method #1: Connect the KEY pin high before applying power to the module put the module into command mode at 38400 baud. This is commonly used, and needed if you don't know the baud rate the module is set to. Method #2: Apply power to the module then pull the KEY pin high. enter command mode at the currently configured baud rate. This is useful if you want to send AT commands from a microcontroller as the KEY pin can be controlled from one of the microcontroller pins. BUT you need to know the currently configured Baud Rate. AT Command 를전송하여통신환경설정및페어링등의동작수행 23
24 3. Bluetooth Module 설정
Bluetooth Module 설정 (1) Bluetooth Module 설정 Bluetooth module 을이용하여통신하기전에통신환경에대한설정및페어링동작이필요 Command mode 에서 AT commands 을전송하여수행 주요설정항목 모듈의통신역할 (Role) : Master or Slave 모듈장치이름모듈장치 pin code UART 통신설정 baud rate 등 25
Bluetooth Module 설정 (2) AT Commands Command Format: Always starts with "AT" Then "+" followed by <ParameterName> Then either:? (returns current value of parameter) = (New Value of parameter) Termination Chars: \r\n 예 : AT\r\n AT+VERSION?\r\n AT+PIN=4321\r\n HC-06 에서의예외사항 종료문자 ( \r\n ) 가필요없음 1초안에입력된문자열을명령으로처리파라메터이름과값사이에별도의문자를두지않고연결 26
Bluetooth Module 설정 (3) 주요 AT Commands Master Mode AT+RMAAD : Clear any paired devices AT+ROLE=1 : Set mode to Master AT+RESET : After changing role, reset is required AT+CMODE=0 (Correction!) Allow master to ONLY connect to bound address (slave). This allows the master to automatically connect to the slave when switched on AT+CMODE=1 : Allow connection to any address (I have been told this is wrong and CMODE=1 sets "any address" AT+INQM=0,5,5 : Inquire mode - Standard, stop after 5 devices found or after 5 seconds AT+PSWD=1234 : Set PIN. Should be same as slave device 27
Bluetooth Module 설정 (4) 주요 AT Commands Master Mode AT+INIT : Start Serial Port Profile (SPP) ( If Error(17) returned - ignore as profile already loaded) AT+INQ : Start searching for devices AT+PAIR=<address>,<timeout> : The timeout is in seconds and if you need to type in the pin on the slave device you need to give enough time to do this. AT+BIND=<address> : Set bind address to the slave address AT+LINK=<address> : Connect to slave. 28
Bluetooth Module 설정 (5) 주요 AT Commands Slave Mode AT+ORGL : Reset to defaults AT+RMAAD : Clear any paired devices AT+ROLE=0 : Set mode to SLAVE AT+ADDR : Display SLAVE address AT+NAME: Change name. No space between name and command AT+BAUD: change baud rate, x is baud rate code, no space between command and code AT+PIN: change pin, xxxx is the pin, again, no space AT+VERSION 29
Bluetooth Module 설정 (6) Bluetooth Module 설정실습 HC-06 모듈을연결하여기본설정을확인하고다음항목을설정하도록한다. Baudrate: 38400bps Device Name: SILLA## (##: 장비세트번호 ) Pin Number: 4321 30
Bluetooth Module 설정 (7) Bluetooth Module 설정실습 시스템연결구성 Serial Serial1 31
Bluetooth Module 설정 (8) Bluetooth Module 설정실습 연결회로 32
Bluetooth Module 설정 (9) Bluetooth Module 설정실습 연결회로 RX 입력신호의전압을 5V 에서 3.3V 로전환 33
Bluetooth Module 설정 (10) Bluetooth Module 설정실습 아두이노프로그램 void setup() { Serial.begin(115200); Serial1.begin(9600); // 38400 bps } void loop() { if (Serial1.available()) { Serial.write(Serial1.read()); } } if (Serial.available()) { Serial1.write(Serial.read()); } 34
Bluetooth Module 설정 (11) Bluetooth Module 설정실습 Command Mode 확인 Version 확인 35
Bluetooth Module 설정 (12) Bluetooth Module 설정실습 Baudrate 설정 장치이름설정 36
Bluetooth Module 설정 (13) Bluetooth Module 설정실습 Pin Number 설정 MAC Bluetooth 설정 37 Bluetooth module 을초기화한후에인식됨.
Bluetooth Module 설정 (14) Bluetooth Module 설정실습 38
Bluetooth Module 설정 (15) Bluetooth Module 설정실습 CoolTerm 실행화면 39 Serial port 를재스캔한후에설정 통신포트설정
Bluetooth Module 설정 (16) Bluetooth Module 설정실습 CoolTerm 입력화면 Arduino 출력화면 40
4.Blynk Bluetooth 를이용한간단 IoT 구현 41
Blynk IoT 실습 (1) Blynk 개요 ios 및 Android 앱에서 Arduino, Raspberry Pi 등을제어할수있게지원하는플랫폼 Blynk 앱만설치하면위젯의드래그앤드롭을통해프로젝트의그래픽인터페이스를빠르게생성가능 안드로이드와 ios 모두적용되는앱을퍼블리싱할수있음 42
Blynk IoT 실습 (2) Blynk Application LED Blink & Dimming 스마트폰의 Blynk 앱을이용하여 bluetooth 통신을통해아두이노의 LED 제어 제어동작 LED On/Off LED Dimming 43
Blynk IoT 실습 (3) Blynk Application 회로구성 Bluetooth Module 설정에서사용한회로적용 LED 제어핀을 D2로변경 44
Blynk IoT 실습 (4) Blynk Application 실습과정 1. 스마트폰에 Blynk 앱설치 2. Blynk 앱에서프로젝트생성 계정생성및 Auth Token 생성 3. Blynk 앱인터페이스구성 4. Blynk 아두이노라이브러리설치 5. Blynk 아두이노코드생성 6. 코드수정및추가 7. 코드컴파일및아두이노업로드 8. Blynk 앱위젯의기능추가 9. Blynk 앱에서의아두이노연결 10. Blynk 앱위젯기능테스트 45
Blynk IoT 실습 (5) Blynk Application 실습과정 1. 스마트폰에 Blynk 앱설치 AppStore 에서앱다운로드및설치 2. Blynk 앱에서프로젝트생성 Blynk app 과하드웨어를연결하기위해서는 auth token 이필요 1) Blynk App에새계정을생성 2) 새프로젝트를생성 사용할보드와연결을선택 3) 프로젝트가생성된후이메일을통해인증토큰전송 4) 이메일에서인증토큰을복사 46
Blynk IoT 실습 (6) Blynk Application 실습과정 3. Blynk 앱인터페이스구성 Blynk에서는다양한 UI를제공오른쪽상단에 + 버튼을클릭 Bluetooth, Button, Timer, Slider 위젯설치 47
Blynk IoT 실습 (7) Blynk Application 실습과정 4. Blynk 아두이노라이브러리설치 https://github.com/blynkkk/blynk-library/releases/tag/v0.5.2 http://help.blynk.cc/getting-started-library-auth-token-code-examples/howto-install-blynk-library-for-arduino 48
Blynk IoT 실습 (8) Blynk Application 실습과정 5. Blynk 아두이노코드생성 https://www.blynk.cc/getting-started/ https://examples.blynk.cc/?board=arduino%20mega%202560&shield=hc05% 20or%20HC06&example=GettingStarted%2FGetData 49
Blynk IoT 실습 (9) Blynk Application 실습과정 5. Blynk 아두이노코드생성 50
Blynk IoT 실습 (10) Blynk Application 실습과정 6. 코드수정및추가 Arduino IDE 에서프로젝트생성 앞에서생성된코드를복사하여붙여넣기 구성회로및제어동작을고려하여소스수정 #include <BlynkSimpleSerialBLE.h> //#include <SoftwareSerial.h> // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "YourAuthToken"; 51 //SoftwareSerial SerialBLE(10, 11); // RX, TX #define SerialBLE Serial1 : : void setup() { // Debug console Serial.begin(115200); SerialBLE.begin(38400); Blynk.begin(SerialBLE, auth); pinmode(2, OUTPUT); Serial.println("Waiting for connections..."); }
Blynk IoT 실습 (11) Blynk Application 실습과정 7. Blynk 앱위젯기능수정및아두이노코드추가 : BLYNK_WRITE(V2) { // assigning incoming value from pin V1 to a variable int pinvalue = param.asint(); digitalwrite(2, pinvalue); } Serial.print("V2 button value is: "); Serial.println(pinValue); : 52
Blynk IoT 실습 (12) Blynk Application 실습과정 7. Blynk 앱위젯기능수정및아두이노코드추가 : BLYNK_WRITE(V1) { // assigning incoming value from pin V1 to a variable int pinvalue = param.asint(); digitalwrite(2, map(pinvalue, 0, 100, 0, 255)); } Serial.print("V1 slider value is: "); Serial.println(pinValue); : 53
Blynk IoT 실습 (13) Blynk Application 실습과정 8. 코드컴파일및아두이노업로드 9. Blynk 앱에서의아두이노연결 54
Blynk IoT 실습 (14) Blynk Application 실습과정 10. Blynk 앱위젯기능테스트 오른쪽상단의재생버튼을클릭하여프로젝트실행 프로젝트실행화면의오른쪽상단첫번째버튼 ( 연결버튼 ) 을클릭하여연결상태확인 Online 이출력되면블루투스와연결되었음을의미 블루투스모듈의 LED 깜박임을멈추고켜져있는지확인 버튼및슬라이더위젯을통해 LED 제어 55
Blynk IoT 실습 (15) Blynk Application 실습과정 아두이노동작메시지 56