Veri günlüğü birçok kişinin önemli bir yönüdür IoT, çevre izleme ve sensör tabanlı projeler. Bir Arduino ve bir SD kart modülü, yapabilirsiniz Sensör verilerini, zaman damgalarını ve diğer okumaları saklayın Gelecek analiz için. Bu rehber size nasıl yapılacağını gösterecek Arduino'ya bir SD kart modülü bağlayın, veri yazın ve okuyun ve yaygın sorunları giderin.
1. Ne İhtiyacınız Var
✅ Arduino Kurulu (UNO, Mega, Nano, vb.)
✅ Micro SD kart modülü (SPI tabanlı)
✅ MicroSD kart (FAT32 Biçimlendirilmiş, 2GB - 32GB Önerilen)
✅ Jumper telleri
✅ Sensörler (isteğe bağlı, örn., DHT11, BMP280, vb.)
🔹 Not: SD modülü, Arduino ile iletişim kurar. SPI (seri periferik arayüz).
2. SD kart modülünü Arduino'ya bağlama
SD kart modülü pimi | Arduino uno pin | Arduino mega pimi |
---|---|---|
VCC | 5V | 5V |
Gnd | Gnd | Gnd |
Miso | 12 (SPI MISO) | 50 (SPI MISO) |
Mosi | 11 (SPI MOSI) | 51 (SPI MOSI) |
Sck | 13 (SPI SCK) | 52 (SPI SCK) |
CS (Chip Select) | 10 (SPI CS) | 53 (SPI CS) |
3. Gerekli kütüphaneyi yükleme
- Açık Arduino IDE.
- Gidip gelmek Eskiz → Kütüphane Ekle → Kütüphaneleri Yönetin.
- Araştırmak SD ve yükle Arduino tarafından SD Kütüphanesi.
4. SD kartı başlatma (SD modülünün çalışıp çalışmadığını test edin)
Aşağıdakileri kullanın Temel Test Kodu SD modülünün çalışıp çalışmadığını kontrol etmek için:
#include <SPI.h>
#include <SD.h>
const int chipSelect = 10; // Set CS pin for SD card
void setup() {
Serial.begin(115200);
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
Serial.println("SD card is ready.");
}
void loop() {
// Nothing here
}
Bu kod ne yapar:
✔ Başlatır SD modülü.
✔ Baskılar "SD kart hazır" tespit edilirse.
✔ Baskılar "SD kart başlatma başarısız oldu!" Bir hata varsa.
🔹 Sorun Giderme:
✅ SD kartın FAT32 Biçimlendirilmiş.
✅ Emin olmak Doğru Kablolama (MISO, MOSI, SCK ve CS).
✅ Bir başkasını dene CS PIN (örneğin 10 yerine 4) ve kodu güncelleyin.
5. SD karta veri yazma
Bu örnek Bir dosya oluşturur (data.txt
) ve sensör okumaları yazıyor.
#include <SPI.h>
#include <SD.h>
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
File dataFile = SD.open("data.txt", FILE_WRITE);
if (dataFile) {
dataFile.println("Hello, this is a test log!");
dataFile.close();
Serial.println("Data written to SD card.");
} else {
Serial.println("Failed to open file.");
}
}
void loop() {
// Nothing here
}
Bu kod ne yapar:
✔ Yaratır veya açar data.txt
.
✔ Yazıyor "Merhaba, bu bir test günlüğü!" dosyaya.
✔ Yazdıktan sonra dosyayı kapatır.
🔹 Dosya İşleme İşlevleri:
✔ SD.open("filename.txt", FILE_WRITE);
→ Yazmak için dosyayı açın.
✔ dataFile.println("Text");
→ Dosyaya veri yazın.
✔ dataFile.close();
→ Verileri kaydetmek için dosyayı kapatın.
6. SD karttan veri okuma
Bu kodu kullanın SD karttan verileri okuyun ve görüntüleyin.
#include <SPI.h>
#include <SD.h>
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
File dataFile = SD.open("data.txt");
if (dataFile) {
Serial.println("Reading file...");
while (dataFile.available()) {
Serial.write(dataFile.read()); // Print file content
}
dataFile.close();
} else {
Serial.println("Failed to open file.");
}
}
void loop() {
// Nothing here
}
Bu kod ne yapar:
✔ Açılır data.txt
okumak için.
✔ Dosyanın içeriğini şu adrese yazdırıyor Seri monitör.
🔹 Uç: Dosyanın emin olun okumadan önce var hataları önlemek için.
7. SD karta oturum açma sensörü verileri
Bu örnek günlükler DHT11 sensöründen sıcaklık ve nem verileri.
Gerekli Bileşenler
✅ DHT11 Sıcaklık ve Nem Sensörü
✅ DHT Kütüphanesi (Adafruit DHT sensörü kütüphanesi)
DHT11 sensörü için kablolama
DHT11 PIN | Arduino pimi |
---|---|
VCC | 5V |
Gnd | Gnd |
VERİ | 2 |
Kod: DHT11 verilerinin SD karta kaydedilmesi
#include <SPI.h>
#include <SD.h>
#include <DHT.h>
#define DHTPIN 2 // Pin connected to DHT sensor
#define DHTTYPE DHT11 // Define sensor type (DHT11 or DHT22)
DHT dht(DHTPIN, DHTTYPE);
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
dht.begin();
if (!SD.begin(chipSelect)) {
Serial.println("SD card initialization failed!");
return;
}
}
void loop() {
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temp) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile) {
dataFile.print("Temperature: ");
dataFile.print(temp);
dataFile.print(" °C, Humidity: ");
dataFile.print(humidity);
dataFile.println(" %");
dataFile.close();
} else {
Serial.println("Failed to write to SD card.");
}
Serial.print("Logged: Temp = ");
Serial.print(temp);
Serial.print(" °C, Humidity = ");
Serial.println(humidity);
delay(2000); // Log every 2 seconds
}
Bu kod ne yapar:
✔ Okuma Sıcaklık ve Nem ondan DHT11 sensörü.
✔ Verileri günlüğe kaydeder log.txt
SD kartta.
✔ Değerleri yazdırır Seri monitör.
8. Sorun Giderme İpuçları
Sorun: SD kart tespit edilmedi mi?
✅ SD kartın FAT32 Biçimlendirilmiş.
✅ Çift kontrol etmek MISO, MOSI, SCK ve CS kablolama.
✅ Denemek Farklı bir SD kart (Bazı kartlar uyumsuzdur).
Sorun: Veriler kaydedilmiyor mu?
✅ Her zaman Dosyayı kapat kullanma dataFile.close();
.
✅ Emin olmak Yeterli Depolama alanı SD kartta mevcuttur.
9. Pratik uygulamalar
✔ Hava Durumu İzleme Sistemi - Log sıcaklığı, nem ve hava basıncı.
✔ Enerji izleme - Kayıt voltaj ve akım Zamanla okumalar.
✔ GPS izleme - Mağaza enlem ve boylam GPS modülünden veriler.
✔ Etkinlik Günlüğü - Sensör tetikleyicilerini veya düğmeye basmalarını kaydedin.
10. Sonuç
Bir Arduino ile SD kart modülü harika bir yol Sensör verilerini depolayın, günlüğe kaydedin veya taşınabilir bir veri kaydedici oluşturun. İle SPI İletişimi, kolayca yapabilirsin Dosyaları oku ve yaz, için ideal IoT ve Otomasyon Projeleri.