Arduino คืออะไร
Arduino คือ แพลตฟอร์ม มาตราฐานเปิด (Opensource Platform) ที่ใช้ microcontrol ตระกูล AVR ทำให้การพัฒนาโปรแกรมบน microcontroller เป็นเรื่องง่าย เพราะเดิมที การที่เราจะสั่งงาน microcontroller แต่ละรุ่นให้ทำงานได้นั้น เราต้องเข้าใจใน MCU นั้นๆ ก่อน ว่ามีคำสั่งอะไรให้ใช้บ้าง มี register อะไรบ้าง มีหน่วยความมากน้อยเพียงใด เข้าถึงอย่างไร ฯลฯ ซึ่งเมื่อเปลี่ยนรุ่นของ MCU ก็ต้องมีการเปลี่ยนคำสั่งการเข้าถึงค่าต่างๆ วุ่นวายพอสมควรถึงแม้ว่าจะใช้ภาษา C/C++ แต่เวลาอ้างอิง register ก็ยังต้องเรียนรู้ระบบภายในอยู่ดี ต่างกับ PC แม้ว่าเราจะเปลี่ยนเครื่อง แต่หากว่ามี platform ที่เหมือนกันก็สามารถใช้โปรแกรมตัวเดิมได้โดยไม่มีปัญหาแต่อย่างใด นี่จึงเป็นที่มาของ platform Arduino ซึ่งใน platform นี้จะรวบรวม library พื้นฐานต่างๆ ไว้ พอสมควร ทำให้การพัฒนาโปรแกรมเป็นเรื่องที่ง่ายขึ้นอีกด้วย รายละเอียดอื่นๆ ของ Arduino สามารถหาได้ที่ http://www.arduino.cc
V-USB (AVR-USB) คืออะไร
V-USB คือ Opensource USB Software Emulator library ใช้จำลอง microcontroller ตระกูล AVR ให้สามารถจัดการกับ Protocal แบบ USB ได้ โดยเน้นรุ่นนิยมคือ ATmega8/88/168 เป็นหลัก แต่ก็สามารถ port ไปสู่รุ่นอื่นๆ ได้เช่น ATTiny2313 เป็นต้น โดยมีผู้คนมากมายที่ได้ใช้ project นี้เป็นพื้นฐานในการพัฒนาต่อยอดสิ่งต่างๆ โดยใช้เพียง AVR ตัวเดียว เช่น
- USB2Serial
- USBMouse, USBKeyboard (HID)
- USB BootLoader
- USB Sensor ต่างๆ
- ฯลฯ
DuinoThumb ได้ออกแบบวงจรให้สามารถใช้งานร่วมกับ V-USB ได้ (อาจจะต้องปรับ code นิดหน่อยในบาง project) รายละเอียด project อื่นๆ ทั้ง source code ของ V-USB สามารถดูได้ที่ http://www.obdev.at/products/vusb/index.html
** ชื่อเดิมของ V-USB project คือ AVR-USB แต่เรื่องด้วยคำว่า AVR-USB เป็น 1 ในผลิตภัณฑ์ของ Atmel ทางผู้พัฒนาจึงต้องเปลี่ยนชื่อครับ
DuinoThumb คืออะไร
DuinoThumb คือ ชื่อเรียก Arduino Clone หรือบอร์ดพัฒนา Arduino ที่มีขนาดเล็กกว่ามาตราฐาน (ประมาณนิ้วหัวแม่มือ) แต่ก็ครอบคลุมการทำงานของ Arduino Standard ได้เป็นอย่างดี
DuinoThumb ไม่ได้ใช้ Bootloader แบบมาตราฐานของ Arduino แต่ใช้ USBaspBootloader อันจะทำให้ตัว AVR นั้นๆ มีรูปแบบการติดต่อ กับ PC โดยไม่ต้องต่อสาย Serial232 แต่ใช้สาย USB ในการ download
ข้อมูลมาลงใน Flash ทำให้การพัฒนาโปรแกรม Arduino บน DuinoThumb นั้นเป็นเรื่องที่ง่าย เพราะไม่ต้องต่อสายใดๆ เพิ่มเติมอีก เพียงเสียบ DuinoThumb เข้าเครื่อง PC ติดตั้ง driver ให้เรียบร้อย ก็สามารถเขียนโปรแกรมได้ทันที โดย DuinoThumb ได้มีการออกแบบวงจรและจัดขาอุปกรณ์ให้สอดคล้องกับ opensource project ชื่อ V-USB ทำให้สามารถใช้งาน DuinoThumb ได้กับงานอื่นๆ ที่เกี่ยวกับ USB ได้ด้วย ดังนั้น คุณจึงสามารถใช้บอร์ดของ DuinoThumb ไปพัฒนาอุปกรณ์เช่น Mouse, keyboard ,sensor แบบ USB ได้ หรือถ้าเบื่อๆ อยากจะมาเล่น Arduino ก็สามารถทำได้เพียงแค่ burn firmware ที่แถมใน cd ลงไป
บอร์ดเดียวกันนี้สามารถใช้งานได้ทั้ง AVR-USB-Arduino ครับ !!!
ทำไมใช้ DuinoThumb แล้วไม่สามารถรับส่งข้อมูลทาง Serial Port หรือ Debug ได้ !!
เป็นเรื่องที่เข้าใจผิดกันค่อนข้างมาก ที่คาดคิดว่า เมื่อ upload โปรแกรมที่ compile แล้วลงไปที่ DuinoThumb แล้วจะใช้งานได้เหมือนบอร์ด Arduino ปกติ แท้ที่จริงแล้ว DuinoThumb ใช้ขั้วเสียบ USB เพื่อที่จะนำสัญญาณการ upload ไฟล์ .hex ที่ได้จากการคอมไพล์ ไปเบิร์นที่ตัวมันเองเท่านั้น !!! (ผ่านทางขา PD2 และ PD4) ไม่ได้เกี่ยวกับการต่อวงจรสื่อสาร RS232 แต่อย่างใด เราลองดูวงจรชัดๆ อีกที...
หากดูจากวงจรตรงบริเวณตำแหน่ง B จะเห็นได้ว่า ขา RX-TX (ขา PD0-PD1) ของ DuinoThumb จะปล่อยลอยไว้ ในขณะที่ ตามปกติแล้วโปรแกรม Arduino IDE จะรอรับข้อมูลผ่าน Serial Port ด้วยเหตุนี้ เวลาสั่ง Serial.Print หรืออื่นๆ มันจึงไม่แสดงผลออกมาที่หน้าจอไงครับ
กลับมาดู Arduino ปกติกันบ้าง
บอร์ด Arduino ทั่วๆ ไป ตามปกติจะใช้ IC ตัวหนึ่งเพื่อแปลง USB เป็น Serial (เช่นเบอร์ FTDI232) โดยสัญญาณ input/ouput จะไปต่อที่ขา RX-TX ของ AVR เลย ดังนั้นเวลา burn โปรแกรมมันก็จะใช้ RX-TX ตรงนี้ และในขณะเดียวกันถ้าจะ Debug หรือใช้คำสั่ง Serial.print ข้อมูลรับส่งที่จะแสดงไปที่ PC ก็จะได้จากขา RX-TX นี้ด้วยเช่นเดียวกัน
ดังนั้นถ้าหากจะให้ DuinoThumb สามารถส่งข้อมูลไปที่ PC ผ่าน Port Serial ได้ เราก็ทำเหมือนบอร์ดทั่วๆ แบบปกติเลย ไม่ว่าจะ ARM, PIC, MCS-51, หรือแม้แต่บอร์ด Standard Arduino "ก็ต้องใช้วิธีเดียวกัน" คือแปลงสัญญาณ TTL ไปเป็น สัญญาณ RS232 ระดับปกติ ก่อนจะต่อเข้า PC !!! ถ้าหากต่อขา RX-TX ไปที่ PC โดยตรง จะทำให้ DuinoThumb เสียหายได้ !! (จริงๆ ต้องบอกว่าหากต่อโดยตรงจะทำให้ microcontroller ทุกตัวเสียหายได้)
อยากให้แสดงวงจร แปลงสัญญาณ RS232 เป็น TTL เพื่อใช้ในการรับส่งข้อมูลผ่าน Serial ของ PC
ลองค้นหาใน Google ด้วยคำว่า "RS232 TTL Converter" จะเจอตัวอย่างวงจรมากมาย หรือลองดูลายวงจรนี้
จากเวปไซต์ http://sodoityourself.com/max232-serial-level-converter/
หรือถ้าไม่อยากยุ่งยากลองทำตามนี้ครับ DuinoThumb USB 2 Serial Converter ใน 10 นาที !!!