โครงงาน

ระบบผ่านประตูด้วย RFID ควบคุมโดย Raspberry Pi

อภิรักษ์ นามแถ่ง

 

 

ระบบผ่านประตูด้วย RFID ทางวารสารเคยตีพิมพ์มาแล้วหลายเวอร์ชันและใช้คอนโทรลเลอร์แตกต่างกันไป ไม่ว่าจะเป็น PIC, AVR และ Arduino เป็นต้น ซึ่งในโครงงานนี้จะเป็นการนำเอาบอร์ด Raspberry Pi ที่เป็นหนึ่งในบอร์ดควบคุมมาลองใช้งานกันบ้าง เพื่อไม่เป็นการเสียเวลาเชิญอ่านต่อได้เลยครับ

 

     โครงงานนี้จะเป็นการหยิบเอาบอร์ด Raspberry Pi มาใช้งาน หลายท่านอาจจะคุ้นชินกับระบบผ่านประตูด้วย RFID จากวารสารของเรามาแล้ว แต่นั่นเป็นการใช้คอนโทรลเลอร์ที่แตกต่างกันออกไปรวมถึงวงจรการทำงานด้วย ซึ่งมาถึงโครงงานนี้ผู้เขียนได้นำบอร์ด Raspberry Pi มาใช้งานร่วมกับ RFID Card Reader/Detector Module Kit (RC522) การจัดเก็บรหัสบัตร RFID ใช้โปรแกรม MySQL มาจัดการกับระบบฐานข้อมูล รวมถึงการกำหนดบัตร Master ขึ้นมา 1 ใบไว้สำหรับเพิ่มหรือลบการ์ดในระบบ ข้อดีคือไม่จำเป็นต้องแก้ไขซอร์สโค้ดอีกเมื่อต้องการเพิ่มหรือลบการ์ด RFID

 

          บอร์ด Raspberry Pi ปัจจุบันสามารถรองรับระบบปฏิบัติการ (Operating System) ทั้งวินโดวส์ (Windows 10 IoT) และลินุกซ์ (Linux) ซึ่งโครงงานนี้ผู้เขียนจะลงระบบปฏิบัติการลินุกซ์ Raspbian Jessie โดยติดตั้งบน SD Card ท่านสามารถดาวน์โหลดไฟล์ติดตั้งได้ฟรีที่เว็บไซต์ https://www.raspberrypi.org/downloads/raspbian/ ผู้เขียนจะขออธิบายการติดตั้งลินุกซ์ลงบน SD Card สำหรับท่านที่ยังไม่คุ้นหรือยังไม่เคยติดตั้งมาก่อน เพื่อเป็นแนวทางและการทำงานที่ง่ายขึ้น

 

 

รูปที่ 1 บอร์ด Raspberry Pi 2 Model B

 

การลง Linux และตั้งค่าให้กับ Raspberry Pi

 

          สำหรับโครงงานนี้จะใช้บอร์ด Raspberry Pi 2 Model B ขั้นแรกจะต้องลงปฏิบัติการ Linux ให้กับบอร์ด Raspberry Pi เสียก่อน ซึ่งในโครงงานนี้จะใช้ระบบปฏิบัติการ Raspbian Jessie สามารถเข้าไปดาวน์โหลดได้ที่เว็บไซต์ https://www.raspberrypi.org/downloads/raspbian (ดังรูปที่ 2) เพื่อเตรียมสำหรับติดตั้งใน SD Card ซึ่งผู้เขียนใช้รุ่นเวอร์ชัน 2016-03-18 เนื่องจากในเวอร์ชันนี้ได้ติดตั้ง Python 2.7 และ RPi.GPIO (โมดูลสำหรับอินเตอร์เฟสกับพอร์ต GPIO ของ Raspberry Pi) มาไว้เรียบร้อยในตัวแล้ว จึงสะดวกกับงานของเราอย่างมาก

 

 

รูปที่ 2 หน้าเว็บไซต์สำหรับดาวน์โหลดระบบปฏิบัติการ Raspbian Jessie

 

          อย่างที่รู้กันดีว่าบอร์ด Raspberry Pi ไม่มีหน่วยความจำแบบแฟลชเมมโมรี่ ดังนั้นจำเป็นที่จะใช้ SD Card ภายนอก ซึ่งหากเปรียบเทียบกับคอมพิวเตอร์ SD Card นี้ก็จะเปรียบเสมือนฮาร์ดดิสก์นั่นเอง การลงระบบปฏิบัติการรวมถึงการโปรแกรมหรือข้อมูลต่างๆ จะถูกจัดเก็บไว้ใน SD Card นี้ทั้งหมด ดังนี้ความเร็วในการสื่อสารรวมถึงคุณภาพของ SD Card ก็เป็นสิ่งที่ต้องคำนึงถึง ซึ่งโครงงานนี้ผู้ใช้เลือกการ์ดที่เป็น Class 10 ที่ความจุ 8GB เพื่อให้การใช้งาน Raspberry Pi มีประสิทธิภาพมากที่สุด อีกทั้งราคาขอวงการ์ด Class 10 กับ Class 4 นั้นราคาไม่ได้ต่างกันมากเท่าไรนัก

 

 

รูปที่ 3 ตัวอย่างหน้าต่างโปรแกรม SD Formatter Version 4.0

 

 

รูปที่ 4 ตัวอย่างโปรแกรม Win32 Disk Imager

 

 

รูปที่ 5 เลือกตำแหน่งไฟล์ Image เพื่อลงระบบปฏิบัติการ Raspbian Jessie

 

 

รูปที่ 6 ระหว่างการติดตั้งระบบปฏิบัติการ Raspbian ลง SD Card

 

 

รูปที่ 7 หน้าต่างแสดงเมื่อติดตั้ง Raspbian สำเร็จ

 

ขั้นตอนการติดตั้ง Raspbian Jessie

 

  1. โปรแกรม SD Formatter 4.0 ใช้สำหรับ Format Disk สามารถดาวน์โหลดได้จากลิงค์ https://www.sdcard.org/downloads/formatter_4/eula_windows/
  2. โปรแกรม Win32 Disk Imager ใช้สำหรับเขียนไฟล์ระบบปฏิบัติการที่เป็นไฟล์ Image (*.img) ลงบน SD Card สามารถดาวน์โหลดได้จากลิงค์ http://sourceforge.net/projects/win32diskimager/
  3. ดาวน์โหลดไฟล์ระบบปฏิบัติการ Raspbian Jessie เวอร์ชัน 2016-03-18 ที่ถูกปรับแต่งให้ใช้สำหรับบอร์ด Raspberry Pi โดยเฉพาะเป็น Linux ที่ให้ใช้งานได้ฟรี สามารถดาวน์โหลดได้จากลิงค์ https://www.raspberrypi.org/downloads/raspbian/
  4. จากนั้นให้ Browse ไฟล์ Image ระบบปฏิบัติการ Raspbian Jessie เวอร์ชัน 2016-03-18 (*img) และเลือก Device ให้ถูกต้อง แล้วคลิกปุ่ม Write แสดงดังรูป และจะปรากฏหน้าต่างยืนยัน ให้คลิกปุ่ม Yes
  5. เมื่อเสร็จสิ้นขั้นตอนการลง Raspbian แล้วให้เสียบ SD Card ที่เตรียมไว้ลงในช่องซ็อกเก็ตของบอร์ด Raspberry Pi
  6. ให้เสียบสาย Ethernet จากโมเด็มเข้าบอร์ด Raspberry Pi
  7. ป้อนแหล่งจ่ายให้กับบอร์ด Raspberry Pi

 

 

รูปที่ 8 การเชื่อมต่อสาย Ethernet และแหล่งจ่ายบอร์ด Raspberry Pi

 

 

 รูปที่ 9 หน้าต่างซอฟต์แวร์ TeraTerm โดยเราจะต้องกรอก IP Address ของบอร์ด ลงที่ช่อง Host

 

          หลังจากที่เชื่อมต่อสาย Ethernet และจ่ายไฟให้กับ Raspberry Pi (ดังรูปที่ 8) เรียบร้อยแล้ว คราวนี้ก็มาเตรียมโปรแกรมทางฝั่งคอมพิวเตอร์ของเรา โดยให้ติดตั้งโปรแกรม TeraTerm (สามารถดาวน์โหลดได้ที่เว็บไซต์ https://en.osdn.jp/projects/ttssh2/releases/) เพื่อไว้สำหรับใช้รีโมต Login (remote login) มายัง Raspberry Pi โดยให้คลิ๊กเปิด TeraTerm ขึ้นมาแล้วให้เติม IP Address ของบอร์ดลงที่ช่อง Host จากนั้นคลิ๊ก Open ดังรูปที่ 9

 

 

รูปที่ 10 หน้าต่าง Login ของซอฟต์แวร์ TeraTerm โดยให้กรอก User name และ Passphrase เป็น pi และ raspberry

 

          เมื่อคอมพิวเตอร์เชื่อมเข้ากับบอร์ดได้สำเร็จ ที่หน้าต่าง Login ของ TeraTerm จะถูกเปิดขึ้นมาอย่างอัตโนมัติ (รูปที่ 10) ให้ผู้ใช้เติมที่ช่อง User name และ Passphrase เป็น pi และ raspberry ตามลำดับ จากนั้นคลิ๊ก OK อีกครั้ง ถ้าทุกอย่างถูกต้อง เราก็จะสามารถผ่านไปยังหน้าต่าง Terminal ของ Raspbian ได้แล้ว (รูปที่ 11)

 

 

รูปที่ 11 หน้าต่าง terminal ของ Raspbian ซึ่งจะถูกเปิดขึ้นมาหลังจาก remote Login ได้แล้ว

 

 

รูปที่ 12 หน้าต่างในการเซตค่าตั้งต้นด้วย raspi-config

 

          หลังจากการ Login หากเป็นการใช้งานเป็นในครั้งแรก ก็อาจต้องใช้คำสั่ง sudo raspi-config เพื่อตั้งค่าต่างๆ ให้กับบอร์ด Raspberry Pi ตามรายการต่อไปนี้ด้วยครับ (จากรูปที่ 12 ใช้ปุ่มลูกศรขึ้นลงเพื่อเลื่อนไปยังตัวเลือกที่ต้องการ และเลือกด้วยปุ่ม Enter) สิ่งที่จำเป็นต้องตั้งค่ามีอยู่ 4 ส่วน ได้แก่

  1. Expand Filesystem เพื่อขยายพื้นที่ใช้งานใน SD card เพื่อให้ Raspberry Pi สามารถใช้พื้นที่บน SD card ได้ทั้งหมด (หัวข้อที่ 1.)
  2. กำหนดให้บอร์ด Raspberry Pi ทำการ Login โดยอัตโนมัติ (ไม่ต้องป้อน Username และ Password) เพื่อให้บอร์ดเริ่มทำงานทันทีหลังจากป้อนแรงดัน (หัวข้อที่ 3.)
  3. Internationalisation Options > Change Timezone เพื่อตั้งค่า Timezone โดยให้เลือก Geographic area เป็น Asia และเลือก Time zone เป็น Bangkok (หัวข้อที่ 5.)
  4. จบการตั้งค่าโดยคลิ๊กปุ่ม Finish จากเมนูหลัก (กดปุ่มลูกศรทางขวา) จากนั้นเพื่อความมั่นใจให้รีบูต (reboot) บอร์ดด้วยคำสั่ง sudo reboot

 

          ขั้นต่อไป (remote login มายัง Raspberry Pi เข้ามาอีกรอบได้แล้ว) ให้ใช้คำสั่ง sudo rpi-update เพื่อตรวจสอบและอัพเดตเฟิร์มแวร์ของบอร์ดเป็นเวอร์ชันล่าสุด หลังจากการอัพเดต ก็จะต้อง reboot บอร์ดด้วยคำสั่ง sudo reboot ด้วยเช่นกัน

 

          จากนั้น จะต้องอัพเดตเครื่องมือที่ชื่อว่า pip ซึ่งเป็นเครื่องมือที่ช่วยให้การติดตั้งไลบรารี (library) สำเร็จรูปให้ไพธอน (Python เป็นภาษาคอมพิวเตอร์ที่ใช้ในการเขียนซอฟต์แวร์ในการทดลองนี้ครับ) นั้นทำได้ง่ายขึ้น โดยการอัพเดตที่ว่าก็ให้ใช้คำสั่ง

  • sudo pip install -U pip

 

การลงโปรแกรม MySQL

 

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

 

 

รูปที่ 13 คำสั่งสำหรับติดตั้ง MySQL server และไพธอนสำหรับสร้าง MySQL

 

          Mysql Server เป็นระบบฐานข้อมูลประเภทหนึ่ง โดยสามารถติดต่อสื่อสารและบันทึกข้อมูลลงในฐานข้อมูลนี้ด้วยคำสั่ง SQL แต่การติดตั้ง Mysql Server จะต้องอยู่ในสิทธิ์ที่จะสร้างไฟล์และแก้ไขไฟล์ได้ด้วยการติดตั้งจึงจะสมบูรณ์ด้วยเหตุนี้จึงจำเป็นต้องใช้สิทธิ์ root ในการติดตั้ง ซึ่งขั้นตอนแรกให้ติดตั้งโปรแกรม MySQL server และไพธอนสำหรับสร้าง MySQL โดยเฉพาะตามคำสั่งดังต่อไปนี้ (ดังรูปที่ 13)

 

  • sudo apt-get install mysql-server python-mysqldb

 

          ขณะที่กำลังติดตั้งนั้นจะมีหน้าต่างแสดงขึ้นมาถามเพื่อยืนยันการติดตั้ง (ในกรณีที่ผู้ใช้ยังไม่เคยติดตั้ง MySQL server ในเครื่องมาก่อน) ดังแสดงในรูปที่ 14 ให้ผู้ใช้กดปุ่ม Y และ Enter เพื่อยืนยันการติดตั้ง

 

 

รูปที่ 14 หน้าต่างยืนยันการติดตั้ง MySQL server

 

 

รูปที่ 15 หน้าต่างสำหรับป้อนรหัสผ่านเพื่อเข้าใช้งาน MySQL

 

          หลังจากนั้นจะมีหน้าต่างขึ้นมาให้เราใส่รหัสผ่านสำหรับเข้าใช้งานฐานข้อมูล ให้ใส่รหัสผ่านตามที่ต้องการ โดยจะต้องใส่ 2 ครั้ง ซึ่งในครั้งที่สองเป็นการยืนยันรหัสผ่าน ในโครงงานนี้ผู้เขียนใช้รหัสผ่านเป็น “semi” ดังจะเห็นในซอร์สโค้ดส่วนที่ติดต่อกับ MySQL สามารถดูได้จากซอร์สโค้ดไฟล์ mysql.py ที่ดาวน์โหลดไป

 

 

รูปที่ 16 การพิมพ์คำสั่งสำหรับเข้าใช้งาน MySQL และผลลัพธ์เมื่อเข้าใช้งานสำเร็จ

 

 

รูปที่ 17 การสร้างฐานข้อมูล

 

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

  

  • mysql -u root -p

 

          เมื่อเข้ามายัง MySQL ได้แล้วขั้นตอนต่อไปจะเป็นการสร้างฐานข้อมูลที่เราจะใช้เก็บรหัสบัตร RFID ทั้งหมดในระบบของเรา ในที่นี้ผู้เขียนจะสร้างชื่อของฐานข้อมูลเป็น ATTEND (ท่านผู้อ่านสามารถตั้งชื่ออื่นได้ตามต้องการ แต่การใช้งานจะต้องเรียกใช้ชื่อให้ถูกด้วย ไม่เช่นนั้นจะไม่สามารถใช้งานฐานข้อมูลได้) ดังคำสั่งด้านล่าง

 

  • CREATE DATABASE ATTEND;

 

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

 

  • USE ATTEND;

 

 

รูปที่ 18 การเรียกใช้งานฐานข้อมูล

 

 

รูปที่ 19 การสร้าง TABLE ในฐานข้อมูล

 

          จากนั้นให้ทำการสร้าง TABLE ขึ้นมาสำหรับเก็บรหัสบัตร ซึ่ง TABLE นี้จะเปรียบเสมือนคอลัมน์ในโปรแกรม Excel ในการเรียกใช้งานหรือจัดเก็บ นอกจากจะเรียกชื่อของฐานข้อมูลแล้วยังจะต้องอ้างถึง TABLE ด้วย ซึ่งโดยทั่วไปแล้วฐานข้อมูลอาจจะมีหลาย TABLE เพื่อแยกข้อมูลแต่ละแบบ แต่ในโครงงานของเรามีการจัดเก็บเพียงแค่ TABLE เดียว คือ รหัสของบัตร RFID แต่ถ้าท่านผู้ใช้ต้องการดัดแปลงอาจจะสร้าง TABLE สำหรับเก็บรหัสผ่านหรือเวลาขึ้นมาเพิ่มก็สามารถทำได้เช่นเดียวกัน ในการสร้าง TABLE จะต้องกำหนดประเภทของข้อมูลที่เราจะเก็บด้วย ซึ่งในโครงงานนี้ผู้เขียนกำหนดให้เป็น BIGINT เนื่องจากรหัสผ่านมีรูปแบบเป็นตัวเลขหลายหลักขึ้นอยู่กับผู้ผลิต แต่โดยทั่วไปแล้วจะไม่ต่ำกว่า 12 หลัก ดังนั้นจึงจำเป็นต้องกำหนดให้เป็น BIGINT ซึ่งท่านที่เคยเขียนโปรแกรมภาษา C อาจจะคุ้นกับตัวแปร Long นั่นเอง

 

          เมื่อมาถึงขั้นตอนนี้ก็แสดงว่าการสร้างฐานข้อมูลได้สำเร็จเรียบร้อยแล้ว สามารถออกจากโปรแกรม MySQL ได้โดยใช้คำสั่ง “quit” และระบบจะส่งข้อความ “Byte” กลับมาเพื่อยืนยันการออกจาก MySQL ดังแสดงในรูปที่ 20

 

 

รูปที่ 20 คำสั่งและหน้าต่างยืนยันการออกจาก MySQL

 

 

รูปที่ 21 วงจรสมบูรณ์

 

 

รูปที่ 22 ลายวงจรพิมพ์ด้านบน (Top Layer)

 

 

รูปที่ 23 ตำแหน่งการลงอุปกรณ์ด้านบน (Top Overlay)

 

 

รูปที่ 24 ตำแหน่งการลงอุปกรณ์ด้านล่าง (Bottom Overlay)

 

การประกอบ

 

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

 

          จะเห็นว่าอุปกรณ์มีเพียงไม่กี่ชิ้น แต่ถึงแม้ว่าอุปกรณ์ไม่เยอะแต่การลงอุปกรณ์นั้นจะค่อนข้างยุ่งยากพอสมควร จึงควรเริ่มลงอุปกรณ์จากตัวที่มีความสูงน้อยที่สุดก่อน อาทิเช่น ลวดจั๊ม (วางอยู่ด้าน Bottom Overlay) และตัวต้านทาน เป็นต้น จากนั้นจึงไล่เรียงตามลำดับความสูงจนกระทั่งครบทุกตัว

 

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

 

 

รูปที่ 25 การเลือก Advanced Options

 

 

รูปที่ 26 เลือกหัวข้อ A6 สำหรับเปิดใช้งาน SPI

 

 

รูปที่ 27 หน้าต่างยืนกันการเปิดใช้งาน SPI ให้เลือก Yes

 

 

รูปที่ 28 เปิดการใช้งาน device tree โดยเลือกที่หัวข้อ A5

 

การทดสอบ

 

          มาถึงขั้นตอนนี้จะเป็นการทดสอบการทำงานส่วนต่างๆ ของโครงงาน เนื่องจากโครงงานนี้ใช้งานพอร์ท SPI ของ Raspberry Pi สำหรับเชื่อมต่อกับโมดูล RFID ดังนั้นจะต้องทำการเปิดใช้งานพอร์ท SPI ก่อน โดยใช้คำสั่ง sudo raspi-config และเลือกไปยังหัวข้อที่ 9. Advanced Options ดังแสดงในรูปที่ 25 จากนั้นเลือกเปิดใช้งานพอร์ต SPI ดังรูปที่ 26 และสุดท้ายยืนยันการเปิดใช้งานดังแสดงในรูปที่ 27 เมื่อเสร็จแล้วก็ให้ทำการเปิดใช้งาน device tree ด้วย ดังแสดงในรูปที่ 28

 

 

รูปที่ 29 คำสั่งการโหลดกระเป๋า SPI-Py

 

การติดตั้งโปรแกรมทดสอบการอ่าน RFID

 

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

 

          เมื่อแตกไฟล์แล้วจะได้กระเป๋าชื่อ SemiRFID มา ซึ่งภายในจะประกอบไปด้วยไฟล์ซอร์สโค้ดและไฟล์ที่ใช้งานร่วมกับโครงงานนี้ด้วย ซึ่งจะขอพักรายละเอียดส่วนนี้ไว้ก่อนและจะกล่าวในขั้นตอนต่อไป ขั้นตอนต่อไปให้ดาวน์โหลดแพ็กเกจ SPI-Py สำหรับเขียนโปรแกรมไพธอนเพื่อใช้งานพอร์ท SPI ด้วยคำสั่ง git clone ดังแสดงในรูปที่ 29

 

 

          เมื่อโหลดเสร็จแล้วให้เข้าไปยังกระเป๋า SPI-Py ด้วยคำสั่ง cd SPI-Py ตามด้วยการติดตั้งแพ็กเกจ SPI-Py ด้วยคำสั่ง

 

  • sudo python setup.py install

 

 

รูปที่ 30 การติดตั้ง SPI-Py และผลลัพธ์ที่ถูกต้อง

 

          จะได้ผลลัพธ์ดังแสดงดังรูปที่ 30 แต่ถ้าการติดตั้งเกิดความผิดพลาดแสดงว่าแพ็กเกจ python-dev ไม่มีในเครื่อง ถ้าเป็นเช่นนี้ให้ทำการติดตั้งแพ็กเกจนี้ก่อนด้วยคำสั่ง

 

  • sudo apt-get install python-dev

 

 

รูปที่ 31 การแตกไฟล์ในกระเป๋า bcm2835-1.50.tar.gz

 

 

รูปที่ 32 เช็คความพร้อมของไฟล์

 

 

รูปที่ 33 การติดตั้งไลบรารี่สำหรับ Broadcom BCM2835

 

          ต่อด้วยการติดตั้งไลบรารี่สำหรับ Broadcom BCM2835 ซึ่งโดยปกติแล้วไฟล์นี้จะต้องดาวน์โหลดจากเว็บไซต์ http://www.airspayce.com/mikem/bcm2835/ (ปัจจุบันเวอร์ชันล่าสุด คือ 1.50) แต่เนื่องจากผู้เขียนเห็นว่าขั้นตอนทับซ้อนกัน เลยลดขั้นตอนให้ท่านผู้อ่านโดยได้ใส่ไว้ในกระเป๋า SemiRFID ที่ท่านได้ดาวน์โหลดมาก่อนหน้านี้แล้ว ทำได้โดยคำสั่งดังต่อไปนี้ (แสดงในรูปที่ 31-33)

  • cd SemiRFID
  • tar zxvf bcm2835-1.50.tar.gz
  • cd bcm2835-1.50
  • ./configure
  • make
  • sudo make check
  • sudo make install
  • sudo reboot

 

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

  • cd SemiRFID
  • cd MFRC522-python
  • sudo python read.py

 

 

รูปที่ 34 ผลลัพธ์ที่ถูกต้องในส่วนของการอ่านข้อมูลจากบัตร RFID

 

 

รูปที่ 35 การเรียกโปรแกรมซอร์สโค้ดหลักมาแก้ไข

 

 

รูปที่ 36 ซอร์สโค้ดส่วนรหัสบัตร MASTER ที่จะต้องแก้ไขให้เครื่องของท่านใช้งานได้

 

          ให้นำบัตร RFID ที่ต้องการกำหนดให้เป็นบัตร Master (บัตรที่มีสิทธิ์เพิ่มหรือลบการ์ดตัวอื่น) หากถูกต้องจะได้ผลลัพธ์ดังแสดงในรูปที่ 34 ซึ่งข้อมูลที่แสดงนั้นเป็นข้อมูลรหัสภายในของบัตร RFID เมื่อได้ดังที่กล่าวมานี้ให้จดรหัสบัตรเอาไว้ เพราะเราจะต้องเอารหัสนี้ไปใส่ไว้ในซอร์สโค้ดหลักของเราเพื่อกำหนดเป็นบัตร Master เมื่อมาถึงขั้นตอนนี้แสดงว่าโครงงานเราสำเร็จมากกว่า 50% แล้ว แต่ก่อนจะไปทดสอบในขั้นตอนอื่นให้แก้ไขซอร์สโค้ดในส่วนของบัตร Master เสียก่อนโดยใช้คำสั่งดังต่อไปนี้

 

  • cd SemiRFID
  • nano MainSemiRFID.py

 

          จากนั้นจะได้หน้าต่างใหม่ขึ้นมา ซึ่งหน้าต่างนี้จะเป็นซอร์สโค้ดหลักของเรา ให้ผู้ใช้แก้ไขในส่วนของตัวแปร MASTER_TAG (ในกรอบดังรูปที่ 36) โดยนำรหัสที่ได้จากการรันโปรแกรม read.py ดังขั้นตอนก่อนหน้านี้มาใส่แทนค่าเดิมที่เป็นซอร์สโค้ดต้นฉบับ เสร็จแล้วให้ออกจากซอฟต์แวร์ nano โดยให้กดปุ่ม ‘CTRL-X’ (เพื่อเลือกปิด) จากนั้นกดปุ่ม ‘Y’ (เพื่อ ตกลง บันทึกการแก้ไข) แล้วกดปุ่ม 'ENTER'

 

ทดสอบการทำงานของระบบโดยรวม

 

          ขั้นตอนนี้จะเป็นการทดสอบระบบโดยรวม กล่าวคือ การอ่านค่าจากบัตร RFID, การเปรียบเทียบรหัสที่อ่านมาได้กับฐานข้อมูล MySQL, การแสดงผลผ่านจอ LCD, การกระตุ้นบัสเซอร์และรีเลย์ ขั้นตอนการทดสอบทำได้ตามคำสั่งดังต่อไปนี้

 

  • cd SemiRFID
  • sudo python MainSemiRFID.py

 

 

รูปที่ 37 คำสั่งเปิดโปรแกรมหลัก

 

 

รูปที่ 38 หน้าจอ LCD แสดงความพร้อมใช้งาน

 

 

 

รูปที่ 39 หน้าต่างแสดงเวลาขณะที่โปรแกรมทำงาน

 

          หลังจากที่รันโปรแกรม MainSemiRFID.py ที่เป็นโปรแกรมหลักของโครงงานนี้ขึ้นมา ขณะนั้นที่หน้าจอ LCD จะแสดงข้อความ “SEMI RPi RFID” ในบรรทัดแรกและ “*** READY ***” ในบรรทัดที่สอง ดังแสดงในรูปที่ 38 หากไม่สามารถมองเห็นให้ปรับ VR1 เพื่อปรับเพิ่มลดความเข้มของตัวหนังสือ ให้ปรับจนสามารถมองเห็นได้อย่างสะดวก ในขณะที่ทางด้านฮาร์ดแวร์ทำงานอยู่นั้น ฝั่งทางโปรแกรมบนคอมพิวเตอร์ก็จะทำงานด้วนเช่นกัน ซึ่งจะปริ๊นซ์เวลาทุกๆ 1 วินาทีผ่านหน้าต่างดังแสดงในรูปที่ 39

 

 

รูปที่ 40 หน้าจอ LCD หลังจากแตะบัตร Master

 

 

รูปที่ 41 หน้าจอ LCD แสดงหลังจากเพิ่มบัตร

 

ทดสอบการเพิ่มลบบัตรในฐานข้อมูล

 

          จากนั้นให้นำเอาบัตร Master มาแตะกับตัวอ่านบัตร ขณะนั้นหน้าจอในบรรทัดที่ 3 จะแสดงข้อความ “MASTER TAG” และในบรรทัดที่ 4 จะแสดง “ADD or DEL TAG” (ดังแสดงในรูปที่ 40) เพื่อบอกให้ผู้ใช้ทราบว่าเป็นบัตร Master หลังจากนั้นประมาณ 2 วินาทีข้อความในบรรทัดที่ 4 จะหายไป ขั้นตอนต่อไปให้นำบัตรอื่นที่ต้องการนำมาเข้าระบบมาแตะที่ตัวอ่านบัตร หากถูกต้องที่หน้าจอ LCD จะแสดงดังรูปที่ 41 นั่นแสดงว่าบัตร RFID ได้เพิ่มเข้าไปในระบบเรียบร้อยแล้ว

 

 

รูปที่ 42 หน้าจอ LCD แสดงหลังจากลบบัตร

 

          ในทำนองเดียวกัน หากต้องการจะลบข้อมูลบัตร RFID ที่อยู่ในระบบฐานข้อมูลออกไปให้ทำขั้นตอนคล้ายกับการเพิ่มรหัส โดยการนำบัตร Master ไปแตะที่เครื่องรับก่อนหนึ่งครั้ง และเมื่อเอาบัตรที่ก่อนหน้านี้ได้เพิ่มเข้าไปในระบบแล้วไปแต่จะเป็นการลบรหัสบัตรออกจากฐานข้อมูล (ดังแสดงในรูปที่ 42) กล่าวคือ เมื่อนำบัตรไปแตะ Raspberry Pi จะทำการค้นในฐานข้อมูล หากไม่มีรหัสอยู่ในฐานข้อมูล Raspberry Pi จะเพิ่มเข้าไปในฐานข้อมูล แต่ถ้าหากตรวจพบว่ามีรหัสอยู่แล้วจะเป็นการลบรหัสบัตรนั้นออกจากระบบนั่นเอง

 

 

รูปที่ 43 หน้าจอ LCD แสดงการทำงานหากบัตรที่นำมาแตะมีในฐานข้อมูล

 

 

รูปที่ 44 หน้าจอ LCD แสดงการทำงานหากบัตรที่นำมาแต่ไม่มีในฐานข้อมูล

 

ทดสอบการแตะบัตรที่มีและไม่มีในฐานข้อมูล

 

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

           

          ในทางตรงกันข้ามหากบัตรที่นำมาแตะนั้นไม่มีอยู่ในฐานข้อมูล Raspberry Pi ก็จะไม่สั่งงานรีเลย แต่จะแสดงข้อความผ่านทาง LCD แจ้งให้ผู้ใช้งานทราบว่าบัตรของท่านที่นำมาแตะนั้นไม่มีในฐานข้อมูลหรือกล่าวง่ายๆ คือ ไม่มีสิทธิ์ผ่านเข้าไปนั่นเอง ที่หน้าจอ LCD จะแสดงดังรูปที่ 44

 

 

รูปที่ 45 คำสั่งสำหรับการเปิด crontab ขึ้นมา

 

 

รูปที่ 46 คำสั่งที่เพิ่มในบรรทัดสุดท้ายของ crontab

 

การกำหนดให้โปรแกรมทำงานเองโดยอัตโนมัติหลังจากบูตเสร็จ

 

          ก่อนหน้านี้เราจะใช้วิธีการพิมพ์คำสั่งเองในการเปิดโปรแกรมซอร์สโค้ดหลักของเรา แต่ในการใช้งานจริงนั้นคงจะไม่สะดวกเป็นแน่หากจะต้องเปิดโปรแกรมด้วยวิธีนี้ ดังนั้นจึงต้องมีการกำหนดให้โปรแกรมหลักของเราทำงานเองโดยอัตโนมัติหลังจากที่ระบบบูตเสร็จ ซึ่งจะต้องใช้คำสั่ง crontab -e ดังแสดงในรูปที่ 45 จากนั้นให้เพิ่มคำสั่งที่กำหนดให้ Raspberry Pi รันโปรแกรมในบรรทัดด้านล่างสุดดังแสดงในรูปที่ 46

 

  • @reboot sudo python /home/pi/SemiRFID/MainSemiRFID.py

 

          เมื่อเพิ่มคำสั่งเสร็จเรียบร้อยแล้วให้ออกจากซอฟต์แวร์ crontab โดยให้กดปุ่ม ‘CTRL-X’ (เพื่อเลือกปิด) จากนั้นกดปุ่ม ‘Y’ (เพื่อ ตกลง บันทึกการแก้ไข) แล้วกดปุ่ม 'ENTER' จากนั้นให้ปิดแล้วเปิดเครื่องขึ้นมาใหม่ดูว่าโปรแกรมของเราจะถูกเปิดขึ้นมาเองโดยอัตโนมัติหรือไม่ ถ้าถูกต้องหน้าจอ LCD จะแสดงความพร้อมดังที่กล่าวข้างต้น

 

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

 

 

รายการอุปกรณ์

ตัวต้านทาน ¼ วัตต์ +/-5%
R1 - 22 1 ตัว
R2 - 120 1 ตัว
R3 - 1k 1 ตัว
R4, R5 - 10 2 ตัว
VR1 - ตัวต้านทานปรับค่าได้แบบเกือกม้า 10k 1 ตัว

ตัวเก็บประจุ
C1 - 100uF 16V อิเล็คทรอไลต์ 1 ตัว
C2, C3 - 0.1uF 50V โพลีเอสเตอร์ 2 ตัว

อุปกรณ์สารกึ่งตัวนำ
IC1 - LTV817 1 ตัว
D1 - 1N4001 1 ตัว
LED1 - แอลอีดี 3 มม. สีแดง 1 ตัว
Q1 - 2N4401 1 ตัว

อื่นๆ
BUZZER - บัสเซอร์ 3V 1 ตัว
CON1 - คอนเน็กเตอร์ 40 ขา 1 ตัว
CON2 - เทอร์มินอลบล็อก 3 ขา 1 ตัว
CON3 - คอนเน็กเตอร์ 2 ขา 1 ตัว
LCD1 - แอลซีดีชนาด 16 ตัวอักษร 2 บรรทัด 1 ตัว
RFID1 - RFID Card Reader/Detector (RC522) 1 ตัว
RY1 - รีเลย์ 5V 1 ตัว
บอร์ด RASPBERRY PI 2 MODULE B - 1 ตัว

หมายเหตุ ซอร์สโค้ดที่ใช้ร่วมกับวงจรสามารถดาวน์โหลดได้ที่เว็บไซต์ http://electronics.se-ed.com/download หรือใช้คำสั่ง wget http://electronics.se-ed.com/download/semi430/SemiRFID.tar.gz

 

 

สงวนลิขสิทธิ์ ตามพระราชบัญญัติลิขสิทธิ์ พ.ศ. 2539 www.thailandindustry.com
Copyright (C) 2009 www.thailandindustry.com All rights reserved.

ขอสงวนสิทธิ์ ข้อมูล เนื้อหา บทความ และรูปภาพ (ในส่วนที่ทำขึ้นเอง) ทั้งหมดที่ปรากฎอยู่ในเว็บไซต์ www.thailandindustry.com ห้ามมิให้บุคคลใด คัดลอก หรือ ทำสำเนา หรือ ดัดแปลง ข้อความหรือบทความใดๆ ของเว็บไซต์ หากผู้ใดละเมิด ไม่ว่าการลอกเลียน หรือนำส่วนหนึ่งส่วนใดของบทความนี้ไปใช้ ดัดแปลง โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร จะถูกดำเนินคดี ตามที่กฏหมายบัญญัติไว้สูงสุด