โปรเจคที่ผมจะนำมาเสนอวันนี้คือ USB LCD Controller แนวคิดที่จะทำก็เนื่องมาจากมีคนอื่นเคยทำโมดูลจอ LCD มาแล้ว แต่ยังไม่ค่อยเห็นใครทำแบบที่ควบคุมผ่าน USB ตรงๆ ทีนั่นเองครับ
|
ATMega8-16AU |
Hardware
MCU ที่ใช้คือ ATMega8 ซึ่งไม่มีUSB ในตัว การนำมาใช้งานผ่าน USB จะใช้ซอฟต์แวร์แทน ตัวซอฟต์แวร์ที่ผมนำมาใช้สำหรับการสื่อสารแบบ USB คือ
VUSB ตัวไลบรารี่นี้สามารถนำไปใช้งานกับ MCU ตระกูล AVR ได้ทุกตัวที่มี RAM และ ROM เพยงพอครับ
ในส่วนของวงจรผมได้ดูตัวอย่างการต่อเข้า USB จาก
Metaboard
|
วงจรของ Metaboard |
จากรูปวงจรของ Metaboard ส่วนที่วงสีม่วงใช้สำหรับแปลงสัญญาณให้เข้ากับมาตรฐานของ USB
ผมได้ลองต่อบน Breadboard ก่อน เพื่อดูว่างวงจรสามารถทำงานได้ถูกต้องหรือไม่
|
การทดลองบน Breadboard |
วงจรที่ผมออกแบบใช้ ATMega8 แบบ SMD เชื่อมต่อกับจอ Character LCD แบบ 4 bit ดังรูปด้านล่าง
|
วงจรของ USB LCD HID |
ลายวงจรผมเอา ไอซี ATMega8 ไว้ด้านล่าง เนื่องจากจะทำ PCB หน้าเดียว โดยจัมพ์สายขึ้นด้านบน 5 เส้นซึ่งจะเห็นได้จากรูป PCB Top Overlay
|
Top Overlay |
ส่วนด้าน bottom เป็นดังรูป
|
Bottom |
ตัว PCB มีขนาด 3x1 นิ้ว ใกล้เคียงกับขนาดของจอ 16x2
รูป Module หลังจากประกอบเสร็จสิ้น
|
ด้านหน้า |
|
ด้านหลัง |
|
ผลการทำงาน |
Firmware
Firmware ของวงจรนี้เขียนโดยใช้ AVR studio 4 ตั้งค่า IC เป็น ATMega8 ,Crystal 12 MHzโดย Add ไฟล์ของ VUSB การตั้งค่าไลบรารี่สามารถตั้งได้ที่ไฟล์ usbconfig.h หลักๆ ก็จะกำหนด ขาของ USB D+, D- ก็สามารถใช้ได้แล้วครับ
ถ้าใครไม่อยาก Compile เองตัว Firmware ที่สำเร็จรูปจะอยู่ในโฟลเดอร์ "\Firmware\default" โดยต้องกำหนด Fuse bit ดังนี้
|
การกำหนด fuse bit |
Software ส่วนของ Computer
ในขั้นแรกเราต้องติดตั้ง Driver ก่อน เนื่องจากตัว Driver เดิมที่ Windows ติดตั้งให้อัตโนมัติ ไม่สามารถใช้ได้ ผมได้สร้าง Driver ให้เรียบร้อยแล้วโดยมันจะอยู่ใน folder - windows driver
หลังจากติดตั้ง Driver เสร็จเรียบร้อยจะมีอุปกรณ์ใหม่ขึ้นมาดังรูปที่ได้วงสีม่วงไว้
|
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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น