רישום נתונים הוא היבט מכריע של רבים IoT, ניטור סביבתי ופרויקטים מבוססי חיישניםו עם ארדואינו ומודול כרטיס SD, אתה יכול אחסן נתוני חיישנים, חותמות זמן וקריאות אחרות לניתוח עתידי. מדריך זה יראה לך כיצד חבר מודול כרטיס SD לארדואינו, כתוב וקרא נתונים ופתרון בעיות נפוצות.
1. מה שאתה צריך
✅ מועצת ארדואינו (אונו, מגה, ננו וכו ')
✅ מודול כרטיס מיקרו SD (מבוסס SPI)
✅ כרטיס MicroSD (FAT32 מעוצב, מומלץ 2GB - 32GB)
✅ חוטי מגשר
✅ חיישנים (אופציונלי, למשל, DHT11, BMP280 וכו ')
🔹 פֶּתֶק: מודול ה- SD מתקשר עם ארדואינו באמצעות SPI (ממשק היקפי סדרתי).
2. חיווט מודול כרטיס ה- SD לארדואינו
סיכת מודול כרטיס SD | סיכת ארדואינו אונו | סיכת מגה של ארדואינו |
---|---|---|
VCC | 5V | 5V |
GND | GND | GND |
מיסו | 12 (SPI Miso) | 50 (SPI Miso) |
מוסי | 11 (Spi Mosi) | 51 (Spi Mosi) |
SCK | 13 (SPI SCK) | 52 (SPI SCK) |
CS (ChIP Select) | 10 (SPI CS) | 53 (SPI CS) |
3. התקנת הספרייה הנדרשת
- לִפְתוֹחַ Arduino Ide.
- לך אל סקיצה → כלול ספריה → ניהול ספריות.
- חפש SD ולהתקין את ספריית SD מאת ארדואינו.
4. אתחול כרטיס ה- SD (בדוק אם מודול SD עובד)
השתמש בדברים הבאים קוד מבחן בסיסי כדי לבדוק אם מודול SD עובד:
#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
}
מה קוד זה עושה:
✔ מאתחל את מודול SD.
✔ הדפסים "כרטיס SD מוכן" אם יתגלה.
✔ הדפסים "אתחול כרטיסי SD נכשל!" אם יש שגיאה.
🔹 פתרון בעיות:
✅ בדוק שכרטיס ה- SD הוא FAT32 מעוצב.
✅ לְהַבטִיחַ חיווט נכון (מיסו, מוסי, SCK ו- CS).
✅ נסה אחר סיכת CS (למשל, 4 במקום 10) ולעדכן את הקוד.
5. כתיבת נתונים לכרטיס SD
דוגמה זו יוצר קובץ (data.txt
) וכותב קריאות חיישנים.
#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
}
מה קוד זה עושה:
✔ יוצר או נפתח data.txt
.
✔ כותב "שלום, זה יומן מבחן!" לקובץ.
✔ סוגר את הקובץ לאחר הכתיבה.
🔹 פונקציות טיפול בקבצים:
✔ SD.open("filename.txt", FILE_WRITE);
→ פתח קובץ לכתיבה.
✔ dataFile.println("Text");
→ כתוב נתונים לקובץ.
✔ dataFile.close();
→ סגור את הקובץ כדי לשמור נתונים.
6. קריאת נתונים מכרטיס ה- SD
השתמש בקוד זה ל קרא והצג נתונים מכרטיס SD.
#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
}
מה קוד זה עושה:
✔ נפתח data.txt
לקריאה.
✔ מדפיס את תוכן הקובץ ל צג סידורי.
🔹 עֵצָה: וודא שהקובץ קיים לפני הקריאה כדי למנוע שגיאות.
7. רישום נתוני חיישן לכרטיס SD
דוגמה זו מתחברת נתוני טמפרטורה ולחות מחיישן DHT11.
רכיבים נדרשים
✅ חיישן טמפרטורה ולחות DHT11
✅ ספריית DHT (ספריית חיישני Adafruit DHT)
חיווט לחיישן DHT11
PIN DHT11 | סיכת ארדואינו |
---|---|
VCC | 5V |
GND | GND |
נְתוּנִים | 2 |
קוד: רישום נתוני DHT11 לכרטיס SD
#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
}
מה קוד זה עושה:
✔ קורא טמפרטורה ולחות מה- חיישן DHT11.
✔ רושם את הנתונים ב log.txt
בכרטיס ה- SD.
✔ מדפיס את הערכים ל צג סידורי.
8. טיפים לפתרון בעיות
בְּעָיָה: כרטיס SD לא זוהה?
✅ ודא שכרטיס ה- SD הוא FAT32 מעוצב.
✅ בדוק כפול חיווט מיסו, מוסי, SCK ו- CS.
✅ לְנַסוֹת כרטיס SD אחר (חלק מהכרטיסים אינם תואמים).
בְּעָיָה: נתונים לא חוסכים?
✅ תָמִיד סגור את הקובץ באמצעות dataFile.close();
.
✅ לְהַבטִיחַ מספיק שטח אחסון זמין בכרטיס SD.
9. יישומים מעשיים
✔ מערכת ניטור מזג אוויר - טמפרטורת יומן, לחות ולחץ אוויר.
✔ ניטור אנרגיה - רשום מתח וזרם קריאות לאורך זמן.
✔ מעקב GPS - חנות קו רוחב ואורך נתונים ממודול GPS.
✔ רישום אירועים - הקלט מפעיל חיישן או לחיצות על כפתורים.
10. מסקנה
באמצעות מודול כרטיס SD עם ארדואינו זו דרך נהדרת אחסן נתוני חיישנים, אירועי יומן או צור לוגר נתונים ניידו עִם תקשורת SPI, אתה יכול בקלות קרא וכתוב קבצים, מה שהופך אותו לאידיאלי עבור פרויקטים של IoT ו- Automation.