ยุคนี้เป็นคอมพิวเตอร์รุ่นที่สาม หรือ รุ่นที่สี่ ไม่แน่ใจ ตอนนี้เราสามารถพกพาคอมพิวเตอร์ความเร็วสูงไปไหนก้อได้ ยุคต่อไป เราคงใส่กระเป๋าตังได้แล้ว ด้วยกระแส ยุคที่เครื่อง?โน๊ตบุ๊ต ครองเมือง ทุกอย่างเล็กลง เพื่อให้เหมาะกับการพกพา?เลยทำให้ตัด?พอร์ตที่ไม่ได้ใช้งานออกไปเรื่อย?พอร์ตสือสาร?อย่าง?serial กับ pararell เลยโดนตัดไป แรกๆ เนื่องจากการเข้ามาของ USBถ้าตอนนี้ ใครมีต้องรีบเก็บไว้เลยนะครับ Retro ดี เผื่อจะได้แต่งบ้านได้ 😀
ตอนนี้เวลาจะ upload ไฟล์ หรือ การเบิร์นโปรแกรม ด้วยไมโครฯ อาจจะยุ่งยากขึ้นไปอีก
การเขียนโปรแกรม พัฒนาโปรแกรมบนบอร์ดไมโครคอนโทรลเลอร์มักจะใช้ พอร์ทสื่อสาร อย่าง serial port? เนื่องจากความง่าย เข้าถึงคอมพิวเตอร์ได้เลย อย่าง arduino จะ upload โปรแกรม จะผ่าน port serial หรือจะให้ดูดี จะใส่ไอชี usb 2 serial ไว้บนบอร์ด แต่จริงก้อยังเป็น serial ไม่ได้เป็น usb จริงๆครับ? ก้อเลยเป็นที่มาของโครงการใหม่ เพื่อให้ arduino สามารถ upload โปรแกรมผ่าน usb ได้
รูปบอร์ด arduinoS3v3 แบบ upgrade แล้ว
ประโยชน์ที่คิดว่าน่าจะได้รับ
การใช้ usb จะได้ประโยชน์หลายทาง อย่างแรกๆ เราจะได้ไฟเลี้ยง 5? โวลต์นำไปใช้งานต่อได้เลย ไม่ซื้อ adaptor (จะงกกันไปถึงไหน) และอีกอย่าง ลดความยุ่งยาก เรื่อง ?serial to usb มาใช้กับเครื่องคอมเราอีก ก้อออกแนวงก อยู่ดี และ ก้อความเร็วในการสือสารข้อมูล ความเร็วสูงมาก ไมโครฯ ได้ต่อ ยูเอสบี จะเข้าขั้นเทพแน่นอน
แล้วเราจะใช้?usb บนไมโครฯ ได้อย่างไงล่ะ?ดูเหมือนอะไรก้อดูดี แต่มีข่าวร้ายครับ AVR?Mega รุ่นที่มีขาย ตัว hardware หรือ ตัว chip ไม่ได้ มีโมดุล USB มาด้วย อยากได้ต้องสั่งเข้ามา แต่ว่ายังมีทางนะครับ เมื่อ hardware ไม่?support?ก้อเขียน software มาใช้งาน USB ขึ้นมาเองเลย ซึ่งเป็นอีกโปเจค open source อีกโด่งดัง ชื่อว่า LIB-AvrUSB
LIB-AvrUSB เป็น Software-USB? ที่มีคนสนใจนำประยุกต์ใช้หลากหลาย ก้อทำให้ชิปตัวล่ะ 50 บาท ใช้งาน usb ได้ ใครจะไม่สนล่ะ ตัว software – usb อาจจะไม่ได้รวดเร็วเหมือน usb จริง ความเร็วที่มันทำได้แค่ 1.0 MHz เทียบกับความเร็วของพอร์ต USB v1.0 ตัวเก่า ยังได้ 12.0? MHz
โดยเครื่องโปรแกรมแบบยูเอสบีแบบราคาถูกๆ?ที่ใช้โปรแกรม Lib-AVRUSB คือ??USBasp ใครอยากได้เครื่องโปรแกรมถูกๆ ลองเข้าไปดู ส่วน?bootloader ก้อพัฒนามาจาก Usbasp ดังนั้น เหมือนเข้าโหมด loader ก้อจะใช้งานเหมือนเครื่องโปรแกรม usbasp เลย ดังตัวอย่างในโปรเจค ?metaboard
รูปจาก?http://metalab.at/wiki/Metaboard
เริ่มลุยกันเลยดีกว่า
มาดูส่วนของ software ของเครื่องโปรแกรม Usbasp กันก่อนครับ จะเป็นเครื่องโปรแกรม หรือ ตัว bootloader ส่วนนี้จะเหมือนกัน ซึ่งประกอบไปด้วย
– ?ส่วนไดร์เวอร์ ยูเอสบีคอมพิวเตอร์ ชื่อ??LibUSB
– ?ส่วน firmware บนบอร์ด?USBasp-Loader หรือ?http://metalab.at/wiki/Metaboard
ขั้นตอนการเตรียมอุปกรณ์
เตรียมส่วน hardware บอร์ด ผมทำบอร์ดเพิ่มเติม มาใช้กับบอร์ด arduino ชุดเดิม โดยดูจากวงจรข้างบน จะมีส่วนของ USB เพิ่ม
ส่วนบอร์ดที่ใส่เพิ่มไป ก้อ usb shield แบบบ้านๆ ครับ ตัวบอร์ดได้มาจาก ett ครับ คงจะหามาทำกันไม่ยาก ดูจากด้านบน ชัดๆ อุปกรณ์จริงๆไม่มีอะไรมากครับ zener กับ R รวมกันไม่ถึง 20 บาท
ส่วนด้านล่าง ใช้เทคโนโลยี R แปะๆ
มาส่วนของ firmware bootloader บ้างนะครับ?เข้าไปที่นี้ครับ http://www.obdev.at/products/avrusb/usbasploader.html จะมี source ของ bootloader ซึ่งทางผม ก้อเอามาใช้งานเลย
ส่วนของโปรแกรม Arduino IDE
โดย arduino นี้ผมลองกับ mega8 นะครับ จึงไฟล์ mega8_16mhz.hex ไปใส่ไว้ที่ /bootloader/usbasp/
จากนั้นมา modify arduino ต่อครับ เอา quote นี้ใส่ไปใน board.txt
ArduinoSoftUSB.name=ArduinoSoftUSB ArduinoSoftUSB.upload.protocol=usbasp ArduinoSoftUSB.upload.maximum_size=7168 ArduinoSoftUSB.upload.speed=19200 ArduinoSoftUSB.bootloader.low_fuses=0x9f ArduinoSoftUSB.bootloader.high_fuses=0xc0 ArduinoSoftUSB.bootloader.path=usbasp ArduinoSoftUSB.bootloader.file=mega8_16mhz.hex ArduinoSoftUSB.bootloader.unlock_bits=0x3F ArduinoSoftUSB.bootloader.lock_bits=0x2F ArduinoSoftUSB.build.mcu=atmega8 ArduinoSoftUSB.build.f_cpu=16000000L ArduinoSoftUSB.build.core=arduino
จากนั้น เข้าโปรแกรม เสียบสาย ISP update bootloader ตัวใหม่ ตอนนี้ arduino ท่านจะใช้ burn ผ่าน usb ได้แล้ว
วิธีการใช้งานนะครับ
จะเข้าโหมด bootloader ต้อง jump PB7 หรือ arduino pin7 ลง gnd แล้วกด reset ถ้าลง driver แล้ว จะปรากฏ อุปกรณ์ usbasp ใน device manager เลยครับ จากนั้น ท่านก้อสามารถใช้ avrdude burn โปรแกรมเข้าไปใหม่ได้ หรือใช้ arduino ก้อ upload sketch ได้เลยครับ เมื่อเสร็จ จะออกจาก bootloader เข้าสู่การทำงานปกติต่อไปครับ
การทดสอบผมว่ามัน upload เร็วดีกว่า bootloader ที่เป็น Serial เยอะมากครับในการทดสอบกับ arduino usb จะเจอปัญหา เล็กน้อย ในตอน upload sketch ถ้าต่อสาย serial อยู่ เนื่องจากบอร์ด arduino สามารถ auto-reset จาก serial ได้ ตอน upload มันจะเข้าไป reset ผ่านสาย serial ด้วย ถ้าท่านต่อสาย serial ด้วย ให้ disable โหมดนี้ออกด้วยครับ เดี่ยวมันจะตีกัน
ขอให้สนุกครับ
เสริมอีกนิดหน่อย
ตอนนี้ ถ้าใครอยากจะเอา arduino ไปลองกับ usb ?ตอนนี้มี port ตัว AvrUSB ไปใช้กับ arduino แล้ว
ต่อไป เราจะได้ใช้ USB กันง่ายๆ ถ้าใครว่างๆ ลองเอาไปทำดูครับ เดี่ยวผมจัดการงานเสร็จจะทดลองดูตามโน่นบ้าง
รูปจากเวป?http://code.rancidbacon.com/ProjectLogArduinoUSB
Project Log : Arduino USB
ทำขายเลยครับ
อ่ะ ลองทำดูแล้ว ลง bootloader ผ่าน avrstudio โดยเซ็ต fusebit high=c0 และ low=9f ส่วน lockbit=cf เสร็จแล้ว
แล้วก็ลงไดรเวอร์ LIB_USB แล้ว กดรีเซ็ตดู แล้วเปิดไปดูที่ device manager มันไม่มี usbasp ครับ เจอแต่ unknow device โผล่มาอันนึง แก้ยังไงครับ
@kom_AsArI
เวลาเข้า boot loader ครับ ต้องเอา PD7 ต่อลง ground ด้วยครับ 😀
เอาจิ้มลงกราวแล้วครับ มันเด้งขึ้นมาที่มุม not recognized (ไม่รู้ว่าพิมพ์ถูกมั้ย) เหมือนจอยเกมพังเลย 555
ไม่รู้ว่าบอร์ดผมไม่ค่อยดีรึเปล่า มันเก่าแล้ว คงต้องไปลักบอร์ดที่รูใหม่ๆมาลองมั่ง
ลองสลับ D- D+ อีกอย่าง
แล้วต่อ PD7 เข้า ground แล้วกด reset ด้วยนะครับ
แง
ไม่ได้ซะที ลองต่อตามวงจรด้านบน โดยใช้ไฟจาก usb ไม่ได้ต่อจากข้างนอก ก็ไม่ได้
ลองเอาบอร์ดเก่า มาลองต่อ usb เพิ่มก็ผลเหมือนเดิม
ส่วนของ bootloader ตอนโปรแกรมก็ผ่านแล้วนิ
วัยรุ่นงง 555
ปล ใช้ mega8L ครับ ไม่รู้ว่าจะมีผลรึเปล่า
not recognized!!!
ถ้าผมเข้าใจไม่ผิด ผมก็เจอปัญหาคล้ายๆกับคุณ kom_AsArI ครับ
น่าจะเกิดจากการที่ไม่มี Driver ครับ
ต้องสร้าง Driver *.inf ขึ้นมาเองครับ โดยใช้โปรแกรม LIB_USB สร้างไฟล์ .inf ขึ้นมาครับ
– หลังจากแตกไฟล์ libusb-win32-device-bin-x.x.x.x.tar.gz
– ให้คลิก …\bin\inf-wizard.exe
– เลือก USBasp แล้วก็ next ครับ
– แล้วโปรแกรมก็จะสร้าง ไฟล์.inf ให้ครับ
– ใช้ ไฟล์.inf ตัวนี้ กับไฟล์ libusb0.sys ในการติดตั้ง Driver ครับ
ขอใช้โชคดีครับ ^_^
อ้อ… อย่าลืมเข้าไปใน Device Manager ไปลบDriverที่ลงผิดด้วยนะครับ
อีกนิดนึงครับ ระวังเรื่องอย่าลืมต่อ G จาก usbเข้าบอร์ดด้วยนะครับ
ช่วงนี้ ป่วยครับ มาตอบไม่ไหว เป็นกำลังใจท่าน kom_asari ทำสำเร็จไวๆ
ลองทำตามดูแล้วครับ ตอนที่รัน inf-wizard มันไม่มีให้เลือก usbasp ครับ มีแค่เมาส์กับ unknow device
ลองเลือก unknow device ดู สร้างไฟ์ inf มาควรตั้งชื่อเป็นอะไรครับ ผมลองตั้งเป็น libusb
แล้วก็ลงไดรเวอร์โดยการ update และชี้ให้คอมมาหาไดร์เวอร์ที่โฟลเดอร์ดังกล่าว
ผมก็คือ ยังไม่ได้เหมือนเดิม
not recognized !!!
ลองดูตามนี้ก่อนครับ แก้ที่ล่ะปัญหา
1. ผมว่าอย่างแรก เสียบแล้วมันต้องเจอก่อนว่า เป็น usbasp
2. ติดตั้ง driver บน windows ครับ แต่ในกรณีที่ทำผิคพลาดไปแล้ว ควร uninstall ออกไปครับ
เดี่ยววันหลังผมจะลองลงใหม่บ้าง จะมา review ให้ชมกัน
คือว่า ตอนนี้ไม่ว่าจะเสียบยังไงก็ขึ้น not recognized
ดูใน hardware device ก็ขึ้นเป็น unknow device ตลอด
ไม่รู้ว่ามีอุปกรณ์ตัวไหนเสียรึเปล่า หรือว่าสาย usb ไม่ดีก็ไม่แน่ใจ สายที่ใช้แกะเอามาจากจอยเกมที่พังแล้ว
เดี๋ยวลองซื้อของมาต่อใหม่ดูอีกทีครับ
ผมใช้ mega32 16MHz boot=7800 พอคอมไพล์ออกมาแล้วขนาดมันได้ 2090 อ่ะ แต่ก็ลองเบิร์นดู
พอเสียบ USB แล้วก็ขึ้นเหมือนคุณ kom_AsArI เลยครับ พอลองวัดแรงดันตกคร่อม zener ได้แค่ 2.3v
เอง ผมว่าน่าจะเป็นที่ตรงนี้นะครับ หรือว่าผมทำผิด ???
ส่วนของคุณ kom_AsArI ใช้ mega8L ถ้าดูตามสเป็คแล้วใช้คริสตัลได้แค่ 8MHz ไม่ใช่เหรอครับ
@moonoi ^^
เดี่ยวแป็บหนึ่งนะครับ เล่นตามไม่ทันล่ะ
ช่วงนี้ ผมก้อดำๆ ไถๆ อยู่ครับ
ของผมไม่ได้เปลี่ยน fuse bit ครับ มาทราบตอนใช้ Winavr แต่ตอนนี้ผมเบิร์น bootloader ของ Arduino อยู่อ่ะครับ เลยไม่ได้ลองเล่น USB เลย
ตอนนี้ลอง avrdude gui ของเจ้านี้อยู่ใช้งานได้ดีครับ
http://yuki-lab.jp/hw/avrdude-GUI/index.html
[…] http://www.ayarafun.com/2009/04/usbasp-with-arduino-boot-loader/ […]
ขอบคุณมากครับ เดี๋ยวลองทำดู