{"id":3464,"date":"2025-03-12T12:44:54","date_gmt":"2025-03-12T12:44:54","guid":{"rendered":"https:\/\/iotthinghub.com\/?p=3464"},"modified":"2025-03-12T14:03:51","modified_gmt":"2025-03-12T14:03:51","slug":"esp8266-as-softap-mode-at-command-mode","status":"publish","type":"post","link":"https:\/\/iotthinghub.com\/?p=3464","title":{"rendered":"ESP8266 as SoftAP mode (AT Command Mode)"},"content":{"rendered":"\n<p class=\"has-text-color has-link-color wp-elements-039512574a48af62b8a58177561d87c6 wp-block-paragraph\" style=\"color:#5c5c5c\">In our previous article we use ESP8266 working as Station mode. In Station mode we need a wireless router for connecting ESP8266 module. In this article we use SoftAP mode of ESP8266. In Access Mode the ESP8266 works as 2.4GHz wireless router and maximum 4 devices can connect with this router.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/Mar-10-2025-05_25_24-PM-1024x683.png\" alt=\"\" class=\"wp-image-3467\" style=\"width:682px;height:auto\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/Mar-10-2025-05_25_24-PM-1024x683.png 1024w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/Mar-10-2025-05_25_24-PM-300x200.png 300w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/Mar-10-2025-05_25_24-PM-768x512.png 768w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/Mar-10-2025-05_25_24-PM-272x182.png 272w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/Mar-10-2025-05_25_24-PM.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-33c349daf37a077cfb4577867cdeb545 wp-block-paragraph\" style=\"color:#5c5c5c\">Before starting please go through my previous article for some basic knowledge of ESP8266 module. Before starting let\u2019s see some command mode that we need in this article.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"301\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/tabile-3-1024x301.jpg\" alt=\"\" class=\"wp-image-3470\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/tabile-3-1024x301.jpg 1024w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/tabile-3-300x88.jpg 300w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/tabile-3-768x226.jpg 768w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/tabile-3.jpg 1327w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-ee0af387e0f59d0fee510e8d45bff140 wp-block-paragraph\" style=\"color:#5c5c5c\">Let\u2019s see the command parameters &amp; there use. Simple AT command return OK string with carriage return &amp; new line. If we send ATE0 it will stop echo otherwise echo come. Command AT+CWMODE define the mode of operations. In this article we use ESP8266 as a router HUB or access point of a network we define AT+CWMODE=2. After define the mode of operation it is time to give some name of your WiFi network provided with a password and IP address for accessing that network.<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-c83cfaab9f5a00567ca5607b00e88fa8 wp-block-paragraph\" style=\"color:#252525\">CMD&gt; AT+CWSAP = &#8220;SSID&#8221;, &#8220;Password&#8221;, channel ID, encryption, Devices, SSID hidden<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-768d9a40cae5bb52ac53cda5eb9dac6c wp-block-paragraph\" style=\"color:#5c5c5c\">Provide any name, password &amp; channel ID you want. ESP8266 use different types of Wi-Fi security protocols that use Pre-Shared Keys (PSK) for authentication.<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-275a7ce8d3f1611b7468b69ea0fa5763 wp-block-paragraph\" style=\"color:#252525\">1. WPA-PSK (Wi-Fi Protected Access &#8211; Pre-Shared Key)&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-80f9ab19c91c18ea203c3da434ccd723 wp-block-paragraph\" style=\"color:#5c5c5c\">&nbsp;&nbsp; &#8211; Uses TKIP (Temporal Key Integrity Protocol) for encryption.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-c5a2460339b4cda2a7bfa8ae26decf2a wp-block-paragraph\" style=\"color:#5c5c5c\">&nbsp;&nbsp; &#8211; More secure than WEP, but still vulnerable to attacks.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-6eb6204d00d4b70acd6e7ae73bcaf659 wp-block-paragraph\" style=\"color:#5c5c5c\">&nbsp;&nbsp; &#8211; Older and considered less secure compared to WPA2.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-5d58e875198b4b21fda798f832a893d4 wp-block-paragraph\" style=\"color:#252525\">2. WPA2-PSK (Wi-Fi Protected Access 2 &#8211; Pre-Shared Key)&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-b9645ebe758f811a7f2281d7527bb5ee wp-block-paragraph\" style=\"color:#5c5c5c\">&nbsp;&nbsp; &#8211; Uses AES (Advanced Encryption Standard) for encryption, which is much stronger than TKIP.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-0b79e310e335b961326c7f4560ca1de0 wp-block-paragraph\" style=\"color:#5c5c5c\">&nbsp;&nbsp; &#8211; More secure than WPA-PSK.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-b3883f1d2d40f51e44ba9f389ef20cd1 wp-block-paragraph\" style=\"color:#5c5c5c\">&nbsp;&nbsp; &#8211; Standard for most modern Wi-Fi networks.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-91edf07800c01ffaa53014ea8f70e08f wp-block-paragraph\" style=\"color:#252525\">3. WPA\/WPA2-PSK (Mixed Mode)&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-601278ee1338b786ff0a7803fff5d708 wp-block-paragraph\" style=\"color:#5c5c5c\">&nbsp;&nbsp; &#8211; Supports both WPA-PSK (TKIP) and WPA2-PSK (AES).&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-c505c555f7c286c1b4c3bf4d892013ab wp-block-paragraph\" style=\"color:#5c5c5c\">&nbsp;&nbsp; &#8211; Allows older devices that only support WPA to connect while still allowing newer devices to use WPA2.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-301e768cd51e0610b1c8b9875392ce34 wp-block-paragraph\" style=\"color:#5c5c5c\">&nbsp;&nbsp; &#8211; Less secure than forcing WPA2-only, as attackers could exploit WPA vulnerabilities.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-4810192d2a7dd09682f2ac84d88713d8 wp-block-paragraph\" style=\"color:#5c5c5c\">Chose any protocol level, here I chose WPA\/WPA2-PSK (Mixed Mode). The other 2 parameters has there default values, so no need for assignation or change. For example to set a WiFi Router with name: &#8220;IoTtgingHuB&#8221;, password &#8220;12345678&#8221; with channel ID 5 and security level 4 as follow-<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-a865fb953b5d94f2c9f3876abf37f5e1 wp-block-paragraph\" style=\"color:#252525\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AT+CWSAP=&#8221;IoTtgingHuB&#8221;,&#8221;12345678&#8243;,5,4\\r\\n<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-78eeb66549eac73eb9e155063a2b8dc4 wp-block-paragraph\" style=\"color:#252525\">CMD&gt;     AT+CIPAP= &#8220;IP&#8221;, &#8220;GateWay&#8221;, &#8220;SubNetmask&#8221;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-28d7c855a6df2a48525c788dbc461c60 wp-block-paragraph\" style=\"color:#5c5c5c\">The default APIP is 192.168.4.1, but it can be changed. ESP8266 only support class C IP address. A Class C IP address is a part of the IPv4 address classification system that was originally used to define network sizes. Address Range: 192.0.0.0 to 223.255.255.255 with Default Subnet Mask 255.255.255.0. Let\u2019s use IP: 192.168.10.7, Gateway IP: 192.168.10.7 &amp; Sub Netmask: 255.255.255.0 as-<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-0d970617b26d21857e723225c4811332 wp-block-paragraph\" style=\"color:#252525\">&nbsp;&nbsp;&nbsp;&nbsp; AT+CIPAP=&#8221;192.168.10.7&#8243;,&#8221;192.168.10.7&#8243;,&#8221;255.255.255.0&#8243;\\r\\n<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-157ac65904e5ede4ead0790be37eaba5 wp-block-paragraph\" style=\"color:#5c5c5c\">After configuring the IP &amp; gateway create a server with multiple connections with server port 80.<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-7164c4d96af5462a8b5f881022e47926 wp-block-paragraph\" style=\"color:#252525\">&nbsp;&nbsp;&nbsp; AT+CIPMUX=1\\r\\n&nbsp;&nbsp;&nbsp; &amp; AT+CIPSERVER=1,80\\r\\n<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-6f6a54562fe008341ed3a7b3ae18d6e6 wp-block-paragraph\" style=\"color:#5c5c5c\">Let\u2019s create a code for setup function. Here I use UART1 with external interrupt function. Please go through my previous article for more details.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nchar WIFI_NAME&#x5B;] =&quot;IoTtgingHuB&quot;;                      \/\/ Create a WiFi Name\nchar WIFI_PASS&#x5B;] =&quot;12345678&quot;;                         \/\/ Create a WiFi Password\nchar WIFI_AP_IP&#x5B;]=&quot;192.168.10.7&quot;;                     \/\/ Create a WiFi AccessPoint\nchar display&#x5B;1023],wifi_send&#x5B;1023],RX_ST&#x5B;1023];\nESP8266_TX(&quot;AT\\r\\n&quot;,&quot;OK&quot;,4000);                       \/\/ Device Checking\nESP8266_TX(&quot;ATE0\\r\\n&quot;,&quot;OK&quot;,4000);                     \/\/ ECHO OFF\nESP8266_TX(&quot;AT+CWMODE=2\\r\\n&quot;,&quot;OK&quot;,4000);              \/\/ SoftAP Mode\nsprintf(wifi_send,&quot;AT+CWSAP=\\&quot;%s\\&quot;,\\&quot;%s\\&quot;,5,4\\r\\n&quot;,WIFI_NAME,WIFI_PASS);\nESP8266_TX(wifi_send,&quot;OK&quot;,8000);                      \/\/ Create AccessPoint Server\nsprintf(wifi_send,&quot;AT+CIPAP=\\&quot;%s\\&quot;,\\&quot;%s\\&quot;,\\&quot;255.255.255.0\\&quot;\\r\\n&quot;,WIFI_AP_IP,WIFI_AP_IP);\nESP8266_TX(wifi_send,&quot;OK&quot;,8000);                      \/\/ Create AccessPoint IP\nESP8266_TX(&quot;AT+CIPMUX=1\\r\\n&quot;,&quot;OK&quot;,4000);              \/\/ Create Multiconnection\nESP8266_TX(&quot;AT+CIPSERVER=1,80\\r\\n&quot;,&quot;OK&quot;,4000);        \/\/ Create Server Port 80\nvoid ESP8266_TX(char *b_send,char *return_string,uint16_t delay_time)\n{\n            char ESP8266_TX&#x5B;10];\n\tsprintf(ESP8266_TX,&quot;%s&quot;,return_string);\n            sprintf(wifi_send,&quot;%s&quot;,b_send);\n\tHAL_UART_Transmit(&amp;huart1,(uint8_t*)wifi_send,strlen(wifi_send),1000);\n\twhile(1)\n\t{\n\t\tsprintf(RX_ST,&quot;%s&quot;,display);\n\t\tif(strstr(RX_ST,ESP8266_TX)) break;\n\t}\n\tHAL_Delay(delay_time);\n\tmemset (display, &#039;\\0&#039;,1023);                       \/\/ clear the buffer\n\tmemset (wifi_send,&#039;\\0&#039;,1023);                      \/\/ clear the buffer\n\tmemset (RX_ST, &#039;\\0&#039;,1023);                         \/\/ clear the buffer\n\tcount=0;\n}\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-d5f636d98e8ed5eac81e9bcb16bab11e wp-block-paragraph\" style=\"color:#5c5c5c\">The interrupt callback function as follow-<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\nuint8_t rx_char;\nuint16_t count;\nextern UART_HandleTypeDef huart1;\n\/\/-------------- Rx Callback Function -----\nvoid HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)\n{\n  if(huart-&gt;Instance==USART1 )\n  {\n    display&#x5B;count++]=rx_char;\n    HAL_UART_Receive_IT(&amp;huart1,&amp;rx_char,1);\n  }\n}\n<\/pre><\/div>\n\n\n<p class=\"has-text-color has-link-color wp-elements-889565dfb97aed5b1c08c18de1b6b850 wp-block-paragraph\" style=\"color:#5c5c5c\">Now it is time to send data to the Access Network through IP: 192.168.10.7:80. After connecting a device either PC or Mobile through WiFi password, open any browser terminal and type 192.168.10.7. When we enter the IP address into the browser, it will return a link ID for interface with full of the browser information. After gating the link ID our next command is to send data to the browser.<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-5bda7b0062ec159b5961d16967438dd7 wp-block-paragraph\" style=\"color:#252525\">CMD&gt;  AT+CIPSEND=&#8221;link ID&#8221;, &#8220;length of the string&#8221;<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-b427ca8277d2e92a35b697334ce04f4a wp-block-paragraph\" style=\"color:#5c5c5c\">If you want only a single device can connect at a time by default the link ID is 0 no need to input, but in multi-connection mode any 4 device can connect at a time &amp; link ID 0~4. After getting link ID send the string length, the ESP8266 can support maximum 2048 bytes of data. We send a total webpage data in HTML format and according to the browser response just simply turn on\/off the load.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"has-text-color has-link-color wp-elements-c5fda6e3c4b791b5dcc11e3f766be6e9 wp-block-paragraph\" style=\"color:#252525\">HTML code: Off condition<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\n&lt;!DOCTYPE html&gt; &lt;html&gt;\n&lt;head&gt;&lt;meta name=\\&quot;viewport\\&quot; content=\\&quot;width=device-width, initial-scale=1.0, user-scalable=no\\&quot;&gt;\n&lt;title&gt;Load Control&lt;\/title&gt;\n&lt;style&gt;html { font-family: ZCOOL XiaoWei; display: inline-block; margin: 2px auto; text-align: center;}body{margin-top: 40px;}\nh1 {color: #0e18f3;margin: 45px auto 25px;}\nh3 {color: #050505;margin-bottom: 40px;}\n.button {display: block;width: 60px;background-color: #b589f0;border: none;color: white;padding: 15px 25px;text-decoration: none;font-size: 20px;margin: 0px auto 30px;cursor: pointer;border-radius: 5px;}\n.button-on {background-color: #b589f0;}\n.button-on:active {background-color: #2fd4e0;}\n.button-off {background-color: #65537a;}\n.button-off:active {background-color: #2fd4e0;}\n p {font-size: 16px;color:#040404;margin-bottom: 12px;}\n&lt;\/style&gt;&lt;\/head&gt;&lt;body&gt;&lt;h1&gt;Simple Web Server&lt;\/h1&gt;\n&lt;h3&gt; IoT ThingHuB &lt;\/h3&gt;\n&lt;p&gt;LOAD Status: OFF&lt;\/p&gt;\n&lt;a class=\\&quot;button button-on\\&quot; href=\\&quot;\/loadon\\&quot;&gt;ON&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"505\" height=\"793\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/Browser-On-button.jpg\" alt=\"\" class=\"wp-image-3492\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/Browser-On-button.jpg 505w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/Browser-On-button-191x300.jpg 191w\" sizes=\"(max-width: 505px) 100vw, 505px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"488\" height=\"823\" src=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/browser-Off-button.jpg\" alt=\"\" class=\"wp-image-3495\" style=\"width:247px;height:auto\" srcset=\"https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/browser-Off-button.jpg 488w, https:\/\/iotthinghub.com\/wp-content\/uploads\/2025\/03\/browser-Off-button-178x300.jpg 178w\" sizes=\"(max-width: 488px) 100vw, 488px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"has-text-color has-link-color wp-elements-0c179a7f00622a303b6fac271e3ac8c5 wp-block-paragraph\" style=\"color:#252525\">HTML code: On condition<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; auto-links: false; title: ; quick-code: false; notranslate\" title=\"\">\n&lt;!DOCTYPE html&gt; &lt;html&gt;\n&lt;head&gt;&lt;meta name=\\&quot;viewport\\&quot; content=\\&quot;width=device-width, initial-scale=1.0, user-scalable=no\\&quot;&gt;\n&lt;title&gt;Load Control&lt;\/title&gt;\n&lt;style&gt;html { font-family: ZCOOL XiaoWei; display: inline-block; margin: 2px auto; text-align: center;}body{margin-top: 40px;}\nh1 {color: #0e18f3;margin: 45px auto 25px;}\nh3 {color: #050505;margin-bottom: 40px;}\n.button {display: block;width: 60px;background-color: #b589f0;border: none;color: white;padding: 15px 25px;text-decoration: none;font-size: 20px;margin: 0px auto 30px;cursor: pointer;border-radius: 5px;}\n.button-on {background-color: #b589f0;}\n.button-on:active {background-color: #2fd4e0;}\n.button-off {background-color: #65537a;}\n.button-off:active {background-color: #2fd4e0;}\n p {font-size: 16px;color:#040404;margin-bottom: 12px;}\n&lt;\/style&gt;&lt;\/head&gt;&lt;body&gt;&lt;h1&gt;Simple Web Server&lt;\/h1&gt;\n&lt;h3&gt; IoT ThingHuB &lt;\/h3&gt;\n&lt;p&gt;LOAD Status: ON&lt;\/p&gt;\n&lt;a class=\\&quot;button button-off\\&quot; href=\\&quot;\/loadoff\\&quot;&gt;OFF&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-0aa1345041af615b2e2f55c9b1837cb2 wp-block-paragraph\" style=\"color:#5c5c5c\">Assume the link id is 0 &amp; in on condition the total html character is 942 bytes. The command \u2013<\/p>\n\n\n\n<p class=\"has-text-align-center has-text-color has-link-color has-medium-font-size wp-elements-038a1210f7fbe2eafe88c51d488be154 wp-block-paragraph\" style=\"color:#252525\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AT+CIPSEND=0,941\\r\\n <\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-f1a4d0e65d43eb98843b25a1f2bed659 wp-block-paragraph\" style=\"color:#5c5c5c\">Wrap return &#8220;&gt;&#8221; after execute command. Send the full html code &amp; terminate with AT+CIPCLOSE =&#8221; link ID&#8221;. Please wait at least 1 second before sending next AT command. Interesting that if we send AT+CIPCLOSE =5 all connections will be closed. Here I describe the basic structure &amp; full steps one by one. It is not best practice to use STM32 as core &amp; ESP8266 as slave, because the ESP8266 can properly handle all the command &amp; a development board for lots of more function. We will do all the staff with only a single ESP8266 module in some other article. For device setting &amp; how it works please see my YouTube video, keep learning.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"STM32 UART : \ud83d\udedc Access Point Network \ud83d\udcf6\ud83c\udf10ESP8266 as SoftAP mode\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/7wpG2KshRaw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our previous article we use ESP8266 working as Station mode. In Station mode we need a wireless router for connecting ESP8266 module. In this article we use SoftAP mode of ESP8266. In Access Mode the ESP8266 works as 2.4GHz wireless router and maximum 4 devices can connect with this router. Before starting please go [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-3464","post","type-post","status-publish","format-standard","hentry","category-wireless-iot"],"_links":{"self":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts\/3464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3464"}],"version-history":[{"count":22,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts\/3464\/revisions"}],"predecessor-version":[{"id":3501,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=\/wp\/v2\/posts\/3464\/revisions\/3501"}],"wp:attachment":[{"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iotthinghub.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}