1 pontos por GN⁺ 2024-12-25 | 1 comentários | Compartilhar no WhatsApp
  • 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.bin fornecido
  • Depois de ligar, conecte-se ao hotspot WiFi criado pelo drone com a senha 12345678 e 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 hold ou height hold com 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.bin e defina o endereço como 0x00
      • Selecione a porta COM correta, apague e depois grave com START

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 12345678 e 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

 
GN⁺ 2024-12-25
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

    • Uma parte considerável desse ecossistema é open source
      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
    • Em linhas gerais, isso está certo, mas é preciso ajustar as expectativas. A menos que haja alguma área específica em que o ecossistema open source esteja avançando especialmente rápido, ele parece bem atrás do lado comercial proprietário
      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
      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
    • E quem é realmente ruim pilotando drones deve fazer o quê? Já tentei FPV, mas não consegui evoluir muito, enquanto curto demais o DJI Mini
      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 texto cita como vantagem que, por ser “uma PCB tudo-em-um, não precisa de peças impressas em 3D” nem coisas do tipo, mas em casa até consigo fazer impressão 3D e corte a laser razoavelmente bem; o que não tenho é equipamento para fabricar PCB, e minha habilidade de solda não vai muito além de through-hole
    • Sobre a observação de que o ecossistema de drones FPV montáveis por conta própria é ativo: para quem há décadas constrói aeronaves que poderiam virar drones a qualquer momento, rcgroups.com já era, na prática, o ecossistema de referência muito antes de drones se espalharem tanto
      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.

    • Como quem abriu a issue nem disse quais arquivos foram afetados, é pura especulação, mas o problema de vírus parece um falso positivo. Firmware pré-compilado incluído no repositório pode facilmente disparar antivírus.
      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.
    • Os dois projetos citam o Crazyflie como inspiração, então a semelhança pode ter surgido daí.
      https://www.bitcraze.io/products/old-products/crazyflie-2-0/
    • Sim, parece que pegaram diretamente código protegido por copyright do esp-drone.
      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.
    • Eu achava que a Espressif tinha escrito só o firmware, mas este drone é realmente muito parecido com o que eles publicaram, incluindo até os suportes da PCB.
  • 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.

    • Pelos posts que tenho visto, já tem gente começando. Alguns dias atrás apareceu alguém que prendeu velas romanas acesas em um drone. Ou então eram alienígenas obedecendo às regras da FAA; uma das duas opções.
    • A única forma de encobrir avistamentos reais é espalhar avistamentos falsos.
    • A parte interessante e assustadora é que não é difícil transformar esses drones em armas. Dá para fazê-los soltar explosivos caseiros, operar de forma totalmente autônoma e depois se jogar na água. Sai muito mais barato do que uma arma de fogo.
    • Histeria coletiva nos EUA? A que isso se refere? A confusão dos balões meteorológicos chineses não foi há alguns anos?
  • 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.

    • Será que precisa mesmo ser um telefone? Um ESP32 dual-core de 240 MHz também parece capaz de dar conta, com menos peso e consumo de energia.
      Talvez um telefone antigo seja mais útil como controle remoto.
    • Para esse uso, eu realmente evitaria qualquer hardware feito pela Apple. Melhor não desperdiçar horas da vida com isso.
    • Ainda assim, não é um sistema operacional de tempo real.
  • 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.

    • Verdade, mas custa 3 vezes mais e está esgotado :(
  • 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-...

    • Para referência, fazendo só 10 unidades, o preço de US$ 13 já poderia cair bastante
      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

    • Chamar a unidade PIO do RP2350 de “núcleo de I/O de baixo consumo” é um baita exagero. Com bastante hack, em tese ela é Turing-completa, mas é realmente péssima para qualquer tipo de computação. Eu nem confiaria a ela o cálculo de paridade de UART
      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ão é preciso mais núcleos. O ArduPilot roda em hardware muito menos potente: https://ardupilot.org/copter/docs/common-autopilots.html#com...
      Nós mandamos gente para a Lua com hardware mais fraco do que isso. Mais núcleos só aumentam a complexidade
    • Só um RP2040 já é suficiente para fazer um drone básico funcionar. Aprendi bastante com este projeto: https://github.com/holsatus/holsatus-flight
  • 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

    • A UE não exige uma taxa anual de 30 euros para drones com câmera. O seu país pode fazer isso, mas o meu certamente não
    • Na Irlanda, o registro de drone é necessário se ele tiver mais de 250 g ou tiver câmera, e custa 38 euros por 2 anos
      https://www.iaa.ie/general-aviation/drones/drone-register
    • Quanto será que um drone de 30 euros consegue levantar? Mesmo uma truta de 600 g poderia puxá-lo facilmente para dentro d’água, a menos que o drone fosse absurdamente superpotente
    • Já fiz isso com meu drone. Prendi um pequeno clipe de pacote que abre pela lateral na parte de baixo do drone
      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

    • Lá embaixo há um link pequeno dizendo “Add all DigiKey Parts to Cart”
      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