สารบัญ:

กระเป๋าเงินอิเล็กทรอนิกส์: 3 ขั้นตอน
กระเป๋าเงินอิเล็กทรอนิกส์: 3 ขั้นตอน

วีดีโอ: กระเป๋าเงินอิเล็กทรอนิกส์: 3 ขั้นตอน

วีดีโอ: กระเป๋าเงินอิเล็กทรอนิกส์: 3 ขั้นตอน
วีดีโอ: E-wallet | กระเป๋าเงินอิเล็กทรอนิกส์ | CT1 กลุ่มที่ 3 2024, มิถุนายน
Anonim
กระเป๋าเงินอิเล็กทรอนิกส์
กระเป๋าเงินอิเล็กทรอนิกส์

หมายเหตุ: ตอนนี้ฉันมี Instructables ที่เสนอรหัส Arduino สำหรับ RC522 และ PN532

ในโพสต์ก่อนหน้าของฉัน ฉันให้รายละเอียดพื้นฐานสำหรับการสื่อสารกับโมดูล MFRC522 และ PN532 RFID เพื่ออ่าน/เขียนข้อมูลจากแท็ก Mifare Classic 1k ในโพสต์นี้ ฉันจะก้าวไปอีกขั้นหนึ่งและแสดงวิธีใช้โมดูลเหล่านั้นเพื่อสร้างกระเป๋าเงินอิเล็กทรอนิกส์จากแท็ก เช่นเดียวกับโพสต์ก่อนหน้า สิ่งนี้ถูกนำเสนอเป็นการใช้งานพื้นฐาน แต่ควรเป็นพื้นฐานสำหรับแอปพลิเคชันที่หลากหลายซึ่งต้องการฟังก์ชันเพิ่ม/ลด หรือการนับ

ขั้นตอนที่ 1: ความสมบูรณ์ของข้อมูล

สำหรับกระเป๋าเงินอิเล็กทรอนิกส์มีข้อกังวลอยู่เสมอว่าบางคนอาจเพิ่มเครดิตโดยไม่ต้องจ่ายเงิน นอกจากนี้ยังมีข้อกังวลว่าเครดิตบนแท็กอาจเสียหายโดยไม่ได้ตั้งใจระหว่างการเขียนข้อมูล การเข้าถึงข้อมูลต้องใช้คีย์แท็ก ดังนั้นจำเป็นต้องเปลี่ยนคีย์ดีฟอลต์เมื่อแท็กเริ่มต้นในครั้งแรก มีบทความออนไลน์ที่พูดถึงวิธีแฮ็คแท็ก แม้ว่าคุณจะไม่ทราบรหัส แต่เทคนิคนี้ไม่สำคัญ ฉันไม่แนะนำให้ใช้แท็กเหล่านี้สำหรับบัญชีธนาคารของคุณ แต่แท็กเหล่านี้ดีพอสำหรับแอปพลิเคชันที่มีความเสี่ยงน้อยกว่ามากมาย

ความน่าจะเป็นของความเสียหายของข้อมูลค่อนข้างน้อย แต่ซอฟต์แวร์ควรจะสามารถจัดการกับกรณีพื้นฐานได้เป็นอย่างน้อย กระบวนการนี้เกี่ยวข้องกับสองขั้นตอนด้วยขั้นตอนแรกในการตรวจจับการทุจริต ในโครงการนี้ที่จัดการโดยการจัดเก็บทั้งมูลค่าเครดิตและส่วนเสริมของมูลค่าเครดิต 1 ที่ช่วยให้เปรียบเทียบค่าได้ง่าย ขั้นตอนที่สองคือการจัดเก็บเวอร์ชันสำรองของทั้งมูลค่าเครดิตและส่วนเสริม ที่ช่วยให้สามารถดำเนินการกู้คืนได้หากเครดิตชุดแรกเสียหาย หากทั้งสองชุดเสียหาย ซอฟต์แวร์จะพยายามเริ่มต้นแท็กใหม่ซึ่งส่งผลให้สูญเสียเครดิตทั้งหมด

ขั้นตอนที่ 2: ฮาร์ดแวร์

ฮาร์ดแวร์
ฮาร์ดแวร์

การเชื่อมต่อฮาร์ดแวร์แสดงในแผนภาพด้านบน นี่เป็นการตั้งค่าเดียวกันกับโพสต์ก่อนหน้าด้วยการเพิ่มสวิตช์สองตัวและตัวต้านทานแบบดึงขึ้น สวิตช์ตัวเดียวไม่จำเป็นต้องใช้ตัวต้านทานแบบดึงขึ้นเนื่องจากอยู่ในอินพุต PIC ที่มีความสามารถในการดึงขึ้นที่อ่อนแอ ในทางปฏิบัติสวิตช์ทั้งสองจะถูกซ่อนไว้เนื่องจากใช้สำหรับเพิ่มเครดิตและสำหรับการเริ่มต้นแท็ก สวิตช์เริ่มต้นเป็นทางเลือก (ในการทำศูนย์เครดิตด้วยตนเอง) เนื่องจากซอฟต์แวร์สามารถตรวจจับและเริ่มต้นแท็กใหม่ได้ด้วยตัวเอง สามารถใช้จัมเปอร์พินแทนสวิตช์ได้

ขั้นตอนที่ 3: ซอฟต์แวร์

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

การตรวจสอบความถูกต้องของแท็กต้องใช้ "คีย์ A" สำหรับเซกเตอร์ข้อมูลเป้าหมาย คีย์เริ่มต้นสำหรับแท็ก Mifare Classic 1k คือ "FF FF FF FF FF FF" แต่ควรเปลี่ยนสำหรับแอปพลิเคชันของคุณ ซอฟต์แวร์ให้คำจำกัดความสำหรับทั้งคีย์เริ่มต้นและคีย์ใหม่ (“My_Key”) เพียงเสียบค่าใดๆ ที่คุณต้องการลงใน “My_Key” ซอฟต์แวร์พยายามตรวจสอบความถูกต้องของแท็กก่อนเสมอโดยใช้ “My_Key” หากล้มเหลว รูทีนเพื่อเริ่มต้นแท็กจะถูกเรียกและคีย์ดีฟอลต์จะใช้สำหรับการตรวจสอบสิทธิ์ รูทีนการเริ่มต้นจะเปลี่ยนคีย์เป็น "My_Key" และตั้งค่าเครดิตเป็นศูนย์ หากคุณมีแท็กที่มีคีย์ที่ไม่ใช่ค่าเริ่มต้นและคุณไม่รู้ว่าคืออะไร แท็กนั้นจะไม่สามารถตรวจสอบสิทธิ์ได้ หากเกิดเหตุการณ์นี้ขึ้น คุณอาจต้องการตรวจสอบภาคข้อมูลอื่นๆ โดยใช้คีย์เริ่มต้นเพื่อดูว่ามีอยู่หรือไม่ บล็อกตัวอย่าง บล็อกข้อมูล และบล็อกสำรองถูกกำหนดไว้ที่จุดเริ่มต้นของรายการซอฟต์แวร์ ดังนั้นคุณจึงสามารถเปลี่ยนแปลงได้อย่างง่ายดาย

รูปแบบของข้อมูลที่จัดเก็บไว้ในแท็กสำหรับแอปพลิเคชันนี้ใช้เฉพาะตัวเลขที่เป็นบวก (ไม่อนุญาตให้มีการขาดดุล) และค่าจะถูกจัดเก็บเป็น BCD สี่ไบต์ (Binary Coded Decimal) ที่อนุญาตให้มีช่วงเครดิตตั้งแต่ 0 ถึง 99, 999, 999 (สองหลักต่อไบต์) มูลค่าเครดิตและส่วนเสริม 1 ใช้เพียง 8 จาก 16 ไบต์ในบล็อกข้อมูลเดียว และส่วนที่เหลือจะถูกเติมด้วยศูนย์ มีที่ว่างในบล็อกข้อมูลเดียวกันสำหรับสำเนาสำรอง แต่ฉันตัดสินใจว่าจะปลอดภัยกว่าที่จะสำรองข้อมูลในบล็อกข้อมูลแยกต่างหาก บล็อกสำรองอยู่ในเซกเตอร์เดียวกับบล็อกข้อมูล ดังนั้นจึงไม่จำเป็นต้องมีการตรวจสอบสิทธิ์แยกต่างหาก เพื่อความปลอดภัยยิ่งขึ้น คุณอาจลองใส่ข้อมูลสำรองในเซกเตอร์ข้อมูลอื่น แต่จำเป็นต้องมีขั้นตอนการตรวจสอบสิทธิ์แยกต่างหากเพื่อเข้าถึงข้อมูลนั้น

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

ค่าการเพิ่มขึ้นและการลดลงถูกกำหนดไว้ใกล้กับด้านหน้าของรายการ และคาดว่าจะอยู่ใน BCD ที่บรรจุ รูทีนที่ทำการเพิ่มและลดอย่างมีประสิทธิภาพจะทำในตัวเลข 32 บิต คณิตศาสตร์นั้นง่ายมาก แต่ต้องใช้รูทีนเพื่อปรับผลลัพธ์สำหรับการดำเนินการภายในแต่ละไบต์ของ BCD ที่แพ็กและจากหนึ่งไบต์ไปยังไบต์ถัดไป ทำได้โดยการใช้มาโคร DAA (Decimal Adjust Addition) และ DAS (Decimal Adjust Subtraction) มาโครเหล่านี้ช่วยให้แน่ใจว่าตัวเลข BCD 4 บิตแต่ละหลักอยู่ในช่วง 0-9 เสมอ

นอกเหนือจากข้อความที่แสดงในโพสต์ก่อนหน้า แอปพลิเคชันนี้มีข้อความสำหรับขั้นตอนเพิ่มเติมจำนวนมาก โดยเฉพาะอย่างยิ่งหากมีข้อผิดพลาดของข้อมูลและ/หรือแท็กจำเป็นต้องได้รับการแก้ไขหรือเริ่มต้น เครดิตยังแสดงก่อนและหลังขั้นตอนการเพิ่ม/ลด เพื่อให้คุณสามารถเห็นการเปลี่ยนแปลงค่า

แค่นี้แหละสำหรับโพสต์นี้ ตรวจสอบโครงการอิเล็กทรอนิกส์อื่นๆ ของฉันได้ที่: www.boomerrules.wordpress.com

แนะนำ: