תוכן עניינים:
וִידֵאוֹ: קורא RFID AVR/Arduino עם קוד UART ב- C: 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:18
RFID הוא השיגעון, שנמצא בכל מקום - ממערכות מלאי ועד מערכות זיהוי תג. אם היית פעם בחנות כלבו ועברת בין הדברים שנראים לגלאי מתכות בנקודות הכניסה/היציאה, אז ראית RFID. ישנם מספר מקומות בהם ניתן למצוא מידע טוב על הגדרת RFID, והוראה זו מתמקדת בהתקנת קורא RFID Parallax (TTL סידורי) על AVR, בדגש על קוד C הדרוש לקריאת הקלט הטורי. הקוד נמצא ב- C ואינו משתמש בספריות חיצוניות. למעשה, הוא מדבר 2400 שידור ישירות ללא שימוש ב- UART על ידי סנכרון עם קצב השידור של קורא ה- RFID וקריאת הסיכה הדיגיטלית שאליה הוא מחובר. נִרגָשׁ? גם אני.
שלב 1: קבל את הסחורה
תזדקק לרשימת החלקים הבאה:
- קורא RFID (Parallax #28140 $ 39.99)
- תג RFID (Parallax #32397 $ 0.99)
- שיבוט AVR או Arduino (אם אתה משתמש ב- AVR מלאי, תזדקק גם לקבלים max232, 5 x 1uF ומחבר DE9)
- קרש לחם ללא הלחמה
אופציונאלי
- כותרת 4 עמדות
- חוּט
(וה- max232 וכו 'לתקשורת של פרטי התג) תוכל גם לחבר את מסך ה- LCD המועדף עליך במקום שליחת נתוני תג באמצעות RS232.
שלב 2: חבר את החלקים
צד החומרה של הדברים די קל. במקום להכניס את קורא ה- RFID שלי ישירות ללוח הלוח שלי, בחרתי ליצור כבל מהיר כדי שאוכל להזיז את קורא ה- RFID קצת יותר טוב. לשם כך, פשוט ניתקתי 4 עמדות מרצועת כותרת שקעים נקבה ששכבתי עליה והלחמתי על שלושה חוטים. קלטת חשמל השלימה את מחבר הגטו. לקורא ה- RFID יש 4 חיבורים:
- Vcc
- לְאַפשֵׁר
- הַחוּצָה
- Gnd
כפי שבטח ניחשתם, חבר את Vcc ל- +5V ו- Gnd לקרקע. מכיוון שקורא ה- RFID צורך כל כך הרבה כוח, אתה יכול ללחוץ על סיכה ENABLE כדי לכבות ולהדליק אותו במרווחי זמן שונים. פשוט בחרתי להמשיך את זה. מכיוון שהוא הפוך, אתה מושך אותו נמוך כדי להפעיל אותו. לחלופין, אתה יכול לחבר אותו לקרקע. חיברתי אותו ל- PIND3 כדי לתת לי אפשרויות הפעלה/השבתה אם החלטתי. סיכת OUT היא המקום שבו הקורא שולח את הנתונים הטוריים שלו לאחר שהוא קורא תג. חיברתי אותו ל- PIND 2. שימו לב, ביקום Parallax, אדום פירושו ללכת. כלומר, נורית LED ירוקה פירושה שהיחידה אינה פעילה ובטלה, ואילו נורית LED אדומה פירושה שהיחידה פעילה. * מושך בכתפי* לך דמות.
שלב 3: כתוב את הקוד
כדי לקרוא את הנתונים מקורא ה- RFID, עליך לדעת מתי נשלח תג, למשוך את הנתונים מהיציאה הטורית ולאחר מכן לשלוח אותם למקום כלשהו.
פורמט נתוני קורא RFID
קורא ה- RFID של Parallax שולח נתונים בקצב קבוע וקרחוני של 2400 באוד. תג RFID הוא 10 בתים. על מנת לאפשר זיהוי/תיקון שגיאות, מכיוון שניתן להפריד את הקורא מרעש אקראי, ה- RFID של 10 בתים מוגבל על ידי זקיף התחלה ועצירה. הזקיף ההתחלתי הוא הזנת קווים (0x0A) ושומר העצירה הוא החזרת כרכרה (0x0D). זה נראה כמו זה:
[התחל זקיף | בייט 1 | בייט 2 | בייט 3 | בייט 4 | בייט 5 | בייט 6 | בייט 7 | בייט 8 | בייט 9 | בייט 10 | עצור את הזקיף]אלו הם שלושת השלבים העיקריים.
דע מתי נשלח תג
השתמשתי בהפרעה לשינוי סיכה במכשיר ה- AVR המודיע לקושחה על כך שחל שינוי בסיכה המנוטרת. הגדרת ה- AVR לשם כך קלה ודורשת הגדרת הדגל, הודעת ה- MCU לאיזה סיכה ברצונך לעקוב והגדרת ביט ההפרעה הגלובלי. הגדר את PCINT
BSET (PCICR, PCIE2); // שינוי סיכה להפסקת בקרת הרשמה pcie2 BSET (PCMSK2, PCINT18); // אפשר הפסקת שינוי סיכה עבור PCINT18 (PD2) BSET (SREG, 7); // הגדר את SREG I-bitכתוב את שגרת השירות שלך להפסקת אתה רוצה לשמור על ה- ISR שלך קצר, כך שבווקטור הפרעות שלי קראתי את כל הבייט, טיפין טיפין, ושמור את הבייט במערך תווים נדיף עולמי. אני עושה את כל הפעולות הבאות בכל הפרעה:
- בדוק כדי לוודא שאני בהתחלה
- מרכז את התזמון לדופק האמצעי ב -2400 באוד (המהירות של קורא ה- RFID)
- דלג על נתח ההתחלה והשהה עד אמצע הקטע הבא
- קרא כל ביט לתוך מספר שלם לא חתום
- כשיש לי 8 סיביות, הכנס את הבייט למערך תווים
- לאחר שאספתי 12 בתים, הודע ל- MCU שהתג נקרא לאיתור שגיאות.
שיניתי את קוד SoftSerial ממיקל הארט ששינה את הקוד מדייויד מליס בגלל העיכובים שנקבעו בניסוי בשגרה הסדרתית.
פלט RS232
שגרת ה- PCINT מכילה את הקוד לקריאת פלט RS232 מקורא ה- RFID. כאשר קיבלתי 12 בתים (10 בתים RFID פלוס זקיפים) הגדרתי את bDataReady ל- 1 ונתתי ללולאה הראשית לעבד את הנתונים ולהציג אותם.
// זהו ה- ISTR interrupt handlerIS (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // bit start יורד לתשואה נמוכה; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // מרכז על ביט ההתחלה עבור (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // דלג מעט, אחי … אם (BCHK (PIND, RFID_IN)) BSET (סיביות, x); אחר BCLR (סיביות, x); } TunedDelay (INTRABIT_DELAY); // דלג על עצור ביט RFID_tag [rxIdx] = bit; ++ rxIdx; if (rxIdx == 12) bDataReady = 1;}
הצג את התג שלך
בחלק הראשי (), במהלך הלולאה של (אי פעם), אני בודק אם הוגדרה bDataReady, ומסמנת כי כל מבנה ה- RFID נשלח. לאחר מכן אני בודק אם מדובר בתג תקף (כלומר תווי התחלה והעצירה הם 0x0A ו- 0x0D, בהתאמה), ואם כן, אני שולח אותו מחיבור ה- RS232 שלי.
עבור (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Byte start:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ n עצור בתים:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); עבור (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); אם (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
שלב 4: קוד ונפרד
דף זה מכיל קובץ zip עם הקוד הרלוונטי. הוא נכתב ב- AVR Studio 4.16. אם אתה משתמש בפנקס המתכנתים, ליקוי החמה או ב- vi (או משהו אחר) יהיה עליך להעתיק קובץ Mak מהימן לתוך הספרייה ולהוסיף קבצים אלה לשורת המקור. כמו כן, שימו לב, העיתוי של קטע הקריאה הסדרתית מבוסס על 16MHz MCU. אם אתה פועל בתדר שעון אחר, יהיה עליך לקבוע בניסוי את העיכובים המכוונים למרכז את פולסי קצב השידור. אני מקווה שהמדריך הזה עזר לך בדרך כלשהי. אם יש לך הצעות כיצד לשפר אותו אל תהסס ליידע אותי!
מוּמלָץ:
קורא RFID מבוסס ESP32 עם תצוגת מגע: 7 שלבים
קורא RFID מבוסס ESP32 עם תצוגת מגע: במעט ההנחיות הזה אראה כיצד ליצור קורא RFID פשוט עם יציאת TFT להרכבה על הקיר באמצעות מודול ESP32 DEV KIT C, מחשב קורא מבוסס RC-522 וערכת ESP AZ-Touch. אתה יכול להשתמש בקורא זה לגישה לדלת או לפלוש אלאר
קורא RFID Arduino עם תצוגת TFT: 7 שלבים
קורא RFID Arduino עם תצוגת TFT: אראה לך במדריך זה כיצד לעצב קורא RFID יפה למראה עם תצוגת TFT ולהרכבה על הקיר. קל מאוד ליצור קורא RFID נחמד עם פלט TFT להרכבה על קיר עם Arduino. MKR לבחירתך והאר שלנו
הדגמה 4x4 של לוח שחמט אלקטרוני/ עם Arduino Mega + קורא RFID + חיישני אפקט הול: 7 שלבים
הדגמה 4x4 של לוח שחמט אלקטרוני/ עם Arduino Mega + קורא RFID + חיישני אפקט היכל: היי יוצרים, אני טאהיר מירייב, בוגר 2018 מהאוניברסיטה הטכנית במזרח התיכון, אנקרה/ טורקיה. למדתי במתמטיקה שימושית, אבל תמיד אהבתי לייצר דברים, במיוחד כשכללה עבודת יד עם אלקטרוניקה, עיצוב ותכנות
כיצד להעלות תוכנית או קוד לתוך Arduino Pro Mini באמצעות כבל ממיר סידורי CH340 UART: 4 שלבים
כיצד להעלות תכנית או קוד לתוך Arduino Pro Mini באמצעות כבל ממיר סידורי CH340 UART: כבלי ה- USB TTL הטורליים הינם מגוון של כבלי ממיר USB לטורי המספקים קישוריות בין USB לממשקי UART טורי. קיימים מגוון כבלים המציעים קישוריות של 5 וולט, 3.3 וולט או רמות אות שצוין על ידי המשתמש עם
קורא RFID UHF של Arduino: 10 שלבים
קורא RFID UHF Arduino: מטרת מדריך זה היא לספק דוגמא קלה להבנה של מיקרו -בקר המתממשק עם קורא RFID של UHF. הקורא בו אנו משתמשים הוא Thinkify TR-265. ההפגנה כוללת שלושה תגי UHF לכל אחד מזהה ייחודי