You are currently viewing Step-Up Beginner Project: Arduino EEPROM Programmer PCB
EEPROM Programmer

Step-Up Beginner Project: Arduino EEPROM Programmer PCB

In this project, you’ll build your first memory programmer using an Arduino Uno and an EEPROM chip. You’ll learn how devices store data and how to read/write memory using a simple PCB you can build yourself.

🔌 What This Project Does

  • Writes data to an EEPROM chip
  • Reads data back
  • Displays results in Arduino Serial Monitor
  • Teaches real-world communication (I2C)

🧩 Core Components (BOM)

ComponentExampleQty
EEPROM Chip24LC2561
MicrocontrollerArduino Uno1
Resistors4.7kΩ (pull-ups)2
Capacitor0.1µF1
Pin HeadersMale/FemaleAs needed

🔧 Circuit Design (Simple Explanation)

The EEPROM communicates using I2C:

  • SDA = Data
  • SCL = Clock

👉 These connect to the Arduino:

  • SDA → A4
  • SCL → A5

Pull-up resistors (important!):

  • SDA → 4.7kΩ → VCC
  • SCL → 4.7kΩ → VCC

📐 PCB Design Plan

💻 Arduino Code

Use:

  • KiCad
  • Eagle
  • Altium Designer

Layout Tips:

  • Keep traces short and clean
  • Label:
    • SDA
    • SCL
    • VCC
    • GND
  • Use through-hole components (beginner-friendly)
  • Add a 4-pin header:
    • VCC / GND / SDA / SCL
🌐
filename.html
#include <Wire.h>

#define EEPROM_ADDR 0x50

void writeEEPROM(int address, byte data) {
  Wire.beginTransmission(EEPROM_ADDR);
  Wire.write((int)(address >> 8));   // MSB
  Wire.write((int)(address & 0xFF)); // LSB
  Wire.write(data);
  Wire.endTransmission();
  delay(5);
}

byte readEEPROM(int address) {
  Wire.beginTransmission(EEPROM_ADDR);
  Wire.write((int)(address >> 8));
  Wire.write((int)(address & 0xFF));
  Wire.endTransmission();

  Wire.requestFrom(EEPROM_ADDR, 1);
  return Wire.read();
}

void setup() {
  Serial.begin(9600);
  Wire.begin();

  Serial.println("Writing data...");
  writeEEPROM(0, 123);

  Serial.println("Reading data...");
  byte data = readEEPROM(0);

  Serial.print("Value: ");
  Serial.println(data);
}

void loop() {
}