사용 OS: Raspberry Pi OS (Bookworm)
사용 보드: Raspberry Pi 5B
안드로이드 핸드폰 핫스팟을 사용하는 경우 → 핫스팟 설정 화면에서 연결된 기기의 IP 확인 가능
연결한 후, PC의 cmd 또는 PowerShell 등에서 라즈베리파이와 접속``` ssh 유저이름@IP주소 ```
해당 부분은 민규의_개발일지라는 분의 게시물을 많이 참고하였다.
(https://supersfel.tistory.com/entry/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B4%EC%99%80-%ED%94%BD%EC%8A%A4%ED%98%B8%ED%81%AC-%EC%97%B0%EB%8F%99-pixhawk-248)
Raspberry Pi 5 (Bookworm) 기준으로 달라진 부분 위주로 정리
mkdir [프로젝트폴더]
cd [프로젝트 폴더]
python3 -m venv --system-site-packages [env이름]
source [env 이름]/bin/activate
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-pip
sudo apt-get install python3-dev
pip install future
pip install pyserial
pip install dronekit
pip install MAVProxy
sudo apt update
sudo apt install python3-wxgtk4.0
pip install lxml
3-1. raspi-config 실행
suro raspi-config
Serial Interface 활성화
3-2. 포트 확인
ls /dev/ttyAMA0
출력이 나오면 성공
3-3. Bluetooth 비활성화 (UART 확보)
그 후 config 파일에서 블루투스 하드웨어를 비활성화하여 UART 시리얼 포트를 확보할 수 있도록 코드를 한 줄 추가해준다.
이는 기본적으로 블루투스가 사용하고 있던 고성능 하드웨어 UART를 사용자가 GPIO 14, 15 핀을 통해 시리얼 통신 등의 다른 용도로 사용할 수 있게 해준다.
다만, 라즈베리파이 5B의 os인 bookworm부터는 config 파일의 경로가 변경되었다.
/boot/config.txt → /boot/firmware/config.txt

파일 수정:
sudo nano /boot/firmware/config.txt
맨 아래에 enable_uart=1로 포트가 열려있는지 확인하고 그 밑에 코드를 한 줄 추가
dtoverlay=disable-bt

그 후 저장하여 파일을 닫고 재부팅 해준다.

제품은 팰콘샵에서 라즈베리파이-픽스호크 연결 선을 구매하여 연결하였다.
(https://www.falconshop.co.kr/shop/goods/goods_view.php?goodsno=100086979)
전원 선을 꼭꼭꼭 잘 확인하여 상황에 맞게 사용하자.
link 1 down이라는 메세지와 함께 연결이 안된다면 일단 baudrate부터 조절해보고 그 후에 배선을 바꿔보면 될 것 같다.실행 코드:
mavproxy.py --master=/dev/serial0 --baudrate 57600 --aircraft MyCopter
정상 연결 시:

* ModemManager 경고 해결
여기서 제일 상단에 발생하는 WARNING: You should uninstall ModemManager as it conflicts with APM and Pixhawk을 확인해보자.
원인:
ModemManager는 LET 모뎀, 3G/4G USB 동글, GPS/통신 장치 등을 자동으로 감지해서 제어하는 서비스이다. 문제는 ModemManager가 /dev/tty, /dev/serial 같은 시리얼 장치에도 신호를 보내보는 것이다.
Pixhawk는 MAVLink 통신을 위해 해당 포트를 사용하므로 ModemManager가 간섭할 수 있다.
해결 방법:
나는 ModelManager를 서비스만 비활성화하는 방식으로 warning을 해결하고자 한다.
(해당 오류는 시스템 설치 여부로 인해 경고가 발생하는 거라 비활성화해도 오류가 발생하긴 한다. 다만 나중에 쓸 수도 있으니.....삭제까진 하지 않고 비활성화만 하려고 한다.)
sudo systemctl disable --now ModemManager
systemctl status ModemManager (-> inactive (dead)이면 성공)
pgrep -a ModemManager (ModemManager 프로세스가 살아있는지 확인하는 명령어. 아무 출력 없으면 성공)
여기까지 성공했다면 라즈베리파이와 픽스호크의 연결이 잘 수행된 것이다. 끝!
오류 1
중간에 os를 밀고 다시 깔았더니 REMOTE HOST IDENTIFICATION HAS CHANGED - RSA key 오류 발생
원인:
OS 재설치 후 IP는 동일하지만 RSA Key가 변경됨
쉽게 말하면, IP는 동일한데 목적지 서버 장비가 바뀌었을 경우 나오는 경고이다.0
해결 방법:
ssh-keygen -R [서버 ip]
참고 https://kingsong.tistory.com/127#google_vignette
오류 2

해결:
python3-pip으로 변경
python-dev 도 python3-dev으로 변경
오류 3

원인:
Bookworm부터 sudo pip 사용 불가
해결:
가상환경 내에서 pip 사용
python3 -m venv [env이름]
source [env이름]/bin/activate
참고 https://mallard-oh-coding.tistory.com/20
✅Raspberry Pi 5 + Bookworm 환경에서는 가상환경 필수
✅UART 사용을 위해 Bluetooth 비활성화 필요
✅MAVProxy 실행 시 Baudrate 확인