โปรเจคที่ผมจะนำมาเสนอวันนี้คือ USB LCD Controller แนวคิดที่จะทำก็เนื่องมาจากมีคนอื่นเคยทำโมดูลจอ LCD มาแล้ว แต่ยังไม่ค่อยเห็นใครทำแบบที่ควบคุมผ่าน USB ตรงๆ ทีนั่นเองครับ
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzJcQpIfxvO1JybYilEcStHdHQ9fcTDKR8nstmarQukA3q_8js_kCif7HISWuVvaTYBVy_6Aln8LKRG1blJSazuYptNAWMApQpaTGWsTApRovWJn18ZeQQBTc7JshmEDM65Gj3Hy67iR_6/s320/ATmega8.png) |
ATMega8-16AU |
Hardware
MCU ที่ใช้คือ ATMega8 ซึ่งไม่มีUSB ในตัว การนำมาใช้งานผ่าน USB จะใช้ซอฟต์แวร์แทน ตัวซอฟต์แวร์ที่ผมนำมาใช้สำหรับการสื่อสารแบบ USB คือ
VUSB ตัวไลบรารี่นี้สามารถนำไปใช้งานกับ MCU ตระกูล AVR ได้ทุกตัวที่มี RAM และ ROM เพยงพอครับ
ในส่วนของวงจรผมได้ดูตัวอย่างการต่อเข้า USB จาก
Metaboard
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTfJDoOchm0DQHG4osqx9Nwb1_W2LJJ1XAirAcHGIwAtNOZhKAJvZjUgPirQWeVxhJRUUbQiJ28BQBo0zlYXOY5zNDW_5S63VylNn1EplrwzChun-oprPqfhcvmULVJjnbxJJOF5Eho3el/s400/Metaboard-circuit.gif) |
วงจรของ Metaboard |
จากรูปวงจรของ Metaboard ส่วนที่วงสีม่วงใช้สำหรับแปลงสัญญาณให้เข้ากับมาตรฐานของ USB
ผมได้ลองต่อบน Breadboard ก่อน เพื่อดูว่างวงจรสามารถทำงานได้ถูกต้องหรือไม่
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi85dMECeqbrj4BhhjNs-09cEz_uSHTZpq82a8nYiGyiSnwI57QtznkoSRvzf2mD6rSEecFuF9WG_02bDqutf0G5jOyUs1X7t7RiG-3dX5S72Y0Qf85SIcqxJ9FcSVw1s-5ZJ5jiLpV_WeN/s320/962055_10200948173177402_1516241794_n.jpg) |
การทดลองบน Breadboard |
วงจรที่ผมออกแบบใช้ ATMega8 แบบ SMD เชื่อมต่อกับจอ Character LCD แบบ 4 bit ดังรูปด้านล่าง
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvsvWrXMu9PdxEd8ZrkgZiz16MjjbmA6kqEkvYzso9hT0NkrjwUkaZ1TAvQSlX_sFUZErB4qEl4kbsQF5ESXIDbX1zS8cDl9L2ilJt_apU3nztJn-X6vx74CZz87MTwNwQQgag-OB19hUZ/s400/shematic.png) |
วงจรของ USB LCD HID |
ลายวงจรผมเอา ไอซี ATMega8 ไว้ด้านล่าง เนื่องจากจะทำ PCB หน้าเดียว โดยจัมพ์สายขึ้นด้านบน 5 เส้นซึ่งจะเห็นได้จากรูป PCB Top Overlay
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgatqVIHNnzewwme5XYtYyevl89haLLl1KGorS3YR4PA690pq6Qye4u8OoN8bRQ5Dq3rCyf6tgto6Zm3Iueob1DnHg8hw8lIoL2WqVSL-BeGCm0eArOiphTrIFhmvbyDAlCcoXv10KiyiEt/s320/overlay.png) |
Top Overlay |
ส่วนด้าน bottom เป็นดังรูป
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHP8FsprLD_7lHzSQccHJbQmD-bLEpHcZQr1W1mR6fQG6E0tbT3KrxkEq8HDNdFhsu0wYDE_0pvYNz35wRKJZyJFylDOMmJ4ah9Z1iWYu9cqeM0HbBd22VpFvxBWaJLTB06XWnNl37lu3Y/s320/bottom.png) |
Bottom |
ตัว PCB มีขนาด 3x1 นิ้ว ใกล้เคียงกับขนาดของจอ 16x2
รูป Module หลังจากประกอบเสร็จสิ้น
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHmon7uODiF6NxfcjnF8O5Fvkki1FGJondn8XSU4RxhNI49gpQhH4L1nVXzBI4jLVRZJkvLGFfqbIDryXm97mrObn9iXztHTwB007TzN1ratpCUdIWXF3dBjX4hSFtAEmOwsqLW9Q_BbEV/s320/DSC_0192.JPG) |
ด้านหน้า |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjexHykYXjRxInl-i_y8GcI07PulN5D4lPLxtQ-lakA7fr_vvW2kPeG1_2rNQCyE4Kb5VjtuDHxqi2L62AmlBAUgTGsolp3wIveiOiXGTWP3z5Fwwgw2auPbpa-QO-1ptEdKM60EKeJniX-/s320/DSC_0191.JPG) |
ด้านหลัง |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhwBdlLXuQiM96XceRbcctydPzRUEWttLKGt6AYqEZB8iskxK8dLwlM8_gsweZ8o2H-gl7WD2NLwL-IXSyZSJNSa1-kp5WLqMCc5M6ztT7O2zf_zz2R0tvjDLOuzZmgqVfGp3caZuO3YrY/s320/DSC_0198.JPG) |
ผลการทำงาน |
Firmware
Firmware ของวงจรนี้เขียนโดยใช้ AVR studio 4 ตั้งค่า IC เป็น ATMega8 ,Crystal 12 MHzโดย Add ไฟล์ของ VUSB การตั้งค่าไลบรารี่สามารถตั้งได้ที่ไฟล์ usbconfig.h หลักๆ ก็จะกำหนด ขาของ USB D+, D- ก็สามารถใช้ได้แล้วครับ
ถ้าใครไม่อยาก Compile เองตัว Firmware ที่สำเร็จรูปจะอยู่ในโฟลเดอร์ "\Firmware\default" โดยต้องกำหนด Fuse bit ดังนี้
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt-MefyTxrlaI4EXA104qBXP7imiNnJuwlZ2_639KcYy1ggLYjzZn1HD3dx4_kbC80_-9UGI4PpunJyhKec8rOJtJwrbLfMpQphubMIWcFRhmDfs7dyb_BONWSufINkLYcCeY0OMq-yGrm/s320/fuse.png) |
การกำหนด fuse bit |
Software ส่วนของ Computer
ในขั้นแรกเราต้องติดตั้ง Driver ก่อน เนื่องจากตัว Driver เดิมที่ Windows ติดตั้งให้อัตโนมัติ ไม่สามารถใช้ได้ ผมได้สร้าง Driver ให้เรียบร้อยแล้วโดยมันจะอยู่ใน folder - windows driver
หลังจากติดตั้ง Driver เสร็จเรียบร้อยจะมีอุปกรณ์ใหม่ขึ้นมาดังรูปที่ได้วงสีม่วงไว้
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-0pFiTPnOI857ZEHECRRlaavm2f7R-mqJ7gje1CZXGT1EpO28u8vO1XjJlYW4_W6UUUCAFAnId6KREtpO9-OGllGQF-rMtJ22GrdOPn4KayjA7fmFV5zJJiF7jUl6AD3DJBm_P9RN2hNu/s320/Device+manager.png) |
Device Manager |
จากนั้นเราก็จะสามารถลองใช้งานตัวอุปกรณ์ได้เลยครับ โดยผมสร้างโปรเจคตัวอย่างโดยใช้ Visual Basic 2010 ไว้แล้ว ตัวไฟล์โปรแกรมจะอยู่ใน "\Software\UsbLcdLib\UsbLcdControlApp\bin\Debug" ครับ
เมื่อเปิดโปรแกรม จะมีหน้าตาดังรูป
วิธีการใช้งานมีดังนี้
- กดที่ Open USB
- ที่ Groupbox - Command จะสามารถกดได้
- ถ้าอยากส่งข้อความให้กดที่ LCD Put String
- ปรับความเข้มของตัวอักษรให้เลื่อนแถบ Contrast โดยถ้ายิ่งไปทางขวามือตัวอักษรในจอจะยิ่งจาง
- ปรับความสว่างของไฟส่องจอให้เลื่อนแถบ Backlight ทางซ้ายสุดไฟจะดับ ทางขวาสุดจะสว่างที่สุดครับ
แหล่งข้อมูล
- VUSB
- Metaboard
- libusb-win32
- LibUsbDotNet C# USB Library