Arduino & ESP32
Arduino เป็นภาษาอิตาลี อ่านว่า "อาดุอีโน่" หรือจะเรียกว่า "อาดุยโน่" ก็ได้ ไม่ผิดเอาเป็นว่าเราเข้าใจตรงกันเป็นพอ Arduino เป็น Open-Source Platform (แพลตฟอร์มสาถารณะ) โดยเป็นบอร์ดไมโครคอนโทรเลอร์ตระกูล AVR สำหรับการสร้างต้นแบบทางอิเล็กทรอนิกส์ที่ง่ายต่อการใช้งาน โดยประกอบด้วย
1. ส่วนที่เป็น Hardware
1. ส่วนที่เป็น Hardware
ไมโครคอนโทรลเลอร์ (MCU: Microcontroller Unit) เป็นการร่วมกับอุปกรณ์อิเล็กทรอนิกส์ต่างๆ ประกอบเป็นบอร์ดอิเล็กทรอนิกส์ขนาดเล็กเพื่อให้ง่ายต่อการใช้งาน หรือที่เรียกกันว่า บอร์ด Arduino โดยบอร์ด Arduino เองก็มีหลายรุ่นให้เลือกใช้ โดยในแต่ละรุ่นอาจมีความแตกต่างกันในเรื่องของขนาดหรือสเปค เช่น จำนวนของขารับส่งสัญญาณ แรงดันไฟที่ใช้ประสิทธิ
![](https://fj.lnwfile.com/_/fj/_raw/of/v9/jl.png)
2. ส่วนที่เป็น Software คือ
ภาษา C / C++ เป็นภาษาสำหรับเขียนโปรแกรมควบคุม Arduino IDE เป็นเครื่องมือสำหรับเขียนโปรแกรมด้วยภาษา Arduino คอมไพล์โปรแกรม (Compile) และอัปโหลดโปรแกรมลงบอร์ด (Upload)
![](https://fj.lnwfile.com/_/fj/_raw/eq/cm/cz.jpg)
Arduino ทำอะไรได้ ?
Arduino ถูกใช้ประโยชน์ในลักษณะเดียวกับ MCU อื่นๆ คือ ใช้ติดต่อสื่อสารและควบคุมอุปกรณ์ไฟฟ้าอื่นๆ ด้วยการเขียนโปรแกรมให้กับ MCU เพื่อควบคุมการรับส่งสัญญาณทางไฟฟ้าตามเงื่อนไขต่างๆ โดยตัวอย่าง การประยุกต์ใช้ Arduino ในชีวิตประจำวัน เช่น ระบบเปิด/ปิดไฟอัตโนมัติ ระบบเปิดปิดประตูอัตโนมัติ ระบบรดน้ำต้นไม้อัตโนมัติ หรือใช้ควบคุมความเร็วและทิศทางการหมุนของคุมมอเตอร์ เป็นต้น
![](https://fj.lnwfile.com/_/fj/_raw/fe/zc/11.jpg)
Official Board กับ Compatible Board
ต่างกันอย่างไร ?
Arduino เป็น MCU ที่ Open-Source นั่นคือเปิดเผยแบบแปลนในการผลิต ทำให้ใคร ๆ ก็สามารถผลิตหรือสร้างบอร์ด Arduino ขึ้นมาได้ ดังนั้นบอร์ด Arduino จึงมีผู้ผลิตออกมาจำหน่ายมากมาย โดยแบ่งประเภทของบอร์ด Arduino จากแหล่งที่มาที่ต่างกันได้เป็น 2 ประเภท ดังนี้
![](https://fj.lnwfile.com/_/fj/_raw/ix/lt/kg.jpg)
- Official Board หรือ บอร์ดที่ผลิตโดยต้นผู้ผลิตหลัก จากประเทศอิตาลี บอร์ดจะถูกผลิตด้วยความประณีต มีเพกเกจสวยงาม อุปกรณ์แต่ละชิ้นได้มาตรฐาน ผ่านการตรวจเช็คความสมบูรณ์ของสินค้าอย่างดีก่อนออกจำหน่าย ทำให้ราคาสูง
![](https://fj.lnwfile.com/_/fj/_raw/7e/sk/zm.jpg)
- Compatible Board หรือ บอร์ดที่เข้ากันได้ (ใช้แทน Official Board ได้) ซึ่งไม่ได้ถูกผลิตโดยผู้ผลิตหลัก แต่อาจถูกผลิตขึ้นมาตามแบบแปลนแป๊ะ ๆ หรืออาจผลิตให้ใกล้เคียงกับแบบแปลนจากผู้ผลิตหลัก โดยอาจมีการปรับแบบหรืออุปกณ์เพื่อลดต้นทุน หรือเพื่อแม้แต่เพิ่มความสามารถและประสิทธิภาพ บอร์ดประเภทนี้ส่วนมากผลิตที่จีน (แต่ไอโฟนก็ผลิตที่ที่จีนนี่หน่า ฮ่าๆๆๆ) คุณภาพอาจไม่ดีมากนัก หรืออาจจะดีกว่าก็ได้ แต่ราคาถูก เหมาะกับการเอามาศึกษาในระดับผู้เริ่มต้น ซึ่งถ้าเทียบราคากันในรุ่น Arduino MEGA 2560 ราคาของ Official Board จะอยู่ที่ราว ๆ 1600 บาท ส่วน Compatible Board ราคาจะถูกว่าเกินครึ่ง
สิ่งที่ทำให้ Arduino น่าสนใจ ?
- Arduino เป็นที่นิยมในวงการ MCU มาได้หลายปี กับนักอิเล็กทรอนิกส์ทั้งมือใหม่ และมือเก่า ทำให้เราสามารถหาอ่านคู่มือ วิธีใช้ วิธีแก้ปัญหาต่างๆ ได้ง่ายบนอินเทอร์เน็ต
- Arduino พร้อมใช้งานทันที เพราะบอร์ด Arduino ติดตั้งอุปกรณ์จำเป็นพื้นฐานมาให้หมดแล้ว
- Arduino สามารถเขียนโปรแกรมสั่งงานด้วยไวยากรณ์ภาษา C / C++ ซึ่งง่ายสำหรับผู้ที่มีพื้นฐานด้านการเขียนโปรแกรมอยู่บ้างแล้ว แต่สำหรับผู้ที่ไม่เคยเขียนโปรแกรมมาก่อนเลย ก็สามารถเริ่มต้นศึกษา และหาหนังสืออ่านได้ไม่ยาก นอกจากนี้ยังมี Library ให้เลือกใช้มากมาย ทำให้การเขียนโปรแกรมทำได้ง่ายและรวดเร็วขึ้น
- Arduino ราคาไม่แพงเกินไปสำหรับผู้ที่อยากจะเริ่มต้นใช้งาน (แถมมี Official Board ที่ราคาถูกกันเกินครึ่งให้ใช้นะออ!!)
- การอัปโหลดโปรแกรมที่เขียนบนคอมพิวเตอร์ลงไปที่ Arduino ก็ทำได้โดยง่าย แค่ใช้สาย USB ต่อบอร์ด Arduino เข้ากับคอมพิวเตอร์ แล้วอัปโหลดด้วยโปรแกรม Arduino IDE เท่านั้นเอง
Arduino มีกี่แบบ ?
1. Arduino Uno R3 เป็นบอร์ด Arduino ที่ได้รับความนิยมสูงสุด เนื่องจากราคาไม่ถูก และมี Library ต่างๆ ที่พัฒนาขึ้นมา Support จะอ้างอิงกับบอร์ดนี้เป็นหลัก และถ้าหาก MCU เสีย ผู้ใช้งานสามารถซื้อมาเปลี่ยนเองได้
(ดูรายละเอียดสินค้า)
(ดูรายละเอียดสินค้า)
2. Arduino Uno SMD เป็นบอร์ดที่มีคุณสมบัติและการทำงานเหมือนกับบอร์ด Arduino UNO R3 ทุกอย่าง แต่จะแตกต่างกับที่ Package ของ MCU ซึ่งบอร์ดนี้จะมี MCU ที่เป็น Package SMD (SMD: Surface Mount Device)
(ดูรายละเอียดสินค้า)
(ดูรายละเอียดสินค้า)
3. Arduino Nano 3.0 เป็น Arduino ที่ใช้หน่วยประมวลผล ATmega328 เช่นเดียวกับ Arduino Uno ความสามารถจึงเท่ากัน แตกต่างที่ Arduino Nano 3.0 ถูกออกแบบให้มีขนาดเล็ก โดยตัดส่วนของ Socket ที่ไม่จำเป็นออก และยังคงความสามารถในการติดต่อผ่าน USB port เหมือนบอร์ด Arduino ตัวใหญ่ไว้ อาจจะเรียกได้ว่า Arduino Nano 3.0 ตัวนี้ คือ Arduino Uno ขนาดย่อส่วนลงมา
(ดูรายละเอียดสินค้า)
(ดูรายละเอียดสินค้า)
4. Arduino Mega 2560 R3 เป็นบอร์ด Arduino ที่ออกแบบมาสำหรับงานที่ต้องใช้ I/O มากกว่าArduino Uno R3 เช่น งานที่ต้องการรับสัญญาณจาก Sensor หรือควบคุมมอเตอร์ Servo หลายๆ ตัว ทำให้ Pin I/O ของบอร์ด Arduino Uno R3 ไม่เพียงพอต่อการใช้งาน ทั้งนี้บอร์ด Mega 2560 R3 ยังมีความหน่วยความจำแบบ Flash มากกว่า Arduino Uno R3 ทำให้สามารถเขียนโค้ดโปรแกรมเข้าไปได้มากกว่า ในความเร็วของ MCU ที่เท่ากัน
(ดูรายละเอียดสินค้า)
(ดูรายละเอียดสินค้า)
5. Arduino Mega ADK เป็นบอร์ดที่ออกแบบมาให้บอร์ด Mega 2560 R3 สามารถติดต่อกับอุปกรณ์ Android Device ผ่านพอร์ต USB ของบอร์ดได้
![](https://fj.lnwfile.com/_/fj/_raw/hg/5m/5w.jpg)
6. Arduino Leonardo การทำงานจะคล้ายกับบอร์ด Arduino Uno R3 แต่มีการเปลี่ยน MCU ตัวใหม่เป็น ATmega32U4 ซึ่งมีโมดูลพอร์ต USB มาด้วยบนชิป (แตกต่างจากบอร์ด Arduino UNO R3 หรือArduino Mega 2560 ที่ต้องใช้ชิป ATmega16U2 ร่วมกับ Atmega328 ในการเชื่อมต่อกับพอร์ตUSB)
ข้อระวัง: เนื่องจาก MCU เป็นคนละเบอร์กับ Arduino Uno R3 อาจะทำให้บอร์ด Shield บางตัวหรือLibrary ใช้ร่วมกันกับบอร์ด Arduino Leonardo ไม่ได้ ผู้ใช้งานจำเป็นต้องตรวจสอบก่อนใช้งาน
![](https://fj.lnwfile.com/_/fj/_raw/wc/1k/wo.png)
7. Arduino Mini 05 เป็นบอร์ด Arduino ขนาดเล็กที่ใช้ MCU เบอร์ ATmega328 เบอร์เดียวกับบอร์ด Arduino UNO R3
ข้อแตกต่าง: บอร์ด Arduino Mini 05 จะไม่มีพอร์ต USB มาให้ ผู้ใช้งานต้องต่อกับบอร์ด USB to Serial Converter เพิ่มเมื่อต้องการโปรแกรมบอร์ด
![](https://fj.lnwfile.com/_/fj/_raw/24/nm/rs.jpg)
8. Arduino Pro Mini 328 3.3V เป็นบอร์ด Arduino ขนาดเล็ก ที่ใช้ MCU เบอร์ ATmega328 ซึ่งจะคล้ายกับบอร์ด Arduino Mini 05 แต่บนบอร์ดจะมี Regulator 3.3 V ชุดเดียวเท่านั้น ระดับแรงดันไฟที่ขา I/O คือ 3.3V
![](https://fj.lnwfile.com/_/fj/_raw/cx/87/k3.jpg)
9. Arduino Pro Mini 328 5V เป็นบอร์ด Arduino ขนาดเล็ก ที่ใช้ MCU เบอร์ ATmega328 เช่นเดียวกับบอร์ด Arduino Mini 05 แต่บนบอร์ดจะมี Regulator 5V ชุดเดียวเท่านั้น ระดับแรงดันไฟที่ขา I/O คือ 5V
![](https://fj.lnwfile.com/_/fj/_raw/nv/g8/31.jpg)
10. Arduino Ethernet with PoE module เป็นบอร์ด Arduino ที่ใช้ MCU เบอร์เดียวกับ Arduino Uno SMD ในบอร์ดมีชิป Ethernet และช่องสำหรับเสียบ SD Card รวมทั้งโมดูล POE ทำให้บอร์ดนี้สามารถใช้แหล่งจ่ายไฟจากสาย LAN ได้โดยตรง โดยไม่ต้องต่อ Adapter เพิ่ม แต่บอร์ด Arduino Ethernet with PoE module นี้จะไม่มีพอร์ต USB ทำให้เวลาโปรแกรมต้องต่อบอร์ด USB toSerial Converter เพิ่มเติม
![](https://fj.lnwfile.com/_/fj/_raw/5x/gz/52.png)
12. Arduino Due เป็นบอร์ด Arduino ที่เปลี่ยนชิป MCU ใหม่ ซึ่งจากเดิมเป็นตระกูล AVR เปลี่ยนเป็นเบอร์ AT91SAM3X8E (ตระกูล ARM Cortex-M3) แทน ทำให้การประมวลผลเร็วขึ้น แต่ยังคงรูปแบบโค้ดโปรแกรมของ Arduino ที่ง่ายอยู่ ข้อควรระวัง: เนื่องจาก MCU เป็นคนละเบอร์กับ Arduino Uno R3 อาจะทำให้บอร์ด Shield บางตัวหรือ Library ใช้ร่วมกันกับบอร์ด Arduino Leonardo ไม่ได้ ผู้ใช้งานจำเป็นต้องตรวจสอบก่อนใช้งาน
![](https://fj.lnwfile.com/_/fj/_raw/eg/x0/yg.jpg)
![](https://fj.lnwfile.com/_/fj/_raw/eg/x0/yg.jpg)
ESP32 คือ ?
![https://hackerstribe.com/wp-content/uploads/2015/11/ESP32.jpg](https://cz.lnwfile.com/_/cz/_raw/nr/6r/t6.jpg)
รูปที่ 1.1 หน้าตาของชิปไอซี ESP32 ในรูปตัวถัง QFN-42
ESP32 เป็นชื่อของไอซีไมโครคอนโทรลเลอร์ที่รองรับการเชื่อมต่อ WiFi และ Bluetooth 4.2 BLE ในตัว ผลิตโดยบริษัท Espressif จากประเทศจีน โดยราคา ณ ที่เขียนบทความอยู่นี้ มีราคาไม่เกิน 500 บาท (บอร์ดพัฒนาสำเร็จรูป) โดยตัวไอซี ESP32 มีสเปคโดยละเอียด ดังนี้
- ซีพียูใช้สถาปัตยกรรม Tensilica LX6 แบบ 2 แกนสมอง สัญญาณนาฬิกา 240MHz
- มีแรมในตัว 512KB
- รองรับการเชื่อมต่อรอมภายนอกสูงสุด 16MB
- มาพร้อมกับ WiFi มาตรฐาน 802.11 b/g/n รองรับการใช้งานทั้งในโหมด Station softAP และ Wi-Fi direct
- มีบลูทูธในตัว รองรับการใช้งานในโหมด 2.0 และโหมด 4.0 BLE
- ใช้แรงดันไฟฟ้าในการทำงาน 2.6V ถึง 3V
- ทำงานได้ที่อุณหภูมิ -40◦C ถึง 125◦C
นอกจากนี้ ESP32 ยังมีเซ็นเซอร์ต่าง ๆ มาในตัวด้วย ดังนี้
- วงจรกรองสัญญาณรบกวนในวงจรขยายสัญญาณ
- เซ็นเซอร์แม่เหล็ก
- เซ็นเซอร์สัมผัส (Capacitive touch) รองรับ 10 ช่อง
- รองรับการเชื่อมต่อคลิสตอล 32.768kHz สำหรับใช้กับส่วนวงจรนับเวลาโดยเฉพาะ
ขาใช้งานต่าง ๆ ของ ESP32 รองรับการเชื่อมต่อบัสต่าง ๆ ดังนี้
- มี GPIO จำนวน 32 ช่อง
- รองรับ UART จำนวน 3 ช่อง
- รองรับ SPI จำนวน 3 ช่อง
- รองรับ I2C จำนวน 2 ช่อง
- รองรับ ADC จำนวน 12 ช่อง
- รองรับ DAC จำนวน 2 ช่อง
- รองรับ I2S จำนวน 2 ช่อง
- รองรับ PWM / Timer ทุกช่อง
- รองรับการเชื่อมต่อกับ SD-Card
นอกจากนี้ ESP32 ยังรองรับฟังก์ชั่นเกี่ยวกับความปลอดภัยต่าง ๆ ดังนี้
- รองรับการเข้ารหัส WiFi แบบ WEP และ WPA/WPA2 PSK/Enterprise
- มีวงจรเข้ารหัส AES / SHA2 / Elliptical Curve Cryptography / RSA-4096 ในตัว
ในด้านประสิทธิ์ภาพการใช้งาน ตัว ESP32 สามารถทำงานได้ดี โดย
- รับ – ส่ง ข้อมูลได้ความเร็วสูงสุดที่ 150Mbps เมื่อเชื่อมต่อแบบ 11n HT40 ได้ความเร็วสูงสุด 72Mbps เมื่อเชื่อมต่อแบบ 11n HT20 ได้ความเร็วสูงสุดที่ 54Mbps เมื่อเชื่อมต่อแบบ 11g และได้ความเร็วสูงสุดที่ 11Mbps เมื่อเชื่อมต่อแบบ 11b
- เมื่อใช้การเชื่อมต่อผ่านโปรโตคอล UDP จะสามารถรับ – ส่งข้อมูลได้ที่ความเร็ว 135Mbps
- ในโหมด Sleep ใช้กระแสไฟฟ้าเพียง 2.5uA
จะเห็นได้ว่า ในราคาไม่ถึง 500 บาท (บอร์ดพัฒนาสำเร็จรูป) และโมดูลเปล่าราคาไม่ถึง 400 บาท สามารถให้ประสิทธิ์ภาพได้เกินราคา ด้วยเหตุนี้ ESP32 จึงเหมาะสำหรับนำมาใช้งานมาก ด้วยเหตุผลทางด้านราคา และประสิทธิ์ภาพที่ได้
ประวัติความเป็นมาของ ESP32
ก่อนที่ ESP32 จะได้ถือกำเนิดขึ้น ได้มีไอซีไมโครคอนโทรลเลอร์ที่มี WiFi ในตัว และทำราคาได้ถูกมาก ๆ ในขณะนั้น (เพียง $5 หรือประมาณ 200 บาท) ออกมาปฏิวัติโลกของระบบสมองกลฝังตัว นั่นก็คือไอซีเบอร์ ESP8266 ที่ผลิตโดยบริษัท Espressif จากประเทศจีน ในช่วงเริ่มแรก ไอซี ESP8266 สามารถทำงานได้โดยใช้การสื่อสารผ่าน UART เท่านั้น และพูดคุยสั่งงานผ่าน AT command ไม่สามารถอัพเดท หรือแก้ไขเฟิร์มแวร์ด้านในได้ แต่ต่อมาไม่นานบริษัท Espressifก็ได้ออกไอซีเวอร์ชั่นใหม่มา ในครั้งนี้สามารถที่จะอัพเดทเฟิร์มแวร์ได้ และเราสามารถลงไปเขียนเฟิร์มแวร์เองได้ โดยในขณะนั้น การเขียนเฟิร์มแวร์จะใช้ภาษา C เพียงอย่างเดียว และใช้ ESP8266 SDK เป็นชุดซอฟแวร์พัฒนา ด้วยความยากของการใช้งานภาษา C เพียงอย่างเดียว ทำให้ไม่ได้รับความนิยมเรื่องการพัฒนาเฟิร์มแวร์เองมากนัก
![https://hackster.imgix.net/uploads/cover_image/file/56924/WiFi_20Serial_20Transceiver_20Module.jpg?auto=compress%2Cformat&w=400&h=300&fit=min](https://cz.lnwfile.com/_/cz/_raw/ky/b1/xa.jpg)
รูปที่ 1.2 โมดูล ESP8266 01 ผลิตโดยบริษัท Ai-Thinker หัวใจหลักคือไอซี ESP8266
หลังจากนั้นมาประมาณ 1 ปี ผู้ผลิตบอร์ด NodeMCU ได้พอร์ตตัว Runtime ภาษา Lua มาลงใน ESP8266 ทำให้ตัว ESP8266 สามารถเขียนโปรแกรมสั่งงานตรง ๆ ได้ง่ายขึ้นมาก รวมทั้งมีเสถียรภาพเพิ่มขึ้น และในขณะนี้เอง บอร์ด NodeMCU เป็นบอร์ดพัฒนา ESP8266 สำเร็จรูปเพียงบอร์ดเดียวในตลาด ที่มาพร้อมกับ USB to UART ทำให้ให้สามารถอัพโหลดเฟิร์มแวร์เข้า ESP8266 ได้ผ่าน USB โดยตรง นอกจากนี้ผู้พัฒนาบอร์ด NodeMCU ได้คิดค้นวงจรการเข้าโหมดอัพโหลดโปรแกรมอัตโนมัติ และตั้งชื่อว่า nodemcu ซึ่งภายหลังบอร์ดพัฒนาทุกรุ่น จะใช้วงจรแบบ nodemcu ในการเข้าโหมดอัพโหลดโปรแกรมอัตโนมัติ และด้วยเหตุผลที่บอร์ด NodeMCU เป็นบอร์ดพัฒนา ESP8266 บอร์ดแรกในท้องตลาด ทำให้ได้รับความนิยมมาก และหลังจากบริษัทในจีนต่าง ๆ ได้ลอกวงจร และลายปริ้นของ NodeMCU มาทำขายเองในราคาที่ถูก แล้วใช้ชื่อเดิมคือ NodeMCU จึงทำให้บอร์ด NodeMCU ได้รับความนิยมมากจนถึงปัจจุบัน
![](https://cz.lnwfile.com/_/cz/_raw/sj/27/95.png)
รูปที่ 1.3 ด้านซ้าย บอร์ด NodeMCU 0.9 และด้านขวา บอร์ด NodeMCU 1.0
หลังจากตัว Runtime ภาษา Lua ได้ถูกพอร์ตมาลง ESP8266 ได้ประมาณ 2 – 4 เดือน ทางชุมชนพัฒนา ESP8266 ที่ชื่อ ESP8266 Community Forum (www.esp8266.com) ได้ออกชุดไลบารี่ และคอมไพล์เลอร์สำหรับใช้กับโปรแกรม Arduino IDE มาในชื่อ Arduino core for ESP8266 WiFi chip ทำให้การพัฒนาเฟิร์มแวร์ของ ESP8266 นั้นง่ายขึ้นมาก ๆ โดยใช้การเขียนโปรแกรมแบบ Arduino ดังนั้นคนที่มีพื้นฐานการเขียนโปรแกรมลงบอร์ด Arduino เป็นอยู่แล้ว จึงมาเขียนเฟิร์มแวร์ลง ESP8266 โดยใช้โปรแกรม Arduino ได้ไม่ยาก และนอกจากนี้ ไลบารี่ต่าง ๆ ที่ใช้งานได้กับบอร์ด Arduino ยังสามารถนำมาใช้งานกับ ESP8266 ได้เลย ทำให้ ESP8266 ได้รับความนิยมสูงมากมาจนถึงขณะนี้
![](https://cz.lnwfile.com/_/cz/_raw/b1/fh/m3.jpg)
รูปที่ 1.4 หน้าเว็บหลักของชุดซอฟแวร์ Arduino core for ESP8266 WiFi chip อยู่บน GitHub
ด้วยความสำเร็จอย่างถึงที่สุดของไอซี ESP8266 ทำให้บริษัท Espressif ออกไอซีรุ่นถัดไปมา ในช่วงแรกใช้ชื่อว่า ESP31B เปิดให้ร้านค้าใหญ่ ๆ อย่าง Adafruit SparkFun และผู้สนใจบางส่วนได้ทดสอบ โดยในขณะนั้นได้มีการพัฒนาชุดซอฟแวร์ ESP32_RTOS_SDK ไปพร้อม ๆ กับการพัฒนาไอซี ESP31B ทำให้มีคนนำชุด ESP32_RTOS_SDK ไปพัฒนาลงโปรแกรม Arduino รอก่อนไอซีตัวจริงจะออก ในชื่อ Arduino core for ESP31B WiFi chip แต่หลังจากนั้นไม่นาน บริษัท Espressif ได้ยกเลิกการใช้ชุดซอฟแวร์พัฒนา ESP32_RTOS_SDK แล้วไปสร้างชุดพัฒนาใหม่ที่ชื่อ ESP-IDF แทน (แต่เมื่อไปเจาะลึก จะพบว่าภายในแทบจะลอก ESP32_RTOS_SDK มาทั้งหมด) จากนั้นจึงออกไอซี ESP32 ออกมาเป็นครั้งแรก
![](https://cz.lnwfile.com/_/cz/_raw/63/v4/lh.png)
รูปที่ 1.5 ด้านหน้า และด้านหลังของโมดูล ESP31B-WROOM-03 ใช้ชิปไอซี ESP31B
ด้วยในอดีตที่ไอซี ESP8266 ได้ทำไว้ดีมาก จึงส่งผลให้ ESP32 ได้รับความสนใจอย่างมาก จนผลิตไม่ทันต่อความต้องการ โดยในช่วงแรก บริษัท Espressif ได้ให้ข่าวว่า จะผลิต ESP32 แบบโมดูลออกมาเพียงอย่างเดียว ในชื่อ ESP-WROOM-32 หลังจากนั้นไม่นาน บริษัท Ai-Thinker ได้ร่วมมือกับ Seeedstudio ผลิตโมดูล ESP3212 ขึ้นมา โดยมีสถานะเป็นพรีออเดอร์ แต่เมื่อถึงกำหนดส่งมอบ บริษัท Seeedstudio ได้เลื่อนการส่งมอบออกไป ด้วยปัญหาด้านการออกแบบลายวงจรของตัวโมดูลเอง ทาง Ai-Thinker จึงได้ยกเลิกการผลิต ESP3212 แล้วหันไปผลิต ESP32S แทน โดยลายวงจรเหมือนกับ ESP-WROOM-32 ทุกประการ แล้วจึงเริ่มส่งมอบสินค้าได้
![http://s1.electrodragon.com/wp-content/uploads/2016/10/ESP-32S.png](https://cz.lnwfile.com/_/cz/_raw/eu/pp/fm.jpg)
รูปที่ 1.6 หน้าตาของโมดูล ESP3212 ที่ Ai-Thinker ร่วมกับ Seeedstudio ผลิตขึ้น
![](https://cz.lnwfile.com/_/cz/_raw/3n/aj/2s.jpg)
รูปที่ 1.7 หน้าตาของโมดูล ESP32S ที่ Seeedstudio ส่งมอบ
หลังจากสินค้า ESP32S ได้เริ่มส่งมอบ ทางทีมผู้พัฒนา Arduino core for ESP8266 WiFi chip ได้ถูกบริษัท Espressif ซื้อตัวมาทั้งหมด แล้วจ้างให้พัฒนาชุดไลบารี่และคอมไพล์เลอร์สำหรับ Arduino ในชื่อ Arduino core for ESP32 WiFi chip ทำให้การพัฒนาเป็นไปด้วยความรวดเร็วมากขึ้น ภายหลัง ผู้พัฒนา Arduino core for ESP31B WiFi chip ก็ถูกดึงตัวให้มาร่วมทีมพัฒนา Arduino core for ESP32 WiFi chip ด้วยเช่นเดียวกัน
การพัฒนา Arduino core for ESP32 WiFi chip จะทำไปควบคู่กับการพัฒนา ESP-DF โดยที่ ESP-IDF จะเป็นแกนหลัก เมื่อมีการเพิ่มฟิเจอร์ใหม่ ๆ ให้ ESP-IDF แล้ว จึงจะมีการเพิ่มใน Arduino core for ESP32 WiFi chip โดยที่ ESP-IDF รองรับการเขียนโปรแกรมแบบ Arduino เช่นเดียวกัน และรองรับทุกไลบารี่ที่ใช้ได้สำหรับ Arduino เพียงแต่ ESP-IDF ไม่มีโปรแกรม Editor โดยเฉพาะเท่านั้นเอง
รายชื่อผู้พัฒนาชุด ESP_IDF
ในฐานะของผู้ใช้งานเต็มรูปแบบ เราควรที่จะทำความรู้จักกับทีมผู้พัฒนากันบ้าง โดยชื่อที่ยกมานี้ เป็นชื่อที่ใช้ในเว็บ GitHub
- Igrr (ผู้พัฒนาหลัก และเรามักได้ข่าวฟิเจอร์ใหม่ ๆ ของ ESP_IDF จากบัญชีทวิตเตอร์ของเขา)
- Projectgus
- Spritetm
- Liuzfesp
- TianHao-Espressif
- wmy-espressif
- heyinling
- wujiangang
- TimXia
- Costaud
- Krzychb
- me-no-dev
รายชื่อผู้พัฒนาชุด Arduino core for ESP32 WiFi chip
เมื่อเข้าไปดูรายชื่อผู้พัฒนา Arduino core for ESP32 WiFi chip จะพบว่า มีผู้พัฒนาหลักอยู่เพียงรายเดียว อาจจะเพราะ ESP_IDF สามารถเขียนโค้ดแบบ Arduino ได้อยู่แล้ว การนำ ESP_IDF มาลง Arduino อาจไม่ใช่เรื่องยาก จึงไม่ต้องใช้นักพัฒนาที่มากมายนัก
- me-no-dev (ผู้พัฒนาหลัก คนเดียวกับที่พัฒนาชุด Arduino core for ESP31B WiFi chip)
ชุดซอฟแวร์พัฒนา ESP32 อื่น ๆ
ตั้งแต่ยุคของ ESP8266 ที่ได้รับความนิยมสูงสุด ได้มีการพยายามนำตัว Runtime ของภาษาระดับสูงหลาย ๆ ตัวมาใช้ เพื่อให้คนที่คุ้นชินกับภาษาระดับสูงเหล่านั้น ได้มาใช้ ESP8266 ได้ง่ายมากยิ่งขึ้น เมื่อมาถึงยุค ESP32 ก็ได้มีการนำซอสโค้ดเดิมที่ทำไว้ มาดัดแปลงและใช้งานกับ ESP32 ด้วย
LuaNode
เป็นชื่อของชุดพัฒนา ESP32 ที่นำ Rumtime ของภาษา Lua มาลงใน ESP32 ทำให้ ESP32 ใช้ภาษา Lua ได้ พัฒนาโดยบริษัท DOIT ที่ทำบอร์ดพัฒนา ESP32 ในชื่อ DOIT ESP32 Development Board โดยความสามารถของ LuaNode คือรองรับคำสั่งที่ใช้บน Lua จริง ๆ แทบทุกคำสั่ง และรองรับการควบคุม WiFi เต็มรูปแบบ ดังนั้นหากผู้อ่านที่ใช้ภาษา Lua เป็นอยู่แล้ว ก็แนะนำให้ลองไปเล่นกันได้ครับ โดยรายละเอียดจะอยู่ที่ https://github.com/Nicholas3388/LuaNode
![https://ae01.alicdn.com/kf/HTB11dh_OVXXXXbrXVXXq6xXFXXXV/Official-DOIT-ESP32-Development-Board-WiFi-Bluetooth-Ultra-Low-Power-Consumption-Dual-Core-ESP-32-ESP.jpg_640x640.jpg](https://cz.lnwfile.com/_/cz/_raw/6m/ym/ha.jpg)
รูปที่ 1.8 หน้าตาบอร์ดพัฒนา DOIT ESP32 Development Board
MicroPython-ESP32
![https://avatars2.githubusercontent.com/u/6298560?v=3&s=400](https://cz.lnwfile.com/_/cz/_raw/q5/fk/gj.jpg)
รูปที่ 1.9 โลโก้ของโครงการ MciroPython
ชุดพัฒนาที่พยายามสร้างตัว Runtime ของภาษา Python 3 บนไมโครคอนโทรลเลอร์ต่าง ๆ พัฒนาโดย MicroPython ก่อนหน้านี้เขาได้เปิดระดมทุนในเว็บ Kickstarter เพื่อนำ Python 3 มาลงใน ESP8266 แล้วประสบความสำเร็จอย่างมาก ทำให้โครงการสามารถอยู่มาได้เรื่อย ๆ จนสามารถนำภาษา Python 3 มาใช้บน ESP32 ได้สำเร็จ
MicroPython-ESP32 รองรับการใช้งานพื้นฐานภาษา Python ส่วนใหญ่ได้ รองรับการจัดการ WiFi การเชื่อมต่อ I2C SPI ADC และการควบคุม GPIO เต็มรูปแบบ หากสนใจสามารถเข้าไปลองอ่านรายละเอียดได้ที่ https://github.com/micropython/micropython-esp32
Espruino on ESP32
![https://www.espruino.com/press/espruino_full_logo.png](https://cz.lnwfile.com/_/cz/_raw/64/ue/uf.png)
รูปที่ 1.10 โลโก้ของโครงการ Espruino
เป็นชุดพัฒนาที่พยายามทำให้สามารถใช้ภาษา JavaScript ในการสั่งงานได้ โดยโครงการ Espruino ได้ทำตัว Runtime ขึ้นมาใช้กับ ESP32 และไมโครคอนโทรลเลอร์อื่น ๆ โครงการนอกจากจะพัฒนาตัวเฟิร์มแวร์ Runtime แล้ว ยังได้พัฒนา Espruino Web IDE ซึ่งเป็นโปรแกรม IDE แบบเว็บแอพพลิเคชั่นที่ใช้งานร่วมกับ Google Chrome ด้วย ในการติดตั้ง จะต้องติดตั้งผ่าน Chrome เว็บสโตร์ รองรับการเขียนโปรแกรมแบบ Text และภาษาบล็อก (Block)
![](https://cz.lnwfile.com/_/cz/_raw/10/49/98.png)
รูปที่ 1.11 หน้า UI ของโปรแกรม Espruino Web IDE
ในขณะที่เขียนชุดบทความนี้ Espruino on ESP32 รองรับการควบคุม GPIO และบัสพื้นฐานอย่าง 1-wire I2C SPI DAC ADC UART และรองรับการใช้งาน WiFi แล้ว แต่ยังไม่รองรับการใช้งานบลูทูธ และการอัพโหลดโปรแกรมไร้สาย (Over-The-Air : OTA) หากสนใจ สามารถเข้าไปอ่านรายละเอียดได้ที่ http://www.espruino.com/ESP32
การเลือกใช้ชุดซอฟแวร์พัฒนา
การเลือกใช้ แนะนำให้เลือก ESP-IDF เป็นตัวเลือกอันดับต้น ๆ เนื่องจากมีการพัฒนาอย่างต่อเนื่อง และไปในทิศทางเดียวกับการพัฒนาชิป แต่หากมีพื้นฐานภาษา C ไม่มากนัก ผู้เขียนแนะนำให้เลือกใช้ชุดพัฒนา Arduino core for ESP32 WiFi chip จะดีกว่า เนื่องจากการเขียนโปรแกรมแบบ Arduino มีฟังก์ชั่นการใช้งานต่าง ๆ ที่ค่อนข้างง่าย และมีเว็บ arduino.cc เป็นเว็บรวมตัวอย่างโค้ดต่าง ๆ และเอกสารการใช้งานแต่ละฟังก์ชั่นอยู่มาก รวมทั้งเว็บไซต์ส่วนใหญ่ที่รวมวิธีการประยุกต์ใช้ ESP32 ยังนิยมใช้โค้ดโปรแกรมสำหรับชุดพัฒนา Arduino core for ESP32 WiFi chip อีกด้วย
ภาษาที่ใช้เขียน Arduino
ภาษาของการเขียนโปรแกรมใช้งานArduino Board
ภาษา C/C++ โดยประกอบด้วย Structure,values (variables and constants) และ Functions
ฟังก์ชั่นหลัก(Structure)
เป็นฟังก์ชั่นหลักในการเขียนโปรแกรม จำเป็นต้องมีในทุกโปรแกรม
Setup()
คือ ฟังก์ชั่นใช้ในการประกาศค่าเริ่มต้น ตำแหน่งพอร์ตที่ใช้งาน รวมถึงฟังก์ชั่นที่อยู่ไลบารี่ที่ใช้งาน เป็นฟังก์ชั่นที่ทำงานเพียงครั้งเดียว จะทำงานทุกครั้ง ที่มีการรีเซต หรือรีบูตเครื่องใหม่ เท่านั้น
ภาษาที่ใช้เขียน ESP32
MicroPython-ESP32 รองรับการใช้งานพื้นฐานภาษา Python ส่วนใหญ่ได้ รองรับการจัดการ WiFi การเชื่อมต่อ I2C SPI ADC และการควบคุม GPIO เต็มรูปแบบ หากสนใจสามารถเข้าไปลองอ่านรายละเอียดได้ที่ https://github.com/micropython/micropython-esp32
เว็บไซต์ที่ขาย จำหน่าย และบทความเกี่ยวกับ Arduino & ESP32
https://www.ioxhop.com/
https://www.thaieasyelec.com/
https://poundxi.com/
https://www.arduinospro.com/
https://blog.anto.io/th/
credit
ความคิดเห็น
แสดงความคิดเห็น