LoRa 모듈 E22-900T22S Breakout Board 설계 2

Image
지난번 설계 에서 두 가지 업데이트 사항이 있다. 첫 번째로 3.3V 로 로직 컨버터를 거치지 않고 직접 통신할수 있는 포트를 구성하였다.  이 포트를 통해 3.3V 동작의 MCU를 사용할때 좀 더 빠르게 회로를 구성  할수 있을것으로 기대한다. 두 번째로 동작 전압 레벨이 서로 다른 MCU 와 Lora 모듈이 통신할때 사용할 기준전압을 직접 인가 할 수 있도록 하였다. 보드에는 위 와같은 점퍼가 주어지는데 3.3V 나 5V 로 점프 시키지 않을 경우 VREF 핀에 사용할 소스전압을 직접 인가해 주어야한다. 특수한 경우가 아니라면 Vref를 사용하는일은 없을것 같다. 위사 진들은 이번에 제작한 테스트 모듈이다.  왼쪽은 E22-900T22S 모듈이고 오른쪽은 ATmega328P/PB 3.3V 8Mhz 보드를 준비했다. 오른쪽의 보드는 ATmega328P/PB 를 모두 장착하여 사용할 수 있도록 설계했다. E22-900T22S 보드의 전체 회로는 다음과 같다. 동작 전압 레벨이 서로 다른 장치와 통신 할 수 있도록 레벨 컨버터를 추가 하였고, 핀 헤더를 장착하여 다른 MCU 보드와 통신하거나 점퍼를 수정해서 USB 시리얼 통신을 할수 있도록 했다. 모듈의 테스트는 mischianti의 E22 라이브러리 를 사용했다. 정리가 아주 잘 되어있는 라이브러리로 생각된다. 아래 코드는 라이브러리에 포함된 시리얼 입력을 LoRa 통신으로 전송하는 예제이다. Lora ATmega328p AUX D3 RX D4 TX D5 M1 D6/GND M0 D7/GND 송신측 코드 #include "Arduino.h" #include "LoRa_E22.h" LoRa_E22 e22ttl(4, 5, 3, 7, 6); void setup() { Serial.begin(9600); delay(500); // Startup all pins and UART e22ttl.begin(); Serial.println(&q

[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 블루투스 연결