เชื่อว่าผู้อ่านหลายท่านคงได้ยินชื่อ ESP32 หรืออาจจะเคยลองเล่นบ้างแล้ว ESP32 เป็นผลิตภัณฑ์ใหม่จากบริษัท Espressif ผู้ผลิต ESP8266 ที่ได้รับความนิยมอย่างมากในปัจจุบัน โดยชิพตัวใหม่นี้มีคุณสมบัติที่เหนือกว่าหลายประการเช่น สามารถพัฒนาการสื่อสารทั้ง WiFi และ Bluetooth มีจำนวน ADC มากกว่า มีเอาต์พุต DAC มี 2 cores ฯลฯ วัตถุประสงค์ของบทความนี้มิใช่เป็นการลงรายละเอียดด้านฮาร์ดแวร์ของ ESP32 แต่เพียงเพื่อแนะนำการติดตั้งและแก้ปัญหาสำหรับผู้เริ่มใช้งานใหม่ ณ เวลาปัจจุบันที่เขียนนี้ (พย. 2560) ทั้งนี้เนื่องจากไลบรารีที่เกี่ยวข้องกับ ESP32 ยังอยู่ระหว่างการพัฒนาทำให้อาจเกิดปัญหาความเข้ากันไม่ได้ของซอฟต์แวร์ ซึ่งคงจะถูกปรับปรุงแก้ไขให้ดีขึ้นในอนาคต มีแหล่งข้อมูลหลายที่ที่กล่าวถึงการติดตั้งไลบรารีและเครื่องมือสนับสนุนของ ESP32 เพื่อให้ใช้งานได้กับ Arduino IDE ตัวผู้เขียนได้ใช้วิธีที่นำเสนอในหนังสือ “การใช้งาน ESP32 เบื้องต้น” เรียบเรียงโดย สนธยา นงนุช ซึ่งเป็นหนังสือเกี่ยวกับ ESP32 ที่ดีมากเล่มหนึ่ง ท่านสามารถหาข้อมูลได้จากเว็บ www.ioxhop.com ซึ่งมีผลิตภัณฑ์บอร์ด ESP32 จากหลายบริษัทจำหน่ายด้วย ดังนั้นในบทความนี้จะไม่กล่าวถึงการติดตั้งโดยละเอียด แต่จะเน้นตรงส่วนการแก้ปัญหาเพื่อให้ท่านสามารถใช้งาน NETPIE ได้ สำหรับไลบรารี microgear ที่ช่วยให้ ESP32 ใช้งานร่วมกับ NETPIE ได้นั้น ขณะที่เขียนบทความนี้ยังไม่มีไลบรารีอย่างเป็นทางการจากทีมพัฒนา NETPIE แต่เราสามารถจะใช้ไลบรารี ESP32_Microgear “แล่มเลย” ที่พัฒนาโดยคุณ ณรงค์ ประสารศักดิ์ ซึ่งผู้เขียนได้ทดลองใช้เบื้องต้นแล้วพบว่าใช้งานได้ดี โดยเมื่อติดตั้งไลบรารีให้ทำงานได้แล้ว ทางด้านของ NETPIE คือ application ID , keys, secrets, freeboard, feed และการตั้งค่าใน widgets ต่างๆ ไม่ต้องมีการแก้ไขใดๆ รวมถึงฟังก์ชันของ microgear ที่เคยใช้กับ ESP8266 ก็ใช้งานได้ทันทีไม่ต้องแก้โค้ด ส่วนที่ต้องแก้คือการใช้โมดูลและขาเอาต์พุตแอนะล็อก และส่วนการใช้ไทเมอร์ที่แตกต่างจาก ESP8266 ในบทความนี้จะอธิบายเฉพาะส่วนการติดตั้งไลบรารีของ ESP32 และ ESP32_Microgear “แล่มเลย” และการแก้ปัญหาหากไม่ทำงาน ในอนาคตหวังว่าท่านคงจะไม่ต้องย้อนมาอ่านบทความนี้อีกแล้วเมื่อปัญหาต่างๆ ถูกปรับปรุงแก้ไขและมีคู่มือที่สมบูรณ์จากผู้พัฒนาในแต่ละส่วน
ฮาร์ดแวร์ ESP32 ที่หาได้ง่าย
มีหลายบริษัทที่ผลิตบอร์ด ESP32 แต่จะแสดงเฉพาะที่หาได้ง่ายในประเทศไทย จากซ้ายมาขวาในรูปที่ 1 และ 2 ได้แก่ ESP32 DevKit V1 โดย www.doit.am, NodeMCU ESP-32S, และ WEMOS Lolin 32 ได้ทดสอบเบื้องต้นแล้วแล้วพบว่าใช้งานได้ดีทั้ง 3 บอร์ด ส่วนตัวผู้เขียนชอบการออกแบบของ LOLIN32 ที่ขาคอนเนกเตอร์ไม่สมมาตร เป็นตัวช่วยบังคับทิศทางไม่ให้ผู้ใช้เสียบกลับด้านในกรณีนำไปใช้กับวงจรอื่นที่ออกแบบบน PCB ดังนั้นในบทความนี้จะทดลองกับ LOLIN32 หากท่านใช้ผลิตภัณฑ์อื่นก็เพียงแต่เลือกจากเมนูให้ตรงกับบอร์ดที่ใช้เท่านั้นเองขา GPIO # | ฟังก์ชัน | ต่อกับ |
---|---|---|
39 | ADC3 | เอาต์พุต y ของวงจร LAG3 |
22 | SCL | I2C ของ OLED |
21 | SDA | I2C ของ OLED |
19 | PWM | Red LED |
18 | PWM | Green LED |
17 | PWM | Blue LED |
16 | PWM | เอาต์พุตตัวควบคุมแบบ PWM |
25 | DAC1 | เอาต์พุตตัวควบคุมแบบ DAC |
5 | Digital Output | LED บนบอร์ด LOLIN32 |
ติดตั้ง Arduino Core สำหรับ ESP32
ก่อนที่จะเริ่มพัฒนาบน ESP32 โดยใช้ Arduino IDE เราต้องติดตั้งส่วนที่เรียกว่า Arduino Core สำหรับ ESP32 โดยจะไปเก็บไว้ใน /Documents/Arduino/hardware ในหนังสือ การใช้งาน ESP32 เบื้องต้น โดยสนธยา นงนุช ได้อธิบายการติดตั้งไว้โดยละเอียดในบทที่ 4 ซึ่งสามารถอ่านออนไลน์ได้ที่ ลิงก์ของ ioxhop.com ในที่นี้ตั้งสมมุติฐานว่าท่านติดตั้ง Arduino IDE แล้ว การติดตั้ง Arduino Core สำหรับ ESP32 สรุปขั้นตอนได้คือ-
. ติดตั้งโปรแกรม Git Bash ที่จะช่วยในการดึงซอฟต์แวร์ล่าสุดมาใส่ในเครื่องคอมพิวเตอร์ของเรา
รัน Git Bash และพิมพ์คำสั่งเพื่อติดตั้งไฟล์ทั้งหมด จากตัวอย่างนี้จะรวมอยู่ที่ /Documents/Arduino/hardware/espressif/esp32
เข้าไปที่ไดเรคทอรีย่อย tools และคลิกรัน get.exe เพื่อติดตั้งคอมไพเลอร์และเครื่องมือต่างๆ
ปัญหาสำหรับผู้เคยติดตั้ง ESP32 Arduiono Core ก่อนหน้านี้
หากท่านเคยเล่น ESP32 มาพักหนึ่งแล้วและติดตั้ง Arduino Core มาก่อนหน้านี้ อาจจะต้องอัพเดทไฟล์ทั้งหมดใหม่มิฉะนั้นจะเกิดปัญหาใช้ ESP32 Microgear ไม่ได้ วิธีการเช็คง่ายๆ คือเข้าไปที่ /Documents/Arduino/hardware/espressif/esp32/libraries และดูว่ามีไดเรคทอรี่ย่อย EEPROM อยู่ดังในรูปที่ 6 หรือไม่
$ mkdir ./Documents/Arduino/hardware/espressif -p&&cd ./Documents/Arduino/hardware/espressif&&git clone https://github.com/espressif/arduino-esp32.git esp32
หลังจากนั้นเข้าไปที่ไดเรคทอรีย่อย tools และคลิกรัน get.exe เพื่อติดตั้งเครื่องมือดังในรูปที่ 8 - 10
แก้ไขโปรแกรมบน ESP8266 เดิม
เราต้องการทดสอบตัวอย่างเดิมเดิมกับฮาร์ดแวร์ใหม่ ขั้นตอนที่ต้องแก้ไขโปรแกรมมากที่สุดคือการปรับให้ตัวควบคุมป้อนกลับเดิมที่เขียนสำหรับ ESP8266 ทำงานได้บน ESP32 ซึ่งมีรายละเอียดมากเกินกว่าจะเขียนเป็นบทความสั้นได้ จึงจะรวบรวมไว้ในหนังสือในอนาคต หลักๆ ที่ต้องแก้ไขคือ-
ณ เวลาที่เขียนนี้ ESP32 ไม่มีฟังก์ชัน analogWrite() ต้องใช้ฟังก์ชัน ledcWrite() หรือ dacWrite() แทน
การตั้งค่าและใช้งาน timer แตกต่างจาก ESP8266 โดยสิ้นเชิง และ ณ ปัจจุบันไม่สนับสนุนการใช้ FPU ดังนั้นจะไม่สามารถใช้ตัวแปรแบบ float ในไทเมอร์ได้ ต้องเปลี่ยนเป็นแบบ double ที่ใช้ซอฟต์แวร์
ไลบรารีของ Adafruit OLED ต้องเปลี่ยนเป็นที่ใช้งานได้กับ ESP32 และการแสดงผลยังไม่ดีนักเมื่อเทียบกับไลบรารี ESP8266 (ฟอนต์ตัวใหญ่ทำให้ได้จำนวนบรรทัดน้อยลง ไม่ทราบว่าปัจจุบันปรับปรุงแล้วหรือยัง)
ติดตั้งไลบรารี “แล่มเลย”
ระหว่างที่รอ official Microgear library จากทีมพัฒนา NETPIE ตอนนี้เราสามารถใช้ไลบรารี ESP32_Microgear “แล่มเลย” โดยคุณณรงค์ ประสารศักดิ์ ซึ่งทดสอบแล้วว่าสามารถใช้งานได้ดีโดยไม่ต้องแก้ไขโค้ดในส่วน NETPIE จากที่ใช้ ESP8266 เดิม ซึ่งถ้าท่านได้อัพเดท Arduino Core สำหรับ ESP32 ตามที่ได้กล่าวถึงก่อนหน้านี้แล้ว การติดตั้งในส่วนนี้จะไม่เป็นปัญหาแต่อย่างใด หมายเหตุ: เพื่อลดจำนวนข้อความที่ต้องพิมพ์ในเนื้อหา นับแต่นี้ต่อไปเมื่อพูดถึง ESP32 Microgear จะหมายถึงไลบรารีของ “แล่มเลย” เริ่มต้นเราเข้าไปที่ github ของ lamloei/ESP32_Microgear ที่ลิงก์ https://github.com/lamloei/ESP32_Microgear หน้าตาดังในรูปที่ 13 คลิกที่ปุ่ม [Clone or download] สีเขียวทางด้านขวาและเลือก [Download ZIP] เราจะได้ไฟล์ ESP32_Microgear-master.zip มาที่เครื่องเรา (ปกติจะอยู่ในไดเรคทอรี Download)ทดสอบการติดต่อกับ NETPIE ขั้นพื้นฐาน
เมื่อติดตั้งไลบรารี ESP32 Microgear แล้ว เริ่มทดสอบขั้นพื้นฐานโดยใช้โปรแกรม basic.ino ที่อยู่ในไดเรคทอรีย่อย examples อย่าลืมแก้ไขข้อมูลตรงส่วนต้นโปรแกรม คือ ssid และ password ของ WiFi ที่เราใช้ และ APPID, KEY, SECRET ให้ตรงกับที่เราสร้างไว้ใน NETPIE คอมไพล์และโหลดโปรแกรม ถ้าคอมไพล์ไม่ผ่านและแสดง error ว่าหา EEPROM.h ไม่พบ แสดงว่ายังไม่ได้อัพเดท Arduino Core ให้กลับไปอ่านหัวข้อ “ปัญหาสำหรับผู้ติดตั้ง ESP32 Arduino Core ก่อนหน้านี้” ด้านบน ถ้าคอมไพล์และโหลดโปรแกรมสำเร็จ เปิด serial monitor จะเห็นว่าสามารถเชื่อมต่อกับ NETPIE ได้โดยมีข้อความลักษณะเหมือนที่แสดงในรูปที่ 16-
ถ้าขึ้น starting และมี . . . แสดงขึ้นเรื่อยๆ แต่ไม่ขึ้น WiFi connected ซะที ปัญหาจะอยู่ที่เชื่อมต่อ WiFi ไม่ได้ ลองเช็คว่า ssid กับ password ถูกต้องหรือไม่ หรือบางทีสัญญาณ WiFi นั้นไม่แรงพอ อาจจะสร้าง WiFi hotspot ขึ้นชั่วคราวจากมือถือแทน
ถ้าขึ้น WiFi connected และแสดง IP address หลังจากนั้นนิ่ง แสดงว่าเชื่อมต่อกับ NETPIE ไม่ได้ ให้ตรวจสอบว่า APPID, KEY, SECRET ตรงกับที่เราสร้างไว้ในบัญชี NETPIE หรือไม่ ถ้าข้อมูลถูกต้อง ปัญหาอาจเกิดจากไลบรารีไม่อัพเดต ให้ย้อนกลับไปอ่านหัวข้อ “ปัญหาสำหรับผู้ติดตั้ง ESP32 Arduino Core ก่อนหน้านี้” ด้านบน
No comments:
Post a Comment