Giao diện mô-đun thẻ SD để ghi dữ liệu

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Trong bài đăng này, chúng ta sẽ giao diện mô-đun thẻ SD với arduino để ghi dữ liệu. Chúng ta sẽ xem tổng quan về mô-đun thẻ SD và hiểu cấu hình chân của nó và các thành phần trên bo mạch. Cuối cùng, chúng tôi sẽ xây dựng một mạch để ghi dữ liệu nhiệt độ và độ ẩm vào thẻ SD.



Thẻ kỹ thuật số an toàn

Thẻ SD hoặc thẻ Kỹ thuật số an toàn rất hữu ích cho các thiết bị điện tử hiện đại vì nó cung cấp dung lượng lưu trữ cao với kích thước tối thiểu. Chúng tôi đã sử dụng thẻ SD để lưu trữ phương tiện trong một trong những dự án trước đó (máy nghe nhạc Mp3). Ở đây chúng tôi sẽ sử dụng nó để ghi dữ liệu.

Ghi dữ liệu là bước cơ bản để ghi lại quá khứ của một sự cố. Ví dụ: các nhà khoa học và nhà nghiên cứu có thể giải thích sự gia tăng của nhiệt độ toàn cầu.



Họ đưa ra kết luận này sau khi tìm hiểu mô hình nhiệt độ tăng bằng cách xem xét dữ liệu của vài thập kỷ qua. Ghi lại dữ liệu về sự cố hiện tại cũng có thể tiết lộ về sự cố trong tương lai.

Vì arduino là một vi điều khiển tuyệt vời để đọc dữ liệu cảm biến và hỗ trợ các giao thức truyền thông khác nhau để đọc các cảm biến và thiết bị ngoại vi đầu vào đầu vào, nên việc kết nối giữa mô-đun thẻ SD với arduino đã trở nên khó khăn.

Vì arduino không có bất kỳ bộ nhớ nào ngoài không gian lưu trữ chương trình của riêng nó, chúng tôi có thể thêm bộ nhớ ngoài bằng cách sử dụng mô-đun được mô tả trong bài viết này.

Bây giờ chúng ta hãy xem xét mô-đun thẻ SD.

Hình ảnh của mô-đun thẻ SD:

Hình ảnh của mô-đun thẻ SD:

Lật mặt của mô-đun và cấu hình chân:

Lật mặt của mô-đun và cấu hình chân:

Có sáu chân và nó hỗ trợ giao thức truyền thông SPI (giao diện ngoại vi nối tiếp). Đối với Arduino UNO, các chân giao tiếp SPI là 13, 12, 11 và 10. Đối với Arduino mega, các chân SPI là 50, 51, 52 và 53.

Dự án được đề xuất được minh họa bằng Arduino UNO nếu bạn có bất kỳ mô hình Arduino nào khác, vui lòng tham khảo trên internet để biết các chân SPI.

Mô-đun bao gồm một ngăn chứa thẻ để giữ thẻ SD tại chỗ. Bộ điều chỉnh 3.3V được cung cấp để giới hạn điện áp cho thẻ SD vì nó được thiết kế để hoạt động ở 3.3V chứ không phải 5V.

Nó có mạch tích hợp LVC125A trên bo mạch là bộ chuyển đổi mức logic. Chức năng của bộ dịch mức logic là giảm tín hiệu 5V từ arduino xuống tín hiệu logic 3.3V.

Bây giờ điều đó kết thúc mô-đun thẻ SD.

Sử dụng mô-đun thẻ SD, chúng tôi có thể lưu trữ bất kỳ dữ liệu nào, ở đây chúng tôi sẽ lưu trữ dữ liệu văn bản. Chúng tôi sẽ lưu trữ dữ liệu nhiệt độ và độ ẩm vào thẻ SD. Chúng tôi cũng đang sử dụng mô-đun đồng hồ thời gian thực để ghi lại thời gian cùng với dữ liệu cảm biến. Nó ghi lại dữ liệu sau mỗi 30 giây.

Sơ đồ:

Giao diện mô-đun thẻ SD để ghi dữ liệu

Mô-đun RTC sẽ theo dõi thời gian và ghi ngày giờ vào thẻ SD.

Đèn LED báo lỗi nhấp nháy nhanh nếu thẻ SD bị lỗi hoặc không thể khởi động hoặc thẻ SD không có. Thời gian còn lại đèn LED sẽ tắt.

CÁCH ĐẶT THỜI GIAN ĐỂ RTC:

• Tải xuống thư viện bên dưới.
• Khi thiết lập phần cứng hoàn tất, hãy kết nối arduino với PC.
• Mở arduino IDE
• Đi tới Tệp> Ví dụ> DS1307RTC> SetTime.
• Tải mã lên và RTC sẽ được đồng bộ hóa với thời gian của máy tính.
• Bây giờ tải lên mã được cung cấp bên dưới.

Vui lòng tải xuống thư viện arduino sau đây trước khi tải lên mã.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

Nhiệt độ & độ ẩm DHT11: arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Chương trình:

//-----Program developed by R.Girish-----//
#include
#include
#include
#include
#include
#include
#define DHTxxPIN A0
const int cs = 10
const int LED = 7
dht DHT
int ack
int f
File myFile
void setup()
{
Serial.begin(9600)
pinMode(LED,OUTPUT)
if (!SD.begin(cs))
{
Serial.println('Card failed, or not present')
while(true)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
}
Serial.println('Initialization done')
}
void loop()
{
myFile = SD.open('TEST.txt', FILE_WRITE)
if(myFile)
{
Serial.println('----------------------------------------------')
myFile.println('----------------------------------------------')
tmElements_t tm
if(!RTC.read(tm))
{
goto A
}
if (RTC.read(tm))
{
Serial.print('TIME:')
if(tm.Hour>12) //24Hrs to 12 Hrs conversion//
{
if(tm.Hour==13)
{
Serial.print('01')
myFile.print('01')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==14)
{
Serial.print('02')
myFile.print('02')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==15)
{
Serial.print('03')
myFile.print('03')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==16)
{
Serial.print('04')
myFile.print('04')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==17)
{
Serial.print('05')
myFile.print('05')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==18)
{
Serial.print('06')
myFile.print('06')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==19)
{
Serial.print('07')
myFile.print('07')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==20)
{
Serial.print('08')
myFile.print('08')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==21)
{
Serial.print('09')
myFile.print('09')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==22)
{
Serial.print('10')
myFile.print('10')
Serial.print(':')
myFile.print(':')
}
if(tm.Hour==23)
{
Serial.print('11')
myFile.print('11')
Serial.print(':')
myFile.print(':')
}
else
{
Serial.print(tm.Hour)
myFile.print(tm.Hour)
Serial.print(':')
myFile.print(':')
}
Serial.print(tm.Minute)
myFile.print(tm.Minute)
Serial.print(':')
myFile.print(':')
Serial.print(tm.Second)
myFile.print(tm.Second)
if(tm.Hour>=12)
{
Serial.print(' PM')
myFile.print( ' PM')
}
if(tm.Hour<12)
{
Serial.print('AM')
myFile.print( ' AM')
}
Serial.print(' DATE:')
myFile.print(' DATE:')
Serial.print(tm.Day)
myFile.print(tm.Day)
Serial.print('/')
myFile.print('/')
Serial.print(tm.Month)
myFile.print(tm.Month)
Serial.print('/')
myFile.print('/')
Serial.println(tmYearToCalendar(tm.Year))
myFile.println(tmYearToCalendar(tm.Year))
Serial.println('----------------------------------------------')
myFile.println('----------------------------------------------')
} else {
A:
if (RTC.chipPresent())
{
Serial.print('RTC stopped!!!')
myFile.print('RTC stopped!!!')
Serial.println(' Run SetTime code')
myFile.println(' Run SetTime code')
} else {
Serial.print('RTC Read error!')
myFile.print('RTC Read error!')
Serial.println(' Check circuitry!')
myFile.println(' Check circuitry!')
}
}
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
f=DHT.temperature*1.8+32
Serial.print('Temperature(C) = ')
myFile.print('Temperature(°C) = ')
Serial.println(DHT.temperature)
myFile.println(DHT.temperature)
Serial.print('Temperature(F) = ')
myFile.print('Temperature(°F) = ')
Serial.print(f)
myFile.print(f)
Serial.print('n')
myFile.println(' ')
Serial.print('Humidity(%) = ')
myFile.print('Humidity(%) = ')
Serial.println(DHT.humidity)
myFile.println(DHT.humidity)
Serial.print('n')
myFile.println(' ')
}
if(ack==1)
{
Serial.println('NO DATA')
myFile.println('NO DATA')
}
for(int i=0 i<30 i++)
{
delay(1000)
}
}
myFile.close()
}
}

// ----- Chương trình được phát triển bởi R.Girish ----- //

Sau khi mạch được phép ghi dữ liệu một thời gian, bạn có thể tháo thẻ SD kết nối với máy tính của mình, sẽ có tệp TEXT.txt mà tất cả dữ liệu nhiệt độ và độ ẩm được ghi lại cùng với thời gian và ngày, như hình dưới đây.

LƯU Ý: Ý tưởng trên là một ví dụ về cách giao diện và ghi dữ liệu. Việc sử dụng dự án này phụ thuộc vào trí tưởng tượng của bạn, bạn có thể ghi lại bất kỳ loại dữ liệu cảm biến nào.

Nguyên mẫu của tác giả:

Nguyên mẫu cho Mô-đun thẻ SD xen kẽ với Arduino




Trước: Cảm biến không tiếp xúc - Hồng ngoại, Nhiệt độ / Độ ẩm, Điện dung, Ánh sáng Tiếp theo: Cách kết nối cảm biến điốt quang hồng ngoại trong mạch