[Python] - 블루투스 모듈 HC-06의 MAC 주소를 이용하여 통신 포트 찾기

BlunoBeetle 버전의 경우는 BlunoBeetle(피버시노) 과 BlunoLink(PC쪽 수신기) 가 무선을 해결해 주었기 때문에 PC가 직접 블루투스로 연결되지 않았다. 게다가 BlunoLink 의 시리얼 넘버도 한 자리로 잡혔었기 때문에 반쪽짜리 성공이였다. 하지만 지난번에 만든 블루투스 모듈(HC-06)을 이용한 피버시노는 PC와 직접 블루투스로 연결된다. 초기 버전의 피버시노가 시리얼 넘버를 이용하여 통신포트를 찾았다면 이번에는 블루투스 장치의 MAC 주소를 이용하여 통신 포트를 찾아 보려고 한다.


  • HC-06의 MAC 주소 알아내기
우선 블루투스 모듈의 MAC 주소를 알아내야한다.
MAC 주소는 생각보다 어렵지 않게 알아낼 수 있는데 바로 장치관리자에서 알아낼 수 있다.
이 방법 말고도 파이썬을 이용해서 알아내는 방법도 있다. 하지만 파이썬에서는 뭐가 MAC주소인지 알기 어려우니 장치관리자에서 알아보는 것이 좋다.


HC-06을 PC에 설치한 후 장치관리자에 보면 위와같이 2개의 직렬 포트가 열린것을 확인 할수 있다. 각각 송신과 수신이라고 보면 된다. 간혹 장치를 제거하고 재연결 했을때 두 포트의 역활이 바뀌는 경우도 있다. 재미있는건 한 포트에서만 MAC주소가 검출된다는 것이다.

내 경우에는 COM7으로 부터 아두이노의 시리얼 신호를 수신하는데, 바로 이 수신 포트만 MAC 주소를 가지고 있다. 참고로 HC-06의 패스워드는 "1234" 이다.


해당 포트의 속성 > 자세히 > Bluetooth Device Address 로 이동하면 나오는 값이 MAC주소이다. 뭔가 의심스러운 사람은 스마트폰과 연결해보면 쉽게 확인 할 수 있다.

아래 사진은 스마트폰에서 잡히는 MAC 주소이다.





  • MAC 주소를 이용해 HC-06 통신 포트 찾기
장치관리자나 파이썬을 이용해 hwid(하드웨어ID) 를 찾아보면 다음과 같은 값을 확인 할 수 있다. 한 가지 아쉬운 점 이라면 파이썬에서 장치의 통신포트 정보만 이용하여 MAC 주소값만 뽑아올 수 있으면 좋겠지만 구현이 안되어 있는 것 같다.

[BTHENUM\{00001101-0000-1000-8000-00805F9B34FB}_LOCALMFG&0002\7&239BBA68&0&201807130C23_C00000000] 

이 값은 HC-06 모듈의 하드웨어 ID 인데 마지막 부분에 MAC 주소가 나와있다. 즉, hwid를 이용하면 MAC 주소로 통신 포트를 찾을 수 있다.

import serial.tools.list_ports 
def macAddfinder():
    
    dev = serial.tools.list_ports.comports()
    port=[]
    for com in dev:
            port.append((com.device, com.hwid))
    macAddress = "201807130C23"
    for device in port:
        if macAddress in device[1]:
            result= str(device[0])
            
    print("\nBluetooth MAC Address is [" + macAddress + "]\nDevice detected serial ports:")
    
    return result
          
if __name__ == '__main__':
    print("-> Port is [" + macAddfinder() + "]")
cs
이제 이 함수를 피버시노 파이썬 코드에 넣어주면 된다.
프로그램이 조금 느려졌다. 해결방법으로 지금은 알수 없지만 MAC 주소를 이용한 새로운 탐색 방법 이나, 최초 실행시 정보를 기록하여 다음 실행시 우선 참조하도록 하는 방법이 있다.

소스코드

Comments

Popular posts from this blog

[POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

[Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결

[XBOX] - 엑스박스원s 패드 and 블루투스 자동연결 for PC

[Raspberry Pi] - rc카 만들기 #2 Servo Motor