ESP-IDF ตอนที่ 1 ESP32 Get Started


วันนี้เราจะมาเรียนรู้การใช้งานบอร์ด DOIT ESP32 DEVKIT V1 กันนะครับ สำหรับใครที่ยังไม่รู้ว่าเจ้าบอร์ด ESP32 ที่เรากำลังพูดถึงอยู่เนี่ยหน้าตาเป็นยังไง แล้วมันใช้ทำอะไร สามารถเข้าไปดู้ข้อมูลเพิ่มเติมได้ที่บทความนี้ครับ ESP32 ไมโครชิพรุ่นจิ๋ว สำหรับงานพัฒนาด้าน Internet-of-Things (IoT)
        ในการใช้งานเจ้าบอร์ด ESP32 เราต้องมีเครื่องมือทีใช้ในการเขียนโปรแกรมและอัพโหลดโปรแกรมไปที่บอร์ด เครื่องมือที่เรานิยมใช้ในการพัฒนากันส่วนมากก็จะเป็น Arduino IDE ใช่ไหมล่ะครับ แต่การพัฒนาโปรแกรมโดยใช้ Arduino IDE สำหรับบอร์ด ESP32 นั้นยังมีข้อจำกัดในเรื่องของ Librarys ที่มีให้เราใช้งานซึ่งมันยังมีไม่ครบครับ ผู้เขียนได้มีโอกาสทดลองใช้งาน ESP-IDF และเห็นว่าทาง Espressif ได้พัฒนา Librarys มาให้เราใช้เยอะมากและที่สำคัญผู้เขียนได้ทดสอบแล้วนะครับสามารถใช้งานได้อย่างแน่นอน ความน่าสนใจของ ESP-IDF คือ เราสามารถใช้งาน Libraries ส่วนใหม่ๆ ที่ผู้พัฒนาทำขึ้นได้ก่อนใครๆ

สิ่งที่เราต้องใช้เพื่อพัฒนาแอพพลิเคชันสำหรับ ESP32
  • เครื่องคอมพิวเตอร์ที่ติดตั้งระบบปฏิบัติการ Linux
  • Toolchain สร้างแอพพลิเคชันสำหรับ ESP32 
  • API และ Libraries ของ ESP-IDF
  • โปรแกรมแก้ไขข้อความ Text Editor เช่น Atom , Sublime Text
  • บอร์ด DOIT ESP32 DEVKIT V1 ไมโครชิพรุ่นจิ๋ว
  • สายไมโคร USB ใช้สำหรับอัพโหลดโปรแกรม
รูปที่ 1 การพัฒนาแอพพลิเคชันสำหรับ ESP32

        เพื่อให้เราสามารถเขียนโปรแกรมและอัพโหลดโปรแกรมลงบอร์ด ESP32 ได้เราจำเป็นที่จะต้องติดตั้ง Toolchain และ ESP-IDF ลงบนคอมพิวเตอร์ของเราก่อนนะครับ
        ผู้เขียนได้ทดลองใช้งาน ESP-IDF บนระบบปฏิบัติการ Windows และ Linux แล้วพบว่าระบบปฏิบัติการ Windows จะใช้เวลาในการ Build ไฟล์นานมากเมื่อเทียบกับ Linux ซึ่งใช้เวลาแค่แปปเดียว ดังนั้นวันนี้เราจะติดตั้งโดยใช้ระบบปฏิบัติการ Linux กันนะครับ มาเริ่มกันเลย...

ขั้นตอนที่ 1 ติดตั้งแพคเกจที่จำเป็น สำหรับ Linux
        การใช้งาน ESP-IDF เราจำเป็นที่จะต้องติดตั้งแพคเกจที่อยู่ในชุดคำสั่งด้านล่างนี้ก่อน ซึ่งวิธีการติดตั้งก็ไม่ยากครับ ให้ก๊อปปี้คำสั่งด้านล่างนี้ไปวางในหน้าต่าง Terminal จากนั้นให้กด Enter ได้เลยนะครับ

sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial

โปรแกรมก็จะทำการดาวน์โหลดแพคเกจที่เราระบุมาติดตั้งให้ดังแสดงในรูปที่ 2


รูปที่ 2 ติดตั้งแพคเกจที่อยู่ในคำสั่ง Command line

ขั้นตอนที่ 2 ติดตั้ง Toolchain สำหรับ Linux ในการคอมไพล์และสร้างแอ็พพลิเคชัน
        การติดตั้ง Toolchain สำหรับ Linux ก่อนอื่นเลยเราต้องทำการดาวน์โหลดไฟล์ Toolchain มาไว้ที่เครื่องเราก่อนนะครับ ซึ่งสามารถดาวน์โหลดได้ที่ลิงค์ด้านล่างนี้ครับ

for 64-bit Linux: 

for 32-bit Linux: 

หลังจากดาวน์โหลดมาแล้วให้เราเปิดหน้าต่าง Terminal ขึ้นมาแล้วพิมพ์คำสั่งที่อยู่ด้านล่างนี้ครับเพื่อสร้างไดเร็กทอรี่ที่ชื่อว่า esp

mkdir -p ~/esp 

เมื่อเราสร้างไดเร็กทอรี่เสร็จแล้ว ให้เราเข้าไปในไดเร็กทอรี่ที่เราสร้างขึ้นโดยใช้คำสั่ง

cd ~/esp 

หลังจากเข้ามาแล้ว ให้เราทำการแตกไฟล์ Toolchain ที่ดาวน์โหลดมาไว้ในไดเร็กทอรี่ ~/esp โดยใช้คำสั่งที่อยู่ด้านล่างนี้ครับ

tar -xzf ~/Downloads/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz

พอเสร็จแล้ว ส่วนต่อมาเราต้องทำการอัพเดต PATH ในไฟล์ ~/.profile ให้กับ ~/esp/xtensa-esp32-elf/ โดยให้เราพิมพ์คำสั่ง 

nano ~/.profile

เราจะเข้าสู่หน้าต่างการแก้ไขข้อมูลไฟล์ PATH ให้เราทำการก๊อปปี้คำสั่งระบุ PATH ของ Toolchain ด้านล่างนี้ไปวางไว้บรรทัดล่างสุดในไฟล์ /.profile

export PATH="$PATH:$HOME/esp/xtensa-esp32-elf/bin"

วางเสร็จแล้วให้เราบันทึกข้อมูลโดยกดปุ่ม Ctrl + x ที่คีบอร์ดจากนั้นก็กด y เพื่อยืนยันการแก้ไขและเปลี่ยนแปลงข้อมูลในไฟล์ แล้วกด Enter อีกครั้งเพื่อบันทึกข้อมูล

เราสามารถที่จะตรวจสอบ PATH ที่เราตั้งค่าไว้โดยใช้คำสั่ง 

printenv PATH 

ถ้า PATH ที่เราตั้งค่าไว้ถูกต้อง ในข้อความที่แสดงขึ้นมาต้องมี PATH ที่อ้างอิงไปที่ xtensa-esp32-elf ถ้าของใคยังไม่ขึ้นให้ลองปิดหน้าต่าง Terminal แล้วเปิดขึ้นมาใหม่จากนั้นลองทดสอบดูอีกครั้งนะครับ

ขั้นตอนที่ 3 ดาวน์โหลด API และ Libraries ของ ESP-IDF
ให้เราเข้าไปที่ไดเร็กทอรี่ esp โดยใช้คำสั่ง 

cd ~/esp 

พอเข้ามาแล้วเราจะทำการดาวโหลด API และ Libraries ของ ESP-IDF โดยใช้คำสั่ง git clone ด้านล่างนี้ครับ

git clone --recursive https://github.com/espressif/esp-idf.git

ในขั้นตอนนี้อาจจะใช้เวลานานนิดหนึ่งนะครับ พอเสร็จแล้วให้เราพิมพ์คำสั่ง ls เพื่อแสดงข้อมูลไฟล์และไดเร็กทอรี่ เราจะเห็นไดเร็กทอรี่ที่ชื่อว่า esp-idf เพิ่มขึ้นมา ต่อมาเราจะมาทำการตั้งค่า PATH ให้กับ ESP-IDF ซึ่งเราจะต้องเข้าไปแก้ไขข้อมูลในไฟล์ ~/.bashrc โดยให้เราพิมพ์คำสั่งด้านล่างนี้ครับเพื่อเข้าไปแก้ไขข้อมูลในไฟล์

nano ~/.bashrc

จากนั้นให้เราทำการก๊อปปี้คำสั่งด้านล่างนี้ไปวางบรรทัดด้านล่างสุดของไฟล์ ~/.bashrc

export IDF_PATH=~/esp/esp-idf

วางเสร็จแล้วให้เราบันทึกข้อมูลโดยกดปุ่ม Ctrl + x ที่คีบอร์ดจากนั้นก็กด y เพื่อยืนยันการแก้ไขและเปลี่ยนแปลงข้อมูลในไฟล์ แล้วกด Enter อีกครั้งเพื่อบันทึกข้อมูล

เราสามารถที่จะตรวจสอบ PATH ที่เราตั้งค่าไว้โดยใช้คำสั่ง 

printenv IDF_PATH

ถ้า PATH ที่เราตั้งค่าไว้ถูกต้อง ในข้อความที่แสดงขึ้นมาต้องมี PATH ที่อ้างอิงไปที่ IDF_PATH ถ้าของใคยังไม่ขึ้นให้ลองปิดหน้าต่าง Terminal แล้วเปิดขึ้นมาใหม่จากนั้นลองทดสอบดูอีกครั้งนะครับ

ขั้นตอนที่ 4 ทำให้บอร์ด ESP32 แสดงข้อความ Hello World.
        ตอนนี้เราได้ติดตั้ง Toolchain  และ Libraries ของ ESP-IDF เรียบร้อยแล้ว เดี๋ยวเรามาทดสอบอัพโหลดไฟล์โปรแกรมตัวอย่างเพื่อทำให้บอร์ด ESP32 แสดงข้อความคำว่า Hello World ออกมาที่หน้าจอ Terminal กันนะครับ

การเชื่อมต่อ(Connect)
ให้เราเชื่อมต่อบอร์ด ESP32 เข้ากับคอมพิวเตอร์โดยใช้สายไมโคร USB หลังจากนั้นที่หน้าต่าง Terminal ให้เราพิมพ์คำสั่งด้านล่าง เพื่อตรวจสอบพอร์ตการเชื่อมต่อของบอร์ด ESP32

ls /dev/tty*

ให้สังเกตพอร์ตที่มีคำว่า USB นะครับ ของผู้เขียนแสดงเป็น ttyUSB0 ดังแสดงในรูปที่ 3 

รูปที่ 3 แสดงพอร์ตการเชื่อมต่อของบอร์ด ESP32

Note: กรณีมีการเชื่อมต่อ ESP32 หลายบอร์ด พอร์ตการเชื่อมต่อก็จะแสดงเป็น ttyUSB0 ttyUSB1 ttyUSB2 ... ในระบบปฏิบัติการ Linux ลำดับของหมายเลขพอร์ต USB ขึ้นอยู่กับลำดับการต่ออุปกรณ์นะครับ

        ส่วนต่อมานะครับ ให้เราเพิ่มชื่อผู้ใช้ที่เราล็อกอินเข้ามาลงในกลุ่ม dialout เพื่ออนุญาติให้อ่านและเขียนข้อมูลผ่านทาง Serial Port โดยให้เราก๊อปปี้คำสั่งที่อยู่ด้านล่างไปวางในหน้าต่าง Terminal แล้วก็กด Enter ได้เลยนะครับ

sudo usermod -a -G dialout $USER

การตั้งค่า(Configure)
ให้เราก๊อปปี้คำสั่งที่อยู่ด้านล่างนี้ไปวางในหน้าต่าง Terminal เพื่อเข้าไปในไดเรกทอรี่ตัวอย่าง ที่ชื่อว่า hello_world

cd esp/esp-idf/examples/get-started/hello_world/

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

make menuconfig

หากทำตามขั้นตอนก่อนหน้านี้อย่างถูกต้อง หน้าต่างดังแสดงในรูปด้านล่างควรปรากฏขึ้นมานะครับ

รูปที่ 4 หน้าแสดงการตั้งค่าต่างๆ

        จากรูปที่ 4 เราต้องกำหนดค่า Serial port ที่เราต้องการ Flash โปรแกรมลง โดยให้เราคลิกเลือกที่เมนู Serial flasher config พอเข้ามาแล้วเราจะเจอกับหน้าต่างโปรแกรมดังแสดงในรูปที่ 5

รูปที่ 5 หน้าต่างสำหรับตั้งค่า Serial flasher config

        ในหน้าต่างโปรแกรมรูปที่ 5 ให้เราเลือกที่ Default serial port จากนั้นกด Enter เพื่อเข้าไปกำหนดพอร์ตที่เราต้องการ Flash โปรแกรม ซึ่งจะแสดงหน้าต้างขึ้นมาให้เราแก้ไขข้อมูลหมายเลขพอร์ตดังแสดงในรูปที่ 6 ส่วนนี้ให้เรากำหนดให้ถูกต้องนะครับ ถ้าของใครเป็น ttyUSB0 ก็ไม่ต้องแก้ไขครับ

รูปที่ 6 หน้าต่างตั้งค่า Serial port 

Build and Flash
ที่หน้าต่าง Terminal เราจะทำการ Build ไฟล์โปรแกรมโดยใช้คำสั่ง 

make all

หลังจาก Build ไฟล์เสร็จเรียบร้อยให้เรา Flash โปรแกรมลงบอร์ด ESP32 โดยใช้คำสั่ง 

make flash

หลังจาก Flash โปรแกรมเสร็จ เราสามารถดูผลการทำงานของบอร์ด ESP32 ได้โดยใช้คำสั่ง

make monitor 

เราก็จะเห็นข้อความ Hello world แสดงออกมาที่หน้าต่าง Terminal

สำหรับวันนี้เราได้ติดตั้ง Toolchain และ Libraries ของ ESP-IDF เสร็จเรียบร้อยแล้ว ในบทความถัดไปเรามาลองทดสอบสั่งงาน GPIO ของบอร์ด ESP32 กันนะครับ สามารถติดตามต่อได้ในบทความถัดไป
        บทความนี้เขียนขึ้นมาโดยใช้ความรู้ความเข้าใจของผู้เขียน ที่เคยทำการศึกษาและทดลองใช้งานมา หากมีข้อเสนอแนะหรือข้อคิดเห็นอื่นๆ เพิ่มเติม สามารถเสนอแนะมาได้เลยนะครับ

แหล่งอ้างอิง
https://esp-idf.readthedocs.io/en/latest/index.html

สอบถามข้อมูลเพิ่มเติม
Facebook: รักการเขียนโค้ด ดอทคอม 
Tell: 091-4782789

ความคิดเห็น

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ทำ Web server เพื่อรับข้อมูลจาก Sensor และควบคุมอุปกรณ์ต่างๆ ตอนที่ 2 ส่งข้อมูลจากบอร์ด NodeMCU ขึ้น Web Server

การควบคุมมอเตอร์ Brushless ด้วย Arduino

เรียนรู้การออกแบบวงจรอิเล็กทรอนิกส์พื้นฐาน และใช้งานบอร์ด Arduino ตอนที่ 1 ทำความรู้จักกับโปรแกรม Tinkercad Circuits