Talking School Bag: RFID Robotics Project for Kids

Talking School Bag: RFID Robotics Project for Kids | MakeMindz
Arduino Nano Project · Beginner Friendly

Build a School Bag That Actually Talks to You

This bag knows what's inside it. Tag each book with a tiny RFID sticker, and the bag checks your school timetable, tells you what you forgot, quizzes you on the ride to school, and hands out points for finishing homework.

Ages 9–14 · builds independently with adult help for soldering
~3 hrs build time
₹2,000–2,400 total parts cost
Math book not detected! +10 pts RFID tag scanning...

What This Bag Can Do

Every book gets a small RFID sticker — the same kind of tag used in library cards and bus passes. A reader hidden in the bag's front pocket scans for tags each time you pack up. A tiny screen and speaker do the rest of the work, so you never have to guess what's missing.

  • Remembers your timetable and checks it against what's actually in the bag.
  • Speaks up — "You forgot your Math book!" — before you're out the door.
  • Quizzes you with three quick questions while you're on the way to school.
  • Rewards points for packing everything and finishing your homework, tracked day to day.

Parts You'll Need

Every part here is beginner-friendly and easy to find online or at a local electronics store.

🧠

Arduino Nano

The brain of the bag — small enough to tuck into a front pocket.

₹450
📡

MFRC522 RFID Reader

Detects the RFID tag on each book when it passes near the reader.

₹150
🏷️

RFID Tag Stickers (x8)

One sticker per book, stuck flat on the inside cover.

₹200
🖥️

0.96" OLED Display

Shows which books are packed and today's quiz score.

₹250
🔊

DFPlayer Mini + Speaker

Plays back short pre-recorded voice clips from an SD card.

₹350
🔘

3 Push Buttons

Used to answer quiz questions and confirm homework is done.

₹40
🔋

3.7V Li-ion Cell + Boost Module

Powers the whole bag for a full school day on one charge.

₹300
🧵

Jumper Wires & Micro SD Card

Wiring plus an 8GB card to store the voice clips.

₹150

Build It Step by Step

Work on a table, not inside the bag — you can test everything on the bench first, then fit it in once it all works.

Gather the parts and plan the pocket

Lay everything out and decide where the screen and speaker will sit in the bag's front pocket, and where the RFID reader will go so books can be tapped against it easily.

Wire the RFID reader

Connect the MFRC522 reader to the Nano's SPI pins using the wiring table below. Double-check the reader is powered from 3.3V, not 5V — it can be damaged by 5V.

Tip: solder header pins onto the MFRC522 first if it didn't come with any — it makes the jumper wires much more reliable.

Connect the OLED screen

The OLED uses I2C, so it only needs four wires: power, ground, and two data lines (SDA and SCL) shared with the rest of the circuit.

Add the voice box

Wire the DFPlayer Mini and speaker so the bag can actually talk. Load the SD card with short voice clips named 001.mp3, 002.mp3 and so on, one per book and one per quiz prompt.

Wire the quiz buttons

Three push buttons act as answer A, answer B and answer C during the daily quiz, and double as a "homework done" confirm button.

Upload the code

Install the required libraries in the Arduino IDE, plug in the Nano over USB, and upload the sketch from the code section below.

Tag the books and test

Stick one RFID tag inside the cover of each book, tell the code which tag ID belongs to which book, and test it on a real morning before the bag goes into daily use.

Circuit Diagram

Here's how every part connects back to the Arduino Nano.

Arduino Nano MFRC522 RFID Reader 0.96" OLED Display (I2C) DFPlayer Mini + Speaker 3 Push Buttons A / B / C Li-ion Cell + Boost Module RFID Tags (one per book)
ModuleModule PinArduino Nano Pin
MFRC522 RFID ReaderSDA (SS)D10
SCKD13
MOSID11
MISOD12
RSTD9
3.3V / GND3V3 / GND
OLED DisplaySDAA4
SCLA5
DFPlayer MiniRX (via 1kΩ resistor)D3
TXD2
Button A / B / COne leg eachD4 / D5 / D6
Battery + Boost5V outVIN / GND

Arduino Code

Install the MFRC522, Adafruit_SSD1306, Adafruit_GFX and DFRobotDFPlayerMini libraries first, through the Arduino IDE's Library Manager.

talking_school_bag.ino
// ===== TALKING SCHOOL BAG =====
// Detects books by RFID, reminds you what's missing,
// runs a quick daily quiz, and tracks homework points.

#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
#include <EEPROM.h>

// ---- Pins ----
#define RFID_SS   10
#define RFID_RST  9
#define BTN_A     4
#define BTN_B     5
#define BTN_C     6

MFRC522 rfid(RFID_SS, RFID_RST);
Adafruit_SSD1306 screen(128, 64, &Wire, -1);
SoftwareSerial mp3Serial(2, 3); // RX, TX
DFRobotDFPlayerMini mp3;

// ---- Today's books (change this list to match your timetable) ----
const int BOOK_COUNT = 4;
String bookNames[BOOK_COUNT] = {"Math", "Science", "English", "Art"};
String bookTagIDs[BOOK_COUNT] = {"A1B2C3D4", "E5F6A7B8", "C9D0E1F2", "11223344"};
int bookVoiceTrack[BOOK_COUNT] = {1, 2, 3, 4}; // matches 001.mp3 etc.
bool bookPacked[BOOK_COUNT];

int homeworkPoints = 0;

void setup() {
  Serial.begin(9600);
  mp3Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();

  pinMode(BTN_A, INPUT_PULLUP);
  pinMode(BTN_B, INPUT_PULLUP);
  pinMode(BTN_C, INPUT_PULLUP);

  screen.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  screen.clearDisplay();
  showMessage("Tap your books!");

  if (mp3.begin(mp3Serial)) {
    mp3.volume(22);
  }

  homeworkPoints = EEPROM.read(0); // load saved points
}

void loop() {
  checkForBookTag();

  // Hold button A for 2 seconds to start the quiz
  if (digitalRead(BTN_A) == LOW) {
    delay(2000);
    if (digitalRead(BTN_A) == LOW) {
      runDailyQuiz();
    }
  }
}

void checkForBookTag() {
  if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;

  String tagID = "";
  for (byte i = 0; i < rfid.uid.size; i++) {
    tagID += String(rfid.uid.uidByte[i], HEX);
  }
  tagID.toUpperCase();

  for (int i = 0; i < BOOK_COUNT; i++) {
    if (tagID == bookTagIDs[i]) {
      bookPacked[i] = true;
      showMessage(bookNames[i] + " packed!");
      mp3.play(bookVoiceTrack[i] + 10); // "X packed" clips start at track 11
    }
  }

  checkMissingBooks();
  rfid.PICC_HaltA();
}

void checkMissingBooks() {
  for (int i = 0; i < BOOK_COUNT; i++) {
    if (!bookPacked[i]) {
      showMessage("You forgot your " + bookNames[i] + " book!");
      mp3.play(bookVoiceTrack[i]); // "You forgot your X book" clips
      return; // announce one missing book at a time
    }
  }
  showMessage("All books packed! Have a great day.");
  addPoints(10);
}

void runDailyQuiz() {
  mp3.play(20); // "Quiz time!" clip
  showMessage("Q1: Press A, B or C");
  mp3.play(21); // recorded question audio

  while (digitalRead(BTN_A) == HIGH && digitalRead(BTN_B) == HIGH && digitalRead(BTN_C) == HIGH) {
    // wait for an answer
  }

  if (digitalRead(BTN_B) == LOW) { // suppose B is correct
    showMessage("Correct! +5 points");
    mp3.play(22);
    addPoints(5);
  } else {
    showMessage("Good try! Next time.");
    mp3.play(23);
  }
}

void addPoints(int amount) {
  homeworkPoints += amount;
  EEPROM.write(0, homeworkPoints); // save so points survive a reboot
}

void showMessage(String msg) {
  screen.clearDisplay();
  screen.setTextSize(1);
  screen.setTextColor(SSD1306_WHITE);
  screen.setCursor(0, 10);
  screen.println(msg);
  screen.setCursor(0, 45);
  screen.print("Points: ");
  screen.print(homeworkPoints);
  screen.display();
}

Troubleshooting

Most first-build hiccups come down to power or wiring — here's what to check.

Reader won't detect tags

Make sure MFRC522 is wired to 3.3V, not 5V, and that the tag is held flat within 2–3cm of the reader's antenna.

No sound from the speaker

Check the SD card is formatted as FAT32 and the mp3 files are named 0001.mp3, 0002.mp3, in order, with no gaps.

Screen stays blank

Confirm the OLED's I2C address — most are 0x3C, but some are 0x3D. Run an I2C scanner sketch if you're unsure.

Bag reads a book as missing when it's inside

Metal zippers and buckles can block RFID signals — keep the reader's antenna a few centimetres from any metal.

Points reset every morning

You're likely writing to EEPROM before the value is read back correctly — check EEPROM.read(0) runs once in setup(), not in loop().

Battery drains too fast

Add a simple sleep mode that dims the OLED after 30 seconds of no tag activity to stretch battery life through the day.

Fun Upgrades to Try

📶 Add Wi-Fi so parents get a phone alert for missing books
🌧️ Add a rain sensor that reminds you to pack an umbrella
🎨 Let kids record their own voice for the reminders
🏆 Add a weekly leaderboard for siblings or classmates
🔦 Add an LED strip that lights up green when fully packed

Frequently Asked Questions

Is this project safe for a 9-year-old to build?

Yes, with adult supervision — especially for any soldering. The wiring itself uses simple jumper cables and breadboard-style connections, so most of the build is push-fit.

Do I need to know how to code already?

No. The code above is fully commented, and you only need to edit the book names and tag IDs to match your own timetable — no programming experience required to get started.

Can this work with more than 4 books?

Yes — just increase BOOK_COUNT and add more entries to the bookNames and bookTagIDs lists. The reader can handle as many tags as you want to register.

What if I don't have a DFPlayer Mini?

You can swap it for a simple piezo buzzer that beeps instead of speaking, and show the reminder text on the OLED screen only.

How long does the battery last?

A 2000mAh Li-ion cell typically powers the bag for a full school day of normal use, since the electronics only wake up briefly for each tag scan.

MakeMindz

Hands-on robotics projects for curious kids.

Comments

Product Cards
Buddy Bot eBook
⭐ New 2026 Release
Build Your
Own Robot!
3D design, wiring &
Arduino coding.
Young inventors love it!
🖨️
3D Print
All parts
Wire it
Circuit guide
💻
Code it
Arduino IDE
🤖
Watch it
Walk & react
📋 Your Details
Enter your name
Valid 10-digit no.
Enter a valid email
Special Website Offer
₹499 300
🌍 International: $5 USD
One-time · Instant digital delivery
🔒 Secured by Razorpay · Your data is safe
📄 Download Free Sample Copy
🔒 Secured by Razorpay · Your data is safe
🍓
Raspberry Pi Pico Mastery
21 Projects
⚡ Launch Price — 80% OFF
Learn Pico
Build 21 Projects!
MicroPython · Wokwi
IoT · Certificate
Perfect for beginners!
🖥️
Wokwi
No hardware
🐍
MicroPy
From zero
🔨
21 Projects
IoT + sensors
📄
Certificate
Verified cert
📋 Your Details
Enter your name
Valid 10-digit no.
Enter a valid email
Special Launch Offer
₹999 200 80% OFF
🌍 International: $5 USD
One-time · Lifetime access · No subscription
🔒 Secured by Razorpay · UPI · Cards · NetBanking
🎉

You're in!

Payment successful! Your Buddy Bot eBook is ready. Time to build!

📖 Access Your eBook Now
🎉

Enrolled!

Payment successful! Lifetime access to all 21 Pico Projects is yours!

🍓 Go to My Course