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(...

[macOS] - 맥의 화면을 회전해보자 (programmatic way)

피버시노를 만들고나서 다른 OS에서도 사용하기위한 준비를 하고있다.
예전에 들었던 소문 중에 Macbook을 태블릿PC 로 모딩해주는 모드북이 있어 알아보던 중 macOS  에서 프로그램 방식으로 디스플레이 화면을 회전시킬 수 있는 fb-rotate을 발견했다.

#macOS 환경에서의 디스플레이 로테이션.

macOS 환경에서 디스플레이 회전은 iPad 처럼 작동하지 않는다. (애니메이션 효과 X) 심지어 Windows만큼 빠릿한 경험을 제공해주지도 않는다.

화면 회전 할 때마다 다른 모니터들까지 깜빡이면서 기본 설정으로 원복이 되는데, 만약 해당 모니터의 기본 설정이 맥에서 사용 할 수 없는 경우에는 화면이 출력되지 않는 당황스러운 문제도 발생한다.
(macOS에서 사용 할 수 없는 주사율의 모니터일 경우 블랙스크린이된다.)

이런 상황의 사용자는 모든 방향으로 한번씩 회전 시켜서 커스텀 설정을 저장해줄 필요가있다.
한번만 해주면 로테이션 값이 바뀌어도 그대로 유지가 된다.

2대의 모니터를 사용하는 Windows의 경우 평소와 다른 순서로 모니터가 연결되면 2번모니터와 1번모니터를 혼동하여 비정상적인 작동을 보여주었는데 macOS 에서는 이런방식 덕분인지 그런 문제는 발생하지 않았다. 단점 같지만 장점이 되기도 한다.


macOS는 com.apple.windowserver.plist에 모든 상황의 유저 설정 리스트를 따로 만들어 관리한다.
나는 Windows가 어떻게 모니터 설정 리스트를 관리하는진 모른다.
하지만 추측해보건데 이런식으로 관리하진 않는것 같다.
그랬으면 프로그램에서 주 모니터와 보조 모니터를 혼동하는 일이 발생하지 않았을 것이다.

#시작하기전 컴파일은 반드시 해주어야한다.

1. 모니터 리스트 : fb-rotate -l 
현재 사용중인 모니터의 리스트를 보여준다.
$ ./fb-rotate -l Display ID       Resolution 0x5809d1c2       2560x1440                  [main display] 0x745e1a47       1080x1920   


2. 모니터 정보 : fb-rotate -i
재미있는건 마우스 커서위치까지 알려준다.
 com.apple.windowserver.plist와 다르게 fb-rotate는 항상 최신정보를 보여준다.
$ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1080x1920  -1080     0     0  1920     90    Mouse Cursor Position:  (  1455 ,  1200 )


3. 모니터 회전 : fb-rotate -d (디스플레이) -r (각도)
(디스플레이)에는 번호나 디스플레이 ID 를 넣어주어도 된다.
$./fb-rotate -d 0x745e1a47 -r 0 $ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1920x1080  -1920     0     0  1080      0    Mouse Cursor Position:  (  1510 ,  1122 ) $ ./fb-rotate -d 0x745e1a47 -r 90 $ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1080x1920  -1080     0     0  1920     90    Mouse Cursor Position:  (  1510 ,  1122 )


4. 주 모니터 변경 : fb-rotate -d (디스플레이) -m
(디스플레이)를 주 모니터로 변경해준다.
$./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1080x1920  -1080     0     0  1920     90    Mouse Cursor Position:  (  2088 ,  1068 ) $ ./fb-rotate -d 0x745e1a47 -m $ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x745e1a47    1080x1920      0     0  1080  1920     90    [main] 1  0x5809d1c2    2560x1440   1080     0  3640  1440      0    Mouse Cursor Position:  (  2088 ,  1068 ) $ ./fb-rotate -d 0x5809d1c2 -m $ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1080x1920  -1080     0     0  1920     90    Mouse Cursor Position:  (  2059 ,  1186 )


이번 목표는 프로그램 소스들을 활용해서 피버시노가 macOS에서도 작동 할 수 있게 하는 것 이다.
이 와 비슷 한 프로그램으로 displayplacer가 있다.

Comments

Popular posts from this blog

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

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

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