TPs Memoires - 3 Projets | BTS Electronique

TPs Memoires

3 Projets : EEPROM, Flash, Carte SD

💾 EEPROM⚡ Flash📁 SD Card
💾

TP1 : EEPROM Interne Arduino

Stockage persistant de parametres

Code : Lecture/Écriture EEPROM

// TP1 : EEPROM Arduino - Sauvegarde parametres
#include <EEPROM.h>

struct Config {
    int seuil_temp;
    int seuil_hum;
    char nom[16];
};

Config config;
const int ADDR = 0;

void saveConfig() {
    EEPROM.put(ADDR, config);
    Serial.println("Config sauvegardee!");
}

void loadConfig() {
    EEPROM.get(ADDR, config);
    Serial.print("Seuil T: "); Serial.println(config.seuil_temp);
    Serial.print("Seuil H: "); Serial.println(config.seuil_hum);
    Serial.print("Nom: "); Serial.println(config.nom);
}

void setup() {
    Serial.begin(115200);
    // Charger ou initialiser
    loadConfig();
    if (config.seuil_temp == 0) {
        config.seuil_temp = 30;
        config.seuil_hum = 70;
        strcpy(config.nom, "Capteur_01");
        saveConfig();
    }
}

TP2 : Flash SPI (W25Q64)

Memoire Flash externe 8Mo

Code : Flash SPI

// TP2 : Flash SPI W25Q64
#include <SPI.h>

const int CS = 10;
#define CMD_READ 0x03
#define CMD_WRITE 0x02
#define CMD_WREN 0x06
#define CMD_ERASE 0x20

void flashWrite(uint32_t addr, uint8_t* data, int len) {
    digitalWrite(CS, LOW);
    SPI.transfer(CMD_WREN);
    digitalWrite(CS, HIGH);
    
    digitalWrite(CS, LOW);
    SPI.transfer(CMD_WRITE);
    SPI.transfer((addr >> 16) & 0xFF);
    SPI.transfer((addr >> 8) & 0xFF);
    SPI.transfer(addr & 0xFF);
    for(int i = 0; i < len; i++) SPI.transfer(data[i]);
    digitalWrite(CS, HIGH);
}
📁

TP3 : Carte SD - Data Logger

Enregistrement de donnees sur fichier

Code : Data Logger SD

// TP3 : Data Logger avec carte SD
#include <SD.h>
#include <SPI.h>

const int CS_SD = 4;
File dataFile;

void setup() {
    Serial.begin(115200);
    if (!SD.begin(CS_SD)) {
        Serial.println("Erreur carte SD!");
        return;
    }
    Serial.println("Carte SD OK");
    
    // Creer fichier avec en-tete
    dataFile = SD.open("data.csv", FILE_WRITE);
    if (dataFile) {
        dataFile.println("timestamp,temperature,humidity");
        dataFile.close();
    }
}

void logData(float temp, float hum) {
    dataFile = SD.open("data.csv", FILE_WRITE);
    if (dataFile) {
        dataFile.print(millis()); dataFile.print(",");
        dataFile.print(temp); dataFile.print(",");
        dataFile.println(hum);
        dataFile.close();
        Serial.println("Donnees enregistrees");
    }
}

Criteres d'evaluation

CriterePoints
TP1 : EEPROM lecture/ecriture struct/6
TP2 : Flash SPI communication/6
TP3 : Data Logger SD fonctionnel/8
Total/20

TPs Memoires - EEPROM, Flash, SD Card