ESP32
ESP32 เบอ้ื งตน้ รูปท่ี 1.1 หน้าตาของชปิ ไอซี ESP32 ในรปู ตวั ถงั QFN-42 ESP32 เปน็ ชปิ ไมโครคอนโทรลเลอร์ที่มาพร้อม WiFi มาตรฐาน 802.11 b/g/n และบลูทูธเวอร์ชั่น 4.2 เป็น รุ่นต่อยอดความสาเรจ็ ของ ESP8266 โดยในร่นุ น้ีไดอ้ อกมาแกไ้ ขข้อเสียของ ESP8266 ทงั้ หมด ESP32 มลี ะเอียด ดังน้ี ๑. ซพี ยี ูใชส้ ถาปตั ยกรรม Tensilica LX6 แบบ 2 แกนสมอง สัญญาณนาฬิกา 240MHz ๒. มแี รมในตัว 512KB ๓. รองรับการเช่ือมต่อรอมภายนอกสูงสดุ 16MB ๔. WiFi มาตรฐาน 802.11 b/g/n รองรับการใชง้ านทั้งในโหมด Station softAP และ Wi-Fi direct ๕. Bluetooth รองรบั การใช้งานในโหมด 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 ประวตั คิ วามเป็นมาของ ESP32 ก่อน ESP32 มีไอซีไมโครคอนโทรลเลอร์ท่ีมี WiFi ในตัว และราคาถูกมาก ๆ ในขณะน้ัน (เพียง $5 หรือ ประมาณ 200 บาท) ออกมาปฏิวัติโลกของระบบสมองกลฝังตัว นั่นก็คือไอซีเบอร์ ESP8266 ที่ผลิตโดยบริษัท Espressif จากประเทศจนี ในชว่ งเร่มิ แรก ไอซี ESP8266 สามารถทางานได้โดยใช้การสือ่ สารผา่ น UART เท่าน้ัน และ พูดคุยสั่งงานผ่าน AT command ไม่สามารถอัพเดท หรือแก้ไขเฟิร์มแวร์ด้านในได้ แต่ต่อมาไม่นานบริษัท Espressif กไ็ ดอ้ อกไอซเี วอร์ชน่ั ใหม่ ในครง้ั นีส้ ามารถทีจ่ ะอัพเดทเฟิร์มแวร์ได้ และเราสามารถลงไปเขียนเฟิรม์ แวร์เองได้
-๓- โดยในขณะนั้น การเขียนเฟิร์มแวร์จะใช้ภาษา C เพียงอย่างเดียว และใช้ ESP8266 SDK เป็นชุดซอฟแวร์พัฒนา ดว้ ยความยากของการใช้งานภาษา C เพยี งอย่างเดยี ว ทาใหไ้ ม่ได้รับความนิยมเรอื่ งการพัฒนาเฟริ ม์ แวรเ์ องมากนกั รูปที่ 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 ทุกประการ จงึ เร่มิ ส่งมอบสินค้าได้
-๖- รปู ที่ 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 รูปท่ี 1.8 หน้าตาบอรด์ พฒั นา DOIT ESP32 Development Board
-๙- MicroPython-ESP32 รปู ที่ 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 รูปที่ 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 อีกดว้ ย ท่มี าข้อมลู : https://www.ioxhop.com/article/62/esp32-เบื้องต้น-1-แนะนา-esp32
Search
Read the Text Version
- 1 - 11
Pages: