บทความนี้เป็นบันทึกช่วยจำในการติดตั้งซอฟต์แวร์สำหรับ Ubuntu / WSL (Windows Subsystem for Linux) ในเครื่องคอมพิวเตอร์ที่ใช้ Windows 10 (64 บิต) และใช้สำหรับการคอมไพล์ซอร์ซโค้ดของ MicroPython และเลือกบอร์ดเป้าหมายเป็นบอร์ด ESP32
ในกรณีที่เราต้องการลองดัดแปลงแก้ไขซอร์ซโค้ด (Source Code) หรือจะลองทำขั้นตอน Build Firmware จากซอร์ซโค้ดของ MicroPython ที่ได้ใช้คำสั่ง git clone มาจาก Github ก็ต้องติดตั้งเครื่องมือหรือโปรแกรมที่จำเป็นสำหรับ Windows, Linux, Mac OS
ถัดไปเป็นขั้นตอนสำหรับ Ubuntu ที่อ้างอิงจาก:
https://github.com/micropython/micropython/tree/master/ports/esp32
- ติดตั้งคำสั่งสำหรับ Ubuntu (ในกรณีอาจไม่ได้ติดตั้งใช้งานมาก่อน)
$ sudo apt-get install git python3 python3-pip python3-setuptools python3-venv$ sudo python -m pip install --upgrade virtualenv==16.7.9
2. ดาวน์โหลดซอร์ซโค้ดของ MicroPython จาก Github ด้วยคำสั่ง git
ในตัวอย่างนี้ เราจะนำมาเก็บไว้ในไดเรกทอรี $HOME/micropython
$ cd $HOME$ git clone https://github.com/micropython/micropython.git
3. ขั้นตอนถัดไป จะต้องตรวจสอบค่า git hash ตามที่ผู้พัฒนา MicroPython ได้ทดลองใช้และทดสอบโค้ด
$ cd $HOME/micropython/ports/esp32$ make ESPIDF=
เมื่อทำคำสั่งดังกล่าวแล้ว จะเห็นข้อความ (ตัวอย่าง) ในลักษณะนี้
Supported git hash (v3.3): 9e70825d1e1cbf7988cf36981774300066580ea7
Supported git hash (v4.0): 463a9d8b7f9af8205222b80707f9bdbba7c530e1
จากข้อความที่ปรากฎ จะเห็นได้ว่า MicroPython สำหรับ ESP32 มีตัวเลือกเครื่องมือในการพัฒนาคือ ESP-IDF v3.3 และ ESP-IDF v4.0 (Experimental) และให้เราสังเกต git hash ในแต่ละเวอร์ชัน
ในบทความนี้ เราจะเลือกใช้ ESP-IDF v4.0 ดังนั้น เราจะต้องกำหนดค่า git hash ให้ตรงกับเวอร์ชันดังกล่าว
ทำคำสั่งต่อไปนี้ เพื่อดาวน์โหลดซอร์ซโค้ดของ ESP-IDF v4.0
$ export ESPIDF=$HOME/esp/esp-idf$ mkdir -p $ESPIDF$ cd $ESPIDF# clone ESP-IDF 4.x repository
$ git clone https://github.com/espressif/esp-idf.git $ESPIDF$ git checkout 463a9d8b7f9af8205222b80707f9bdbba7c530e1$ git submodule update --init --recursive
ถัดไปให้ทำคำสั่งต่อไปนี้ เพื่อดาวน์โหลดและติดตั้ง Tools ต่าง ๆ ที่จำเป็นต้องใช้โดยอัตโนมัติ (จะถูกนำมาใส่ไว้ในไดเรกทอรี $HOME/.espressif/
) เช่น Xtensa Toolchain และ OpenOCD for ESP32 เป็นต้น
$ ./install.sh
ลำดับถัดไป ให้ทำคำสั่งต่อไปนี้ เพื่อให้เราสามารถเรียกใช้คำสั่งสำหรับ ESP32 Tools ที่ได้ติดตั้ง
$ source $ESPIDF/export.sh
4. ติดตั้งและเปิดใช้งาน Virtual Python Environment ในไดเรกทอรีของ MicroPython สำหรับ ESP32 Port และติดตั้งโมดูลสำหรับ Python3 ที่จำเป็น โดยทำคำสั่งต่อไปนี้
$ cd $HOME/micropython/ports/esp32$ PYTHON=python3# install Python 3 virtual environment tool
$ python3 -m venv build-venv# activate Python3 virtual environment
$ source build-venv/bin/activate$ pip install --upgrade pip$ pip install -r $HOME/esp/esp-idf/requirements.txt
5. คอมไพล์ซอร์ซโค้ดสำหรับ MicroPython Cross Compiler ดังนี้
$ cd $HOME/micropython/mpy-cross
$ make
6. ทำคำสั่ง make
เพื่อคอมไพล์ซอร์ซโค้ดให้ได้ไฟล์สำหรับเฟิร์มแวร์ชื่อ firmware.bin
สำหรับ ESP32 (Generic) ซึ่งหมายถึง บอร์ดที่ไม่มี SPIRAM ภายนอก
$ cd $HOME/micropython/ports/esp32
$ make clean
$ make submodules
$ make BOARD=GENERIC
เมื่อทำสำเร็จ เราจะได้ไฟล์ firmware.bin
ในไดเรกทอรี ./build-GENERIC
ถ้าต้องการสร้างไฟล์สำหรับ ESP32 SPIRAM ก็ทำคำสั่งต่อไปนี้
$ make BOARD=GENERIC_SPIRAM
ใน Terminal ของ WSL Ubuntu เราจะมองไม่เห็น USB ดังนั้น ถ้าจะทำขั้นตอนอัปโหลดไฟล์ .bin ไปยังบอร์ด ESP32 เราจะเปลี่ยนไปทำคำสั่ง โดยใช้ esptool.py ใน Windows 10 ซึ่งจะทำงานได้ ก็ต้องมีการติดตั้ง Python ใน Windows ไว้แล้ว
สมมุติว่า เราต้องการสำเนาไฟล์ firmware.bin
ไปยัง C:/Work/MicroPython_ESP32
ให้ทำคำสั่งดังนี้
# copy file from WSL Ubuntu to Windows 10 Directory$ cp build-GENERIC/firmware.bin /mnt/c/Work/Micropython_ESP32/
ให้เสียบบอร์ด ESP32 เข้าที่พอร์ต USB เชื่อมต่อกับคอมพิวเตอร์ จากนั้นเปิด Windows Command Shell (cmd.exe) แล้วลองทำคำสั่งต่อไปนี้
> python -m esptool flash_id
ถ้าใน Windows ยังไม่มี Python ก็ให้ติดตั้ง Python 3 for Windows (ดาวน์โหลดไฟล์สำหรับการติดตั้ง) แล้วทำคำสั่งเพื่อติดตั้งโปรแกรม esptool
> python -m pip install --user esptool
เมื่อสามารถใช้คำสั่ง esptool เชื่อมต่อกับบอร์ด ESP32 ได้แล้ว ทำคำสั่งเคลียร์หรือลบหน่วยความจำ Flash แล้วตามด้วยคำสั่งเขียนข้อมูลจากไฟล์เฟิร์มแวร์ ไปยังหน่วยความจำ Flash ของ ESP32
> esptool --chip esp32 --baud 460800 erase_flash> esptool --chip esp32 --baud 460800 write_flash -z 0x1000 firmware.bin
โดยสรุป เราได้เรียนรู้ขั้นตอนการติดตั้งโปรแกรมต่าง ๆ ภายใต้ระบบปฏิบัติการ Ubuntu / WSL on Windows10 ที่จำเป็นสำหรับการทำขั้นตอน Build Firmware จากซอร์ซโค้ดของ MicroPython เพื่อให้ได้ไฟล์ที่เป็นเฟิร์มแวร์สำหรับบอร์ด ESP32