Mòdul d'interfície de la targeta SD per al registre de dades

Proveu El Nostre Instrument Per Eliminar Problemes





En aquest post anem a la interfície del mòdul de la targeta SD amb arduino per al registre de dades. Veurem una descripció general del mòdul de la targeta SD i comprendreem les seves configuracions de pins i els components de la placa. Finalment, construirem un circuit per registrar les dades de temperatura i humitat a la targeta SD.



Targeta digital segura

La targeta SD o la targeta digital segura són útils per a l’electrònica moderna, ja que proporciona emmagatzematge d’alta capacitat a una mida mínima. Hem utilitzat la targeta SD per emmagatzemar fitxers multimèdia en un dels projectes anteriors (reproductor Mp3). Aquí l’utilitzarem per al registre de dades.

El registre de dades és el pas fonamental per registrar l’ocurrència passada d’un incident. Per exemple: científics i investigadors capaços d’interpretar l’augment de la temperatura global.



Van arribar a aquesta conclusió després d’entendre el patró de temperatura creixent en mirar les dades de les darreres dècades. Enregistrar les dades sobre l'incident actual també pot divulgar sobre l'ocurrència futura.

Atès que arduino és un gran microcontrolador per llegir dades de sensors i admet diversos protocols de comunicació per llegir els sensors i els perifèrics de sortida d’entrada, la connexió entre el mòdul de la targeta SD arduino va fer un pastís.

Com que arduino no té cap altre emmagatzematge que no sigui el seu propi espai d’emmagatzematge de programes, podem afegir un emmagatzematge extern mitjançant el mòdul descrit en aquest article.

Vegem ara el mòdul de la targeta SD.

Imatge del mòdul de la targeta SD:

Imatge del mòdul de la targeta SD:

Revers de la configuració del mòdul i el pin:

Revers de la configuració del mòdul i el pin:

Hi ha sis pins i admet el protocol de comunicació SPI (interfície perifèrica de sèrie). Per a Arduino UNO, els pins de comunicació SPI són 13, 12, 11 i 10. Per a Arduino mega, els pins SPI són 50, 51, 52 i 53.

El projecte proposat s’il·lustra amb Arduino UNO si teniu algun altre model d’Arduino, consulteu Internet per obtenir els pins SPI.

El mòdul consisteix en un titular de la targeta que manté la targeta SD al seu lloc. Es proporciona un regulador de 3,3V per limitar el voltatge a les targetes SD, ja que està dissenyat per funcionar a 3,3V i no a 5V.

Té un circuit integrat LVC125A a bord que és un canvi de nivell lògic. La funció del commutador de nivell lògic és reduir els senyals lògics de 5V d’arduino a 3,3V.

Ara es conclou el mòdul de la targeta SD.

Mitjançant el mòdul de la targeta SD podem emmagatzemar qualsevol rei de dades, aquí emmagatzemarem dades de text. Emmagatzemarem dades de temperatura i humitat a la targeta SD. També fem servir un mòdul de rellotge en temps real per registrar l’hora juntament amb les dades del sensor. Enregistra les dades cada 30 segons.

Diagrama esquemàtic:

Mòdul d

El mòdul RTC farà un seguiment de l'hora i registrarà la data i l'hora a la targeta SD.

El LED d'error parpelleja ràpidament si la targeta SD falla o no s'inicialitza o la targeta SD no està present. La resta del temps, el LED es queda apagat.

COM ESTABLEIX EL TEMPS DE RTC:

• Descarregueu la biblioteca següent.
• Amb la configuració de maquinari completa, connecteu l’arduino al PC.
• Open arduino IDE
• Aneu a Fitxer> Exemples> DS1307RTC> SetTime.
• Pengeu el codi i RTC se sincronitzarà amb l’hora de l’ordinador.
• Ara pengeu el codi que es mostra a continuació.

Descarregueu la següent biblioteca arduino abans de penjar el codi.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

Temperatura i humitat DHT11: arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Programa:

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

// ----- Programa desenvolupat per R.Girish ----- //

Una vegada que es permeti al circuit registrar dades durant algun temps, podeu treure la targeta SD connectada a l'ordinador; hi haurà un fitxer TEXT.txt on es registraran totes les dades de temperatura i humitat juntament amb l'hora i la data, com es mostra a continuació.

NOTA: La idea anterior és un exemple de com connectar i registrar dades. La utilització d’aquest projecte depèn de la vostra imaginació, podeu enregistrar dades de sensors de qualsevol tipus.

Prototip de l'autor:

Prototip per al mòdul de targeta SD interfície amb Arduino




Anterior: Sensors sense contacte: infrarojos, temperatura / humitat, capacitius, lleugers Següent: Com connectar un sensor de fotodiode IR en un circuit