1P by GN⁺ | ★ favorite | 댓글 1개
  • ESP32 기반 DIY 드론은 스마트폰으로 조종하는 소형 WiFi 드론을 저렴한 부품으로 구현해, 드론 제어·PCB·펌웨어를 한 번에 실습할 수 있음
  • 설계의 중심은 Type-C USB, 배터리 충전 회로, ESP32, CP2102 USB-UART, MPU6050, SI2302 모터 드라이버를 통합한 일체형 PCB
  • 펌웨어는 Espressif의 ESP-drone firmware를 바탕으로 하며, ESP-IDF 4.4.5로 직접 빌드하거나 제공된 ESPDrone.bin을 플래시할 수 있음
  • 전원을 켠 뒤 드론이 만드는 WiFi 핫스팟에 비밀번호 12345678로 접속하고, iOS 또는 Android 앱에서 연결해 조종함
  • 배터리 방전 성능이 부족하면 앱 연결이 끊기거나 이륙 시 재부팅될 수 있어, 예시처럼 1300mAh 30C 수준의 높은 방전율 배터리가 필요함

프로젝트 개요와 기능

  • 이 프로젝트는 스마트폰으로 제어하는 WiFi 드론을 ESP32와 주변 부품으로 직접 만드는 방식임
  • 소형·경량 기체에 ESP32 모듈, MPU6050 IMU, 코어리스 모터, 플라스틱 프로펠러를 사용함
  • 주요 기능은 다음과 같음
    • 스마트폰 기반 WiFi 제어
    • 안정성 제어용 MPU6050 IMU
    • 3D 프린트 부품 없이 구성하는 일체형 PCB
    • 외부 모듈을 통한 position hold 또는 height hold 추가 가능
    • 내장 배터리 충전기
    • 프로그래밍과 디버깅을 위한 내장 USB 인터페이스
    • Android 및 iOS 앱 지원
    • 오픈소스

회로 구성

  • Type-C USB 포트는 충전과 프로그래밍을 함께 담당함
  • 전원 경로 제어는 P-Channel MOSFET U2와 다이오드 D1을 사용해 USB 전원과 배터리 전원을 전환함
  • 전압 조정은 Microchip의 MIC5219 3.3V LDO가 맡음
  • TP4056 충전 컨트롤러가 배터리 충전을 관리하고, 전압 감지는 전압 분배 회로로 처리함
  • 핵심 제어부는 ESP32 SoC, CP2102 USB-UART 컨트롤러, MPU6050 IMU 칩으로 구성됨
    • CP2102와 듀얼 MOSFET은 ESP32 리셋 기능을 단순화함
    • MPU6050은 ESP32 GPIO 핀과 연결되어 비행 안정화와 동작 제어에 쓰임
  • 모터 드라이버 회로는 SI2302 N-Channel MOSFET으로 모터를 제어하고, 보호 다이오드와 저항을 함께 사용함
  • 디버깅 LED는 상태 확인에 쓰임
    • 파란색 LED: 캘리브레이션
    • 초록색 LED: 연결 감지
    • 빨간색 LED: 배터리 부족
    • 전원 및 충전 표시등도 포함됨

PCB와 조립

  • 최종 제품을 작고 조립하기 쉽게 만들기 위해 커스텀 PCB를 사용함
  • 드론 다리도 PCB에 포함되어 있으며, 메인 PCB에서 쉽게 분리할 수 있음
  • A와 B 프로펠러는 지정된 방향에 맞춰 장착해야 함
  • 전원 켜짐 자체 테스트 중 프로펠러가 정상적으로 회전하고 올바른 방향으로 도는지 확인해야 함

펌웨어와 플래싱

  • 펌웨어는 Espressif의 ESP-drone firmware를 기반으로 하며, PCB 설계에 맞게 수정된 Circuit Digest의 GitHub 소스를 사용해야 함
  • 코드는 ESP-IDF로 작성되었고, 컴파일에 사용된 버전은 ESP-IDF 4.4.5
  • 펌웨어 적용 방법은 세 가지임
    • ESP-IDF로 소스 빌드
      • ESP-IDF 4.4.x를 설치하고 설정함
      • git clone https://github.com/Circuit-Digest/ESP-Drone.git로 저장소를 복제함
      • ESP-Drone/Firmware/esp-drone 폴더로 이동함
      • idf.py menuconfig로 설정을 바꿀 수 있지만, 기본 설정으로도 충분함
      • idf.py -p PORT flash 명령으로 빌드와 플래시를 수행함
    • ESPTOOL 사용
      • ESP-IDF 설치 후 펌웨어 이미지 폴더에서 실행함
      • esptool.py write_flash --flash_size detect 0x0 ESPDrone.bin 명령으로 플래시함
    • ESP32 Flash Download Tool 사용
      • 툴을 다운로드해 실행하고 칩 타입을 ESP32로 선택함
      • ESPDrone.bin 파일을 선택하고 주소를 0x00으로 설정함
      • 올바른 COM 포트를 선택한 뒤 erase 후 START로 플래시함

앱 연결과 조종

  • 드론을 평평한 표면에 놓고 전원을 켜면 비행 컨트롤러가 WiFi 핫스팟을 생성함
  • 스마트폰에서 비밀번호 12345678로 접속한 뒤 앱을 열어 사용함
  • iOS 앱은 App Store에서 ESP-Drone APP을 검색해 받을 수 있음
  • Android 앱은 제공된 링크에서 받을 수 있으며, 앱은 제3자가 만들고 호스팅하므로 사용자가 판단해 설치해야 함
  • 앱에서 connect 버튼을 누르면 드론과 통신을 시작함
  • 연결에 성공하면 드론의 LED가 초록색으로 깜빡임
  • turn lock 버튼은 왼쪽 컨트롤러를 위·아래만 쓰거나, 위·아래·좌회전·우회전까지 쓰도록 잠그는 데 사용됨
  • 왼쪽 스틱은 이륙과 착륙, 오른쪽 스틱은 이동 제어를 담당함
  • 앱 연결이 끊기거나 이륙 시 드론이 재부팅되면 배터리가 충분한 전력을 공급하지 못하는 상태일 수 있음
    • 예시 배터리는 1300mAh 30C
    • 더 높은 방전율의 배터리가 필요함

비행 전 점검

  • 드론 머리가 앞쪽, 꼬리인 안테나 부분이 뒤쪽을 향하게 놓음
  • 드론을 수평면에 두고 움직이지 않는 상태에서 전원을 켬
  • 통신이 설정된 뒤 드론 꼬리의 LED가 초록색으로 빠르게 깜빡이는지 확인함
  • 빨간색 LED가 깜빡이면 배터리 부족 상태이므로 충전해야 함
  • 스로틀 컨트롤러를 약간 앞으로 밀어 드론이 명령에 반응하는지 확인함
  • 오른쪽 컨트롤러로 방향 제어가 제대로 동작하는지 점검함

주요 부품

  • ESP32-WROOM-32E-H4: Espressif Systems의 BT/WiFi RF TXRX 모듈
  • MPU-6050: TDK InvenSense의 3축 가속도계·자이로 IMU
  • CP2102N-A02-GQFN28R: Silicon Labs의 USB-UART 브리지
  • 2N7002DW-G: onsemi의 듀얼 N-Channel MOSFET
  • MIC5219-3.3YM5-TR: Microchip Technology의 3.3V 500mA 선형 레귤레이터
  • AO3401: Alpha & Omega Semiconductor의 P-Channel MOSFET
  • SI2302DDS-T1-BE3: Vishay Siliconix의 N-Channel MOSFET
  • JS102011SAQN: C&K의 SPDT 슬라이드 스위치
  • 1N4148W: Diotec Semiconductor의 표준 다이오드
  • SS34: MDD의 40V 3A 쇼트키 다이오드

댓글과 토론

Hacker News 의견들
  • 익숙하지 않은 사람을 위해 덧붙이면, 직접 만들 수 있는 FPV 드론 생태계가 이미 꽤 활발함
    흔한 구성은 STM32 기반 비행 제어 MCU와 센서가 있는 작은 정사각 PCB, 모터 드라이버 PCB, 탄소섬유 프레임, LoRa 무선 모듈 PCB, 카메라와 영상 송신 시스템(90년대 보안 카메라식 아날로그 또는 디지털), 브러시리스 DC 모터와 프로펠러 등을 조합하는 식임
    펌웨어는 Betaflight, ArduPilot, iNav, PX4를 쓰거나 직접 작성할 수도 있음. 글의 PCB 프레임은 깔끔하고 편의성도 분명하지만, 고가속 상황에서 원하는 제어 특성을 낼 만큼 강성이 충분할지는 의문임

    • 이 생태계 상당 부분이 오픈소스
      ESC 소프트웨어는 https://github.com/am32-firmware, https://github.com/mathiasvr/bluejay가 있고, 비행 제어기는 https://github.com/betaflight, https://github.com/ArduPilot, https://github.com/iNavFlight가 있음
      조종 링크는 https://github.com/ExpressLRS가 있고 ESP32/ESP82 칩도 사용함. 무선 조종기는 https://github.com/EdgeTX가 있음
      5년 전만 해도 대부분이 독점 기술이고 취미 입문에 수천 달러가 들었지만, 지금은 약 500달러부터 시작 가능함. FPV에서 큰 비용은 고글인데, 저렴한 아날로그 고글은 약 100달러에도 구할 수 있음
    • 전반적으로 맞는 말이지만 기대치는 조정해야 함. 오픈소스 생태계는 특별히 빠르게 발전하는 구석이 따로 있는 게 아니라면, 독점 상용 쪽보다 꽤 뒤처져 보임
      비행 제어 소프트웨어는 점진적으로 나아졌고 영상 하위 시스템도 대체로 아날로그에서 2.4/5.8GHz 디지털로 옮겨갔지만, 전체 구조는 5년 전과 크게 다르지 않음. 취미용 R/C 송신기와 수신기가 비행 제어기(대개 STM32)를 거쳐 PWM 출력으로 취미용 ESC를 구동하고, ESC가 모터를 제어하는 구조임. ESC는 마이크로컨트롤러 기반이라 다시 플래시할 수 있지만 번거롭고 짜증남. 원격 측정은 보통 조종과 분리돼 있고, 조종은 영상과도 분리돼 있으며, 전부 짧은 거리이고 IP 기반이 아님
      반면 DJI 같은 상용 기성 쿼드콥터는 기체와 조종기 사이에 하나의 백홀로 조종, 영상, 원격 측정을 모두 처리하고 영상 지연도 인상적으로 낮음. 아마 WiFi 계열 칩셋으로 원시 벤더 프레임을 뿌리고 수신기가 가능한 만큼 받아내는 최선형 방식일 것 같음. ESP32의 ESP-NOW 모드로도 비슷하게 할 수 있을 듯함. DJI 프로토콜을 역공학하려는 시도는 봤지만, 완전 호환 구현이나 오픈소스 세계의 동등한 대안은 모름
      상용·독점 영역의 상위권에는 즉시 사용 가능한 자율성, IP 기반 다중 백홀(가시선/비가시선 무선, LTE, 위성통신 등), GPS 의존도를 낮추는 항법 비컨 연동, 하이브리드 모터/발전기, 이중화 전원 시스템까지 갖춘 것들이 있음
      이런 격차가 개발자 관심 외에 다른 이유로 존재할 필요는 없어 보임. 부품은 거의 다 구할 수 있고, 괜찮은 실시간 운영체제를 올린 Raspberry Pi는 STM32보다 훨씬 큰 처리 능력으로 상용 시스템식 다중 센서 융합도 쉽게 할 수 있음. LTE 모뎀도 저렴하고, 더 큰 헥사콥터나 고정익기는 작은 Starlink 접시도 들어 올릴 수 있음. 태양광 패널에 착륙해 충전하는 “perching” 같은 것도 충분히 가능함
      다만 오픈소스 드론의 최첨단은 우크라이나와 이란의 닫힌 문 뒤에서 벌어지는 것처럼 보임. 놓친 새 기술이 있다면 기꺼이 정정받겠지만, “가능한 것”과 현재 실무 사이의 간극은 커 보임. 동시에 그만큼 기회도 많다고 볼 수 있음
    • 드론 조종을 정말 못하는 사람은 어떻게 해야 할까? FPV를 직접 해봤지만 실력이 잘 안 붙었고, 대신 DJI Mini는 정말 즐김
      DJI처럼 나는 오픈 드론 정보를 찾기가 늘 어려운데, 뭘 찾아야 하는지 자체를 잘 모르는 것 같기도 함
    • “올인원 PCB라 3D 프린트 부품 같은 게 필요 없다”는 장점이 적혀 있지만, 집에서 3D 프린팅과 레이저 커팅은 괜찮게 할 수 있어도 PCB를 만들 장비는 없고 납땜도 관통홀 이상은 손재주가 부족함
    • 직접 만들 수 있는 FPV 드론 생태계가 활발하다는 말에 덧붙이면, 수십 년 동안 언제든 드론화할 수 있는 비행체를 만들어 온 입장에서는 드론이 이렇게 널리 퍼지기 전부터 rcgroups.com이 사실상 찾아가야 할 생태계였음
      “모형 항공기/원격 조종 비행” 취미도 수십 년 동안 번성해 왔고, 여기 분류만 봐도 풍성함: https://www.rcgroups.com/forums/index.php
      여러 하위 포럼을 진지하게 살펴보면 평범한 시각에서 비행체가 어떻게 생겨야 하는지에 대한 “정상”을 깨는 놀라운 설계들을 볼 수 있음. Magnus, aerostat, Fettler 같은 검색어가 꽤 좋음
  • 이게 누군가 Espressif의 esp-drone(https://github.com/espressif/esp-drone)을 다시 올려놓고 자기 것처럼 내세운 것 아닌가 싶음. DigiKey가 그걸 자기 사이트에 올린 셈이고
    맞춤 PCB를 만들었다고 하지만 거의 똑같아 보임. 글에서 연결한 저장소(https://github.com/Circuit-Digest/ESP-Drone)에는 악성코드가 있다는 이슈도 있고 커밋 기록도 조금 수상해 보임. 틀렸을 수도는 있음

    • 이슈를 올린 쪽이 어떤 파일이 영향을 받는지도 말하지 않았으니 순전한 추측이지만, 바이러스 문제는 오탐처럼 보임. 저장소에 들어간 사전 빌드 펌웨어가 백신을 쉽게 건드릴 수 있음
      저장소 대부분은 일반 텍스트 파일이고 zip과 bin은 빌드에 필요해 보이지 않으니, 찝찝하면 빌드 전에 지우면 됨
    • 두 프로젝트 모두 Crazyflie를 영감으로 들고 있어서 유사성이 생겼을 수 있음
      https://www.bitcraze.io/products/old-products/crazyflie-2-0/
    • 맞음, esp-drone에서 저작권 있는 코드를 그대로 가져온 것으로 보임
      https://github.com/Circuit-Digest/ESP-Drone/blob/main/Firmwa...
      라이선스 위반이라고 봄. DigiKey가 이런 사람들을 고용한 건 매우 보기 안 좋음
    • Espressif가 펌웨어만 작성한 줄 알았는데, PCB 지지대까지 포함해 이 드론이 올라온 것과 정말 비슷함
  • 이 글이 나오기에 절묘한 타이밍임. 미국에서는 집단 히스테리 같은 일이 벌어지고 있는데, 알고 보니 DIY 드론을 개당 12~13달러에 찍어낼 수 있다니 대단한 시대임
    요즘 별도 UFO로 보는 사람들이 있으니, 사실 싼 드론도 과하고 중국산 풍등 20개 묶음이면 평균적인 미국 동네를 계속 공포 상태로 만들거나 /r/UFOs 첫 페이지까지 얼마나 걸리는지 보기에 충분할지도 모름

    • 봐온 게시물로는 이미 시작한 사람도 있음. 며칠 전엔 드론에 불붙은 로만 캔들을 단 사람이 있었음. 아니면 FAA 규정을 지킨 외계인이었거나, 둘 중 하나임
    • 진짜 목격을 덮는 유일한 방법은 가짜 목격을 뿌리는 것임
    • 흥미롭고 무서운 부분은 이런 드론을 무기화하기가 어렵지 않다는 점임. 수제 폭발물을 떨어뜨리고 완전 자율로 움직인 뒤 물속에 처박히게 만들 수 있음. 총보다 훨씬 싸게 가능함
    • 미국의 집단 히스테리라니 무엇을 가리키는 건가? 중국 기상 풍선 소동은 몇 년 전 일이 아니었나?
  • 재미있음. 예전에 Crazyflie[1]를 만들었는데 그때는 ESP32도 없어서 맞춤 2.4GHz 프로토콜을 썼고, 이건 그에 대한 훌륭한 업그레이드임
    모터 컨트롤러로 단일 로우사이드 MOSFET을 쓰는 것도 BLDC 모터가 주는 일부 동작을 포기하는 대신 더 단순하고 저렴하게 만듦. 전체적으로 10~15달러면 아주 좋은 가격이고, Hackerbox[2]에 들어갈지 궁금함. 딱 그들이 할 만한 물건임
    CF 마이크로드론으로 많이 재미있게 놀았고, 이것도 꼭 하나 만들어볼 생각임
    [1] https://github.com/bitcraze/crazyflie-firmware
    [2] https://hackerboxes.com/

  • 오래된 iPhone을 드론으로 바꾸는 걸 살펴보는 중임. 상위 수준 작업을 처리할 좋은 하드웨어가 이미 있고, 센서 입력에 따라 실제로 모터를 구동하는 더 실시간적인 일은 ESP32에 맡기면 됨
    오래된 iPhone 6만 해도 GPS, 자이로, 가속도계, 여러 카메라, 꽤 강한 프로세서, Bluetooth/WiFi/LTE, 소리와 조명, 주변광·근접 센서가 있음. 케이스를 벗기면 주변을 인식하고 통신할 수 있는 훌륭한 미니 컴퓨터가 됨
    더 최신 iPhone에서는 ARKit 같은 고급 기술로 드론과 환경에 대한 공간 이해를 얻어 자율 드론을 만들 수도 있음. iPhone 15라면 공간 비디오도 가능함. 얼마나 멋질까 싶음
    Apple이 오래된 휴대폰을 DIY 프로젝트에 쓰도록 운영체제 수준 제한을 풀 수 있는 간단한 방법을 제공해주면 좋겠음

    • 꼭 휴대폰이 필요할까? 듀얼코어 240MHz ESP32도 더 낮은 무게와 전력으로 일을 해낼 수 있어 보임
      오래된 휴대폰은 조종기로 쓰는 쪽이 더 나을지도 모름
    • 이 용도라면 Apple이 만든 하드웨어만은 정말 피하고 싶음. 그런 데 인생의 시간을 낭비하지 않는 편이 좋음
    • 그래도 실시간 운영체제는 아님
  • 처음부터 만들고 싶지 않다면 조금 더 주고 프로그래밍 가능한 완제품을 살 수 있음: https://shop.m5stack.com/products/m5stamp-fly-with-m5stamps3...
    포함된 소프트웨어 스택은 매우 기본적이고, 오픈소스 항공 전자 쪽은 일본 너드 Twitter를 뒤져보면 됨

    • 맞지만 가격이 3배이고 품절임 :(
  • 대단함. 착륙 장치(지지대?)까지 PCB의 일부임. 저자가 키트 판매를 하거나 Seeed Studio 같은 곳에 외주를 주면 좋겠음. DigiKey 주문 배송비가 꽤 비싼 나라에 살고 있음
    저자는 부품표 비용을 13달러 조금 안 되게 추산함. 그 가격이면 DIY 드론 라이트쇼용 군집을 만들어보는 재미가 있겠음
    [1] https://circuitdigest.com/microcontroller-projects/DIY-wifi-...

    • 참고로 10개만 만들어도 13달러 가격은 꽤 내려갈 수 있음
      다만 내가 쓸 만한 공급업체 기준으로는 1개가 50달러에 더 가까워 보이고, 10개는 150달러 정도임
      그래도 비용을 조금 줄일 수는 있을 듯함. USB-시리얼 칩이 거의 6달러인데, 다른 패키지는 1개 4.40달러 또는 10개 기준 개당 3.99달러이고, 충분해 보이는 대체 칩은 더 쌀 수 있음. 선택한 전압 조정기는 500mA에 개당 1달러인데, 보통 내가 고르는 것은 1000mA에 개당 0.22달러이고 10개면 개당 0.13달러까지 내려감
  • 사용 가능한 코어 수가 제한적이라는 점에서 잘 맞지 않는 느낌임
    rp2350 같은 것이면 좋겠음. 주 코어가 켜져 있든 아니든 동작할 수 있는 초저전력 I/O 코어가 있으니까. 임베디드는 다중 코어가 가장 잘 맞는 영역 중 하나인데, 좋은 오프로딩 구조와 빈약하지 않은 Programmable IO 시스템이 있는 경우가 너무 드묾
    Silego/Dialog/Renesas의 GreenPAK 같은 제품도 언급할 만함. 아주 작지만 흥미로운 혼합 신호 프로그래머블 로직에 주변장치가 꽤 붙어 있음

    • RP2350의 PIO 유닛을 “저전력 I/O 코어”라고 부르는 건 꽤 과장임. 해킹을 많이 하면 이론상 튜링 완전하긴 하지만, 어떤 종류의 계산에도 정말 형편없음. UART 패리티 계산조차 맡기고 싶지 않을 정도임
      오히려 이런 용도에는 ESP32의 초저전력 보조 프로세서가 딱일 수 있지만, 현실적으로는 들이는 노력만큼 가치가 없음. 계산 전력은 WiFi와 로터가 요구하는 전력에 비하면 무시할 수준이고, 단일 코어에서 여러 실시간 작업을 돌리는 것도 로켓 과학은 아님
    • 코어가 더 필요하지 않음. ArduPilot은 훨씬 덜 강한 하드웨어에서도 돌아감: https://ardupilot.org/copter/docs/common-autopilots.html#com...
      우리는 그보다 약한 하드웨어로 사람을 달에 보냈음. 코어가 많아지면 복잡도만 올라감
    • 기본 드론을 돌리는 데는 RP2040만으로도 충분함. 이 프로젝트에서 많이 배웠음: https://github.com/holsatus/holsatus-flight
  • EU가 카메라 드론에 연 30유로 수수료를 요구하기 전까지 Lidl의 25유로짜리 접이식 WiFi 드론을 갖고 놀았음
    카메라 없는 드론의 실용적인 용도는 잘 떠오르지 않음. 플라이 낚시가 하나일 수는 있는데, 물고기가 당기는 느낌이 드는 순간 낚싯줄을 떨어뜨리고 귀환하도록 프로그래밍해야 함

    • EU가 카메라 드론에 연 30유로 수수료를 요구하는 건 아님. 당신 나라가 그럴 수는 있지만, 내 나라는 확실히 아님
    • 아일랜드에서는 드론 등록이 250g 초과이거나 카메라가 있으면 필요하고, 2년에 38유로
      https://www.iaa.ie/general-aviation/drones/drone-register
    • 30유로짜리 드론이 얼마나 들어 올릴 수 있을까? 600g짜리 송어만 해도 드론이 터무니없이 과출력이 아닌 한 쉽게 물속으로 끌고 들어갈 수 있음
    • 내 드론으로 해본 적 있음. 작은 옆으로 여는 칩 클립을 드론 바닥에 붙였음
      충분히 빠르게 날리면 줄이 팽팽해지는 순간 클립에서 빠져나와 떨어짐
  • DigiKey 글인데 Buy now 버튼이 없다는 게 이상함
    모든 부품을 배송받을 수 있고 뭔가 빠뜨리지 않았다는 확신만 있다면 바로 해볼 것 같음

    • 맨 아래에 “Add all DigiKey Parts to Cart”라는 작은 링크가 있음
      하지만 부품 하나는 이미 단종되어 구할 수 없고, 두 개는 여기 필요한 수량보다 최소 주문 수량이 더 많아서 썩 좋지는 않음