'master'에 해당되는 글 2건
- 2020.01.17 Hardware | bluetooth 모듈 SPP-C 사용해 보기
- 2020.01.05 Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 2
Bluetooth 모듈에 꽂혀 꽃혀, 한꺼번에 구입한 모듈들의 마지막 모듈인 SPP-C 확인 포스트 입니다.
지금까지 확인해 본 Bluetooth 모듀에 대해서는 아래 글을 참고해 보세요.
* Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 2
- https://chocoball.tistory.com/entry/Hardware-bluetooth-HC06-HC05-2
* Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 1
- https://chocoball.tistory.com/entry/Hardware-bluetooth-HC06-HC05-1
1. SPP-C
이름도 생소한 SPP-C Bluetooth 모듈입니다.
구입처는 아래 링크에서 구입. 일반 모듈 치고는 3천원 정도로 고가네요.
* SPP-C Bluetooth serial pass-through module wireless serial communication from machine Wireless SPPC Replace HC-05 HC-06
- https://www.aliexpress.com/item/32755550889.html
사용된 main chip 은 Beken 이라는 중국 회사 제품 입니다.
* BK3231
SPP-CA HardwareGuide_chn.pdfSPP.pdf
외형은 다음과 같이 생겼어요.
사진에서 볼 수 있 듯, 사용된 breakout board 는 HC-05 / 06 과 동일한 ZS-040 이 사용 되었습니다.
2. 간단 구동
FTDI 로 연결하여 Arduino IDE 의 Serial Monitor 를 통해, AT command 로 상태 확인을 해보겠습니다.
이렇게 계속 LED 가 깜빡이면, AT command mode 라고 하네요.
Paring 이 되면, LED 가 계속 켜져 있습니다.
아래는 간단한 AT command 의 결과 입니다.
HC-05 / 06 과 다른 점은, AT 명령어 끝에 물음표 ( ? ) 를 넣지 않습니다.
AT
ready 상태 확인
AT+RESET
상태 reset
AT+VERSION
firmware version 확인
AT+LADDR
할당된 주소 표시
AT+NAME
기기 확인용 이름 확인하거나 설정
AT+ROLE
Master / Slave 확인하거나 설정
AT+PIN
Paring 시 사용 될 비밀번호 확인하거나 설정
AT+BAUD
Paring 시 사용 될 baud rate 확인하거나 설정
AT+HELP
특이하게 HELP 명령어를 지원합니다. 어떤 명령어들이 준비되어 있는지 알 수 있으니 좋네요.
3. Windows 10 과 연동
HC-05 / 06 에서 했던 OS 와 연동시켜 봅니다.
Windows 10 에서 기기를 찾을 수 있습니다.
Paring 을 위한 password 를 넣습니다. 아까 AT command 로 확인한 "1234" 겠죠?
일반 Bluetooth 기기처럼 쉽게 연결이 됩니다. 장치관리자에서 기기 등록이 완료됩니다.
연결된 Bluetooth 가, 그 모듈이 맞는지 주소도 확인해 봅니다.
Windows 에서는 COM11 로 연결되었군요.
Putty 를 이용해 접근해 봅니다. 초기 Speed Baud rate 는 9600 입니다.
Serial Monitor (FTDI 연결) 와 Putty (Serial) 접속 - 각각 다른 접근을 통해, paring 통신이 가능한지 확인해 봅니다.
서로 연결이 문제없이 되고, 문자 전송으로 통신 연결을 확인 할 수 있습니다.
동영상 첨부합니다.
HC-05/06 과 다른 점은, pairing 연결/해제에 대한 상태 및 상대 주소도 보여줍니다.
Paring 성공
+CONNECTING<<
CONNECTED
Paring 해제
DISC:SUCCESS
+READY
+PAIRABLE
4. Master / Slave 연동 준비
HC-05/06 에서 해 봤던, Master/Slave 연동을 시험해 보기로 합니다.
우선 HC-05/06 에서 통신 속도를 38400 baud rate 로 맞춰서 진행했으니, 동일하게 설정합니다.
AT 명령어는, "AT+BAUD6" 입니다.
Serial Monitor 에서 명령어 실행 후, baud rate 를 바꿔 확인하면, 정상적으로 설정 된 것을 확인.
SPP-C 를 Slave 로 이용시, 가지고 있는 주소를 알아야 Master 에서 직접 연결이 가능하므로, 주소를 따 놓습니다.
그 주소를 HC-05 Master 에 등록해 줍니다.
5. Master / Slave 연동 연결
연결은 한번 해봤던 회로를 그대로 사용.
SPP-C | Arduino Nano ------------------------- TXD | D10 RXD | D11 ------------------------- | POWER ------------------------- VCC | 3.3V GND | GND ------------------------- SWITCH | D2 LED+220Ω | D8 -------------------------
회로도도 동일.
아래와 같이 배선. 얼핏 보기엔 복잡하지만, LED 와 스위치, 그리고 TX/RX 를 연결해 주면 됩니다.
다른 분들은 쉽게 하는것 같은데, arduino 에서 전원을 끌어다 쓰면 정상동작 하지 않았습니다.
외부전원 - MB102 를 사용해야 정상 동작했습니다.
동작 확인 동영상 입니다.
Arduino 에 들어간 소스는 tactile switch 가 눌리면 Master / Slave 에 신호를 보내고,
상대 Slave / Master 에서 신호를 받으면 LED 를 high 로 만드는 소스 입니다.
소스는 이전 포스트인 아래 글에 올려 놨습니다.
* Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 2
- https://chocoball.tistory.com/entry/Hardware-bluetooth-HC06-HC05-2
5. Master / Slave 모드 변경
검색 해보면, SPP-C 에 사용된 BK3231 는 Slave 뿐만 아니라, Master 로도 사용이 가능합니다.
"AT+ROLE1" 명령어로 Master 로 변경되어야 하나, command 결과가 OK 라 할지라도 모드 변경이 되지 않습니다.
메뉴얼을 찾아 봤습니다.
하드웨어적으로 Slave only 가 될 수도 있다고 하네요.
좀더 찾아 봤습니다. BC04-A 이지만, BC04-B 메뉴얼에 보면, PIO(4) 와 PIO(5) 를 이용해서 모드 변경이 가능하다 합니다.
PIO(4) 를 3.3V 에 연결하면 software 변경 모드로 온다 합니다. 이렇게 하면 AT command 로 조정 가능해 보입니다.
그렇게 하면 PIO(5) 는 건들지 않아도 된다고 하네요.
27번핀이 PIO(4) 인 것이군요.
BC04-B Technical specification.pdf
DS_IM130614001_Serial_Port_BLE_Module_Master_Slave_HM-10.pdf
단, 좀 확신을 가질 수 없는게, 명확히 BC04-A 레이아웃에도 적용이 되는지 입니다.
여러 사진들을 찾아 봤으나, BK3231 이 올라간 그림에서 PIO(4) 는 여기닷! 이라고 찍혀 있는 사진이 없었습니다.
이렇게 보면, Pin 구성이 많이 다른것 같기도 하고...
6. 접점 변경
일단 BC04-B 기준으로 접점 조정을 해보기로 합니다.
배를 갈라주고...
저 노란색 화살표의 제일 오른쪽이 PIO(4) 인데, 일단 납땜이 되어 있습니다.
Slave 고정되어 있는 현재의 상태를 변경해줘야 하니, 땜 접점을 없애 주기로 합니다.
열풍기가 있으면 한방이겠지만... ㅠ.ㅠ
토스트기에 넣고 구우면서 핀셋으로 흔들어 봅니다. 효과 없군요.
RX/TX 부분이 가장 멀리 떨어져 있으니, 여기서부터 납 제거 및 보드를 살짝씩 들어 올려서 분리 시도 합니다.
잘 떨어졌는데, 위 사진의 화살표 보이는 것 처럼 동판도 들려버렸습니다. 아...
캡톤 테이프 성애자인 저는, 막아야 할 27 pin 및 혹시라도 접점이 생길것 같은 부분을 커버해 줍니다.
27 pin 을 방어한 체로, 다시 납땜.
그리고 FTDI 에 연결.
반응이 없습니다..............
FTDI 연결 모듈에 들오지 않은 불이 하나 더 들어 옵니다. 어딘가 쇼트가 되었거나 기판 (동판) 이 망가진 듯.
27 pin 을 다시 납땜 해서 접점을 만들어 줘도 동일 현상.
확실하게 망가졌네요. ㅠㅠ
'Hardware' 카테고리의 다른 글
Hardware | 고장난 Arduino Nano 수리기 (0) | 2020.02.16 |
---|---|
Hardware | NICEHCK DB3 이어폰 개봉기 (0) | 2020.01.18 |
Hardware | ebook 크레마 사운드 액정 수리기 - 5 (24) | 2020.01.10 |
Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 2 (0) | 2020.01.05 |
Hardware | Intel NUC5i5RYK 유지보수 (0) | 2020.01.03 |
일전에 구입해 놓은 bluetooth 모듈인, HC-06, HC-05, SPP-C 사용기 2탄 입니다.
첫번째 포스트는 아래 링크를 참고해 보세요.
* Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 1
- https://chocoball.tistory.com/entry/Hardware-bluetooth-HC06-HC05-1
오늘은 master/slave 두 가지 모드를 지원하는 HC-05 에 대해 알아봅니다.
1. Firmware
Wi-Fi 모듈처럼 자체 firmware 를 가지고 있습니다.
Firmware 를 최신버전으로 update 하고 싶었으나, 인터넷에서 찾기는 어렵네요.
HC-05 는 Bluetooth 계열에서는 고가면서 다기능인 RN42 로 업그레이드가 가능하다고 하지만,
저의 PCB 는 불가능한 제품임을 알게 되었습니다.
* Fake HC-05/HC-06 modules with BlueCore3 chips relabeled as BC417
- https://github.com/lorf/csr-spi-ftdi/issues/25
언뜻 튜닝 요소가 많아 보이지만, 요즘 나오는 제품들은 튜닝이 불가능 한것 같습니다.
2. USB 시리얼 연결
궂이 arduino 를 통해서 연결할 필요는 없고, 직접 serial 통신으로 연결합니다.
HC-05 | FTDI ---------------- RX | TX TX | RX ---------------- | POWER ---------------- GND | GND VCC | 3.3V ----------------
Arduino 를 거치지 않더라도 Arduino IDE 를 사용할 수 있습니다.
FTDI 가 연결 된 Port 만 정확하게 선택하면 Serial Monitor 를 이용하여 AT 명령어를 확인해 볼 수 있습니다.
HC-05 가 사용하는 전류량이 많은지라, arduino 나 FTDI 에서 전력을 공급하면 불안정한 모습을 보입니다.
Bluetooth 모듈도 Wi-Fi 모듈과 동일하게, 외부 전원을 이용하는 편이 좋습니다.
실제 연결은 다음과 같습니다.
3. AT mode
HC-05 가 동작하는 mode 는 두 가지가 있습니다. 하나는 보통 mode 이고, 다른 하나는 AT mode.
Normal mode 는 LED 깜빡임이 빠르고, AT mode 는 깜빡임이 느려서 그 구분을 할 수 있습니다.
참고로 설정을 변경할 수 있는 모드가 AT mode 이고, 기본 모드가 아닙니다.
* Normal mode
* AT mode
AT mode 로 들어가는 방법은 두 가지가 있습니다.
EN pin 을 high 로 (전원 연결)
EN pin 에 대해 전원을 연결한 상태로 키면 AT mode 로 진입하게 됩니다.
어떤 제품은 그냥 켰다가, 한번만이라도 EN 에 전원을 인가해 주면 AT mode 로 접근한다 하는데, 제꺼는 처음부터 high 로 놓지 않으면 AT mode 로 진입할 수 없었습니다.
Button 를 누른 상태에서 켜기
위의 화살표 버튼을 누른 상태에서 전원을 인가하면, AT mode 로 동작합니다.
그 뒤에 손을 놔도 그대로 AT mode 를 유지합니다.
4. Command list
HC-06 과 비슷하지만 다른 부분들도 있습니다.
주로 사용하는 command 를 가지고 간단한 설명을 남겨 놓습니다.
AT+VERSION?
firmware 버전에 대해 확인합니다.
비교적 요즈음 구매해서 그런지 "VERSION:3.0-20170601" 라고 뜨네요.
AT+STATE?
커멘드 입력시의 상태를 표시해 줍니다.
"INITIALIZED" ---- initialized status
"READY" ---- ready status
"PAIRABLE" ---- pairable status
"PAIRED" ---- paired status
"INQUIRING" ---- inquiring status
"CONNECTING" ---- connecting status
"CONNECTED" ---- connected status
"DISCONNECTED" ---- disconnected status
"NUKNOW" ---- unknown status
AT+ROLE?
Master 인지 Slave 인지 확인할 수 있습니다. Master 이면 1, Slave 면 0 입니다.
AT+ADDR?
주소 정보를 반환해 줍니다.
AT+NAME?
기기 이름을 설정하거나 알려 줍니다.
AT+PSWD?
비밀번호를 확인할 수 있습니다.
AT+UART?
Serial connect 시에 사용될 속도를 설정/확인 할 수 있습니다.
AT+CMODE?
지정된 기기와 연결 시킬 것인지, 여러 기기와 통신하게 할 지를 정할 수 있습니다.
0 이면, 지정된 기기와의 연결만 가능하고, 1 이면 다른 여러 기기와 연결시킬 수 있는 mode 입니다.
AT+BIND?
연결할 상대 기기 주소 지정.
AT+POLAR?
PIO8 / PIO9 연결 상태에 따른 LED 표시 상태를 정의한다 합니다. 무슨 이야기 인지 하나도 모르겠습니다.
AT+IPSCAN?
IP 스캔할 인터벌과 타이밍을 설정합니다.
AT+SENM?
Safe / Encryption mode 라고 합니다.
AT+ADCN?
인증을 통해 pairing 된 기기의 수를 알려 줍니다.
AT+MRAD?
가장 최근에 인증을 통해 연결된 기기를 보여줍니다.
AT+MPIO?
Multiple port output 이라고 합니다. 무슨 소리인지 모르겠습니다.
AT+CLASS?
디바이스 타이프를 보여 줍니다.
AT+IAC?
Access code 에 GIAC type (General Inquire Access Code : default 는 0x9e8b33) 을 사용.
AT+INQM?
RSSI 모드로 몇 개의 device를 최장 몇 초동안 받아들일지의 설정.
잘 쓰이지 않을 보안과 deep한 설정은 잘 모르겠네요. 기준이 되는 문서를 첨부합니다.
추가로, firmware version 에 따라 명령어가 조금씩 다를 수 있습니다.
HC-0305_serial_module_AT_commamd_set_201104_revised.pdf
5. Slave 모드로 Windows 10 과 연결해 보기
HC-06 을 가지고 놀 때도 했지만, HC-05 이니 한번 더 동일한 방법으로 Windows 10 와 연결 해 봅니다.
인식 후, 연결을 위해 암호를 입력합니다.
특별한 문제 없이 연결 되었습니다.
장치 관리자에서 확인해 보면, Bluetooth 장치에 정상적으로 등록 되었네요.
Putty 로 연결해 보기 위해 COM port 를 확인해 봅니다.
Putty 의 Serial 로 연결해 봅니다.
Putty 에서 키보드로 입력하면, Putty 상에서는 보이지 않지만, Arduino IDE 의 Serial Monitor 에서는 전송된 글씨가 보입니다.
Slave 모드로 Windows 10 에 연결에 문제가 없네요.
6. Master 모드로 Slave 연동 - firmware 설정
마지막으로, HC-05 (Master) 와 HC-06 (Slave) 를 연결하여 통신이 가능한지 확인해 봤습니다.
참고한 사이트와 너tube 정보는 다음과 같아요.
* How to Configure HC-05 Bluetooth Module As Master and Slave Via AT Command
- https://www.instructables.com/id/How-to-Configure-HC-05-Bluetooth-Module-As-Master-/
* Communication between Master HC-05 and Slave HC-05
- https://www.youtube.com/watch?v=mY803K-5WxE
구성품은 arduino / 스위치 / LED 각각 두 개씩 필요하고, Master/Slave 가 될, HC-05 / HC-06 이 필요합니다.
HC-06 Slave 설정
우선 HC-06 Slave 에서 다음과 같이 설정합니다.
- AT+ROLE=0 : Slave 설정
- AT+ADDR? : Master 에 등록하기 위해 address 를 알아 냄
- AT+UART=38400,0,0 : Serial 통신 속도를 38400 으로 맞춤
통신속도를 맞추면, Serial Monitor 의 속도도 새로운 값 - 38400 에 맟줘 줘야 확인이 가능 합니다.
HC-05 Master 설정
그 다음으로, HC-05 Master 는 다음과 같이 설정합니다.
- AT+ROLE=1 : Master 설정
- AT+CMODE=1 : pairing 할 기기를 검색하지 않고, 지정하여 등록. 등록은 아래의 BIND 명령어로 설정.
- AT+BIND=98D3,41,F93341 : 패어링 할 Slave 기기를 지정. (위에서 Slave 의 ADDR 로 확인한 주소 정보)
- AT+UART=38400,0,0 : Serial 통신 속도를 38400 으로 맞춤
최종적으로 BIND 정보를 확인하여, Slave 어드레스가 잘 등록되어 있으면 OK 입니다.
6. Master 모드로 Slave 연동 - arduino 와 연결
Pin 연결은 다음과 같습니다.
HC-05 와 HC-06 의 연결은 Master/Slave 로 기능은 다르나, 연결 방법은 동일합니다.
HC-05/06 | Arduino Nano ------------------------- TXD | D10 RXD | D11 ------------------------- | POWER ------------------------- VCC | 3.3V GND | GND ------------------------- SWITCH | D2 LED+220Ω| D8 -------------------------
회로도를 Fritzing 으로 그려 봤습니다.
최근에 업데이트 된 0.9.4 로 그렸는데, 그림 export 에 버그가 있네요. (점프선에 점선)
실제 구현한 사진 입니다.
주의할 점으로는, Wi-Fi 모듈 연결 시험 했을때와 동일하게, Bluetooth 모듈도 추가 전원으로 연결해야 원활한 확인이 가능 합니다.
Arduino 로부터 빼서 사용하는 전원은 충분치 못하여 불안정한 동작을 보입니다.
위의 사진 오른쪽 밑에 있는 것이 추가 전원입니다.
Arduino 에 써넣을 sketch 는 다음과 같습니다.
Master Source
//this is master #include "SoftwareSerial.h" SoftwareSerial BTSerial(10, 11); int state = 0; const int ledPin = 8; const int buttonPin = 2; int buttonState = 1; void setup() { BTSerial.begin(38400); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); pinMode(buttonPin, INPUT); digitalWrite(buttonPin, HIGH); } void loop() { if(BTSerial.available() > 0) { // Checks whether data is comming from the serial port state = BTSerial.read(); // Reads the data from the serial port } // Controlling the LED buttonState = digitalRead(buttonPin); if (buttonState == LOW) { BTSerial.write('1'); } else { BTSerial.write('0'); } if (state == '1') { digitalWrite(ledPin, HIGH); // LED ON state = 0; } else if (state == '0') { digitalWrite(ledPin, LOW); // LED ON state = 0; } }
Slave Source
//this is slave #include "SoftwareSerial.h" SoftwareSerial BTSerial(10, 11); int state = 0; const int led = 8; const int button = 2; int buttonstate = 1; void setup() { BTSerial.begin(38400); pinMode(led, OUTPUT); digitalWrite(led, LOW); pinMode(button, INPUT); digitalWrite(button, HIGH); } void loop() { if(BTSerial.available() > 0) { // Checks whether data is comming from the serial port state = BTSerial.read(); // Reads the data from the serial port } // Reading the button buttonstate = digitalRead(button); if (buttonstate == LOW) { BTSerial.write('1'); // Sends '1' to the master to turn on LED } else { BTSerial.write('0'); } if (state == '1') { digitalWrite(led, HIGH); // LED ON state = 0; } else if (state == '0') { digitalWrite(led, LOW); // LED ON state = 0; } }
여기까지 오면 모든 준비는 다 되었습니다.
7. Master 모드로 Slave 연동 - 확인
HC-05 (Master) 와 HC-06 (Slave) 끼리의 연동 통신을 위해 서로 LED 가 깜빡거리다 연결 됩니다.
Arduino 소스 및 회로에서 구성한 대로,
Master 의 스위치를 누르면, Slave 쪽의 LED 가 켜지고, Slave 의 스위치를 누르면, Master 쪽의 LED 가 점등하는 것을 알 수 있습니다.
문제 없이 서로 통신하고 있다는 것을 LED 점등으로 확인 할 수 있습니다.
8. SPP-C 연동
다음 편에서는 SPP-C 확인을 해보도록 하겠습니다.
'Hardware' 카테고리의 다른 글
Hardware | bluetooth 모듈 SPP-C 사용해 보기 (0) | 2020.01.17 |
---|---|
Hardware | ebook 크레마 사운드 액정 수리기 - 5 (24) | 2020.01.10 |
Hardware | Intel NUC5i5RYK 유지보수 (0) | 2020.01.03 |
Hardware | PCB 세척용 IPA 와 토출기 (0) | 2020.01.02 |
Hardware | ebook 크레마 사운드업 액정 수리기 - 4 (0) | 2019.12.31 |