Guias · 18 min de leitura

Failed uploading: no upload port provided? Como resolver o erro de carregamento no Arduino

O Arduino diz no upload port provided ou avrdude not in sync? Resolva a porta COM que não aparece, os drivers CH340, o Old Bootloader do Nano, o botão BOOT do ESP32 e o BOOTSEL do Pico.

O código não carrega no Arduino e aparece um erro vermelho do avrdude na janela de saída? Calma: quase nenhum desses problemas significa placa queimada. Eles vêm de um cabo USB que só carrega, um driver CH340 faltando, a placa ou a porta errada, um módulo ligado nos pinos 0 e 1, ou outro programa ocupando a porta. Confira as coisas na ordem certa e normalmente você resolve em poucos minutos; e mesmo que a placa esteja mesmo com defeito, existe um jeito simples de provar isso.

Neste guia, você vai ver primeiro o que acontece nos bastidores durante um carregamento e como ler a mensagem de erro. Depois, estreitamos o problema passo a passo com uma tabela de diagnóstico de sintoma, causa e solução. Também tratamos da configuração ATmega328P (Old Bootloader) no Arduino Nano, do Monitor Serial e de outros programas que travam a porta, do erro Failed to connect do ESP32 e o botão BOOT, e do método BOOTSEL e UF2 no Raspberry Pi Pico. Cada seção tem um sketch de teste curto para você conferir a placa depois que o problema for resolvido.

Placa Arduino Uno R3
Arduino Uno: o pequeno chip ao lado do conector USB cuida da comunicação com o computador; as placas originais usam um ATmega16U2, e os clones, na maioria, um CH340. Os LEDs TX, RX e L ajudam você a acompanhar o carregamento.

Como o carregamento funciona: erro de compilação ou erro de carregamento?

Quando você clica em Carregar, acontecem duas coisas separadas. Primeiro a IDE compila o seu código; se der certo, a janela de saída mostra uma linha dizendo quantos bytes o sketch usa (Sketch uses 924 bytes). Depois, um programa chamado avrdude abre a porta que você selecionou, reinicia a placa com o sinal DTR e faz o aperto de mão (handshake) com o pequeno programa carregador que fica dentro da placa, o bootloader. Depois de um reset, o bootloader escuta por apenas cerca de um segundo; se nenhum dado chegar, o programa antigo da placa continua rodando. A mensagem de erro diz qual elo dessa corrente se rompeu. Se o texto vermelho aparece durante a compilação, o problema está no seu código e não tem nada a ver com a placa ou com o cabo.

EtapaO que aconteceMensagem que você vê se falhar
1. CompilarO código é traduzido em código de máquina para o processadorCompilation error: 'x' was not declared in this scope (um erro de código, não um problema de carregamento)
2. Abrir a portaA IDE abre a porta COM selecionadano upload port provided, can't open device, Access is denied (sem porta ou porta bloqueada)
3. ResetO sinal DTR reinicia a placaprogrammer is not responding (o programador não responde)
4. HandshakeO avrdude e o bootloader entram em sincroniastk500_getsync(): not in sync: resp=0x00 (sem sincronia)
5. Gravar e verificarO programa é gravado na flash, lido de volta e comparadoverification error, first mismatch at byte (erro na verificação)
Para ler o erro direito, abra Arquivo > Preferências e marque carregar ao lado de Mostrar saída detalhada durante. O exit status 1 ou o Failed uploading bem no final só dizem que algo deu errado; a pista de verdade é a primeira linha de erro acima deles que começa com avrdude:. Copie exatamente essa linha quando for pedir ajuda em fóruns também.

Os erros mais comuns do avrdude e o que significam

Mensagem de erro (parte principal)O que significaOnde olhar primeiro
stk500_recv(): programmer is not responding (o programador não responde)A porta abriu, mas a placa nunca respondeuSeleção da porta, cabo, pinos 0 e 1, Old Bootloader em um Nano
stk500_getsync() attempt 1 of 10: not in sync: resp=0x00 (sem sincronia)Nenhum dado na linha; o bootloader nunca entrou no handshakeConfiguração do processador, reset automático, bootloader
not in sync: um valor diferente de resp=0x00 (por exemplo, 0xfe)Algo responde, mas não é o bootloaderMódulo no pino 0, saída serial do sketch em execução, baud rate diferente
ser_open(): can't open device "\\.\COM3": Access is denied. (porta ocupada)Outro programa está usando a portaMonitor Serial, uma segunda janela da IDE, PuTTY, Cura e programas parecidos
ser_open(): can't open device ... The system cannot find the file specified. (a porta não existe mais)A porta selecionada não existe maisPlaca desconectada ou o número da porta mudou; selecione a porta de novo
Failed uploading: no upload port provided (nenhuma porta selecionada)Nenhuma porta foi selecionadaFerramentas > Porta ou o seletor de placa no topo
Device signature = 0x1e950f ... Expected signature for ATmega2560 (assinatura do chip diferente)O chip da placa selecionada é diferente do que está montadoSelecione corretamente a placa de destino no menu de placas (0x1e950f é o ID do ATmega328P); essa linha aparece principalmente ao gravar um bootloader via ISP
stk500v2_ReceiveMessage(): timeoutO Mega 2560 está selecionado, mas a placa não respondeÉ mesmo um Mega, e a porta está certa?
verification error, first mismatch at byte 0x0000 (erro na verificação)O que foi gravado é diferente do que foi lido de voltaCabo, hub USB, fonte fraca, flash desgastada

Tabela de diagnóstico passo a passo: sintoma, causa, solução

Leia a tabela de cima para baixo; as primeiras linhas são os problemas mais comuns e os mais fáceis de resolver. Tente carregar de novo depois de cada mudança. Se você mudar várias coisas de uma vez, nunca vai saber qual delas resolveu, e o mesmo erro vai pegar você de novo na próxima vez.

SintomaCausa provávelSolução
Nenhum LED acende quando a placa é conectadaA porta USB ou o cabo não fornece energia, ou há um curto na placaTeste outra porta e outro cabo, tire todos os módulos, meça entre o 5V e o GND
O LED de energia acende, mas Ferramentas > Porta está cinza ou vazioCabo que só carrega ou driver faltandoUse um cabo de dados; se o Gerenciador de Dispositivos mostrar USB2.0-Serial com um sinal amarelo, instale o driver CH340
Várias portas COM na listaPortas virtuais do Bluetooth e do sistemaDesconecte e reconecte a placa e escolha a porta que some e volta
Failed uploading: no upload port provided (nenhuma porta selecionada)Nenhuma porta selecionadaSelecione a porta no seletor de placa no topo ou em Ferramentas > Porta
Access is denied, porta ocupadaA porta está aberta em outro programaFeche a segunda janela da IDE, o Plotter Serial, o PuTTY, o Cura e scripts Python e reconecte a placa
not in sync: resp=0x00 em um NanoA placa tem o bootloader antigoFerramentas > Processador > ATmega328P (Old Bootloader)
O mesmo erro com um módulo no D0 ou no D1O módulo fala na linha serial e atrapalha o handshakeDesconecte os fios do D0 e do D1 durante o carregamento e passe o módulo para outros pinos com SoftwareSerial
O mesmo erro sem nada conectadoPlaca ou porta errada, reset automático com defeito, bootloader apagadoConfira as configurações, tente um reset manual, faça o teste de loopback e grave o bootloader se precisar
ID inesperado na linha Device signatureModelo errado selecionado no menu de placasSelecione a placa que corresponde ao texto impresso no chip
O carregamento para no meio, erro de verificaçãoCabo ruim, hub USB, corrente puxada por um motor ou servoCabo curto e de boa qualidade, porta direto no computador, alimentação externa para os motores
O computador desliga a porta USB quando a placa é conectadaCurto-circuito ou sobrecorrente no circuitoTire todos os fios, teste a placa sozinha e acrescente o circuito de volta aos poucos
ESP32: Connecting... e depois Failed to connectA placa não conseguiu entrar no modo de downloadSegure o botão BOOT quando aparecer Connecting
Pico: sem porta ou No drive to deployA placa não está no modo BOOTSELSegure o BOOTSEL enquanto conecta o cabo USB

Checklist rápido e sketch de teste de carregamento

  1. Tire tudo da placa: shields, módulos e os fios dos pinos 0 e 1. Deixe só o cabo USB conectado.
  2. Conecte a placa direto em uma porta USB na parte de trás do computador; evite hubs, extensões e as portas do painel frontal.
  3. Abra Ferramentas > Porta e olhe a lista. Desconecte e reconecte a placa e anote qual porta some e volta. Se a lista nunca muda, o problema é o cabo ou o driver.
  4. Selecione o modelo exato da sua placa em Ferramentas > Placa; em um Nano, escolha também o bootloader certo em Ferramentas > Processador.
  5. Garanta que nenhum outro programa ou segunda janela da IDE esteja usando a porta; na dúvida, feche todos.
  6. Ative a saída detalhada do carregamento e carregue o pequeno sketch de teste abaixo. Testar com um código que você sabe que não tem erro descarta problemas de compilação.
  7. Continua falhando? Aperte o botão de reset: se o LED L piscar rápido uma ou algumas vezes, o bootloader está vivo. Então passe para o teste de loopback abaixo.
  8. Experimente outro computador ou outra placa. Se o problema acompanha a placa, ele está na placa; se fica no computador, está no driver ou nas configurações do sistema operacional.
C++ (Arduino IDE)
1// Yükleme testi: LED yanıp söner, sayaç yazılır / Upload test: blinks the LED, prints a counter
2unsigned long sayac = 0;   // çalışma sayacı / run counter
3
4void setup() {
5  pinMode(LED_BUILTIN, OUTPUT);   // Uno ve Nano'da pin 13 / pin 13 on Uno and Nano
6  Serial.begin(9600);
7  Serial.println("Yukleme basarili / Upload OK");
8}
9
10void loop() {
11  digitalWrite(LED_BUILTIN, HIGH);
12  delay(200);                     // yanma süresi: değiştirip tekrar yükle / on time: change it and re-upload
13  digitalWrite(LED_BUILTIN, LOW);
14  delay(800);
15  Serial.println(sayac++);        // Seri Monitör 9600 baud / Serial Monitor at 9600 baud
16}

Se o carregamento deu certo, o LED L pisca rapidinho e fica apagado por mais tempo, e o contador sobe quando você abre o Monitor Serial em 9600 baud. Para ter certeza de que o código novo chegou mesmo à placa, mude delay(200) para delay(50) e carregue de novo: se o ritmo da piscada não mudar, o programa antigo ainda está rodando. Se você vir caracteres estranhos no Monitor Serial, o baud rate do Monitor Serial não bate com o do código; isso não é um erro de carregamento.

A porta COM não aparece: cabo USB e drivers CH340 e CP2102

Se o menu de portas está cinza ou vazio, o cabo é o primeiro suspeito. Muitos cabos finos que vêm com carregadores de celular só têm os dois fios de energia; os fios de dados D+ e D- simplesmente não existem. Com um cabo assim, o LED de energia da placa acende, o que engana, mas o computador não vê nenhum dispositivo e nem toca o som de conexão. Teste o cabo transferindo arquivos para um celular ou com outra placa que você sabe que funciona. O cabo grosso tipo B do Uno raramente tem esse problema; ele é muito comum com o mini USB do Nano e com os cabos micro USB ou USB-C das placas ESP32 e Pico.

Se o cabo está bom, o driver é o segundo suspeito. Leia o texto do chip ao lado do conector USB: as placas Arduino Uno e Mega originais usam um ATmega16U2, as placas Uno e Nano clone, na maioria, um CH340G ou CH340C, e as placas de desenvolvimento ESP32 normalmente um CP2102 ou CH340. No Windows, abra o Gerenciador de Dispositivos: se a placa for reconhecida, ela aparece em Portas (COM e LPT). Se você vir USB2.0-Serial com um ponto de exclamação amarelo em Outros dispositivos, está faltando o driver CH340.

Módulo conversor USB para TTL com CH340
O chip CH340: na maioria das placas Arduino Uno e Nano clone, esse chip cuida da comunicação USB-serial, e o driver dele precisa estar instalado para o computador ver a placa.
Chip USBEncontrado emNome no WindowsNome da porta no macOS e no Linux
ATmega16U2Uno R3 original, Mega 2560Arduino Uno (COMx)/dev/cu.usbmodem… (macOS), /dev/ttyACM0 (Linux)
CH340G, CH340CUno, Nano e Mega clone, algumas placas ESP32USB-SERIAL CH340 (COMx)/dev/cu.usbserial-… (macOS), /dev/ttyUSB0 (Linux)
CP2102, CP2104ESP32 DevKit, NodeMCUSilicon Labs CP210x USB to UART Bridge (COMx)/dev/cu.SLAB_USBtoUART ou /dev/cu.usbserial-… (macOS), /dev/ttyUSB0 (Linux)
FT232RLNano original mais antigo, adaptadores FTDIPorta serial USB (COMx)/dev/cu.usbserial-… (macOS), /dev/ttyUSB0 (Linux)
CH9102Placas de desenvolvimento ESP32 mais novasUSB-Enhanced-SERIAL CH9102 (COMx)/dev/cu.wchusbserial… ou /dev/cu.usbmodem… (macOS), /dev/ttyACM0 (Linux)
USB nativa (RP2040, ATmega32U4)Raspberry Pi Pico, Leonardo, MicroDispositivo serial USB ou o nome da placa (COMx)/dev/cu.usbmodem… (macOS), /dev/ttyACM0 (Linux)

O Windows 10 e o 11 normalmente instalam sozinhos os drivers CH340 e CP2102 pelo Windows Update. Se não instalarem, baixe o driver CH341SER para o CH340 ou o driver CP210x VCP para o CP2102 no site do fabricante do chip, instale e depois desconecte e reconecte a placa. As versões atuais do macOS já trazem drivers para os dois chips; empilhar drivers antigos de fontes diferentes costuma piorar as coisas. No Linux, os drivers já estão no kernel, mas para usar a porta você precisa adicionar o seu usuário ao grupo dialout (sudo usermod -a -G dialout $USER) e sair e entrar de novo na sessão; senão, aparece o erro Permission denied. Se a porta some logo depois de conectar uma placa CH340 no Ubuntu 22.04 ou mais novo, o culpado normalmente é o pacote leitor de tela brltty; se você não usa, remova-o com sudo apt remove brltty.

Se o computador desliga a porta USB no momento em que você conecta a placa, ou se a placa fica conectando e desconectando, há um curto-circuito ou sobrecorrente no seu circuito. O Arduino Uno tem um fusível rearmável de 500 mA protegendo a linha USB; quando ele desarma, a placa nem aparece. Tire todos os fios, meça entre o 5V e o GND com um multímetro e alimente motores e servos grandes com uma fonte externa em vez dos 5V da USB.

Placa, processador ou porta errados

Na Arduino IDE 2, você seleciona a placa e a porta na lista suspensa da barra superior ou nos menus Ferramentas > Placa e Ferramentas > Porta. No Windows, você pode ver na lista a COM1 ou algumas portas Bluetooth virtuais; o jeito mais fácil de achar a certa é desconectar a placa e ver qual porta some. Se o modelo errado estiver selecionado no menu de placas, como Mega em vez de Uno ou Leonardo em vez de Nano, o avrdude ou não recebe resposta nenhuma ou vê um ID de chip inesperado na linha Device signature. Mais uma coisa: use Ctrl+U para um carregamento normal. Sketch > Carregar usando programador espera um programador ISP externo e, se der certo, apaga o bootloader da placa; depois disso, a placa não aceita mais carregamentos pela USB.

Arduino Nano não carrega: ATmega328P (Old Bootloader)

A maioria das placas Nano baratas no mercado são clones com CH340, e muitas delas ainda têm o bootloader antigo. No início de 2018, a Arduino trocou o bootloader do Nano pelo Optiboot, menor e mais rápido, usado no Uno, e desde então a opção padrão ATmega328P da IDE conversa a 115200 baud. O bootloader antigo espera 57600 baud. Quando as velocidades não batem, a placa parece não responder e o erro not in sync: resp=0x00 se repete por dez tentativas. A solução é uma única configuração de menu: Ferramentas > Processador > ATmega328P (Old Bootloader). Se você não tem certeza de qual é a certa, teste as opções uma depois da outra; uma escolha errada não faz mal nenhum à placa.

Opção de processadorBootloaderVelocidade de carregamentoQuando escolher
ATmega328POptiboot (novo)115200 baudNano original e placas com o bootloader atualizado
ATmega328P (Old Bootloader)ATmegaBOOT (antigo)57600 baudA maioria dos Nano clone com CH340
ATmega168ATmegaBOOT (antigo)19200 baudPlacas antigas com ATmega168 impresso no chip

Módulos nos pinos 0 e 1 bloqueiam o carregamento

No Uno e no Nano, o chip USB-serial é ligado ao ATmega328P através de resistores de 1 kΩ nos pinos D0 (RX) e D1 (TX). Durante um carregamento, essa linha pertence ao computador. Se um módulo serial, como um módulo Bluetooth HC-05, um GPS, um ESP-01 ou um sensor de impressão digital, estiver ligado nesses pinos, ele ou manda os próprios dados para a linha ou a segura em um nível fixo, e atrapalha o handshake do bootloader. O resultado é de novo programmer is not responding ou not in sync. A solução mais rápida é desconectar os fios do D0 e do D1 durante o carregamento; a solução definitiva é passar o módulo para outros pinos com SoftwareSerial:

C++ (Arduino IDE)
1#include <SoftwareSerial.h>
2
3// HC-05 TX -> D10, HC-05 RX <- D11 (gerilim bölücüyle / through a voltage divider)
4SoftwareSerial bt(10, 11);   // RX, TX pinleri / RX, TX pins
5
6void setup() {
7  Serial.begin(9600);        // USB: Seri Monitör / USB: Serial Monitor
8  bt.begin(9600);            // HC-05 veri modu hızı / HC-05 data mode baud rate
9  Serial.println("Hazir / Ready");
10}
11
12void loop() {
13  if (bt.available()) Serial.write(bt.read());      // telefondan bilgisayara / phone to PC
14  if (Serial.available()) bt.write(Serial.read());  // bilgisayardan telefona / PC to phone
15}

Neste sketch, o TX do HC-05 vai no D10 e o RX no D11. A entrada RX do HC-05 funciona com 3,3 V, então coloque um divisor de tensão feito com resistores de 1 kΩ e 2 kΩ entre ela e o D11. Agora você pode carregar com o módulo conectado e enviar para o celular o que digitar no Monitor Serial. Para a ligação completa e o modo de comandos AT, veja o guia do módulo Bluetooth HC-05. Em um Mega, você não precisa de SoftwareSerial: a placa tem portas seriais de hardware extras, como a Serial1 (TX1 = D18, RX1 = D19).

O Monitor Serial e os programas que ocupam a porta

Uma porta serial só pode ser aberta por um programa de cada vez. É por isso que o Windows mostra Access is denied e o macOS e o Linux mostram Resource busy. A Arduino IDE normalmente pausa o próprio Monitor Serial durante um carregamento, mas isso não funciona perfeitamente em todas as versões e com todas as placas, principalmente o ESP32; se aparecer o erro, feche primeiro a aba do Monitor Serial. Com mais frequência, a porta está presa em outra coisa: uma segunda janela da IDE, um Plotter Serial aberto, o PuTTY, um software de impressora 3D como o Cura, o monitor do PlatformIO no VS Code ou um script Python rodando em segundo plano. Feche-os, desconecte e reconecte a placa e tente de novo. No Linux, você vê qual programa está segurando a porta com sudo lsof /dev/ttyUSB0.

A placa está queimada? Teste de loopback e gravação do bootloader

Se você tentou tudo acima e ainda não carrega, precisa descobrir se o problema está no lado da USB ou no processador principal. O método clássico para o Uno e o Nano é o teste de loopback: você mantém o processador principal em reset e deixa o chip USB-serial conversar consigo mesmo. Você não precisa carregar nenhum código para esse teste.

  1. Tire todos os fios da placa e deixe só o cabo USB conectado.
  2. Use um jumper para ligar o pino RESET ao GND; isso mantém o ATmega328P em reset, fora da linha.
  3. Use um segundo fio para ligar os pinos D0 e D1 entre si.
  4. Selecione a porta da placa na IDE e abra o Monitor Serial; o baud rate não importa para esse teste.
  5. Digite alguns caracteres na caixa e envie. Se o seu texto voltar na hora, o cabo, o driver e o chip USB-serial estão bons, e o problema está no processador principal ou no bootloader. Se nada voltar, o problema está no lado da USB.
  6. Não se esqueça de tirar os dois fios quando terminar.

Se o teste de loopback passa, mas os carregamentos continuam falhando, e o LED L não pisca rapidinho quando você aperta o reset, o bootloader pode ter sido apagado ou o chip substituído. Você pode gravar o bootloader de novo com um segundo Uno. Carregue Arquivo > Exemplos > 11.ArduinoISP > ArduinoISP no Uno que vai funcionar como programador. Depois, ligue o D10 do programador ao pino RESET da placa de destino, o D11, o D12 e o D13 aos pinos de mesmo número da placa de destino, e o 5V e o GND um ao outro. Coloque um capacitor de 10 µF entre o RESET e o GND do Uno programador; isso impede que ele se reinicie sozinho. Por fim, selecione Ferramentas > Programador > Arduino as ISP, escolha a placa de destino no menu de placas e execute Ferramentas > Gravar bootloader. Você também pode usar esse método para colocar o Optiboot novo em um Nano clone.

ESP32 não carrega: Failed to connect e o botão BOOT

No ESP32, o carregamento é feito pelo esptool, e não pelo avrdude. A saída mostra primeiro uma linha Connecting........_____..... enquanto o esptool tenta colocar a placa no modo de download. Se não conseguir, aparece um erro que começa com A fatal error occurred: Failed to connect to ESP32. Nas versões atuais do esptool, se a placa iniciou normalmente, a mensagem continua com Wrong boot mode detected (0x13)! The chip needs to be in download mode.; 0x13 significa que a placa iniciou no modo de boot normal em vez do modo de download. Se a placa não responde nada, a mensagem termina com No serial data received; as versões antigas mostram isso como Timed out waiting for packet header. Se a placa não consegue entrar no modo de download sozinha, você faz isso à mão.

Placa de desenvolvimento ESP32
Placa de desenvolvimento ESP32: os botões EN (reset) e BOOT (GPIO0) da placa permitem colocá-la no modo de download à mão quando o carregamento automático falha.
  1. Clique em Carregar na IDE e observe a janela de saída.
  2. Assim que aparecer Connecting..., aperte e segure o botão BOOT da placa.
  3. Se ainda não conectar, aperte e solte rapidamente o EN uma vez enquanto segura o BOOT.
  4. Solte o BOOT quando as linhas que começam com Writing at e a porcentagem do carregamento começarem a rolar na saída.
  5. O carregamento termina com Hard resetting via RTS pin.... Se o programa não iniciar, aperte o EN uma vez.

Por que isso acontece? Para entrar no modo de download, o pino GPIO0 do ESP32 precisa estar em LOW no momento em que ele inicia. O circuito de reset automático com dois transistores das placas de desenvolvimento faz isso sozinho com os sinais DTR e RTS do chip USB; em placas baratas, o circuito pode errar o tempo. Se você está cansado de apertar o BOOT toda vez, existe uma solução definitiva: ligue um capacitor eletrolítico de 10 µF entre o pino EN e o GND da placa (terminal negativo no GND). O capacitor deixa mais lenta a subida da linha EN e dá tempo para o circuito de reset automático segurar o GPIO0 em LOW.

Mensagem de erro do ESP32Causa provávelSolução
Wrong boot mode detected (0x13) (modo de boot errado)O circuito de reset automático não conseguiu colocar a placa no modo de downloadBotão BOOT; para uma solução definitiva, 10 µF entre o EN e o GND
No serial data received ou Timed out waiting for packet headerNenhum dado da placa: cabo que só carrega, porta errada ou placa que nunca entrou no modo de downloadCabo de dados, a porta certa em Ferramentas > Porta, o botão BOOT
This chip is ESP32-S3 not ESP32. Wrong --chip argument? (modelo de chip diferente)O modelo de ESP32 selecionado em Ferramentas > Placa é diferente do que está na sua placaSelecione o modelo que corresponde ao módulo da placa (ESP32, ESP32-S3 e ESP32-C3 são placas diferentes)
Could not open COM3, a porta está ocupada ou não existeO Monitor Serial ou outro programa está segurando a portaFeche o Monitor Serial e os outros programas e desconecte e reconecte a placa
Invalid head of packet: Possible serial noise or corruption (ruído na linha serial)Cabo longo ou ruim, fonte fraca, velocidade de carregamento altaBaixe Ferramentas > Upload Speed de 921600 para 115200
O carregamento dá certo, mas o boot mostra flash read err, 1000O GPIO12 em HIGH no boot faz a tensão errada da flash ser selecionadaPasse o módulo do GPIO12 para outro pino
A porta some depois do carregamento (ESP32-S3, ESP32-C3)Em uma placa com USB nativa, o programa travou ou desligou a USBConecte a USB segurando o BOOT; Ferramentas > USB CDC On Boot: Enabled
Os pinos GPIO0, GPIO2, GPIO12 e GPIO15 do ESP32 são pinos de strapping, lidos no boot. Um módulo que puxa o GPIO2 para HIGH ou que impede o GPIO0 de ir para LOW bloqueia o modo de download; um módulo que puxa o GPIO12 para HIGH pode impedir a placa de iniciar. Se os carregamentos só falham com o seu circuito ligado, confira esses pinos primeiro. Para a lista de pinos seguros, veja a ferramenta Pinagem e o guia O que é ESP32?
C++ (Arduino IDE)
1// ESP32 yükleme testi / ESP32 upload test
2const int LED_PIN = 2;   // birçok DevKit kartında dahili LED / onboard LED on many DevKit boards
3
4void setup() {
5  pinMode(LED_PIN, OUTPUT);
6  Serial.begin(115200);   // Seri Monitör 115200 baud / Serial Monitor at 115200 baud
7  delay(500);
8  Serial.print("Model: ");
9  Serial.println(ESP.getChipModel());                 // ör. ESP32-D0WD-V3 / e.g. ESP32-D0WD-V3
10  Serial.print("Flash (MB): ");
11  Serial.println(ESP.getFlashChipSize() / (1024 * 1024));
12  Serial.print("CPU (MHz): ");
13  Serial.println(getCpuFrequencyMhz());
14}
15
16void loop() {
17  digitalWrite(LED_PIN, !digitalRead(LED_PIN));   // LED'i tersle / toggle the LED
18  delay(500);
19}

Raspberry Pi Pico: carregando com BOOTSEL e UF2

O Pico não tem um chip USB-serial separado; o RP2040 tem o próprio controlador USB, e o bootloader fica na ROM do chip, que não pode ser apagada. Isso torna quase impossível "brickar" um Pico por software. Se você segurar o botão BOOTSEL enquanto conecta o cabo USB, o Pico aparece no computador como um pen drive chamado RPI-RP2 (no Pico 2, a unidade se chama RP2350). Qualquer arquivo .uf2 que você arrastar para essa unidade é gravado na placa, que depois reinicia sozinha; é assim também que você instala o MicroPython.

Se você programa o Pico com a Arduino IDE, ainda não existe porta COM no primeiro carregamento; conecte a placa segurando o BOOTSEL e clique em Carregar. Depois do primeiro sketch, a placa abre uma porta serial e os carregamentos seguintes não precisam do BOOTSEL. Se o seu código travar ou desligar a USB, a porta some de novo e aparece o erro No drive to deploy; aí volte para o método do BOOTSEL. Se você usa MicroPython, MicroPython (Raspberry Pi Pico) precisa estar selecionado como interpretador no canto inferior direito do Thonny. Para os pinos e a configuração do Pico, veja o guia O que é Raspberry Pi Pico?

SintomaCausa provávelSolução
A unidade RPI-RP2 nunca apareceCabo que só carrega, ou o BOOTSEL foi apertado depois de conectar o caboUse um cabo de dados; aperte primeiro o BOOTSEL, depois conecte o cabo e solte quando a unidade aparecer
Arduino IDE: No drive to deployA placa não está no modo BOOTSEL e não há porta serialReconecte segurando o BOOTSEL e clique em Carregar
Thonny: Couldn't find the device automatically (dispositivo não encontrado)O MicroPython não está instalado ou a placa ainda está no modo BOOTSELInstale o UF2 com a opção Install or update MicroPython do Thonny
Thonny: Device is busy or does not respond (dispositivo ocupado)O main.py está preso em um loop e ignora os comandosAperte o botão Parar (Stop) ou Ctrl+C; se não funcionar, desconecte e reconecte a placa
O código rodou, mas a placa não o inicia sozinhaO arquivo não foi salvo no Pico como main.pySalve o arquivo no local Raspberry Pi Pico como main.py
A placa fica travando e nada carregaUm arquivo corrompido ou um programa com defeito na flashApague a flash com o flash_nuke.uf2 e depois reinstale o MicroPython
MicroPython
1import time
2from machine import Pin
3
4time.sleep(3)   # açılışta 3 sn bekle, Thonny durdurabilsin / wait 3 s so Thonny can stop the script
5
6led = Pin("LED", Pin.OUT)   # Pico ve Pico W dahili LED / onboard LED on Pico and Pico W
7sayac = 0
8while True:
9    led.toggle()
10    print("Calisiyor / running", sayac)
11    sayac += 1
12    time.sleep(0.5)

Causas pequenas, mas traiçoeiras, fáceis de deixar passar

  • Leonardo, Micro e Uno R4: nessas placas com USB nativa, a porta pode mudar por um instante durante o carregamento. Se o carregamento travar, clique em Carregar e aperte o botão de reset uma vez assim que a compilação terminar e a etapa de carregamento começar (duas vezes rápido no Uno R4); a placa espera um pouco no bootloader e o código é carregado nesse momento.
  • Reset automático com defeito: se o reset automático não funciona em um Uno ou Nano, segure o botão de reset, clique em Carregar e solte assim que a linha com o tamanho do sketch aparecer na saída.
  • Shields e circuitos externos: um shield de driver de motor ou um circuito que sobrecarrega a linha de 5V pode fazer a tensão de alimentação cair durante o carregamento e cortar a gravação no meio.
  • Porta errada no macOS: /dev/cu.Bluetooth-Incoming-Port e /dev/cu.debug-console na lista de portas não são a sua placa, e sim portas do sistema. O nome da porta da sua placa contém usbmodem, usbserial ou wchusbserial; se não tiver certeza, desconecte e reconecte a placa e veja qual some.
  • Caracteres não ASCII no nome de usuário: se a sua pasta de usuário do Windows tem letras acentuadas ou não latinas, as ferramentas de compilação e carregamento de alguns pacotes de placas, principalmente o do ESP32, podem não encontrar os arquivos. Mude o seu sketchbook para um caminho sem esses caracteres em Preferências; se o problema continuar, crie um novo usuário no Windows.
  • Sketch grande demais: o aviso Sketch too big não é um erro de carregamento; ele diz que o seu código não cabe nos cerca de 31,5 KB de flash que sobram no Uno depois do bootloader. Enxugue bibliotecas e textos longos ou passe para uma placa maior.
  • Porta travada depois da suspensão: depois que o computador sai da suspensão, a porta pode travar; reiniciar a IDE ou conectar a placa em outra porta USB costuma resolver.
Quando for testar uma placa nova pela primeira vez, comece sempre com um código simples que você sabe que não tem erro, como o sketch de teste acima, e não com o código do seu projeto. Se o sketch simples carrega e o seu projeto não, a placa está boa; o problema está na compilação do seu código ou nos pinos que o projeto usa. Fazer essa distinção já é metade do diagnóstico.

O carregamento funciona: e agora?

  • Primeiro circuito: monte o seu próprio circuito Blink com um LED e um resistor e depois acrescente um botão para o seu primeiro projeto interativo.
  • Comunicação serial: agora que você sabe como os pinos 0 e 1 afetam o carregamento, experimente acender um LED pelo celular com o módulo Bluetooth HC-05.
  • Lendo sensores: use o guia de sensores para Arduino para escolher os seus primeiros projetos que medem temperatura, distância e luz.
  • Sem fio: monte com o ESP32 um projeto que se conecta ao Wi-Fi e é controlado pelo celular; graças ao OTA, depois você também pode carregar o código sem fio.
  • Escolhendo a placa certa: se você não consegue decidir entre Uno, Nano e Mega, leia Qual Arduino comprar?.

Os erros de carregamento irritam na primeira vez que você os encontra, mas cada um tem uma causa lógica, e quase todos são achados na mesma ordem: cabo, driver, porta, configurações da placa, linha serial e, por fim, o bootloader. Guarde essa ordem e você vai resolver o próximo erro em minutos. Quando a sua placa aceitar código, o app BlueGrays tem muitos projetos para Arduino, ESP32 e Raspberry Pi Pico, de piscar um LED a Wi-Fi e atualizações OTA sem fio, cada um com esquema do circuito passo a passo e código pronto, para você colocar a placa para trabalhar na hora.

Perguntas frequentes

Por que o meu código não carrega no Arduino?

As causas mais comuns são um cabo USB que só carrega, um driver CH340 faltando, a placa ou a porta errada e módulos ligados nos pinos 0 e 1. Nas placas Nano clone, a configuração de Processador também precisa ser ATmega328P (Old Bootloader). Confira isso na ordem e quase sempre a sua placa vai estar boa.

Como resolvo o erro avrdude stk500_getsync not in sync resp=0x00?

Esse erro significa que o computador não consegue completar o handshake com o bootloader da placa. Primeiro selecione a porta e a placa corretas, experimente a opção Old Bootloader em Processador se você usa um Nano e desconecte qualquer fio do D0 e do D1. Se continuar, confira o lado da USB com o teste de loopback e grave o bootloader de novo se precisar.

Por que o meu Arduino não aparece no computador?

Se Ferramentas > Porta está vazio, o cabo não transmite dados ou o driver do chip USB-serial não está instalado. Experimente outro cabo de dados e veja no Gerenciador de Dispositivos do Windows se a placa aparece em Portas (COM e LPT). Se você vir USB2.0-Serial com um sinal amarelo em Outros dispositivos, instale o driver CH340.

Como instalo o driver CH340?

O Windows 10 e o 11 normalmente o instalam sozinhos; se não, baixe e execute o pacote CH341SER do fabricante WCH e reconecte a placa. As versões atuais do macOS já trazem o driver, e no Linux ele vem com o kernel. No Linux, você só precisa adicionar o seu usuário ao grupo dialout.

Quando aperto o botão BOOT para carregar em um ESP32?

Segure o BOOT assim que aparecer Connecting... na saída e solte quando as porcentagens do carregamento começarem a rolar. Isso coloca o ESP32 no modo de download. Se você precisa disso em todo carregamento, um capacitor de 10 µF entre o EN e o GND costuma resolver o problema de vez.

O que fazer se o meu Raspberry Pi Pico não for reconhecido?

Segure o botão BOOTSEL e conecte o Pico ao computador com um cabo de dados; ele deve aparecer como uma unidade chamada RPI-RP2. Nesse modo, você pode arrastar e soltar o arquivo UF2 do MicroPython ou carregar código pela Arduino IDE. Se nenhuma unidade aparecer, o cabo não transmite dados; o bootloader do Pico fica na ROM, então nenhum software consegue estragá-lo.

Ver todos os projetos
LED piscante
#1Iniciante

LED piscante

O primeiro contato com a eletrônica: acender e apagar um único LED. O Arduino acende e apaga o LED em intervalos curtos, fazendo a luz piscar rapidamente. Você vê da forma mais simples como a placa co

4.6(188)
1127
LED piscando com ESP32
#103Iniciante

LED piscando com ESP32

Ensina o uso básico de uma saída GPIO no ESP32. Fazemos um LED piscar ligando e desligando um pino digital. É a versão para ESP32 do clássico projeto blink do Arduino UNO: os comandos básicos de blink no ambiente Arduino são os mesmos, mas a disposição dos pinos e os níveis de 3,3 V dos GPIOs do ESP32 diferem dos do Arduino UNO.

4.7(37)
99
LED integrado do ESP32 piscando
#106Iniciante

LED integrado do ESP32 piscando

Faça o LED azul integrado do ESP32 DevKit V1 piscar. Nenhum componente externo é necessário! O primeiro projeto para experimentar ao comprar um ESP32. GPIO 2 está conectado ao LED integrado.

4.8(29)
53
Piscar o LED integrado do Raspberry Pi Pico (Pico e Pico W)
#147Iniciante

Piscar o LED integrado do Raspberry Pi Pico (Pico e Pico W)

O primeiro projeto da série Raspberry Pi Pico! Fazemos o LED verde integrado piscar para verificar se a placa funciona — um primeiro experimento no estilo clássico "Hello World". SEM componentes externos, apenas o Pico e um cabo USB. O código foi escrito em MicroPython (a linguagem com suporte oficial da Raspberry Pi Foundation). Aprenda a usar a classe machine.Pin, o modo Pin.OUT, os métodos led.on()/off() e time.sleep() no Thonny IDE.

5.0(1)
10
Medição de distância com HC-SR04 (Monitor Serial)
#27Iniciante

Medição de distância com HC-SR04 (Monitor Serial)

O sensor HC-SR04 funciona como um morcego que se orienta no escuro: emite um som que você não consegue ouvir, escuta o eco e mede a distância até o objeto à sua frente. O Arduino escreve essa distânci

4.6(46)
71
Controle de LED pelo celular via Bluetooth
#34Iniciante
Premium

Controle de LED pelo celular via Bluetooth

Um pequeno ensaio para acender e apagar as luzes do seu quarto pelo celular. O módulo Bluetooth repassa ao Arduino as letras enviadas pelo celular; uma letra acende o LED vermelho, outra acende o verd

4.8(68)
89
Comunicação unidirecional entre 2 Arduinos
#57Intermediário
Premium

Comunicação unidirecional entre 2 Arduinos

Faça dois Arduinos conversarem por um único fio: ao pressionar o botão de um, o LED do outro acende; ao pressionar de novo, ele apaga. A placa transmissora informa que o botão foi pressionado com uma

4.4(37)
50
Atualização OTA no ESP32 — firmware sem fio (com display LCD)
#132Avançado
Premium

Atualização OTA no ESP32 — firmware sem fio (com display LCD)

Neste projeto, você aprende a carregar um novo firmware no ESP32 por Wi-Fi, sem cabo USB. Com a biblioteca ArduinoOTA, o ESP32 fica visível na rede e aparece automaticamente como bluegrays-ota na aba "Porta de rede" do Arduino IDE. A primeira carga é feita por USB, e todas as atualizações seguintes são sem fio — um recurso essencial para dispositivos em campo. O LCD I2C mostra o estado do Wi-Fi, o IP, o nome do host, a porcentagem de envio por OTA e as mensagens de erro em turco e inglês.

4.6(14)
22