สร้าง Smart Card Reader

บทความต่อไปนี้มีไว้เพื่อการศึกษานะครับ

บัตรที่นำมาทดสอบ

บทนี้เป็นการสร้าง Smart Card Reader เพื่อการนำไปใช้งานจริงๆ Smart Card Reader นี้สามารถอ่านข้อมูลจากบัตรโทรศัพท์ (TOT Card) ได้ ข้อมูลที่อ่านได้จะมี Serial Code , วันหมดอายุ , Customer Code และข้อมูลอื่น ๆ ที่ผมยังไม่สามารถตีความหมายออกมาได้ ผลของข้อมูลที่อ่านได้มีลักษณะดังต่อไปนี้

ข้อมูลที่แสดงผลอยู่ในรูปของรหัส ASCII เราจำเป็นต้องเปิดตารางแปลงรหัสไปเป็น HEX File เสียก่อน นอกจากนี้ Smart Card Reader ตัวนี้ยังสามารถใช้งานเป็นคีย์การ์ดอีกด้วย โดยสามารถใช้บัตรโทรศัพท์ 4 ใบในการเปิดปิดอุปกรณ์ ในการทำเป็นคีย์การ์ด ต้องไป Edit Code ใน Software เสียก่อน

1. ออกแบบ Hardware

ผมได้ออกแบบ Hareware ไว้แล้วซึ่ง Hardware ตัวนี้ได้ดัดแปลงมาจากหนังสือวารสารเซมิคอนดักเตอร์ เล่มที่ 240 ซึ่งตัวที่ผมดัดแปลงมานี้ทำให้ประหยัดมากขึ้นโดย ตัดจอ LCD ทิ้งไป แล้วใช้การแสดงผลทางโปรแกรม Hyper Terminal แทน ได้ลดความยุ่งยากในการ Interface กับจอ และผมก็ตัด RAM ทิ้งไปด้วย เพื่อลดขนาดและความซับซ้อนของวงจร Hardware ตัวนี้สามารถใช้กับสมาร์ตการ์ดได้หลาย ๆ เบอร์ ดังนั้นถ้าจะดัดแปลงไปใช้กับสมาร์ตการ์ด ชนิดอื่นก็เปลี่ยนเพียงตัว Software ที่ใช้ใส่ในตัวไมโครคอนโทรลเลอร์เท่านั้น หัวใจของ Smart Card reader อยุ่ที่ตัวไมโครคอนโทรลเลอร์ ไม่ว่าจะเป็นการสร้างสัญญาณนาฬิกาให้การ์ด รับและเก็บข้อมูล ประมวลผล ไมโครคอนโทรลเลอร์เบอร์ AT89C52 จะทำหน้าที่ทั้งหมด วงจรสมบูรณ์แบบของ Smart Card Reader ดังรูปข่างล่างนี้

2. ออกแบบ Software

ผมใช้ภาษา Assembly ในการเขียน Software โปรแกรม เพราะต้องการความรวดเร็วในการประมวลผล สำหรับ Software นั้นผมได้ดัดแปลงจากวารสารเซมิคอนดักเตอร์มา ซึ่งดึงมาแต่ส่วนรีเซต , รับข้อมูล ส่วนของการแสดงผลนั้นได้ดัดแปลงมาจากหนังสือเรียนรู้และปฏิบัติการไมโครคอนโทรลเลอร์ MCS-51 แบบแฟลช Innovative Experiment Co.,Ltd ท่านสมารถมา Download Code ได้ที่นี่ เมื่อท่านดาวน์โหลด Code ท่านจะต้อง Burn ลงไมโครคอนโทรลเลอร์เสียก่อน จึงจะสามารถใช้งานได้ download โปรแกรม

2.1ออกแบบการอินเตอร์เฟส
ใช้รูปแบบของการอินเตอร์เฟสแบบ Asynchronous เป็นการสื่อสารข้อมูลในรูปของตัวอักขระแอสกี้ (ASCII) โดยผ่านสายข้อมูลไปที่ตำแหน่งขา SDA ของสมาร์ตการ์ดด้วยรูปแบบ Asynchronous half duplex mode ตัวอักขระแต่ละตัวมีขนาด 8 บิต การอินเตอร์เฟสแบบนี้ทำงานโดยอาศัยสัญญาณนาฬิกาที่มาจากเครื่องอ่าน ในการสื่อสารแบบ I2C BUS สัญญาณ SDA จะเปลี่ยนแปลงได้ในช่วงที่ SCL มีลอจิกต่ำเท่านั้น ในช่วงที่ SCL มีลอจิกสูงสัญญาณ SDA จะมีค่าคงที่ การอ่านข้อมูลจากการ์ดจึงต้องทำในช่วงที่ SCL มีลอจิกสูงเท่านั้น สมาร์ตการ์ดแบบที่ใช้ในบัตรโทรศัพท์ เป็นสมาร์ตการ์ดที่มีข้อมูลไม่มาก จึงไม่ต้องใช้ความเร็วในการอ่านมาก ทำให้ข้อผิดพลาดจากการอ่านแทบจะไม่มีเลยก็ว่าได้ ด้วยเหตุผลประการนี้ทำให้สมาร์ตการ์ดชนิดนี้ ไม่ต้องการการตอบกลับจากอุปกรณ์รับข้อมูล(Acknowledge Bit) ก่อนที่จะอ่านข้อมูลอุปกรณ์มาสเตอร์จะต้องทำให้สาย SDA มีสถานะเป็นลอจิกสูง ถ้าอุปกรณ์สเลฟต้องการส่งสัญญาณลอจิกต่ำออกไปก็จะ ดึงสัญญาณที่สาย SDA ให้มีสถานะลอจิกต่ำ ถ้าไม่มีการดึงสัญญาณที่สาย SDA ให้ลงต่ำแสดงว่าข้อมูล SDA จากอุปกรณ์สเลฟมีค่าเป็นลอจิกสูง กระบวนการอ่านจะทำอย่างนี้เรื่อยไปจนกว่าจะครบ 48 ไบต์

2.2 ออกแบบการเก็บข้อมูล
ข้อมูลที่อ่านได้จากการ์ดทั้งหมดมีเพียง 48 ไบต์ ซึ่งเพียงพอที่จะเก็บไว้ในหน่วยความจำภายในของไมโครคอนโทรลเลอร์ เนื่องจากการอ่านข้อมูลจะทำการอ่านข้อมูลเรียงลำดับจากไบต์แรกไปยังไบต์สุดท้าย จึงต้องมีตัวชี้ในการเก็บข้อมูล ในที่นี้ใช้ R0 ในการชี้ตำแหน่ง และตัวชี้นี้ก็ต้องเพิ่มตำแหน่งแอดเดรสขึ้นทีละหนึ่งค่าไปเรื่อยๆ จนกว่าจะอ่านข้อมูลจากการ์ดจบ

2.3 ออกแบบการแสดงผลและการรับส่งข้อมูลอนุกรมของ 89C52
ในการที่จะนำข้อมูลที่เก็บไว้ที่หน่วยความจำภายในออกมาแสดงผล วิธีการที่ง่าย , รวดเร็ว และประหยัด คือแสดงผลผ่านทางคอมพิวเตอร์โดยใช้โปรแกรม Hyper Terminal ในการแสดงผลซึงค่าที่แสดงผลคือค่าอักขระแอสกี้ (ASCII Code) ในการส่งข้อมูลระหว่างอุปกรณ์มาสเตอร์กับอุปกรณ์แสดงผลจะต้องแปลงระดับสัญญาณของทั้งสองอุปกรณ์ให้มีค่าเหมาะสมเสียก่อนคือแปลงระดับสัญญาณจากระดับ TTL ไปเป็นระดับของ RS-232 และในทำนองเดียวกันก็รับระดับสัญญาณจาก RS-232 เพื่อแปลงเป็นระดับสัญญาณจาก TTL ให้กับไมโครคอนโทรลเลอร์ได้ซึ่งสามารถใช้ไอซีสำเร็จรูปได้ไอซีที่ใช้คือเบอร์ DS275 ในการรับ-ส่งข้อมูลต้องกำหนดบอดเรตที่จะใช้ให้เท่ากันเสียก่อน ซึ่งบอตเรตที่เหมาะสมกับการสื่อสารแบบนี้คือบอตเรตเท่ากับ 9,600 บิตต่อวินาที ในการส่งข้อมูลจากหน่วยความจำภายในไปออกที่โปรแกรม Hyper Terminal ซึ่งข้อมูลมีไม่มาก และไม่ต้องการความเร็วในการแสดงผลมากนัก จึงใช้วิธีวนโปรแกรมตรวจสอบแฟลก ตรวรสอบว่าแฟลก TI ว่าถูกเซ็ตหรือไม่ ถ้าถูกเซ็ตแสดงว่ามีการส่งข้อมูลแล้ว จากนั้นให้ทำการเคลียร์แฟลก แล้วทำการส่งข้อมูลตัวถัดไปเรื่อยๆ จนกว่าจะครบ

3.การประกอบ

จากลักษณะของวงจรที่ได้แสดงไปนั้นไม่มีความซับซ้อนมากผมเลือกต่อในปริ๊นสำเร็จรูป แล้ว wire สายเอาแทน ส่วนของ Socket ที่นำมาเสียบบัตร หาซื้อได้ที่บ้านหม้อพลาซ่า ราคาประมาณ 200 บาท สำหรับสายที่ต่อกับตัว Reader กับ Computer ไม่ได้กล่าวมาในที่นี้ ใช้การต่อแบบอนุกรมทั่วๆ ไป

หากมีข้อสงสัยติดต่อ E-mail:[email protected]

รับโปรแกรมไอซีไมโครคอนโทรลเลอร์ (Burn) เบอร์ ราคาดังกล่างรวมค่าจัดส่งและไอซีแล้ว

Burn 10 ตัวขึ้นไปลด 20% ติดต่อ 0-6640-4025

AT89C1051 ราคา 100 บาท
AT89C1052 ราคา 130 บาท
AT89C51 ราคา 130 บาท
AT89C512 ราคา 150 บาท
AT89C55 ราคา 200บาท
AT89S8252 ราคา 250 บาท



Copyright © 2003 Aon micro. All rights reserved

E-mail:[email protected]

 

 

Hosted by www.Geocities.ws

1