MCU – ESP32 เป็น Micro Controller ที่รองรับการเชื่อมต่อ WiFi , Bluetooth – BLE ในตัว ภาษาที่ใช้ในการพัฒนาโปรแกรมคือ ภาษา C หรือ Python ภาษา Python ต้องทำการอัพเกรดเฟิร์มแวร์ให้รองรับ Python การพัฒนาโปรแกรมขึ้นอยู่กับผู้ที่พัฒนา โปรแกรม IDE ที่ใช้พัฒนาคือ Arduino IDE หรือ Visual Studio สำหรับ Visual Studio จำเป็นต้องติดตั้ง Plugin Espressif IDF หรือ PlatformIO IDE และต้อง Enable (Arduino)
ESP32 รองรับการเชื่อมต่อ WiFi และ BLE
หรือ Bluetooth ได้โดยไม่ต้องซื้อโมดูลเพิ่มเติม บอร์ด ESP32 เองยังมีการทำงานที่แบ่งเป็น 2 Core และ Pin I/O เลือกฟั่งชั่นการทำงานได้ใน Pin เดียวกัน เช่น การแปลง Analog to Digital หรือ Digital to Analog การเชื่อมต่อ SD
Card Camera PWD RTC และ Touch
เป็นต้น
การพัฒนาโปรแกรม ESP32 ประกอบด้วย
อุปกรณ์ที่ใช้ประกอบไปด้วย
- MCU ESP32
- Micro USB And USB
- Computer ที่มีระบบปฏิบัติการ Windows, Linux, Mac, or etc.
การทำงานของโปรแกรม
- Toolchain หรือเครื่องมือที่ใช้พัฒนา เช่น การเขียนโปรแกรมภาษา C ที่สร้างมาเป็นโปรเจค
- Build tools เป็นเครื่องมีอที่แปลงให้เป็นภาษากลางที่เหมาะสำหรับบอร์ด MCU ESP32
- ESP-IDF เป็นเครื่องมือพื้นฐานที่แปลงโปรเจค Toolchain ให้เป็นภาษาของเครื่อง
ทั้งหมดนี้จะรวมอยู่ในโปรแกรมที่ชื่อว่า integrated development environments (IDE) รายละเอียดของโปรแกรมจะอยู่ในเอกสาร Eclipse Plugin (installation link) – VS Code Extension (setup) – Arduino IDE + Plugin ESP32
บอร์ด ESP32 ที่มีการผลิตและใช้งานในปัจจุบัน
ในแต่ละรุ่นสามารถคลิ๊กดูรายละเอียดของแต่ละรุ่นได้ ดังนี้
- ESP32-DevKitC
- ESP-WROVER-KIT
- ESP32-PICO-KIT
- ESP32-Ethernet-Kit
- ESP32-DevKit-S(-R)
- ESP32-PICO-KIT-1
- ESP32-PICO-DevKitM-2
- ESP32-DevKitM-1
ตัวอย่าง Board ESP32 Develop kit ที่นิยมใช้งาน
ESP WROOM-32 Chip: เป็นบอร์ดรุ่นแรก สำหรับชาวเมกเกอร์ที่มีราคาไม่สูงมากและมี WiF 802.11b/g/n Wi-Fi ,BT 4.0,BLE. แล้วยังมี CPU 2 Core อยู่ในบอร์ดเดียวกัน มีความเร็วสูงสุด 240Mhz , 520KB of SRAM. สามารใช้งานร่วมกับ Arduino , MicroPython และอื่นๆ ได้
- บอร์ดesp32 มีขาทั้งหมด 30 pin และ 36 pin ไว้ใช้งานเชื่อต่อกับอุปกรณ์ภายนอก
Boot Button: เป็นปุ่มที่ทำไว้สำหรับโหลดโปรแกรมลงบนตัวชิป วิธีใช้งานจะต้องทำการกดปุ่มค้างไว้จนกว่าจะทำการโหลดเสร็จ
Micro USB: สำหรับใช้เป็นการเชื่อมต่อกับแหล่งจ่ายไฟ USB และทำการโหลดโปรแกรมลงในชิป
RESET Button : เป็นปุ่มสำหรับทำการ Reset หรือเริ่มต้นทำงานใหม่ตั้งแต่ต้น
Touch Sensor: ใชเป็นการสัมผัสแบบ Capacitive เมือมีการจับที่ pin นี้จะเป็นการรับค่าสัญญาณ 0/1 วิธีการคือ ต้องเป็นการสัมผัสกับผิวหนัง หรือนิ้วมือของมนุษย์ และเมือสัมผัสแล้วจะทำให้เกิดสัญญาณทางไฟฟ้าทำให้บอร์ดรับรู้การทำงานนี้ได้ มีทั้งหมด 10 ขา เท่านั้นที่เป็นขาสัมผัส
- Touch0 (GPIO4)
- Touch1 (GPIO0)
- Touch2 (GPIO2)
- Touch3 (GPIO15)
- Touch4 (GPIO13)
- Touch5 (GPIO12)
- Touch6 (GPIO14)
- Touch7 (GPIO27)
- Touch8 (GPIO33)
- Touch9 (GPIO32)
Hall Effect Sensor: เป็นขาที่ทำการตรวจจับสนามแม่เหล็ก เช่นการใช้ตรวจจับอุปกรณ์ที่เป็นแม่เหล็กหรือส่วนที่เป็นความแรงของสนามแม่เหล็ก รับค่าเป็น 0/1 หรือเป็น Input
ESP32 Dev board PINOUT:
บอร์ด ESP32 มีขาที่เป็น Output 25 ขา จาก 38 ขา
Power Pins: รับพลังงานได้สูงสุดไม่เกิน 5V ในแตละขา และ 3.3v สำรับจ่ายให้กับขาที่เชื่อมต่อกับบอร์ด ESP32
GND: เป็นกราดที่ใช้อยู่ในวงจรเพื่อทำให้บอร์ดทำงาน ครบวงจรเท่านั้น
ADC (Analog to digital) Channels:
เป็นการแปลงกระแสไฟฟ้า Analog ให้เป็น Digital มีทั้งหมด 18 ขา และ มีความละเอียดอยู่ที่ 12 bit หรือ 4096 ดิจิก ขาที่เป็ร ADC1_CH0 (GPIO32) จะต้องทำการเปิดการใช้งานก่อนถึงจะทำงานได้
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
DAC (Digital to Analog) Channels:
เป็นการแปลกระแสไฟฟ้าที่เป็น Digital ให้เป็น Analog มีทั้งหมด 2 ขา และมีความละเอียดอยู่ที่ 8 bit
- DAC_1 (GPIO25)
- DAC_2 (GPIO26)
UART (Universal Asynchronous Receiver-Transmitter) Pins:
เป็นขาที่ใช้เชื่อมต่อกับอุปกรณ์ที่ รับ-ส่ง สัญญาณมาแบบ Asynchronous แบบเป็นมาตรฐานกลางเอาไว้เชื่อมต่อกับอุปกรณ์อะไรก็ได้ที่ใช้งานมาตรฐาน UART นี้ ในบอร์ดนี้จะมีอยู่ 3 ชุด ดังนี้ UART0, UART1 และ UART2
UART0 Pins:
- U0 TXD (GPIO1)
- U0 RXD (GPIO3)
- U0 CTS (GPIO19)
- U0 RTS (GPIO22)
UART1 Pins:
- U1 TXD (GPIO10)
- U1 RXD (GPIO9)
- U1 CTS (GPIO6)
- U1 RTS (GPIO11)
UART2 Pins:
- U2 TXD (GPIO17)
- U2 RXD (GPIO16)
- U2 CTS (GPIO8)
- U2 RTS (GPIO7)
SPI Pins:
เป็นการเชื่อมต่อกับอุปกรณ์ที่รองรับมาตรฐาน SPI ,HSPI และ VSPI ส่วนมากที่ใช้จะเป็น Micro SD Card หรือ Memory ต่างๆ
SPI Pins on board:
- SPI_D (GPIO8)
- SPI_WP (GPIO10)
- SPI_HD (GPIO9)
- SPI_Q (GPIO7)
- SPI_CLK (GPIO6)
- SPI_CS0 (GPIO11)
HSPI Pins:
- V_SPI_ID (GPIO23)
- V_SPI_WP (GPIO22)
- V_SPI_HD (GPIO21)
- V_SPI_Q (GPIO19)
- V_SPI_CLK (GPIO18)
- V_SPI_CS0 (GPIO5)
VSPI Pins:
- HSPI_ID (GPIO13)
- HSPI_WP (GPIO2)
- HSPI_HD (GPIO4)
- HSPI_Q (GPIO12)
- HSPI_CLK (GPIO14)
- HSPI_CS0 (GPIO15)
PWM Pins:
เป็นขาที่ใช้ควบคุมการทำงานของ Motors และ LED ที่เป็นการควบคุมแบบใช้คลื่นนาฬิกา หรือ 0/1 ในการควบคุม จะมีอยู่ทั้งหมด 25 ขา หรือทุกขาที่อยู่บนบอร์ด ESP32 สามารถทำได้
EN or Enable Pin:
EN เป็นปุ่ม Enable ขานี้จะมีกระแสไฟอยู่ที่ 3.3v เมือมีการกดปุ่มจะเป็นเหมือนปุ่ม Reset micro controller
Specifications of ESP32 Board:
- Xtensa dual-core (or single-core) 32-bit LX6 microprocessor, running at 160 or 240 MHz
- Memory: 520 KB SRAM
- Wi-Fi: 802.11 b/g/n
- Bluetooth: v4.2 BR/EDR and BLE
- 12-bit × 18 ADC channels
- 2 × 8-bit DACs
- 10 × touch sensors (capacitive sensing GPIOs)
- 4 × SPI
- 2 × I²S interfaces
- 2 × I²C interfaces
- 3 × UART
- SD/SDIO/CE-ATA/MMC/eMMC host controller
- SDIO/SPI slave controller
- CAN bus 2.0
- Infrared remote controller (TX/RX, up to 8 channels)
- Motor PWM
- LED PWM (up to 16 channels)
- Hall effect sensor
- Ultra-low-power analog pre-amplifier
- All security feature of IEEE 802.11 standard, like WFA, WPA/WPA2, and WAPI, secure boot, Flash encryption
- Cryptographic hardware acceleration method like AES, SHA-2, RSA, elliptic curve cryptography (ECC), random number generator (RNG)
ข้อมูลจาก
https://randomnerdtutorials.com/esp32-pinout-reference-gpios/
https://www.etechnophiles.com/esp32-dev-board-pinout-specifications-datasheet-and-schematic/
https://dl.espressif.com/dl/schematics/esp32_devkitc_v4-sch.pdf