version 1.2
15/02/2016
rev 25/11/2023

Ready for PIC 18F45K22 .. Application RFID RC522
(2016)
Ready for PIC 18F45K22 .. Test 2eme carte RFID RC522 (2018)
Presentation de la carte de developpement Ready For PIC18F45K22
Le LCD 2119 (alim 3,3V) 2x16cars , relié via Bus I2C1 (2020)
Version MikroC 2023 .. sans LCD , sortie UART1 ..terminal PC YAT (2023)


Version MPLABX 2023.. sans LCD, 18F27K42 SPI HW et RFID RC522 avec MPLABX XC8


ATTENTION Alimentation PIC, LCD et carte RFID-RC522 en 3,3V
=> commutateur carte Ready for PIC sur 3,3V
Afficheur piloté en I2C via I2C1 Hardware

Modification Hardware sur Afficheur LCD 2119 I2C:
Rajout de 2 R de 4,7K sur la face arriere du LCD pour R pull up BUS I2C
Modif hardware pour Backlite minimum permanent ::
pont entre 1 et 7 et R=750 entre 2 et 6 sur le connecteur haut (libre opposé)
et suppresion de la liaison pin 5 et 6 du connecteur bas pour R=220

Docu sur LCD :
PCF2119X_rev12.pdf


(1ere) Carte RFID RC522

RFID-RC522 RF IC Card Module capteur #01392735 4.89€
carte RFID-RC522 livrée avec un jeton belu et 1 carte RFID blanche

 

Interconnections avec carte Ready For PIC

images/t_18F45K22_MSSP2_SPI_diagram_MC.gif
Liaisons Hardware entre PIC et carte RC522 Schematic (pour MikroC)

HARDWARE Prototype

images/RFID_RC522_Testing_160208.jpg

L'I2C1 bus est utilisé pour piloter le LCD 2119 2x16 car
L'UART1 est connecté par défaut au circuit FTDI de la carte => COM23 via liaison USB
Le
MSSP2 SPI est utilisé via le PORTD ( MSSP1 non dispo because I2C1)
Carte RC522 livrée avec 2 TAG RFID Passif , 1 jeton et 1 carte
Lien tres interssant sur la RFID

au Scope :
Avec une boucle de Herz constituée de 7 spires jointives de fil dia 1mm bobiné sur bouchon diam 40mm (voir photo)
on peut oberver le signal emis par la carte RC522 13,6Mhz ~1V cr cr sinus

images/t_RD1_MOSI_signal.gif images/t_RD4_MISO_signal.gif images/t_Boucle_hertz_sur_RC522_signal.gif
signal SPI MOSI signal SPI MISO boucle 7 tours dia 40mm fil 1mm diam 13,6Mhz

BUS SPI :
// connectique equivalente à SPI2 Hardware
sbit MFRC522_CS at LATD.B3; // NSS/SDA
sbit MFRC522_Rst at PORTD.B2;
sbit SoftSpi_SDO at LATD.B4;
sbit SoftSpi_CLK at LATD.B0;
sbit SoftSpi_SDI at PORTD.B1;


//Init SPI2 en Mode Hardware via MikroC library
// master mode
//clock Fosc/4
//clock idle state low
//data transimtted on low to high edge
//input data sampled at the middle of interval
SPI2_Init();


LIAISONS :
Pour des raisons de commodités, une "planche à pain" (BreadBoard=planche d'essais) est utilisée
pour recuperer l'alim 3,3V et 0V, et rajouter Led, Buzzer + 3 Resistances de pull up.

18F45K22 pins RC522
RD3 -> out Select Board SS
RD0 -> out SCK
RD4 -> Master Output Slave Input
RD1 <- Master Input Slave Output
RB0 <- Interrupt from RC522
Gnd ---------
RD2 output Reset
Power Supply 3,3V

1
2
3
4
5
6
7
8

RA3 output ->270 ohms ->l Buzzer to +0V
RA4 output -> 750 ohms -> LED to +3,3V
RC3 I2C1 SCL 3 LCD2119
RC4 I2C1 SDA 4 LCD2119
RA2 input + R 4,7K pull up ->+3,3 choix Init /RAZ Eeprom

La bibliotheque MFR5C522 issue de ce lien
Auteur du Blog

Cette bibliotheque donne entiere satisfaction..
attention à l'inversion MOSI , MISO
Les fonction de cette librairie :
voir l'original en cas de doute sur la traduction .. car faite surtout par déduction
Principales fonctions :
MFRC522_Init() - Initialisation du module RC522
MFRC522_Reset() - Reset du module MFRC522.
MFRC522_Halt() - Desactivation du module = Hibernation.
MFRC522_SelectTag( char *serNum ) - Selection type de carte, param servant à l'authentification. serNum = Numero de série. 5 bytes.
MFRC522_Auth ( char authMode, char BlockAddr, char *Sectorkey, char *serNum )
- Authentification et determination du bloc actif en Lecture et Ecriture
authMode: type d'autentification A ( PICC_AUTHENT1A ) ou B ( PICC_AUTHENT1B ).
BlockAddr - Numéro du block. 4 blocs de secteur.
SectorKey - Senha d'autentification 6 bytes. Generalement definit comme 0xFFFFFFFFFFFF.
serNum - Numero de série de la carte sur 5 bytes.
MFRC522_Write( char blockAddr, char *writeData ) Ecriture 16 bytes dans le numero de bloc destinataire, sert de logo d'autentification.
blockAddr - Numero do bloco. Exceto o quarto bloco do setor, que é usado para autenticar.
writeData - 16 bytes en ecriture.
MFRC522_Read( char blockAddr, char *recvData ) Lecture des 16 bytes du numéro de bloc passé, logo d' authentification.
blockAddr - Numero do bloc.
recvData - Retourne les 16 bytes lus dans le tabelau recvData.
MFRC522_isCard( char *TagType ) - Verification presence d'une carte devant le lecteur.
TagType - Retourne un type de carte.
MFRC522_ReadCardSerial( char *str ) Lecture du numero de serie de la carte
str - Retourne un pointeur sur le numero de serie : 5 bytes ( 4 bytes + checksum ).

Le programme MikroC pro 6.20

Juste quelques petites modifs pour adapter le LCD en I2C
et utilisation du MSSP2 SPI2 hardware du PIC 18F45K22


L'UART1 => TeraTerm COM23, 19200,8,N,1 sur PC est utilisé pour tester le tout, mais aussi apporte d'autres fonctionalites.

images/t_Teraterm_dialogue_160225.gif

L'afficheur LCD 2x16 cars renseigne sur l'avancement et le controle du lecteur RFID.
L'EEPROM du PIC est utilisee pour stoker jusqu'à 8 numeros de cartes et signatures.
La laison Terminal UART offre les possibilites suivantes, résumées par l'envoi de "Aide" via le clavier PC

Aide
Message= : assigne un msg d'authentification de 16 sur le bloc 4 de la carte
Liste_UID : liste les numéros d'identifications de cartes déja reconnues
Liste_Msg : liste des msg d'authentification asscociées aux carte
Liste_EEprom : liste contnu EEPROM PIC
Assigne_Nom= : Assigne un nom à l'étiquette lue
RAZ_EEprom : RAZ contenu EEPROM du PIC
LedA=1 ou LedA=0

A la mise sous tension,
FOSC interne initialisée à 16 Mhz
Hardware initalisé
RAZ de l''EEPROM du PIC ..
Liaison I2C1 initialisée, ainsi que le LDC2119 sur le bus I2C
Liaison UART1 initalise, de meme l'interruption reception de caractere.
Liaison MSSP SPI2 initialisée
Carte RFID RC522 initialisee
Le LCD affiche les etapes , ainsi que le terminal UART
Si tout se passe bien, on arrive à une boucle principale qui tourne sur un delai de 1 sec
"Attente Carte" affiché sur le LCD, et affiché toutes les 10 sec sur l'UART

Des que la carte RC522 detecte l'approche d'une carte RFID ,
Beep#1
Affiche le TAG (type de la carte ):; 0400

puis le numero de serie du 10 digits (5 bytes)
affichage contigu des 5 bytes sur le LCD, et separé par ":" sur le terminal

La lecture du Bloc: affiche me message d'autentification associé..(voir nota)

Puis un message "Bonjour "... sur lequelle on peut rajouter un prénom (ou 8 cars) avec la commande "Assigne_Nom="

On envoi la commande Message, on dispose alors de 4 secondes pour presenter la carte sur laquelle sera inscrite le Message.
et un message d'invite, en 1ere ligne du LCD , pour retirer la carte.. avec un Beep#2 specifique

Si on presente la carte et qu'on la retire avant la fin de sequence,
Beep#3 d'alerte et message ..bad en 2em ligne du LCD

En fin de sequence de lecture d'une carte , le numero de carte est conservé,
pour recevoir une eventuelle commande au clavier.

Nota 1: Message:
Ce message aura été prealablement installé via la commande terminal "Message = XXXXXXXXXXXXXXX"
ou les 16 X, represente le message.
Une fois installé ,il est stocké en epermancne dans la Carte RFID !

Nota 2 : apres presentation des cartes les numero de series sont stockes en EEPROM en fonction de l'ordre de presentation
L'Assignation d'un nom est associé à la carte , et il faut , sur RESET general, representer les cartes dans le meme ordre
que lors de l'initialisation de celle-ci, sinon , refaire une assignation de Nom.

Video sur le test avec 1 jeton et 1 carte

Le programme Source
La partie LCD2119
Le chargeur
dans le fichier
RC522_18F45k22_UART1_LCD2_I2C1_SPI2_Hardw_160222.zip

TeraTerm terminal Dialogue avec RFID RC522 :
Teraterm_RC522_echanges_160225.log

Modif :
Rajout entree RA2 pour RAZ ou init forcee de l'EEPROM du PIC .
RA2=1 => init Forcee
RA2=0 => RAZ Eeprom .. à utiliser au moins une fois, lors de la decouverte des nouvelles cartes
Rajout detection Interrupr RB0 depuis carte RC522 ..
source MikroC rev 160229

Ecriture dans tout l'espace carte RFID
Le fait de rajouter du code .. bloque le démarrage du CPU ..
Probleme du à la présence du Bootloader ?
probleme posé sur
MikroE ICI

Video :
RFID_RC522_18F45K22_test_160225.webm



. Test sur une 2eme Carte RFID RC522 (avec Ready for PIC 18F45K22 .)

pour test avec 4 jetons au lieu de 2 ..
Meme logiciel , meme connectique
LCD2119 en I2C sur RC3,RC4
RFID carte sur SPI Port D
Liaison UART RC6,RC7 <-----> interface USB/serie CH340G TTL HW-597 <-> COM16 19200,8,N,1

images/t_Hardware_Test_2em_RFID_180421.gif






Cette carte reconnait déja le jeton Bleu et carte Blanche de la precedente carte RFID
La detection de la nouvelle carte blanche s'effectue OK

* test new carte blanche :
cPresence carte ou Jeton detectée OK
TAG TYPE: 0400
Version Logiciel :
Lecture Numero de serie : CB:2D:A0:49:0F
uiD= CB:2D:A0:49:0F
c_Index=3 Deja existant : CB:2D:A0:49:0F
Lecture bloc 4 = Num_UID=3


de meme ,pour le jeton Bleu

*Test New jeton bleu
Presence carte ou Jeton detectée OK

TAG TYPE: 0400
Version Logiciel :
Lecture Numero de serie : DC:93:60:83:AC
uiD= DC:93:60:83:AC
c_Index=2 Deja existant : DC:93:60:83:AC
Lecture bloc 4 =
Num_UID=2


envoi depuis le terminal, de la commande
Liste_UID <CR>
Reception de : Liste_UID
Index 0 UID : 44:B7:E1:E9:FB
Index 1 UID : 0A:E6:E8:75:71
Index 2 UID : DC:93:60:83:AC
Index 3 UID : CB:2D:A0:49:0F

Index 4 UID : 00:00:00:00:00
Index 5 UID : 00:00:00:00:00
Index 6 UID : 00:00:00:00:00
Index 7 UID : 00:00:00:00:00

il faut associer maintenant un nom au jeton
... retirer la carte Num_UID=2
Attente Presence Carte :
Attente Presence Carte :
Reception de : Assigne_Nom=ROBERT
Nom : ROBERT -> EEPROM ligne 10
Presence carte ou Jeton detectée OK
TAG TYPE: 0400
Version Logiciel :
Lecture Numero de serie : DC:93:60:83:AC
uiD= DC:93:60:83:AC
c_Index=2 Deja existant : DC:93:60:83:AC
Lecture bloc 4 = Num_UID=2
Comparaison
44:B7:E1:E9:FB --> DC:93:60:83:AC
0A:E6:E8:75:71 --> DC:93:60:83:AC
DC:93:60:83:AC --> DC:93:60:83:AC
B
onjour : ROBERT
... retirer la carte Num_UID=2

et pour la nouvelle carte
CB:2D:A0:49:0F --> CB:2D:A0:49:0F
Bonjour : NoName Assigned.
... retirer la carte Num_UID=3
Attente Presence Carte :
Reception de : Assigne_Nom=JULIANNE
Nom : JULIANNE -> EEPROM ligne 11
Attente Presence Carte :
Presence carte ou Jeton detectée OK
TAG TYPE: 0400
Version Logiciel :
Lecture Numero de serie : CB:2D:A0:49:0F
uiD= CB:2D:A0:49:0F
c_Index=3 Deja existant : CB:2D:A0:49:0F
Lecture bloc 4 = Num_UID=3
Comparaison
44:B7:E1:E9:FB --> CB:2D:A0:49:0F
0A:E6:E8:75:71 --> CB:2D:A0:49:0F
DC:93:60:83:AC --> CB:2D:A0:49:0F
CB:2D:A0:49:0F --> CB:2D:A0:49:0F
Bonjour : JULIANNE
... retirer la carte Num_UID=3

Rajout d'un Message associé à la carte :


Interruption RB0
Attente Presence Carte :
Reception de : Message=Architecte
Modif bloc de 16 cars sur La Carte presentée
Vous avez 4 sec. pour presenter le Jeton ou la Carte
Presence carte ou Jeton detectée OK
Re-Lecture Numero de serie : DC:93:60
Ecriture de <Architecte> sur 1A bloc 4
... retirer la carte Num_UID = 2

Attente Presence Carte :
Reception de : ... retirer la carte Num_UID = 2bloc 4Presence carte ou Jeton detectée OK
TAG TYPE: 0400
Version Logiciel :
Lecture Numero de serie : DC:93:60:83:AC
uiD= DC:93:60:83:AC
c_Index=2 Deja existant : DC:93:60:83:AC
Lecture bloc 4 = Architecte Num_UID=2
Comparaison
44:B7:E1:E9:FB --> DC:93:60:83:AC
0A:E6:E8:75:71 --> DC:93:60:83:AC
DC:93:60:83:AC --> DC:93:60:83:AC
Bonjour : ROBERT
... retirer la carte Num_UID=2

et pour la carte

Attente Presence Carte :
Presence carte ou Jeton detectée OK
TAG TYPE: 0400
Version Logiciel :
Lecture Numero de serie : CB:2D:A0:49:0F
uiD= CB:2D:A0:49:0F
c_Index=3 Deja existant : CB:2D:A0:49:0F
Lecture bloc 4 = Num_UID=3
Comparaison
44:B7:E1:E9:FB --> CB:2D:A0:49:0F
0A:E6:E8:75:71 --> CB:2D:A0:49:0F
DC:93:60:83:AC --> CB:2D:A0:49:0F
CB:2D:A0:49:0F --> CB:2D:A0:49:0F
Bonjour : JULIANNE
... retirer la carte Num_UID=3
Attente Presence Carte :
Attente Presence Carte :
Reception de : Message= Ecrivain
Modif bloc de 16 cars sur La Carte presentée
Vous avez 4 sec. pour presenter le Jeton ou la Carte
Presence carte ou Jeton detectée OK
Re-Lecture Numero de serie : CB:2D:A0
Ecriture de < Ecrivain> sur 1A bloc 4
... retirer la carte Num_UID = 3
Interruption RB0
Interruption RB0
Presence carte ou Jeton detectée OK
TAG TYPE: 0400
Version Logiciel :
Lecture Numero de serie : CB:2D:A0:49:0F
uiD= CB:2D:A0:49:0F
c_Index=3 Deja existant : CB:2D:A0:49:0F
Lecture bloc 4 = Ecrivain Num_UID=3
Comparaison
44:B7:E1:E9:FB --> CB:2D:A0:49:0F
0A:E6:E8:75:71 --> CB:2D:A0:49:0F
DC:93:60:83:AC --> CB:2D:A0:49:0F
CB:2D:A0:49:0F --> CB:2D:A0:49:0F
Bonjour : JULIANNE
... retirer la carte Num_UID=3

Reception de : Liste_Msg
Index 0 Nom : Joelle 25-02-55
Index 1 Nom : paulfjujo.free.f
Index 2 Nom : Architecte
Index 3 Nom : Ecrivain
Index 4 Nom : no Message
Index 5 Nom : no Message
Index 6 Nom : no Message
Index 7 Nom : no Message


Test OK, repetitif 2 ans apres ..
L'UART est utilisé ici pour initialiser les NOMS et MESSAGES, mais n'est pas indispensable.
Le programme est BAVARD , affiche tous les details de deroulement du programme.
il pourrait etre allégé .. mais BON,
L'afficheur 2x16 semble suffisant .
Sinon , une appli Anroid Phone serait plus mieux bien .




Version 2023 (MikroC) , SANS LCD ,
sortie sur terminal PC
ou Android ( avec HC05)
N'ayant plus de LCD 2x16 pouvant fonctionner sous 3,3V , suppression du LCD
Usage de la laision UART1 115200bds <-> terminal YAT via cordon USB/LTTL.


commandes clavier terminal
Attente Carte
Attente Carte
Help
Reception de : Help
Help & Commandes dispo:
Msg= : assigne un msg de 16 sur le bloc 4 de la carte
Liste_UID : liste les numeros de cartes déja reconnues
Liste_Msg : liste des Msg stocké sur cartes
Liste_EEprom : liste contnu EEPROM PIC
Assigne_Nom= : Assigne un nom à l'etiquette lue
RAZ_EEprom : RAZ contenu EEPROM du PIC

Liste_EEprom
Reception de : Liste_EEprom
Liste EEprom PIC :
00 --> 44:B7:E1:E9:FB
01 --> 0A:E6:E8:75:71
02 --> DC:93:60:83:AC
03 --> CB:2D:A0:49:0F
04 --> 00:00:00:00:00
05 --> 00:00:00:00:00
06 --> 00:00:00:00:00
07 --> 00:00:00:00:00
08 --> Joelle
09 --> Paul
10 --> NoName Assigned.
11 --> NoName Assigned.
12 --> NoName Assigned.
13 --> NoName Assigned.
14 --> NoName Assigned.
15 --> NoName Assigned.

Attente Carte
Attente Carte
Attente Carte
Liste_Msg
Reception de : Liste_Msg
Index 0 Nom : Joelle 25-02-55
Index 1 Nom : no Message
Index 2 Nom : Architecte
Index 3 Nom : Ecrivain
Index 4 Nom : no Message
Index 5 Nom : no Message
Index 6 Nom : no Message
Index 7 Nom : no Message
Attente Carte

Procedure d'init RFID RC522 , SPI examinée avec SQA Analyser logique

images/t_SCANA_MFRC522_Init_18F45K22_2023-1122.gif

SPI sur port D




Projet MikroC 7.60

RFID_RC522_18F45k22_UART1_SPI2_Hardw_2023-11.mcppi
Source :
RC522_18F45k22_LCD_I2C_SPI2_Hardw_2023_1122_MC.c
Chargeur :
RFID_RC522_18F45k22_UART1_SPI2_Hardw_2023-1122_MC.hex
Config :
RFID_RC522_18F45k22_UART1_SPI2_Hardw_2023-11.cfg
Specifique :
RC522_SPI2_Hardw_MC.h


il y a encore du TAF à faire ...mais pour l'instant je n'ai pas d'application UTILE en vue




Version 18F27K42 MPLABX XC8 (25/11/2023 )
avec SPI Hardware (Special ) sur PortC , sortie uniquement sur terminal PC

BAD results !!!!!!


Je n'arrive pas à avoir exactement la meme Init RFID !
qu'avec ma version MikroC 18F45K22 (avec un MSSP Hardware = SPI classique !)
avec la meme ligne de commande !
... et donc je ne peux pas poursuivre ... ne detecte pas mes cartes ou jetons ...
malgré xx tentatives ..

data2/t_SCANA_MFRC522_Init_18F27K42_2023-1125_X.gif


Projet MPLABX XC8 et C99:
Pack :
18F27k42_RFID_reader_2023-1125.X.bad.zip
Source :
main_18F27k42_RFID_reader_2023-1125.X_bad.c
chargeur :
18F27k42_RFID_reader_2023-1125.X.bad.hex








 

paulfjujo@free.fr


../common/GIF/LTC1286p.jpg



Retour à l'index general