Модул за свързване на SD карта за регистриране на данни

Опитайте Нашия Инструмент За Премахване На Проблемите





В тази публикация ще свържем модула на SD картата с arduino за регистриране на данни. Ще видим преглед на модула на SD картата и ще разберем неговите конфигурации на щифтове и компонентите на борда. Накрая ще изградим верига за регистриране на данните за температурата и влажността на SD картата.



Сигурна цифрова карта

SD картата или Secure Digital картата са благодат за съвременната електроника, тъй като осигуряват голям капацитет за съхранение при минимален размер. Използвахме SD картата за медийно съхранение в един от предишните проекти (Mp3 плейър). Тук ще го използваме за регистриране на данни.

Регистрацията на данни е основната стъпка за записване на миналото възникване на инцидент. Например: учени и изследователи, способни да интерпретират покачването на глобалната температура.



Те стигнаха до това заключение, след като разбраха модела на покачващите се температури, като разгледаха данните от последните няколко десетилетия. Записването на данните за текущия инцидент може да разкрие и бъдещото събитие.

Тъй като arduino е чудесен микроконтролер за четене на данни от сензори и поддържа различни комуникационни протоколи за четене на сензорите и изходни периферни устройства, връзката между модула SD карта arduino направи парче торта.

Тъй като arduino няма друго хранилище, освен собствено пространство за съхранение на програмата, можем да добавим външно хранилище, използвайки описания модул в тази статия.

Сега да разгледаме модула на SD картата.

Изображение на модула на SD картата:

Изображение на модула на SD картата:

Обратна страна на модула и конфигурация на щифтове:

Обратна страна на модула и конфигурация на щифтове:

Има шест щифта и поддържа протокол за комуникация SPI (сериен периферен интерфейс). За Arduino UNO изводите за комуникация SPI са 13, 12, 11 и 10. За Arduino mega изводите SPI са 50, 51, 52 и 53.

Предложеният проект е илюстриран с Arduino UNO, ако имате друг модел на Arduino, моля, направете справка в интернет за SPI щифтовете.

Модулът се състои от държач за карта, който държи SD картата на място. 3.3V регулатор е предвиден за ограничаване на напрежението до SD карти, тъй като е проектиран да функционира при 3.3V, а не 5V.

Той има интегрирана схема LVC125A на борда, която е превключвател на логическо ниво. Функцията на превключвателя на логическо ниво е да намали 5V сигнали от arduino до 3.3V логически сигнали.

Сега това завършва модула на SD картата.

Използвайки модул SD карта, ние можем да съхраняваме всякакви данни, тук ще съхраняваме текстови данни. Ще съхраняваме данни за температурата и влажността на SD карта. Също така използваме модул с часовник в реално време, за да регистрираме времето заедно със сензорни данни. Той записва данните на всеки 30 секунди.

Схематична диаграма:

Модул за свързване на SD карта за регистриране на данни

RTC модулът ще следи времето и ще записва датата и часа на SD картата.

Светодиодът за грешка мига бързо, ако SD картата не успее или не успее да се инициализира или SD картата не присъства. През останалото време светодиодът не свети.

КАК ДА ЗАДАЕТЕ ВРЕМЕ ЗА RTC:

• Изтеглете библиотеката по-долу.
• След завършена хардуерна настройка свържете arduino към компютър.
• Отворете IDE на arduino
• Отидете на File> Примери> DS1307RTC> SetTime.
• Качете кода и RTC ще се синхронизира с времето на компютъра.
• Сега качете кода, даден по-долу.

Моля, изтеглете следната библиотека на arduino, преди да качите кода.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11 температура и влажност: arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Програма:

//-----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()
}
}

// ----- Програма, разработена от R.Girish ----- //

След като на веригата бъде позволено да записва данни за известно време, можете да премахнете SD картата, свързана към вашия компютър, ще има файл TEXT.txt, в който се записват всички данни за температурата и влажността заедно с час и дата, както е показано по-долу.

ЗАБЕЛЕЖКА: Горната идея е пример за свързване и запис на данни. Използването на този проект зависи от вашето въображение, можете да записвате данни от сензори от всякакъв вид.

Прототип на автора:

Прототип за свързан модул за SD карта с Arduino




Предишен: Безконтактни сензори - Инфрачервени, Температура / Влажност, Капацитивни, Светлинни Напред: Как да свържете IR фотодиоден сензор във верига