ตอนนี้ คนเริ่มใช้ Arduino กันเยอะมากขึ้นแล้ว หลังจากที่สำรวจ ตอนนี้ก้อมี บอร์ดที่เรียกว่า Arduino(clone) /Freeduino /m168 board อยู่หลายเจ้าเลย

เดี่ยวคงจะมีปัญหา ตัว bootloader พังบ้างล่ะ ตอนผมลองเล่นแรกๆ ส่วนมากจะชอบสร้างบอร์ดเองกัน แต่จะติดปัญหา ส่วนของเครื่องโปรแกรม คือเครื่องโปรแกรมที่อยู่ในโปรแกรม Arduino มันหาไม่ได้ คือจะเพิ่มเครื่องโปรแกรมที่เรามีอยู่ได้หรือป่าว ทางเราเลยจะบอกวิธีการ hack สุดแสนจะง่าย ให้ Arduino ใช้เครื่องโปรแกรมเราได้

ขอเล่าย้อนไปก่อน การจะ Hack จะต้องเข้าใจโครงสร้างของ Arduino ก่อน

Arduino เป็นโปรเจค open-source ที่รวมกับ โปรเจค open-source หลายๆตัวเข้ามาใช้ (อันนี้ต้องขอบคุณ คนพัฒนาในอดีตครับ ทำเอาไว้เยอะมาก) อย่างเช่น ตัวโปรแกรม base จะเป็น java ทำให้มันทำงานได้หลายๆ platform ตัวคอมไพล์เลอร์ของ Arduino จะใช้ avr-gcc และตัวสุดท้าย ตัวโปรแกรม ใช้ avrdude ในการ burn โปรแกรม

ถ้าเข้าใจโครงสร้างมันแล้วจะใส่อะไร เพิ่มอะไรก้อพอจะหาทางไปต่อได้ถูกครับ (ใช้พี่ google ดำไปได้ต่อ)

กลับมาที่ bootloader อีกรอบ การเบิร์น boot-loader นั้นไม่ยากยุ่ง เพราะว่าในโปรแกรม Arduino จะมีส่วนของ burn bootloader อยู่แล้ว ถ้าท่านมีเครื่องโปรแกรมตามรายชื่อในรูปก้อใช้งานได้เลยครับ แต่ปัญหามีอยู่ว่า เครื่องโปรแกรมที่มีรายชื่อ เป็นเครื่องที่ไม่มีขายในไทย จะเอามาใช้งานได้บ้างไหม

โดยปกติจะใช้ burn bootloader ตอนไหนบ้าง ผมจะใช้ตอนแรก ในการสร้างบอร์ดครับ หลังจากที่ได้ไอชีมาใหม่ ยังไม่ได้ใส่ firmware กับอีกรอบที่ bootloader เสีย (อันนี้โอกาสเกิดได้น้อย แต่มันก้อยังเสียได้) อาการเสียของ bootloader ดูง่ายๆ ถ้า LED13 บนบอร์ดไม่กระพริบ แสดงว่า boot-loader มันจะเสียแล้ว  วิธีการเบิร์น bootloader ก้อแค่ กดที่เมนู Burn Bootloader ตอนโปรแกรมมันจะเบิร์น firmware และ set fusebit ให้

::กรอบแทรก :: เดี่ยวคนมาใหม่จะงง ขออธิบายให้รู้จัก bootloader กันสักนิด

“ bootloader คือ firmware ส่วนหนึ่งที่ทำหน้าที่ เป็นที่ช่วยในการ upload โปรแกรม หรือ sketch ที่เราเขียนเข้าไปใน flash rom ผ่านทางสาย serial หรือ usb ซึ่งแล้วแต่คนออกแบบครับ โดยไม่จำเป็นต้องมีเครื่องโปรแกรมไอชี

สำหรับวิธีการ Hacking ให้ Arduino มีเครื่องโปรแกรมนั้นง่ายๆครับ ก้อแค่ edit file ไฟล์ programmers.txt ซึ่งจะอยู่ที่  >> [drive:]\arduino\hardware\programmers.txt ดังรูป

วิธีการเพิ่มแค่ใส่ CODE เข้าไปเพิ่ม แล้ว restart โปรแกรมใหม่เท่านั้นเอง ตัวแปร config ต่างๆมันจะเก็บไว้ในรูปแบบ object ของ java เอาที่สำคัญๆ ได้แก่

.communtication กำหนดว่าใช้ usb หรือ serial

.protocol เครื่องโปรแกรมใช้รูปแบบการรับส่งข้อมูลแบบไหน อันนี้ท่านต้องรู้จักโปรแกรม avrdude แล้วท่านจะรู้จัก protocol ต่างๆครับ

เครื่องโปรแกรมที่มีในไทยนะครับ ที่ผมเคยทดลองใช้อยู่ จะมีรุ่นดังต่อไปนี้นะครับ

  1. AVR-ISP (LPT)
  2. AVR-ISP (USB)
  3. USBASP (รุ่นทำกันเอง)

AVR-ISP-LPT

ET -AVR ISP ตัวแรกนี้ ก้อมันถูกดี พอใช้งานได้ แต่มันเป็น LPT เดี่ยวนี้เลยไม่นิยมกัน  แต่ก้อแนะนำเลยสำหรับคนที่ นานๆๆ จะเอามาใช้สักที่

วิธีติดตั้งก้อ copy code เข้าไปใส่ใน programming.txt

ettparallel.name=ETT ISP Parallel Programmer
ettparallel.protocol=pony-stk200
ettparallel.force=true
#ettparallel.delay=200

ก้อใส่ที่บรรทัดล่างสุดครับ

หลังจากนั้นเปิดโปรแกรม Arduino แล้วเปิดใหม่ จะเห็น ett isp ที่เพิ่มเข้าไป ตอนนี้ก้อสามารถเบิร์นด้วย ETT ISP ได้แล้ว และ เราใช้วิธีนี้ เพิ่ม ตัว programmer  ตัวอื่นด้วยครับ

** วิธีการใช้งาน ก้อแค่ กด เลือก ETT ISP เครื่องโปรแกรมนี้มีปัญหานิดหน่อยครับ ถ้าบนบอร์ดมี LED13 ที่ต่อกับ SPI บัสอยู่ควรจะเอาออกด้วย มันจะทำให้ burn ไม่ได้ครับ

DIY USBASP

ตัวนี้เป็นรุ่นยอดนิยมอีกเช่นกัน สำหรับมือเก๋า ที่ชอบทำเอง  และ งงเองบ่อยๆๆ ผมก้อกว่าจะใช้งานได้ ก้องง ไปนานเหมือนกัน ใครสนใจก้อไปหาวงจรและทดลองทำได้ครับ USBASP(link หน่อย)

usbasp.name=Usbasp
usbasp.communication=usb
usbasp.protocol=usbasp

รุ่นนี้ผมใช้แล้วมันงอแงง บ่อย เลยเลิกใช้ไปครับ เครื่องเบิร์น น่าจะใช้อะไรที่ไว้ใจได้ครับ หลังๆๆ ที่ไอยาราฟันส์ เบิร์น IC เป็น เข่งๆๆ เลยไอชีเสีย เครื่องเบิร์น ใช้งานได้บ้างไม่ได้บ้าง  มันเสียเวลาครับ

AVR-ISP-USB

ตัวนี้เป็นของ sure electronic สำหรับสีเขียวฟ้า เป็นของทำเลียนแบบ ของแท้ครับ แต่ถ้าเป็นของไทยๆ ก้อจะมี  ETT จะกล่องสีดำครับ หลังจากผมใช้ LPT แล้วมันมีปัญหาบ้าง USBASP ก้อยังไม่พอใจอีก ผมลองของ ett ข้างห้องมันก้อไม่ถูกใจ ก้อมันโหลนิ ใครๆก้อมี ฮ่าๆ ผมเลยอยากลองของแพงๆบ้าง เลยซื้อกล่องเขียวๆมาจาก เวปจีนราคาประมาณ 1200 บาทครับ (CEO รวยจิงๆ)

serialavrisp.name=SerialAVRISP
serialavrisp.communication=serial
serialavrisp.protocol=stk500v2

หลังจากใส่ code ครบจะเป็นดังภาพ

ตอนนี้ ท่านก้อสามารถเอาเครื่องโปรแกรมในไทย มาใช้งานได้แล้ว สำหรับเครื่องของยี่ห้ออื่น เดี่ยวเอาไว้ผมหายืมมาได้จะมาบอกวิธีใช้อีกที่ครับ

ประสบการณ์เสริมที่ได้จาก Arduino นะครับ เมื่อก่อนที่ใช้ avr เวลาโปรแกรมจะผ่าน เครื่องโปรแกรมไอชี พวก isp programming ผมจะเจอปัญหาเครื่องโปรแกรมไม่ดี เบิร์นไอชีเสียบ่อยๆมาก ถ้าเป็นไอชี mega8 ตัวล่ะ 50 บาท ไม่เท่าไร บ้างที่ smt ตัวแพงๆ เบิร์นเสียมันเจ็บใจ แต่หลังจากที่ upload ผ่าน bootloader ก้อมีข้อดีอย่างหนึ่ง คือโอกาสที่จะเบิร์นให้ไอชีเสียมันก้อน้อยลงครับ (เพราะว่าไม่ค่อยได้ใช้เครื่องเบิร์น ไม่มีคุณภาพมั่ง)

สำหรับ bootloader ถ้าท่านประยุกต์ใช้กับ โปรเจค AVR อื่นๆ ได้นะครับ ซึ่งหาได้จากในไอยาราฟันส์ จะมีอยู่ จับ ettstamp ใส่ bootloader ,bootloader แบบ usbasp

Justfun


บทความที่เกี่ยวข้อง

  1. เบิร์น Bootloader ให้ Arduino ตัวใหม่ด้วย FTDI-Bitbang [ตอนที่ 2]จากตอนที่แล้ว เราก้อได้แปลงกายเจ้า UCON-UART [FT232RL] เป็นเครื่องเบิร์นได้แล้ว ในบทความตอนนี้ เราจะเอาเครื่องเบิร์น FTDI ฺBitbang กับ avrdude-gui ใช้งาน burn bootloader กันดีกว่าครับ...
  2. ชมการผลิตบอร์ด Arduino(clone) เครื่องเบิร์นดัดแปลงที่ข้าพเจ้าใช้งานอยู่ตอนนี้เกือบปีแล้ว เร็วเหมือนโกหก เวปไอยาฟันส์ ก้อเดินทางไปเรื่อยๆ จิงอาจจะดูว่าช้าไปบ้างนะครับ ทางเราก้อกำลังปรับตัวให้เข้ากับโลกอินเตอร์เน็ทอยู่ สำหรับตอนนี้ทาง ไอยาฟันส์ใช้ ก้อทำบอร์ดสำหรับการ burn ทำมาพิเศษ นิดหน่อย เพราะว่า ทางเราก้อหารายได้เล็กน้อยจากการขายบอร์ด Arduino(clone)...
  3. สื่อสารไร้สาย กับ Arduino : ตอนที่ 1 ทดลองโมดุล lowcost RFสวัสดีครับ ช่วงนี้กำลังบ้างาน กับไปออกกำลังกายครับ สุขภาพไม่ดี ทำอะไร ก้อไม่ดีนะครับ มือยังคัน หาโครงการใหม่ๆมาลองทำ ตอนนี้ผมมีโครงการจะทำอุปกรณ์ควบคุมภายในบ้าน ยังไม่ได้ตั้งชื่อนะครับ ตอนนี้เรียกว่า Smart Home ไปก่อน โดยโปรเจคนี้...