Como construir um drone de baixo custo com ESP32
(digikey.com)- O drone DIY baseado em ESP32 implementa um pequeno drone WiFi controlado por smartphone com componentes baratos, permitindo praticar de uma só vez controle de drones, PCB e firmware
- O centro do projeto é uma PCB integrada que reúne USB Type-C, circuito de carregamento da bateria, ESP32, CP2102 USB-UART, MPU6050 e driver de motor SI2302
- O firmware é baseado no ESP-drone firmware da Espressif e pode ser compilado diretamente com o ESP-IDF 4.4.5 ou gravado usando o
ESPDrone.binfornecido - Depois de ligar, conecte-se ao hotspot WiFi criado pelo drone com a senha
12345678e controle-o pelo app no iOS ou Android - Se o desempenho de descarga da bateria for insuficiente, a conexão com o app pode cair ou o drone pode reiniciar na decolagem; por isso é necessária uma bateria com alta taxa de descarga, como uma 1300mAh 30C
Visão geral do projeto e recursos
- Este projeto mostra como montar diretamente um drone WiFi controlado por smartphone usando ESP32 e componentes periféricos
- A aeronave pequena e leve usa um módulo ESP32, IMU MPU6050, motores coreless e hélices de plástico
- Os principais recursos são os seguintes
- Controle via WiFi pelo smartphone
- IMU MPU6050 para controle de estabilidade
- PCB integrada sem necessidade de peças impressas em 3D
- Possibilidade de adicionar
position holdouheight holdcom módulos externos - Carregador de bateria integrado
- Interface USB integrada para programação e depuração
- Suporte a apps Android e iOS
- Código aberto
Configuração do circuito
- A porta USB Type-C é responsável por carregamento e programação
- O controle do caminho de alimentação usa o MOSFET P-Channel U2 e o diodo D1 para alternar entre a alimentação USB e a alimentação da bateria
- A regulação de tensão fica a cargo do LDO MIC5219 3.3V da Microchip
- O controlador de carga TP4056 gerencia o carregamento da bateria, e a detecção de tensão é feita por um circuito divisor de tensão
- A parte principal de controle é composta pelo SoC ESP32, pelo controlador USB-UART CP2102 e pelo chip IMU MPU6050
- O CP2102 e o MOSFET duplo simplificam a função de reset do ESP32
- O MPU6050 é conectado aos pinos GPIO do ESP32 e é usado para estabilização de voo e controle de movimento
- O circuito do driver de motor controla os motores com o MOSFET N-Channel SI2302, junto com diodos de proteção e resistores
- Os LEDs de depuração são usados para verificar o estado
- LED azul: calibração
- LED verde: detecção de conexão
- LED vermelho: bateria fraca
- Também inclui indicadores de energia e carregamento
PCB e montagem
- Para deixar o produto final pequeno e fácil de montar, é usada uma PCB personalizada
- As pernas do drone também fazem parte da PCB e podem ser separadas facilmente da PCB principal
- As hélices A e B devem ser instaladas de acordo com a direção especificada
- Durante o autoteste ao ligar, é preciso verificar se as hélices giram corretamente e no sentido certo
Firmware e gravação
- O firmware é baseado no ESP-drone firmware da Espressif, e deve ser usado o código-fonte do GitHub da Circuit Digest modificado para corresponder ao projeto da PCB
- O código foi escrito com ESP-IDF, e a versão usada na compilação é a ESP-IDF 4.4.5
- Há três formas de aplicar o firmware
- Compilar o código-fonte com ESP-IDF
- Instale e configure o ESP-IDF 4.4.x
- Clone o repositório com
git clone https://github.com/Circuit-Digest/ESP-Drone.git - Vá para a pasta
ESP-Drone/Firmware/esp-drone - É possível alterar as configurações com
idf.py menuconfig, mas as padrão já são suficientes - Faça a compilação e a gravação com o comando
idf.py -p PORT flash
- Usar ESPTOOL
- Execute na pasta de imagens de firmware após instalar o ESP-IDF
- Grave com o comando
esptool.py write_flash --flash_size detect 0x0 ESPDrone.bin
- Usar o ESP32 Flash Download Tool
- Baixe e execute a ferramenta, depois selecione o tipo de chip como ESP32
- Selecione o arquivo
ESPDrone.bine defina o endereço como0x00 - Selecione a porta COM correta, apague e depois grave com START
- Compilar o código-fonte com ESP-IDF
Conexão com o app e controle
- Coloque o drone em uma superfície plana e ligue-o; o controlador de voo criará um hotspot WiFi
- Conecte-se pelo smartphone usando a senha
12345678e depois abra o app - O app para iOS pode ser obtido na App Store pesquisando por
ESP-Drone APP - O app para Android pode ser obtido pelo link fornecido, e como ele é criado e hospedado por terceiros, a instalação fica a critério do usuário
- Ao pressionar o botão connect no app, a comunicação com o drone é iniciada
- Quando a conexão é bem-sucedida, o LED do drone pisca em verde
- O botão turn lock é usado para travar o controle esquerdo para usar apenas para cima e para baixo, ou para usar cima, baixo, giro à esquerda e giro à direita
- O stick esquerdo cuida de decolagem e pouso, enquanto o stick direito é responsável pelo controle de movimento
- Se a conexão com o app cair ou o drone reiniciar na decolagem, a bateria pode não estar fornecendo energia suficiente
- Bateria de exemplo: 1300mAh 30C
- É necessária uma bateria com taxa de descarga mais alta
Verificações antes do voo
- Posicione o drone com a frente voltada para a frente e a parte da antena, que é a traseira, voltada para trás
- Ligue o drone em uma superfície nivelada e sem movê-lo
- Depois que a comunicação for configurada, verifique se o LED na traseira do drone está piscando rapidamente em verde
- Se o LED vermelho piscar, isso indica bateria fraca, então é preciso recarregar
- Empurre levemente o controle de throttle para a frente para verificar se o drone responde aos comandos
- Verifique com o controle direito se o comando de direção está funcionando corretamente
Principais componentes
- ESP32-WROOM-32E-H4: módulo RF TXRX BT/WiFi da Espressif Systems
- MPU-6050: IMU com acelerômetro de 3 eixos e giroscópio da TDK InvenSense
- CP2102N-A02-GQFN28R: ponte USB-UART da Silicon Labs
- 2N7002DW-G: MOSFET duplo N-Channel da onsemi
- MIC5219-3.3YM5-TR: regulador linear 3.3V 500mA da Microchip Technology
- AO3401: MOSFET P-Channel da Alpha & Omega Semiconductor
- SI2302DDS-T1-BE3: MOSFET N-Channel da Vishay Siliconix
- JS102011SAQN: chave deslizante SPDT da C&K
- 1N4148W: diodo padrão da Diotec Semiconductor
- SS34: diodo Schottky 40V 3A da MDD
1 comentários
Opiniões no Hacker News
Para quem não está familiarizado, vale acrescentar que já existe um ecossistema de drones FPV que você pode montar por conta própria e que é bastante ativo
Uma configuração comum combina uma pequena PCB quadrada com MCU de controle de voo baseado em STM32 e sensores, uma PCB de driver de motor, um frame de fibra de carbono, uma PCB de módulo de rádio LoRa, câmera e sistema de transmissão de vídeo — analógico no estilo de câmeras de segurança dos anos 90 ou digital —, motores DC brushless e hélices, entre outros
No firmware, dá para usar Betaflight, ArduPilot, iNav, PX4 ou até escrever o seu próprio. O frame de PCB do artigo é elegante e certamente conveniente, mas fico em dúvida se terá rigidez suficiente para entregar as características de controle desejadas em situações de alta aceleração
Para software de ESC há https://github.com/am32-firmware, https://github.com/mathiasvr/bluejay, e para controladores de voo há https://github.com/betaflight, https://github.com/ArduPilot, https://github.com/iNavFlight
Para o link de controle há https://github.com/ExpressLRS, que também usa chips ESP32/ESP82. Para rádios de controle, há https://github.com/EdgeTX
Há apenas 5 anos, a maior parte era tecnologia proprietária e entrar no hobby custava milhares de dólares, mas hoje é possível começar por cerca de US$ 500. Em FPV, o grande custo são os óculos, mas dá para encontrar óculos analógicos baratos por cerca de US$ 100
O software de controle de voo melhorou de forma incremental, e o subsistema de vídeo também migrou em grande parte do analógico para digital em 2,4/5,8 GHz, mas a arquitetura geral não mudou muito em relação a 5 anos atrás. Transmissores e receptores R/C de hobby passam pelo controlador de voo — geralmente um STM32 — para acionar ESCs de hobby por saídas PWM, e os ESCs controlam os motores. Os ESCs são baseados em microcontroladores, então podem ser regravados, mas isso é trabalhoso e irritante. A telemetria normalmente é separada do controle, o controle também é separado do vídeo, tudo é de curto alcance e nada é baseado em IP
Já quadricópteros comerciais prontos como os da DJI tratam controle, vídeo e telemetria entre a aeronave e o controle por um único backhaul, com latência de vídeo impressionantemente baixa. Imagino que seja algo na linha de usar chipsets da família WiFi para disparar frames brutos de fornecedor e o receptor captar o máximo que conseguir, em modo best-effort. Parece que daria para fazer algo parecido com o modo ESP-NOW do ESP32. Já vi tentativas de engenharia reversa do protocolo da DJI, mas não conheço uma implementação totalmente compatível nem uma alternativa equivalente no mundo open source
No topo do segmento comercial e proprietário, há sistemas com autonomia pronta para uso, múltiplos backhauls baseados em IP — rádio com e sem linha de visada, LTE, comunicação via satélite etc. —, integração com beacons de navegação para reduzir a dependência de GPS, motor/gerador híbrido e até sistemas de energia redundantes
Não parece necessário que essa lacuna exista por outro motivo além do interesse dos desenvolvedores. Quase todos os componentes estão disponíveis, e um Raspberry Pi rodando um bom sistema operacional em tempo real tem poder de processamento muito maior que um STM32, permitindo facilmente fusão multissensorial ao estilo de sistemas comerciais. Modems LTE também são baratos, e hexacópteros maiores ou aeronaves de asa fixa conseguem até erguer uma antena pequena da Starlink. Coisas como “perching”, pousar em painéis solares para recarregar, também parecem totalmente possíveis
Ainda assim, a ponta de lança dos drones open source parece estar acontecendo a portas fechadas na Ucrânia e no Irã. Se houver alguma tecnologia nova que eu tenha perdido, aceito de bom grado a correção, mas a distância entre “o que é possível” e a prática atual parece grande. Ao mesmo tempo, isso também significa que há muitas oportunidades
Sempre acho difícil encontrar informações sobre drones abertos que voem como os da DJI, e talvez eu nem saiba direito o que procurar
O hobby de “aeromodelismo/voo por controle remoto” também prospera há décadas, e só pelas categorias aqui já dá para ver como é rico: https://www.rcgroups.com/forums/index.php
Se você explorar seriamente os vários subfóruns, vai encontrar projetos surpreendentes que quebram o senso comum sobre como uma aeronave “normal” deveria ser. Termos como Magnus, aerostat e Fettler são buscas bem boas
Fico com a impressão de que alguém simplesmente repostou o esp-drone da Espressif (https://github.com/espressif/esp-drone) e o apresentou como se fosse seu. E a DigiKey acabou colocando isso no site dela.
Dizem que fizeram uma PCB personalizada, mas parece quase idêntica. No repositório linkado no artigo (https://github.com/Circuit-Digest/ESP-Drone) há também uma issue dizendo que existe malware, e o histórico de commits parece um pouco suspeito. Posso estar errado.
A maior parte do repositório é de arquivos de texto simples, e os zips e bins não parecem necessários para o build; se isso incomodar, dá para apagá-los antes de compilar.
https://www.bitcraze.io/products/old-products/crazyflie-2-0/
https://github.com/Circuit-Digest/ESP-Drone/blob/main/Firmwa...
Eu diria que é uma violação de licença. Pega muito mal a DigiKey contratar esse tipo de gente.
O timing deste artigo é perfeito. Nos EUA está rolando algo parecido com histeria coletiva, e descobrir que dá para fabricar drones DIY por 12 a 13 dólares cada é sinal de que vivemos em uma era incrível.
Como hoje em dia há gente vendo UFOs em tudo, talvez até drones baratos sejam exagero; um pacote de 20 lanternas chinesas talvez baste para manter um bairro americano médio em estado de pânico ou para ver quanto tempo leva até chegar à primeira página do /r/UFOs.
Interessante. Eu já fiz um Crazyflie[1] no passado; naquela época nem existia ESP32, então ele usava um protocolo 2,4 GHz personalizado, e isto é um ótimo upgrade em relação àquilo.
Usar um único MOSFET low-side como controlador do motor também torna tudo mais simples e barato, ao custo de abrir mão de parte do comportamento que um motor BLDC oferece. No geral, por 10 a 15 dólares, é um preço muito bom, e fico curioso para saber se vai aparecer na Hackerbox[2]. É bem o tipo de coisa que eles fariam.
Me diverti bastante com microdrones CF, e com certeza pretendo montar um destes também.
[1] https://github.com/bitcraze/crazyflie-firmware
[2] https://hackerboxes.com/
Estou estudando transformar um iPhone antigo em um drone. Ele já tem um bom hardware para lidar com tarefas de alto nível, enquanto as partes mais em tempo real, como acionar de fato os motores com base nas entradas dos sensores, podem ficar a cargo de um ESP32.
Mesmo um iPhone 6 antigo tem GPS, giroscópio, acelerômetro, várias câmeras, um processador razoavelmente forte, Bluetooth/WiFi/LTE, som e luzes, sensores de luz ambiente e de proximidade. Tirando a carcaça, ele vira um excelente minicomputador capaz de perceber o ambiente e se comunicar.
Em iPhones mais recentes, daria até para usar tecnologias avançadas como ARKit para obter uma compreensão espacial do drone e do ambiente e criar um drone autônomo. Com um iPhone 15, também haveria vídeo espacial. Imagino o quanto isso seria legal.
Seria bom se a Apple oferecesse uma forma simples de remover restrições no nível do sistema operacional para usar telefones antigos em projetos DIY.
Talvez um telefone antigo seja mais útil como controle remoto.
Se você não quiser montar do zero, pode pagar um pouco mais e comprar um produto pronto e programável: https://shop.m5stack.com/products/m5stamp-fly-with-m5stamps3...
A stack de software incluída é bem básica; para aviônica open source, dá para fuçar o Twitter dos nerds japoneses.
Impressionante. Até o trem de pouso (suportes?) faz parte da PCB. Seria ótimo se o autor vendesse um kit ou terceirizasse para algum lugar como a Seeed Studio. Moro em um país onde o frete de pedidos da DigiKey é bem caro
O autor estima o custo da lista de materiais em pouco menos de US$ 13. Por esse preço, seria divertido tentar montar um enxame para um show de luzes com drones DIY
[1] https://circuitdigest.com/microcontroller-projects/DIY-wifi-...
Mas, pelos fornecedores que eu poderia usar, 1 unidade parece ficar mais perto de US$ 50, e 10 unidades em torno de US$ 150
Ainda assim, parece que dá para reduzir um pouco o custo. O chip USB-serial custa quase US$ 6; outro encapsulamento sai por US$ 4,40 em 1 unidade ou US$ 3,99 cada em 10 unidades, e um chip alternativo que parece suficiente poderia ser ainda mais barato. O regulador de tensão escolhido é de 500 mA e custa US$ 1 cada; normalmente eu escolheria um de 1000 mA a US$ 0,22 cada, caindo para US$ 0,13 cada em 10 unidades
Parece uma escolha meio inadequada pelo número limitado de núcleos disponíveis
Algo como o rp2350 seria bom, já que ele tem um núcleo de I/O de ultrabaixo consumo que pode operar esteja o núcleo principal ligado ou não. Embarcados são uma das áreas em que múltiplos núcleos fazem mais sentido, mas é raro demais encontrar uma boa arquitetura de offloading junto com um sistema de Programmable IO que não seja fraco
Também vale mencionar produtos como o GreenPAK da Silego/Dialog/Renesas. É uma lógica programável de sinal misto muito pequena, mas interessante, com vários periféricos acoplados
Na verdade, para esse tipo de uso, o coprocessador de ultrabaixo consumo do ESP32 talvez fosse perfeito, mas, na prática, não vale o esforço. A potência computacional é irrelevante perto da energia exigida pelo WiFi e pelos rotores, e rodar várias tarefas em tempo real em um único núcleo também não é nenhum bicho de sete cabeças
Nós mandamos gente para a Lua com hardware mais fraco do que isso. Mais núcleos só aumentam a complexidade
Eu brincava com um drone WiFi dobrável de 25 euros da Lidl até a UE exigir uma taxa anual de 30 euros para drones com câmera
Não consigo pensar em muitos usos práticos para um drone sem câmera. Pesca com mosca talvez seja um, mas ele precisaria ser programado para soltar a linha e voltar no instante em que sentisse o peixe puxando
https://www.iaa.ie/general-aviation/drones/drone-register
Se você voar rápido o bastante, assim que a linha fica esticada ela se solta do clipe e cai
Estranho ser um artigo da DigiKey e não ter um botão Buy now
Se eu pudesse receber todos os componentes e tivesse certeza de que nada ficou faltando, acho que tentaria na hora
Mas um dos componentes já foi descontinuado e não está disponível, e em dois deles a quantidade mínima de compra é maior do que a necessária aqui, então não é lá muito bom