샘플을 주문하여 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 드라이버를 사용하여 구동 시킬 수 있었다.
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
Post a Comment
좋은하루되세요. ^^