{"id":961,"date":"2024-05-17T01:44:01","date_gmt":"2024-05-17T01:44:01","guid":{"rendered":"https:\/\/blogs.lcsc.com\/blog\/?p=961"},"modified":"2025-08-05T08:25:09","modified_gmt":"2025-08-05T08:25:09","slug":"ai-thinker-bw16-arduino-development-environment-setup-tutorial","status":"publish","type":"post","link":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/","title":{"rendered":"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">This week, LCSC Electronics supplier Ai-Thinker introduced How to set up the Arduino development environment for its BW16 module and development board.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ai-Thinker adheres to the first principle of trustworthiness and ease of use. Whether the product supports Arduino has always attracted the attention of customers and developers. First, let\u2019s briefly introduce the BW16 module and development board.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-962 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board.png\" alt=\"BW16 module and development board\" width=\"518\" height=\"356\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board.png 518w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board-300x206.png 300w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The BW16-Kit development board is a dual-band WiFi + Bluetooth low energy Bluetooth 5.0 dual-mode module that operates at 2.4GHZ\/5.8GHZ. It measures 50.4*25.4(\u00b10.2) mm and uses a Type C power supply, which is commonly found in many smart devices.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-963 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-Pin-map.png\" alt=\"BW16 Pin map\" width=\"619\" height=\"418\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-Pin-map.png 619w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-Pin-map-300x203.png 300w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.lcsc.com\/product-detail\/WiFi-Modules_Ai-Thinker-BW16_C2764067.html\"><b>BW16<\/b><\/a><b> Pin map<\/b><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-964 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker.png\" alt=\"\" width=\"619\" height=\"780\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker.png 619w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker-238x300.png 238w\" sizes=\"auto, (max-width: 619px) 100vw, 619px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">When clearing flash or uploading firmware, the development board requires upload mode.<\/span><\/p>\n<h5><b>Development Environment Setup Steps<\/b><\/h5>\n<h6><b>Step 1. Environment Configuration<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">The BW16 (RTL8720DN) development board currently supports Windows OS 32-bit or 64-bit, Linux OS (Ubuntu) and macOS. For the best experience, please use the latest version of your operating system.<\/span><\/p>\n<h6><b>Step 2. Set Up Arduino IDE<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Starting with version 1.6.5, the Arduino IDE supports third-party hardware. The Arduino IDE is used to develop applications on the BW16, as well as the Arduino basic example link (refer to the basic example link).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Arduino IDE can be downloaded from the Arduino website: <\/span><a href=\"https:\/\/www.arduino.cc\/en\/Main\/Software\"><span style=\"font-weight: 400;\">https:\/\/www.arduino.cc\/en\/Main\/Software<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">After the installation is complete, open the Arduino IDE. Please open \u201cFile\u201d -&gt; \u201cPreferences\u201d;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">And copy the following URL into the &#8220;Additional Boards Manager URLs&#8221; field:<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/ambiot\/ambd_arduino\/raw\/master\/Arduino_package\/package_realtek.com_amebad_index.json\"><span style=\"font-weight: 400;\">https:\/\/github.com\/ambiot\/ambd_arduino\/raw\/master\/Arduino_package\/package_realtek.com_amebad_index.json<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Starting from version v3.0.8, Ameba Arduino will support the BW16 development board.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Then\uff0cOpen \u201cTools\u201d -&gt; \u201cBoard\u201d -&gt; \u201cBoards Manager\u201d\uff1a<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-965 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker-1.png\" alt=\"\" width=\"712\" height=\"886\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker-1.png 712w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker-1-241x300.png 241w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">&#8220;Boards Manager&#8221; takes approximately a few seconds to refresh all hardware files (it may take longer if the network condition is poor). Find &#8220;Realtek Ameba Boards (32-bits ARM Cortex-M33 @200MHz)&#8221; in the list, click &#8220;Install&#8221;, and the Arduino IDE will automatically start downloading the files required by AmebaD including BW16.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-966 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker2.png\" alt=\"\" width=\"602\" height=\"337\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker2.png 602w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker2-300x168.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">If you encounter GitHub download issues, please refer to &#8220;Downloads\/Software Development Kit&#8221; in the <\/span><a href=\"https:\/\/www.amebaiot.com.cn\/en\/ameba-arduino-summary\/\"><span style=\"font-weight: 400;\">link<\/span><\/a><span style=\"font-weight: 400;\"> below. There are 3 parts:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><i><span style=\"font-weight: 400;\">\u00a0&#8220;AmebaD_Arduino_patch1_SDK&#8221;, please select at least 1 SDK. There are currently 5 recently released SDK options.<\/span><\/i><\/li>\n<\/ul>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><i><span style=\"font-weight: 400;\">&#8220;AmebaD_Arduino_patch2_Tools&#8221;, please select according to your operating system. Available in Windows, Linux and MacOS.<\/span><\/i><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><i><span style=\"font-weight: 400;\">&#8220;AmebaD_Arduino_Source_Code&#8221;, this part is an optional download for reference to the latest source code.<\/span><\/i><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Download the selected file and unzip it (patch1 and patch2 are required).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">There is &#8220;Install.doc&#8221;\/&#8221;Install.pdf&#8221; for your reference installation steps. Depending on your system, please run the installation tool in the &#8220;Offline_SDK_installation_tool&#8221; folder.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">After the installation is successful, you can open the Arduino IDE and select &#8220;Tools&#8221; -&gt; &#8220;Board&#8221; -&gt; &#8220;Ameba ARM (32-bits) Boards&#8221; -&gt;&#8221; BW16(RTL8720DN)&#8221; to select AmebaD as the currently connected development board.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-967 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker3.png\" alt=\"\" width=\"863\" height=\"888\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker3.png 863w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker3-292x300.png 292w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker3-768x790.png 768w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/ai-thinker3-45x45.png 45w\" sizes=\"auto, (max-width: 863px) 100vw, 863px\" \/><\/p>\n<h6><b>Step 3. Install the Serial Port<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Connect the development board to the computer via Micro USB:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-968 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board-2.jpg\" alt=\"\" width=\"800\" height=\"800\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board-2.jpg 800w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board-2-300x300.jpg 300w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board-2-150x150.jpg 150w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board-2-768x768.jpg 768w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board-2-45x45.jpg 45w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">BW16<\/span><\/p>\n<p><span style=\"font-weight: 400;\">After the corresponding connection, the USB driver will be automatically installed. If you have driver issues with the connection board, please go to <\/span><span style=\"font-weight: 400;\">http:\/\/www.wch- ic.com\/downloads\/CH341SER_ZIP.html\u2002<\/span><\/p>\n<p><span style=\"font-weight: 400;\">See USB driver. Check the COM port number in the Device Administrator of your Windows operating system:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-969 size-medium\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/select-the-correct-COM-port-190x300.png\" alt=\"\" width=\"190\" height=\"300\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/select-the-correct-COM-port-190x300.png 190w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/select-the-correct-COM-port.png 307w\" sizes=\"auto, (max-width: 190px) 100vw, 190px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Go to Tools-&gt;Port and select the correct COM port.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-970 size-large\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Port-1024x781.png\" alt=\"\" width=\"1024\" height=\"781\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Port-1024x781.png 1024w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Port-300x229.png 300w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Port-768x586.png 768w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Port.png 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Enter &#8220;Tools&#8221; -&gt; &#8220;Serial Monitor&#8221;, set the baud rate to &#8220;115200&#8221;, and then press the RST button to check the serial port connection.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-971 size-large\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Serial-Monitor-1024x784.png\" alt=\"\" width=\"1024\" height=\"784\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Serial-Monitor-1024x784.png 1024w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Serial-Monitor-300x230.png 300w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Serial-Monitor-768x588.png 768w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Serial-Monitor.png 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h6><b>Step 4. Clear Flash<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Depending on the production batch, some development boards may have built-in preset B&amp;T firmware. The firmware information is as shown in the figure below:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-972 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Clear-Flash.png\" alt=\"\" width=\"481\" height=\"351\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Clear-Flash.png 481w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Clear-Flash-300x219.png 300w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The firmware is in the OTA section. All newly compiled firmware will be automatically replaced by OTA firmware. Therefore, the OTA firmware needs to be cleared before the compiled firmware can be used.<\/span><\/p>\n<h6><b>Method 1: &#8220;Erase Flash Enable&#8221; after Arduino SDK V3.1.3.<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Choose\u201cTools\u201d-&gt;\u201cErase Flash\u201d-&gt;\u201cEnable\u201d\uff1b<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-973 size-large\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-Flash-Enable-1024x783.png\" alt=\"\" width=\"1024\" height=\"783\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-Flash-Enable-1024x783.png 1024w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-Flash-Enable-300x229.png 300w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-Flash-Enable-768x587.png 768w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-Flash-Enable.png 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Then enter upload mode.<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"> Automatically select &#8220;Tools&#8221;-&gt;&#8221;Auto Upload Mode&#8221;-&gt;&#8221;Enable&#8221;.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Next, select Sketch-&gt;Upload. &#8220;Erase flash done&#8221; appears.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-974 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done.png\" alt=\"\" width=\"863\" height=\"887\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done.png 863w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done-292x300.png 292w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done-768x789.png 768w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done-45x45.png 45w\" sizes=\"auto, (max-width: 863px) 100vw, 863px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-975 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done-2.png\" alt=\"\" width=\"864\" height=\"887\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done-2.png 864w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done-2-292x300.png 292w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done-2-768x788.png 768w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Erase-flash-done-2-45x45.png 45w\" sizes=\"auto, (max-width: 864px) 100vw, 864px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Press the RST button to check the serial monitor and rebuild the board. If there is only &#8220;#&#8221;, it means the flash is cleared successfully. Remember to select &#8220;Tools&#8221;-&gt;&#8221;Erase Flash&#8221;-&gt;&#8221;Disable&#8221;.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-976 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Disable.png\" alt=\"\" width=\"818\" height=\"435\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Disable.png 818w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Disable-300x160.png 300w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Disable-768x408.png 768w\" sizes=\"auto, (max-width: 818px) 100vw, 818px\" \/><\/p>\n<h5><b>Try the example:<\/b><\/h5>\n<h6><b>Step 1. Compile and Upload<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Arduino IDE provides many built-in examples that can be compiled, uploaded and run directly on the development board. Here, we take \u201cBlink\u201d as an example for our first attempt.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Open \u201cFile\u201d -&gt; \u201cExamples\u201d -&gt; \u201c01.Basics\u201d -&gt; \u201cBlink\u201d:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-977 size-large\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Blink-1024x786.png\" alt=\"\" width=\"1024\" height=\"786\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Blink-1024x786.png 1024w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Blink-300x230.png 300w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Blink-768x590.png 768w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Blink.png 1080w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-978 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Blink-2.png\" alt=\"\" width=\"770\" height=\"816\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Blink-2.png 770w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Blink-2-283x300.png 283w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/Blink-2-768x814.png 768w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Onboard RGB LED, default &#8220;LED_BUILTIN&#8221; is green.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Change &#8220;LED_BUILTIN&#8221; to &#8220;LED_R&#8221;, &#8220;LED_G&#8221; or &#8220;LED_B&#8221; for red, green or blue.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Next, compile the example code directly. &#8220;Sketch&#8221;-&gt;&#8221;Verify\/Compile&#8221;. Then if there are no compilation errors, then &#8220;Sketch&#8221; -&gt; &#8220;Upload&#8221;.<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\"> Check and select &#8220;Tools&#8221; -&gt; &#8220;Erase Flash&#8221; -&gt; &#8220;Disable&#8221;.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"> Enter upload mode. Manual or automatic. Select \u201cTools\u201d -&gt; \u201cAuto Upload Mode\u201d -&gt; \u201cEnable\u201d\/\u201dDisable\u201d.<\/span><\/li>\n<li><span style=\"font-weight: 400;\"> \u201cVerify\/Compile\u201d and \u201cUpload\u201d. \u201cUpload\u201d includes \u201cVerify\/Compile\u201d, \u201cVerify\/Compile\u201d can be skipped.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">If the upload is successful, &#8220;All images are sent successfully!&#8221; will be displayed.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-979 size-full\" src=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/All-images-are-sent-successfully.png\" alt=\"\" width=\"770\" height=\"815\" srcset=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/All-images-are-sent-successfully.png 770w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/All-images-are-sent-successfully-283x300.png 283w, https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/All-images-are-sent-successfully-768x813.png 768w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/p>\n<h6><b>Step 2. Execute Blink Example<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">The board will automatically reset, if the board does not support auto-upload mode, please press the RST button. The onboard RGB LED will flash.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In each example, Arduino not only provides example code, but also provides detailed documentation, including wiring diagrams, example code descriptions, technical details, etc. These examples can be used directly on the BW16. See Blink details at the following link:<\/span><\/p>\n<p><a href=\"https:\/\/www.arduino.cc\/en\/Tutorial\/BuiltInExamples\/Blink\"><span style=\"font-weight: 400;\">https:\/\/www.arduino.cc\/en\/Tutorial\/BuiltInExamples\/Blink<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Hope it can help you quickly use the BW16 module or development board. If you have any other questions, please feel free to leave us a message.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">LCSC is the authorized distributor of Ai-Thinker. LCSC is a global distributor with an extensive selection of electronic components, with more than 4 million registered customers worldwide. And, LCSC electronics is known to customers for offering in-stock inventory for fast delivery since LCSC owns 130,000\u33a1 intelligent warehouses. Select <\/span><a href=\"https:\/\/www.lcsc.com\/brand-detail\/944.html\"><span style=\"font-weight: 400;\">Ai-Thinker<\/span><\/a><span style=\"font-weight: 400;\">\u2019s IoT module and other products at LCSC Electronics.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week, LCSC Electronics supplier Ai-Thinker introduced How to set up the Arduino development environment for its BW16 module and development board.\u00a0 Ai-Thinker adheres to the first principle of trustworthiness and ease of use. Whether the product supports Arduino has always attracted the attention of customers and developers. First, let\u2019s briefly introduce the BW16 module [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[27],"tags":[66,69,68],"class_list":["post-961","post","type-post","status-publish","format-standard","hentry","category-electronic-components","tag-ai-thinker","tag-bluetooth","tag-wifi"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0 Blog | LCSC Electronics<\/title>\n<meta name=\"description\" content=\"This week, LCSC Electronics supplier Ai-Thinker introduced How to set up the Arduino development environment for its BW16 module and development board.\u00a0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0 Blog | LCSC Electronics\" \/>\n<meta property=\"og:description\" content=\"This week, LCSC Electronics supplier Ai-Thinker introduced How to set up the Arduino development environment for its BW16 module and development board.\u00a0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog | LCSC Electronics\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-17T01:44:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-05T08:25:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board.png\" \/>\n<meta name=\"author\" content=\"LCSC Editor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"LCSC Editor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/\"},\"author\":{\"name\":\"LCSC Editor\",\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/#\\\/schema\\\/person\\\/11d3b92d0208775e62d7f79a0da4e781\"},\"headline\":\"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0\",\"datePublished\":\"2024-05-17T01:44:01+00:00\",\"dateModified\":\"2025-08-05T08:25:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/\"},\"wordCount\":1020,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.lcsc.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/BW16-module-and-development-board.png\",\"keywords\":[\"Ai-Thinker\",\"bluetooth\",\"WiFi\"],\"articleSection\":[\"Electronic Components\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/\",\"url\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/\",\"name\":\"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0 Blog | LCSC Electronics\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.lcsc.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/BW16-module-and-development-board.png\",\"datePublished\":\"2024-05-17T01:44:01+00:00\",\"dateModified\":\"2025-08-05T08:25:09+00:00\",\"description\":\"This week, LCSC Electronics supplier Ai-Thinker introduced How to set up the Arduino development environment for its BW16 module and development board.\u00a0\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.lcsc.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/BW16-module-and-development-board.png\",\"contentUrl\":\"https:\\\/\\\/blogs.lcsc.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/BW16-module-and-development-board.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/\",\"name\":\"Blog | LCSC Electronics\",\"description\":\"LCSC Electronics Blogs and News\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/#organization\",\"name\":\"Blog | LCSC Electronics\",\"url\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.lcsc.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/blogs.lcsc.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/logo.png\",\"width\":939,\"height\":180,\"caption\":\"Blog | LCSC Electronics\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/#\\\/schema\\\/person\\\/11d3b92d0208775e62d7f79a0da4e781\",\"name\":\"LCSC Editor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0c5d2ddc240c300192ecdc04c2d2f7914d4b02bd00ea81b32e98b698c49e357f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0c5d2ddc240c300192ecdc04c2d2f7914d4b02bd00ea81b32e98b698c49e357f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0c5d2ddc240c300192ecdc04c2d2f7914d4b02bd00ea81b32e98b698c49e357f?s=96&d=mm&r=g\",\"caption\":\"LCSC Editor\"},\"url\":\"https:\\\/\\\/blogs.lcsc.com\\\/blog\\\/author\\\/lcsc-editor\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0 Blog | LCSC Electronics","description":"This week, LCSC Electronics supplier Ai-Thinker introduced How to set up the Arduino development environment for its BW16 module and development board.\u00a0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/","og_locale":"en_US","og_type":"article","og_title":"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0 Blog | LCSC Electronics","og_description":"This week, LCSC Electronics supplier Ai-Thinker introduced How to set up the Arduino development environment for its BW16 module and development board.\u00a0","og_url":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/","og_site_name":"Blog | LCSC Electronics","article_published_time":"2024-05-17T01:44:01+00:00","article_modified_time":"2025-08-05T08:25:09+00:00","og_image":[{"url":"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board.png","type":"","width":"","height":""}],"author":"LCSC Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"LCSC Editor","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/#article","isPartOf":{"@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/"},"author":{"name":"LCSC Editor","@id":"https:\/\/blogs.lcsc.com\/blog\/#\/schema\/person\/11d3b92d0208775e62d7f79a0da4e781"},"headline":"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0","datePublished":"2024-05-17T01:44:01+00:00","dateModified":"2025-08-05T08:25:09+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/"},"wordCount":1020,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.lcsc.com\/blog\/#organization"},"image":{"@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board.png","keywords":["Ai-Thinker","bluetooth","WiFi"],"articleSection":["Electronic Components"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/","url":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/","name":"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0 Blog | LCSC Electronics","isPartOf":{"@id":"https:\/\/blogs.lcsc.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board.png","datePublished":"2024-05-17T01:44:01+00:00","dateModified":"2025-08-05T08:25:09+00:00","description":"This week, LCSC Electronics supplier Ai-Thinker introduced How to set up the Arduino development environment for its BW16 module and development board.\u00a0","breadcrumb":{"@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/#primaryimage","url":"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board.png","contentUrl":"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2024\/04\/BW16-module-and-development-board.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.lcsc.com\/blog\/ai-thinker-bw16-arduino-development-environment-setup-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.lcsc.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ai-Thinker BW16 Arduino Development Environment Setup Tutorial\u00a0"}]},{"@type":"WebSite","@id":"https:\/\/blogs.lcsc.com\/blog\/#website","url":"https:\/\/blogs.lcsc.com\/blog\/","name":"Blog | LCSC Electronics","description":"LCSC Electronics Blogs and News","publisher":{"@id":"https:\/\/blogs.lcsc.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.lcsc.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blogs.lcsc.com\/blog\/#organization","name":"Blog | LCSC Electronics","url":"https:\/\/blogs.lcsc.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.lcsc.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2023\/10\/logo.png","contentUrl":"https:\/\/blogs.lcsc.com\/wp-content\/uploads\/2023\/10\/logo.png","width":939,"height":180,"caption":"Blog | LCSC Electronics"},"image":{"@id":"https:\/\/blogs.lcsc.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.lcsc.com\/blog\/#\/schema\/person\/11d3b92d0208775e62d7f79a0da4e781","name":"LCSC Editor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0c5d2ddc240c300192ecdc04c2d2f7914d4b02bd00ea81b32e98b698c49e357f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0c5d2ddc240c300192ecdc04c2d2f7914d4b02bd00ea81b32e98b698c49e357f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c5d2ddc240c300192ecdc04c2d2f7914d4b02bd00ea81b32e98b698c49e357f?s=96&d=mm&r=g","caption":"LCSC Editor"},"url":"https:\/\/blogs.lcsc.com\/blog\/author\/lcsc-editor\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/posts\/961","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/comments?post=961"}],"version-history":[{"count":4,"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/posts\/961\/revisions"}],"predecessor-version":[{"id":3106,"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/posts\/961\/revisions\/3106"}],"wp:attachment":[{"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/media?parent=961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/categories?post=961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.lcsc.com\/blog\/wp-json\/wp\/v2\/tags?post=961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}