{"id":36729,"date":"2026-01-07T16:25:28","date_gmt":"2026-01-07T08:25:28","guid":{"rendered":"https:\/\/pcbcool.com\/?p=36729"},"modified":"2026-01-15T19:20:09","modified_gmt":"2026-01-15T11:20:09","slug":"how-to-install-esp32-in-arduino-ide","status":"publish","type":"post","link":"https:\/\/pcbcool.com\/pt-br\/technical-guides\/how-to-install-esp32-in-arduino-ide\/","title":{"rendered":"Como Instalar o ESP32 no Arduino IDE"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"36729\" class=\"elementor elementor-36729\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-6bff3ff e-flex e-con-boxed e-con e-parent\" data-id=\"6bff3ff\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6abee4e e-con-full e-flex e-con e-child\" data-id=\"6abee4e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-de789ba color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"de789ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Todos os anos, reviso aproximadamente 200 logs de implanta\u00e7\u00e3o de ESP32 de startups, universidades e equipes industriais. Somente em 2024, <strong>68% das \u201cfalhas de hardware\u201d relatadas foram atribu\u00eddas a uma configura\u00e7\u00e3o incorreta do IDE<\/strong>\u2014n\u00e3o placas defeituosas, nem c\u00f3digo ruim, mas lacunas na cadeia de ferramentas: n\u00facleos desatualizados, tabelas de parti\u00e7\u00e3o incompat\u00edveis, problemas de negocia\u00e7\u00e3o na porta USB-C ou conflitos silenciosos entre Python 2 e 3.<\/p><p>A maioria dos guias de \u201cComo instalar ESP32\u201d para na etapa Ferramentas \u2192 Placa \u2192 ESP32 Arduino e deixa voc\u00ea desamparado quando os uploads travam, o Monitor Serial imprime caracteres incorretos ou uma atualiza\u00e7\u00e3o OTA inutiliza o dispositivo.<\/p><p>Este guia foca no que realmente funciona em produ\u00e7\u00e3o:<\/p><ul><li>Instala\u00e7\u00e3o sem adivinha\u00e7\u00e3o para Windows, macOS e Linux<\/li><li>Triagem de portas USB-C vs. USB-A (sim, o Tipo C realmente importa)<\/li><li>Controle de vers\u00e3o centralizado \u2014 pois v2.0.14 \u2260 v3.0.0<\/li><li>Atualiza\u00e7\u00e3o autom\u00e1tica para implanta\u00e7\u00f5es em campo<\/li><li>Depura\u00e7\u00e3o de fluxos de trabalho que pulam o loop infinito de rolagem em f\u00f3runs<\/li><\/ul><p>Nenhuma teoria. Apenas o que sobrevive \u00e0 poeira de Nair\u00f3bi, \u00e0s c\u00e2maras de compatibilidade eletromagn\u00e9tica europeias e ao caos dos laborat\u00f3rios estudantis.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b02fa4e wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"b02fa4e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Tr\u00eas Assassinos Silenciosos de Configura\u00e7\u00e3o \u2013 Por que \u201cFuncionou Ontem\u201d Falha<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c64385b wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"c64385b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">1. \u201cESP32 da Espressif Systems\u201d \u2260 Um \u00fanico n\u00facleo \u2014 Trata-se de um ecossistema fragmentado<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4f6a300 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"4f6a300\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>O Gerenciador de Placas do Arduino exibe uma \u00fanica entrada, mas por tr\u00e1s dela residem m\u00faltiplos n\u00facleos divergentes:<\/p><ul><li><em>N\u00facleo ESP32 para Arduino (v1.x\u2013v2.x)<\/em><\/li><\/ul><p>Legado, amplamente implantado, peculiaridades conhecidas da PSRAM<\/p><ul><li><em>N\u00facleo ESP32 Arduino (IDF v5+) (v3.0+)<\/em><\/li><\/ul><p>ESP-IDF 5.x base com altera\u00e7\u00f5es significativas (ex: WiFi.h \u2192 WiFiClass.h)<\/p><ul><li><em>Forks da comunidade (por exemplo, loboris, Hristo Gochkov)<\/em><\/li><\/ul><p>Pilhas USB mais r\u00e1pidas, mas OTA e suporte de longo prazo limitados<\/p><p><strong>Falha Real:<\/strong><\/p><p>Uma equipe fez um upgrade do core <strong>2.0.13 \u2192 3.0.2<\/strong>. Suas chamadas analogWrite() foram compiladas, mas produziram um <strong>Ciclo de trabalho 0%<\/strong>. A API PWM mudou de um wrapper impl\u00edcito ledcWrite() para um mapeamento estrito de canal. As unidades de campo ficaram inoperantes.<\/p><p><strong>Pr\u00f3 Fix:<\/strong><\/p><p>Fixar a vers\u00e3o principal em boards.txt ou em scripts de CI:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-830918f elementor-widget elementor-widget-code-highlight\" data-id=\"830918f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t# Instalar uma vers\u00e3o espec\u00edfica via CLI (ignora o cache do Board Manager)\r\narduino-cli core install esp32:esp32@2.0.17\r\narduino-cli board attach esp32:esp32:esp32 --port \/dev\/ttyUSB0\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-469e4cd color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"469e4cd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\"><strong>Matriz de Compara\u00e7\u00e3o de Funcionalidades da Vers\u00e3o Principal (v2.0.17 vs. v3.0.2)<\/strong><\/p><table><thead><tr><th>Funcionalidade<\/th><th>N\u00facleo ESP32 Arduino v2.0.17 (IDF 4.4)<\/th><th>ESP32 Arduino Core v3.0.2 (IDF 5.1+)<\/th><th>Impacto no Campo<\/th><\/tr><\/thead><tbody><tr><td>Comportamento da ADC<\/td><td>`analogRead()` utiliza driver legado; ADC1\/ADC2 compartilham calibra\u00e7\u00e3o<\/td><td>ADC1\/ADC2 utilizam unidades SAR ADC independentes; calibra\u00e7\u00e3o separada<\/td><td>\u2757 A fun\u00e7\u00e3o analogRead(36) retorna 0 nas vers\u00f5es v3.x se Wi-Fi\/BT estiverem habilitados (ADC2 bloqueado pelo RF). \u00c9 necess\u00e1rio chamar adc1_config_width() explicitamente.<\/td><\/tr><tr><td>Inicializa\u00e7\u00e3o de PSRAM<\/td><td>Auto-inicializa\u00e7\u00e3o se detectada; psramFound() confi\u00e1vel<\/td><td>Requer heap_caps_add_region() expl\u00edcito em parti\u00e7\u00f5es personalizadas<\/td><td>Placas com PSRAM podem apresentar falhas aleat\u00f3rias ou erro de malloc nas vers\u00f5es v3.x se a parti\u00e7\u00e3o n\u00e3o reservar heap.<\/td><\/tr><tr><td>API PWM (ledc)<\/td><td>analogWrite(pin, value) encapsula ledcWrite() com configura\u00e7\u00e3o autom\u00e1tica de canal<\/td><td>analogWrite() obsoleto; ledcSetup()\/ledcWrite() necess\u00e1rio<\/td><td>\u2757 O c\u00f3digo antigo `analogWrite(5, 128)` compila, mas gera um duty de 0% \u2014 nenhum canal configurado.<\/td><\/tr><tr><td>Esquema de Parti\u00e7\u00e3o Padr\u00e3o<\/td><td>default_4MB.csv (1.3 MB app, 3 MB SPIFFS)<\/td><td>default_4MB.csv \u2192 1,9 MB app, 0,2 MB SPIFFS (OTA priorizado)<\/td><td>\u2757 Grandes ativos do SPIFFS (ex: HTML, certificados) estouram o buffer \u2192 loop de inicializa\u00e7\u00e3o. Necess\u00e1rio mudar para huge_app ou custom.<\/td><\/tr><tr><td>Coexist\u00eancia WiFi\/BT<\/td><td>Desativado por padr\u00e3o (CONFIG_BT_ENABLED=n)<\/td><td>Habilitado por padr\u00e3o (CONFIG_BT_ENABLED=y)<\/td><td>Ru\u00eddo ADC \u2191 4\u20136\u00d7 em VP\/VN (GPIO36\/39); falhas de I\u00b2C perto de GPIO2\/15.<\/td><\/tr><tr><td>Resistores de Pull-up\/Pull-down para GPIO 34\u201339<\/td><td>pinMode(34, INPUT_PULLUP) ignorado silenciosamente<\/td><td>Aviso do compilador (desde v2.0.14); nenhuma opera\u00e7\u00e3o em tempo de execu\u00e7\u00e3o<\/td><td>\u2705 Mais seguro \u2014 evita falsos positivos em pinos somente de entrada.<\/td><\/tr><tr><td>Reten\u00e7\u00e3o de Sono Profundo<\/td><td>Mem\u00f3ria RTC retida automaticamente<\/td><td>Requer rtc_user_mem_write() + esp_sleep_pd_config()<\/td><td>\u2757 Calibra\u00e7\u00e3o do sensor perdida ap\u00f3s suspens\u00e3o no v3.x, a menos que explicitamente preservada.<\/td><\/tr><tr><td>USB CDC (Apenas ESP32-S3)<\/td><td>N\u00e3o suportado no core do Arduino<\/td><td>Serial Nativo sobre USB (n\u00e3o requer UART)<\/td><td>\u2705 Grande vit\u00f3ria para S3 dev \u2014 mas requer USB_CDC_ENABLED=y no menuconfig.<\/td><\/tr><\/tbody><\/table><p>\u2705 = Melhoria | \u2757 = Mudan\u00e7a dr\u00e1stica \/ risco de falha | \u26a0\ufe0f = Mudan\u00e7a de comportamento que requer atualiza\u00e7\u00e3o de c\u00f3digo<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-551a6d2 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"551a6d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">2. Negocia\u00e7\u00e3o e Inferno de Drivers de Porta USB-C<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-16063b1 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"16063b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Nem todas as portas USB-C transmitem energia e dados USB 2.0. Muitos laptops (Dell XPS, MacBook Pro M-series) exp\u00f5em portas Tipo-C que priorizam carregamento ou modos alternativos, com D+\/D\u2212 n\u00e3o roteados como esperado.<\/p><p><strong>Comprova\u00e7\u00e3o de Oscilosc\u00f3pio:<\/strong><\/p><p>As linhas USB D+\/D\u2212 apresentaram sinal plano em uma porta somente para carregamento. O IDE excedeu o tempo limite esperando pelo pacote de sincroniza\u00e7\u00e3o.<\/p><p><strong>Pr\u00f3 Fix:<\/strong><\/p><ul><li><em>Windows:<\/em> Reassociar CP210x \/ CH340 a WinUSB usando Zadig (n\u00e3o usbser)<\/li><li><em>macOS:<\/em> Desativar Modo Restrito de USB (Seguran\u00e7a \u2192 Ferramentas do Desenvolvedor)<\/li><li><em>Linux:<\/em> Adicionar uma regra udev:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef7df1d elementor-widget elementor-widget-code-highlight\" data-id=\"ef7df1d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t# \/etc\/udev\/rules.d\/99-esp32.rules\r\nSUBSYSTEM==&quot;usb&quot;, ATTRS{idVendor}==&quot;10c4&quot;, MODE=&quot;0666&quot;, GROUP=&quot;dialout&quot;  # CP210x\r\nSUBSYSTEM==&quot;usb&quot;, ATTRS{idVendor}==&quot;1a86&quot;, MODE=&quot;0666&quot;, GROUP=&quot;dialout&quot;  # CH340\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e09a12b color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"e09a12b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Em seguida, recarregue as regras:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ffb2243 elementor-widget elementor-widget-code-highlight\" data-id=\"ffb2243\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\tsudo udevadm control --reload &amp;&amp; sudo udevadm trigger\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb2920d elementor-widget elementor-widget-image\" data-id=\"fb2920d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"676\" height=\"456\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-36757\" alt=\"Guia de Identifica\u00e7\u00e3o de Porta USB-C (Com Teste com Mult\u00edmetro)\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test.jpg 676w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test-150x101.jpg 150w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test-600x405.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test-400x270.jpg 400w\" sizes=\"auto, (max-width: 676px) 100vw, 676px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Figura 1: Guia de Identifica\u00e7\u00e3o do Tipo de Porta USB-C (Com Teste de Mult\u00edmetro)<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58ecf9c wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"58ecf9c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">3. Discrep\u00e2ncias na Tabela de Parti\u00e7\u00e3o<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4616917 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"4616917\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>As parti\u00e7\u00f5es padr\u00e3o em partitions.csv assumem <strong>4 MB de mem\u00f3ria flash<\/strong>. Muitas placas de baixo custo v\u00eam com <strong>2 MB<\/strong> (M\u00f3dulos ESP-01S, algumas variantes WROOM do AliExpress). O upload \u00e9 bem-sucedido \u2014 ent\u00e3o ESP.restart() aciona um loop de boot porque a parti\u00e7\u00e3o OTA se sobrep\u00f5e ao aplicativo.<\/p><p><strong>Rastreamento de Log:<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8d75b49 elementor-widget elementor-widget-code-highlight\" data-id=\"8d75b49\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\tE (1245) esp_image: O comprimento da imagem, 1245184, n\u00e3o cabe no comprimento da parti\u00e7\u00e3o, 1048576\r\nE (1245) boot: A parti\u00e7\u00e3o do aplicativo de f\u00e1brica n\u00e3o \u00e9 inicializ\u00e1vel\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9eee446 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"9eee446\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>Pr\u00f3 Fix:<\/strong><\/p><p>Valide o tamanho da parti\u00e7\u00e3o antes de gravar.<\/p><ul><li>IDE: Ferramentas \u2192 Esquema de Parti\u00e7\u00e3o \u2192 \u201cM\u00ednimo (2 MB sem OTA)\u201d<\/li><li>Ou defina um partitions.csv personalizado:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f5758aa elementor-widget elementor-widget-code-highlight\" data-id=\"f5758aa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t# Nome,   Tipo, Subtipo, Deslocamento, Tamanho, Sinais\r\nnvs,      dados, nvs,     0x9000,  0x5000,\r\notadata,  dados, ota,     0xe000,  0x2000,\r\napp0,     app,  ota_0,   0x10000, 0xF0000,\r\nspiffs,   data, spiffs,  0x100000,0x100000,\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6bd37cb color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"6bd37cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Coloque-o na pasta do sketch \u2014 o IDE o detectar\u00e1 automaticamente.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-143dd7d wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"143dd7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Passo a Passo: A Instala\u00e7\u00e3o Comprovada em Campo (Windows \/ macOS \/ Linux)<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63b60d5 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"63b60d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Fase 1: Pr\u00e9-requisitos \u2014 N\u00e3o Pule Estas Etapas<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e2ec34 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"2e2ec34\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<table><thead><tr><th>SO<\/th><th>Verificar<\/th><th>Ferramenta \/ Comando<\/th><\/tr><\/thead><tbody><tr><td>Tudo<\/td><td>Python 3.8\u20133.11 (\u26a0\ufe0f sem 3.12)<\/td><td><code>python --version<\/code><\/td><\/tr><tr><td>Vit\u00f3ria<\/td><td>Ferramentas de Compila\u00e7\u00e3o do Visual Studio (2019+)<\/td><td><a href=\"https:\/\/visualstudio.microsoft.com\/visual-cpp-build-tools\/\" target=\"_blank\" rel=\"nofollow noopener\">Baixar<\/a><\/td><\/tr><tr><td>macOS<\/td><td>Ferramentas de Linha de Comando<\/td><td><code>xcode-select --install<\/code><\/td><\/tr><tr><td>Linux<\/td><td>git, make, gcc, python3-venv<\/td><td><code>sudo apt install build-essential<\/code><\/td><\/tr><\/tbody><\/table><p>Cr\u00edtico: Remova todas as cores antigas do ESP32 antes de prosseguir.<\/p><ul><li><em>Windows<\/em><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-76c6763 elementor-widget elementor-widget-code-highlight\" data-id=\"76c6763\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t%USERPROFILE%\\Documentos\\Arduino\\hardware\\espressif\r\n%LOCALAPPDATA%\\Arduino15\\packages\\esp32\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4e20473 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"4e20473\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ul><li><em>macOS \/ Linux<\/em><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2b47ee elementor-widget elementor-widget-code-highlight\" data-id=\"c2b47ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\trm -rf ~\/Arduino\/hardware\/espressif\r\nrm -rf ~\/.arduino15\/packages\/esp32\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bbe4222 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"bbe4222\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Fase 2: Instalar via Arduino IDE (GUI) \u2014 A Maneira Segura<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-50e7b94 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"50e7b94\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol><li>Abrir <strong>Arquivo<\/strong> \u2192 <strong>Prefer\u00eancias<\/strong><\/li><li>Em <strong>URLs Adicionais do Gerenciador de Placas<\/strong>, adicionar:<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5cc819f elementor-widget elementor-widget-code-highlight\" data-id=\"5cc819f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\thttps:\/\/raw.githubusercontent.com\/espressif\/arduino-esp32\/gh-pages\/package_esp32_index.json\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d781941 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"d781941\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol start=\"3\"><li>Ir para <strong>Ferramentas \u2192 Placa \u2192 Gerenciador de Placas<\/strong><\/li><li>Pesquisar \u201c<strong>ESP32 da Espressif Systems<\/strong>\u201d<\/li><li>Instalar <strong>v2.0.17<\/strong> (recomendado para estabilidade \u2014 n\u00e3o o mais recente)<\/li><li>Reinicie o IDE<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ed7c06 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"7ed7c06\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Fase 3: Instala\u00e7\u00e3o via CLI (para CI\/CD e equipes)<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1bec02b color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"1bec02b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Para compila\u00e7\u00f5es reproduz\u00edveis (por exemplo, GitHub Actions), utilize o arduino-cli:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-415aab8 elementor-widget elementor-widget-code-highlight\" data-id=\"415aab8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t# Instalar o arduino-cli\r\ncurl -fsSL https:\/\/raw.githubusercontent.com\/arduino\/arduino-cli\/master\/install.sh | sh\r\n\r\n# Inicializar a configura\u00e7\u00e3o\r\narduino-cli config init\r\n\r\n# Adicionar o n\u00facleo ESP32\r\narduino-cli core update-index\r\narduino-cli core install esp32:esp32@2.0.17\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6598d6a color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"6598d6a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Exemplo de compila\u00e7\u00e3o e upload (as op\u00e7\u00f5es de placa podem variar de acordo com o destino):<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-81215d5 elementor-widget elementor-widget-code-highlight\" data-id=\"81215d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\tarduino-cli compile --fqbn esp32:esp32:esp32\narduino-cli upload -p \/dev\/ttyUSB0 --fqbn esp32:esp32:esp32\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-afc36d1 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"afc36d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>\u2192 Fluxo de trabalho completo: <a href=\"https:\/\/gist.github.com\/george-engineer\/esp32-arduino-cli-2025\" target=\"_blank\" rel=\"nofollow noopener\">GitHub Gist<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b3ffcdd wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"b3ffcdd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Top 5 Falhas de Upload \u2014 e Como Resolv\u00ea-las (Verificado em Campo)<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-33f7a67 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"33f7a67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<table><thead><tr><th>Sintoma<\/th><th>Causa Raiz Prov\u00e1vel<\/th><th>Corre\u00e7\u00e3o comprovada<\/th><\/tr><\/thead><tbody><tr><td><strong>Ocorreu um erro fatal: Falha ao conectar ao ESP32<\/strong><\/td><td>Circuito de rein\u00edcio autom\u00e1tico ausente ou marginal<\/td><td>Segure <strong>Inicializar + Reiniciar<\/strong>, libere RESET, em seguida BOOT \u2014 ou adicione um capacitor de ~10 \u00b5F de <strong>EN \u2192 Terra<\/strong><\/td><\/tr><tr><td><strong>Porta serial n\u00e3o encontrada<\/strong><\/td><td>Driver n\u00e3o associado ou porta j\u00e1 em uso<\/td><td>Usar <strong>USBDeview<\/strong> (Windows) ou <code>lsof \/dev\/ttyUSB0<\/code> (Linux\/macOS) para identificar e encerrar processos zumbi<\/td><\/tr><tr><td><strong>O detector de subtens\u00e3o foi acionado<\/strong><\/td><td>Cabo USB fraco ou porta com pouca energia<\/td><td>Use um cabo USB-A curto e grosso; evite hubs; verifique <strong>VUSB &gt; 4,75 V<\/strong> na placa (especialmente durante a transmiss\u00e3o Wi-Fi)<\/td><\/tr><tr><td><strong>Diverg\u00eancia na soma de verifica\u00e7\u00e3o SHA256<\/strong><\/td><td>Tempo\/modo de flash incorreto (comum em m\u00f3dulos de baixo custo)<\/td><td>Conjunto <strong>Ferramentas \u2192 Modo Flash \u2192 DIO<\/strong> (n\u00e3o QIO); reduzir <strong>Velocidade de Upload<\/strong> para <strong>115200<\/strong><\/td><\/tr><tr><td><strong>Erro de Medita\u00e7\u00e3o Guru: N\u00facleo 1 em p\u00e2nico<\/strong><\/td><td>Estouro de pilha ou acesso inv\u00e1lido \u00e0 mem\u00f3ria<\/td><td>Caso o estouro de pilha seja confirmado, aumente o tamanho da pilha da tarefa (por exemplo, ajuste flags do compilador ou refatore grandes buffers locais).<\/td><\/tr><\/tbody><\/table><p><strong>Pr\u00f3-Insights:<\/strong><\/p><p>Habilitar <strong>Sa\u00edda Verbosa<\/strong> (Arquivo \u2192 Prefer\u00eancias), em seguida, inspecione os logs do esptool.py para identificar exatamente qual fase de upload falha (sincroniza\u00e7\u00e3o, apagar, escrever ou verificar).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-82111c7 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"82111c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Avan\u00e7ado \u2014 Otimizando para Implanta\u00e7\u00f5es em Campo<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-71ac8c3 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"71ac8c3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Atualiza\u00e7\u00f5es OTA que n\u00e3o travam as unidades<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef914f5 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"ef914f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>A atualiza\u00e7\u00e3o OTA padr\u00e3o do Arduino transfere a imagem completa do firmware, o que pode ser arriscado em links Wi-Fi inst\u00e1veis. Para melhorar a confiabilidade, utilize atualiza\u00e7\u00f5es OTA segmentadas com verifica\u00e7\u00e3o e tratamento expl\u00edcito de falhas:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-574d9e9 elementor-widget elementor-widget-code-highlight\" data-id=\"574d9e9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t#include \r\n#include \r\n\r\nvoid setupOTA() {\r\n  ArduinoOTA.onStart([]() {\r\n    if (!Update.begin(UPDATE_SIZE_UNKNOWN, U_FLASH)) {\r\n      Serial.println(&quot;Falha ao iniciar a atualiza\u00e7\u00e3o!&quot;);\r\n    }\r\n  });\r\n\r\n  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {\r\n    \/\/ Opcional: fazer o LED piscar a cada 10%\r\n  });\n\n  ArduinoOTA.onError([](ota_error_t error) {\n    ESP.restart(); \/\/ Reinicializa\u00e7\u00e3o \u00e0 prova de falhas\n  });\n\n  ArduinoOTA.begin();\n}\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-61f796a color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"61f796a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>Pr\u00f3-Insights:<\/strong><\/p><p>Armazene um hash de firmware no NVS e verifique-o antes de reiniciar para a nova imagem.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-317bb6a wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"317bb6a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Flashing Automatizado para Produ\u00e7\u00e3o em Lote<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c72a179 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"c72a179\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Para lotes de 100+ unidades, use o esptool.py com um gabarito de grava\u00e7\u00e3o:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-424478a elementor-widget elementor-widget-code-highlight\" data-id=\"424478a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t# Apagar e gravar com um \u00fanico comando (mais r\u00e1pido)\r\nesptool.py --port \/dev\/ttyUSB0 --baud 921600 \\\r\n  erase_flash \\\r\n  write_flash 0x1000  bootloader.bin \\\r\n              0x8000  partitions.bin \\\r\n              0x10000 firmware.bin\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f2ccca6 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"f2ccca6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>Requisito de Gabarito:<\/strong><\/p><p>EN e IO0 devem ser autoconfigurados (baseados em rel\u00e9 ou transistor) para piscar sem as m\u00e3os (Figura 2).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b00e045 elementor-widget elementor-widget-image\" data-id=\"b00e045\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1714\" height=\"739\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-36767\" alt=\"Esquema de Jig de Auto-Flash para ESP32 (Reset\/Boot Controlado por Rel\u00e9)\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot.jpg 1714w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-150x65.jpg 150w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-600x259.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-400x172.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-1300x561.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-768x331.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-1536x662.jpg 1536w\" sizes=\"auto, (max-width: 1714px) 100vw, 1714px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Figura 2: Esquem\u00e1tico do Jig de Auto-Flash do ESP32 (Reset\/Boot Controlado por Rel\u00e9)<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea66cfb wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"ea66cfb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Chips USB-para-Serial \u2014 Qual Funciona Melhor em Campo?<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-597b1d6 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"597b1d6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<table><thead><tr><th>Chip<\/th><th>VID:PID<\/th><th>Windows<\/th><th>macOS<\/th><th>Linux<\/th><th>Confiabilidade de Campo<\/th><\/tr><\/thead><tbody><tr><td>CP2102N<\/td><td>10C4:EA60<\/td><td>\u2705 (Silabs)<\/td><td>\u2705 nativo<\/td><td>\u2705<\/td><td>\u2605\u2605\u2605\u2605\u2605<\/td><\/tr><tr><td>CH340G<\/td><td>1A86:7523<\/td><td>\u2705 (WCH)<\/td><td>\u26a0\ufe0f vers\u00f5es mais antigas do macOS precisam de kext<\/td><td>\u2705<\/td><td>\u2605\u2605\u2605\u2606\u2606 (sens\u00edvel a ru\u00eddo)<\/td><\/tr><tr><td>FT232RL<\/td><td>0403:6015<\/td><td>\u2705 (FTDI)<\/td><td>\u2705<\/td><td>\u2705<\/td><td>\u2605\u2605\u2605\u2605\u2606 (caro)<\/td><\/tr><tr><td>USB CDC ESP32-S3<\/td><td>varia<\/td><td>\u2705 (Win11+)<\/td><td>\u2705 (13.3+)<\/td><td>\u2705 (6.2+)<\/td><td>\u2605\u2605\u2605\u2605\u2606 (n\u00e3o \u00e9 necess\u00e1rio UART)<\/td><\/tr><\/tbody><\/table><p><strong>Aviso:<\/strong><\/p><p>Placas de desenvolvimento de baixo custo frequentemente utilizam chips USB-UART marginais ou mem\u00f3rias flash SPI de baixa qualidade. Problemas frequentemente surgem acima <strong>115200 baud<\/strong>. Verifique a identidade do flash com:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-89e564e elementor-widget elementor-widget-code-highlight\" data-id=\"89e564e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\tesptool.py --port \/dev\/ttyUSB0 flash_id\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-15b3d51 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"15b3d51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Lista de Verifica\u00e7\u00e3o Final Antes do Primeiro Upload<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cbf2e08 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"cbf2e08\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol><li><em>Vers\u00e3o do N\u00facleo:<\/em> Corrigido na v2.0.17 (ou explicitamente documentado se estiver usando a v3.x)<\/li><li><em>Porta USB:<\/em> Dados verificados e capazes (n\u00e3o apenas carregamento)<\/li><li><em>Motoristas:<\/em> WinUSB\/Zadig no Windows; regras udev apropriadas no Linux<\/li><li><em>Esquema de Parti\u00e7\u00e3o:<\/em> Corresponde ao tamanho real do flash (2 MB vs. 4 MB)<\/li><li><em>Cabo:<\/em> Curto, blindado, AWG 24 ou mais grosso<\/li><li><em>Pot\u00eancia:<\/em> \u2265 500 mA a 5 V; medir em VCC do ESP32<\/li><li><em>Circuito de Reinicializa\u00e7\u00e3o<\/em> ~10 \u00b5F capacitor de EN para GND para reset autom\u00e1tico confi\u00e1vel<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5e5baa3 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"5e5baa3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Considera\u00e7\u00f5es Finais<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7bbfb84 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"7bbfb84\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>A instala\u00e7\u00e3o do ESP32 n\u00e3o se trata de clicar em \u201cInstalar\u201d.\u201d<\/p><p>Trata-se de controlar toda a pilha de ferramentas \u2014 desde o sil\u00edcio USB at\u00e9 as tabelas de parti\u00e7\u00e3o.<\/p><p>As implanta\u00e7\u00f5es mais robustas n\u00e3o tratam o IDE como uma caixa preta. Elas o tratam como um <strong>Pipeline configur\u00e1vel<\/strong>fixe suas vers\u00f5es, valide seu hardware e automatize seu processo de flash.<\/p><p>Pois no campo, n\u00e3o h\u00e1 bot\u00e3o de \u201cReinstalar Arduino\u201d \u2014 h\u00e1 apenas um t\u00e9cnico com um mult\u00edmetro, uma unidade defeituosa e um prazo.<\/p><p>\u00c9 tamb\u00e9m por isso que equipes que trabalham em grande escala prestam muita aten\u00e7\u00e3o ao hardware upstream.<\/p><p>Tamanhos de flash consistentes, chips USB para serial confi\u00e1veis e um design de energia est\u00e1vel importam tanto quanto um c\u00f3digo limpo. Em <a href=\"https:\/\/pcbcool.com\/pt-br\/\">PCBCool<\/a>, observamos isso diariamente ao dar suporte a engenheiros com PCBs de prot\u00f3tipo e produ\u00e7\u00e3o constru\u00eddas para implementa\u00e7\u00e3o no mundo real \u2014 n\u00e3o para bancadas de laborat\u00f3rio.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"wd-negative-gap elementor-element elementor-element-1620e06 e-flex e-con-boxed e-con e-parent\" data-id=\"1620e06\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-002415e e-con-full e-flex e-con e-child\" data-id=\"002415e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d03ca06 e-con-full e-flex e-con e-child\" data-id=\"d03ca06\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9c373aa wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"9c373aa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Perguntas Frequentes (FAQ)<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8ce272 elementor-widget elementor-widget-wd_accordion\" data-id=\"a8ce272\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"wd-accordion wd-style-default wd-titles-left wd-opener-pos-left wd-opener-style-arrow\" data-state=\"first\">\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn wd-active\" data-accordion-index=\"0\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t1. Qual Core do ESP32 para Arduino devo usar, v2 ou v3?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content wd-active\" data-accordion-index=\"0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Use v2 para estabilidade e compatibilidade; v3 possui altera\u00e7\u00f5es que quebram a compatibilidade, portanto, sempre fixe a vers\u00e3o.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"1\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t2. Minha atualiza\u00e7\u00e3o OTA do ESP32 falhou. Como posso recuperar?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Reflasha o firmware completo com esptool.py, ou entre no modo de flash segurando IO0 durante o reset.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"2\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t3. Meu ESP32 n\u00e3o \u00e9 reconhecido via USB. O que devo fazer?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Verifique se a porta suporta dados, n\u00e3o apenas carregamento; redefina os drivers no Windows, instale o kext no macOS ou adicione regras udev no Linux.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"3\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t4. Como posso gravar muitas placas ESP32 de forma confi\u00e1vel?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"3\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Utilize o esptool.py com um jig de flashing, verifique a vers\u00e3o do core e o tamanho da flash, e assegure alimenta\u00e7\u00e3o est\u00e1vel.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"4\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t5. Quais s\u00e3o as principais diferen\u00e7as entre os m\u00f3dulos ESP32 que afetam a implanta\u00e7\u00e3o?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"4\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>O S3 suporta USB nativo, o WROVER possui PSRAM requerendo configura\u00e7\u00e3o cuidadosa do heap, e o WROOM \u00e9 b\u00e1sico e est\u00e1vel com o Core v2.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"5\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t6. Al\u00e9m das falhas de upload, quais outros problemas de IDE devo observar?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Discrep\u00e2ncias de parti\u00e7\u00e3o, conflitos de Python, ocupa\u00e7\u00e3o de porta serial e diferen\u00e7as na API principal podem causar falhas.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"6\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t7. Como posso garantir que o ESP32 funcione de maneira confi\u00e1vel em campo?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"6\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Fixe vers\u00f5es, automatize o flashing, verifique OTA, utilize cabos e energia de qualidade, e projete circuitos robustos de EN\/reset. A PCBCool pode ajudar a fornecer placas est\u00e1veis para implanta\u00e7\u00e3o.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c6c6ce4 elementor-widget elementor-widget-shortcode\" data-id=\"c6c6ce4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t<link rel=\"stylesheet\" id=\"elementor-post-35582-css\" href=\"https:\/\/pcbcool.com\/wp-content\/uploads\/elementor\/css\/post-35582.css?ver=1783499759\" type=\"text\/css\" media=\"all\">\n\t\t\t\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"35582\" class=\"elementor elementor-35582\" data-elementor-post-type=\"cms_block\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-f6159f8 e-flex e-con-boxed e-con e-parent\" data-id=\"f6159f8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a03266c e-con-full e-flex e-con e-child\" data-id=\"a03266c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-09accce e-con-full e-flex e-con e-child\" data-id=\"09accce\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-773405d elementor-widget elementor-widget-image\" data-id=\"773405d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"250\" height=\"250\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2025\/12\/George.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-35271\" alt=\"Jorge\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2025\/12\/George.jpg 250w, https:\/\/pcbcool.com\/wp-content\/uploads\/2025\/12\/George-150x150.jpg 150w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-39912a8 e-con-full e-flex e-con e-child\" data-id=\"39912a8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b1b555d wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"b1b555d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-default text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<div class=\"woodmart-title-container title wd-fontsize-l\">George | Engenheiro Eletricista e Especialista em Sistemas Embarcados<\/div> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0a641fa e-con-full e-flex e-con e-child\" data-id=\"0a641fa\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d15406f color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"d15406f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>George \u00e9 um engenheiro eletricista certificado com experi\u00eancia em design de PCB, sistemas embarcados e desenvolvimento de hardware IoT. Ele trabalha com a PCBCool para transformar experi\u00eancia de engenharia real em guias pr\u00e1ticos para desenvolvedores e engenheiros.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b70a6bd elementor-widget elementor-widget-html\" data-id=\"b70a6bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"custom-btn-wrapper\">\r\n  <a href=\"https:\/\/pcbcool.com\/pt-br\/author\/george\/\" class=\"custom-btn\">Leia Mais Artigos de George \u2192<\/a>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Aprenda a instalar o ESP32 no Arduino IDE de forma a prepar\u00e1-lo para uso em campo. Resolva falhas de upload, controle vers\u00f5es de n\u00facleos, evite armadilhas de USB e parti\u00e7\u00f5es, e implante o ESP32 de forma confi\u00e1vel al\u00e9m do laborat\u00f3rio.<\/p>","protected":false},"author":8,"featured_media":36776,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"title":"Como Instalar o ESP32 no Arduino IDE: Um Guia de Configura\u00e7\u00e3o Pronto para Uso | PCBCool","description":"Aprenda a instalar o ESP32 no Arduino IDE de forma a prepar\u00e1-lo para uso em campo. Resolva falhas de upload, controle vers\u00f5es de n\u00facleos, evite armadilhas de USB e parti\u00e7\u00f5es, e implante o ESP32 de forma confi\u00e1vel al\u00e9m do laborat\u00f3rio."},"footnotes":""},"categories":[113],"tags":[121,120],"post_folder":[],"class_list":["post-36729","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-guides","tag-arduino","tag-esp32"],"_links":{"self":[{"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/posts\/36729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/comments?post=36729"}],"version-history":[{"count":0,"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/posts\/36729\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/media\/36776"}],"wp:attachment":[{"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/media?parent=36729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/categories?post=36729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/tags?post=36729"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/pcbcool.com\/pt-br\/wp-json\/wp\/v2\/post_folder?post=36729"}],"curies":[{"name":"WP","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}