AVR/Arduino RFID Reader met UART Code in C (3 / 4 stap)

Stap 3: De Code schrijven


Om te lezen de gegevens uit de RFID-lezer, moet u weten wanneer een tag is ingediend, trekken de gegevens af van de seriële poort, dan stuur het ergens.

RFID Reader gegevensindeling

De Parallax RFID-lezer verzendt gegevens met een vaste, glaciale tempo van 2400 baud. Een RFID-tag is 10 bytes. Zodat voor fout detectie/correctie, omdat de lezer van willekeurige ruis kan worden verrekend, wordt de 10-byte RFID begrensd door een begin- en eindtijd sentinel. De start-sentinel is regelinvoerteken (0x0A) en de stop-sentinel is regelterugloop (0x0D). Het kijkt als dit:

 [Start Sentinel |Byte 1|Byte 2|Byte 3|Byte 4|Byte 5|Byte 6|Byte 7|Byte 8|Byte 9|Byte 10| Stop Sentinel] 

Dit zijn de drie primaire stappen.

Weten wanneer er een tag is ingediend

Ik gebruikte een Pin wijzigen onderbreken op de AVR die waarschuwt de firmware die een verandering is opgetreden op een gecontroleerde pin. Configureren van de AVR voor dit is eenvoudig en vereist de vlag instelt, de MCU vertellen welke pin die u wilt controleren en de global interrupt-bit.

PCINT configureren

 BSET(PCICR,PCIE2); // pin change interrupt control register pcie2 BSET(PCMSK2,PCINT18); // enable pin change interrupt for PCINT18 (PD2) BSET(SREG,7); // Set SREG I-bit 

Uw interrupt service routine schrijven
U wilt bewaren uw korte ISR dus in mijn interruptvector ik lees de gehele byte, stukje bij beetje, en de byte in een mondiale volatiele karakter array opslaan. Ik doe het volgende op elke interrupt:

  • Controleer ik op een startbit
  • Centreren van de timing op de middelste pols op 2400 baud (de snelheid van de RFID-lezer)
  • Overslaan van de startbit en pauzeer aan het midden van de volgende bits
  • Elke bit in een niet-ondertekende integer lezen
  • Wanneer ' 8 bits got youve, zet de byte in een karakter array
  • Wanneer ik heb verzameld 12 bytes, laten de MCU weet dat de tag is gelezen voor foutdetectie.

Ik wijzigde SoftSerial code van Mikal Hart die code van David Mellis voor de experimenteel bepaalde vertragingen in de seriële routines heeft gewijzigd.

Parseren van de RS232-Output

De PCINT-routine bevat de code voor het lezen van de RS232-output van de RFID-lezer.
Toen ik 12 bytes (10-byte RFID plus sentinels) heb gekregen ik bDataReady ingesteld op 1 en laat de hoofdlus gegevens verwerken en weer te geven.

 // this is the interrupt handlerISR(PCINT2_vect){ if (BCHK(PIND,RFID_IN)) // Start bit goes low return; uint8_t bit = 0; TunedDelay(CENTER_DELAY); // Center on start bit for (uint8_t x = 0; x < 8; x++) { TunedDelay(INTRABIT_DELAY); // skip a bit, brother... if (BCHK(PIND,RFID_IN)) BSET(bit,x); else BCLR(bit,x); } TunedDelay(INTRABIT_DELAY); // skip stop bit RFID_tag[rxIdx] = bit; ++rxIdx; if (rxIdx == 12) bDataReady = 1;} 

Uw label weergeven

In de main() controleren tijdens de for(ever) loop, ik om te zien als bDataReady is ingesteld, signalering dat de gehele structuur van RFID is verstuurd. Ik dan check om te zien of het een geldige code (dwz start en stop karakters zijn 0x0A en 0x0D, respectievelijk), en als zo, ik stuur het uit mijn RS232 verbinding.

 for (;;){ if (bDataReady) {#ifdef __DEBUG__ USART_tx_S("Start byte: "); USART_tx_S(itoa(RFID_tag[0],&ibuff[0],16)); ibuff[0] = 0; ibuff[1] = 0; USART_tx_S("\nStop byte: "); 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)); if (x != 10) USART_tx(':'); } USART_tx_S("\n"); } rxIdx = 0; bDataReady = 0; }} 

Gerelateerde Artikelen

RFID Reader met Servo

RFID Reader met Servo

In deze opdracht ga ik gewoon om u te vertellen over het maken van een eenvoudige schakeling met 2 LED's, een servo, een lezer RFID en een arduino uno.U moet:-2 LED (2 verschillende puzzleachtige)-een servomotor-een RFID reader en sleutel-een arduino
Arduino RFID en/of QR code Windows-aanmelding

Arduino RFID en/of QR code Windows-aanmelding

Er is mijn nieuwste korte leuke projecten met mijn Arduino leonardo pro micro.In dit instructable ik twee korte, bijna hetzelfde voorbeeld.De eerste: redekundig voor venster met RFID-kaart.De tweede: gebruik uw Androïde telefoon, scannen van de QR-co
Lezing RFID Tags met een Arduino

Lezing RFID Tags met een Arduino

In dit project, leert u om te lezen van een RFID-tag met behulp van de innovaties ID-12 lezer en een Arduino Duemilanove.Stap 1: Let's Get Started! We de ID innovaties ID-12 gaan gebruiken voor het uitvoeren van de taak van het lezen van een RFID-tag
RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

ik geniet van zowel Geocaching en elektronica en heb een paar van elektronische puzzel caches met behulp van een Arduino.Mijn nieuwste creatie (met de hulp van een collega cacher voor de code) is met behulp van een Arduino en RFID lezer te maken van
De Idiot's Guide to programmering van AVR op de goedkope (met de Arduino IDE!)

De Idiot's Guide to programmering van AVR op de goedkope (met de Arduino IDE!)

Microcontrollers zijn, zonder twijfel, het verbazen van kleine dingen. Ze zijn veelzijdig, krachtig en zeer klein. De laatste karaktertrek is helaas ook gedeeld door zowel mijn portemonnee en mijn programmering vaardigheden. Mijn begrip van C is slec
Kleine e-reader met oled + arduino, test

Kleine e-reader met oled + arduino, test

Dit is mijn eerste pass op een zeer kleine e-reader met behulp van een oled-scherm en een arduino. Het doel is om te lezen van een tekstbestand van een SD-kaart met een vorm factor < 1 vierkante inch.Dit instructable is alleen de zeer basisopstelling
Arduino Wii nunchuck en Wii motion plus met bijgewerkt code voor IDE 1.0.2 en LEDs

Arduino Wii nunchuck en Wii motion plus met bijgewerkt code voor IDE 1.0.2 en LEDs

dus, mij watertje trying voor kappen mijn Wii nunchuck omdat ik wil besturen van motoren en verlichting met de Wii nunchuck.Het eerste probleem dat ik vond was hoe om verbinding te maken met het besturingselement zonder een adapter, ik was van plan o
Programma & controle Arduino + PHIRO robot gelijktijdig met Pocket Code smartphone app

Programma & controle Arduino + PHIRO robot gelijktijdig met Pocket Code smartphone app

PHIRO Pro is een educatieve robot die helpt kinderen leren code. Een van de manieren voor het programmeren en besturen van de PHIRO is via een Android app genaamd Pocket Code beschikbaar op Google Play voor gratis. Zak Code heeft de mogelijkheid voor
Hoe te programmeren van de Arduino chips over LPT met c ++ code?

Hoe te programmeren van de Arduino chips over LPT met c ++ code?

Hi weer!Vandaag laat ik zien hoe te programmeren van de Arduino chip(like ATtiny85) met c ++ code (aka code in de Arduino IDE)Aangezien u niet BSD(aka LPT) programmeur met Arduino IDE gebruiken, maakte ik deze tutorital :)Opmerking: Deze tutorital ha
Arduino RFID deurslot

Arduino RFID deurslot

*** bijgewerkt 8/9/2010 ***Ik wilde een gemakkelijke en veilige manier om te gaan van mijn garage. RFID was de beste manier om te ontgrendelen mijn deur, zelfs met mijn handen vol open ik de deur en de druk op het open! Ik bouwde een eenvoudige schak
Arduino RFID Lock vak

Arduino RFID Lock vak

Hallo, zal vandaag ik je laten zien hoe maak je een RFID Lock box.Stap 1: voorbereidingJe moet1 x houten doos - http://www.amazon.com/Darice-9151-58-Rectangle-Woo...1 x Parallax alleen-lezen RFID scanner - http://www.parallax.com/product/281401 x Ard
Arduino RFID Lock

Arduino RFID Lock

The Arduino RFID lockHoe werkt het?De Arduino RFID sluis is een sluis die gemakkelijk kan worden geopend, maar is veilig. Het slot werkt met een server-database waarmee card codes kunt registreren. Op de deur is er een lezer RFID verbonden tot de slu
Arduino Uno verbinden met Crystalfontz 16 x 2 OLED met slechts 4 draden!

Arduino Uno verbinden met Crystalfontz 16 x 2 OLED met slechts 4 draden!

Deze modules zijn vrij aardig. Ze zijn even groot als onze CFAH1602C serie 16 x 2 tekens LCD-modules en dunner als een bonus. De OLED van contrast is fantastisch, en ze hebben een frisse look die is moeilijk te verslaan. Een ander aardig ding is dat
RFID Reader Detector en Tilt-gevoelige RFID-Tag

RFID Reader Detector en Tilt-gevoelige RFID-Tag

de 'wrijven'Wilt u de aanwezigheid van RFID-lezers? Wilt u zelf bepalen wanneer een RFID-tag is actief of leesbaar? We beschrijven hoe om beide te doen met behulp van stukjes van koper en kaart, en sommige hardware beschikbaar elektronica.Langere pre