﻿{"id":492,"date":"2024-03-30T21:59:13","date_gmt":"2024-03-30T13:59:13","guid":{"rendered":"https:\/\/3dok.biz\/wordpress\/?p=492"},"modified":"2024-03-30T22:02:31","modified_gmt":"2024-03-30T14:02:31","slug":"arduino-%e5%90%84%e6%ac%be-esp32-devkit-%e6%8e%a5%e8%85%b3%e5%9c%96","status":"publish","type":"post","link":"https:\/\/3dok.biz\/wordpress\/?p=492","title":{"rendered":"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"492\" class=\"elementor elementor-492\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-218afbea elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"218afbea\" data-element_type=\"section\" data-e-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-4b357a3c\" data-id=\"4b357a3c\" data-element_type=\"column\" data-e-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-1c0c26f elementor-widget elementor-widget-text-editor\" data-id=\"1c0c26f\" data-element_type=\"widget\" data-e-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\n<p class=\"wp-block-paragraph\"> <\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-74859ec elementor-widget elementor-widget-image\" data-id=\"74859ec\" data-element_type=\"widget\" data-e-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<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"501\" src=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32_DevKit_v1_30pin-1024x501.jpeg\" class=\"attachment-large size-large wp-image-494\" alt=\"\" srcset=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32_DevKit_v1_30pin-1024x501.jpeg 1024w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32_DevKit_v1_30pin-300x147.jpeg 300w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32_DevKit_v1_30pin-768x376.jpeg 768w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32_DevKit_v1_30pin-1536x752.jpeg 1536w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32_DevKit_v1_30pin.jpeg 1685w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\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<div class=\"elementor-element elementor-element-bd7b580 elementor-widget elementor-widget-image\" data-id=\"bd7b580\" data-element_type=\"widget\" data-e-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<img decoding=\"async\" width=\"498\" height=\"316\" src=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg\" class=\"attachment-large size-large wp-image-496\" alt=\"\" srcset=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg 498w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin-300x190.jpg 300w\" sizes=\"(max-width: 498px) 100vw, 498px\" \/>\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<div class=\"elementor-element elementor-element-212f233 elementor-widget elementor-widget-image\" data-id=\"212f233\" data-element_type=\"widget\" data-e-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<img decoding=\"async\" width=\"1024\" height=\"698\" src=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-S3_DevKitC-1_pinlayout_v1.1_44pin-1024x698.jpg\" class=\"attachment-large size-large wp-image-495\" alt=\"\" srcset=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-S3_DevKitC-1_pinlayout_v1.1_44pin-1024x698.jpg 1024w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-S3_DevKitC-1_pinlayout_v1.1_44pin-300x205.jpg 300w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-S3_DevKitC-1_pinlayout_v1.1_44pin-768x524.jpg 768w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-S3_DevKitC-1_pinlayout_v1.1_44pin-1536x1047.jpg 1536w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-S3_DevKitC-1_pinlayout_v1.1_44pin.jpg 1584w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\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<div class=\"elementor-element elementor-element-89cfd81 elementor-widget elementor-widget-spacer\" data-id=\"89cfd81\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8cbcbec elementor-widget elementor-widget-text-editor\" data-id=\"8cbcbec\" data-element_type=\"widget\" data-e-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><strong>Use the GPIO pins of the ESP32<\/strong><\/p>\n<p><em>(Updated at <\/em><em>08\/18\/2022<\/em><em>)<\/em><\/p>\n<p>Find all the relevant information about the ESP32 pinout on a single page to use these GPIO pins for your DIY electronics project correctly. Even though there are many variations of ESP32 boards, the function of the pins remains the same. However, some pins may not be available, depending on your model.<\/p>\n<p>There are plenty of ESP32 boards out there with different pin arrangements. Here is a detailed pin diagram of 2 different ESP32 boards. It will be beneficial to know the specific functions of each pin:<\/p>\n<ul>\n<li><strong>ESP32 WROOM Generic DevKit<\/strong><\/li>\n<\/ul>\n<p>Pinout of an ESP32 board<\/p>\n<ul>\n<li><strong>uPesy ESP32 WROOM DevKit<\/strong><\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p>Pinout of the uPesy ESP32 Wroom DevKit board<\/p>\n<p>Note<\/p>\n<p>A significant difference between the two boards that are not necessarily obvious is their width: The uPesy ESP32 board can be put on a breadboard, and you can access the pins on both sides, unlike most other ESP32 boards that are too \u201cbig\u201d to be used on a breadboard \u2026<\/p>\n<p><strong>The particular behavior of some pins of the ESP32<\/strong><\/p>\n<p>The goal is to inform you about the limitations of some GPIO pins of the ESP32 to avoid unpleasant surprises during your projects or having an incomprehensible bug in your code.<\/p>\n<p>ESP32-based development boards typically have 33 pins except those for the power supply. Some GPIO pins have a little bit particular functionings:<\/p>\n<ul>\n<li>If your ESP32 board has the GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, and GPIO11 pins, <strong>you must not use them<\/strong> because they are connected to the flash memory of the ESP32: if you use them, the ESP32 will not work.<\/li>\n<\/ul>\n<table width=\"35%\">\n<thead>\n<tr>\n<td colspan=\"2\">\n<p>Pins connected to the Flash memory of the ESP32<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>GPIO<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>Possible name<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<p><strong>6<\/strong><\/p>\n<\/td>\n<td>\n<p>SCK\/CLK<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>7<\/strong><\/p>\n<\/td>\n<td>\n<p>SDO\/SD0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>8<\/strong><\/p>\n<\/td>\n<td>\n<p>SDI\/SD1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>9<\/strong><\/p>\n<\/td>\n<td>\n<p>SHD\/SD2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>10<\/strong><\/p>\n<\/td>\n<td>\n<p>SWP\/SD3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>11<\/strong><\/p>\n<\/td>\n<td>\n<p>CSC\/CMD<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Note<\/p>\n<p>For this reason, these pins are not available on uPesy ESP32 boards.<\/p>\n<ul>\n<li>The GPIO1 (TX0) and GPIO3 (RX0) pins are used to communicate with the computer in UART via USB. If you use them, you will not be able to upload programs to the board or use the serial monitor via the USB port. They can be useful for programming the board without a USB but with an external programmer instead. Fortunately, there are other UART interfaces available.<\/li>\n<li>Pins GPIO36 (VP), GPIO39 (VN), GPIO34, and GPIO35 can only be used as input. They also do not have internal pull-up and pull-down resistors (pinMode(36, INPUT_PULLUP) or pinMode(36, INPUT_PULLDOWN) cannot be used).<\/li>\n<li>Some pins have a unique function when starting the ESP32. These are called <strong>ESP32 Strapping Pins<\/strong> .<\/li>\n<\/ul>\n<p>Strapping pins of the ESP32<\/p>\n<p>They are used to put the ESP32 in <strong>BOOT<\/strong> mode (to run the program written in the flash memory) or in <strong>FLASH<\/strong> mode (to upload the program to the flash memory). Depending on the voltage available on these pins, the ESP32 will start either in <strong>BOOT<\/strong> mode or in <strong>FLASH<\/strong> mode.<\/p>\n<p>The strapping pins are the <strong>GPIO0, GPIO2, GPIO12 (MTDI) and GPIO15 (MTDO)<\/strong> . You can use them, but you must be careful when setting a logic state (3.3V or 0V) with an external pull-up or pull-down resistor.<\/p>\n<p>Tip<\/p>\n<p>If your ESP32 board works correctly, but when you add a sensor, nothing works anymore (it is impossible to upload a program or launch it), it is most likely related to these famous strapping pins.<\/p>\n<ul>\n<li>When booting the ESP32, during a short period, some pins quickly change their logic states (0V \u2192 3.3V). You may have weird bugs with these pins: for example, a relay that temporarily activates. The faulty pins are the following:\n<ul>\n<li><strong>GPIO 1<\/strong> : Sends the ESP32 boot logs via the UART<\/li>\n<li><strong>GPIO 3<\/strong> : 3.3V voltage at boot time<\/li>\n<li><strong>GPIO 5<\/strong> : Sends a PWM signal at boot time<\/li>\n<li><strong>GPIO 14<\/strong> : Sends a PWM signal at boot time<\/li>\n<li><strong>GPIO 15<\/strong> : Sends the ESP32 boot logs via the UART<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Note<\/p>\n<p>Note that we can use these pins. If you encounter a strange behavior when starting the ESP32 by using one of these pins, you will probably have to choose another one.<\/p>\n<ul>\n<li>The\u00a0EN\u00a0pin can activate or deactivate the ESP32 via an external wire. It is connected to the board\u2019s EN button. When the ESP32 is on, it is at 3.3V. If you put this pin to the ground, the ESP32 is off. This can be used when the ESP32 is in a box and you want to be able to turn it on\/off with a switch.<\/li>\n<li>On boards that use an ESP32-WROVER module to have more RAM (for example, on <a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/upesy-esp32-wrover-devkit-board-documentation\">the uPesy ESP32 Wrover DevKit board<\/a> ), then the GPIO16 and GPIO17 pins are not available because they are used internally by the PSRAM.<\/li>\n<li>Others GPIO pins have no particular restrictions.<\/li>\n<\/ul>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>Summary of all ESP32 GPIO pins<\/strong><\/p>\n<table width=\"90%\">\n<thead>\n<tr>\n<td colspan=\"4\">\n<p>Summary of all ESP32 GPIO pins<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>GPIO<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>INPUT<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>OUTPUT<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>Comments<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<p><strong>0<\/strong><\/p>\n<\/td>\n<td>\n<p>YES (Internal pull-up)<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>Must be at 0V during the FLASH<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>1 (TX0)<\/strong><\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>UART communication with the PC<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>2<\/strong><\/p>\n<\/td>\n<td>\n<p>YES (Internal pull-down)<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>Must be at 0V during the FLASH<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>3 (RX0)<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>UART communication with the PC<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>4<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>5<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>6<\/strong><\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>Connected to the internal flash<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>7<\/strong><\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>Connected to the internal flash<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>8<\/strong><\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>Connected to the internal flash<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>9<\/strong><\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>Connected to the internal flash<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>10<\/strong><\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>Connected to the internal flash<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>11<\/strong><\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>Connected to the internal flash<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>12 (MTDI)<\/strong><\/p>\n<\/td>\n<td>\n<p>YES (Internal pull-down)<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>Must be at 0V during the BOOT<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>13<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>14<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>15 (MTDO)<\/strong><\/p>\n<\/td>\n<td>\n<p>YES (Internal pull-up)<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>Startup log if at 3.3V<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>16<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>Not available on WROVER<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>17<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>Not available on WROVER<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>18<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>19<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>21<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>22<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>23<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>25<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>26<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>27<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>32<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>33<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\u00a0<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>34<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>No internal pull-up\/pull-down<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>35<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>No internal pull-up\/pull-down<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>36 (VP)<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>No internal pull-up\/pull-down<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>39 (VN)<\/strong><\/p>\n<\/td>\n<td>\n<p>YES<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>No internal pull-up\/pull-down<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>EN<\/strong><\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>NO<\/p>\n<\/td>\n<td>\n<p>Connected to the EN button (ESP32 Reset)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>ESP32 Peripherals<\/strong><\/p>\n<p>To interact with the modules, sensors or electronic circuits, the ESP32, like any microcontroller, has a multitude of peripherals. They are much more numerous than on a classic Arduino Uno board.<\/p>\n<p>The ESP32 has the following peripherals:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/esp32-pinout-reference-gpio-pins-ultimate-guide#acef46f3258d486ebeb5ee820b410a87\">3 UART interfaces<\/a><\/li>\n<li><a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/esp32-pinout-reference-gpio-pins-ultimate-guide#b07c0b8f4e514162be972a1f3da4db9b\">2 I2C interfaces<\/a><\/li>\n<li><a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/esp32-pinout-reference-gpio-pins-ultimate-guide#a3975f1f8164acf8a742e99f75e1e8f\">3 SPI interfaces<\/a><\/li>\n<li><a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/esp32-pinout-reference-gpio-pins-ultimate-guide#ddc2b06a7198495bb23488e58fa5d271\">16 PWM outputs<\/a><\/li>\n<li><a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/esp32-pinout-reference-gpio-pins-ultimate-guide#c81d9fe4ab1a8ae05778774fbef\">10 capacitive sensors<\/a><\/li>\n<li><a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/esp32-pinout-reference-gpio-pins-ultimate-guide#f8ae9364473a7b267ff42e237fe\">18 ADC channels<\/a><\/li>\n<li><a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/esp32-pinout-reference-gpio-pins-ultimate-guide#bf31e8ad04bc2b9f88c526ff9e655\">2 DAC outputs<\/a><\/li>\n<\/ul>\n<p>The ESP32 already uses some peripherals in its essential operation. So, in reality, there are fewer possible interfaces for each device.<\/p>\n<p>Tip<\/p>\n<p>The pins of the ESP32 are much more modular than those of the Arduino: <strong>You can<\/strong> <strong>\u201c<\/strong> <strong>attach<\/strong> <strong>\u201c<\/strong> <strong>a UART, I2C, SPI, and PWM peripheral on the pins you want.<\/strong> The SPI, I2C, UART, PWM, and DAC are no longer associated with specific pins. For example, on the Arduino Uno, you could only have SPI on pins 10, 11, 12, and 13. With the ESP32, you can choose the ones you want. Only the ADC and the capacitive sensors are assigned to fixed pins. ESP32 Pinouts available on the Internet show the default association (if you do not specify the pins used). It remains a good practice to use the pins by default to keep good compatibility with external libraries as long as this does not limit the connection of your wires.<\/p>\n<p><strong>UART on ESP32<\/strong><\/p>\n<p>The UART is the serial protocol that allows easy data exchange between 2 devices. On the ESP32, 3 UART buses are available: UART0, UART1 and UART2. We can use them to communicate with a sensor, an Arduino, a Raspberry Pi, a computer \u2026<\/p>\n<ul>\n<li>The UART0 is by default on pins GPIO1(TX0) and GPIO3(RX0) of the ESP32. It is used to communicate with the computer through the serial monitor. It is also the one used to flash the ESP32 board when uploading a new program. It generally displays messages in the console with Serial.println() .<\/li>\n<li>To use the UART2, simply add Serial2.begin() in the function setup() and to use the&#8220;Serial2.println()&#8220; to send messages. By default, the UART2 bus is on pins GPIO16(RX2) and GPIO17(TX2), but you can change them (useful with a Wrover module) during setup. This simple code allows you to use the UART2 bus:<\/li>\n<\/ul>\n<ul>\n<li>void setup() {<\/li>\n<li>begin(115200);<\/li>\n<li>}<\/li>\n<li>\u00a0<\/li>\n<li>void loop() {<\/li>\n<li>println(&#8220;Hello from UART2&#8221;);<\/li>\n<li>delay(100);<\/li>\n<li>}<\/li>\n<\/ul>\n<p>\uf0b7\u00a0 Note<\/p>\n<p>The message will not be displayed on the serial monitor since the UART2 is not connected to the computer\u2019s USB.<\/p>\n<p>Message sent via UART2 from pin GPIO17<\/p>\n<p>\uf0b7\u00a0 The UART1 is by default on the pins used by the ESP32 flash. However, We can use it by choosing the pins you want, thanks to the \u201cGPIO matrix\u201d of the ESP32. Thus this code allows having a serial interface on the pins GPIO14 and GPIO12 by using the UART1 bus.<\/p>\n<p>void setup() {<\/p>\n<p>\u00a0 \/*<\/p>\n<p>\u00a0 * UART1\u00a0 -&gt; Serial1<\/p>\n<p>\u00a0 * RX Pin -&gt; GPIO 14<\/p>\n<p>\u00a0 * TX Pin -&gt; GPIO 12<\/p>\n<p>\u00a0 * UART Configuration -&gt; SERIAL_8N1<\/p>\n<p>\u00a0 *\/<\/p>\n<p>\u00a0 Serial1.begin(115200,SERIAL_8N1,14,12);<\/p>\n<p>\u00a0<\/p>\n<p>}<\/p>\n<p>\u00a0<\/p>\n<p>void loop() {<\/p>\n<p>\u00a0 Serial1.println(&#8220;Hello from UART1&#8221;);<\/p>\n<p>\u00a0 delay(100);<\/p>\n<p>}<\/p>\n<p>Message sent via UART1 from pin GPIO12<\/p>\n<p><strong>I2C on ESP32<\/strong><\/p>\n<p>The ESP32 has <strong>2 I2C buses<\/strong> :<\/p>\n<ul>\n<li>The I2C0 bus is the one used by default by Arduino libraries. It is connected to the pins\u00a0<strong>GPIO22 (SCL) and GPIO21 (SDA)<\/strong> of the ESP32. It can be used on any pin of the ESP32 when you use the\u00a0Wire.h library by specifying the pins with the function\u00a0Wire.begin(SDA_PIN,\u00a0SCL_PIN) .<\/li>\n<li>The I2C1 bus can also be used on any pin (pay attention to the \u201climited pins\u201d described previously). Here is an example that uses the second I2C bus:<\/li>\n<\/ul>\n<ul>\n<li>#include &lt;Wire.h&gt;<\/li>\n<li>\u00a0<\/li>\n<li>TwoWire I2C1 = TwoWire(1);<\/li>\n<li>\u00a0<\/li>\n<li>void setup() {<\/li>\n<li>begin(14,12,400000); \/\/ SDA pin 14, SCL pin 12, 400kHz frequency<\/li>\n<li>}<\/li>\n<li>\u00a0<\/li>\n<li>void loop() {<\/li>\n<li>beginTransmission(0x42);<\/li>\n<li>write(140);<\/li>\n<li>endTransmission();<\/li>\n<li>delay(100);<\/li>\n<li>}<\/li>\n<\/ul>\n<p><strong>SPI on ESP32<\/strong><\/p>\n<p>Even if the ESP32 has 3 SPI buses, we can use only two because the internal flash memory uses one. The two available SPI buses are called VSPI and HSPI.<\/p>\n<p>Note<\/p>\n<p>Arduino libraries that use SPI use the VSPI bus by default.<\/p>\n<p>By default, the pin mapping is as follows:<\/p>\n<table width=\"55%\">\n<thead>\n<tr>\n<td>\n<p><strong>SPI<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>MOSI<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>MISO<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>SCK\/CLK<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>CS\/SS<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<p>VSPI<\/p>\n<\/td>\n<td>\n<p>GPIO 23<\/p>\n<\/td>\n<td>\n<p>GPIO 19<\/p>\n<\/td>\n<td>\n<p>GPIO 18<\/p>\n<\/td>\n<td>\n<p>GPIO 5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>HSPI<\/p>\n<\/td>\n<td>\n<p>GPIO 13<\/p>\n<\/td>\n<td>\n<p>GPIO 12<\/p>\n<\/td>\n<td>\n<p>GPIO 14<\/p>\n<\/td>\n<td>\n<p>GPIO 15<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>As for the I2C, it is possible to manually choose the pins you want to use for the SPI by specifying the pins during the initialization of the SPI bus.begin(CLK_PIN, MISO_PIN, MOSI_PIN, SS_PIN);<\/p>\n<p><strong>PWM on ESP32<\/strong><\/p>\n<p>The ESP32 has 16 channels that can be used to generate PWM signals: you can have up to 16 different PWM outputs. All the pins configured as output can be used to output a PWM signal. The use of PWM differs from Arduino\u2019s, and you can configure more parameters. I suggest you check <a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/how-to-use-pwm-on-esp32-with-examples#ebece786f48246e4998b27a6523154d1\">the usage of PWM on ESP32 with Arduino code<\/a> to use it in your projects.<\/p>\n<p><strong>Capacitive sensors on the ESP32<\/strong><\/p>\n<p>The ESP32 has ten capacitive sensors (9 if the GPIO0 pin is unavailable). They can be used as touch buttons. They are the famous <em>TOUCH<\/em> pins that can be found on some ESP32 pinouts. They can also be used to wake it up when the ESP32 is in DeepSleep mode (a power-saving mode). I invite you to read <a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/how-to-use-esp32-built-in-capacitive-touch-sensor-pins#dd18bf99df4aab9ff6206145d8759c\">the use of capacitive sensors on the ESP32 with the Arduino code<\/a> for more details.<\/p>\n<p>The internal capacitive sensors are connected to the following GPIO pins:<\/p>\n<table width=\"55%\">\n<thead>\n<tr>\n<td>\n<p><strong>TOUCH0<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>TOUCH1<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>TOUCH2<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>TOUCH3<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>TOUCH4<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<p>GPIO 4<\/p>\n<\/td>\n<td>\n<p>GPIO 0<\/p>\n<\/td>\n<td>\n<p>GPIO 2<\/p>\n<\/td>\n<td>\n<p>GPIO 15<\/p>\n<\/td>\n<td>\n<p>GPIO 13<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>TOUCH5<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>TOUCH6<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>TOUCH7<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>TOUCH8<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>TOUCH9<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>GPIO 12<\/p>\n<\/td>\n<td>\n<p>GPIO 14<\/p>\n<\/td>\n<td>\n<p>GPIO 27<\/p>\n<\/td>\n<td>\n<p>GPIO 33<\/p>\n<\/td>\n<td>\n<p>GPIO 32<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>ADC on ESP32<\/strong><\/p>\n<p>The ESP32 has two separate ADC: ADC1 with eight channels and ADC2 with ten channels for a total of 18 analog inputs. For example, on the GPIO34, you will find channel number 6 of the ADC1 (ADC1_CH6). But in practice, there are far fewer available because of Wi-Fi.<\/p>\n<p>Warning<\/p>\n<p>The ADC2 cannot be used when Wi-Fi is enabled: The ESP32 Wi-Fi driver uses it to work.<\/p>\n<table width=\"53%\">\n<thead>\n<tr>\n<td colspan=\"4\">\n<p>Mapping for ADC1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>ADC1_CH0<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC1_CH1<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC1_CH2<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC1_CH3<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<p>GPIO 36<\/p>\n<\/td>\n<td>\n<p>GPIO 37<\/p>\n<\/td>\n<td>\n<p>GPIO 38<\/p>\n<\/td>\n<td>\n<p>GPIO 39<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>ADC1_CH4<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC1_CH5<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC1_CH6<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC1_CH7<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>GPIO 32<\/p>\n<\/td>\n<td>\n<p>GPIO 33<\/p>\n<\/td>\n<td>\n<p>GPIO 34<\/p>\n<\/td>\n<td>\n<p>GPIO 35<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Note<\/p>\n<p>Generally, the GPIO37 and GPIO38 pins are not available if your board has a WROOM or WROVER module. These modules do not expose these pins. Only boards that use the ESP32 board directly (without a module) may expose them.<\/p>\n<table width=\"66%\">\n<thead>\n<tr>\n<td colspan=\"5\">\n<p>Mapping for ADC2 (rarely used)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>ADC2_CH0<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC2_CH1<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC2_CH2<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC2_CH3<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC2_CH4<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<p>GPIO 4<\/p>\n<\/td>\n<td>\n<p>GPIO 0<\/p>\n<\/td>\n<td>\n<p>GPIO 2<\/p>\n<\/td>\n<td>\n<p>GPIO 15<\/p>\n<\/td>\n<td>\n<p>GPIO 13<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><strong>ADC2_CH5<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC2_CH6<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC2_CH7<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC2_CH8<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>ADC2_CH9<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>GPIO 12<\/p>\n<\/td>\n<td>\n<p>GPIO 14<\/p>\n<\/td>\n<td>\n<p>GPIO 27<\/p>\n<\/td>\n<td>\n<p>GPIO 25<\/p>\n<\/td>\n<td>\n<p>GPIO 26<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In general, the ESP32 ADC is not very reliable despite its 12-bit resolution. I invite you <a href=\"https:\/\/www.upesy.com\/blogs\/tutorials\/measure-voltage-on-esp32-with-adc-with-arduino-code#ce375cca55443a8e7b5d517d45a47d\">to read the article on the use and limitations of the ESP32 ADC<\/a> for more information.<\/p>\n<p><strong>DAC on ESP32<\/strong><\/p>\n<p>The ESP32 has two 8-bit DAC outputs to convert a digital signal into an analog signal (generate a sine signal, for example). The pins used are the following:<\/p>\n<table width=\"20%\">\n<thead>\n<tr>\n<td>\n<p><strong>DAC1<\/strong><\/p>\n<\/td>\n<td>\n<p><strong>DAC2<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<p>GPIO 25<\/p>\n<\/td>\n<td>\n<p>GPIO 26<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u00a0<\/p>\n<p>\u00a0<\/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","protected":false},"excerpt":{"rendered":"<p>Use the GPIO pins of the ESP32 (Up&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":496,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-492","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4<\/title>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/3dok.biz\/wordpress\/?p=492\" \/>\r\n<meta property=\"og:locale\" content=\"zh_TW\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\" \/>\r\n<meta property=\"og:description\" content=\"Use the GPIO pins of the ESP32 (Up&#046;&#046;&#046;\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/3dok.biz\/wordpress\/?p=492\" \/>\r\n<meta property=\"og:site_name\" content=\"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\" \/>\r\n<meta property=\"article:published_time\" content=\"2024-03-30T13:59:13+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2024-03-30T14:02:31+00:00\" \/>\r\n<meta property=\"og:image\" content=\"http:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"498\" \/>\r\n\t<meta property=\"og:image:height\" content=\"316\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Richard\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Richard\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9810\u4f30\u95b1\u8b80\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 \u5206\u9418\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492#article\",\"isPartOf\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492\"},\"author\":{\"name\":\"Richard\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/5e54f3d9faf01d51effe528b60b81ab2\"},\"headline\":\"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716\",\"datePublished\":\"2024-03-30T13:59:13+00:00\",\"dateModified\":\"2024-03-30T14:02:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492\"},\"wordCount\":2102,\"publisher\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/#organization\"},\"image\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492#primaryimage\"},\"thumbnailUrl\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg\",\"articleSection\":[\"Arduino\"],\"inLanguage\":\"zh-TW\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492\",\"url\":\"https:\/\/3dok.biz\/wordpress\/?p=492\",\"name\":\"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\",\"isPartOf\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492#primaryimage\"},\"image\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492#primaryimage\"},\"thumbnailUrl\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg\",\"datePublished\":\"2024-03-30T13:59:13+00:00\",\"dateModified\":\"2024-03-30T14:02:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492#breadcrumb\"},\"inLanguage\":\"zh-TW\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/3dok.biz\/wordpress\/?p=492\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492#primaryimage\",\"url\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg\",\"contentUrl\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg\",\"width\":498,\"height\":316},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=492#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\/\/3dok.biz\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#website\",\"url\":\"https:\/\/3dok.biz\/wordpress\/\",\"name\":\"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\",\"description\":\"\u96fb\u8166\u79d1\u6280\u5275\u65b0 A.I. \u667a\u80fd\u79d1\u5b78 \u7269\u806f\u7db2\u901a\u8a0a\",\"publisher\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/3dok.biz\/wordpress\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-TW\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#organization\",\"name\":\"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\",\"url\":\"https:\/\/3dok.biz\/wordpress\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2020\/07\/python-logo-2.png\",\"contentUrl\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2020\/07\/python-logo-2.png\",\"width\":290,\"height\":82,\"caption\":\"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\"},\"image\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/5e54f3d9faf01d51effe528b60b81ab2\",\"name\":\"Richard\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8292d51406afbfc9b7d6f72c910b3babe6852736c013ade5ea75e7e8df0c55bc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8292d51406afbfc9b7d6f72c910b3babe6852736c013ade5ea75e7e8df0c55bc?s=96&d=mm&r=g\",\"caption\":\"Richard\"},\"sameAs\":[\"http:\/\/3dok.biz\/wordpress\"],\"url\":\"https:\/\/3dok.biz\/wordpress\/?author=1\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","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:\/\/3dok.biz\/wordpress\/?p=492","og_locale":"zh_TW","og_type":"article","og_title":"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","og_description":"Use the GPIO pins of the ESP32 (Up&#46;&#46;&#46;","og_url":"https:\/\/3dok.biz\/wordpress\/?p=492","og_site_name":"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","article_published_time":"2024-03-30T13:59:13+00:00","article_modified_time":"2024-03-30T14:02:31+00:00","og_image":[{"width":498,"height":316,"url":"http:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg","type":"image\/jpeg"}],"author":"Richard","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005:":"Richard","\u9810\u4f30\u95b1\u8b80\u6642\u9593":"13 \u5206\u9418"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/3dok.biz\/wordpress\/?p=492#article","isPartOf":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=492"},"author":{"name":"Richard","@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/5e54f3d9faf01d51effe528b60b81ab2"},"headline":"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716","datePublished":"2024-03-30T13:59:13+00:00","dateModified":"2024-03-30T14:02:31+00:00","mainEntityOfPage":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=492"},"wordCount":2102,"publisher":{"@id":"https:\/\/3dok.biz\/wordpress\/#organization"},"image":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=492#primaryimage"},"thumbnailUrl":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg","articleSection":["Arduino"],"inLanguage":"zh-TW"},{"@type":"WebPage","@id":"https:\/\/3dok.biz\/wordpress\/?p=492","url":"https:\/\/3dok.biz\/wordpress\/?p=492","name":"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","isPartOf":{"@id":"https:\/\/3dok.biz\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=492#primaryimage"},"image":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=492#primaryimage"},"thumbnailUrl":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg","datePublished":"2024-03-30T13:59:13+00:00","dateModified":"2024-03-30T14:02:31+00:00","breadcrumb":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=492#breadcrumb"},"inLanguage":"zh-TW","potentialAction":[{"@type":"ReadAction","target":["https:\/\/3dok.biz\/wordpress\/?p=492"]}]},{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/3dok.biz\/wordpress\/?p=492#primaryimage","url":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg","contentUrl":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/ESP32-WROOM-32_30pin.jpg","width":498,"height":316},{"@type":"BreadcrumbList","@id":"https:\/\/3dok.biz\/wordpress\/?p=492#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/3dok.biz\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Arduino: \u5404\u6b3e ESP32 DevKit \u63a5\u8173\u5716"}]},{"@type":"WebSite","@id":"https:\/\/3dok.biz\/wordpress\/#website","url":"https:\/\/3dok.biz\/wordpress\/","name":"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","description":"\u96fb\u8166\u79d1\u6280\u5275\u65b0 A.I. \u667a\u80fd\u79d1\u5b78 \u7269\u806f\u7db2\u901a\u8a0a","publisher":{"@id":"https:\/\/3dok.biz\/wordpress\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/3dok.biz\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-TW"},{"@type":"Organization","@id":"https:\/\/3dok.biz\/wordpress\/#organization","name":"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","url":"https:\/\/3dok.biz\/wordpress\/","logo":{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/logo\/image\/","url":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2020\/07\/python-logo-2.png","contentUrl":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2020\/07\/python-logo-2.png","width":290,"height":82,"caption":"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4"},"image":{"@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/5e54f3d9faf01d51effe528b60b81ab2","name":"Richard","image":{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8292d51406afbfc9b7d6f72c910b3babe6852736c013ade5ea75e7e8df0c55bc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8292d51406afbfc9b7d6f72c910b3babe6852736c013ade5ea75e7e8df0c55bc?s=96&d=mm&r=g","caption":"Richard"},"sameAs":["http:\/\/3dok.biz\/wordpress"],"url":"https:\/\/3dok.biz\/wordpress\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=492"}],"version-history":[{"count":4,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/492\/revisions"}],"predecessor-version":[{"id":499,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/492\/revisions\/499"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/496"}],"wp:attachment":[{"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}