บทความ ESPino32 ตอนที่ 2 การพัฒนา ESPino32 บนแพลตฟอร์ม Arduino

สารบัญ บทความ ESPino32

บทความ ESPino32 ตอนที่ 2 การพัฒนา ESPino32 บนแพลตฟอร์ม Arduino

        ในส่วนของซอฟต์แวร์ Espressif Systems ได้จัดเตรียมทางเลือกและเครื่องมือสำหรับใช้ร่วมกับการพัฒนาอุปกรณ์ด้วยชิพ ESP8266 และ ESP32 ตามความเหมาะสมและความต้องการแต่ละแอพพลิเคชัน ตัวอย่างเช่น

        ESP-SDK ชุด Software Development Kit มาตรฐานของทาง Espressif เอง ประกอบด้วยเครื่องมือในการพัฒนาและ API ในระดับที่ใช้เชื่อมต่อกับอุปกรณ์ มาพร้อม ไดรฟ์เวอร์ ไลบรารี รวมทั้งเทมเพลตและตัวอย่างที่จำเป็นสำหรับการใช้งาน รองรับการพัฒนาชิพ ESP8266 ในแบบ NonOS และแบบใช้ RTOS และรองรับการพัฒนาชิพ ESP32 ผ่านทาง ESP-IDF (Espressif IoT Development Framework) สามารถดูรายละเอียดเพิ่มเติมได้ที่ https://www.espressif.com/en/products/software/esp-sdk/overview และ https://esp-idf.readthedocs.io/en/latest

        ESP HomeKit SDK สำหรับนักพัฒนาที่สนใจจะพัฒนาให้ชิพทำงานร่วมกับ Apple HomeKit ดูรายละเอียดได้ที่ https://www.espressif.com/en/products/software/esp-homekit-sdk

        ESP-AT รองรับการใช้งานชิพหรือโมดูล ESP8266 และ ESP32 ผ่านทางคำสั่ง AT Command สามารถนำไปเป็นโมดูลสื่อสารให้กับอุปกรณ์ที่ออกแบบและพัฒนาให้เชื่อมต่อ Wi-Fi และ Bluetooth ได้
ดาวน์โหลดคู่มือและคำสั่งได้ที่ https://www.espressif.com/en/products/software/esp-at/overview

        ESP-MDF (Espressif Mesh Development Framework) โดยใช้ EDP-IDF เป็นพื้นฐาน เหมาะสำหรับนักพัฒนาที่ต้องการใช้ชิพ ESP32 แบบ Mesh Networking ในแอพพลิคั่นต่างๆ เช่น Smart lights  Lighting networks  Parking lots  Smart factories  Office automation  Smart switch  Smart socket  Smart lock เป็นต้น ดูรายละเอียดเพิ่มเติมได้ที่ https://www.espressif.com/en/products/software/esp-mesh/overview และ https://github.com/espressif/esp-mdf

        ESP-TOUCH ใช้งานร่วมกับ NonOS SDK และ RTOS SDK ของ ESP8266 และ ESP-IDF ของ ESP32 สำหรับการพัฒนาระบบ Smart Config กับอุปกรณ์ที่ไม่มีหน้าจอหรืออินเตอร์เฟสที่ใช้ในกำหนดค่าเชื่อมต่อเครือข่ายในการใช้งานครั้งแรก ให้สามารถทำได้ผ่านทางแอพพลิเคชันบน Android และ iOS ดูรายละเอียดได้ที่ https://www.espressif.com/en/products/software/esp-touch/overview

        ESP-NOW ใช้งานร่วมกับ NonOS SDK และ RTOS SDK ของ ESP8266 สำหรับแอพพลิเคชันที่ต้องการพัฒนาให้เชื่อมต่อไร้สาย 2.4 GHz แบบ connectionless ส่งข้อมูลขนาดเล็ก เหมาะกับงานควบคุม เช่น Smart lights  Remote control devices  Remote sensing เป็นต้น https://www.espressif.com/en/products/software/esp-now/overview

        นอกจากนี้ยังมีแพลตฟอร์มอื่นที่รองรับการพัฒนาชิพ ESP32 (และ/หรือ ESP8266) ตัวอย่างเช่น Mongoose OS (https://mongoose-os.com/) เป็น IoT Firmware Development Framework สามารถใช้งานได้กับไมโครคอนโทรลเลอร์หลายตระกูล ได้แก่ STM32F4 STM32F7 ESP32 ESP8266 CC3220 CC3200 โดยวางเป้าหมายกลุ่มนักพัฒนาสินค้าหรืออุปกรณ์เชื่อมต่อ (Connected products / devices) ในเชิงธุรกิจ สามารถอัพเดทเฟิร์มแวร์ของอุปกรณ์ได้แบบออนไลน์ (Over-The-Air) รองรับระบบ Cloud สำหรับธุรกิจทั้งจาก Amazon Microsoft  Google IBM Samsung หรือใช้งานร่วมกับเซิร์ฟเวอร์ MQTT  RESTful  Websocket ที่ตั้งขึ้นเองได้

        MicroPython (http://micropython.org/) พัฒนาขึ้นบนพื้นฐานของภาษา Python รุ่นที่ 3 ครอบคลุมไลบรารีพื้นฐานและปรับแต่งการทำงานให้เหมาะสมกับสภาพแวดล้อมบนไมโครคอนโทรลเลอร์ที่มีขนาดหน่วยความจำน้อยกว่าเมื่อเทียบกับคอมพิวเตอร์ ช่วยให้นักพัฒนาที่ถนัดและคุ้นเคยใช้ภาษา Python บนไมโครคอนโทรลเลอร์ได้ รองรับการพัฒนาทั้งบนชิพ ESP32 และชิพ ESP8266 ด้วยการอัพโหลดเฟิร์มแวร์พื้นฐานของ MicroPython ลงไปเพื่อรองรับการเขียนโค้ด Python

        Platform IO (https://platformio.org/) เป็น Open Source ที่รวบรวมองค์ประกอบในการพัฒนา IoT มีแพลตฟอร์มในการพัฒนาโปรแกรมบนระบบฝังตัวและคอมพิวเตอร์ที่ติดตั้งส่วนประกอบต่างๆ ในการพัฒนามาให้ครบถ้วนทั้ง Toolchain Debuggers Uploaders และ Frameworks รองรับไมโครคอนโทรลเลอร์หลายรุ่นหลายยี่ห้อรวมทั้งชิพ ESP8266 และ ESP32 มีกรอบการพัฒนาให้เลือกใช้ได้หลากหลาย รวมทั้งไลบรารี่และตัวอย่างการใช้งานจำนวนมากสามารถใช้งานได้ทุกระบบปฏิบัติการทั้ง Windows Linux และ Mac

        Arduino (https://www.arduino.cc/) เป็น Open Source Platform ทั้งฮาร์ดแวร์และซอฟต์แวร์ที่ใช้ในการทำต้นแบบรวมไปถึงงานด้านอิเล็กทรอนิกและระบบฝังตัวบนไมโครคอนโทรลเลอร์ ด้วยความต้องการให้ผู้ที่ไม่ได้อยู่ในสายงานวิศวกรรม เช่น ครู นักเรียน นักวิทยาศาสตร์ สถาปนิก นักออกแบบ ศิลปิน เป็นต้น สามารถเข้าถึงและใช้ประโยชน์จากไมโครคอนโทรลเลอร์ได้

        จุดมุ่งหมายของ Arduino คือ สร้างขึ้นมาให้เรียนรู้และใช้งานได้ง่าย สามารถสร้างต้นแบบหรือชิ้นงานได้รวดเร็ว อาศัยการเขียนโปรแกรมด้วยโครงสร้างภาษาและไวยากรณ์ที่ไม่ซับซ้อนมากจนเกินไปก็สามารถทำงานได้ และนอกจากฮาร์ดแวร์ที่ทาง Arduino ออกแบบขึ้นมาแล้ว ยังมีกลุ่มนักพัฒนาช่วยกันทำให้ฮาร์ดแวร์อื่นสามารถนำมาใช้งานกับ Arduino ได้ เพื่อให้ผู้ใช้งานเข้าถึงได้ง่ายโดยสร้าง Board Support Package (BSP) ให้นำมาติดตั้งเพิ่มเติมบน Arduino IDE แล้วก็จะสามารถเขียนโปรแกรมไมโครคอนโทรลเลอร์นั้นด้วย Arduino ได้

        ปัจจุบัน Arduino เองรองรับการพัฒนาไมโครคอนโทรลเลอร์หลายรุ่นหลายตระกูล ทั้ง AVR แบบ 8-bit เช่น Arduino Uno (ATmega328p) Arduino Mega 2560 (ATmega2560) Arduino Leonardo (ATmega32U4) เป็นต้น รวมทั้ง Arduino ที่เป็น 32-bit ชิพจาก Atmel ได้แก่ Arduino M0 (SAMD21) Arduino Due (SAM3X8E) และบอร์ดตระกูล Arduino MKR ที่ใช้ชิพ SAMD21 กับโมดูลสื่อสารต่างๆ เช่น Wi-Fi  Bluetooth  GSM  LoRa/LoRaWAN  Sigfox  NB-IoT เป็นต้น

        ส่วน Board Support Package จากภายนอกให้รองรับไมโครคอนโทรลเลอร์หรือไมโครคอมพิวเตอร์อื่น เช่น ESP8266  ESP32  LinkIt Smart 7688 Duo  STM8  STM32 เป็นต้น

การติดตั้ง Arduino IDE

1. เข้าไปที่เว็บไซต์ arduino.cc ในหัวข้อ Software > Downloads https://www.arduino.cc/en/Main/Software

2. เลือกดาวน์โหลดไฟล์ตามระบบปฏิบัติการที่ใช้ สำหรับ Windows ควรใช้ Windows 7 ขึ้นไป และแนะนำให้ใช้แบบ ZIP file for non admin install ที่แตกไฟล์แล้วใช้งานได้ทันที

*** ไม่แนะนำให้ใช้ตั้งแต่ Windows XP หรือเก่ากว่าอาจพบปัญหาเรื่องความยาวของชื่อไดเรกทอรีได้

– สำหรับ Mac ใช้งานได้ตั้งแต่ Mac OS X 10.7 ขึ้นไป แตกไฟล์แล้วลากไฟไว้ใน Application แล้วเรียกใช้งาน

– สำหรับ Linux ให้เลือกตรงกับรุ่นที่ใช้ว่าเป็น 32-bit 64-bit สำหรับคอมพิวเตอร์ x86 / x86-64 หรือเลือก ARM หากใช้บนบอร์ด Embedded OS ที่ใช้ซีพียู ARM อย่าง Raspberry Pi แตกไฟล์แล้วใช้งานได้ทันที

* ไม่แนะนำให้ใช้ตัวติดตั้งที่เป็น Hourly Builds เนื่องจากเป็นตัว BETA อาจเปิดปัญหากับการใช้งาน

3. ดาวน์โหลดแล้วจะได้ไฟล์ arduino-1.8.5.zip-windows ขนาด 160 MB ให้แตกไฟล์เป็นไดเรกทอรี arduino-1.8.5 ขนาดประมาณ 420 MB แนะนำให้วางไว้ด้านนอกสุดของไดรฟว์หรือพาร์ติชัน ตัวอย่างเช่น C:\ arduino-1.8.5 หรือ D:\arduino-1.8.5 โดยภายในจะมีโครงสร้างดังรูป

4. เปิดโปรแกรม Arduino IDE จากไฟล์ ไฟล์ arduino.exe 

*** หากติดปัญหาการเปิดโปรแกรม Arduino IDE ไม่ได้ ให้ตรวจสอบว่าได้ติดตั้ง Java 2 Runtime Environment (J2RE) ไว้หรือไม่ หากยังไม่ติดตั้งสามารถดาวน์โหลดได้จาก https://java.com/en/download/

5. หากมีหน้าต่าง Windows Security Alert แสดงขึ้นมา ให้กดปุ่ม Allow access ยอมรับให้โปรแกรมใช้งานผ่านเครือข่ายได้ด้วย

6. หน้าต่างโปรแกรม Arduino IDE แสดงส่วนสำหรับการเขียนโค้ดโปรแกรม (Code Editor)

การติดตั้งชุดพัฒนา ESPino32 บนแพลตฟอร์ม Arduino

        การพัฒนา ESPino32 ด้วย Arduino จะใช้ชุดพัฒนา arduino-esp32 ที่ทาง Espressif Systems จัดทำขึ้นมา อยู่บนพื้นฐานของ ESP-IDF สามารถเข้าไปดูรายละเอียดได้ที่ https://github.com/espressif/arduino-esp32  โดยมีนักพัฒนาที่เชี่ยวชาญตั้งแต่การพัฒนา Arduino สำหรับ ESP8266 มาเป็นแกนหลัก ร่วมกับนักพัฒนาบอร์ด ESP32 รุ่นต่างๆ และผู้พัฒนาซอฟต์แวร์ไลบรารี่เข้าเป็น contributors กว่า 130 ชื่อผู้ใช้ ชุดพัฒนา Arduino-esp32 ปล่อยให้ดาวน์โหลดไปทดสอบและใช้งานมาอย่างต่อเนื่องโดยติดตั้งผ่านการดาวน์โหลดไฟล์ตั้งต้นและรันสคริปต์ติดตั้งคอมไพล์เลอร์เพิ่มเติม

        ปัจจุบัน (ก.ค. 2018) ชุดพัฒนาได้ออก Stable Release v1.0.0 ที่สามารถติดตั้งผ่าน Board Manager ได้เพื่อความสะดวกในการใช้งานและอัพเดท มีบอร์ด ESP32 ในลิสต์กว่า 40 บอร์ด รวมถึงบอร์ด ESPino32 ที่ ThaiEasyElec ได้คอมมิทเข้าไปไว้ในชุดพัฒนาเพื่อให้ติดตั้งไปพร้อมกันได้

การติดตั้ง arduino-esp32 ผ่าน Board Manager ทำได้ดังนี้

1. เลือกเมนู File > Preferences หรือกดคีย์ลัด Ctrl + Comma

2. ในช่อง Additional Boards Manager URLs ใส่ https://dl.espressif.com/dl/package_esp32_index.json แล้วกดปุ่ม OK เพื่อบันทึกและปิดหน้าต่าง Preferences

3. เลือกเมนู Tools > Board:…. > Boards Manager

4. เมื่อหน้าต่าง Boards Manager ปรากฎขึ้นมา รอให้โปรแกรมดาวน์โหลดอัพเดทรายการของบอร์ดสักครู่ จากนั้นพิมพ์ค้นหา esp32 ลงในช่องจะแสดงรายการ esp32 by Espressif Systems ให้เลือกแล้วกดปุ่ม Install

5.รอสักครู่ให้โปรแกรมดาวน์โหลดและติดตั้ง packages ของ esp32

6. เมื่อติดตั้งเสร็จแล้วจะขึ้นเวอร์ชั่นที่ติดตั้งและแสดงสถานะ INSTALLED สีเขียว กดปุ่ม Close

7. ในเมนู Tools > Board:… จะแสดงรายการของบอร์ด ESP32 ขึ้นมา ให้เลือกเป็น ThaiEasyElec’s ESPino32

การติดตั้งไดรฟเวอร์ USB-to-UART บอร์ด ESPino32

        บอร์ด ESPino32 ใช้ USB-to-UART ของ Silicon Labs เบอร์ CP2104 สามารถดาวน์โหลดและติดตั้งไดรฟเวอร์ได้ตามขั้นตอนดังนี้

1. ไปที่เว็บไซต์ https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

2. สำหรับ Windows 10 ให้เลือกตัว Windows 10 Universal เลือก Download VCP (2.3 MB)

สำหรับ Windows 7 / 8 / 8.1 เลือก Download VCP (5.3 MB) (Default)

สำหรับ Mac OS X หรือ macOS เลือก Download VCP (832 KB)

เมื่อรันติดตั้งบน macos Sierra หรือ High Sierra เรียบร้อยแล้ว ให้เข้าไปใน System Preferences > Security & Privacy แล้ว Allow ให้ไดรฟเวอร์ทำงานด้วย

สำหรับ Linux ส่วนใหญ่ในปัจจุบันที่เป็น Kernel 3.xx หรือ 4.xx ขึ้นไปจะมี Driver ติดมาอยู่แล้ว หากไม่มีสามารถดาวน์โหลด Source Code ไปคอมไพล์และติดตั้งได้ตาม Kernel ที่ใช้งาน

3. เมื่อติดตั้งไดรฟเวอร์เรียบร้อยแล้วเสียบสาย micro USB เข้ากับคอมพิวเตอร์ บอร์ดจะแสดงเป็น COM Port ใน Devices Manager

4. ใน Arduino IDE เมนู Tools > Port เลือก Serial ports ให้ตรงกับพอร์ตที่แสดงขึ้นมา

สารบัญ บทความ ESPino32