{"id":182174,"date":"2025-11-06T11:31:30","date_gmt":"2025-11-06T11:31:30","guid":{"rendered":"https:\/\/randomnerdtutorials.com\/?p=182174"},"modified":"2025-11-06T11:31:33","modified_gmt":"2025-11-06T11:31:33","slug":"esp32-save-credentials-separate-file","status":"publish","type":"post","link":"https:\/\/randomnerdtutorials.com\/esp32-save-credentials-separate-file\/","title":{"rendered":"ESP32: Save Wi-Fi Credentials in a Separate File (and Other Sensitive Information)"},"content":{"rendered":"\n<p>Learn how to securely store Wi-Fi credentials and other sensitive information in a separate file for your ESP32 projects (also works for other Arduino based projects). This approach eliminates the need to type your credentials in every sketch, while preventing accidental disclosure of personal account details when sharing your code. It also applies to other sensitive data, such as API keys, tokens, and more.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-Credentials-Separate-File.jpg?resize=1200%2C675&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32 Save Wi-Fi Credentials in a Separate File\" class=\"wp-image-182181\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-Credentials-Separate-File.jpg?w=1920&amp;quality=100&amp;strip=all&amp;ssl=1 1920w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-Credentials-Separate-File.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-Credentials-Separate-File.jpg?resize=1024%2C576&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-Credentials-Separate-File.jpg?resize=768%2C432&amp;quality=100&amp;strip=all&amp;ssl=1 768w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-Credentials-Separate-File.jpg?resize=1536%2C864&amp;quality=100&amp;strip=all&amp;ssl=1 1536w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure><\/div>\n\n\n<p class=\"rntbox rntclgray\">This tutorial was written by one of our readers, Ron Brinkman, and edited by Sara Santos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Save Your Credentials in a Separate File?<\/h2>\n\n\n\n<p>Many projects you create require account names, passwords, tokens, or other sensitive information in order for them to work. <\/p>\n\n\n\n<p>These may be secure if they never leave your desktop, but it can be all too easy to forget and publish or distribute a script file with your personal credentials in it rather than the intended placeholder <span class=\"rnthl rntliteral\">&#8220;REPLACE_WITH_YOUR_PASSWORD&#8221;<\/span>. <\/p>\n\n\n\n<p>You can address this by placing your credentials in a separate file in your <em><span class=\"rnthl rntliteral\">libraries<\/span> <\/em>folder and including a reference to that file in your sketch initiation. That way, your private credentials will not accidentally escape your desktop and will automatically be included when you compile your sketch.<\/p>\n\n\n\n<p>Additionally, this method removes the need to hardcode credentials or API tokens every time you compile a new sketch that requires them.<\/p>\n\n\n\n<p class=\"rntbox rntclblue\">You may also like reading: <a href=\"https:\/\/randomnerdtutorials.com\/esp32-useful-wi-fi-functions-arduino\/\">ESP32 Useful Wi-Fi Library Functions (Arduino IDE)<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Project Overview<\/h2>\n\n\n\n<p>Here is a quick overview of how our approach works:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Your private credentials, including account names, passwords, and tokens, are saved in a library file <span class=\"rnthl rntliteral\"><em>.h<\/em><\/span>, not in your sketch.<\/li>\n\n\n\n<li>The library file is <span class=\"rnthl rntliteral\">#included<\/span> at the beginning of your sketch.<\/li>\n\n\n\n<li>The sketch is modified to reference the <span class=\"rnthl rntliteral\">#defined<\/span> name of the private information contained in the library file, keeping the private information out of your sketch.<\/li>\n\n\n\n<li>If you subsequently send or distribute your sketch to someone else, you don&#8217;t have to take any action to &#8220;clean&#8221; the file, and you will never have to worry about inadvertently disclosing your personal information because you forgot to edit the file before sending.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Creating\/Installing the MyLogin library<\/h2>\n\n\n\n<p>We&#8217;ll create a library called <span class=\"rnthl rntliteral\">MyLogin<\/span> that will hold the credentials. You can give it any other name. Follow the next steps to install a skeleton <span class=\"rnthl rntliteral\"><em>MyLogin<\/em><\/span> file in your library:<\/p>\n\n\n\n<p>1. Go to the Arduino <em>libraries<\/em> folder. You can find the path for your Arduino <span class=\"rnthl rntliteral\"><em>libraries<\/em><\/span> folder, by going to <strong>File <\/strong>> <strong>Preferences<\/strong>. The path in the<em> Sketchbook location<\/em> field is where your <span class=\"rnthl rntliteral\"><em>libraries<\/em><\/span> folder is located.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"747\" height=\"487\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/11\/Arduino-IDE-libraries-folder-location.jpg?resize=747%2C487&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Arduino IDE libraries folder location\" class=\"wp-image-182626\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/11\/Arduino-IDE-libraries-folder-location.jpg?w=747&amp;quality=100&amp;strip=all&amp;ssl=1 747w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/11\/Arduino-IDE-libraries-folder-location.jpg?resize=300%2C196&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 747px) 100vw, 747px\" \/><\/figure><\/div>\n\n\n<p>2. Create a folder named\u00a0<em><span class=\"rnthl rntliteral\">MyLogin<\/span>\u00a0<\/em>in your Arduino IDE <em><span class=\"rnthl rntliteral\">libraries<\/span>\u00a0<\/em>folder.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><\/ol>\n\n\n\n<p>3. Finally, copy the following skeleton code to a file named\u00a0<span class=\"rnthl rntliteral\"><em>MyLogin.h<\/em><\/span>\u00a0in the <span class=\"rnthl rntliteral\"><em>MyLogin<\/em><\/span> folder and save it.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"639\" height=\"292\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/11\/Install-MyLogin-File-Arduino-Libraries-Folder.png?resize=639%2C292&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Install MyLogin File Arduino Libraries Folder\" class=\"wp-image-182627\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/11\/Install-MyLogin-File-Arduino-Libraries-Folder.png?w=639&amp;quality=100&amp;strip=all&amp;ssl=1 639w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/11\/Install-MyLogin-File-Arduino-Libraries-Folder.png?resize=300%2C137&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 639px) 100vw, 639px\" \/><\/figure><\/div>\n\n\n<ol class=\"wp-block-list\"><\/ol>\n\n\n<pre style=\"max-height: 40em; margin-bottom: 20px;\"><code class=\"language-c\">\/*********\n  Created by Ron Brinkman\n  Complete instructions at https:\/\/RandomNerdTutorials.com\/esp32-save-credentials-separate-file\/\n  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.\n  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n*********\/\n\n\/\/ Keep account names, passwords, tokens, etc. current in this file\n\/\/ When visiting another location put their credentials in the &quot;currently in effect&quot; section\n\n\/\/ Credentials currently in effect\n#define STASSID               &quot;REPLACE_WITH_YOUR_SSID&quot;                   \/\/ WiFi\n#define STAPSK                &quot;REPLACE_WITH_YOUR_PASSWORD&quot;\n\n#define emailSenderAccount    &quot;YOUR_SENDER_EMAIL@gmail.com&quot;      \/\/ Email\n#define emailSenderPassword   &quot;YOUR_EMAIL_APP_PASSWORD&quot;\n#define emailRecipient        &quot;YOUR_EMAIL_RECIPIENT@example.com&quot;\n\n#define DuckDNStoken          &quot;YOUR_DUCKDNS_TOKEN&quot;               \/\/ DuckDNS\n\n\/*********Saved credentials for substitution above when &quot;on the road&quot;\n\/\/Credentials used at home\n#define STASSID               &quot;my_wifi_ssid&quot;\n#define STAPSK                &quot;my_wifi_password&quot;\n#define emailSenderAccount    &quot;my_sender_email@gmail.com&quot;\n#define emailSenderPassword   &quot;my_email_app_password&quot;\n#define emailRecipient        &quot;my_email_recipient@example.com&quot;\n#define DuckDNStoken          &quot;my_duckdns_token&quot;\n\n\/\/ Credentials used at Mom and Dad's house\n#define STASSID               &quot;parents_wifi_ssid&quot;\n#define STAPSK                &quot;parents_wifi_password&quot;\n\n\/\/ Credentials used at wife's Mom and Dad's house\n#define STASSID               &quot;wifes_parents_wifi_ssid&quot;\n#define STAPSK                &quot;wifes_parents_wifi_password&quot;\n\n\/\/ Credentials used at our daughter's house\n#define STASSID               &quot;daughter_wifi_ssid&quot;\n#define STAPSK                &quot;daughter_wifi_password&quot;\n\n\/\/ Credentials used at our son's house\n#define STASSID               &quot;son_wifi_ssid&quot;\n#define STAPSK                &quot;son_wifi_password&quot;\n\n\/\/ Credentials used at our friends Joe and Sally's house\n#define STASSID               &quot;friend_wifi_ssid&quot;\n#define STAPSK                &quot;friend_wifi_password&quot;\n*********\/\n<\/code><\/pre>\n\t<p style=\"text-align:center\"><a class=\"rntwhite\" href=\"https:\/\/github.com\/RuiSantosdotme\/Random-Nerd-Tutorials\/raw\/master\/Projects\/ESP32\/MyLogin.h\" target=\"_blank\">View raw code<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Customize the&nbsp;<em>MyLogin.h<\/em>&nbsp;file with your credentials<\/h3>\n\n\n\n<p>Open the skeleton&nbsp;<span class=\"rnthl rntliteral\"><em>MyLogin.h<\/em><\/span>&nbsp;file in your Arduino IDE installation <em>libraries <\/em>folder. Follow the next steps to isolate personal account, password, and token information in this private file:<\/p>\n\n\n\n<p><strong>1)<\/strong> Edit the <em>Credentials currently in effect<\/em> section. Write your network credentials in the following definition statements, so that applications can connect to your local network.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Credentials currently in effect\n#define STASSID               \"REPLACE_WITH_YOUR_SSID\"                   \/\/ WiFi\n#define STAPSK                \"REPLACE_WITH_YOUR_PASSWORD\"<\/code><\/pre>\n\n\n\n<p><strong>2) <\/strong>Continue editing or adding any other credentials your applications use. This may include SMTP email, SMS messaging, Telegram messaging, WhatsApp instant messaging, Duck DNS, NoIP, DynDNS, or other dynamic DNS support, etc.<\/p>\n\n\n\n<p>For this tutorial, we&#8217;ll only be testing the network credentials, but this gives you an idea if you want to add more sensitive information.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>#define emailSenderAccount    \"YOUR_SENDER_EMAIL@gmail.com\"      \/\/ Email\n#define emailSenderPassword   \"YOUR_EMAIL_APP_PASSWORD\"\n#define emailRecipient        \"YOUR_EMAIL_RECIPIENT@example.com\"\n\n#define DuckDNStoken          \"YOUR_DUCKDNS_TOKEN\"               \/\/ DuckDNS<\/code><\/pre>\n\n\n\n<p><strong>3)<\/strong> Optionally place credentials in the commented-out section of the file so that you don&#8217;t need to look them up each time you travel to another location and want to work on your application.<\/p>\n\n\n\n<p>Start with a copy of your home credentials for the case where the <em>Current credentials<\/em> are temporarily overwritten while &#8220;on the road&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Saved credentials for substitution above when \"on the road\"\n\/\/ Credentials used at home\n#define STASSID               \"my_wifi_ssid\"\n#define STAPSK                \"my_wifi_password\"\n#define emailSenderAccount    \"my_sender_email@gmail.com\"\n#define emailSenderPassword   \"my_email_app_password\"\n#define emailRecipient        \"my_email_recipient@example.com\"\n#define DuckDNStoken          \"my_duckdns_token<\/code><\/pre>\n\n\n\n<p><strong>4)<\/strong> Continue customizing with any other family, friend, or business locations&#8217; credentials as needed.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Credentials used at Mom and Dad's house\n#define STASSID               \"wifes_parents_wifi_ssid\"\n#define STAPSK                \"wifes_parents_wifi_password\"\n   .\n   .\n   .<\/code><\/pre>\n\n\n\n<p>Save the file, now containing your private information. It&#8217;s ready to be used by your scripts to keep private information out of the scripts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tailoring Your Script Files<\/h2>\n\n\n\n<p>Each script file you want to protect from inadvertent disclosure of your credentials will require two simple edits. Follow the next steps:<\/p>\n\n\n\n<p><strong>1)<\/strong> Place the following statement in your list of <span class=\"rnthl rntliteral\">#include<\/span> files to include the &#8220;library&#8221; we created previously:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>#include &lt;MyLogin.h&gt;<\/code><\/pre>\n\n\n\n<p><strong>2)<\/strong> Find the place in your script file where your account name, password, token, or other credentials would normally be entered. For your WiFi account, it will look something like:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>\/\/ Replace with your network credentials\nconst char* ssid = \"REPLACE_WITH_YOUR_SSID\";\nconst char* password = \"REPLACE_WITH_YOUR_PASSWORD\";<\/code><\/pre>\n\n\n\n<p><strong>3) <\/strong>Replace the text with the following:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>const char*   ssid     = STASSID;\nconst char*   password = STAPSK;<\/code><\/pre>\n\n\n\n<p>Don&#8217;t fill in your credentials here. They will be incorporated automatically via the <span class=\"rnthl rntliteral\">MyLogin.h<\/span> file and <span class=\"rnthl rntliteral\">#include<\/span> statement. This will use the values of the <span class=\"rnthl rntliteral\">STASSID<\/span> and <span class=\"rnthl rntliteral\">STAPSK<\/span> variables defined in the <span class=\"rnthl rntliteral\"><em>MyLogin.h<\/em><\/span> file.<\/p>\n\n\n\n<p><strong>4) <\/strong>Continue looking for other places in your script where account names, passwords, or tokens are needed for applications such as SMTP email, SMS messaging, Telegram messaging, WhatsApp instant messaging, Duck DNS, NoIP, DynDNS, or other dynamic DNS support, etc.<\/p>\n\n\n\n<p>Update these sections of code, similar to the WiFi credentials, to keep personal information out of the script.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testing with a Wi-Fi Connection Code<\/h2>\n\n\n\n<p>Let&#8217;s test what we&#8217;ve learned so far with a simple Wi-Fi example.<\/p>\n\n\n\n<p>The following code will connect to your local network and print the RRSI (signal strength) once the connection is established.<\/p>\n\n\n<pre style=\"max-height: 40em; margin-bottom: 20px;\"><code class=\"language-c\">\/*********\n  Created by Ron Brinkman\n  Complete instructions at https:\/\/RandomNerdTutorials.com\/esp32-save-credentials-separate-file\/\n*********\/\n\n#include &lt;WiFi.h&gt;\n#include &lt;MyLogin.h&gt;\n\n\/\/ Replace with your network credentials (STATION)\nconst char*   ssid     = STASSID;\nconst char*   password = STAPSK;\n\nvoid initWiFi() {\n  WiFi.mode(WIFI_STA);\n  WiFi.begin(ssid, password);\n  Serial.print(&quot;Connecting to WiFi ..&quot;);\n  while (WiFi.status() != WL_CONNECTED) {\n    Serial.print('.');\n    delay(1000);\n  }\n  Serial.println(WiFi.localIP());\n}\n\nvoid setup() {\n  Serial.begin(115200);\n  initWiFi();\n  Serial.print(&quot;RSSI: &quot;);\n  Serial.println(WiFi.RSSI());\n}\n\nvoid loop() {\n  \/\/ put your main code here, to run repeatedly:\n}\n<\/code><\/pre>\n\t<p style=\"text-align:center\"><a class=\"rntwhite\" href=\"https:\/\/github.com\/RuiSantosdotme\/Random-Nerd-Tutorials\/raw\/master\/Projects\/ESP32\/ESP32_Connect_to_WiFi_RSSI.ino\" target=\"_blank\">View raw code<\/a><\/p>\n\n\n\n<p>If you&#8217;ve successfully created the <span class=\"rnthl rntliteral\"><em>MyLogin.h<\/em><\/span> file as we explained previously, you don&#8217;t need to add any credentials to this code. It will get them through the <span class=\"rnthl rntliteral\"><em>MyLogin.h<\/em><\/span> file.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How Does the Code Work?<\/h3>\n\n\n\n<p>The <span class=\"rnthl rntliteral\"><em>MyLogin.h<\/em><\/span> file, that you have customized per the instructions above, now contains all your personal credentials. It is no longer necessary to enter these credentials anywhere else, because they will be included automatically when the script is compiled.<\/p>\n\n\n\n<p>The <span class=\"rnthl rntliteral\"><em>MyLogin.h<\/em><\/span> library file is now securely incorporated into your script when it is included at the beginning of your script, and it contains all your personal credentials.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>#include &lt;MyLogin.h&gt;<\/code><\/pre>\n\n\n\n<p>Because your credentials are already incorporated into your script from the included <span class=\"rnthl rntliteral\"><em>MyLogin.h<\/em><\/span> file, now the credentials are actually incorporated into the script for use in your program.<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>const char*   ssid     = STASSID;\nconst char*   password = STAPSK;<\/code><\/pre>\n\n\n\n<p>If other accounts, passwords or tokens are utilized in subsequent sections of your script, they will be securely incorporated as well if you have customized and tailored them as described in the previous sections.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Demonstration<\/h3>\n\n\n\n<p>Upload your project to your ESP32 board. It will connect to your local network and print the signal strength.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"674\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-connects-to-Wi-Fi-RSSI-Serial-Monitor.png?resize=666%2C674&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32 connects to Wi-Fi and prints the RSSI in the Serial Monitor\" class=\"wp-image-182179\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-connects-to-Wi-Fi-RSSI-Serial-Monitor.png?w=666&amp;quality=100&amp;strip=all&amp;ssl=1 666w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-connects-to-Wi-Fi-RSSI-Serial-Monitor.png?resize=296%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 296w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><\/figure><\/div>\n\n\n<p>As you can see, there&#8217;s no need to hardcode your network credentials in the code because they will be included when you include the <span class=\"rnthl rntliteral\"><em>MyLogin.h<\/em><\/span> file. You can do this with any other code that uses Wi-Fi credentials, or if you need to save other sensitive information like tokens, APIs, passwords, etc.<\/p>\n\n\n\n<p>Your private information will be protected from inadvertent disclosure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>We hope you&#8217;ve found this project useful and easy to implement on all of your projects. Enjoy the peace of mind knowing that you can publish or distribute the code for your projects without the fear of &#8220;OOPS, I forgot to remove my personal information&#8221;. <\/p>\n\n\n\n<p>Additionally, it avoids having to look for the credentials or API keys every time you need them, so you don&#8217;t have to hardcode them.<\/p>\n\n\n\n<p>We have other tutorials about Wi-Fi that might be useful:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-useful-wi-fi-functions-arduino\/\">ESP32 Useful Wi-Fi Library Functions (Arduino IDE)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-wifimulti\/\">ESP32 WiFiMulti: Connect to the Strongest Wi-Fi Network (from a list of networks)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-wi-fi-provisioning-ble-arduino\/\">ESP32 Wi-Fi Provisioning via BLE (Bluetooth Low Energy) \u2013 Arduino IDE<\/a><\/li>\n<\/ul>\n\n\n\n<p>We hope you\u2019ve found this tutorial useful.<\/p>\n\n\n\n<p>Special thanks to our reader<strong>&nbsp;Ron Brinkman<\/strong> who created and wrote the layout for this tutorial.<\/p>\n\n\n\n<p class=\"rntbox rntclgray\">Ron Brinkman is a retired engineer and project manager who desires to keep current in his career technologies. He has utilized RNT and W3Schools materials to great advantage to give back to others by implementing an animated Christmas display in his front yard, and to advocate for better outcomes in his country.<\/p>\n\n\n\n<p>Learn more about the ESP32 with our resources:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/projects-esp32\/\">All our ESP32 Projects and Guides<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/learn-esp32-with-arduino-ide\/\">Learn ESP32 with Arduino IDE (eBook)<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to securely store Wi-Fi credentials and other sensitive information in a separate file for your ESP32 projects (also works for other Arduino based projects). This approach eliminates the &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"ESP32: Save Wi-Fi Credentials in a Separate File (and Other Sensitive Information)\" class=\"read-more button\" href=\"https:\/\/randomnerdtutorials.com\/esp32-save-credentials-separate-file\/#more-182174\" aria-label=\"Read more about ESP32: Save Wi-Fi Credentials in a Separate File (and Other Sensitive Information)\">CONTINUE READING \u00bb<\/a><\/p>\n","protected":false},"author":5,"featured_media":182181,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[276,281,277,299,264],"tags":[],"class_list":["post-182174","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32","category-esp32-project","category-esp32-arduino-ide","category-0-esp32","category-project"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2025\/10\/ESP32-Credentials-Separate-File.jpg?fit=1920%2C1080&quality=100&strip=all&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/182174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/comments?post=182174"}],"version-history":[{"count":7,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/182174\/revisions"}],"predecessor-version":[{"id":182630,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/182174\/revisions\/182630"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media\/182181"}],"wp:attachment":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media?parent=182174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/categories?post=182174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/tags?post=182174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}