[ESP8266] - How to compile custom firmware for ESP8266

Standard



หลังจาก Espressif ผู้ผลิตโมดูล ESP8266 ได้ปล่อย SDK ของโมดูลตัวนี้ออกมาพร้อมกับ VM พักใหญ่ ๆ แล้ว  ก็มีโอกาสได้ลองเล่นดูนิดหน่อยครับ  แต่กว่าจะมีเวลามาเขียนบล็อคหลาย ๆ คนก็น่าจะลองเล่นกันไปแล้ว ฮ่า ๆ  เอาเป็นว่ามาช้ายังดีกว่าไม่มาละกัน    บทความนี้จะมาพูดถึงการ Compile Code ด้วย VM ซึ่งเป็นวิธีที่ง่ายและรวดเร็ว  หรือใครไม่อยากใช้ VM ก็สามารถลง Toolchain เองได้ครับ  พร้อมแล้วมาเริ่มกันเลย

เตรียมไฟล์สำหรับใช้งาน

1. ไฟล์ Image สำหรับ Virtual Box  Download
2. ไฟล์ SDK Download 

Import VM

1. ติดตั้ง Virtual Box ให้เรียบร้อยแล้วกำหนดค่า Default Machine Folder ใน Virtual Box ให้เป็น Folder ที่เราต้องการ  

2. Imort ไฟล์ .ova  ที่ดาวน์โหลดมา โดยไปที่ Menu File >> Import Appliance

3. โปรแกรมจะแสดงรายละเอียด VM ที่เราจะ Import ไม่ต้องแก้ไขอะไร กด Import ได้เลย

4. รอให้ Virtual Box Import เสร็จ

5. หลังจากนั้นจะมี VM เพิ่มขึ้นมา  ปกติเห็นแค่ VM เดียวนะครับ  ในรูปมี 2 VM เพราะ ผม Import เข้าไปเพิ่มเพื่อ Capture รูปครับ

6. กำหนด Share folder  ขั้นตอนนี้ค่อนข้างสำคัญเพราะ Script ใน VM จะทำการ mount folder จากค่าที่เราตั้งไว้ตรงนี้  ดังนั้นให้เราแก้แค่ Path อย่างเดียว โดยเลือกเป็น folder ที่เราจะใช้เก็บ code  ส่วนตรง Name ให้ใช้ share เหมือนเดิม



หลังจากสร้าง VM เสร็จแล้ว  สามารถเข้าใช้งานด้วย Username และ Password ตามนี้ครับ
Username : ESP8266
Password : espressif


Compile custom firmware.

ขั้นตอนต่อไปคือการเอาโค้ดตัวอย่าง compile  
- app  คือ โฟลเดอร์ที่ใช้เก็บโค้ดที่เราเขียน
- examples คือ  โค้ดตัวอย่าง
- bin คือ โฟลเดอร์สำหรับเก็บไฟล์ .bin ที่ได้หลังจากการ Compile

ที่สำคัญคือโค้ดทั้งหมดจะต้องอยู่ใน Path ของ Virtual Box ที่เราตั้งค่าการแชร์ไว้  ไม่งั้นใน VM จะไม่เห็นโค้ดที่เราต้องการ Compile  ว่าแล้วก็มาเริ่ม Compile โค้ดกันเลย

1. สำหรับบางคนอาจจะติดปัญหาเรื่อง Permission ไม่สามารถ Execute Script บางตัวได้  แก้ปัญหาโดย sudo -s ครับ
2. ทำการ mount folder ที่เราตั้งค่าแชร์ไว้  โดยในตัว vm จะมี script มาให้แล้ว  เราสามารถเรียก mount.sh ได้เลย  หลังจาก mount สำเร็จก็จะมีไฟล์ที่เราตั้งค่าแชร์ไว้อยู่ใน folder Share ครับ
3. สมมุติว่าเราแก้ไขโค้ดตามที่ต้องการแล้ว  เราสามารถเข้าไปใน folder app แล้วสั่ง make ได้เลยครับโดยใช้คำสั่ง  "cd Share/app" และ  "make"
4. จากนั้นสร้างไฟล์ .bin โดยเรียกใช้ script gen_misc.sh  ด้วยคำสั่ง "./gen_misc.sh"

5. เมื่อเข้าไปดูใน Share/bin จะมีไฟล์ .bin ที่เราสร้าง โดยไฟล์ที่จะนำไปใช้งานคือ

 - eagle.app.v6.flash.bin
- eagle.app.v6.irom0text.bin



เพียงเท่านี้เราก็จะได้ Custom Firmware ที่พร้อมจะนำไป flash ใส่โมดูลของเราแล้วครับ
การ flash custom firmware จะไม่เหมือนกับการ flash official firmware ทั่วไป
เราจะใช้ esptool.py  หรือ ESP FLASH DOWNLOAD TOOL ในการ Flash

เจอกันบทความถัดไปเรื่องการ Flash Custom Firmware ครับ


[ESP8266] - How to update firmware with XTCOM

Standard

หลาย ๆ  ท่านคงได้ลองเล่นเจ้า ESP8266 ดูบ้างแล้ว  เป็นโมดูล WIFI ที่ราคาถูกมาก (ร้อยกว่าบาท) Firmware ที่ให้มาสามารถสั่งงานผ่าน AT Command ได้เลย  แต่ AT Command ก็เยอะเหลือเกินใครจะไปจำได้หมด  ก็เลยมีคนทำ Arduino Library ขึ้นมา  และผมเลยเขียน App ง่าย ๆ เอาไว้ Config โมดูลตัวนี้เพื่อให้เราสามารถเข้าใจขั้นตอนการ Config ได้ สามารถไปดาวน์โหลดได้เลยครับ


Firmware Version ใหม่ ๆ ก็จะมี AT Command ต่าง ๆ เพิ่มเข้ามา  บทความนี้ก็จะมาพูดถึงการ Update Firmware สักเล็กน้อยครับ  ซึ่ง Firmware ที่ใช้ก็จะเป็นไฟล์ Binary ไฟล์เดียว  (ใครที่เคย Custom Firmware จะรู้ว่ามันมีหลายไฟล์)  และใช้โปรแกรม XTCOM ในการ Update Firmware ครับ

เตรียมโปรแกรม XTCOM และ Firmware

ไปดาวน์โหลด XTCOM และ Firmware ที่เราต้องการจากที่นี่ครับ  ElectroDragon

ต่อ GPIO เพื่อเข้าโหมด Update Firmware

ต่อ GPIO  ตามตารางด้านล่าง  ที่มา ESP8266 GitHub
จริง ๆ ผมต่อแค่ CH_PD เป็น High และ GPIO0 เป็น Low ก็เข้าโหมด Update Firmware แล้วครับ




PinLevel
CH_PD
High
GPIO0
Low
GPIO2
High

Update Firmware

1. หลังจากที่เราต่อ GPIO ตามด้านบน และทำการ Reset โมดูลเรียบร้อยแล้ว  ต่อไปก็เปิดโปรแกรม XTCOM และ ไปที่เมนู Tool -> Config Device  เพื่อตั้งค่าการเชื่อมต่อ Serial Port   แล้วกด Open เพื่อ Connect

2. เมื่อต่อ Serial Port ได้แล้ว  เราต่อกด Connect เพื่อตรวจสอบว่าโมดูลของเราเข้าสู่โหมด Update Firmware หรือยัง  ถ้าไม่มีอะไรผิดพลาดโปรแกรมก็จะบอกว่าสามารถ Connect โมดูลได้ตามรูปด้านล่าง  แต่ถ้า Error ก็ต้องไปเช็ค GPIO ว่าต่อถูกหรือเปล่า  แล้วทำการ Reset อีกครั้งครับ



3. เข้าไปที่เมนู API TEST -> Flash Image Download


4. เลือกไฟล์ Firmware ที่เราต้องการ Update


5. กด Download แล้วรอสักครู่


6. เมื่อเสร็จแล้วโปรแกรมก็จะบอกว่า Operation Success   เป็นอันเสร็จพิธีการ Update Firmware ครับ



นอกจากการใช้ XTCOM ในการ Update Firmware แล้ว  ยังมี Tool ตัวอื่น ๆ เช่น esptool.py ซึ่งเขียนด้วย Python หากใครไม่ได้ใช้ Window ก็คงต้องเลี่ยงไปใช้ Tool ตัวอื่นเอานะครับ

ส่วนใครที่ Custom Firmware ก็จะมีการโหลด Firmware ที่แตกต่างไป โดยต้องโหลด Binary แต่ละไฟล์ไปที่ Address ต่าง ๆ เอาเป็นว่าว่างเมื่อไหร่จะมาเขียน Blog อีกที  เพราะกลัวลืมเหมือนกันครับ


[Python] - How to install Python and PySerial (OS X,Windows)

Standard
วันนี้จะมาพูดถึงการติดตั้ง Python ให้สามารถใช้ Serial Port ได้ทั้งบน OS X และ Windows    ถ้าใครเคยใช้งาน Python มาก่อนก็คงติดตั้งได้ไม่ยาก  แต่สำหรับบางคนอาจจะต้องการใช้โปรแกรมบางโปรแกรมที่อาศัย Python ในการทำงาน  ก็อาจจะต้องมี How to ช่วยเล็กน้อย  ซึ่งผมก็เป็นหนึ่งในนั้นฮ่า ๆ เพราะต้องการใช้ esptool.py  เพื่อเอา Flash firmware ของ ESP8266  นั่นเอง

Install Python and PySerial on Windows

1. Download  Python และ PySerial มาไว้ในเครื่องในที่นี้เราจะใช้ Version 2.7 ครับ
2. ติดตั้ง Python ก่อน  สามารถดับเบิ้ลคลิ๊กตัว Install แล้วลงได้เลย
3. ติดตั้ง PySerial สามารถใช้ Install ที่ Download มาติดตั้งได้เลย  แต่ระหว่างลงอาจจะเจอปัญหา No python installatin in registry ให้แก้ปัญหาตาม Link ได้เลยครับ
4. เมื่อติดตั้งเสร็จแล้วสามารถใช้ PySerial ได้เลยครับ

Install Python and PySerial on OS X

1. ปกติ OS X จะมี Python Version 2.7.x มาให้อยู่แล้ว อ้างอิงตอนนี้ผมใช้ OS X 10.10 (Yosemite) ดังนั้นก็ติดตั้งแค่ PySerial อย่างเดียว
2. เปิด Command Line แล้วติดตั้งตามคำสั่งด้านล่างได้เลยครับ
pip install pyserial
หรือ
easy_install -U pyserial

Cr http://pyserial.sourceforge.net/pyserial.html 

[Python] - No python installation in Registry

Standard
หลังจาก Install Python แล้วจะลง PySerial  เพื่อใช้ Serial Port ก็เจอปัญหา  no python installation in registry  หลังจาก Search สักพักก็ไปเจอข้อมูลใน StackOverflow  สาเหตุเกิดจากมันหา Path ของ Python ใน Registry ไม่เจอ   ซึ่งเป็น Bug ของตัวติดตั้ง