{"id":93548,"date":"2020-02-04T11:46:39","date_gmt":"2020-02-04T11:46:39","guid":{"rendered":"https:\/\/randomnerdtutorials.com\/?p=93548"},"modified":"2024-06-15T10:38:43","modified_gmt":"2024-06-15T10:38:43","slug":"program-upload-code-esp32-cam","status":"publish","type":"post","link":"https:\/\/randomnerdtutorials.com\/program-upload-code-esp32-cam\/","title":{"rendered":"How to Program \/ Upload Code to ESP32-CAM AI-Thinker (Arduino IDE)"},"content":{"rendered":"\n<p>The ESP32-CAM AI-Thinker development board can be programmed using Arduino IDE. This guide shows how to program and upload code to the ESP32-CAM (AI-Thinker) development board using Arduino IDE.<\/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\/2020\/02\/how-to-program-upload-code-firmware-ESP32-CAM-board-Arduino-IDE-FTDI.jpg?resize=1200%2C675&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"How to program upload code to ESP32-CAM board Arduino IDE with FTDI Programmer\" class=\"wp-image-93572\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/how-to-program-upload-code-firmware-ESP32-CAM-board-Arduino-IDE-FTDI.jpg?w=1280&amp;quality=100&amp;strip=all&amp;ssl=1 1280w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/how-to-program-upload-code-firmware-ESP32-CAM-board-Arduino-IDE-FTDI.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/how-to-program-upload-code-firmware-ESP32-CAM-board-Arduino-IDE-FTDI.jpg?resize=1024%2C576&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/how-to-program-upload-code-firmware-ESP32-CAM-board-Arduino-IDE-FTDI.jpg?resize=768%2C432&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure><\/div>\n\n\n<p>The <a rel=\"noreferrer noopener\" aria-label=\"ESP32-CAM AI-Thinker (opens in a new tab)\" href=\"https:\/\/makeradvisor.com\/esp32-cam-ov2640-camera\/\" target=\"_blank\">ESP32-CAM AI-Thinker<\/a> module is an ESP32 development board with an OV2640 camera, microSD card support, on-board flash lamp and several GPIOs to connect peripherals. However, it doesn&#8217;t have a built-in programmer. You need an FTDI programmer to connect it to your computer and upload code.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/makeradvisor.com\/tools\/ftdi-programmer-board\/\" target=\"_blank\" rel=\"noreferrer noopener\">Buy an FTDI Programmer<\/a><\/li>\n\n\n\n<li><a aria-label=\"Buy an ESP32-CAM AI-Thinker with OV2640 Camera (opens in a new tab)\" href=\"https:\/\/makeradvisor.com\/tools\/esp32-cam\/\" target=\"_blank\" rel=\"noreferrer noopener\">Buy an ESP32-CAM AI-Thinker with OV2640 Camera<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Install the ESP32 Add-on<\/h2>\n\n\n\n<p>To program the ESP32-CAM board with Arduino IDE, you need to have Arduino IDE installed as well as the ESP32 add-on. Follow the next tutorial to install the ESP32 add-on, if you haven\u2019t already:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/installing-esp32-arduino-ide-2-0\/\" title=\"\">Installing the ESP32 Board in Arduino IDE<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"mce_111\">Program ESP32-CAM (Upload Code with Arduino IDE)<\/h2>\n\n\n\n<p>To upload code to the ESP32-CAM (AI-Thinker) using Arduino IDE, follow the next exact steps.<\/p>\n\n\n\n<p>Connect the ESP32-CAM board to your computer using an <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/makeradvisor.com\/tools\/ftdi-programmer-board\/\" target=\"_blank\" rel=\"noreferrer noopener\">FTDI programmer<\/a>. Follow the next schematic diagram:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"877\" height=\"532\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/06\/ESP32-CAM-FTDI-programmer.png?resize=877%2C532&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32-CAM connected to an FTDI Programmer to upload program using Arduino IDE\" class=\"wp-image-159060\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/06\/ESP32-CAM-FTDI-programmer.png?w=877&amp;quality=100&amp;strip=all&amp;ssl=1 877w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/06\/ESP32-CAM-FTDI-programmer.png?resize=300%2C182&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/06\/ESP32-CAM-FTDI-programmer.png?resize=768%2C466&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 877px) 100vw, 877px\" \/><\/figure><\/div>\n\n\n<p class=\"rntbox rntclgreen\"><strong>Note: <\/strong> the order of the FTDI pins on the diagram may not match yours. Make sure you check the silkscreen label next to each pin.<\/p>\n\n\n\n<p>Many FTDI programmers have a jumper that allows you to select 3.3V or 5V. Make sure the jumper is in the right place to select 5V.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"750\" height=\"422\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/FTDI-Programmer-select-jumper-to-5V-cap.jpg?resize=750%2C422&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"FTDI Programmer select jumper cap to 5V\" class=\"wp-image-93571\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/FTDI-Programmer-select-jumper-to-5V-cap.jpg?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/FTDI-Programmer-select-jumper-to-5V-cap.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p class=\"rntbox rntcred\"><strong>Important: <\/strong> <span class=\"rnthl rntcgray\">GPIO 0<\/span> needs to be connected to&nbsp;<span class=\"rnthl rntcblack\">GND<\/span> so that you\u2019re able to upload code.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>ESP32-CAM<\/strong><\/td><td><strong>FTDI Programmer<\/strong><\/td><\/tr><tr><td><span class=\"rnthl rntcblack\">GND<\/span><\/td><td>GND<\/td><\/tr><tr><td><span class=\"rnthl rntcred\">5V<!--<\/td--><\/span><\/td><td>VCC (5V)<\/td><\/tr><tr><td><span class=\"rnthl rntclgreen\">U0R<\/span> (RX)<\/td><td>TX<\/td><\/tr><tr><td><span class=\"rnthl rntclblue\">U0T<\/span> (TX)<\/td><td>RX<\/td><\/tr><tr><td><span class=\"rnthl rntclgray\">GPIO 0<\/span><\/td><td>GND<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>To upload code to the ESP32-CAM using Arduino IDE, follow the next steps:<\/p>\n\n\n\n<p>1) Go to\u00a0<strong>Tools\u00a0<\/strong>>\u00a0<strong>Board\u00a0<\/strong>and select\u00a0<strong>AI-Thinker ESP32-CAM<\/strong>. You must have the <a href=\"https:\/\/randomnerdtutorials.com\/installing-esp32-arduino-ide-2-0\/\" title=\"\">ESP32 add-on installed<\/a>. Otherwise, this board won&#8217;t show up on the Boards menu.<\/p>\n\n\n\n<p>2) Go to&nbsp;<strong>Tools&nbsp;<\/strong>&gt;&nbsp;<strong>Port&nbsp;<\/strong>and select the COM port the ESP32-CAM is connected to.<\/p>\n\n\n\n<p>3) For demonstration purposes, you can upload a blank sketch to your board:<\/p>\n\n\n\n<pre class=\"wp-block-code language-c\"><code>void setup() {\n  \/\/ put your setup code here, to run once:\n}\n\nvoid loop() {\n  \/\/ put your main code here, to run repeatedly:\n}<\/code><\/pre>\n\n\n\n<p>4) Then, click the <strong>Upload <\/strong>button in your Arduino IDE.<\/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=\"36\" height=\"39\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2021\/05\/arduino-ide-2-upload-button.png?resize=36%2C39&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Arduino IDE 2 Upload Button\" class=\"wp-image-146269\"\/><\/figure><\/div>\n\n\n<p>5) When you start to see some dots on the debugging window, you may need to press the ESP32-CAM on-board RST button if it doesn&#8217;t go automatically into flashing mode.<\/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=\"1009\" height=\"91\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/12\/dots-uploading-code.png?resize=1009%2C91&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"Program and upload code to ESP32-CAM with Arduino IDE\" class=\"wp-image-91746\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/12\/dots-uploading-code.png?w=1009&amp;quality=100&amp;strip=all&amp;ssl=1 1009w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/12\/dots-uploading-code.png?resize=300%2C27&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/12\/dots-uploading-code.png?resize=768%2C69&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1009px) 100vw, 1009px\" \/><\/figure><\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"422\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/ESP32-CAM-Press-Click-RESET-RST-button-on-board-restart.jpg?resize=750%2C422&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32-CAM Press RESET RST on-board button to restart\" class=\"wp-image-93570\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/ESP32-CAM-Press-Click-RESET-RST-button-on-board-restart.jpg?w=750&amp;quality=100&amp;strip=all&amp;ssl=1 750w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/ESP32-CAM-Press-Click-RESET-RST-button-on-board-restart.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/figure><\/div>\n\n\n<p>After a few seconds, the code should be successfully uploaded to your board.<\/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=\"651\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/06\/upload-code-esp32-cam.png?resize=666%2C651&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32-CAM AI Thinker Module Arduino IDE Done Uploading Success Message\" class=\"wp-image-159062\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/06\/upload-code-esp32-cam.png?w=666&amp;quality=100&amp;strip=all&amp;ssl=1 666w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/06\/upload-code-esp32-cam.png?resize=300%2C293&amp;quality=100&amp;strip=all&amp;ssl=1 300w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><\/figure><\/div>\n\n\n<p>6) When you see the &#8220;<strong>Done uploading<\/strong>&#8221; message, you need to <strong>remove <span class=\"rnthl rntcgray\">GPIO 0<\/span> from <span class=\"rnthl rntcblack\">GND<\/span><\/strong> and press the RST button to run your new code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Common Errors and How to Fix Them<\/h2>\n\n\n\n<p>If you don&#8217;t follow the previous instructions exactly, you may get the following errors:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Failed to connect to ESP32: Timed out waiting for packet header<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1184\" height=\"268\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/fatal-error-occurred-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header.png?resize=1184%2C268&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32-CAM Failed to connect to ESP32: Timed out waiting for packet header \" class=\"wp-image-85909\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/fatal-error-occurred-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header.png?w=1184&amp;quality=100&amp;strip=all&amp;ssl=1 1184w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/fatal-error-occurred-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header.png?resize=300%2C68&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/fatal-error-occurred-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header.png?resize=768%2C174&amp;quality=100&amp;strip=all&amp;ssl=1 768w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/fatal-error-occurred-failed-to-connect-to-esp32-timed-out-waiting-for-packet-header.png?resize=1024%2C232&amp;quality=100&amp;strip=all&amp;ssl=1 1024w\" sizes=\"(max-width: 1184px) 100vw, 1184px\" \/><\/figure><\/div>\n\n\n<p>This error means that the ESP32-CAM is not in flashing mode or it is not connected properly to the FTDI programmer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Brownout detector or Guru meditation error<\/h3>\n\n\n\n<p>When you open your Arduino IDE Serial Monitor and the error message \u201cBrownout detector was triggered\u201d is constantly being printed over and over again. It means that there\u2019s some sort of hardware problem.<\/p>\n\n\n\n<p>It\u2019s often related to one of the following issues:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Poor quality USB cable;<\/li>\n\n\n\n<li>USB cable is too long;<\/li>\n\n\n\n<li>Board with some defect (bad solder joints);<\/li>\n\n\n\n<li>Bad computer USB port;<\/li>\n\n\n\n<li>Or not enough power provided by the computer USB port.<\/li>\n<\/ul>\n\n\n\n<p><strong>Solution:<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Try a different shorter USB cable (with data wires);<\/li>\n\n\n\n<li>Use a different computer USB port or use a USB hub with an external power supply;<\/li>\n\n\n\n<li>Some readers were using 3.3V and reported that when powering the ESP32-CAM with 5V, the issue was fixed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Board at COMX is not available \u2013 COM Port not selected<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1184\" height=\"269\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/no-com-port-selected.png?resize=1184%2C269&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32-CAM COM Port Not Selected\" class=\"wp-image-85911\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/no-com-port-selected.png?w=1184&amp;quality=100&amp;strip=all&amp;ssl=1 1184w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/no-com-port-selected.png?resize=300%2C68&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/no-com-port-selected.png?resize=768%2C174&amp;quality=100&amp;strip=all&amp;ssl=1 768w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2019\/06\/no-com-port-selected.png?resize=1024%2C233&amp;quality=100&amp;strip=all&amp;ssl=1 1024w\" sizes=\"(max-width: 1184px) 100vw, 1184px\" \/><\/figure>\n\n\n\n<p>If you get the following error or similar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>serial.serialutil.SerialException: could not open port 'COM8': WindowsError(2, 'The system cannot find the file specified.')\nFailed to execute script esptool\nthe selected serial port Failed to execute script esptool\n does not exist or your board is not connected\nBoard at COM8 is not available<\/code><\/pre>\n\n\n\n<p>It means that you haven\u2019t selected the COM port in the Tools menu. In your Arduino IDE, go to&nbsp;<strong>Tools&nbsp;<\/strong>&gt;&nbsp;<strong>Port&nbsp;<\/strong>and select the COM port the ESP32 is connected to.<\/p>\n\n\n\n<p>It might also mean that the ESP32-CAM is not establishing a serial connection with your computer or it is not properly connected to the USB connector.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Other errors<\/h3>\n\n\n\n<p>For a more extensive list of the most common problems with the ESP32-CAM and how to fix them, read our <a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-troubleshooting-guide\/\">ESP32-CAM Troubleshooting Guide<\/a>.<\/p>\n\n\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"94673\" class=\"elementor elementor-94673\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2689e44b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2689e44b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7490d123\" data-id=\"7490d123\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-35934f78 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"35934f78\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-3de108d9\" data-id=\"3de108d9\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5aca63ab elementor-widget elementor-widget-image\" data-id=\"5aca63ab\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-projects-ebook\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"334\" height=\"334\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/03\/ESP32-CAM-eBook-334.jpg?fit=334%2C334&amp;quality=100&amp;strip=all&amp;ssl=1\" class=\"attachment-full size-full wp-image-94555\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/03\/ESP32-CAM-eBook-334.jpg?w=334&amp;quality=100&amp;strip=all&amp;ssl=1 334w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/03\/ESP32-CAM-eBook-334.jpg?resize=300%2C300&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/03\/ESP32-CAM-eBook-334.jpg?resize=150%2C150&amp;quality=100&amp;strip=all&amp;ssl=1 150w\" sizes=\"(max-width: 334px) 100vw, 334px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\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<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-4bd084e0\" data-id=\"4bd084e0\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-517cf0fa elementor-widget elementor-widget-heading\" data-id=\"517cf0fa\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-projects-ebook\/\">[eBook] Build ESP32-CAM Projects using Arduino IDE<\/a><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3438ea70 elementor-hidden-phone elementor-widget elementor-widget-text-editor\" data-id=\"3438ea70\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Learn how to program and build 17 projects with the ESP32-CAM using Arduino IDE\u00a0<strong><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-projects-ebook\/\" rel=\"noopener\">DOWNLOAD \u00bb<\/a><\/strong><\/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<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-674524a5 elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-text-editor\" data-id=\"674524a5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Learn how to program and build 17 projects with the ESP32-CAM using Arduino IDE <strong><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-projects-ebook\/\" rel=\"noopener\">DOWNLOAD \u00bb<\/a><\/strong><\/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<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>We hope this guide helps you get started programming your ESP32-CAM AI-Thinker using Arduino IDE. <\/p>\n\n\n\n<p>Check all our projects with the ESP32-CAM:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-video-streaming-face-recognition-arduino-ide\/\" target=\"_blank\" rel=\"noreferrer noopener\">Video Streaming, Face Detection and Face Recognition<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-video-streaming-web-server-camera-home-assistant\/\" target=\"_blank\" rel=\"noreferrer noopener\">ESP32 IP CAM \u2013 Video Streaming (Home Assistant and Node-RED)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-take-photo-save-microsd-card\/\" target=\"_blank\" rel=\"noreferrer noopener\">Take Photo and Save to MicroSD Card<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-pir-motion-detector-photo-capture\/\" target=\"_blank\" rel=\"noreferrer noopener\">PIR Motion Detector with Photo Capture<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-take-photo-display-web-server\/\" target=\"_blank\" rel=\"noreferrer noopener\">Take Photo, Save to SPIFFS and Display in Web Server<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-cam-projects-ebook\/\"><strong>Build ESP32-CAM Projects (eBook)<\/strong><\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/projects-esp32-cam\/\"><strong>Read all our ESP32-CAM Projects, Tutorials and Guides<\/strong><\/a><\/li>\n<\/ul>\n\n\n\n<p>There are different models of ESP32 camera development boards that might be more suitable for your projects. So, you might also like reading:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a aria-label=\"ESP32 Camera Dev Boards Review and Comparison (opens in a new tab)\" href=\"https:\/\/makeradvisor.com\/esp32-camera-cam-boards-review-comparison\/\" target=\"_blank\" rel=\"noreferrer noopener\">ESP32 Camera Dev Boards Review and Comparison<\/a><\/li>\n<\/ul>\n\n\n\n<p>Thanks for reading.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The ESP32-CAM AI-Thinker development board can be programmed using Arduino IDE. This guide shows how to program and upload code to the ESP32-CAM (AI-Thinker) development board using Arduino IDE. The &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"How to Program \/ Upload Code to ESP32-CAM AI-Thinker (Arduino IDE)\" class=\"read-more button\" href=\"https:\/\/randomnerdtutorials.com\/program-upload-code-esp32-cam\/#more-93548\" aria-label=\"Read more about How to Program \/ Upload Code to ESP32-CAM AI-Thinker (Arduino IDE)\">CONTINUE READING \u00bb<\/a><\/p>\n","protected":false},"author":5,"featured_media":93572,"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,319,264],"tags":[],"class_list":["post-93548","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32","category-esp32-project","category-esp32-arduino-ide","category-esp32-cam","category-project"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2020\/02\/how-to-program-upload-code-firmware-ESP32-CAM-board-Arduino-IDE-FTDI.jpg?fit=1280%2C720&quality=100&strip=all&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/93548","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=93548"}],"version-history":[{"count":3,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/93548\/revisions"}],"predecessor-version":[{"id":159066,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/93548\/revisions\/159066"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media\/93572"}],"wp:attachment":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media?parent=93548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/categories?post=93548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/tags?post=93548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}