알리익스프레스에서 구입한 실드에 핀헤더를 납땜하였다. 보드 아랫쪽에는 핀 설명이 인쇄되어 있지만 윗쪽 7개 핀은 그렇지 않다.
LCD 및 저항 사다리를 통한 버튼 스위치(4개 방향키 + OK + Reset = 6개)를 위해 쓰인 핀을 제외하면 A1-A5, D0, D1, D2, D3, D11, D12 그리고 D13을 I/O 용도로 사용할 수 있다. 버튼 누름 신호는 A0을 통해 입력된다.
이 실드의 작동 테스트용 코드는 여기에서 입수하였다. Arduino IDE 2.3.8에서 업로드하니 잘 작동하였다.
Sketch uses 2344 bytes (7%) of program storage space. Maximum is 32256 bytes. Global variables use 167 bytes (8%) of dynamic memory, leaving 1881 bytes for local variables. Maximum is 2048 bytes.
간단한 파이썬 스크립트(pi_button_monitory.py)를 이용하여 Pi가 UNO에게 보내는 메시지를 UNO가 1602 LCD에 표시하도록 하고, 반대로 UNO의 버튼 입력을 Pi의 터미널 창에 표시하게 하였다(SELECT 버튼의 long press 포함). 가급적 TFT-LCD에서 많은 상태 정보를 표시하고 싶었으나, SSH가 끊어지거나 또는 전혀 반응하지 않는 일이 생겨서 일단 TFT-LCD는 쓰지 않고 개발을 이어가기로 하였다. TFT-LCD를 쓰지 않으니 SSH가 끊어지는 일은 발생하지 않았다.
몇 가지 해결해야 할 문제가 있다.
ls -l /dev/serial/by-id/ usb-Arduino__www.arduino.cc__Arduino_Uno_123456-if00 -> ../../ttyACM1 # Python 코드 안에서 다음과 같이 포트 지정 PORT = "/dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Uno_123456-if00"
이번 개발 과정과 관련한 ChatGPT 대화 기록.
USB audio interface(Behringer UCA 200)과 USB MIDI keyboard controller(Akai MPK Mini MkII)를 연결한 상태에서 라즈베리파이를 부팅한 뒤 fluidardule_state_stage7c_autodac_bootsafe.py를 실행하면 다음을 순차적으로 실행한다.
현재 아두이노 UNO에는 1602 LCD + 키패드 모듈과 pot만 연결된 상태이다. Select 버튼을 길게 누르면 halt/reboot 메뉴로 들어가며, 이 기능이 잘 작동하는 것까지 확인하였다.
로터리 인코더와 3개의 LED를 연결하였다. 회로는 이것 이상으로 달라지지 않을 것이다. 이 사진에서는 보이지 않았지만, Mackie Onyx Producer 2-2 오디오 인터페이스까지 포함해야 Fluid Ardule이라고 부를 수 있다.
2026년 4월 4일, 조작성을 높이기 위해서 I2C 2004 LCD 모듈과 별도의 5버튼 키패드를 달았다. 키패드의 저항 조건을 알아내고 인코더 동작을 안정화하느라 약간 어려움이 있었다. 모든 부품을 나무판 위에 임시로 고정하였다.
2026년 3월 27일 버전에서는 부팅 후 systemd에 의해서 다음의 두 서비스가 자동적으로 실행된다.
tft-splash.service # 부팅 시 TFT-LCD에 스플래시 이미지를 띄움 fluid_ardule.service
설정 파일은 /etc/systemd/system에 있다. 하지만 이것은 실행 파일이 아니라 설정 파일이다. 실제 각 서비스가 불러오는 스크립트는 /home/pi/scripts에 존재한다(tft-splash.sh, launch_fluidardule.py).
인코더 작동 등 앞으로 추가해 나갈 스크립트 테스트할 때에는 fluid_ardule.service를 끈 상태에서 하는 것이 좋다. 스플래시 이미지는 그대로 두자.
sudo systemctl stop fluid_ardule.service # 즉시 멈춤 sudo systemctl disable fluid_ardule.service # 재부팅 후에도 작동하지 않게 함
systemd 서비스 스크립트를 변경한 경우 'sudo systemctl daemon-reload'를 실행해야 한다.