บทความ › เครื่องมือและความปลอดภัย

จำลองวงจร ESP32 ใน เบราว์เซอร์ ด้วย Wokwi ก่อนต่อสายจริง

ลองโค้ดและวงจร ESP32 ใน Wokwi ก่อนหยิบสายจัมเปอร์ ชิปไหนจำลองได้แค่ไหน ต่อ Wi-Fi ยังไง ใช้ logic analyzer ดูสัญญาณ และรันใน VS Code ได้

เริ่มต้น อ่าน 6 นาที 23 ตุลาคม 2569 ของใหม่ที่ช่างควรลอง 2026 · บทที่ 18/20

อ่านจบแล้วจะรู้
  • Wokwi จำลอง ESP32, S2, S3, C3, C6, H2 และรุ่นอื่น ๆ ได้ในเบราว์เซอร์ แต่ Bluetooth ยังจำลองไม่ได้ทุกชิป
  • Wi-Fi จำลองใช้ SSID Wokwi-GUEST ไม่มีรหัส ผ่าน gateway สาธารณะที่ถูกมอนิเตอร์ ห้ามส่งข้อมูลส่วนตัว
  • CPU จำลองถูกจำกัดราว 8 MHz โค้ดคำนวณหนักจะช้ากว่าบอร์ดจริง แต่จังหวะเวลาของ peripheral ยังถูก
  • Logic analyzer 8 ช่อง ส่งออกเป็นไฟล์ VCD เปิดใน PulseView ได้ ใช้ไล่ I2C, PWM และสัญญาณ LED

Wokwi คือโปรแกรมจำลองวงจรอิเล็กทรอนิกส์ที่รันในเบราว์เซอร์ วาง ESP32 ต่อ LED ปุ่ม เซนเซอร์ แล้วรันเฟิร์มแวร์จริงได้เลยโดยยังไม่ต้องมีบอร์ด ใช้ลองไอเดีย หาบั๊กในโค้ด และเช็กว่าต่อขาถูกก่อนเสียบสายจริง ช่วยตัดรอบ “อัปโหลด เดา แก้ อัปโหลดใหม่” ได้มาก

บทนี้ใช้ข้อมูลจากเอกสาร Wokwi และหน้า Wokwi ในเอกสาร ESP-IDF ของ Espressif ณ ตุลาคม 2026 ถ้ายังไม่เคยต่อวงจรจริง เริ่มจากต่อ LED กับ ESP32 แล้วลองวงจรเดียวกันใน Wokwi เทียบดู

ชิปไหนจำลองได้แค่ไหน

Wokwi จำลอง ESP32, ESP32-C3, ESP32-S2, ESP32-S3, ESP32-C6, ESP32-C61 และ ESP32-H2 ส่วน ESP32-C5 กับ ESP32-S31 ยังเป็นรุ่น alpha และ ESP32-P4 เป็น beta ฟีเจอร์ที่รองรับต่างกันตามชิป ตารางนี้สรุปเฉพาะส่วนที่งานของเล่นใช้บ่อย

ฟีเจอร์สถานะใน Wokwi
GPIO, UART, SPI, ADC, LEDC PWM, RMT, timerรองรับทุกชิปในตาราง
Wi-Fiรองรับ (P4 ผ่าน ESP-Hosted)
I2Cเฉพาะฝั่ง master ไม่รองรับ 10-bit address
I2Sบางส่วน เฉพาะ ESP32 รุ่นแรก
USB Serial/JTAGSerial ได้ JTAG ไม่ได้ (S3, C3, C5, C6, P4)
PSRAMESP32, S3, C5, P4
Bluetoothยังไม่ได้

แปลว่าของเล่นที่ใช้ปุ่ม ไฟ WS2812 (ผ่าน RMT) เซอร์โว (ผ่าน LEDC) และเซนเซอร์ I2C จำลองได้เกือบครบ แต่ของเล่นที่คุมผ่านมือถือด้วย BLE ต้องทดสอบบนบอร์ดจริง

ความเร็ว CPU: ทำไมโค้ดบางส่วนช้ากว่าจริง

ค่าตั้งต้น cpuFrequency คือ auto ซึ่งจำกัด CPU จำลองไว้ราว 8 MHz ตั้งเป็น max ได้แต่เอกสารไม่แนะนำเพราะจะทำให้การจำลองทั้งหมดช้าลง สิ่งสำคัญคือข้อจำกัดนี้มีผลกับความเร็วรันคำสั่งเท่านั้น จังหวะเวลาของ peripheral ยังถูก

ตัวอย่าง:

  1. ESP32-S3 จริงวิ่ง 240 MHz จำลองราว 8 MHz ต่างกัน 240 ÷ 8 = 30 เท่า สำหรับงานคำนวณล้วน
  2. ลูปคำนวณที่บอร์ดจริงใช้ 20 ms ใน Wokwi อาจใช้ราว 20 × 30 = 600 ms
  3. แต่ delay(500) ไฟกะพริบยังกะพริบทุก 500 ms และ PWM 50 Hz ของเซอร์โวยังเป็น 50 Hz เพราะเป็นเวลาของ peripheral

ถ้าแอนิเมชันไฟดูหน่วงใน Wokwi ให้สงสัยงานคำนวณในลูปก่อน อย่าเพิ่งสรุปว่าโค้ดผิด

Wi-Fi จำลอง

ESP32 จำลองเห็น access point ชื่อ Wokwi-GUEST ไม่มีรหัสผ่าน อยู่ช่อง 6 ใส่หมายเลขช่องตอนเชื่อมต่อจะข้ามการสแกน ประหยัดเวลาราว 4 วินาทีทุกครั้งที่รัน

// Arduino-ESP32 ใน Wokwi
WiFi.begin("Wokwi-GUEST", "", 6);  // ช่อง 6

อินเทอร์เน็ตไปผ่าน IoT Gateway สองแบบ

Public GatewayPrivate Gateway
ค่าใช้จ่ายฟรี เป็นค่าตั้งต้นผู้ใช้แบบเสียเงิน
ทราฟฟิกถูกมอนิเตอร์ใช่ไม่
เข้าเครือข่ายในบ้านไม่ได้ได้
เปิดเว็บบน ESP32 จากเบราว์เซอร์ไม่ได้ได้ ผ่าน localhost:9080
IP ของ ESP3210.10.0.210.13.37.2

Gateway รองรับ TCP และ UDP แต่ไม่รองรับ ICMP เลย ping ไม่ได้ ถ้าโค้ดจำลองต้องคุยกับโปรแกรมบนเครื่องเรา (ผ่าน Private Gateway) ใช้ชื่อโฮสต์ host.wokwi.internal

Public Gateway ถูกมอนิเตอร์ อย่าใส่รหัส Wi-Fi บ้าน โทเคน API หรือข้อมูลส่วนตัวในโปรเจกต์ที่รันผ่านมัน

Public Gatewayฟรีทราฟฟิกถูกมอนิเตอร์เข้าเครือข่ายบ้านไม่ได้Private Gatewayเสียเงินไม่ถูกมอนิเตอร์ผ่าน localhost:9080
สอง gateway ของ Wi-Fi จำลอง

Logic analyzer: เห็นสัญญาณที่มองไม่เห็น

เพิ่มชิ้น “Logic Analyzer (8 channels)” มี 8 ช่อง D0–D7 ต่อขาที่อยากดู กดรัน พอหยุดการจำลองจะได้ไฟล์ wokwi-logic.vcd เปิดด้วย PulseView (Import Value Change Dump) หรือ GTKWave

ตัวอย่างไล่ปัญหา I2C ของเซนเซอร์ BME280

  1. ตัววิเคราะห์เก็บสัญญาณที่ 1 GHz เอกสารแนะนำตั้ง downsampling 50 ตอน import ได้ 1,000 ÷ 50 = 20 MHz
  2. I2C ความเร็วมาตรฐาน 100 kHz หนึ่งบิตยาว 1 ÷ 100,000 = 10 µs
  3. ที่ 20 MHz ได้ 20,000,000 × 0.00001 = 200 จุดต่อบิต พอให้ PulseView ถอดรหัส I2C อ่าน address และ ACK/NACK ได้สบาย

ถ้าเห็น NACK หลัง address แปลว่า address ในโค้ดไม่ตรงกับชิ้นที่ต่อ ไม่ต้องรื้อสายจริงเพื่อหา

รันใน VS Code และใน CI

ส่วนขยาย Wokwi for VS Code ให้จำลองเฟิร์มแวร์ที่ build ในเครื่อง ใช้ได้กับ PlatformIO, ESP-IDF, Arduino CLI, MicroPython, Rust, Zephyr และอื่น ๆ ขั้นตอน

  1. ติดตั้งส่วนขยาย กด F1 เลือก “Wokwi: Request a new License” แล้วล็อกอินบัญชี Wokwi
  2. build เฟิร์มแวร์ตามปกติ
  3. สร้าง wokwi.toml บอกตำแหน่งไฟล์ และ diagram.json บอกชิ้นส่วนกับสาย
  4. กด F1 → “Wokwi: Start Simulator”
# wokwi.toml (ตัวอย่างโปรเจกต์ PlatformIO)
[wokwi]
version = 1
firmware = '.pio/build/esp32dev/firmware.bin'
elf = '.pio/build/esp32dev/firmware.elf'

ฝั่ง ESP-IDF 6.0 ขึ้นไป มีแพ็กเกจ idf-wokwi ติดตั้งด้วย pip install idf-wokwi ตั้งตัวแปร WOKWI_CLI_TOKEN แล้วสั่ง idf.py wokwi ระบบสร้างไฟล์ตั้งค่าให้เอง เวอร์ชันเก่ากว่าใช้ wokwi-cli แทน ใช้ใน GitHub Actions ได้ด้วย เช่น idf.py wokwi --timeout 30000 --expect-text "Tests passed" เก็บโทเคนใน secret ห้าม commit ลง repo

ข้อผิดพลาดที่เจอบ่อย

  • ผ่านในจำลองแล้วข้ามการวัดจริง Wokwi ไม่รู้ว่าไฟเลี้ยงพอไหม ดูจ่ายไฟ ESP32 ให้ถูก
  • ตั้ง flashSize เล็กกว่า partition table LittleFS หรือ SPIFFS จะ mount ไม่ขึ้น
  • ทดสอบ BLE ใน Wokwi ยังไม่รองรับ
  • ตั้ง CPU เป็น max เพื่อให้เร็ว กลับทำให้การจำลองโดยรวมช้าลง
  • ใส่ข้อมูลลับในโปรเจกต์ที่ใช้ Public Gateway

แหล่งข้อมูล

คำถามที่พบบ่อย

ผ่านใน Wokwi แล้ว ต่อจริงจะทำงานแน่ไหม

ไม่แน่ Wokwi ตรวจตรรกะของโค้ดและการต่อขาได้ดี แต่ไม่จำลองไฟเลี้ยงตก กระแสเกิน สายหลวม หรือสัญญาณรบกวน ส่วนนี้ต้องวัดบนโต๊ะด้วยมัลติมิเตอร์

ใช้ Wokwi ใน VS Code ต้องจ่ายเงินไหม

การเปิดใช้งานต้องขอ license ผ่านบัญชี Wokwi ซึ่งสมัครฟรีได้ ฟีเจอร์บางอย่าง เช่น Private Gateway และ Wi-Fi access point แบบกำหนดเอง ต้องใช้แผนแบบเสียเงิน ดูเงื่อนไขล่าสุดที่เว็บ Wokwi

ทำไมเปิดเว็บเซิร์ฟเวอร์บน ESP32 จำลองแล้วเข้าจากเบราว์เซอร์ไม่ได้

Gateway สาธารณะออกอินเทอร์เน็ตได้แต่รับการเชื่อมต่อเข้าไม่ได้ ต้องใช้ Private Gateway แล้วเปิด http://localhost:9080/ ซึ่งจะส่งต่อไปพอร์ต 80 ของ ESP32 จำลอง

วงจรและโค้ดในบทความทดสอบกับบอร์ดตัวอย่าง บอร์ดต่างรุ่นอาจใช้ขาต่างกัน ตรวจ pinout ของบอร์ดที่ใช้ก่อนต่อไฟเสมอ

อ่านต่อ

#เครื่องมือกลาง

ออกแบบ PCB แผ่นแรก ให้ของเล่น ESP32 ด้วย KiCad 10

จากเบรดบอร์ดสู่แผ่น PCB ด้วย KiCad 10 วางโมดูล ESP32-S3 ให้เสาอากาศทำงาน คำนวณความกว้างลายทองแดง ตั้งกฎด้วย rule editor แบบกราฟิก และใช้ variants ทำบอร์ดสองรุ่น

อ่าน 7 นาที
#เครื่องมือกลาง

OpenSCAD กับ Manifold เรนเดอร์ของเล่นแบบ พาราเมตริก ได้เร็วขึ้นแค่ไหนจริง

Manifold คือเอนจินเรขาคณิตใหม่ของ OpenSCAD ทำให้เรนเดอร์เร็วขึ้นมาก แต่ตัวเลขกี่เท่าส่วนใหญ่มาจากผู้ใช้ บทนี้แยกว่าอะไรยืนยันได้ อะไรเป็นเรื่องเล่า และวัดเองยังไง

อ่าน 6 นาที
#เครื่องมือเริ่มต้น

เลือก CAD ให้งานพิมพ์ 3 มิติ: Tinkercad Fusion Onshape FreeCAD OpenSCAD Blender

หกโปรแกรมที่เมกเกอร์ใช้กันจริง แต่ละตัวถนัดงานแบบไหน ต่างกันระหว่าง CAD แบบ parametric กับโปรแกรมปั้น mesh และเงื่อนไขรุ่นฟรีที่ต้องอ่านก่อนเอางานไปขาย

อ่าน 7 นาที