- ส่วนประกอบที่ใช้:
- คำอธิบายการทำงาน:
- คำอธิบายวงจร:
- การติดตั้ง WirePi Library ใน Raspberry Pi:
- คำอธิบายการเขียนโปรแกรม:
ก่อนหน้านี้เราเคยใช้ RFID ในโครงการ RFID หลายโครงการและได้สร้างระบบการเข้าร่วมที่ใช้ RFID โดยใช้ 8051 แล้วที่นี่เราจะสร้าง ระบบการเข้าร่วม RFID โดยใช้ Raspberry Pi
ในโครงการระบบผู้เข้าร่วมที่ใช้ RFIDนี้ เราจะอธิบายให้คุณทราบว่าเราจะอนุญาตและนับการเข้าร่วมโดยอัตโนมัติโดยใช้บัตร RFID ได้อย่างไร เทคโนโลยี RFID (การระบุและตรวจจับความถี่วิทยุ) มักใช้ในโรงเรียนวิทยาลัยสำนักงานและสถานีเพื่อวัตถุประสงค์ต่างๆเพื่อติดตามบุคคลโดยอัตโนมัติ ที่นี่เราจะนับการเข้าร่วมของผู้มีอำนาจโดยใช้ RFID
หากคุณไม่คุ้นเคยกับ Raspberry Pi เราได้สร้างชุดบทเรียนและโครงการราสเบอร์รี่ pi โดยเชื่อมโยงกับส่วนประกอบพื้นฐานทั้งหมดและโครงการง่ายๆที่จะเริ่มต้นโปรดตรวจสอบ
ส่วนประกอบที่ใช้:
- Raspberry Pi (พร้อมการ์ด SD ที่บูตแล้ว)
- ปุ่มกด
- Buzzer
- 16x2 LCD
- หม้อ 10k
- ตัวต้านทาน 10K
- LED
- ตัวต้านทาน 1k
- กระดานขนมปัง
- เครื่องอ่าน RFID
- กำลังไฟ 5 โวลต์
- แท็ก RFID หรือการ์ด
- สายอีเธอร์เน็ต
- การเชื่อมต่อสายไฟ
เครื่องอ่าน RFID และแท็ก:
RFID เป็นอุปกรณ์อิเล็กทรอนิกส์ที่มีสองส่วนส่วนหนึ่งคือเครื่องอ่าน RFID และอื่น ๆ คือแท็ก RFID หรือการ์ด เมื่อเราวางแท็ก RFID ไว้ใกล้กับเครื่องอ่าน RFID มันจะอ่านข้อมูลแท็กแบบอนุกรม แท็ก RFID มีรหัสอักขระ 12 หลักในขดลวด RFID นี้ทำงานที่อัตราบอด 9600 bps RFID ใช้แม่เหล็กไฟฟ้าในการถ่ายโอนข้อมูลจาก Reader ไปยัง Tag หรือ Tag ไปยัง Reader
คำอธิบายการทำงาน:
ที่นี่Raspberry Pi 3กำลังควบคุมกระบวนการทั้งหมดของโครงการนี้ (ผู้ใช้สามารถใช้ Raspberry Pi Board ใดก็ได้) เครื่องอ่านRFIDอ่านรหัสบัตร RFIDข้อมูลนี้ได้รับจาก Raspberry Pi ผ่าน UART จากนั้น RPi จะตรวจสอบการ์ดและแสดงผลลัพธ์บนหน้าจอ LCD
เมื่อบุคคลวางแท็ก RFID ไว้ใกล้กับเครื่องอ่าน RFID เพื่อสแกน RFID จะอ่านข้อมูลของแท็กและส่งไปยัง Raspberry Pi จากนั้น Raspberry Pi จะอ่านหมายเลขประจำตัวเฉพาะของแท็ก RFID นั้นแล้วเปรียบเทียบข้อมูลนี้กับข้อมูลหรือข้อมูลที่กำหนดไว้ล่วงหน้า หากข้อมูลตรงกับข้อมูลที่กำหนดไว้ล่วงหน้า Raspberry Pi จะเพิ่มการเข้าร่วมของบุคคลของแท็กทีละคนและหากจับคู่ไม่ตรงกันไมโครคอนโทรลเลอร์จะแสดงข้อความ 'บัตรไม่ถูกต้อง' บน LCD และเสียงสัญญาณเตือนจะดังต่อเนื่องเป็นระยะเวลาหนึ่ง และที่นี่เรายังเพิ่มปุ่มกดเพื่อดูจำนวนทั้งหมด การเข้าเรียนของนักเรียนทุกคน ที่นี่เราได้นำแท็ก RFID 4 แท็กซึ่งใช้สามแท็กเพื่อบันทึกการเข้าเรียนของนักเรียนสามคนและอีกหนึ่งใช้เป็นบัตรที่ไม่ถูกต้อง
คำอธิบายวงจร:
แผนภาพวงจรสำหรับโครงการระบบการเข้าร่วม Raspberry Pi นี้ง่ายมากซึ่งประกอบด้วย Raspberry Pi 3, เครื่องอ่าน RFID, แท็ก RFID, กริ่ง, LED และ LCD ที่นี่ Raspberry Pi ควบคุมกระบวนการทั้งหมดเช่นการอ่านข้อมูลที่มาจากเครื่องอ่านเปรียบเทียบข้อมูลกับข้อมูลที่กำหนดไว้ล่วงหน้าสัญญาณเตือนการขับขี่LED แสดงสถานะการขับขี่และการส่งสถานะไปยังจอ LCD เครื่องอ่าน RFIDใช้เพื่ออ่านแท็ก RFID Buzzerใช้สำหรับบ่งชี้และขับเคลื่อนด้วยทรานซิสเตอร์ NPN ในตัวLCDใช้สำหรับแสดงสถานะหรือข้อความ
การเชื่อมต่อเป็นเรื่องง่าย LCD เชื่อมต่อกับ Raspberry Pi ในโหมด 4 บิต ขา RS, RW และ EN ของ LCD เชื่อมต่อโดยตรงที่สายไฟ Pi GPIO 11, gnd และ 10 และขาข้อมูลเชื่อมต่อที่สายไฟ Pi GPIO 6, 5, 4 และ 1 หม้อ 10K ใช้เพื่อกำหนดคอนทราสต์หรือความสว่างของ LCD Buzzer เชื่อมต่อที่สายไฟพิน GPIO 7 ที่เกี่ยวกับกราวด์ ไฟ LED สามดวงเชื่อมต่อเพื่อบ่งชี้นักเรียนด้วยบัตร RFID ตามลำดับ และ LED หนึ่งดวงใช้เพื่อแสดงว่าระบบพร้อมที่จะสแกนบัตร RFID นอกจากนี้ยังเชื่อมต่อปุ่มกดที่สายไฟ Pi GPIO พิน 12 เพื่อแสดงจำนวนผู้เข้าร่วม เครื่องอ่าน RFID เชื่อมต่อที่พิน UART (สาย GPIO พิน 16)
การติดตั้ง WirePi Library ใน Raspberry Pi:
เช่นเดียวกับใน Python เรานำเข้านำ เข้า RPi.GPIO เป็น ไฟล์ส่วนหัว IO เพื่อใช้ GPIO Pins ของ Raspberry Pi ที่นี่ในภาษา C เราต้องใช้WirePi Libraryเพื่อใช้ GPIO Pins ในโปรแกรม C ของเรา เราสามารถติดตั้งได้โดยใช้คำสั่งด้านล่างทีละคำสั่งคุณสามารถเรียกใช้คำสั่งนี้จาก Terminal หรือจากไคลเอนต์ SSH บางตัวเช่น Putty (หากคุณใช้ Windows) อ่านบทแนะนำการเริ่มต้นใช้งาน Raspberry Pi ของเราเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการจัดการ Raspberry Pi
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi การเดินสาย cdPi git ดึงต้นกำเนิดการเดินสาย cdPi./build
ทดสอบการติดตั้งไลบรารี WirePi โดยใช้คำสั่งด้านล่าง:
gpio -v gpio readall
คำอธิบายการเขียนโปรแกรม:
ก่อนอื่นเราได้รวมไลบรารีบางส่วนและกำหนดพินที่เราต้องใช้ในโค้ดนี้
# รวม
หลังจากนั้นกำหนดตัวแปรและอาร์เรย์สำหรับการคำนวณและจัดเก็บค่าและสตริง
int sp; int count1 = 0, count2 = 0, count3 = 0; ถ่าน ch; ถ่าน rfid; int ผม = 0; อุณหภูมิถ่าน;
จากนั้นฟังก์ชันจะถูกเขียนขึ้นเพื่อดำเนินการกระบวนการทั้งหมด บางส่วนได้รับด้านล่าง:
ให้ฟังก์ชัน void lcdcmd ใช้สำหรับส่งคำสั่งไปยัง LCD
โมฆะ lcdcmd (int ch ที่ไม่ได้ลงนาม) {int temp = 0x80; digitalWrite (D4 อุณหภูมิ & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6 อุณหภูมิ & ch << 1); digitalWrite (D7, อุณหภูมิ & ch); digitalWrite (RS, LOW); digitalWrite (EN, สูง);……………..
ระบุฟังก์ชัน เขียนเป็นโมฆะ ใช้สำหรับส่งข้อมูลไปยัง LCD
เขียนเป็นโมฆะ (int ch ที่ไม่ได้ลงนาม) {int temp = 0x80; digitalWrite (D4 อุณหภูมิ & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6 อุณหภูมิ & ch << 1); digitalWrite (D7, อุณหภูมิ & ch); digitalWrite (RS, สูง); digitalWrite (EN, สูง);……………..
เนื่องจากฟังก์ชัน void clear () ถูกใช้เพื่อล้าง LCD จึงใช้ void setCursor เพื่อกำหนดตำแหน่งเคอร์เซอร์และการ พิมพ์เป็นโมฆะ สำหรับการส่งสตริงไปยัง LCD
เป็นโมฆะชัดเจน () {lcdcmd (0x01); } โมฆะ setCursor (int x, int y) {int set = 0; ถ้า (y == 0) ตั้งค่า = 128 + x; ถ้า (y == 1) ตั้งค่า = 192 + x; lcdcmd (ชุด); } การพิมพ์เป็นโมฆะ (ถ่าน * str) {while (* str) {write (* str); str ++; }}
ฟังก์ชัน เริ่มต้นเป็นโมฆะ ใช้เพื่อเริ่มต้น LCD ในโหมด 4 บิต
เป็นโมฆะเริ่มต้น (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
ฟังก์ชัน void buzzer () และ void wait () ใช้สำหรับส่งเสียงบี๊บและรอเพื่อวางการ์ดอีกครั้ง ฟังก์ชัน void serialbegin ใช้เพื่อเริ่มต้นการสื่อสารแบบอนุกรม
เป็นโมฆะ buzzer () {digitalWrite (buzz, HIGH); ล่าช้า (1,000); digitalWrite (ฉวัดเฉวียนต่ำ); } เป็นโมฆะ wait () {digitalWrite (led5, LOW); ล่าช้า (3000); } โมฆะ serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); พิมพ์ ("ไม่สามารถเปิดได้"); setCursor (0,1); พิมพ์ ("พอร์ตอนุกรม"); }}
ในฟังก์ชัน void setup () เราเริ่มต้น GPIOs, LCD และ Serial UART ทั้งหมด
การตั้งค่าเป็นโมฆะ () {if (WirePiSetup () == -1) {clear () พิมพ์ ("ไม่สามารถเริ่มได้"); setCursor (0,1); พิมพ์ ("WirePi"); } pinMode (led1, เอาท์พุท); PinMode (led2, เอาท์พุท);……………………
รับ ฟังก์ชัน get_card () เป็นโมฆะ ใช้รับข้อมูลจากเครื่องอ่าน RFID
ในฟังก์ชัน void main () เราได้แสดงข้อความบางอย่างบน LCD และเปรียบเทียบข้อมูลแท็กกับข้อมูลที่กำหนดไว้ล่วงหน้าเพื่อตรวจสอบการ์ดด้วยโค้ดด้านล่าง
…………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; ชัดเจน(); พิมพ์ ("Attd. Registered"); setCursor (0,1); พิมพ์ ("Studnet 1"); digitalWrite (led1, สูง); ออด (); digitalWrite (led1, LOW); รอ(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; ชัดเจน(); พิมพ์ ("Attd. Registered"); setCursor (0,1);………………
สุดท้าย เป็นโมฆะฟังก์ชัน check_button () ใช้สำหรับแสดงการเข้าร่วมทั้งหมดเมื่อกดปุ่ม
โมฆะ check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); ชัดเจน(); setCursor (0,0); พิมพ์ ("std1 std2 std3");……………..
ตรวจสอบรหัสเต็มสำหรับระบบการเข้าร่วม Raspberry Pi ด้านล่าง