วันอาทิตย์ที่ 20 มีนาคม พ.ศ. 2559

[Arduino #7] Sublime Text สำหรับเขียนโค้ดอาร์ดูยโน่

[Arduino #7] Sublime Text สำหรับเขียนโค้ดอาร์ดูยโน่

การ เขียนโค้ดสำหรับควบคุมการทำงานของบอร์ดอาร์ดูยโน่โดยปกติทั่วไปเราจะใช้ โปรแกรม Arduino IDE ซึ่งเป็นโปรแกรมฟรีดังที่ได้กล่าวมาแล้วในตอนที่ 2 แต่การใช้งานโปรแกรมดังกล่าวยังติด ๆ ขัด ๆ ใช้งานไม่ค่อยจะลื่นไหลนัก ตลอดจนสีสันก็ยังดูขัดตาอยู่พอสมควร ซึ่งผู้ใช้งานหลายท่านจึงต้องขวนขวายหาตัวเขียนโปรแกรมตัวอื่น ๆ มาใช้งานแทนโดยที่ยังคงความสามารถของ Arduino IDE ตัวเดิมที่ติดตั้งไว้อยู่ บทความนี้ขอแนะนำโปรแกรม Sublime Text ซึ่งเป็นโปรแกรมที่ตอบโจทย์ได้ตรงใจมากที่สุด
 

Sublime Text เป็นโปรแกรมประเภทอิดิเตอร์ที่ใช้สำหรับเขียนโค้ดโปรแกรม รอรับการเขียนโปรแกรมได้หลายหลายภาษาเช่น ASP, ActionScript, AppleScript, BibTeX, C, C++, C#, CSS, Clojure, D, Diff, Erlang, Go, Graphviz, Groovy, HTML, Haskell, JSON, Java, JavaScript, LaTeX, Lisp, Lua, MATLAB, Markdown,  OCaml, Objective-C,  Objective-C++,  PHP, Pascal, Perl, Plain, Python, R, Ruby, SQL, Scala, TCL, XML, XSL เป็นต้น ถึงแม้ว่าโปรแกรม Sublime Text ไม่ใช่โปรแกรมที่ใช้ใช้งานได้ฟรี ๆ แต่ก็สามารถใช้งานได้ตามปกติเพียงแต่จะมีอะไร ๆ เด้งแจ้งมาเป็นระยะ ๆ ให้พอรำคาญบ้าง หากผู้ใช้งานต้องการให้สามารถใช้งานได้เต็มสามารถซื้อได้ในราคา 70 ดอลลาร์ (หรือจะหาวิธีทำให้เต็มได้ฟรี ๆ ก็ไม่ยาก ลองใช้กูเกิลหาวิธีนะครับ)
 
สำหรับการเขียนโค้ดอาร์ดูยโน่โดยใช้โปรแกรม Sublime Text มีข้อดีหลาย ๆ ข้อที่ผู้เขียนโปรแกรมต้องการแล้วหนึ่งในนั้นคือ ตัวโปรแกรม Sublime Text จะเชื่อมโยงค่าต่าง ๆ จากโปรแกรม Arduino IDE (ที่เราใช้เขียนโค้ดปกติอยู่แล้ว) จากโฟลเดอร์ที่ติดตั้งไว้ใช้งานเดิมอยู่แล้ว ดังนั้นคุณสมบัติต่าง ๆ จะเป็นเช่นเดียวกันกับ Arduino IDE ที่เราตั้งค่าเอาไว้

การใช้งานจะต้องมีส่วนประกอบอยู่ 3 ส่วนด้วยกันคือ

1. โปรแกรม Sublime Text (ปัจจุบันเป็นเวอร์ชั่น 3) สามารถดาวน์โหลดได้ที่ http://www.sublimetext.com เมื่อดาวน์โหลดเสร็จแล้วทำการติดตั้ง (การติดตั้งเหมือนกับการติดตั้งโปรแกรมทั่วไป)
2. ปลั๊กอิน Sublime Text Plugin for Arduino สามารถดาวน์โหลดได้ที่ https://github.com/Robot-Will/Stino เมื่อดาวน์โหลดเสร็จแล้วทำการให้ทำการแตกไฟล์ซึ่งจะได้โฟลเดอร์ชื่อ Stino-ST4ArduinoIDE
3. โปรแกรม Arduino IDE สามารถดาวน์โหลดได้ที่ https://www.arduino.cc/en/Main/Software ใน กรณีดาวน์โหลดเป็นไฟล์ zip ให้ทำการแตกไฟล์ หลังจากการแตกไฟล์ก็สามารถใช้งาน Arduino IDE ได้เลย จากการทดสอบจะสามารถใช้ได้เวอร์ชั่น 1.6.5 ส่วนเวอร์ชั่นที่สูงกว่าคอมไพล์ไม่ผ่าน (ติดปัญหาจากไฟล์ platform)

การตั้งค่าเพื่อให้ Sublime Text สามารถใช้งาน Arduino ได้

เมื่อติดตั้งโปรแกรม Sublime Text ใหม่ ๆ จะไม่สามารถเขียนโค้ด Arduino ได้ หน้าตาของโปรแกรมจะเป็นดังรูป

ดำเนินการติดตั้งปลั๊กอิน (Stino-ST4ArduinoIDE) ตัวที่เราได้ดาวน์โหลดมาแล้วดำเนินการดังนี้
1.เปิดโฟลเดอร์ที่เก็บโฟลเดอร์ปลั๊กอินค้างไว้

 2.เปิดโปรแกรม Sublime Text คลิกเมนู Preferences->Browse Packages…

 3. กลับไปคลิกที่ File manager ที่เราเปิดไว้ในข้อที่ 1 ทำการคัดลอกปลั๊กอิน (Stino-ST4ArduinoIDE) ทั้งโฟลเดอร์มาวางไว้ในโฟลเดอร์ Packages ที่โปรแกรม Sublime Text เด้งขึ้นมา

นำมาวางในโฟลเดอร์ Packages

ผลที่ได้...

 4.ปิดโปรแกรม Sublime Text แล้วเปิดใหม่จะมีเมนู Arduino เพิ่มขึ้นมาดังรูป

 5.เลือกโปรแกรม Arduino IDE ตัวที่เราต้องการจะให้โปรแกรม Sublime Text ดึงคุณสมบัติมาใช้

6.คลิกที่โฟลเดอร์ Arduino ที่เราต้องการ

หลังจากคลิกจะได้
 
การใช้งาน โปรแกรม Sublime Text ในเมนู Arduino จะทำการดึงคุณสมบัติของ Arduino IDE มาทั้งหมดดังนั้นการใช้งานจะต้องมีการเลือกค่าต่าง ๆ เพื่องานเช่นเดียวกับ Arduino IDE ปกติคือ
-เลือกบอร์ดที่ใช้งาน (Board)
-เลือกพอร์ตอนุกรมที่เชื่อมต่อกับบอร์ด Arduino (Serial Port)
-เลือกชนิดโปรแกรมที่ใช้เบิร์นลงบอร์ด (Programmer)
เท่านี้ก็สามารถใช้งาน Sublime Text เพื่อเขียนโค้ดอาร์ดูยโน่ได้แล้ว
 

[Arduino #6] ลองของจริง 2 ตอน"ทำบูตโหลดเดอร์"

[Arduino #6] ลองของจริง 2 ตอน"ทำบูตโหลดเดอร์"

ไมโคร คอนโทรลเลอร์จะทำงานได้นั้นต้องมีชุดคำสั่งควบคุมการทำงานที่บรรจุภายในตัว ของมัน การที่เราจะบรรจุชุดคำสั่งดังกล่าวลงภายในตัวไมโครคอนโทรลเลอร์จำเป็นต้อง พึ่งเครื่องโปรแกรม แต่ CPU Arduino คือไมโครคอนโทรลเลอร์ธรรมดาตัวหนึ่งที่มีบูตโหลดเดอร์อยู่ภายในตัวของมัน แล้ว บูตโหลดเดอร์นี้เป็นตัวจำการรับข้อมูลของชุดคำสั่งควบคุมการทำงาน (โปรแกรม) จากคอมพิวเตอร์เข้ามาสู่ตัวมันเองโดยไม่ต้องพึ่งเครื่องโปรแกรม ซึ่งทำให้ผู้ใช้งานสะดวกต่อการนำไปใช้งานเนื่องจากไม่ต้องมีเครื่องโปรแกรม ก็สามารถใช้งานได้ ในบทความตอนนี้ขอนำเสนอวิธีการทำบูตโหลดเดอร์เข้าสู่ CPU ตัวใหม่ที่ยังไม่มีบูตโหลดเดอร์ให้กลายเป็น CPU Arduino (ที่มีบูตโหลดเดอร์พร้อมใช้งาน)

อุปกรณ์ที่ใช้ในการดำเนินการทำบูตโหลดเดอร์ในตอนนี้ประกอบด้วย
1. บอร์ด Arduino UNO R3 (ที่ใช้งานได้ปกติทั่วไป)
2. ไอซี CPU ใหม่ เบอร์ ATmega8A, ATmega168, ATmega328 (ในตอนนี้ใช้ ATmega168)
3. คริสตอล 16 MHz
4. BreadBroad (แผงวจรที่ใช้ต่อวงจร CPU ตัวใหม่)
5. Capacitor 22pF
6. Resistor 10k
7. USB to UART (TTL Level) สำหรับทดสอบการทำงานเมื่อทำเสร็จ
วงจรที่ใช้ในการทำบูตโหลดเดอร์

เนื่องจากต้องการทำบูตโหลดเดอร์โดยใช้ไฟล์ optiboot (ซึ่งมีมาให้ในโปรแกรม Arduino) เนื่องจากไฟล์บูตโหลดเดอร์ดังกล่าวนี้มีขนาดเล็กทำให้เหลือพื้นที่ใช้งานมาก ขึ้น(เขียนโปรแกรมใส่ได้มากขึ้น) และมีความเร็วในการอัพโหลดสูงทำให้ใช้เวลาในการอัพโหลดน้อย วิธีการเราจะต้องเพิ่มรายการเข้าไปในไฟล์ broad.txt ซึ่งเป็นโฟลเดอร์ย่อยอยู่ภายในโปรแกรม arduino
-เปิดไฟล์ broad.txt (เพื่อแทรกรายการ)

ทำการแทรกรายการของไอซี ATmega168g เข้าไปดังรูป (ในตัวอย่างจะแทรกเข้าเป็นรายการที่สอง)

##############################################################
Opti168.name=[Optiboot] Arduino ATmega168
Opti168.upload.protocol=arduino
Opti168.upload.maximum_size=15872
Opti168.upload.speed=115200
Opti168.bootloader.low_fuses=0xFF
Opti168.bootloader.high_fuses=0xDD
Opti168.bootloader.extended_fuses=0x02
Opti168.bootloader.path=optiboot
Opti168.bootloader.file=optiboot_atmega168.hex
Opti168.bootloader.unlock_bits=0x3F
Opti168.bootloader.lock_bits=0x0F
Opti168.build.mcu=atmega168
Opti168.build.f_cpu=16000000L
Opti168.build.core=arduino:arduino
Opti168.build.variant=arduino:standard
##############################################################
Opti8.name=[Optiboot] Arduino ATmega8
Opti8.upload.protocol=arduino
Opti8.upload.maximum_size=7680
Opti8.upload.speed=115200
Opti8.bootloader.low_fuses=0xbf
Opti8.bootloader.high_fuses=0xdc
Opti8.bootloader.path=optiboot
Opti8.bootloader.file=optiboot_atmega8.hex
Opti8.bootloader.unlock_bits=0x3F
Opti8.bootloader.lock_bits=0x0F
Opti8.build.mcu=atmega8
Opti8.build.f_cpu=16000000L
Opti8.build.core=arduino:arduino
Opti8.build.variant=arduino:standard
##############################################################

ขั้นตอนการทำบูตโหลดเดอร์แบ่งออกเป็น 2 ขั้นตอนคือ
1. การทำบอร์ด Arduino UNO R3 กลายเป็นบอร์ดโปรแกรม (บอร์ดเบิร์น)
2. การเบิร์นบูตโหลดเดอร์ลง CPU ตัวใหม่
ขั้นตอนการทำบอร์ด Arduino UNO R3 กลายเป็นบอร์ดโปรแกรม (บอร์ดเบิร์น) เริ่มจาก 
-เปิดโปรแกรม Arduino IDE (สำหรับทำบูตโหลดเดอร์ให้กับ Atmega8 ต้องใช้เวอร์ชั่น 1.0.x เท่านั้น)
-เลือกบอร์ดเป็น Arduino Uno ดังรูป

-เลือกพอร์ตอนุกรมที่บอร์ด Arduino UNO เชื่อมต่อ มีวิธีการสังเกตุว่าเป็นพอร์ดใด สามารถทำได้ดังนี้ ในขณะที่ยังไม่เสียบสาย USB (ของบอร์ด Arduino UNO) มีรายการพอร์ตอะไรบ้าง

ทำการเสียบสาย USB ของบอร์ด Arduino UNO เข้าคอมพิวเตอร์

สังเกตุพอร์ตที่เพิ่มขึ้นมา ให้ทำการเลือกพร์ตที่เพิ่มขึ้นมานั้น

-เลือกชนิดเครื่องโปรแกรมเป็น AVRISP mkII (หากเลือกชนิดขึ้นเมื่อมีการคลิก upload โปรแกรมจะวิ่งเข้าสู่งบอร์ด Arduino ที่กำลังต่อสาย USB กับคอมพิวเตอร์อยู่)

-เปิดไฟล์ ArduinoISP

-คลิก Upload  หลังจากนี้บอร์ด Arduino UNO ก็จะกลายเป็นเครื่องโปรแกรมในชื่อว่า Arduino as ISP

ขั้นตอนการเบิร์นบูตโหลดเดอร์ลง CPU ตัวใหม่ เริ่มจาก-ต่อวงจร CPU ตัวใหม่ลง BreadBroad (หรื่อวงจรที่สร้างขึ้น)

-เชื่อมต่อสายสัญญาณระหว่างบอร์ด Arduino UNO (ที่ทำในขึ้นตอนแรก) กับวงจร CPU ใหม่โดยมีการเชื่อมต่อดังนี้
บอร์ดเบิร์น(ArduinoUNO)-->บอร์ด CPU ใหม่ที่สร้างขึ้น
D13-->D13
D12-->D12
D11-->D11
D10-->pin 1 (Reset)
และไฟเลี้ยงสำหรับวงจรใหม่ดังรูป

(รูปการเชื่อมต่อวงจรจริง)

-เปิดโปรแกรม Arduino IDE (Sketch) เลือกรายการบอร์ดเป็นบอร์ดใหม่ที่เราได้ทำการแทรกไปในตอนต้นดังรูป สำหรับ CPU ATmega8A ให้เลือก "[Optiboot] Arduino ATmega8" และกรณีใช้ CPU เบอร์ ATmega328 ให้เลือก Arduino Uno

-เสียบสาย USB (Arduini UNO) เลือกพอร์ตที่บอร์ดเชื่อมต่อ

-เลือกเครื่องโปรแกรมเป็น Arduino as ISP

-คลิกที่ Burn Bootloader

เสร็จสิ้นการทำบูตโหลดเดอร์ ตอนนี้ CPU ใหม่ก็กลายเป็น CPU Arduino ที่สามารถรับการอัพโหลดไฟล์ได้โดยตรงไม่ต้องใช้เครื่องโปรแกรมได้แล้ว
การทดสอบการใช้งาน
-ต่อ LED (ในที่นี้ต่อที่ขา D9)


-ใช้ตัวแปลง USB to UART (TTL Level) ที่มีขา DTR มาให้ดังรูป

การเชื่อมต่อเป็นดังรูป

การเชื่อมต่อระหว่างตัวแปลง USB to UART กับวงจรมีดังนี้
DTR--->Reset (ผ่าน C 0.1uF)
RXD--->TXD
TXD--->RXD
+5V--->VCC
GND--->GND

-ต่อ USB เข้าคอมพิวเตอร์

-เลือกพอร์ตที่เป็นรายการที่เพิ่มขึ้นมา

-เลือกบอร์ดเป็นบอร์ดใหม่ที่เราสร้างขึ้น ([Optiboot] Arduino ATmega168)

-เปิดไฟล์ตัวอย่าง Blink

-คลิก Upload (ในการณีที่ LED เลื่อนไปต่อขา D9 ให้ทำการเปลี่ยน int led=13; เป็น int led=9;)

[Arduino #5] ลองของจริง 1 ตอน"เริ่มต้นด้วย UNO R3"

[Arduino #5] ลองของจริง 1 ตอน"เริ่มต้นด้วย UNO R3"

สำหรับ มือใหม่หัดเล่นไมโครคอนโทรลเลอร์ Arduino เป็นหนึ่งในหลายตัวเลือกที่ทำให้น่าสนใจมากเนื่องจากความง่ายต่อการเขียน โปรแกรมควบคุมของมัน โดยผู้ใช้งานไม่ต้องเรียนรู้โครงสร้างอะไรมากมายก็สามารถเขียนโปรแกรมควบคุม การใช้งานได้ แต่เนื่องจาก Arduino มีบอร์ดให้เลือกใช้มากมายตั้งแต่เบื้องต้นไปจนถึงขั้นสูง การเริ่มต้นควรเริ่มจากตัวไหนดีสำหรับการทดลองของจริงที่ครูจะแนะนำเป็นการ ใช้บอร์ดที่ชื่อบอร์ดว่า "Arduino UNO R3"

บอร์ด Arduino UNO R3 มีคุณสมบัติดังนี้
Microcontroller---------------------------ATmega328
Operating Voltage----------------------5V
Input Voltage (recommended)-----7-12V
Input Voltage (limits)------------------6-20V
Digital I/O Pins--------------------------14 (of which 6 provide PWM output)
Analog Input Pins-----------------------6
DC Current per I/O Pin---------------40 mA
DC Current for 3.3V Pin-------------50 mA
Flash Memory--------------------------32 KB (ATmega328) of which 0.5 KB used by bootloader
SRAM-------------------------------------2 KB (ATmega328)
EEPROM--------------------------------1 KB (ATmega328)
Clock Speed-----------16 MHz
http://arduino.cc/en/Main/arduinoBoardUno
ผังของบอร์ด Arduino UNO R3 เป็นดังรูป (คลิกที่รูปเพื่อขยายใหญ่)


เริ่มต้นการใช้งานบอร์ด Arduino UNO R3
บอร์ด Arduino UNO R3 เป็นบอร์ดที่มีการติดต่อสื่อสารผ่านทางสาย USB โดยใช้การบอร์ดจะมีการแปลงการสื่อสาร USB เป็น COM พอร์ตในตัว ดังนั้นก่อนที่จะใช้งานได้ต้องมีการติดตั้งไดร์เวอร์ (ทำครั้งแรกครั้งเดียว) ซึ่งมีขั้นตอนดังนี้
1. ก่อนการติดตั้งเข้าไปดูใน Device Manager ว่ามีรายการอะไรอยู่บ้าง

2. เสียบสาย USB (ซึ่งต่ออยู่กับบอร์ด Arduino) เข้าเครื่องคอมพิวเตอร์

จะมีรายการปรากฎขึ้นเพิ่มเติม (ซึ่งตอนที่ไม่ได้เสียบ USB ไม่มีรายการนี้) ดังรูป (Unknown Device)

3. คลิกขวาที่รายการดังกล่าว เลือก Update Driver Software...

4. คลิก Browse my computer for driver software

5. คลิก Browse เพื่อหาตำแหน่งเก็บไฟล์ไดร์เวอร์

ุ6. ตำแหน่งไดร์เวอร์จะอยู่ในโฟลเดอร์โปรแกรม arduino ดังรูป จากนั้นคลิก Next



7. คลิก Install เพื่อติดตั้งไดร์เวอรืลงวินโดว์

8. เสร็จสิ้นการติดตั้ง

9. เมื่อไปดูใน Device Manager จะเห็นรายการ Arduino UNO พร้อมหมายเลข Com พอร์ตที่ใช้ในการเชื่อมต่อ

เริ่มต้นการทดลอง
ก่อนที่จะเริ่มต้นการทดลองทุกครั้ง (หลังจากเปิดเครื่องคอมพิวเตอร์ใหม่) จำเป็นต้องมีการตั้งค่าบอร์ดที่ใช้งานโดยมีการตั้งค่า 3 รายการคือ
1. บอร์ดที่ใช้งาน ในที่นี้ใช้บอร์ด Arduino UNO R3 ดังนั้นต้องเลือกรายการ Arduino UNO ดังรูป

2. COM พอร์ตที่บอร์ดทำการเชื่อมต่อ โดยดูได้จาก Device Manager ดังที่ได้กล่าวมาแล้วข้างต้น

3. เลือกชนิดเครื่องโปรแกรม เนื่องจากบูตโหลดเดอร์ของบอร์ดได้จำลองตัวเองเป็น AVRISP mkII ดังนั้นเครื่องโปรแกรมจึงต้องเลือกรายการดังรูป

สำหรับการตั้งค่าให้แสดงตำแหน่งของไฟล์ภาษาเครื่อง เพื่อจะนำไปใช้ในการจำลองการทำงานจะต้องตั้งค่าที่ Preferences ดังรูป


เริ่มทดลองจากตัวอย่างไฟกระพริบ Blink โดยเรียกไฟล์ตัวอย่างดังรูป

ทดลองแปลงไฟล์โดยกดที่ไอคอนเครื่องหมายถูกดังรูป  แต่หากต้องการอัพโหลดลงบอร์ดจริงด้วยให้กดที่ปุ่มหัวลูกศร (ปุ่มถัดไป)