Cheap Smart RFID Packet for Moisture Detection

Introduction: Cheap Smart RFID Packet for Moisture Detection

About: Currently a Systems Engineer at Sagentia, with 3+ years of experience in consumer audio electronics. I Graduated from The University of Kent with a MEng in Electronic & Communications Engineering.

This is quite a wordy Instructables i apologise, but its such a simple concept i just really wanted to share it with you guys, i hope you enjoy!

The aim of this project design a cheap sensor packets that could be used to identify the presence of water. One of the ways that this can be achieved is to use any standard RFID tag, Silver Foil, Super absorbent powder (similar to that found in diapers) and tissue paper.

For this project a High Frequency (HF) RFID tag was used the reason for this selection was due to the frequency that HF RFID tags work at which is 13.56MHz. This is ideal for this project as this wave length is not effected by close proximity to water that dramatically.

In this project i also developed a way of easily displaying when a tag has been triggered and at what time with the used of an Arduino, LCD screen and a RTC module.

For this project you will require

- HF RFID Mifare Card Reader USB - £14.80

- HF RFID/NFC Tags (These can be any size or style for this project 45mm rounded coil HF RFID tags were used) ~ £2 - £10

- Kitchen Tissue Paper (Any paper that will not entirely dissolve once damp)- Should have around the house

- Silver Foil of any kind - Should have around the house

- Sodium Polyacrylate - Superabsorbent Diaper Polymer (This will be our absorbent material) - £19.99

For the enclosure for identifying when Smart RFID packets were triggered

- Arduino Mega ATmega2560 - £10

- Tiny RTC I2C DS1307 - £1.44

- 20x4 Characters LCD Display - £3.30

- ABS Enclosure 197x113x63mm - £5.16

This entire project should cost around £60 but the actual Smart RFID Packets individually can cost as little as 50p each!

Now that all of this has been covered lets begin!

Step 1: Smart RFID Packet - Theory

So the theory behind these smart RFID packets is that the silver foil will act as a grounding plane. This means that while the grounding plane is in close proximity to the antenna of the RFID tag this will interfere with its characteristics rendering it incapable of transmitting normally (There's lots of math and theory behind how this works but basically the close the grounding plane is to the RFID tag the smaller the tags read range becomes)

The Smart RFID packet has three layers

  1. RFID Tag
  2. Absorbent Powder
  3. Silver Foil (grounding plane)

The first Image above explains how the packet works, while the packet is dry the distance between the RFID tag and the silver foil (grounding plane) is small, meaning that RFID reader will be unable to identify the RFID tag

When the packet becomes moist the absorbent powder will expand dramatically increasing the distance between the RFID tag and the silver foil (grounding plane) allowing the tag to function normally and in tern allowing the RFID reader to identify it.

The graph above indicates how as the distance between the silver foil (grounding plane) and RFID tag increases in tern so does the RFID tags read range until the distance is so great that the silver foil (grounding plane) no longer has any affect on the tag.

Step 2: Smart RFID Packet - Design

For this project i purchased 45mm HF RFID Tags, the reason HF RFID tags had been selected was due to the functional frequency of HF tags. With a functional frequency of 13.56MHz this signal will suffer from little interference from close proximity of water. Another advantage of this will be that most HF RFID readers are also capable of identifying NFC tags due to the fact they share this frequency band. This intern makes tag selection easier!

The first image above shows the 45mm rounded coil HF RFID tag i used in this project.

The read range of this tag on its own was approximately 40mm using my RFID reader.

The first step for making the Smart RFID packet is to draw out the required amount of Tissue paper, this will be used to hold the packet together. The second & third images show me drawing out my packets tissue shell. The final Smart RFID packet size will be 50mm x 50mm.

Now that the smart RFID packet has a shell, you first want to put the RFID tag in the center position as seen in image three above.

Next is to put a small amount of absorbent powder ontop of the RFID tag, i tried to use enough to cover the entire RFID tag this can be seen in image 4 above.

Now you want to cut out a square of silver foil, for this project i again used the distensions of 50mm x 50mm. It is important for this silver foil (grounding plane) to be equal or slightly bigger than the size of your RFID tags antenna. This can be shown in image 5 above, you want to place the silver foil (grounding plane) on top of the absorbent powder.

Now that all of the layers are in place you want to wrap the sides of the tissue paper over on top of the silver foil, then use a small amount of tap to secure the packet closed.

My final packet can be seen in image 6 above, note that it is important for you to mark the side with the RFID tag as the top of the Packet.

Step 3: Testing the Smart RFID Packet

Now that the packet has been made its time to test it!

When testing this i used a 5ml measuring spoon, i placed the Smart RFID packet on Card Honeycomb Spacing (sheets of paper will work as well) this spacing was 3mm thick and ensured that my read range measurements were as accurate as possible.

I used 1 spacer to start with meaning the RFID tag was 3mm away from the reader, then added 5ml of water. I used the spacing to identify the max read range with 5ml of water added to the packet, then for 10ml and so on till the packet no longer expanded.

The way i designed my packets i found that the ceased to expand after 20ml of water was added, at this point the packet had expanded to approximately 10mm as seen in image 2 above.

My final results for read ranged in relation to ml of water can be seen in the graph above, i performed this test 10 times with different packets and averaged the read ranges at each ml amount to get the results displayed in this table.

We could see that the read range of the Smart RFID packet never reached the maximum of the RFID tag alone, this is due to the close proximity of water to the tag. The max read range i found of a Smart RFID packet was 28mm, the RFID tag alone had a max read range of 40mm meaning that the water had reduced the max range by 12mm which is reasonable for the functional frequency of the tag i had selected.

I would really love to see what some of your packet designs have managed to achieve! I know this is far from the best design so please post bellow what you have found if you try this out for yourselves! :D

Step 4: Enclosure for Identifying Time of Tag Detection

As i had purchased two different RFID readers i wanted to be able to identify when each one had found an RFID tag individually.

The first objective was to find a way of identifying when a tag had been found on the RFID readers circuit board, after a little testing a found an un-soldered pin out, which outputted a 1 when a tag was identified, i assume this was used during board verification. The first image above shows the circuit board for my RFID readers, the pin in the red circle was my RFID trigger pin.

Having this i could now design a circuit that would use an Arduino to monitor each trigger from the RFID readers, if one went high it would update the LCD time to indicate which reader had been triggered as well as looking at the real time clock (RTC) module to print the time of the event. The final Circuit configuration can be seen in the second image.

The software being ran on the Arduino can be described in the third image of the system flow diagram

The Final Arduino code can be found bellow

#include Time.h
#include Wire.h

#include DS1307RTC.h #include liquidCrystal.h

// Arduino Pin Layout LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const int RFIDRead1 = 8; const int RFIDRead2 = 7; const int ledPin1 = 9; const int RST = 6; // Variable Decleration int tagState1 = 0; int tagState2 = 0; int RESET = 0;

void setup() {

// Setting up what pins are inputs or output lcd.begin(20, 4); pinMode(ledPin1, OUTPUT); pinMode(RFIDRead1, INPUT); pinMode(RFIDRead2, INPUT); pinMode(RST, INPUT);

// Start up values for outputs, setting up LCD Display and LED value digitalWrite(ledPin1, LOW); lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 2); lcd.print(" No Detection "); lcd.setCursor(0, 3); lcd.print(" ");

Serial.begin(9600); // Testing code to ensure that the RTC module is working setSyncProvider(RTC.get); // the function to get the time from the RTC

if(timeStatus()!= timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time"); }

void loop() {

// Mapping digital read values to ints tagState1 = digitalRead(RFIDRead1); tagState2 = digitalRead(RFIDRead2); RESET = digitalRead(RST);

if (tagState1 == HIGH) { // When RFID Read 1 goes high enter this loop digitalWrite(ledPin1, HIGH); lcd.setCursor(0, 0); lcd.print(" Patient 1 "); lcd.setCursor(0, 2); lcd.print(" Tag Detection "); lcd.setCursor(0, 3); lcd.print(" "); digitalClockDisplay();}

if (tagState2 == HIGH) { // When RFID Reader 2 goes higher enter this loop digitalWrite(ledPin1, HIGH); lcd.setCursor(0, 1); lcd.print(" Patient 2 "); lcd.setCursor(0, 2); lcd.print(" Tag Detection "); lcd.setCursor(0, 3); lcd.print(" "); digitalClockDisplay();}

if (RESET == HIGH) { // When Reset putton pressed clear screen and turn the LED off digitalWrite(ledPin1, LOW); lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 2); lcd.print(" No Detection "); lcd.setCursor(0, 3); lcd.print(" ");

} }

Once the code and circuit had been fully tested, i designed a PCB to help clear up the horrible breadboard mess i was using. Image 4 above shows the final breadboard design (Yes it could have been made smaller, but size was not a real issue with the enclosure i had chosen)

Step 5: Final Enclosure Construction

Now that the code and PCB had been complete it was time to measure out the positions for the LCD, LED RFID reader inputs and power supply. Image 1 above shows the dimensions and positions of all of these, the holes were made using a dremel.

Once the holes were made and sanded down i began to mount the electronics starting with the front facing components including the reset switch, LED and LCD display. This can be seen in image 2 above.

Once these were fitted the RFID reader inputs were extended to the side of the case also seen in image 2 above.

Now with all the key components mounted the Arduino was attached to the PCB then mounted behind all the front panel electronics seen in image 3 the enclosure design allowed for the USB-B cable to reach the Arduino to remove the need for an internal power supply.

Image 4 shows the front of the enclosure after all the components had been mounted and the enclosure was screwed shut.

Image 5 above shows the final enclosure test with both RFID tags triggered,

Step 6: Conclusion

In conclusion this was a cool project that involved aspects of electronics i had little experience with before hand. This is a simple and cool way to make a Smart RFID packet with nothing more than a standard RFID tag and some other parts you probably have laying around your house.

I hope you enjoyed this guide, please feel free to ask questions in the comments bellow!

Thanks for reading!

Be the First to Share


    • Puzzles Speed Challenge

      Puzzles Speed Challenge
    • "Can't Touch This" Family Contest

      "Can't Touch This" Family Contest
    • CNC Contest 2020

      CNC Contest 2020