임베디드시스템 Lecture #15 : 무선통신 - Bluetooth 통신
강의목차 1. Bluetooth 개요 2. Bluetooth Module 설정 3. Bluetooth 통신응용 2
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 을사용한다. 장치끼리믿음직한연결을성립하려면키워드를이용한페어링이이루어지는데, 이과정이없는경우도있다. 3
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 번호의홀 / 짝수에따라서로번갈아전송 ) 4
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 5
Bluetooth 개요 (4) Bluetooth 개요 6
Bluetooth 개요 (5) Bluetooth 개요 - 버전 7
Bluetooth 개요 (6) Bluetooth Networking 구성형태 피코넷 (Piconet) 과스캐터넷 (Scatternet) 이라는 2 종류의무선접속형태 피코넷은최소단위의네트워크로 1 개의마스터 (Master) 와 7 개의슬레이브 (Slave) 가접속할수있음 Master M/S bridge Slave S/S bridge A B C 8
Bluetooth 개요 (7) Bluetooth Networking 피코넷 (Piconet) 2 개또는그이상의기기들이연결되어형성된작은무선네트워크 Pico( 작은 ) + Net( 망 ) = 작은네트워크 Piconet Slave 2 Slave 1 Master 9
Bluetooth 개요 (8) Bluetooth Networking 스캣터넷 (Scatternet) 한개또는그이상의 Piconet 이중복형성된상태에서서로공유할수있는무선네트워크 Scatter( 분산 ) + Net( 망 ) = 분산네트워크 Scatternet Slave 2 Slave 1 Slave 1 Master 10 Master Piconet A Piconet B
Bluetooth 개요 (9) Bluetooth Networking 접속방법 기기간의연결은 Paging 과 Inquiry 절차로이루어진다. 상대방기기의고유주소 (BD_ADDR) 를알경우 Paging 만으로연결이성립되나그렇지않으면 Inquiry 로상대방기기의고유주소를우선확인한후 Paging 으로연결을성립한다. Paging 호출한다는뜻 Inquiry 문의한다는뜻 Page Inquiry 11
Bluetooth 개요 (10) Bluetooth Networking 동기화 각블루투스기기는고유의시스템 clock 을갖고있다 사용자는시스템 clock 을조절할수없다 Piconet의동기화는 Master의시스템 clock에의해이루어진다 Slave는자체시스템 clock을 Master의 clock에일치시킨다 동기화이전 - Master 와 Slave 는각자다른시스템 clock 을갖고있다 12 동기화이후 - Master 와 Slave 의시스템 clock 이같아진다
Bluetooth 개요 (11) Bluetooth Networking 사용자운영모드 (1) Piconet 또는 ScatterNet 에연결된기기들은효율적인전력소모를갖추기위해 4 가지의운영모드를갖는다. 시스템모드 전력소모 Active Mode ( 활성모드 ) : 가장높음 Sniff Mode ( 감시모드 ) : 높음 Hold Mode ( 일시중지모드 ) : 낮음 Park Mode ( 대기모드 ) : 가장낮음 13
Bluetooth 개요 (12) Bluetooth Networking 사용자운영모드 (2) Active Mode : 활성모드 Master Slave간에이루어지는 Packet 교환을지속적으로감지하는모드 Sniff Mode : 감시모드 정해진시간간격으로 Packet 교환감지하는모드 Hold Mode : 일시중지모드 일정시간동안 ACL Packet 교환이지원되지않도록 Packet 교환감지를일시중지한모드. Park Mode : 대기모드 Slave의전력소모를최소화하기위한모드 14
Bluetooth 개요 (13) Bluetooth & IoT 15
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 Serial I/F 지원 3.3V 동작 3.3V 신호레벨입출력 HC-05 Master or Slave 기능지원, 응용성이높음 HC-06 Slave 기능만지원 16
Bluetooth Module (2) Bluetooth Module HC-05/HC-06 17
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 18
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 ( 모듈에따라다름 ) 19
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 를전송하여통신환경설정및페어링등의동작수행 20
Bluetooth Module (6) Bluetooth Module HC-05 연결회로 21
Bluetooth Module 설정 (1) Bluetooth Module 설정 Bluetooth module 을이용하여통신하기전에통신환경에대한설정및페어링동작이필요 Command mode 에서 AT commands 을전송하여수행 주요설정항목 모듈의통신역할 (Role) : Master or Slave 모듈장치이름모듈장치 pin code UART 통신설정 baud rate 등 22
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초안에입력된문자열을명령으로처리파라메터이름과값사이에별도의문자를두지않고연결 23
Bluetooth Module 설정 (3) 주요 AT Commands Ref. Site: https://www.teachmemicro.com/hc-05-bluetooth-command-list/# 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 24
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. 25
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 26
Bluetooth Module 설정 (6) Bluetooth Module 설정실습 HC-05 모듈을연결하여기본설정을확인하고다음항목을설정하도록한다. Baudrate: 38400bps Device Name: SILLA## (##: 장비세트번호 ) Pin Number: 1234 27
Bluetooth Module 설정 (7) Bluetooth Module 설정실습 시스템연결구성 Terminal Program Serial Serial1 28
Bluetooth Module 설정 (8) Bluetooth Module 설정실습 실습개요 AT Commnad 를이용하여 HC-05 블루투스모듈의통신파라미터를설정한다. 프로젝트생성 프로젝트이름 : multi_serial_comm Nucleo_mbed_template 폴더를복사 폴더이름 32_multi_serial_comm, 프로젝트설정파일이름 multi_serial_comm 29
Bluetooth Module 설정 (9) Bluetooth Module 설정실습 구현 프로그램소스 main.cpp #include "mbed.h" Serial pc(usbtx, USBRX); Serial bt(pa_11, PA_12); int main() { pc.baud(115200); bt.baud(9600); // initial baudrate: 9600 // bt.baud(38400); while(1) { while (pc.readable()) { int c = pc.getc(); bt.putc(c); // pc.putc(c); // for echo to PC } 30
Bluetooth Module 설정 (10) Bluetooth Module 설정실습 구현 프로그램소스 main.cpp } } while (bt.readable()) { pc.putc(bt.getc()); } 31
Bluetooth Module 설정 (11) Bluetooth Module 설정실습 블루투스모듈설정 Tera-Term 터미널설정 32
Bluetooth Module 설정 (12) Bluetooth Module 설정실습 블루투스모듈설정 통신파라미터설정 MCU 프로그램에서블루투스 baudrate 를 38400 으로변경필요 33
Bluetooth Module 설정 (14) Bluetooth Module 설정실습 메시지전송테스트 34
Bluetooth 통신응용 (1) Bluetooth 통신응용실습 실습개요 블루투스연결을통해스마트폰에서 LED on/off 를제어하도록한다. 프로젝트생성 프로젝트이름 : bt_comm_test Nucleo_mbed_template 폴더를복사 폴더이름 33_bt_comm_test, 프로젝트설정파일이름 bt_comm_test 35
Bluetooth 통신응용 (2) Bluetooth 통신응용실습 구현 프로그램소스 main.cpp #include "mbed.h" Serial pc(serial_tx, SERIAL_RX); Serial bt(pa_11, PA_12); DigitalOut myled(pa_13); int main() { pc.baud(115200); bt.baud(38400); //prints data on mobile bt.printf("connection Established"); //print data on pc terminal pc.printf("connection Established"); 36
Bluetooth 통신응용 (3) Bluetooth 통신응용실습 구현 프로그램소스 while(1) { // For reading and writing data from/to bluetooth HC-06, check // if bluetooth is readable and execute commands to toggle LED if (bt.readable()) { char input_key= bt.putc(bt.getc()); //tutn on LED if "y" is entered if(input_key == 'y') { myled = 1; bt.printf("led is ON"); } //tutn on LED if "n" is entered if(input_key == 'n') { myled = 0; bt.printf("led is OFF"); } } 37
Bluetooth 통신응용 (4) Bluetooth 통신응용실습 구현 프로그램소스 } } } //For reading and writing data from/to pc terminal //check if pc is readable and execute commands to toggle LED if (pc.readable()) { char input_key= pc.putc(pc.getc()); if(input_key == 'y') { myled = 1; pc.printf("led is ON"); } if(input_key == 'n') { myled = 0; pc.printf("led is OFF"); } 38
Bluetooth 통신응용 (5) Bluetooth 통신응용실습 테스트 프로그램을빌드한후에다운로드한다. 스마트폰앱을실행하고블루투스를연결한다. 스마트폰앱에서메시지를전송하여 LED on/off 를제어한다. 39