นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน
อ่าน: 1254
ความเห็น: 0

ESP32 เบื้องต้น

ESP32 เบื้องต้น

ESP32 เบื้องต้น 

ในบทแรกนี้ ถือว่าเป็นส่วนที่สำคัญที่สุดของชุดเนื้อหานี้เลยก็ว่าได้ เพราะหากว่าเราไม่รู้จัก ESP32 จากแก่นแท้แล้ว การใช้งานอาจจะทำให้เราไม่รู้สึกว่า เราเข้าใจ ESP32 แล้วจริง ๆ ครับ

ESP32 คือ ?

https://hackerstribe.com/wp-content/uploads/2015/11/ESP32.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

รูปที่ 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 ได้รับความนิยมมากจนถึงปัจจุบัน

รูปที่ 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 ได้รับความนิยมสูงมากมาจนถึงขณะนี้

รูปที่ 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 ออกมาเป็นครั้งแรก

รูปที่ 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

รูปที่ 1.6 หน้าตาของโมดูล ESP3212 ที่ Ai-Thinker ร่วมกับ Seeedstudio ผลิตขึ้น

รูปที่ 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

รูปที่ 1.8 หน้าตาบอร์ดพัฒนา DOIT ESP32 Development Board

MicroPython-ESP32

https://avatars2.githubusercontent.com/u/6298560?v=3&s=400

รูปที่ 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

รูปที่ 1.10 โลโก้ของโครงการ Espruino

เป็นชุดพัฒนาที่พยายามทำให้สามารถใช้ภาษา JavaScript ในการสั่งงานได้ โดยโครงการ Espruino ได้ทำตัว Runtime ขึ้นมาใช้กับ ESP32 และไมโครคอนโทรลเลอร์อื่น ๆ โครงการนอกจากจะพัฒนาตัวเฟิร์มแวร์ Runtime แล้ว ยังได้พัฒนา Espruino Web IDE ซึ่งเป็นโปรแกรม IDE แบบเว็บแอพพลิเคชั่นที่ใช้งานร่วมกับ Google Chrome ด้วย ในการติดตั้ง จะต้องติดตั้งผ่าน Chrome เว็บสโตร์ รองรับการเขียนโปรแกรมแบบ Text และภาษาบล็อก (Block)

   

รูปที่ 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 อีกด้วย

สรุปท้ายบท

ESP32 เป็นชิปไอซีไมโครคอนโทรลเลอร์ 32 บิต ที่มี WiFi และบลูทูธเวอร์ชั่น 4.2 ในตัว ซึ่งเป็นรุ่นต่อของชิปไอซี ESP8266 รุ่นยอดนิยม ผลิตโดยบริษัท Espressif จากประเทศจีน รองรับการเขียนโปรแกรมโดยใช้โปรแกรม Arduino IDE และรองรับไลบารี่ส่วนใหญ่ของ Arduino ทำให้สามารถใช้งานได้ง่าย นอกจากนี้ราคายังถูกลงเรื่อย ๆ ทำให้ได้รับความนิยมมากขึ้นเรื่อย ๆ เช่นเดียวกัน

 

https://www.ioxhop.com/article/62/esp32-%E0%B9%80%E0%B8%9A%E0%B8%B7%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%95%E0%B9%89%E0%B8%99-%E0%B8%9A%E0%B8%97%E0%B8%97%E0%B8%B5%E0%B9%88-1-%E0%B9%81%E0%B8%99%E0%B8%B0%E0%B8%99%E0%B8%B3-esp32

Sections: Miscellaneous
License: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
created: 23 July 2017 19:44 Modified: 23 July 2017 19:44 [ Report Abuse ]
ดอกไม้
People who like this: Ico24 ดำขำ.
People Who Like This
 
Facebook
Twitter
Google

Other Posts By This Blogger

ความเห็น

ไม่มีความเห็น

ร่วมแสดงความเห็นในหน้านี้

ชื่อ:
อีเมล:
IP แอดเดรส: 18.232.53.231
ข้อความ:  
เรียกเครื่องมือจัดการข้อความ
   
ยกเลิก หรือ