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

[피버시노] - 피버시노 문제점 해결방향 (피버시노 v.1.1.2)

떠오르는 문제를 나열 해보았다.
  • 지금까지 발견된 문제점
  1. 모니터가 유휴상태에서 복귀하거나 전원 상태에 따른 모니터 회면상태 채크가 필요하다.
  2. 시리얼 포트가 바뀌면 프로그램의 코드를 직접 변경해주어야 사용가능하다.
  3. 전원 공급원에 대한 새로운 방법이 필요하다. 

1번의 경우 큰 문제없이 해결 할 수 있다.

2번의 경우 자동으로 아두이노가 연결된 포트를 찾을 수 있어야 한다.
각각의 블루투스 모듈을 사용해 아두이노 끼리 통신을 하고 수신을 받은 아두이노 쪽에서 PC와 유선 통신으로 작동하는 방식이라면 문제가 없다.


"툴" -> "보드정보"를 보면 이렇게 시리얼 넘버를 알 수 있다.
VID와 PID도 있지만 목적은 특정 장비만 찾는것이기에 적합하지 않다.
시리얼 넘버는 "장치관리자"에서도 찾을 수 있다.

다음 소스 코드를 확인해보자
import serial.tools.list_ports
def findTo(serial_number):
    for arduino in serial.tools.list_ports.comports():
        if arduino.serial_number == serial_number:
            return (arduino.device)
    raise IOError("There was no such thing.")
        
sn = findTo('95635333530351F0A060')
print("The device you are looking for " + str(sn))
cs
serial.tools.list_ports.comports()는 시리얼 포트에 연결된 디바이스 리스트를 보여준다.
findTo(serial_number) 함수는 리스트에 있는 디바이스 중 동일한 시리얼 넘버를 가진 디바이스를 찾아 반환해준다.


return arduino는 찾고 있는 포트를 "COM9 - USB 직렬 장치(COM9)"릐 형태로 가져온다.
COM9 만 가져오려면 arduino.device 혹은 arduino[0]로 반환하면된다.

그러나 여기서 문제가 발생했다.


사용하고 있는장비 BlunoLink는 무선 통신 모드라 그런지 시리얼 넘버를 알 수 없었고, 이로 인해 포트 탐색시 어느 포트에 해당 장비가 물려있는지 알아내는데 어려움이 발생했다.
아주 좋은 방법이지만 BlunoLink에서는 사용할수 없었다.

3번 전원 공급은 주 모니터에서 전원을 공급받을 수 있는 방법 없기때문에 2번 모니터의 MHL포트로 부터 전원공급을 받고 있다. 배터리를 사용하는 방법도 있지만 휴대성이 필요한 장비도 아니고 충전 자체가 번거로울 것이라 생각된다. 모니터 공급 전원을 같이 쓴다거나 일반적으로 사용하지 않는 DP포트의 20번 핀을 따와서 사용하는 방법을 생각하고있다.

2번이 가장 오래걸릴 것으로 보인다.
좀더 알아보면 내가 생각지못한 무언가 나오겠지...


  • 업데이트 버전
=====================================================
피버시노 v1.0
피버시노 v1.1
피버시노 v1.1.1
피버시노 v1.1.2
피버시노 v1.1.3

Comments

Popular posts from this blog

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

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

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