Getting Started with the ESP32 Development Board: เริ่มต้นใช้งานบอร์ด ESP32 สำหรับมือใหม่

UTEN BOONLIAM Avatar
Getting Started with the ESP32 Development Board: เริ่มต้นใช้งานบอร์ด ESP32 สำหรับมือใหม่
📝
บทความนี้สรุปและเรียบเรียงเป็นภาษาไทยจากบทความ Getting Started with the ESP32 Development Board ของ Random Nerd Tutorials โดยทีม Tenergy Innovation ภาพประกอบบางส่วนวาดโดยทีม Tenergy Innovation ส่วนภาพถ่ายและภาพหน้าจอมาจากบทความต้นฉบับ (เครดิตภาพ: Random Nerd Tutorials) ดูแหล่งที่มาและลิงก์ต้นฉบับได้ท้ายบทความ
ภาพหัวบทความ ESP32 Getting Started Guide for Beginners
ภาพหัวบทความ ESP32 Getting Started Guide for Beginners (ภาพจาก Random Nerd Tutorials)

1. ภาพรวมบทความ

บทความนี้เป็นคู่มือเริ่มต้นสำหรับผู้ที่ยังไม่เคยใช้ ESP32 ครอบคลุมตั้งแต่ ESP32 คืออะไร สเปก การเปรียบเทียบกับ ESP8266 วิธีเลือกบอร์ด การทำความรู้จักบอร์ด ESP32 DEVKIT DOIT พินเอาต์ ไปจนถึงขั้นตอนติดตั้ง Arduino IDE และอัปโหลดโปรแกรมแรกขึ้นบอร์ด

2. ESP32 คืออะไร

ESP32 คือตระกูลไมโครคอนโทรลเลอร์แบบ System on a Chip (SoC) ราคาประหยัดและกินไฟต่ำ พัฒนาโดย Espressif มี Wi-Fi และ Bluetooth ในตัว และส่วนใหญ่เป็นแบบ dual-core ถือเป็นรุ่นต่อยอดจาก ESP8266

โลโก้ Espressif ผู้พัฒนา ESP32
โลโก้ Espressif ผู้พัฒนา ESP32 (ภาพจาก Random Nerd Tutorials)
โมดูล ESP32 รุ่น ESP-WROOM-32
โมดูล ESP32 รุ่น ESP-WROOM-32 (ภาพจาก Random Nerd Tutorials)
ESP32CPU 2 คอร์Xtensa LX6 · 160/240 MHzWi-FiStation / Access PointBluetoothClassic + BLEหน่วยความจำSRAM 520 KB · ROM 448 KBADC · DAC · PWMCapacitive TouchI2C · SPI · UARTI2S · RMII
ภาพที่ 1 ภาพรวมความสามารถหลักของ ESP32 (ภาพวาดโดยทีม Tenergy Innovation)

จุดเด่นที่ทำให้นิยม

  • Low-cost: เริ่มต้นประมาณ 6 ดอลลาร์สหรัฐ
  • Low-power: กินไฟน้อย รองรับโหมดประหยัดพลังงาน เช่น deep sleep
  • Wi-Fi: เชื่อมต่อเครือข่ายแบบ station mode หรือสร้างเครือข่ายเองแบบ access point mode เหมาะกับงาน IoT และ Home Automation
  • Bluetooth: รองรับทั้ง Bluetooth Classic และ Bluetooth Low Energy (BLE)
  • Dual-core: ส่วนใหญ่มีไมโครโปรเซสเซอร์ Xtensa 32-bit LX6 สองตัว (core 0 และ core 1)
  • Peripheral หลากหลาย: มี capacitive touch, ADC, DAC, UART, SPI, I2C, PWM และอื่นๆ
  • รองรับภาษาที่คุ้นเคย: เขียนโปรแกรมแบบ Arduino (C/C++) ได้ และรองรับ MicroPython

อยากรู้จักตระกูล ESP32 ในภาพกว้างขึ้น อ่านต่อที่ ทำความรู้จัก ESP32: ไมโครคอนโทรลเลอร์ยอดนิยมสำหรับ IoT

3. สเปกของ ESP32

หัวข้อรายละเอียด
โมดูลESP-WROOM-32
Wi-Fiความเร็วข้อมูล 150 Mbps (HT40)
BluetoothBLE และ Bluetooth Classic
ประมวลผลTensilica Xtensa Dual-Core 32-bit LX6 ที่ 160 หรือ 240 MHz
ROM / SRAMROM 448 KB สำหรับบูตและฟังก์ชันหลัก, SRAM 520 KB
RTC SRAMRTC fast 8 KB และ RTC slow 8 KB (ใช้ช่วง deep sleep)
eFuse1 Kbit (256 บิตใช้โดยระบบ เช่น MAC address, อีก 768 บิตสำหรับผู้ใช้ เช่น Flash Encryption และ Chip-ID)
Embedded flash0 MiB (D0WDQ6, D0WD, S0WD), 2 MiB (D2WD), 4 MiB (PICO-D4)
Low powerใช้ ADC ได้แม้ใน deep sleep
PeripheralCapacitive touch, ADC, DAC, I2C, UART, SPI, I2S, RMII, PWM (มี DMA)
Securityตัวเร่งฮาร์ดแวร์ AES และ SSL/TLS

4. ESP32 เทียบกับ ESP8266

ESP32 เพิ่ม CPU อีกหนึ่งคอร์ Wi-Fi เร็วกว่า GPIO มากกว่า รองรับ Bluetooth 4.2 และ BLE มีขาสัมผัส (touch) ที่ปลุกจาก deep sleep ได้ และมี hall effect sensor ในตัว

เปรียบเทียบบอร์ดพัฒนา ESP32 และ ESP8266
เปรียบเทียบบอร์ดพัฒนา ESP32 และ ESP8266 (ภาพจาก Random Nerd Tutorials)
ประเด็นESP32ESP8266
ความเร็วเร็วกว่าช้ากว่า
จำนวนคอร์Dual-core (ส่วนใหญ่)Single-core
Bluetoothมีไม่มี
ช่องอนาล็อก18 ช่อง1 ช่อง (10-bit)
GPIOมากกว่า หลายฟังก์ชันน้อยกว่า
ราคาโดยประมาณราว 6–12 ดอลลาร์ราว 4–6 ดอลลาร์

หมายเหตุ: ราคาขึ้นกับแหล่งซื้อและรุ่น ต้นฉบับมีบทความแยกเรื่อง ESP32 vs ESP8266 – Pros and Cons สำหรับผู้ที่ต้องการเปรียบเทียบเชิงลึก

5. บอร์ดพัฒนา ESP32 (Development Boards)

คำว่า ESP32 อาจหมายถึงตัวชิปเปล่า หรือบอร์ดพัฒนา การใช้ชิปเปล่าไม่สะดวกสำหรับการเรียนรู้และทำต้นแบบ บอร์ดพัฒนาจึงมีวงจรจ่ายไฟ วงจรโปรแกรมชิป ขาต่อภายนอก LED เสาอากาศ และบางรุ่นมีเซนเซอร์ จอแสดงผล หรือกล้อง (เช่น ESP32-CAM) มาให้

ตัวอย่างบอร์ดพัฒนา ESP32 หลายรุ่น
ตัวอย่างบอร์ดพัฒนา ESP32 หลายรุ่น (ภาพจาก Random Nerd Tutorials)

วิธีเลือกบอร์ด

  • USB-to-UART และวงจร regulator: ช่วยต่อกับคอมพิวเตอร์เพื่ออัปโหลดโค้ดและจ่ายไฟ
  • ปุ่ม BOOT และ RESET/EN: ใช้เข้าโหมดแฟลชและรีสตาร์ท บางรุ่นไม่มีปุ่ม BOOT เพราะเข้าโหมดแฟลชอัตโนมัติ
  • จำนวนและการจัดวางขา: ต้องมีผัง pinout ของบอร์ดที่ซื้อ ไม่เช่นนั้นอาจใช้งานผิดขา
  • ขั้วต่อเสาอากาศ: บางรุ่นมีขั้วต่อเสาอากาศภายนอกเพื่อเพิ่มระยะ Wi-Fi
  • ขั้วต่อแบตเตอรี่: บางรุ่นมีขั้วต่อ LiPo สะดวกเมื่อใช้แบตเตอรี่
  • ฮาร์ดแวร์เสริม: เช่น OLED, LoRa, SIM800 (GSM/GPRS), ที่ใส่แบต, กล้อง

บอร์ดที่แนะนำสำหรับผู้เริ่มต้น

แนะนำบอร์ดที่มี GPIO ให้ใช้มาก ไม่มีฮาร์ดแวร์เสริม มี voltage regulator และใช้ USB จ่ายไฟ/อัปโหลดโค้ดได้ ผู้เขียนต้นฉบับใช้ ESP32 DEVKIT DOIT เป็นหลัก (มีเวอร์ชัน 30, 36 และ 38 ขา ทำงานคล้ายกัน) บอร์ดอื่นที่ใกล้เคียง เช่น Adafruit ESP32 Feather, Sparkfun ESP32 Thing, NodeMCU-32S และ Wemos LoLin32

6. ESP32 DEVKIT DOIT V1

ด้านหน้าและด้านหลังของบอร์ด ESP32 DEVKIT DOIT V1
ด้านหน้าและด้านหลังของบอร์ด ESP32 DEVKIT DOIT V1 (ภาพจาก Random Nerd Tutorials)
คุณสมบัติรายละเอียด
จำนวนคอร์2 (dual core)
Wi-Fi2.4 GHz สูงสุด 150 Mbps
BluetoothBLE และ Bluetooth แบบเดิม
สถาปัตยกรรม / ความเร็ว32 บิต สูงสุด 240 MHz
RAM512 KB
จำนวนขา30, 36 หรือ 38 ขา ตามรุ่น
PeripheralTouch, ADC, DAC, I2C, UART, CAN 2.0, SPI, I2S, RMII, PWM ฯลฯ
ปุ่มRESET และ BOOT
LEDLED สีน้ำเงินต่อกับ GPIO2, LED สีแดงแสดงสถานะจ่ายไฟ
USB to UARTCP2102
ESP-WROOM-32microUSBEN (RESET)LED แดง: ไฟเลี้ยงเสาอากาศ PCBCP2102 (USB-UART)BOOTLED น้ำเงิน: GPIO2โมดูล ESP32
ภาพที่ 2 ส่วนประกอบหลักของบอร์ด ESP32 DevKit (ภาพประกอบเชิงแนวคิด ตำแหน่งจริงต่างกันตามรุ่น)
บอร์ด ESP32 DEVKIT DOIT V1 พร้อมป้ายกำกับส่วนประกอบ
บอร์ด ESP32 DEVKIT DOIT V1 พร้อมป้ายกำกับส่วนประกอบ (ภาพจาก Random Nerd Tutorials)
  • บอร์ดรุ่นตัวอย่างมี 36 ขา (ข้างละ 18) จำนวน GPIO ที่ใช้ได้ขึ้นกับรุ่น
  • ใช้ microUSB เชื่อมต่อคอมพิวเตอร์ ผ่านชิป CP2102 ซึ่งเป็น COM port แบบ serial อีกชิปที่พบบ่อยคือ CH340 จึงต้องตรวจว่าบอร์ดใช้ชิปใดเพื่อติดตั้งไดรเวอร์
  • ปุ่ม RESET (อาจเขียนว่า EN) ใช้รีสตาร์ท ปุ่ม BOOT ใช้เข้าโหมดแฟลช
  • LED สีน้ำเงินใน GPIO2 ใช้ดีบักเป็นเอาต์พุตที่มองเห็นได้

7. คู่มือ Pinout และ GPIO

ชิป ESP32 มี 48 ขา หลายฟังก์ชัน แต่ไม่ได้เปิดออกมาทุกขาในทุกบอร์ด และบางขาไม่ควรใช้ บอร์ด DEVKIT V1 DOIT เปิด GPIO ให้ใช้ประมาณ 36 ขา

ผัง Pinout ของ ESP32 DOIT DEVKIT V1 (36 GPIO)
ผัง Pinout ของ ESP32 DOIT DEVKIT V1 (36 GPIO) (ภาพจาก Random Nerd Tutorials)
  • ขาไฟเลี้ยง: โดยทั่วไปมี 3V3, GND และ VIN ใช้จ่ายไฟให้บอร์ด (ถ้าไม่ใช้ USB) หรือจ่ายไฟให้อุปกรณ์ภายนอก (เมื่อจ่ายไฟทาง USB)
  • GPIO: อ้างอิงด้วยหมายเลข GPIO
  • การกำหนดฟังก์ชันขา: เลือกได้ในโค้ดว่าขาไหนเป็น UART, I2C หรือ SPI (multiplexing) ถ้าไม่กำหนดจะใช้ค่าเริ่มต้นตามผัง
  • ความสม่ำเสมอ: ตำแหน่งขาต่างกันตามบอร์ด แต่ GPIO หมายเลขเดิมมักทำงานเหมือนกัน เช่น GPIO5 คือ VSPI CS0 และ GPIO23 คือ VSPI MOSI
⚠️
ข้อควรระวังเพิ่มเติมจากทีมงาน: ขา GPIO ของ ESP32 ทำงานที่ 3.3 V ไม่ทนแรงดัน 5 V และบางขามีข้อจำกัด เช่น GPIO34–39 เป็น Input อย่างเดียว, GPIO6–11 ต่อกับ Flash ของโมดูล, ADC2 ใช้ร่วมกับ Wi-Fi ไม่ได้ขณะ Wi-Fi ทำงาน ตรวจสอบผัง pinout ของบอร์ดรุ่นที่ใช้งานจริงทุกครั้งก่อนต่อวงจร

ต้นฉบับมีบทความ ESP32 Pinout Reference – Which GPIO pins should you use? สำหรับผู้ที่ต้องการรายละเอียดของแต่ละขา

8. วิธีเขียนโปรแกรม ESP32

เขียนได้หลายแบบ ได้แก่ Arduino C/C++ (Arduino core for ESP32), Espressif IDF, MicroPython, JavaScript และ LUA ผู้เขียนต้นฉบับเลือก Arduino C/C++ เป็นหลัก และมีบทความ MicroPython แยกต่างหาก ผู้เริ่มต้นควรใช้ Arduino IDE ก่อน เมื่อโปรเจกต์ซับซ้อนขึ้นค่อยพิจารณา VS Code ร่วมกับ PlatformIO

9. ขั้นตอนใช้งาน Arduino IDE กับ ESP32

1ติดตั้งArduino IDE2เพิ่มบอร์ดESP32 Package3เลือกบอร์ดและ Port4เปิดตัวอย่างWiFiScan5Uploadดู Serial Monitor
ภาพที่ 3 ลำดับขั้นตอนตั้งแต่ติดตั้งโปรแกรมจนถึงอัปโหลดโค้ดตัวอย่าง

9.1 ติดตั้ง Arduino IDE

  • ดาวน์โหลดจาก arduino.cc ตามระบบปฏิบัติการ: Windows รันตัวติดตั้ง, Mac OS X คัดลอกไฟล์ไปที่โฟลเดอร์ Applications, Linux แตกไฟล์แล้วเปิด arduino-ide
  • Arduino IDE 2 ไม่จำเป็นต้องติดตั้ง Java เพิ่มเติม
หน้าดาวน์โหลด Arduino IDE 2
หน้าดาวน์โหลด Arduino IDE 2 (ภาพจาก Random Nerd Tutorials)

9.2 ติดตั้งบอร์ด ESP32 ใน Arduino IDE

  1. ไปที่ File > Preferences (macOS: Arduino IDE > Settings)
  2. วาง URL ต่อไปนี้ในช่อง Additional Boards Manager URLs: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json (ถ้ามี URL ของ ESP8266 อยู่แล้วให้คั่นด้วยเครื่องหมายจุลภาค)
  3. เปิด Boards Manager ผ่าน Tools > Board > Boards Manager หรือไอคอนด้านซ้าย
  4. ค้นหา ESP32 แล้วติดตั้ง esp32 by Espressif Systems เวอร์ชัน 3.X
  5. รีสตาร์ท Arduino IDE แล้วตรวจที่ Tools > Board ว่ามีบอร์ด ESP32 ให้เลือก
เมนู File > Preferences
เมนู File > Preferences (ภาพจาก Random Nerd Tutorials)
ช่อง Additional boards manager URLs ในหน้า Preferences
ช่อง Additional boards manager URLs ในหน้า Preferences (ภาพจาก Random Nerd Tutorials)

9.3 ทดสอบและอัปโหลดโค้ดตัวอย่าง

ต่อบอร์ดกับคอมพิวเตอร์ด้วยสาย USB ที่มีสายข้อมูล (data) เพราะสายบางเส้นจากที่ชาร์จหรือพาวเวอร์แบงก์ส่งไฟอย่างเดียว ถ้าเป็น DOIT DEVKIT LED สีแดงจะติดเมื่อมีไฟ จากนั้นทำตามขั้นตอน:

  1. เลือกบอร์ดและ COM port ที่ Tools > Board หรือเมนู Select other board and port… (ตัวอย่างใช้ DOIT ESP32 DEVKIT V1)
  2. เปิดตัวอย่าง File > Examples > WiFi (ESP32) > WiFiScan (สแกนหาเครือข่าย Wi-Fi ใกล้เคียง)
  3. กดปุ่ม Upload รอคอมไพล์และอัปโหลด
  4. ถ้าขึ้นจุดไข่ปลาจำนวนมากแล้วอัปโหลดล้มเหลว แสดงว่าบอร์ดไม่เข้าโหมดแฟลชอัตโนมัติ ให้กด Upload ใหม่ แล้วเมื่อเห็นจุดปรากฏให้กดปุ่ม BOOT บนบอร์ดค้างไว้สักครู่
  5. เมื่อสำเร็จจะมีข้อความแจ้งผลการอัปโหลดใน Output
  6. เปิด Serial Monitor ที่ baud rate 115200
  7. กดปุ่ม Enable/RESET บนบอร์ด จะเห็นรายชื่อเครือข่าย Wi-Fi ใกล้เคียง

ภาพประกอบด้านล่างแสดงหน้าจอในแต่ละขั้นตอน ตั้งแต่การเลือกบอร์ด เปิดตัวอย่าง WiFiScan อัปโหลด จนถึงดูผลใน Serial Monitor

เมนู Select other board and port…
เมนู Select other board and port… (ภาพจาก Random Nerd Tutorials)
เลือกบอร์ด DOIT ESP32 DEVKIT V1 และพอร์ต COM
เลือกบอร์ด DOIT ESP32 DEVKIT V1 และพอร์ต COM (ภาพจาก Random Nerd Tutorials)
สเก็ตช์ตัวอย่าง WiFiScan ใน Arduino IDE 2
สเก็ตช์ตัวอย่าง WiFiScan ใน Arduino IDE 2 (ภาพจาก Random Nerd Tutorials)
ข้อความแจ้งผลอัปโหลดสำเร็จในหน้าต่าง Output
ข้อความแจ้งผลอัปโหลดสำเร็จในหน้าต่าง Output (ภาพจาก Random Nerd Tutorials)
Serial Monitor (115200 baud) แสดงรายชื่อเครือข่าย Wi-Fi ที่สแกนได้
Serial Monitor (115200 baud) แสดงรายชื่อเครือข่าย Wi-Fi ที่สแกนได้ (ภาพจาก Random Nerd Tutorials)

9.4 ติดตั้งไดรเวอร์ USB

ถ้าไม่เห็น COM port ใน Arduino IDE มักต้องติดตั้งไดรเวอร์ USB-to-UART ซึ่งบอร์ดส่วนใหญ่ใช้ชิป CP210x หรือ CH340 ต้นฉบับมีลิงก์ไปยังบทเรียนติดตั้งไดรเวอร์ CP210x และคู่มือ ESP32 Troubleshooting Guide สำหรับปัญหาอัปโหลดโค้ด

เมื่อติดตั้งไดรเวอร์เสร็จแล้ว ให้ถอดและเสียบสาย USB ใหม่ จากนั้นตรวจที่เมนู Tools > Port ว่าพบ COM port ของบอร์ดหรือไม่ ถ้ายังไม่พบ ให้ลองเปลี่ยนสาย USB เป็นแบบที่มีสายข้อมูล หรือลองเปลี่ยนพอร์ต USB ของคอมพิวเตอร์

9.5 ตัวอย่างโค้ดและการอัปเดต core

หลังเลือกบอร์ด ESP32 แล้ว เข้า File > Examples จะพบตัวอย่างในหมวด ESP32 หลายรายการ ควรอัปเดต ESP32 core เป็นระยะ โดย Arduino IDE 2 จะแจ้งเตือนเป็น pop-up เมื่อมีเวอร์ชันใหม่

10. สรุปและแหล่งเรียนรู้ต่อ

ผู้อ่านจะได้เรียนรู้ว่า ESP32 คืออะไร วิธีเลือกบอร์ดพัฒนา และวิธีอัปโหลดโค้ดด้วย Arduino IDE ต้นฉบับแนะนำให้ศึกษาต่อ ได้แก่ ESP32 Digital Inputs and Digital Outputs (Arduino IDE), ESP32 Web Server Tutorial, ESP32 Pinout Reference ตลอดจน eBook “Learn ESP32 with Arduino IDE” ของเว็บไซต์ต้นฉบับ

สำหรับพื้นฐานการเขียนโค้ด อ่านต่อที่ เริ่มต้นเขียนโค้ด Arduino สำหรับมือใหม่

11. ข้อสังเกตเชิงปฏิบัติ

  • เลือกบอร์ดที่มี pinout ชัดเจนและตรวจชิป USB (CP2102 หรือ CH340) ก่อนซื้อ เพื่อเตรียมไดรเวอร์
  • สาย USB ต้องเป็นแบบมีสายข้อมูล เป็นสาเหตุอัปโหลดไม่ได้ที่พบบ่อย
  • หากอัปโหลดไม่ผ่าน ให้ใช้ปุ่ม BOOT ช่วย
  • บทความต้นฉบับเขียนตามเวอร์ชัน Arduino IDE 2 และ ESP32 core 3.X ขั้นตอนอาจเปลี่ยนตามเวอร์ชันในอนาคต
🔧
ต้องการบอร์ดสำหรับงานจริงในอุตสาหกรรมหรือเกษตร ดูบอร์ด IoT ตระกูล TINY32/ESP32 ของเราได้ที่หน้า Products หรือ ปรึกษาทีมวิศวกร

แหล่งที่มาและเครดิต

เนื้อหาในบทความนี้สรุปและเรียบเรียงเป็นภาษาไทยจากบทความของ Random Nerd Tutorials ขอขอบคุณผู้จัดทำต้นฉบับที่เผยแพร่ความรู้ให้ชุมชนผู้ใช้ ESP32 ผู้ที่ต้องการรายละเอียดครบถ้วน ภาพประกอบต้นฉบับ และตัวอย่างโค้ดล่าสุด โปรดอ่านฉบับภาษาอังกฤษที่เว็บไซต์ต้นทาง

Leave a Reply

Your email address will not be published. Required fields are marked *