M7E rfid reader

Trying to hook up the M7E hecto rfid simultaneous reader with my arduino uno R4. Ive tried to folllow the hookup guide but it keeps saying i need to “check my wiring”. Ive checked my soldering and my wiring a dozen times. Using example 1_constant _read.Ino. Is there something I’m doing wrong?

Hard to see, but it looks that TX and RX are not connected correctly.

The UNOR4 RX needs to be connected to M7E-TX
The UNOR4 TX needs to be connected to M7E-RX

Switch to SER and selected Serial1 in the sketch.

Ok i switched the RX and TX. Where in the sketch do I switch to serial 1?

see on Arduino Examples - SparkFun Simultaneous RFID Reader - M7E Hookup Guide

so i tried switching to serial1 but it didnt fix the issue. Also then im not defining pins and it says thats for a ESP32 not an UNO. Is there anything else that amy help?

can you share the pictures of how it is connected now ?
can you also share the sketch as you use it ?
There is NO need on the UNOR4 to define the pins. I had it working with Serial1 without problems. There is an issue with SoftwareSerial.. but that is a different error message.

Let’s see a picture of the back of your reader too.


/*
Reading multiple RFID tags, simultaneously!
By: Nathan Seidle @ SparkFun Electronics
Date: October 3rd, 2016
GitHub - sparkfun/Simultaneous_RFID_Tag_Reader: Evaluation board for the ThingMagic UHF RFID Module for use with 860 to 920MHz RFID Tags

Constantly reads and outputs any tags heard

If using the Simultaneous RFID Tag Reader (SRTR) shield, make sure the serial slide
switch is in the ‘SW-UART’ position
*/

// Library for controlling the RFID module
#include “SparkFun_UHF_RFID_Reader.h”

// Create instance of the RFID module
RFID rfidModule;

// By default, this example assumes software serial. If your platform does not
// support software serial, you can use hardware serial by commenting out these
// lines and changing the rfidSerial definition below
#include <SoftwareSerial.h>
SoftwareSerial softSerial(0, 1); //RX, TX

// Here you can specify which serial port the RFID module is connected to. This
// will be different on most platforms, so check what is needed for yours and
// adjust the definition as needed. Some examples are provided below
#define rfidSerial softSerial // Software serial (eg. Arudino Uno or SparkFun RedBoard)
//#define rfidSerial Serial1 // Hardware serial (eg. ESP32 or Teensy)

// Here you can select the baud rate for the module. 38400 is recommended if
// using software serial, and 115200 if using hardware serial.
#define rfidBaud 38400
//#define rfidBaud 115200

// Here you can select which module you are using. This library was originally
// written for the M6E Nano only, and that is the default if the module is not
// specified. Support for the M7E Hecto has since been added, which can be
// selected below
#define moduleType ThingMagic_M7E_HECTO
// #define moduleType ThingMagic_M7E_HECTO

void setup()
{
Serial.begin(38400);
while (!Serial); //Wait for the serial port to come online

if (setupRfidModule(rfidBaud) == false)
{
Serial.println(F(“Module failed to respond. Please check wiring.”));
while (1); //Freeze!
}

rfidModule.setRegion(REGION_NORTHAMERICA); //Set to North America

rfidModule.setReadPower(500); //5.00 dBm. Higher values may caues USB port to brown out
//Max Read TX Power is 27.00 dBm and may cause temperature-limit throttling

Serial.println(F(“Press a key to begin scanning for tags.”));
while (!Serial.available()); //Wait for user to send a character
Serial.read(); //Throw away the user’s character

rfidModule.startReading(); //Begin scanning for tags
}

void loop()
{
if (rfidModule.check() == true) //Check to see if any new data has come in from module
{
byte responseType = rfidModule.parseResponse(); //Break response into tag ID, RSSI, frequency, and timestamp

if (responseType == RESPONSE_IS_KEEPALIVE)
{
  Serial.println(F("Scanning"));
}
else if (responseType == RESPONSE_IS_TAGFOUND)
{
  //If we have a full record we can pull out the fun bits
  int rssi = rfidModule.getTagRSSI(); //Get the RSSI for this tag read

  long freq = rfidModule.getTagFreq(); //Get the frequency this tag was detected at

  long timeStamp = rfidModule.getTagTimestamp(); //Get the time this was read, (ms) since last keep-alive message

  byte tagEPCBytes = rfidModule.getTagEPCBytes(); //Get the number of bytes of EPC from response

  Serial.print(F(" rssi["));
  Serial.print(rssi);
  Serial.print(F("]"));

  Serial.print(F(" freq["));
  Serial.print(freq);
  Serial.print(F("]"));

  Serial.print(F(" time["));
  Serial.print(timeStamp);
  Serial.print(F("]"));

  //Print EPC bytes, this is a subsection of bytes from the response/msg array
  Serial.print(F(" epc["));
  for (byte x = 0 ; x < tagEPCBytes ; x++)
  {
    if (rfidModule.msg[31 + x] < 0x10) Serial.print(F("0")); //Pretty print
    Serial.print(rfidModule.msg[31 + x], HEX);
    Serial.print(F(" "));
  }
  Serial.print(F("]"));

  Serial.println();
}
else if (responseType == ERROR_CORRUPT_RESPONSE)
{
  Serial.println("Bad CRC");
}
else if (responseType == RESPONSE_IS_HIGHRETURNLOSS)
{
  Serial.println("High return loss, check antenna!");
}
else
{
  //Unknown response
  Serial.println("Unknown error");
}

}
}

//Gracefully handles a reader that is already configured and already reading continuously
//Because Stream does not have a .begin() we have to do this outside the library
boolean setupRfidModule(long baudRate)
{
rfidModule.begin(rfidSerial, moduleType); //Tell the library to communicate over serial port

//Test to see if we are already connected to a module
//This would be the case if the Arduino has been reprogrammed and the module has stayed powered
rfidSerial.begin(baudRate); //For this test, assume module is already at our desired baud rate
delay(100); //Wait for port to open

//About 200ms from power on the module will send its firmware version at 115200. We need to ignore this.
while (rfidSerial.available())
rfidSerial.read();

rfidModule.getVersion();

if (rfidModule.msg[0] == ERROR_WRONG_OPCODE_RESPONSE)
{
//This happens if the baud rate is correct but the module is doing a ccontinuous read
rfidModule.stopReading();

Serial.println(F("Module continuously reading. Asking it to stop..."));

delay(1500);

}
else
{
//The module did not respond so assume it’s just been powered on and communicating at 115200bps
rfidSerial.begin(115200); //Start serial at 115200

rfidModule.setBaud(baudRate); //Tell the module to go to the chosen baud rate. Ignore the response msg

rfidSerial.begin(baudRate); //Start the serial port, this time at user's chosen baud rate

delay(250);

}

//Test the connection
rfidModule.getVersion();
if (rfidModule.msg[0] != ALL_GOOD)
return false; //Something is not right

//The module has these settings no matter what
rfidModule.setTagProtocol(); //Set protocol to GEN2

rfidModule.setAntennaPort(); //Set TX/RX antenna ports to 1

return true; //We are ready to rock
}

You are NOT using Serial1 for rfidSerial , but still SoftSerial change :

TO :

give that a try

Changed it to this: Still not working

/*
Reading multiple RFID tags, simultaneously!
By: Nathan Seidle @ SparkFun Electronics
Date: October 3rd, 2016
GitHub - sparkfun/Simultaneous_RFID_Tag_Reader: Evaluation board for the ThingMagic UHF RFID Module for use with 860 to 920MHz RFID Tags

Constantly reads and outputs any tags heard

If using the Simultaneous RFID Tag Reader (SRTR) shield, make sure the serial slide
switch is in the ‘SW-UART’ position
*/

// Library for controlling the RFID module
#include “SparkFun_UHF_RFID_Reader.h”

// Create instance of the RFID module
RFID rfidModule;

// By default, this example assumes software serial. If your platform does not
// support software serial, you can use hardware serial by commenting out these
// lines and changing the rfidSerial definition below
//#include <SoftwareSerial.h>
//SoftwareSerial softSerial(0, 1); //RX, TX

// Here you can specify which serial port the RFID module is connected to. This
// will be different on most platforms, so check what is needed for yours and
// adjust the definition as needed. Some examples are provided below
//#define rfidSerial softSerial // Software serial (eg. Arudino Uno or SparkFun RedBoard)
#define rfidSerial Serial1 // Hardware serial (eg. ESP32 or Teensy)

// Here you can select the baud rate for the module. 38400 is recommended if
// using software serial, and 115200 if using hardware serial.
#define rfidBaud 38400
//#define rfidBaud 115200

// Here you can select which module you are using. This library was originally
// written for the M6E Nano only, and that is the default if the module is not
// specified. Support for the M7E Hecto has since been added, which can be
// selected below
#define moduleType ThingMagic_M7E_HECTO
// #define moduleType ThingMagic_M7E_HECTO

void setup()
{
Serial.begin(38400);
while (!Serial); //Wait for the serial port to come online

if (setupRfidModule(rfidBaud) == false)
{
Serial.println(F(“Module failed to respond. Please check wiring.”));
while (1); //Freeze!
}

rfidModule.setRegion(REGION_NORTHAMERICA); //Set to North America

rfidModule.setReadPower(500); //5.00 dBm. Higher values may caues USB port to brown out
//Max Read TX Power is 27.00 dBm and may cause temperature-limit throttling

Serial.println(F(“Press a key to begin scanning for tags.”));
while (!Serial.available()); //Wait for user to send a character
Serial.read(); //Throw away the user’s character

rfidModule.startReading(); //Begin scanning for tags
}

void loop()
{
if (rfidModule.check() == true) //Check to see if any new data has come in from module
{
byte responseType = rfidModule.parseResponse(); //Break response into tag ID, RSSI, frequency, and timestamp

if (responseType == RESPONSE_IS_KEEPALIVE)
{
  Serial.println(F("Scanning"));
}
else if (responseType == RESPONSE_IS_TAGFOUND)
{
  //If we have a full record we can pull out the fun bits
  int rssi = rfidModule.getTagRSSI(); //Get the RSSI for this tag read

  long freq = rfidModule.getTagFreq(); //Get the frequency this tag was detected at

  long timeStamp = rfidModule.getTagTimestamp(); //Get the time this was read, (ms) since last keep-alive message

  byte tagEPCBytes = rfidModule.getTagEPCBytes(); //Get the number of bytes of EPC from response

  Serial.print(F(" rssi["));
  Serial.print(rssi);
  Serial.print(F("]"));

  Serial.print(F(" freq["));
  Serial.print(freq);
  Serial.print(F("]"));

  Serial.print(F(" time["));
  Serial.print(timeStamp);
  Serial.print(F("]"));

  //Print EPC bytes, this is a subsection of bytes from the response/msg array
  Serial.print(F(" epc["));
  for (byte x = 0 ; x < tagEPCBytes ; x++)
  {
    if (rfidModule.msg[31 + x] < 0x10) Serial.print(F("0")); //Pretty print
    Serial.print(rfidModule.msg[31 + x], HEX);
    Serial.print(F(" "));
  }
  Serial.print(F("]"));

  Serial.println();
}
else if (responseType == ERROR_CORRUPT_RESPONSE)
{
  Serial.println("Bad CRC");
}
else if (responseType == RESPONSE_IS_HIGHRETURNLOSS)
{
  Serial.println("High return loss, check antenna!");
}
else
{
  //Unknown response
  Serial.println("Unknown error");
}

}
}

//Gracefully handles a reader that is already configured and already reading continuously
//Because Stream does not have a .begin() we have to do this outside the library
boolean setupRfidModule(long baudRate)
{
rfidModule.begin(rfidSerial, moduleType); //Tell the library to communicate over serial port

//Test to see if we are already connected to a module
//This would be the case if the Arduino has been reprogrammed and the module has stayed powered
rfidSerial.begin(baudRate); //For this test, assume module is already at our desired baud rate
delay(100); //Wait for port to open

//About 200ms from power on the module will send its firmware version at 115200. We need to ignore this.
while (rfidSerial.available())
rfidSerial.read();

rfidModule.getVersion();

if (rfidModule.msg[0] == ERROR_WRONG_OPCODE_RESPONSE)
{
//This happens if the baud rate is correct but the module is doing a ccontinuous read
rfidModule.stopReading();

Serial.println(F("Module continuously reading. Asking it to stop..."));

delay(1500);

}
else
{
//The module did not respond so assume it’s just been powered on and communicating at 115200bps
rfidSerial.begin(115200); //Start serial at 115200

rfidModule.setBaud(baudRate); //Tell the module to go to the chosen baud rate. Ignore the response msg

rfidSerial.begin(baudRate); //Start the serial port, this time at user's chosen baud rate

delay(250);

}

//Test the connection
rfidModule.getVersion();
if (rfidModule.msg[0] != ALL_GOOD)
return false; //Something is not right

//The module has these settings no matter what
rfidModule.setTagProtocol(); //Set protocol to GEN2

rfidModule.setAntennaPort(); //Set TX/RX antenna ports to 1

return true; //We are ready to rock
}

Weird..

Is the power led on m7E on ?
Try a clean start.
Turn off the power on the UNOR4, wait 10 seconds
Reload the latest updated sketch with Serial1 as rfidSerial
What error message do you get now ?

Yes Red light is on. And that still produced the same check wiring message

Some of the backside’s soldering could be shorting on one another (a few appear very close together); can you use a multimeter to check for any continuity between adjacent soldered pins?

As an additional test, try to connect the M7E with the Universal Reader Assistent (URA). see Using the Universal Reader Assistant - SparkFun Simultaneous RFID Reader - M7E Hookup Guide. make sure to the UART switch to USB.

At least you know the M7E is working.

alright i will try both of those things thank you