Nano ESP32 기반 GCS 보드와 시리얼로 연결해서 드론 명령을 보내고, IMU/GNSS 텔레메트리를 브라우저에서 확인하는 로컬 웹 GCS입니다.
| 영역 | 설명 |
|---|---|
| Altitude | 현재 고도를 세로 테이프 형태로 보여줍니다. 값은 m 단위입니다. |
| 상단 연결 영역 | 테마 전환, COM 포트 선택, baud rate 설정, 포트 새로고침, 연결/해제를 합니다. |
| Commands | Arm, Disarm, Hover, Alt Hold, Land 같은 기본 동작을 버튼으로 실행합니다. |
| PWM | PWM 값을 입력해서 pwm N 명령을 보냅니다. |
| Custom | 직접 텍스트 명령을 입력해서 보낼 수 있습니다. 예: help, pwm 1200 |
| Attitude | IMU roll/pitch/yaw 값을 인공수평계와 heading 계기로 표시합니다. |
| Recent Activity | TX/RX 로그와 최근 시스템 메시지를 보여줍니다. |
| Attitude Plots | Roll, Pitch, Yaw 값을 최근 30초 그래프로 보여줍니다. |
Python 3가 필요합니다.
cd C:\Users\임현우\Desktop\Git\GroundControlSystem
python --version
pip install -r requirements.txt
python server.py브라우저에서 아래 주소를 엽니다.
http://127.0.0.1:5000
5000 포트가 이미 사용 중이면 다른 포트를 지정합니다.
python server.py --web-port 5001실행하면서 바로 시리얼 포트에 연결하려면 COM 포트와 baud rate를 지정합니다.
python server.py --port COM8 --baud 115200가상환경을 쓰려면 아래처럼 실행합니다.
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python server.pyQGroundControl처럼 별도 창으로 실행하려면 데스크톱 앱 런처를 사용할 수 있습니다. 내부적으로는 로컬 Flask 서버를 띄운 뒤 WebView 창에서 UI를 엽니다.
개발 환경에서 실행합니다.
pip install -r requirements-app.txt
python .\desktop_app.pyEXE와 설치 프로그램을 빌드합니다.
.\scripts\build_windows.ps1빌드 결과는 dist\GroundControlSystem\GroundControlSystem.exe에 생성됩니다. Inno Setup이 설치되어 있으면 dist\installer\GroundControlSystemSetup.exe도 생성됩니다. 자세한 내용은 docs\windows-app.md를 참고합니다.
- Arduino IDE Serial Monitor를 닫습니다.
python server.py로 웹 서버를 실행합니다.- 브라우저에서
http://127.0.0.1:5000을 엽니다. - 포트 목록에서 Nano ESP32의 COM 포트를 선택합니다.
- Baud rate를
115200으로 둡니다. Connect를 누릅니다.- 필요한 명령 버튼을 누르거나
Custom입력창에 직접 명령을 입력합니다.
| UI | 전송 명령 |
|---|---|
| Arm | arm |
| Disarm | disarm |
| Hover | hover |
| Alt Hold | althold |
| Alt Hold with target | althold CM |
| Offboard | offboard |
| Land | 현재 PWM 값에서 1350까지 pwm N을 서서히 전송 |
| Emergency Hover | ehover |
| Emergency Land | eland |
| Emergency Disarm | edisarm |
| Send PWM | pwm N |
| Set Altitude | alt CM |
- Arduino IDE Serial Monitor와 이 웹 GCS는 같은 COM 포트를 동시에 사용할 수 없습니다.
- 포트가 보이지 않으면
Refresh를 누르거나 USB 케이블을 다시 연결합니다. - 연결은 됐는데 반응이 없으면
Recent Activity에서TX,RX,[TX CMD] ... result=ok로그를 확인합니다.
