Სარჩევი:
- ნაბიჯი 1: მიიღეთ საქონელი
- ნაბიჯი 2: დააკავშირეთ ნაწილები
- ნაბიჯი 3: ჩაწერეთ კოდი
- ნაბიჯი 4: კოდი და გამოსამშვიდობებელი
ვიდეო: AVR/Arduino RFID მკითხველი UART კოდით C: 4 საფეხურზე
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:22
RFID არის სიგიჟე, რომელიც ყველგან გვხვდება - ინვენტარიზაციის სისტემებიდან დაწყებული სამკერდე ID სისტემებით. თუ ოდესმე ყოფილხართ უნივერმაღში და გადიხართ იმ ლითონის დეტექტორების საგნებს შესასვლელ/გასასვლელ წერტილებში, მაშინ გინახავთ RFID. რამოდენიმე ადგილია კარგი ინფორმაციის მოსაძებნად RFID– ის დაყენების შესახებ და ეს ინსტრუქცია ორიენტირებულია Parallax RFID მკითხველის (სერიული TTL) AVR– ზე დაყენებაზე, სერიული შეყვანის წასაკითხად საჭირო C კოდზე ხაზგასმით. კოდი არის C და არ იყენებს გარე ბიბლიოთეკებს. ფაქტობრივად, ის საუბრობს 2400 baud პირდაპირ UART– ის გამოყენების გარეშე RFID მკითხველის baud განაკვეთის სინქრონიზაციით და ციფრული პინის კითხვით, რომელსაც ის უკავშირდება. აღფრთოვანებული? Მეც.
ნაბიჯი 1: მიიღეთ საქონელი
თქვენ დაგჭირდებათ ნაწილების შემდეგი სია:
- RFID მკითხველი (პარალექსი #28140 $ 39.99)
- RFID ტეგი (პარალექსი #32397 $ 0.99)
- AVR ან Arduino კლონი (თუ იყენებთ საწყობ AVR– ს, ასევე დაგჭირდებათ max232, 5 x 1uF კონდენსატორები და DE9 კონექტორი)
- შედუღების გარეშე დაფა
სურვილისამებრ
- 4 პოზიციის სათაური
- მავთული
(და tag232 და ა.შ. ტეგების ინფორმაციის გადასაცემად) თქვენ ასევე შეგიძლიათ დაუკავშიროთ თქვენი საყვარელი LCD ეკრანი RS232- ის საშუალებით ტეგის მონაცემების გაგზავნის ნაცვლად.
ნაბიჯი 2: დააკავშირეთ ნაწილები
ტექნიკის მხარე საკმაოდ მარტივია. იმის ნაცვლად, რომ ჩემი RFID მკითხველი პირდაპირ ჩემს დაფაზე შევიდე, მე შევარჩიე სწრაფი კაბელის გაკეთება, რათა შემეძლო RFID მკითხველი ოდნავ უკეთ გადამეტანა. ამისთვის, მე მხოლოდ 4 პოზიცია შეწყვიტე ქალის ბუდეის სათაურის ზოლიდან, რომელზედაც მე ვიწექი და სამ მავთულზე შევაერთე. ელექტრო ფირმა დაასრულა გეტოს კონექტორი. RFID მკითხველს აქვს 4 კავშირი:
- Vcc
- ჩართვა
- გარეთ
- Gnd
როგორც თქვენ ალბათ მიხვდით, დაუკავშირეთ Vcc +5V და Gnd მიწას. იმის გამო, რომ RFID მკითხველი მოიხმარს ამდენ ენერგიას, შეგიძლიათ ჩართოთ ჩართული პინი, რომ გამორთოთ და ჩართოთ იგი სხვადასხვა ინტერვალებით. მე უბრალოდ მისი გაგრძელება ვარჩიე. იმის გამო, რომ ის ინვერსიულია, თქვენ ააქტიურებთ მას LOW გასააქტიურებლად. გარდა ამისა, შეგიძლიათ დააკავშიროთ იგი მიწასთან. მე დავუკავშირდი მას PIND3– ს, რომ გადამეწყვიტა ჩართვის/გამორთვის ვარიანტები. OUT პინი არის ადგილი, სადაც მკითხველი აგზავნის თავის სერიულ მონაცემებს ტეგის წაკითხვის შემდეგ. მე დავუკავშირდი მას PIND2. შენიშვნა, პარალაქსის სამყაროში წითელი ნიშნავს წასვლას. ანუ, მწვანე LED ნიშნავს, რომ მოწყობილობა არააქტიური და უმოქმედოა, ხოლო წითელი LED ნიშნავს, რომ მოწყობილობა აქტიურია. * მხრები აიჩეჩა* ფიგურა.
ნაბიჯი 3: ჩაწერეთ კოდი
RFID მკითხველის მონაცემების წასაკითხად, თქვენ უნდა იცოდეთ როდის არის წარდგენილი წარწერა, ამოიღეთ მონაცემები სერიული პორტიდან, შემდეგ გაგზავნეთ სადმე.
RFID Reader მონაცემთა ფორმატი
Parallax RFID მკითხველი აგზავნის მონაცემებს ფიქსირებული, მყინვარული ტემპით 2400 baud. RFID ტეგი არის 10 ბაიტი. შეცდომის გამოვლენის/შესწორების საშუალებას, რადგან მკითხველს შეეძლება შემთხვევითი ხმაურისგან გათიშვა, 10-ბაიტიანი RFID შემოსაზღვრულია საწყისი და გაჩერების სენტინელით. საწყისი სენტინელი არის ხაზის კვება (0x0A) და გაჩერების სენტინელი არის ვაგონის დაბრუნება (0x0D). ასე გამოიყურება:
[დაწყება სენტინელი | ბაიტი 1 | ბაიტი 2 | ბაიტი 3 | ბაიტი 4 | ბაიტი 5 | ბაიტი 6 | ბაიტი 7 | ბაიტი 8 | ბაიტი 9 | ბაიტი 10 | შეაჩერე სენტინელი]ეს არის სამი ძირითადი ნაბიჯი.
იცოდეთ როდის არის წარდგენილი წარწერა
მე გამოვიყენე Pin Change Interrupt AVR– ზე, რომელიც აცნობებს firmware– ს, რომ ცვლილება მოხდა მონიტორინგის პინზე. ამისთვის 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-ზე და გავუშვი ძირითადი მარყუჟი მონაცემებს ამუშავებს და აჩვენებს მას.
// ეს არის შეწყვეტის დამმუშავებელი uint8_t bit = 0; დარეგულირებული დაგვიანებით (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] = ბიტი; ++ rxIdx; თუ (rxIdx == 12) bDataReady = 1;}
თქვენი ტეგის ჩვენება
ძირითად () მარყუჟის განმავლობაში (ყოველთვის), მე ვამოწმებ, არის თუ არა bDataReady დადგენილი, რაც მიანიშნებს, რომ გაიგზავნა მთელი RFID სტრუქტურა. შემდეგ ვამოწმებ, არის თუ არა ეს სწორი ტეგი (ანუ დაწყებული და გაჩერების სიმბოლოები შესაბამისად 0x0A და 0x0D), და თუ ასეა, მე მას გამოვგზავნი ჩემი RS232 კავშირით.
for (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("დაწყება ბაიტი:"); 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:"); for (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 (ან სხვა რამეს) თქვენ უნდა დააკოპიროთ სანდო Makefile დირექტორიაში და დაამატოთ ეს ფაილები წყაროს ხაზზე. ასევე გაითვალისწინეთ, რომ სერიული კითხვის განყოფილების დრო ემყარება 16 MHz MCU. თუ თქვენ მუშაობთ საათის სხვა სიხშირეზე, თქვენ უნდა ექსპერიმენტულად განსაზღვროთ დაგეგმილი შეფერხებები ცენტრში baud განაკვეთის იმპულსებზე. ვიმედოვნებ, რომ ეს ინსტრუქცია გარკვეულწილად დაგეხმარა. თუ თქვენ გაქვთ რაიმე შემოთავაზება, თუ როგორ შეიძლება მისი გაუმჯობესება, ნუ დააყოვნებთ შემატყობინოთ!
გირჩევთ:
ESP32 დაფუძნებული RFID მკითხველი სენსორული ეკრანით: 7 ნაბიჯი
ESP32 დაფუძნებული RFID მკითხველი სენსორული ეკრანით: ამ მცირე ინსტრუქციით მე ვაჩვენებ, თუ როგორ უნდა შევქმნათ მარტივი RFID მკითხველი TFT გამომავალით კედელზე დასაყენებლად ESP32 DEV KIT C მოდულის, RC-522 წამკითხველი PCB და AZ-Touch ESP ნაკრების გამოყენებით. თქვენ შეგიძლიათ გამოიყენოთ ეს მკითხველი კარზე შესასვლელად ან დამრღვევი
Arduino RFID მკითხველი TFT ჩვენებით: 7 ნაბიჯი
Arduino RFID მკითხველი TFT დისპლეით: მე გაჩვენებთ ამ სასწავლო ინსტრუქციას, თუ როგორ უნდა შეიმუშაოთ ლამაზი RFID მკითხველი TFT დისპლეით და კედლის დასაყენებლად. ძალიან ადვილია შექმნათ ლამაზი RFID მკითხველი TFT გამომავალით კედლის დასაყენებლად Arduino– ით MKR თქვენი არჩევანით და ჩვენი Ar
მუსიკა რეაქტიული RGB LED ზოლები კოდით - WS1228b - Arduino & მიკროფონის მოდულის გამოყენება: 11 ნაბიჯი
მუსიკა რეაქტიული RGB LED ზოლები კოდით | WS1228b | Arduino & მიკროფონის მოდულის გამოყენება: მუსიკალური რეაქტიული WS1228B LED ზოლის შექმნა Arduino და მიკროფონის მოდულის გამოყენებით. მეორადი ნაწილები: Arduino WS1228b Led Strip ხმის სენსორი Breadboard Jumpers 5V 5A კვების წყარო
Arduino RFID UHF მკითხველი: 10 ნაბიჯი
Arduino RFID UHF მკითხველი: ამ ინსტრუქციის მიზანია უზრუნველყოს მიკროკონტროლერის ადვილად გასაგები მაგალითი UHF RFID მკითხველთან. მკითხველი, რომელსაც ჩვენ ვიყენებთ არის Thinkify TR-265. დემონსტრაცია შედგება სამი UHF ტეგისაგან, თითოეულს უნიკალური ID
გამოიყენეთ MFRC522 RFID მკითხველი არდუინოსთან ერთად: 5 ნაბიჯი
გამოიყენეთ MFRC522 RFID მკითხველი არდუინოსთან ერთად: გამარჯობა! მე ვაპირებ გასწავლოთ როგორ გააკეთოთ მაგარი, ადვილად გასაღები ბარათი ან გასაღები ფობ სკანერი! თუ თქვენ გაქვთ RFID MFRC522 მოდული, ლიდერები, რეზისტორები, მავთულები, arduino uno, პურის დაფა და 9 ვ ბატარეა (სურვილისამებრ), მაშინ კარგია, რომ გაგრილების