Liitettävä SD-korttimoduuli tiedonkeruuta varten

Kokeile Instrumenttia Ongelmien Poistamiseksi





Tässä viestissä aiomme liittää SD-korttimoduulin arduinon kanssa tietojen kirjaamista varten. Näemme yleiskatsauksen SD-korttimoduulista ja ymmärrämme sen pin-kokoonpanot ja sisäiset komponentit. Lopuksi rakennamme piirin lämpötilan ja kosteuden tietojen kirjaamiseksi SD-kortille.



Suojattu digitaalikortti

SD-kortti tai Secure Digital -kortti on hyödyllinen nykyaikaiselle elektroniikalle, koska se tarjoaa suuren kapasiteetin tallennustilaa pienellä koolla. Olemme käyttäneet SD-korttia mediatallennukseen yhdessä edellisessä projektissa (Mp3-soitin). Tässä aiomme käyttää sitä tietojen kirjaamiseen.

Tiedonkeruu on perusvaihe tapahtuman aikaisemman tapahtuman tallentamiseksi. Esimerkiksi: tutkijat ja tutkijat pystyvät tulkitsemaan maapallon lämpötilan nousun.



He tulivat tähän johtopäätökseen ymmärtäneet nousevan lämpötilamallin tarkastelemalla viime vuosikymmenien tietoja. Nykyisen tapahtuman tietojen tallentaminen saattaa paljastaa myös tulevan tapahtuman.

Koska arduino on loistava mikrokontrolleri anturitietojen lukemiseen ja tukee erilaisia ​​tiedonsiirtoprotokollia antureiden ja lähtöulostulojen oheislaitteiden lukemiseen, SD-korttimoduulin välinen yhteys arduino teki kakun.

Koska arduinolla ei ole muuta tallennustilaa kuin oma ohjelmatallennustila, voimme lisätä ulkoisen tallennustilan käyttämällä tässä artikkelissa kuvattua moduulia.

Katsotaan nyt SD-korttimoduulia.

Kuva SD-korttimoduulista:

Kuva SD-korttimoduulista:

Moduulin kääntöpuoli ja pin-kokoonpano:

Moduulin kääntöpuoli ja pin-kokoonpano:

Niitä on kuusi ja se tukee SPI (serial peripheral interface) -yhteyskäytäntöä. Arduino UNO: n SPI-tiedonsiirtotapit ovat 13, 12, 11 ja 10. Arduino megalla SPI-nastat ovat 50, 51, 52 ja 53.

Ehdotettu projekti on havainnollistettu Arduino UNO: lla, jos sinulla on muita Arduino-malleja, katso Internetistä SPI-nastat.

Moduuli koostuu kortinpidikkeestä, joka pitää SD-korttia paikallaan. 3,3 V: n säädin on tarkoitettu rajoittamaan jännitettä SD-korteille, koska se on suunniteltu toimimaan 3,3 V: n eikä 5 V: n jännitteellä.

Siinä on integroitu LVC125A-piiri, joka on logiikkatason siirtäjä. Loogisen tason vaihtajan tehtävänä on vähentää 5 V: n signaaleja arduinosta 3,3 V: n logiikan signaaleiksi.

Nyt SD-korttimoduuli on päättynyt.

SD-korttimoduulin avulla voimme tallentaa minkä tahansa tietokunnan, tässä aiomme tallentaa tekstidataa. Tallennamme lämpötila- ja kosteustietoja SD-kortille. Käytämme myös reaaliaikakellomoduulia ajan kirjaamiseen anturitietojen kanssa. Se tallentaa tiedot 30 sekunnin välein.

Kaaviokuva:

Liitettävä SD-korttimoduuli tiedonkeruuta varten

RTC-moduuli seuraa aikaa ja kirjaa päivämäärän ja kellonajan SD-kortille.

Virheen merkkivalo vilkkuu nopeasti, jos SD-kortti epäonnistuu tai epäonnistuu tai SD-korttia ei ole. Loppuaika LED-valo ei pala.

Kuinka asettaa aika RTC: lle:

• Lataa kirjasto alla.
• Kun laitteiston asennus on valmis, yhdistä arduino tietokoneeseen.
• Avaa arduino IDE
• Valitse Tiedosto> Esimerkit> DS1307RTC> SetTime.
• Lähetä koodi ja RTC synkronoidaan tietokoneen ajan kanssa.
• Lataa nyt alla annettu koodi.

Lataa seuraava arduino-kirjasto ennen koodin lataamista.

DS1307RTC: github.com/PaulStoffregen/DS1307RTC

DHT11-lämpötila ja kosteus: arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Ohjelmoida:

//-----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.Girishin kehittämä ohjelma ----- //

Kun piirin on sallittu kirjata tietoja jonkin aikaa, voit poistaa SD-kortin, joka on liitetty tietokoneeseen, on TEXT.txt-tiedosto, johon kaikki lämpötila- ja kosteustiedot tallennetaan yhdessä ajan ja päivämäärän kanssa, kuten alla on esitetty.

HUOMAUTUS: Yllä oleva idea on esimerkki tietojen liittämisestä ja tallentamisesta. Tämän projektin hyödyntäminen riippuu mielikuvituksestasi, voit tallentaa minkä tahansa tyyppisiä anturitietoja.

Kirjoittajan prototyyppi:

Prototyyppi liitetylle SD-korttimoduulille Arduinon kanssa




Edellinen: Kosketukseton anturit - infrapuna, lämpötila / kosteus, kapasitiivinen, valo Seuraava: Kuinka kytkeä IR-fotodiodianturi piiriin