วันอาทิตย์ที่ 12 พฤษภาคม พ.ศ. 2556

USB LCD Controller

โปรเจคที่ผมจะนำมาเสนอวันนี้คือ 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" ครับ
เมื่อเปิดโปรแกรม จะมีหน้าตาดังรูป


  วิธีการใช้งานมีดังนี้
  1. กดที่ Open USB
  2. ที่ Groupbox - Command จะสามารถกดได้ 
    1. ถ้าอยากส่งข้อความให้กดที่ LCD Put String 
    2. ปรับความเข้มของตัวอักษรให้เลื่อนแถบ Contrast โดยถ้ายิ่งไปทางขวามือตัวอักษรในจอจะยิ่งจาง
    3. ปรับความสว่างของไฟส่องจอให้เลื่อนแถบ Backlight ทางซ้ายสุดไฟจะดับ ทางขวาสุดจะสว่างที่สุดครับ
แหล่งข้อมูล


  1. VUSB
  2. Metaboard
  3. libusb-win32
  4. LibUsbDotNet C# USB Library