หลาย ๆ คนน่าจะคุ้นหูหรือรู้จัก ESP32 มากันบ้างแล้วใช่ไหมล่ะ ? สาเหตุก็คงเป็นเพราะในทุกวันนี้ IoT (Internet of Things) เข้ามามีบทบาทในชีวิตประจำวันเรามากขึ้นเรื่อย ๆ อุปกรณ์หลาย ๆ อย่างรอบตัวก็เริ่มมีความสามารถในการเชื่อมต่อกับอินเทอร์เน็ต ทำให้ผู้ใช้สามารถเข้าถึงข้อมูลของอุปกรณ์ได้สะดวกมากขึ้นไม่ว่าจะอยู่ที่ไหนก็ตามขอแค่มีอินเทอร์เน็ตเท่านั้น
ESP32 นั้นก็เป็นตัวเลือกลำดับต้น ๆ ที่นักพัฒนาเลือกใช้ เนื่องจากคุณสมบัติโดยรวมของอุปกรณ์ชิ้นนี้มีคุณสมบัติที่ครอบคลุม สามารถประยุกต์การใช้งานได้หลากหลายมาก ๆ ตั้งแต่งานโปรเจคระดับการทดลองของนักเรียนนักศึกษา ไปจนถึงโปรเจคระดับอุตสาหกรรมกันเลยทีเดียว
แล้วเจ้า ESP32 เนี่ยมันคืออะไรกันแน่นะ ? มันคือไอซีหรือเปล่า ? คือโมดูลอิเล็กทรอนิกส์ ? หรือว่าเป็นอุปกรณ์สำเร็จรูปชิ้นหนึ่งเลย ฉะนั้นวันนี้ทางบริษัท เอ็นดีอาร์ โซลูชั่น (ประเทศไทย) จํากัด จะมานำเสนอบทความที่เกี่ยวกับ ESP32 ให้ทุกท่านได้รู้จักและเข้าใจถึง ESP32 ในแต่ละแบบให้มากขึ้นกันครับ
Picture by ESP32.net
ก่อนอื่นเรามาทำความรู้จัก ESP32 แบบคร่าว ๆ กันก่อนดีกว่า
รูปที่ 1 ESP32 โมดูล from [1]
ส่วนใหญ่เวลาเราพูดถึง ESP32 โดยทั่วไป ก็จะหมายถึงโมดูลไมโครคอนโทรลเลอร์ที่มีหน้าตาเป็นก้อนสี่เหลี่ยมขนาดเล็ก มีฝาเหล็กครอบ อาจมีเสาอากาศแบบแผงวงจรยื่นออกมาหรือบางรุ่นก็เป็นแบบต่อเสาแยก ประมวลผลได้รวดเร็วกว่าไมโครคอนโทรลเลอร์ที่หลาย ๆ คนรู้จักอย่างตระกูล Arduino (ATmega) กินพลังงานต่ำ และที่สำคัญคือสามารถสื่อสารผ่านเครือข่ายไร้สายอย่าง Wi-Fi และ Bluetooth ได้ภายในตัวมันเอง ซึ่งถือเป็นจุดขายของไมโครคอนโทรลเลอร์ชนิดนี้เลยทีเดียว แถมมีราคาเพียงหลักร้อยบาทเท่านั้น เรียกได้ว่าโมดูล ESP32 นี้สามารถตอบโจทย์นักพัฒนาได้หลากหลายระดับมาก ๆ เลยใช่ไหมล่ะ
รูปที่ 2 ESP32 SoC (ESP32-D0WDQ6) [2-3]
แต่เอาเข้าจริง ๆ ESP32 ที่เราพูดถึงกัน แท้จริงแล้วมันคืออุปกรณ์ระดับโมดูล หมายความว่าภายในจะมีอุปกรณ์หลาย ๆ ส่วนประกอบเข้าด้วยกัน ซึ่งตัวที่เป็นไอซีหรือชิปภายในของ ESP32 จริง ๆ ก็คือ ESP32-D0WDQ6 หรือ ESP32-D0WD จัดว่าเป็น System On Chip (SoC) ตัวหลักของโมดูลนี้ นอกจากนั้นข้อมูลเพิ่มเติมคือนับจากปี 2020 ที่ผ่านมา ชิปทั้งสองตัวที่กล่าวไปนั้นได้ถูกแก้ไขบัคและพัฒนาออกมาเป็นเวอร์ชัน V3 (ESP32 ECO V3) เรียบร้อยแล้วด้วยนะ
มาพูดถึงภาพรวมบ้าง ESP32 นั้นถูกพัฒนาขึ้นโดยบริษัท Espressif Systems ประเทศจีน ซึ่งมีคุณสมบัติดังต่อไปนี้ [3]
- หน่วยประมวลผลสถาปัตยกรรม Tensilica Xtensa LX6 (ทั้งแบบ single-core และ dual-core) ที่สัญญาณนาฬิกา 160 – 240 MHz
- หน่วยความจำสูงสุดที่ 520 KB สำหรับ RAM และสูงสุดที่ 448 KB สำหรับ ROM และยังสามารถต่อหน่วยความจำภายนอกเพิ่มได้ (External flash and SRAM)
- รองรับการเชื่อมต่อ WiFi มาตรฐานย่าน 2.4 GHz (IEEE 802.11b/g/n)
- รองรับการเชื่อมต่อแบบ Bluetooth v4.2 (แต่ปัจจุบันรุ่นใหม่บางรุ่นรองรับ Bluetooth 5 แล้วนะ)
- สามารถเชื่อมต่อ GPIO ได้สูงสุดถึง 34 ช่อง (โดยมีคุณสมบัติ Capacitive sensing GPIOs จำนวน 10 ช่อง)
- รองรับ 12-bit ADC จำนวน 18 ช่อง
- รองรับ 8-bit DAC จำนวน 2 ช่อง
- รองรับการสื่อสารแบบ UART จำนวน 3 ช่อง
- รองรับการสื่อสารแบบ I2C จำนวน 2 ช่อง
- รองรับการสื่อสารแบบ I2S จำนวน 2 ช่อง
- รองรับการสื่อสารแบบ SPI จำนวน 4 ช่อง
- และรองรับ LED PWM สูงสุดถึง 16 ช่อง
มากไปกว่านั้น ESP32 ยังมีคุณสมบัติในการแมพพินให้กับ ESP32 (ทั้ง 34 ช่อง) (GPIO0 ~ GPIO19, GPIO21 ~ GPIO23, GPIO25 ~ GPIO27, และ GPIO32 ~ GPIO39) ทำให้ตัว ESP32 มีความยืดหยุ่นสำหรับนักออกแบบวงจร โดยสามารถออกแบบให้ใช้เป็น GPIO แบบทั่ว ๆ ไป หรือจะแมพพินให้เชื่อมต่อกับอุปกรณ์ที่อยู่โดยรอบ (peripheral) โดยตรง ซึ่งควบคุมผ่าน IO MUX, RTC IO MUX และ GPIO metrix ก็สามารถทำได้เช่นกัน ทำให้สัญญาณอินพุตส่งต่อไปยังอุปกรณ์ที่อยู่โดยรอบสามารถแมพให้ส่งมาจากพินใดก็ได้ หรือในทางกลับกันสัญญาณเอาต์พุตก็สามารถส่งออกไปยังพินใดก็ได้ตามที่ผู้ออกแบบวงจรต้องการเช่นกัน 16051
ด้านความปลอดภัย
- Secure boot
- มาตรฐาน IEEE 802.11 รองรับ WPA, WPA2, WPA3 รวมถึง WAPI
- การเข้ารหัสข้อมูลที่รองรับเช่น AES, SHA, RSA, RNG เป็นต้น
ถึงตรงนี้ทุกคนคงเห็นภาพเดียวกันแล้วว่า ESP32 นั้นโดยทั่วไปแล้วหน้าตาเป็นอย่างไร มีฟีเจอร์ที่สำคัญ ๆ อะไรบ้าง สำหรับท่านใดที่ต้องการศึกษาเพิ่มเติม สามารถเข้าไปศึกษาต่อได้ตามลิงค์ ESP32-WROOM-32 datasheet นี้ ได้เลยนะครับ
ทีนี้เรามาดูโมดูลย่อยของ ESP32 กันดีกว่าว่ามีอะไรบ้าง
ในขอบเขตของบทความนี้ จะโฟกัสแต่ตระกูลที่เป็น ESP32 Series แบบทั่วไปเท่านั้น (โดยจะขอข้ามในส่วน ESP32-S Series และ ESP32-C Series ออกไปก่อนเพื่อให้ผู้อ่านทั่วไปทำความเข้าใจได้ง่ายขึ้นนะครับ)
ESP32 Series ไลน์อัพในปัจจุบัน (ปี 2022) สามารถแบ่งออกได้เป็น 3 รุ่น ได้ดังต่อไปนี้
1. ESP32-WROOM Series
รูปที่ 3 โมดูล ESP32-WROOM-32E และโมดูล ESP32-WROOM-32UE ตามลำดับ [5]
โมดูล ESP32-WROOM Series นี้ถือว่าเป็นโมดูลรุ่นมาตรฐานของ ESP32 เลย ภายในจะใช้ชิป ESP32-D0WD พร้อม flash memory ในตัวโมดูล เหมาะสำหรับการประยุกต์ใช้งานในแอพพลิเคชันพื้นฐานทั่วไป รวมถึงแอพลิเคชันที่ใช้การสื่อสารไร้สายอย่าง WiFi หรือ BLE โดยตัวอย่างจากรูปที่ 3 จะเห็นได้ว่าทั้งสองโมดูลเป็นรุ่นเดียวกัน แตกต่างกันที่รหัส U ต่อท้าย ซึ่งรุ่นที่ไม่มีรหัส U คือรุ่นที่ใช้เสาอากาศแบบ PCB attenna ส่วนรุ่นรหัส U คือรุ่นที่ใช้เสาอากาศแบบ IPEX attenna นั่นเอง
2. ESP32-WROVER Series
รูปที่ 4 โมดูล ESP32-WROVER-E และโมดูล ESP32-WROVER-IE ตามลำดับ [6]
ถัดมาคือโมดูล ESP32-WROVER Series จัดว่าเป็นโมดูลที่ต่อยอดมากจากรุ่น WROOM Series เนื่องจากว่าคุณสมบัติพื้นฐานต่าง ๆ เหมือนกันแทบทุกประการ ภายในใช้ชิป ESP32-D0WD เหมือนกัน มี flash memory เหมือนกัน ส่วนที่เพิ่มเติมมาคือเรื่องของ PSRAM (Psuedostatic DRAM) ที่ให้เพิ่มมา ทำให้สามารถประยุกต์ใช้กับงานประเภทที่ต้องการใช้แรมเยอะได้สะดวกยิ่งขึ้น ซึ่งเหมาะกับงานจำพวก AIoT หรืองานเฉพาะทางบางประเภท เป็นต้น ส่วนเรื่องเสาอากาศก็เหมือนกันกับ ESP-WROOM Series เลย เพียงแต่รุ่นนี้ใช้รหัส I แทน U เท่านั้น
3. ESP32-MINI Series
รูปที่ 5 โมดูล ESP32-MINI-1 และโมดูล ESP32-MINI-1U ตามลำดับ [7]
รุ่นสุดท้ายในไลน์อัพ ESP32 Series คือ ESP32-MINI Series โมดูลรุ่นนี้หากดูสเปกเผิน ๆ แล้วอาจไม่ต่างจากรุ่น WROOM เลย แต่แท้จริงแล้วรุ่นนี้ใช้ชิป ESP32-U4WDH ซึ่งมี flash memory ภายในตัวชิปขนาด 4 MB ติดมาให้ ต่างจากรุ่น WROOM ที่ใช้ชิป ESP32-D0WD แต่ไม่มี flash memory ภายในชิป อาศัยส่วนประกอบโดยรอบนอกชิปแทน และเนื่องจากชิปรุ่นนี้มี flash memory ภายในตัว นั่นหมายความว่าไม่ต้องมี flash memory รอบนอกชิปแล้ว ขนาดของโมดูลจึงมีขนาดเล็กลงกว่ารุ่น WROOM นั่นเอง
กล่าวโดยสรุปทั้งสามรุ่นนี้ถือเป็นรุ่นที่หาได้ตามท้องตลาดทั่วไปเลย โดยมี ESP32-WROOM Series ที่เป็นรุ่นที่ได้รับความนิยมมากที่สุด รองลงมาคือ ESP32-WROVER Series และตามด้วย ESP32-MINI Series แต่โดยรวมแล้วทั้งสามตัวนี้ก็มีคุณสมบัติที่ไม่ต่างกันมากนัก สามารถใช้แทนกันได้ หากจะให้แนะนำสำหรับผู้เริ่มต้นศึกษาก็คงจะเป็นรุ่นมาตรฐานอย่าง ESP32-WROOM Series เว้นแต่ว่าผู้ใช้ต้องการที่จะนำไปทำโปรเจคหรืองานที่เฉพาะทางมากขึ้นก็อาจจะต้องลงไปพิจารณาในเรื่องของ specification ให้มากขึ้น หรือก็คือเลือกเครื่องมือให้มีความเหมาะสมกับงานนั่นเอง
** สำหรับใครที่ต้องการข้อมูลเพิ่มเติมเกี่ยวกับรุ่นย่อยของ ESP32 Series สามารถเข้าไปดู ที่นี่ ได้เลยครับ