🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
Menu

Arduino UNO – I2C EEPROM beschreiben & lesen

Posted on 28. April 202329. April 2023 by Stefan Draeger

In diesem Beitrag möchte ich dir zeigen, wie du einen EEPROM Baustein per I2C Schnittstelle am Arduino UNO beschreiben und lesen kannst.

Der hier verwendete EEPROM Baustein hat eine Speicherkapazität von 256K, dieses ist für die meisten Daten am Arduino ausreichend. Wenn du mehr Daten speichern möchtest, dann empfehle ich dir eine SD-Karte mit entsprechendem Modul.

  • Benötigte Ressourcen für den Anschluss des EEPROM an den Arduino UNO
  • Technische Daten des EEPROM mit 256 K
  • Aufbau des I2C EEPROM Moduls
  • Anschluss des EEPROM an den Arduino
  • Programmieren des EEPROMs in der Arduino IDE 2.0
    • Beispiel – schreiben & lesen von Daten eines EEPROMs

Benötigte Ressourcen für den Anschluss des EEPROM an den Arduino UNO

In den nachfolgenden Abschnitten möchte ich dir zeigen wie du den EEPROM anschließt und programmierst, dafür benötigst du:

  • einen Arduino UNO,
  • ein USB-Datenkabel,
  • ein EEPROM mit I2C Schnittstelle,
  • vier Breadboardkabel, männlich-weiblich, 10 cm

Technische Daten des EEPROM mit 256 K

Es gibt die EEPROMs in diversen Ausführungen, allgemein unterscheiden sich diese jedoch in der Speicherkapazität. Wie erwähnt verwende ich ein Modul mit 256 K Speicher.

Varianten24C16 – 16 K
24C64 – 64 K
24C128 – 128 K
24C256 – 256 K
Betriebsspannung2.7 V bis 5.5 V
SchnittstelleI2C
Auswahl der Adresse per Jumper
maximale Schreib-/Lese Zyklenüber 1 Million mal
Datensicherheitspeichern der Daten bis zu 40 Jahre

Aufbau des I2C EEPROM Moduls

Kommen wir zunächst zum Aufbau des EEPROM Moduls.

Mit den Jumpern A0 bis A2 können wir verschiedene I2C Adressen setzen und somit entweder mehrere dieser Module einsetzen oder bei Adressenkonflikt diesen lösen.

A0
I2C device found at address 0x19  !
I2C device found at address 0x51  !
I2C device found at address 0x59  !

A1
I2C device found at address 0x1A  !
I2C device found at address 0x52  !
I2C device found at address 0x5A  !

A2 & ohne Jumper
I2C device found at address 0x18  !
I2C device found at address 0x50  !
I2C device found at address 0x58  !

Die I2C Adressen habe ich mit dem I2C Scanner von Arduino Playground ermittelt.

Die Adressen wechselst du, indem du EINEN der Jumper auf die vordere Position setzt. In dem Bild ist der Jumper A0 aktiv und können die I2C Adressen 0x19, 0x51 & 0x59 verwendet werden.

256K EEPROM Jumper A0 aktiv
256K EEPROM Jumper A0 aktiv

Anschluss des EEPROM an den Arduino

Durch die I2C Schnittstelle ist zumindest der Anschluss sehr einfach. Du findest am Arduino die I2C Schnittstelle an den Pins analog A4 = SDA & analog A5 = SCL.

Arduino UNO SCL & SDA Pins
Arduino UNO SCL & SDA Pins

Die Schaltung ist dann wirklich recht einfach, denn wir müssen lediglich die nachfolgenden Pins verbinden:

I2C EEPROMArduino UNO
VCC3.3V
GNDGND
SDAanalog A4
SCLanalog A5
Arduino UNO mit I2C 256K EEPROM
Arduino UNO mit I2C 256K EEPROM

Programmieren des EEPROMs in der Arduino IDE 2.0

Auf der offiziellen Seite von Arduino.cc findest du ein Beispiel, wo du lediglich deine I2C Adresse anpassen musst. Ich habe dieses einmal genommen und zu einer kleinen Bibliothek umgeschrieben / exportiert. Der Code wurde von mir nicht wesentlich verändert. Ich habe lediglich die Funktionen so aufbereitet, dass diese über eine Klasse geladen werden.

Du kannst dir diese von meinem GitHub Repository StefanDraeger/AT24C256EEPROM_lib als ZIP-Datei herunterladen.

Diese ZIP-Datei kannst du dann über Sketch > Include Library > Add ZIP. Library… in deine IDE integrieren.

Beispiel – schreiben & lesen von Daten eines EEPROMs

Das nachfolgende Beispiel findest du ebenfalls in der Bibliothek.

#include <at24c256eeprom.h>
#include <Wire.h>

//create object of type AT24C 
//with I2C Address 0x51
AT24C at24c256 = AT24C(0x51);

void setup() {
  //content to write
  char data[] = "Hello World!";
  //begin OneWire communication
  Wire.begin();
  //begin serial communication
  Serial.begin(9600);
  //write content from field data to eeprom
  at24c256.write_page(0, (byte *)data, sizeof(data));
  //tiny break for 100 ms.
  delay(100);
  //write message to serial interface
  Serial.println("Write data successfull.");
}

void loop() {
  //start with address 0
  int addr = 0;
  //read the first byte
  byte b = at24c256.read_byte(0);
  //as long as the value in the variable b
  //is not equal to 0 makes..
  while (b != 0) {
    //print character to serial interface
    Serial.print((char)b);
    //increment address
    addr++;
    //read content from new address
    b = at24c256.read_byte(addr);
  }
  //send linebreak to serial interface
  Serial.println(" ");
  //tiny break for 2 seconds
  delay(2000);
}

Wenn man das Beispiel auf den Arduino überspielt hat, wird nachfolgende Ausgabe erzeugt.

Wir können nun die nachfolgenden Zeilen aus dem Beispiel entfernen oder auskommentieren und erneut das Beispiel hochladen, um zu verifizieren, dass wirklich die Daten aus dem EEPROM geladen werden.

Zeilen entfernen/auskommentieren zum verifizieren
Zeilen entfernen/auskommentieren zum verifizieren

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb