{"id":51076,"date":"2026-06-30T17:00:10","date_gmt":"2026-06-30T09:00:10","guid":{"rendered":"https:\/\/pcbcool.com\/?p=51076"},"modified":"2026-06-30T17:14:07","modified_gmt":"2026-06-30T09:14:07","slug":"esp32-wifimanager-tutorial","status":"publish","type":"post","link":"https:\/\/pcbcool.com\/de\/technical-guides\/esp32-wifimanager-tutorial\/","title":{"rendered":"ESP32 WiFiManager Tutorial for WiFi Setup"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"51076\" class=\"elementor elementor-51076\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-246cdd62 e-flex e-con-boxed e-con e-parent\" data-id=\"246cdd62\" 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-603a1569 e-con-full e-flex e-con e-child\" data-id=\"603a1569\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5c032a0 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"5c032a0\" 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>If you have ever shipped an ESP32 project with hardcoded WiFi credentials, you already know what happens next. It works great on your bench, connected to your home network and then it goes out to a customer, or a different building, or a different country, and suddenly it\u2019s a brick until somebody re-flashes it. This is one of the most common headaches in IoT product development, and it\u2019s also one of the most avoidable. That\u2019s exactly the problem WiFiManager was built to solve.<\/p><p>So let\u2019s dig in: what it is, how it actually works under the hood, and how you can get it running in your own ESP32 project, starting from a quick install check and working up to the kind of setup you would actually want to ship.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1815ebe wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"1815ebe\" 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\">Why Hardcoded Credentials Just Don't Cut It<\/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-5c5aee4 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"5c5aee4\" 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>We&#8217;ve all written this line at some point:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ed1372d elementor-widget elementor-widget-code-highlight\" data-id=\"ed1372d\" 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<xmp>WiFi.begin(\"MyHomeNetwork\", \"password123\");<\/xmp>\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-1e8e92e color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"1e8e92e\" 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>And for tinkering on the bench, there&#8217;s nothing wrong with that. But the moment your project needs to leave the bench, this approach starts causing real problems:<\/p><ul><li>No flexibility for whoever&#8217;s using it. Whoever deploys the device needs to know the exact SSID and password before you even flash it, or you will need physical access later just to change a setting.<\/li><li>It&#8217;s a security risk. Credentials baked right into the firmware are sitting there in plain text, ready for anyone who pulls the binary apart.<\/li><li>It doesn&#8217;t scale. Got ten units going to ten different sites? That&#8217;s ten different firmware builds, or a whole lot of manual reconfiguration.<\/li><\/ul><p>What we really want is for the device to just ask the end user for their WiFi details, save them, and reconnect automatically every time it boots without us ever having to touch the code again. That&#8217;s the gap WiFiManager fills, and it does it really nicely.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f356964 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"f356964\" 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\">What Is WiFiManager<\/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-bfaa1ba color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"bfaa1ba\" 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>WiFiManager is an open-source library, originally written by tzapu and now maintained by tablatronix, that gives your ESP32 (or ESP8266) project a self-contained, web-based way to configure WiFi. Instead of hardcoding credentials, the device boots into Access Point mode, broadcasts its own little WiFi network, and serves up a simple webpage where the user can pick their network from a scanned list and type in the password.<\/p><p>Once the user hits save, WiFiManager writes the credentials to flash and tries to connect. From then on, every time the device boots, it tries those saved credentials first and only drops back into setup mode if the connection fails. This whole pattern is called a captive portal, and you have almost certainly run into it before: it\u2019s the same trick that pops up a login page the second you join a hotel or airport WiFi.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa4fdf8 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"aa4fdf8\" 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\">How ESP32 WiFiManager Works<\/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-1e255cf wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"1e255cf\" 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\">The Foundation: ESP32 WiFi Modes<\/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-279172c color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"279172c\" 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>The ESP32&#8217;s 2.4GHz radio can run in three different modes:<\/p><ul><li><em>Station Mode (STA):<\/em> the ESP32 acts like a normal WiFi client, connecting to your router just like your laptop or phone would.<\/li><li><em>Access Point Mode (AP):<\/em> the ESP32 creates its own network, so other devices can connect directly to it.<\/li><li><em>Dual Mode (AP+STA):<\/em> and here&#8217;s where it gets clever \u2014 the ESP32 can broadcast its own network while also scanning for, or connecting to, another router at the same time.<\/li><\/ul><p>When the device boots up somewhere new with no saved credentials, WiFiManager flips it into AP mode and starts broadcasting an SSID \u2014 something like ESP32-Setup. That gives your phone a way in: a direct bridge to the hardware before it&#8217;s ever touched the internet.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8b7bcab elementor-widget elementor-widget-image\" data-id=\"8b7bcab\" 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=\"400\" height=\"187\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/an-ESP32-Access-PointAP-for-Web-Server-400x187.jpg\" class=\"wd-lazy-fade attachment-medium size-medium wp-image-51081\" alt=\"An ESP32 Access Point(AP) for Web Server\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/an-ESP32-Access-PointAP-for-Web-Server-400x187.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/an-ESP32-Access-PointAP-for-Web-Server-1300x607.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/an-ESP32-Access-PointAP-for-Web-Server-768x359.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/an-ESP32-Access-PointAP-for-Web-Server-1536x718.jpg 1536w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/an-ESP32-Access-PointAP-for-Web-Server-18x8.jpg 18w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/an-ESP32-Access-PointAP-for-Web-Server-600x280.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/an-ESP32-Access-PointAP-for-Web-Server-150x70.jpg 150w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/an-ESP32-Access-PointAP-for-Web-Server.jpg 1770w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7605974 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"7605974\" 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\">The Interception: DNS Redirection<\/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-45cf4f8 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"45cf4f8\" 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>Okay, so your phone has joined the ESP32&#8217;s network. How do we get it onto the configuration page without making someone type in an IP address by hand? We hijack DNS.<\/p><p>Normally, when you type a URL into your browser, a DNS server translates it into an IP address behind the scenes. While it&#8217;s in setup mode, the ESP32 runs its own tiny DNS server \u2014 except instead of answering correctly, it answers every single query with its own address, usually 192.168.4.1. Doesn&#8217;t matter if your phone&#8217;s asking for google.com or anything else; the answer is always &#8220;me.&#8221;<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c4ffaa9 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"c4ffaa9\" 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\">The Trap: Captive Portals<\/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-2c70f62 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"2c70f62\" 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>That DNS trick is exactly what makes the captive portal magic happen. And you have seen this before, probably without realizing it: connecting to airport or hotel WiFi.<\/p><p>Modern phones and laptops automatically check, the moment they join a new network, whether that network needs a login. Apple devices, for example, quietly ping a specific address in the background to find out. Since our ESP32 is intercepting every DNS request, it grabs that background check too. Instead of the expected response, it hands back our custom HTML configuration page. The phone&#8217;s operating system sees that and pops open a browser window right then and there. Nobody has to go hunting for an IP address; it just shows up.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5eeacac wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"5eeacac\" 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\">Saving for Later: Non-Volatile Storage (NVS)<\/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-84781cf color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"84781cf\" 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>Once someone types in their WiFi details and hits &#8220;Save,&#8221; the ESP32 needs a way to remember that, even after the power&#8217;s been cut.<\/p><p>Older boards leaned on EEPROM for this, but the ESP32 uses something newer called NVS, or Non-Volatile Storage. Think of it like a simple key-value store, tucked into its own dedicated partition of flash memory.<\/p><p>The SSID and password get written in as string values under specific keys. Next time the device boots, the firmware checks NVS first, and if it finds something valid, it skips the whole Access Point song and dance and just quietly connects in Station mode. No portal, no fuss, just a normal boot.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd420fe wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"dd420fe\" 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\">Professional Constraints: Memory Considerations<\/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-1f58ed5 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"1f58ed5\" 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>Here&#8217;s a useful comparison: it&#8217;s a bit like applying Design for Manufacturing rules to a PCB layout to save board space. You have got to budget your firmware&#8217;s memory the same careful way.<\/p><p>Running an Access Point, a web server, and a DNS server all at once eats up a fair chunk of the ESP32&#8217;s RAM. Leave those services running after you are already connected, and you are starving your actual application of memory it might need.<\/p><p>The best move for anything going into production is to tear those setup services down the moment you have got a successful connection. Stop the web and DNS servers, free up their resources once autoConnect() returns, and you have got that heap back for the stuff that actually matters: sampling sensors, running inference, handling power management, whatever your project needs to do.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d0b0bbd wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"d0b0bbd\" 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\">How to Install WiFiManager on ESP32<\/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-0f108f4 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"0f108f4\" 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>If you are using the Arduino IDE or PlatformIO, getting it installed is painless.<\/p><p>Arduino IDE: open the Library Manager (Sketch &gt; Include Library &gt; Manage Libraries), search for \u201cWiFiManager by tzapu,\u201d and install the latest version, currently 2.0.17.<\/p><ol><li>Click on the library manager<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9e8694e elementor-widget elementor-widget-image\" data-id=\"9e8694e\" 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=\"1816\" height=\"1051\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Clicking-library-manager-in-Arduino-ide.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-51085\" alt=\"Clicking library manager in Arduino ide\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Clicking-library-manager-in-Arduino-ide.jpg 1816w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Clicking-library-manager-in-Arduino-ide-400x231.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Clicking-library-manager-in-Arduino-ide-1300x752.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Clicking-library-manager-in-Arduino-ide-768x444.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Clicking-library-manager-in-Arduino-ide-1536x889.jpg 1536w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Clicking-library-manager-in-Arduino-ide-18x10.jpg 18w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Clicking-library-manager-in-Arduino-ide-600x347.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Clicking-library-manager-in-Arduino-ide-150x87.jpg 150w\" sizes=\"auto, (max-width: 1816px) 100vw, 1816px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43aac5e color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"43aac5e\" 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=\"2\"><li>Type in WiFiManager and install WiFiManager by tzapu<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5fa9a46 elementor-widget elementor-widget-image\" data-id=\"5fa9a46\" 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=\"1825\" height=\"1051\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Installing-WiFi-Manager.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-51086\" alt=\"Installing WiFi Manager\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Installing-WiFi-Manager.jpg 1825w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Installing-WiFi-Manager-400x230.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Installing-WiFi-Manager-1300x749.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Installing-WiFi-Manager-768x442.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Installing-WiFi-Manager-1536x885.jpg 1536w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Installing-WiFi-Manager-18x10.jpg 18w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Installing-WiFi-Manager-600x346.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Installing-WiFi-Manager-150x86.jpg 150w\" sizes=\"auto, (max-width: 1825px) 100vw, 1825px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8d8f7f color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"a8d8f7f\" 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>Before you start wiring up custom parameters and NVS persistence, it\u2019s worth confirming the bare minimum actually works first. The library ships an example that does just that look for File &gt; Examples &gt; WiFiManager &gt; Basic<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6cd265a elementor-widget elementor-widget-image\" data-id=\"6cd265a\" 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=\"1830\" height=\"1080\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Trying-basic-code.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-51087\" alt=\"Trying basic code\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Trying-basic-code.jpg 1830w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Trying-basic-code-400x236.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Trying-basic-code-1300x767.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Trying-basic-code-768x453.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Trying-basic-code-1536x906.jpg 1536w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Trying-basic-code-18x12.jpg 18w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Trying-basic-code-600x354.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Trying-basic-code-150x89.jpg 150w\" sizes=\"auto, (max-width: 1830px) 100vw, 1830px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1ed5921 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"1ed5921\" 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>Flash that, and assuming there\u2019s no saved network, your phone should immediately offer to join \u201cESP32-Setup\u201d and the configuration page should pop right up. Once you have confirmed that\u2019s working, you are ready to build out the full version.<\/p><p>One thing worth knowing: there are a handful of WiFiManager forks floating around the ecosystem, some with additional ESP32-specific fixes baked in. So if you run into compatibility trouble on a newer ESP32 core, it\u2019s worth double-checking exactly which fork you have actually pulled in.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d49e4bb wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"d49e4bb\" 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\">Building a Production-Ready ESP32 WiFiManager Setup<\/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-6c60726 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"6c60726\" 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 bare autoConnect() call is great for proving the concept, but a real deployment usually wants a bit more: custom fields like an MQTT server address, a way to wipe saved credentials without re-flashing, and a sensible timeout so the device doesn\u2019t just sit in setup mode forever draining a battery.<\/p><p>Here\u2019s a complete sketch that handles all three, built around three pieces working together.<\/p><ul><li>Memory management. Instead of scattering flash reads and writes all through setup(), we tuck them away into loadConfig() and saveConfig() helpers. That way, it\u2019s immediately obvious, at a glance, exactly which parts of the code are touching persistent storage:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3a86d5e elementor-widget elementor-widget-image\" data-id=\"3a86d5e\" 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=\"1300\" height=\"757\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Memory-management-code-1300x757.jpg\" class=\"wd-lazy-fade attachment-large size-large wp-image-51094\" alt=\"Memory management code\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Memory-management-code-1300x757.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Memory-management-code-400x233.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Memory-management-code-768x447.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Memory-management-code-1536x894.jpg 1536w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Memory-management-code-18x10.jpg 18w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Memory-management-code-600x349.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Memory-management-code-150x87.jpg 150w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/Memory-management-code.jpg 1806w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dc2e84b color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"dc2e84b\" 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>The escape hatch. Before we touch WiFi at all, we check a physical reset button first. This matters more than it might look like: if the WiFi stack ever gets stuck somewhere down the line, a user with no other recourse needs a guaranteed way out. Checking hardware overrides before anything else means that path can never get blocked by whatever comes after it:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fc22e07 elementor-widget elementor-widget-image\" data-id=\"fc22e07\" 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=\"1300\" height=\"443\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/escape-hatch-code-1300x443.jpg\" class=\"wd-lazy-fade attachment-large size-large wp-image-51095\" alt=\"Escape hatch code\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/escape-hatch-code-1300x443.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/escape-hatch-code-400x136.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/escape-hatch-code-768x262.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/escape-hatch-code-1536x524.jpg 1536w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/escape-hatch-code-18x6.jpg 18w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/escape-hatch-code-600x205.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/escape-hatch-code-150x51.jpg 150w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/escape-hatch-code.jpg 1800w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-566ac57 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"566ac57\" 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>The setup flow. The flow itself is nice and linear: load whatever\u2019s saved, hand it to the portal as the default values, try to connect, and this part matters only write back to flash if the user actually changed something. No sense burning a flash write cycle just to re-save what was already there:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b969a2d elementor-widget elementor-widget-image\" data-id=\"b969a2d\" 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=\"1300\" height=\"753\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-1-Code-1300x753.jpg\" class=\"wd-lazy-fade attachment-large size-large wp-image-51096\" alt=\"Setup flow 1 Code\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-1-Code-1300x753.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-1-Code-400x232.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-1-Code-768x445.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-1-Code-1536x889.jpg 1536w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-1-Code-18x10.jpg 18w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-1-Code-600x347.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-1-Code-150x87.jpg 150w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-1-Code.jpg 1815w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-99dc2fb elementor-widget elementor-widget-image\" data-id=\"99dc2fb\" 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=\"1300\" height=\"762\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-2-Code-1300x762.jpg\" class=\"wd-lazy-fade attachment-large size-large wp-image-51097\" alt=\"Setup flow 2 Code\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-2-Code-1300x762.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-2-Code-400x235.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-2-Code-768x450.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-2-Code-1536x901.jpg 1536w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-2-Code-18x12.jpg 18w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-2-Code-600x352.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-2-Code-150x88.jpg 150w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/06\/setup-flow-2-Code.jpg 1796w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64e3adf color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"64e3adf\" 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>Put it all together, and you have got a complete, self-contained provisioning flow: it checks for a manual reset, loads whatever is already saved, lets the user see and override that through a captive portal, connects, and only persists what actually changed. No cloud service, no companion app and nothing outside the device itself.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-186dc58 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"186dc58\" 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\">Common ESP32 WiFiManager Gotchas<\/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-10a65b6 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"10a65b6\" 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 few things trip people up often enough with WiFiManager that they are worth flagging before you run into them yourself:<\/p><ul><li>The captive portal does not always pop up automatically. Some Android versions and corporate-managed phones delay or disable that detection. Always print the portal\u2019s IP address (192.168.4.1 by default) to the serial console, so someone can navigate there by hand if the pop-up never shows.<\/li><li>autoConnect() blocks by default. While the device sits in AP mode, the rest of your setup() code will not run. If you need other things happening during provisioning, look into WiFiManager\u2019s non-blocking mode instead.<\/li><li>NVS can get corrupted after a core update. Updating the ESP32 Arduino core occasionally shifts the NVS partition layout, and old credentials start reading back as garbage. A clean NVS erase, or a defensive resetSettings() call on a failed connection, is safer than assuming the old data is still good.<\/li><li>Password-protect your AP. By default, that configuration network is wide open. Anyone nearby can join it and see, or change, your WiFi settings. Pass a password as the second argument to autoConnect() and that door closes.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e54692 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"2e54692\" 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\">Is WiFiManager Right for Your ESP32 Project<\/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-7406d41 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"7406d41\" 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>For most consumer projects and small-batch commercial products, WiFiManager hits a really nice sweet spot: zero external dependencies, a setup flow people already understand from hotel and airport WiFi, and barely any code to wire it in.<\/p><p>That said, it is not the right fit for everything. For headless industrial deployments , think a device bolted to a wall with no screen and no easy physical access, you are probably better off with a fallback hardcoded network plus a remote provisioning path over BLE or a backend API, rather than counting on someone walking up and connecting their phone to the device&#8217;s AP. And if you are already living in ESP-IDF instead of Arduino, it is worth comparing this against Espressif&#8217;s own native WiFi provisioning, which adds BLE-based provisioning alongside the usual SoftAP\/captive-portal approach and tends to fit more naturally into an existing IDF codebase.<\/p><p>But for everything in between the maker projects, the small hardware startups, the &#8220;this thing needs to work in ten different customers&#8217; homes without ten different firmware builds&#8221; problem WiFiManager is still one of the simplest, most battle-tested ways to solve WiFi provisioning on the ESP32.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4762e36 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"4762e36\" 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\">Abschlie\u00dfende Gedanken<\/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-19391ec color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"19391ec\" 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>That\u2019s the end of this ESP32 WiFiManager tutorial. Once you have the basic setup working, hardcoded WiFi credentials should no longer be part of your ESP32 deployment workflow.<\/p>\n<p>If you run into problems while building an ESP32-based IoT product, you can always discuss your project with <a href=\"https:\/\/pcbcool.com\/de\/\">PCBCool<\/a>. We also recently launched an <a href=\"https:\/\/pcbcool.com\/de\/quote\/\">online quotation system<\/a>, making it easier for both businesses and makers to get quotes for PCB and PCBA projects. If you have a related project, feel free to give it a try.<\/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-574f1fd6 e-flex e-con-boxed e-con e-parent\" data-id=\"574f1fd6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5c60c6b5 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"5c60c6b5\" 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\">H\u00e4ufig gestellte Fragen<\/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<div class=\"elementor-element elementor-element-138a87ec e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con e-child\" data-id=\"138a87ec\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7feee959 e-con-full e-flex e-con e-child\" data-id=\"7feee959\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22e96f85 elementor-widget elementor-widget-wd_accordion\" data-id=\"22e96f85\" 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-shadow wd-titles-left wd-opener-pos-left wd-opener-style-arrow\" data-state=\"all_closed\">\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=\"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\tQ1: Warum hat die Lagenanzahl einen so gro\u00dfen Einfluss auf die Kosten von Leiterplatten?\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=\"0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Der Hauptgrund daf\u00fcr ist, dass jede zus\u00e4tzliche Schicht den Herstellungsprozess schwieriger zu kontrollieren macht. Mehr Schichten bedeuten mehr M\u00f6glichkeiten f\u00fcr Defekte in den inneren Lagen, Ausrichtungsprobleme, Laminationsprobleme und Ausschuss.<\/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>\n\t\t<div class=\"elementor-element elementor-element-2b32d82c e-con-full e-flex e-con e-child\" data-id=\"2b32d82c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a272c7d elementor-widget elementor-widget-wd_accordion\" data-id=\"a272c7d\" 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-shadow wd-titles-left wd-opener-pos-left wd-opener-style-arrow\" data-state=\"all_closed\">\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=\"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\tWarum erfordern BGA-Designs eine strengere Kontrolle der Leiterplattenherstellung?\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=\"0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>A: BGA-Pads sind klein und eng beieinander angeordnet, sodass kleine Herstellungsfehler leicht zu Montageproblemen werden k\u00f6nnen.<\/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>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-46d73f7c elementor-widget elementor-widget-shortcode\" data-id=\"46d73f7c\" 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-38934-css\" href=\"https:\/\/pcbcool.com\/wp-content\/uploads\/elementor\/css\/post-38934.css?ver=1782808393\" type=\"text\/css\" media=\"all\">\n\t\t\t\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"38934\" class=\"elementor elementor-38934\" data-elementor-post-type=\"cms_block\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-33bcad2 e-flex e-con-boxed e-con e-parent\" data-id=\"33bcad2\" 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-c2f6cd0 e-con-full e-flex e-con e-child\" data-id=\"c2f6cd0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-819b8cd e-con-full e-flex e-con e-child\" data-id=\"819b8cd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-abdf582 elementor-widget elementor-widget-image\" data-id=\"abdf582\" 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\/2026\/01\/Sam-K.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-38937\" alt=\"Sam K\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/Sam-K.jpg 250w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/Sam-K-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-2cd26df e-con-full e-flex e-con e-child\" data-id=\"2cd26df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-836541e wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"836541e\" 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\">Sam K | Embedded Systems Engineer<\/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-7fc678a e-con-full e-flex e-con e-child\" data-id=\"7fc678a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0e97d99 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"0e97d99\" 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>Sam K arbeitet an eingebetteten elektronischen Systemen mit Schwerpunkt auf Hardware-Design, PCB-Entwicklung, Firmware-Programmierung und Systemintegration. Er unterst\u00fctzt auch die Leistungsoptimierung und hilft bei der Umsetzung von Ideen f\u00fcr elektronische Produkte in zuverl\u00e4ssige, praxistaugliche L\u00f6sungen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-092f191 elementor-widget elementor-widget-html\" data-id=\"092f191\" 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\/de\/author\/sam-k\/\" class=\"custom-btn\">Weitere Artikel von Sam K lesen \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\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>ESP32 WiFiManager is a library that helps ESP32 devices configure WiFi without hardcoded credentials. This tutorial explains how to set it up step by step.<\/p>","protected":false},"author":11,"featured_media":51106,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"title":"ESP32 WiFiManager Tutorial: WiFi Setup Without Hardcoding | PCBCool","description":"ESP32 WiFiManager is a library that helps ESP32 devices configure WiFi without hardcoded credentials. This tutorial explains how to set it up step by step."},"footnotes":""},"categories":[113],"tags":[120],"post_folder":[],"class_list":["post-51076","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-guides","tag-esp32"],"_links":{"self":[{"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/posts\/51076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/comments?post=51076"}],"version-history":[{"count":5,"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/posts\/51076\/revisions"}],"predecessor-version":[{"id":51105,"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/posts\/51076\/revisions\/51105"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/media\/51106"}],"wp:attachment":[{"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/media?parent=51076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/categories?post=51076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/tags?post=51076"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/pcbcool.com\/de\/wp-json\/wp\/v2\/post_folder?post=51076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}