AVR/Arduino lecteur RFID avec UART Code en C (3 / 4 étapes)

Étape 3: Écrire le Code

Pour lire les données du lecteur RFID, il faut savoir lorsqu’une balise a été déposée, extraire les données sur le port série, puis l’envoyer quelque part.

Format de données pour le lecteur RFID

Le lecteur RFID de parallaxe envoie des données à un rythme fixe et glaciaire de 2400 bauds. Une étiquette RFID est de 10 octets. Afin de permettre de détection/correction d’erreur, étant donné que le lecteur pourrait être partit de bruit aléatoire, la RFID de 10 octets est délimitée par une sentinelle start et stop. La sentinelle de départ est (0x0A) de saut de ligne et la sentinelle d’arrêt est de retour chariot (0x0D). Il ressemble à ceci :

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

Voici les trois étapes principales.

Savoir quand une balise a été soumise

J’ai utilisé un code Pin modifier interrompre l’AVR qui avertit le firmware qu’un changement s’est produite sur un axe surveillé. Configurer l’AVR pour cela est facile et nécessite définissant l’indicateur, en disant la MCU qui NIP que vous souhaitez surveiller et définissant le bit global interrupt.

Configurer P.C.int

 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 

Écrivez votre routine d’interruption du service
Vous voulez garder votre ISR court donc dans mon vecteur d’interruption, j’ai lu l’octet entier, morceau par morceau et stocker les octets dans un tableau de caractère volatile global. Je fais ce qui suit à chaque interruption :

  • Assurez vous que je suis sur un bit de départ
  • Centrez le calendrier sur le pouls moyen à 2400 bauds (la vitesse du lecteur RFID)
  • Passer le bit de départ et de faire une pause au milieu de la mèche suivante
  • Lire chaque bit dans un entier non signé
  • Quand j’ai 8 bits, mettre l’octet dans un tableau de caractères
  • Lorsque j’ai recueilli 12 octets, informez le MCU que la balise a été lue pour la détection d’erreurs.

J’ai modifié le code SoftSerial de Mikal Hart qui a modifié le code de David Mellis pour les délais déterminés expérimentalement dans les routines de série.

Analyser une sortie RS232

La routine P.C.int contient le code pour lire la sortie RS232 du lecteur RFID.
Lorsque j’ai obtenu 12 octets (10 octets RFID plus sentinelles), j’ai mis bDataReady 1 et laisser la boucle principale de traiter les données et les afficher.

 // 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;} 

Afficher votre balise

Dans le main(), au cours de la boucle de for(ever), j’ai vérifier si bDataReady a été défini, signalisation que la structure entière de la RFID a été envoyée. J’ai ensuite vérifier pour voir si c’est une étiquette valide (c’est à dire commencer et arrêt caractères sont 0x0D, 0x0A et respectivement), et si donc, j’ai envoyer ma connexion RS232.

 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; }} 

Articles Liés

Lecteur RFID avec Servo

Lecteur RFID avec Servo

Dans cette instruction, je vais me contenter de vous parler de faire un circuit simple avec 2 LED, un servo, un lecteur RFID et une arduino uno.Vous aurez besoin :-2 LED (2 différents collors)-un moteur d'asservissement-un lecteur RFID et une clé-un
Comment programmer les puces Arduino sur LPT avec c ++ code ?

Comment programmer les puces Arduino sur LPT avec c ++ code ?

Hi à nouveau !Aujourd'hui je vous montre comment programmer Arduino chip(like ATtiny85) avec c ++ code (aka le code dans l'IDE Arduino)Étant donné que vous ne pouvez pas utiliser BSD(aka LPT) programmeur avec IDE Arduino, j'ai fait cette tutorital:)R
Ajouter le Support de l’Arduino dans ESP8266 avec le code d’échantillon test

Ajouter le Support de l’Arduino dans ESP8266 avec le code d’échantillon test

ESP8266 emballe beaucoup de punch. Il n'est pas juste un module WiFi, il a également un micro-contrôleur décent en construit. Maintenant, la meilleure partie est, la Communauté a fait ce micro-contrôleur intégré extrêmement facile de programmation en
Convertir votre Machine POP/boisson pour utiliser RFID avec Arduino

Convertir votre Machine POP/boisson pour utiliser RFID avec Arduino

Il s'agit de mon premier instructable donc tout commentaire utile est appréciés. J'ai commencé ce projet il y a un an.J'ai commencé à chercher comment utiliser arduino pour contrôler une machine distributrice et j'ai trouvé un projet qui sans elle qu
Serrure de porte RFID avec Arduino

Serrure de porte RFID avec Arduino

Nous voici avec la serrure RFID classique. C' est classique en ce sens « Nous vivons dans l'avenir et considérer pour acquis à ce stade » entiers. Dans ce tutoriel, nous allons configurer un loquet de porte qui s'ouvre avec le coup d'une étiquette RF
Lire les étiquettes RFID avec un Arduino

Lire les étiquettes RFID avec un Arduino

dans ce projet, vous apprendrez à lire une étiquette d'IRF en utilisant le lecteur d'Innovations ID-12 et un Arduino Duemilanove.Étape 1: Let's Get Started ! Nous allons utiliser l' ID Innovations ID-12 pour exécuter la tâche de lecture d'une étiquet
RFIDuino - en utilisant un lecteur RFID & Arduino pour faire un puzzle géocache

RFIDuino - en utilisant un lecteur RFID & Arduino pour faire un puzzle géocache

j'ai profiter de géocaching et électronique et ont fait quelques caches de puzzle électronique utilisant un Arduino.Ma dernière création (avec l'aide d'un collègue cacher le code) utilise un lecteur Arduino et RFID pour faire une géocache puzzle nous
Chérie, j’ai rétréci l’Arduino : passant de Arduino à ATtiny et écrire votre code en pure AVR-C

Chérie, j’ai rétréci l’Arduino : passant de Arduino à ATtiny et écrire votre code en pure AVR-C

Arduino est un grand dur - et la plate-forme logicielle, mais avec toutes ses caractéristiques, c'est aussi un peu gonflé et souvent vous avez seulement besoin d'une petite partie de toutes les fonctionnalités. Votre projet nécessite parfois d'avoir
Système de sécurité et contrôle d’accès avec Arduino et RFID

Système de sécurité et contrôle d’accès avec Arduino et RFID

système de sécurité et contrôle d'accès avec Arduino et RFIDCe projet est un evolotuin de mon premier projet appelé « Arduino – sécurité et contrôle d'accès système »Comme vous pouvez voir à l'http://arduinobymyself.blogspot.com.br/2012/03/arduino-si
Arduino - lecteur/gestionnaire de balises RFID

Arduino - lecteur/gestionnaire de balises RFID

Gérez vos tags RFID avec cette application simple et puissante !Vous pouvez créer des systèmes pour utiliser vos balises comme bon vous semble !Étape 1: matériaux Pour ce projet, j'ai utilisé un Arduino Nano et un module RFID-RC522 .Nano V3.0 Mini US
Denon AVR de contrôle avec bouclier Arduino + Ethernet

Denon AVR de contrôle avec bouclier Arduino + Ethernet

Sur ce projet j'ai construire un panneau de contrôle simple pour mon Denon AVR (AVR-X4100W).La plupart de Denon A / V récepteurs sont réseau prêt, donc vous pouvez les contrôler dans une interphase web ou une application. Il n'y a aucune documentatio
Lecteur RFID ! Identifier quoi que ce soit avec la RFID de cartes de crédit aux plaques d’immatriculation

Lecteur RFID ! Identifier quoi que ce soit avec la RFID de cartes de crédit aux plaques d’immatriculation

Hé les gars aujourd'hui je viens de recevoir un module lecteur RFID de parallaxe ! J'ai essayé et fait de ce programme qui identifie les cartes et autres produits RFID ! Tout ce dont vous avez besoin est un ordinateur, un Arduino, une maquette et le
Contrôle du programme & Arduino + robot PHIRO simultanément avec poche Code smartphone app

Contrôle du programme & Arduino + robot PHIRO simultanément avec poche Code smartphone app

PHIRO Pro est un robot éducatif qui aide les enfants à apprendre au code. Une des façons de programmer et de contrôler PHIRO est via une application Android appelée Pocket Code disponible sur le jeu de Google pour libre. Code de poche a la capacité d
Un jouet pour chien RFID avec sons

Un jouet pour chien RFID avec sons

Pour ma maîtrise en thèse de Design d'Interaction à l'Université de Malmö (Suède), j'ai construit un jouet pour chien prototype qui attrappe le bruit et l'odeur. J'ai commencé avec un prototype de lo-fi, y compris un jouet mou dans lequel je pouvais