Bonjour, j'ai recu un convertiseur LJ245A pour convertir mon 3v en 5v j'ai donc effectuer le branchement.
mais je n'arrive toujour pas a faire marcher mon programme.
J'ai donc mes deux composants branché en meme temps et quand j'essaye un programme qui utilise juste le lecteur RFID il lit tout de travers j'ai pas les bonnes donnée.
par contre quand je test un programme qui utilise juste le module ethernet sa marche, j'ai bien ma page qui s'affiche par exemple.
Le problème ne peut que ce situé au niveau hardware car pour le lecteur RFID je ne lit pas les bonnes infos meme en desactivant le CS du module ethernet avec un digitalwrite à HIGH
Je ne vois pas ou est le problème.
Merci à vous.
Timiti29
PS j'utilise cette librairie : GitHub - miguelbalboa/rfid: Arduino RFID Library for MFRC522 pour le module RFID
et GitHub - njh/EtherCard: EtherCard is an IPv4 driver for the ENC28J60 chip, compatible with Arduino IDE pour le module Ethernet ENC28J60
pour le module ethernet j'ai modifier le code pour qu'il utilise la librairie SPI au lieux de travailler directement avec les registres interne
j'ai donc effectué les modif suivante dans le fichier enc28j60.cpp:
#include <SPI.h>
puis les fonctions modifier :
static byte readOp (byte op, byte address) {
enableChip();
/* xferSPI(op | (address & ADDR_MASK));
xferSPI(0x00);
if (address & 0x80)
xferSPI(0x00);
byte result = SPDR;*/
byte result;
result = SPI.transfer(op | (address & ADDR_MASK));
result = SPI.transfer(0x00);
if(address & 0x80)
result = SPI.transfer(0x00);
disableChip();
return result;
}
static void writeOp (byte op, byte address, byte data) {
enableChip();
//xferSPI(op | (address & ADDR_MASK));
//xferSPI(data);
SPI.transfer(op | (address & ADDR_MASK));
SPI.transfer(data);
disableChip();
}
static void readBuf(word len, byte* data) {
enableChip();
//xferSPI(ENC28J60_READ_BUF_MEM);
byte result;
result = SPI.transfer(ENC28J60_READ_BUF_MEM);
while (len--) {
//xferSPI(0x00);
//*data++ = SPDR;
result = SPI.transfer(0x00);
*data++ = result;
}
disableChip();
}
static void writeBuf(word len, const byte* data) {
enableChip();
//xferSPI(ENC28J60_WRITE_BUF_MEM);
byte result = SPI.transfer(ENC28J60_WRITE_BUF_MEM);
while (len--)
{
//xferSPI(*data++);
SPI.transfer(*data++);
}
disableChip();
}
J'ai tester le code avec juste le module ethernet et sa marche.
Le code pour lire uniquement la carte RFID :
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 8
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
MIFARE_Key keyA;
byte bufferrfid[18];
String postval = "req=INSERT IGNORE INTO rfid(`id`, `type`,`b0s0`, `b0s1`, `b0s2`, `b0s3` ) VALUES('', '1'";
String postvaltmp[4] = {"", "", "", ""};
char c2h(char c)
{ return "0123456789ABCDEF"[0x0F & (unsigned char)c];
}
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println("Scan PICC to see UID and type...");
byte keytmp[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
for (byte i = 0; i < 6; i++) {
keyA.keyByte[i] = keytmp[i];
}
}
void loop() {
// Look for new cards
if (mfrc522.PICC_IsNewCardPresent()) {
Serial.println("Nouvelle carte Presente!");
if (mfrc522.PICC_ReadCardSerial())
{
Serial.println("Carte selectionnée !");
byte res = mfrc522.PCD_Authenticate(PICC_CMD_MF_AUTH_KEY_A, 0, &keyA, &(mfrc522.uid));
Serial.print("Res = ");
Serial.println(res);
if(res == STATUS_OK)
{
byte buffersize = 18;
for(byte i=0; i<4; i++)
{
res = mfrc522.MIFARE_Read(i, bufferrfid, &buffersize);
for(byte j=0; j<16; j+=2)
{
postvaltmp[i] += c2h((bufferrfid[j] >> 4) & 0x0F);
postvaltmp[i] += c2h(bufferrfid[j+1] & 0x0F);
}
Serial.println("");
}
for(int i=0; i < 4; i++)
{
postval += ", '";
postval += postvaltmp[i];
postval += "'";
}
postval += ");";
Serial.println(postval);
mfrc522.PICC_HaltA();
}
}
}
// Dump debug info about the card. PICC_HaltA() is automatically called.
//mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
La variable potval contient une requette SQL et la variable postvaltmp est un tableau qui contient les valeur des 4 premier bloc d'un tag