Cách chế tạo drone chi phí thấp bằng ESP32
(digikey.com)- Drone DIY dựa trên ESP32 hiện thực hóa drone WiFi cỡ nhỏ điều khiển bằng điện thoại thông minh với các linh kiện giá rẻ, cho phép thực hành cùng lúc điều khiển drone, PCB và firmware
- Trọng tâm của thiết kế là PCB tích hợp gom Type-C USB, mạch sạc pin, ESP32, CP2102 USB-UART, MPU6050 và driver động cơ SI2302
- Firmware dựa trên ESP-drone firmware của Espressif; có thể tự build bằng ESP-IDF 4.4.5 hoặc flash file
ESPDrone.binđược cung cấp - Sau khi bật nguồn, kết nối vào hotspot WiFi do drone tạo ra bằng mật khẩu
12345678, rồi kết nối và điều khiển từ ứng dụng iOS hoặc Android - Nếu khả năng xả của pin không đủ, kết nối ứng dụng có thể bị ngắt hoặc drone có thể khởi động lại khi cất cánh, nên cần pin có tốc độ xả cao ở mức như 1300mAh 30C trong ví dụ
Tổng quan dự án và chức năng
- Dự án này là cách tự chế tạo drone WiFi điều khiển bằng điện thoại thông minh bằng ESP32 và các linh kiện ngoại vi
- Sử dụng module ESP32, IMU MPU6050, động cơ coreless và cánh quạt nhựa trên thân máy nhỏ, nhẹ
- Các chức năng chính như sau
- Điều khiển qua WiFi bằng điện thoại thông minh
- IMU MPU6050 để điều khiển ổn định
- PCB tích hợp, không cần linh kiện in 3D
- Có thể bổ sung position hold hoặc height hold thông qua module ngoài
- Bộ sạc pin tích hợp
- Giao diện USB tích hợp để lập trình và gỡ lỗi
- Hỗ trợ ứng dụng Android và iOS
- Mã nguồn mở
Cấu hình mạch
- Cổng Type-C USB đảm nhiệm cả sạc và lập trình
- Điều khiển đường cấp nguồn dùng P-Channel MOSFET U2 và diode D1 để chuyển đổi giữa nguồn USB và nguồn pin
- Việc điều chỉnh điện áp do MIC5219 3.3V LDO của Microchip đảm nhiệm
- Bộ điều khiển sạc TP4056 quản lý việc sạc pin, còn phát hiện điện áp được xử lý bằng mạch chia áp
- Khối điều khiển chính gồm ESP32 SoC, bộ điều khiển CP2102 USB-UART và chip IMU MPU6050
- CP2102 và MOSFET kép đơn giản hóa chức năng reset ESP32
- MPU6050 được nối với các chân GPIO của ESP32 và dùng cho ổn định bay cũng như điều khiển chuyển động
- Mạch driver động cơ điều khiển động cơ bằng SI2302 N-Channel MOSFET, đồng thời dùng kèm diode bảo vệ và điện trở
- LED gỡ lỗi dùng để kiểm tra trạng thái
- LED xanh dương: hiệu chuẩn
- LED xanh lá: phát hiện kết nối
- LED đỏ: pin yếu
- Cũng bao gồm đèn báo nguồn và sạc
PCB và lắp ráp
- Dùng PCB tùy chỉnh để sản phẩm cuối nhỏ gọn và dễ lắp ráp
- Chân drone cũng được tích hợp trên PCB và có thể tách dễ dàng khỏi PCB chính
- Cánh quạt A và B phải được lắp theo đúng hướng chỉ định
- Trong quá trình tự kiểm tra khi bật nguồn, cần xác nhận cánh quạt quay bình thường và quay đúng chiều
Firmware và flash
- Firmware dựa trên ESP-drone firmware của Espressif, và cần dùng mã nguồn GitHub của Circuit Digest đã được chỉnh sửa cho phù hợp với thiết kế PCB
- Mã được viết bằng ESP-IDF, phiên bản dùng để biên dịch là ESP-IDF 4.4.5
- Có ba cách áp dụng firmware
- Build mã nguồn bằng ESP-IDF
- Cài đặt và cấu hình ESP-IDF 4.4.x
- Clone repository bằng
git clone https://github.com/Circuit-Digest/ESP-Drone.git - Di chuyển vào thư mục
ESP-Drone/Firmware/esp-drone - Có thể thay đổi cấu hình bằng
idf.py menuconfig, nhưng cấu hình mặc định cũng đủ dùng - Thực hiện build và flash bằng lệnh
idf.py -p PORT flash
- Dùng ESPTOOL
- Sau khi cài ESP-IDF, chạy trong thư mục chứa image firmware
- Flash bằng lệnh
esptool.py write_flash --flash_size detect 0x0 ESPDrone.bin
- Dùng ESP32 Flash Download Tool
- Tải và chạy công cụ, rồi chọn loại chip là ESP32
- Chọn file
ESPDrone.binvà đặt địa chỉ là0x00 - Chọn đúng cổng COM, sau đó erase rồi flash bằng START
- Build mã nguồn bằng ESP-IDF
Kết nối ứng dụng và điều khiển
- Đặt drone trên bề mặt phẳng rồi bật nguồn, flight controller sẽ tạo hotspot WiFi
- Trên điện thoại thông minh, kết nối bằng mật khẩu
12345678, sau đó mở ứng dụng để sử dụng - Có thể tải ứng dụng iOS bằng cách tìm
ESP-Drone APPtrên App Store - Ứng dụng Android có thể tải từ liên kết được cung cấp; vì ứng dụng do bên thứ ba tạo và host, người dùng cần tự cân nhắc khi cài đặt
- Nhấn nút connect trong ứng dụng để bắt đầu giao tiếp với drone
- Khi kết nối thành công, LED của drone sẽ nhấp nháy màu xanh lá
- Nút turn lock được dùng để khóa bộ điều khiển bên trái ở chế độ chỉ dùng lên/xuống, hoặc dùng cả lên/xuống/quay trái/quay phải
- Cần trái đảm nhiệm cất cánh và hạ cánh, cần phải đảm nhiệm điều khiển di chuyển
- Nếu kết nối ứng dụng bị ngắt hoặc drone khởi động lại khi cất cánh, có thể pin không cung cấp đủ công suất
- Pin ví dụ là 1300mAh 30C
- Cần pin có tốc độ xả cao hơn
Kiểm tra trước khi bay
- Đặt sao cho đầu drone hướng về phía trước, phần đuôi là ăng-ten hướng về phía sau
- Đặt drone trên mặt phẳng ngang và bật nguồn khi drone đứng yên
- Sau khi thiết lập giao tiếp, xác nhận LED ở đuôi drone nhấp nháy nhanh màu xanh lá
- Nếu LED đỏ nhấp nháy thì đang ở trạng thái pin yếu, cần sạc
- Đẩy nhẹ bộ điều khiển throttle về phía trước để kiểm tra drone có phản hồi lệnh hay không
- Kiểm tra bộ điều khiển bên phải xem điều khiển hướng có hoạt động đúng không
Linh kiện chính
- ESP32-WROOM-32E-H4: module BT/WiFi RF TXRX của Espressif Systems
- MPU-6050: IMU gia tốc kế 3 trục và con quay hồi chuyển của TDK InvenSense
- CP2102N-A02-GQFN28R: cầu nối USB-UART của Silicon Labs
- 2N7002DW-G: MOSFET N-Channel kép của onsemi
- MIC5219-3.3YM5-TR: bộ ổn áp tuyến tính 3.3V 500mA của Microchip Technology
- AO3401: P-Channel MOSFET của Alpha & Omega Semiconductor
- SI2302DDS-T1-BE3: N-Channel MOSFET của Vishay Siliconix
- JS102011SAQN: công tắc trượt SPDT của C&K
- 1N4148W: diode tiêu chuẩn của Diotec Semiconductor
- SS34: diode Schottky 40V 3A của MDD
1 bình luận
Các ý kiến trên Hacker News
Bổ sung cho những ai chưa quen: hệ sinh thái drone FPV tự lắp hiện đã khá sôi động
Một cấu hình phổ biến là kết hợp một PCB vuông nhỏ có MCU điều khiển bay nền tảng STM32 và các cảm biến, PCB driver động cơ, khung sợi carbon, PCB mô-đun radio LoRa, camera và hệ thống truyền video (analog kiểu camera an ninh thập niên 90 hoặc digital), động cơ DC không chổi than và cánh quạt, v.v.
Firmware có thể dùng Betaflight, ArduPilot, iNav, PX4, hoặc tự viết. Khung PCB trong bài trông gọn gàng và rõ ràng là tiện, nhưng tôi nghi ngờ liệu nó có đủ độ cứng để tạo ra đặc tính điều khiển mong muốn trong các tình huống gia tốc cao hay không
Phần mềm ESC có https://github.com/am32-firmware, https://github.com/mathiasvr/bluejay, còn bộ điều khiển bay có https://github.com/betaflight, https://github.com/ArduPilot, https://github.com/iNavFlight
Liên kết điều khiển có https://github.com/ExpressLRS và cũng dùng chip ESP32/ESP82. Bộ điều khiển vô tuyến có https://github.com/EdgeTX
Chỉ 5 năm trước, phần lớn là công nghệ độc quyền và để bắt đầu chơi sở thích này phải tốn vài nghìn đô la, nhưng hiện nay có thể bắt đầu từ khoảng 500 đô la. Chi phí lớn trong FPV là kính goggle, nhưng kính analog giá rẻ cũng có thể mua được khoảng 100 đô la
Phần mềm điều khiển bay đã dần tốt lên và hệ thống con video nhìn chung cũng đã chuyển từ analog sang digital 2,4/5,8GHz, nhưng cấu trúc tổng thể không khác nhiều so với 5 năm trước. Bộ phát và thu R/C cho sở thích điều khiển bộ điều khiển bay (thường là STM32), rồi xuất PWM để chạy ESC hobby, và ESC điều khiển động cơ. ESC dựa trên vi điều khiển nên có thể flash lại, nhưng việc đó phiền phức và khó chịu. Telemetry thường tách khỏi điều khiển, điều khiển cũng tách khỏi video, tất cả đều tầm ngắn và không dựa trên IP
Trong khi đó, các quadcopter thương mại bán sẵn như DJI xử lý cả điều khiển, video và telemetry trên một backhaul duy nhất giữa máy bay và tay điều khiển, với độ trễ video thấp ấn tượng. Có lẽ họ dùng chipset họ WiFi để phát các raw vendor frame và phía nhận thu được nhiều nhất có thể theo kiểu best-effort. Có vẻ chế độ ESP-NOW của ESP32 cũng có thể làm tương tự. Tôi đã thấy các nỗ lực đảo ngược giao thức DJI, nhưng không biết có bản triển khai tương thích hoàn toàn hay phương án tương đương trong thế giới mã nguồn mở nào không
Ở phân khúc cao của mảng thương mại/độc quyền còn có những hệ thống với khả năng tự hành dùng ngay, backhaul đa kênh dựa trên IP (vô tuyến trong/ngoài tầm nhìn, LTE, liên lạc vệ tinh, v.v.), tích hợp beacon dẫn đường để giảm phụ thuộc GPS, động cơ/máy phát hybrid, thậm chí hệ thống nguồn dự phòng kép
Tôi không thấy khoảng cách này cần tồn tại vì lý do nào khác ngoài mức độ quan tâm của lập trình viên. Gần như mọi linh kiện đều có thể mua được, và một Raspberry Pi chạy hệ điều hành thời gian thực ổn có năng lực xử lý lớn hơn STM32 rất nhiều, đủ để dễ dàng làm hợp nhất đa cảm biến kiểu hệ thống thương mại. Modem LTE cũng rẻ, còn hexacopter lớn hơn hoặc máy bay cánh cố định có thể nâng cả một đĩa Starlink nhỏ. Những thứ như “perching” — hạ cánh lên tấm pin mặt trời để sạc — cũng hoàn toàn khả thi
Tuy nhiên, mũi nhọn của drone mã nguồn mở dường như đang diễn ra sau những cánh cửa đóng kín ở Ukraine và Iran. Nếu có công nghệ mới nào tôi bỏ lỡ thì tôi sẵn sàng được đính chính, nhưng khoảng cách giữa “những gì có thể làm” và thực tiễn hiện tại có vẻ lớn. Đồng thời, cũng có thể xem đó là có rất nhiều cơ hội
Tôi luôn thấy khó tìm thông tin về drone mở có thể bay giống DJI, có lẽ vì bản thân tôi cũng không biết phải tìm cái gì
Thú chơi “máy bay mô hình/bay điều khiển từ xa” cũng đã phát triển mạnh trong nhiều thập kỷ, và chỉ nhìn các mục phân loại ở đây cũng thấy rất phong phú: https://www.rcgroups.com/forums/index.php
Nếu nghiêm túc xem qua nhiều diễn đàn con, bạn sẽ thấy những thiết kế đáng kinh ngạc, phá vỡ khái niệm “bình thường” về một phương tiện bay nên trông như thế nào theo góc nhìn thông thường. Các từ khóa như Magnus, aerostat, Fettler khá hữu ích
Tôi có cảm giác đây có thể là ai đó đã đăng lại esp-drone của Espressif (https://github.com/espressif/esp-drone) rồi nhận như đồ của mình. DigiKey thì lại đưa nó lên trang của họ.
Họ nói đã làm PCB tùy chỉnh, nhưng trông gần như giống hệt. Kho lưu trữ được liên kết trong bài (https://github.com/Circuit-Digest/ESP-Drone) cũng có issue nói rằng có mã độc, và lịch sử commit cũng trông hơi đáng ngờ. Có thể tôi sai.
Phần lớn repository là file văn bản thường, còn zip và bin có vẻ không cần cho việc build, nên nếu thấy lấn cấn thì cứ xóa trước khi build.
https://www.bitcraze.io/products/old-products/crazyflie-2-0/
https://github.com/Circuit-Digest/ESP-Drone/blob/main/Firmwa...
Tôi xem đây là vi phạm giấy phép. DigiKey thuê những người như vậy trông rất xấu.
Bài này xuất hiện đúng thời điểm một cách kỳ lạ. Ở Mỹ đang có chuyện giống như cuồng loạn tập thể, mà hóa ra có thể sản xuất drone DIY với giá 12–13 USD mỗi chiếc, đúng là thời đại đáng kinh ngạc.
Dạo này có người coi chúng là UFO riêng biệt, nên thật ra drone rẻ có khi còn quá mức; chỉ cần một bó 20 chiếc đèn trời Trung Quốc có lẽ cũng đủ để giữ một khu dân cư Mỹ trung bình trong trạng thái hoảng sợ liên tục, hoặc xem mất bao lâu để lên trang đầu /r/UFOs.
Thú vị đấy. Trước đây tôi từng làm Crazyflie[1], khi đó ESP32 còn chưa có nên phải dùng giao thức 2.4GHz tùy chỉnh; cái này là một bản nâng cấp tuyệt vời cho nó.
Việc dùng một MOSFET low-side đơn làm bộ điều khiển động cơ cũng khiến nó đơn giản và rẻ hơn, đổi lại là từ bỏ một phần hành vi mà động cơ BLDC có thể đem lại. Nhìn chung 10–15 USD là mức giá rất tốt, và tôi tò mò liệu nó có được đưa vào Hackerbox[2] không. Đúng kiểu món đồ họ sẽ làm.
Tôi đã chơi rất vui với microdrone CF, và chắc chắn cũng sẽ thử tự làm một chiếc này.
[1] https://github.com/bitcraze/crazyflie-firmware
[2] https://hackerboxes.com/
Tôi đang xem xét việc biến iPhone cũ thành drone. Nó đã có sẵn phần cứng tốt để xử lý các tác vụ cấp cao, còn những việc mang tính thời gian thực hơn như thực sự điều khiển động cơ theo đầu vào cảm biến thì giao cho ESP32 là được.
Chỉ riêng một chiếc iPhone 6 cũ đã có GPS, con quay hồi chuyển, gia tốc kế, nhiều camera, bộ xử lý khá mạnh, Bluetooth/WiFi/LTE, âm thanh và đèn, cảm biến ánh sáng môi trường và tiệm cận. Tháo vỏ ra thì nó trở thành một máy tính mini tuyệt vời có thể nhận biết môi trường xung quanh và liên lạc.
Với iPhone mới hơn, có thể dùng công nghệ nâng cao như ARKit để có hiểu biết không gian về drone và môi trường, từ đó tạo drone tự hành. iPhone 15 thì còn quay được video không gian. Nghĩ thôi đã thấy ngầu.
Ước gì Apple cung cấp một cách đơn giản để gỡ các hạn chế ở cấp hệ điều hành, cho phép dùng điện thoại cũ trong các dự án DIY.
Có lẽ dùng điện thoại cũ làm bộ điều khiển sẽ hợp hơn.
Nếu không muốn tự làm từ đầu, có thể trả thêm một chút để mua thành phẩm lập trình được: https://shop.m5stack.com/products/m5stamp-fly-with-m5stamps3...
Stack phần mềm đi kèm rất cơ bản, còn về avionics mã nguồn mở thì có thể lục Twitter của giới nerd Nhật.
Tuyệt vời. Đến cả càng đáp (giá đỡ?) cũng là một phần của PCB. Mong tác giả bán kit hoặc thuê gia công ở nơi như Seeed Studio. Tôi sống ở một nước mà phí vận chuyển đơn hàng DigiKey khá đắt
Tác giả ước tính chi phí theo BOM chỉ dưới 13 đô la. Với giá đó thì thử làm một bầy drone cho DIY drone light show chắc sẽ vui
[1] https://circuitdigest.com/microcontroller-projects/DIY-wifi-...
Tuy nhiên, theo các nhà cung cấp mà tôi có thể dùng được thì 1 cái trông gần với 50 đô la hơn, còn 10 cái khoảng 150 đô la
Dù vậy có lẽ vẫn có thể giảm chi phí một chút. Chip USB-serial gần 6 đô la, trong khi package khác là 4,40 đô la cho 1 cái hoặc 3,99 đô la/cái khi mua 10 cái, và các chip thay thế có vẻ đủ dùng có thể còn rẻ hơn. Bộ điều chỉnh điện áp được chọn là loại 500mA giá 1 đô la/cái, còn loại tôi thường chọn là 1000mA giá 0,22 đô la/cái, và mua 10 cái thì xuống còn 0,13 đô la/cái
Cảm giác hơi không hợp vì số core dùng được bị hạn chế
Giá như dùng thứ gì đó như rp2350 thì hay. Vì nó có I/O core siêu tiết kiệm điện có thể hoạt động bất kể core chính đang bật hay không. Embedded là một trong những lĩnh vực phù hợp nhất với đa core, nhưng quá hiếm khi có kiến trúc offloading tốt và một hệ thống Programmable IO không nghèo nàn
Cũng đáng nhắc đến các sản phẩm như GreenPAK của Silego/Dialog/Renesas. Rất nhỏ nhưng là logic lập trình được mixed-signal thú vị, kèm khá nhiều peripheral
Thay vào đó, ultra-low-power coprocessor của ESP32 có thể đúng là rất hợp cho mục đích này, nhưng thực tế thì không đáng với công sức bỏ ra. Công suất tính toán là không đáng kể so với điện năng mà WiFi và rotor yêu cầu, và chạy nhiều tác vụ thời gian thực trên một core cũng không phải khoa học tên lửa
Chúng ta đã đưa con người lên Mặt Trăng bằng phần cứng còn yếu hơn thế. Thêm nhiều core chỉ làm tăng độ phức tạp
Tôi từng nghịch chiếc drone WiFi gập được giá 25 euro của Lidl cho đến khi EU yêu cầu phí 30 euro mỗi năm đối với drone có camera
Tôi không nghĩ ra nhiều ứng dụng thực tế cho drone không có camera. Câu cá bằng ruồi giả có thể là một ví dụ, nhưng phải lập trình để nó thả dây câu và quay về ngay khi cảm thấy cá kéo
https://www.iaa.ie/general-aviation/drones/drone-register
Nếu bay đủ nhanh, khi dây căng thì nó sẽ tuột khỏi kẹp và rơi xuống
Bài của DigiKey mà lại không có nút Buy now thì lạ thật
Nếu có thể nhận được tất cả linh kiện và chắc chắn mình không bỏ sót gì thì tôi sẽ thử ngay
Nhưng một linh kiện đã ngừng sản xuất nên không mua được, và hai linh kiện có số lượng đặt hàng tối thiểu lớn hơn số lượng cần ở đây, nên cũng không lý tưởng lắm