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

Raspberry Pi Zero W/2W - 게임보이 만들기 4 - 샘플 테스트

샘플을 주문하여 PCB 납땜을 하면서 설계하면서 발견하지 아쉬운 점들이 하나 둘 발견되었다. 

첫 번째로 원활한 테스트에 필요한 테스트 포인트 설계를 누락 했다. 
이게 없어서 PCB 도 너무 지저분해졌고 회로 찾아가며 테스트 하는데 너무 많은 시간을 소비했다. 

두 번째로는 디스플레이 백라이트 설계가 완전히 잘못되었다.
지금 생각하면 너무 바보 같은데 회로도 설계시 심볼을 회전하면서 결선이 틀어진 모양이다.
일단 테스트는 백라이트 컨트롤 없이 항상 켜져있도록 만들어두고 테스트를 하였다   

전원부의 경우 예상했던 5.15V 보다 높은 5.18V을 얻게 되었다. 
이 정도의 전압도 사용에 큰 문제가 되지는 않지만 정확한 값을 얻기 위해서는 가변저항을 사용하는 것이 좋아 보인다.

큰 문제는 USB 에 특정 장치들을 연결할 때 발견되었다.
충전이 가능한 제품 중에서 연결하면 무조건 5W 이상을 끌어가도록 설계된 제품들이 있는데 이런 제품들이 문제였다.

TPS61230의 최대 출력은 2.1A 이기 때문에 저방전 배터리를 사용하면 1.2A 이상 끌어가는 상황이 오면 시스템이 불안정해지면서 전원부가 셧다운된다. 

가장 먼저 Raspberry Pi OS 를 설치해보았다.


USB 장치와 microSD 카드도 잘 인식되고 컨트롤러도 잘 인식이 되었다. 구현된 모든 인터페이스는 잘 작동됨을 확인하였다. 사용자의 손길이 필요한 부분은 디스플레이와 오디오 출력 말고는 없어 보인다. RetroPie 의 경우 Wi-Fi 드라이버를 직접 넣어줘야 하지만 그 외에는 Raspberry Pi OS 와 동일하다. RecalBox는 Raspberry Pi OS 와 많이 다르기도 하고 화면 출력과 네트워크 드라이버 부분에 좀 더 연구가 필요하다.

디스플레이는 2.8 인치 ili9341 TFT 를 사용했으며, RetroPie 와Raspberry Pi OS에서 fbcp-ili9341 드라이버를 사용하여 구동 시킬 수 있었다.

fbcp-ili9341 드라이버를 빌드 과정은 다음과 같은 과정이 필요하다. 

sudo apt-get install cmake
cd ~
git clone https://github.com/juj/fbcp-ili9341.git
cd fbcp-ili9341
mkdir build
cd build
sudo cmake -DILI9341=ON -DGPIO_TFT_DATA_CONTROL=24 -DGPIO_TFT_RESET_PIN=25 -DSPI_BUS_CLOCK_DIVISOR=6 ..
make -j
sudo ./fbcp-ili9341
cs

데이터 컨트롤과 리셋 핀은 본인이 사용한 GPIO 넘버로 수정해줘야 정상적으로 동작할 수 있다. 마지막으로 fbcp-ili9341 를 실행하면 곧바로 TFT 에 화면이 출력되는데, 만약 240x320와 같은 세로로 긴 해상도가 16:9 비율로 짜부되어서 나온다면 빌드하기 전에 fbcp-ili9341 폴더에 있는 config.h 파일의 수정이 필요하다.



위 사진과 같이 config.h 파일을 열어보면 화면의 종횡비를 SPI 디스플레이에 맞게 조정할 수 있는 옵션이 있다. 이 부분은 원래 화면비를 유지하기 위해 주석처리 되어있는데 화면을 세로로 설정하는 경우 비율이 깨지기 때문에 주석처리를 지워준 다음 빌드 과정을 거치면 된다.

#define DISPLAY_BREAK_ASPECT_RATIO_WHEN_SCALING
위 지시문의 주석처리를 제거하면 된다.

수정을 마쳤다면 다시 빌드를 진행하고 sudo ./fbcp-ili9341 를 실행 하면 즉시 화면이 출력되는걸 확인할 수 있다. 원하는 결과가 아니라면 빌드 옵션을 수정해서 다시 컴파일 하는 과정을 거치면 된다.

sudo cmake -DILI9341=ON -DGPIO_TFT_DATA_CONTROL=24 -DGPIO_TFT_RESET_PIN=25 -DSPI_BUS_CLOCK_DIVISOR=6 ..
make -j
sudo ./fbcp-ili9341
cs

이제 이 드라이버를 부팅시 자동으로 시작하도록 설정만 해주면 화면이 출력 된다.
다음과 같이 rc.local 파일을 수정해주면 된다. 


수정 사항을 저장하고 재부팅 해주면 이제부터는 모니터 연결이 필요 없어진다.


RetroPie 를 설치해봤는데 Wi-Fi 도 잘되고 화면도 원하는 비율로 출력이 되었다. 디스플레이 터치는 PCB에 구현하지 않았기 때문에 지금은 사용할 수 없는데 다음에 시험적으로 추가해볼 예정이다. 

만약 RetroPie 가 설치된 Raspberry Pi Zero W/2W 에서 Wi-Fi 가 안된다면  Wi-Fi 스캔이 안될때 를 참고하면 도움이 지도 모른다.

Comments

Popular posts from this blog

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

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

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