Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /home/itstreet/public_html/classes/CMySQL.php on line 22

Warning: mysqli_query() expects at least 2 parameters, 1 given in /home/itstreet/public_html/classes/CMySQL.php on line 24
ITstreet -Micro SD card read/write modul
Preskoči na sadržaj

ITstreet postovi

Micro SD card read/write modul

Za izuzetno malu sumu ($0,47) se može nabaviti čitač mikro SD kartica iz naslova koji se vrlo lako može povezati na Arduino i koristiti u razne svrhe. Modul je u stanju da čita i piše po mikro SD kartici putem SPI interfejsa. Izuzetno je malih dimenzija 42x24x12mm i težak jedva 5 grama.

Na PCB-u nema nikakva oznaka a preturajući po Aliekspresu ni kod drugih trgovaca nema nikakvih oznaka za isti model. Prema specifikaciji kod trgovca kod koga sam ja uzeo modul stoji da ima podršku za MicroSD i MicroSDHC kartice kapaciteta od 2GB do 32gb. Povezuje se na 5V a gde je napon od 0,2mA u stanju mirovanja do 200mA pri maksimalnom opterećenju. 80mA je najčešća vrednost koju će modul postići, tj. opteretiti izlaze Arduina. S obzirom da SD kartice rade na 3,3V na ploči su 3,3V naponski regulator i Level Conversion IC.





Nasuprot slotu za mikro SD karticu su 6 pinova u L konfiguraciji: GND, VCC, MISO, MOSI, SCK i CS.
Pinovi se povezuju na sledeći način:
GND  -> GND
VCC  -> 5V
MISO -> MISO
MOSI -> MOSI
SCK  -> SCK
CS   -> digitalni pin 10



Ja sam za potrebe ovog teksta koristio Megu a treba znati gde su SPI hederi u zavisnosti koja će se ploča koristiti. Na Megi su SPI hederi na sledećim pinovima:
50 -> MISO
51 -> MOSI
52 -> SCK
Na drugim pločama su hederi na drugim pinovima i treba obratiti pažnju. CS sam povezao na digitalni pin 10 ali može i na neki drugi. Ja u principu stalno koristim pin 10 iz prostog razloga jer je na većem brojem šildova koji imaju SD slot CS povezan na njega. Na taj način se lako mogu praviti snipeti i koristiti u raznim projektima bez bojazni da li će na drugim SD modulima raditi.





Za projekat koji sledi je potrebno:
MEGA
Micro SD modul
Micro SD kartica
breadboard
3 otpornika od 10K
3 tactile prekidača
brdo dupont žica
Sve povezujemo prema Fritzing šemi ispod.



------------------------
#include <SD.h>
#include <SPI.h>
const int SD_CS = 10;
const int buttonPin = 2;
const int buttonPin2 = 3;
const int buttonPin3 = 4;
int buttonState = 0;
int buttonState2 = 0;
int buttonState3 = 0;
File dataFile;
void setup() {
  Serial.begin(9600);
  SD.begin(SD_CS);
  pinMode(buttonPin, INPUT);
  dataFile= SD.open("test.txt",FILE_WRITE);
  if(dataFile){
    Serial.println("Fajl text.txt je napravljen.");
    dataFile.close(); 
      }else{
           Serial.println("Fajl text.txt nije napravljen.");
           }

}
void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  buttonState2= digitalRead(buttonPin2);
  buttonState3= digitalRead(buttonPin3);
  if (buttonState == HIGH) {
      dataFile = SD.open ("test.txt",FILE_WRITE);
      if(dataFile){
        dataFile.println("Upravo smo prekidacem uneli ovaj tekst.");
        delay(200);
        dataFile.close();
        Serial.println("Uspešno unet tekst u test.txt");
        delay(100);
      }else{
           Serial.println("Nema test.txt fajla");
           }
  }
  if (buttonState2 == HIGH){
  dataFile = SD.open("test.txt");
  if (dataFile) {
    while (dataFile.available()) {
      Serial.write(dataFile.read());
    }
    Serial.println();
    Serial.println("........");
    Serial.println("Izlistan sadržaj mikro SD kartice");
    dataFile.close();
  } else {
         Serial.println("Greska u otvaranju test.txt");
         }
  }
  if(buttonState3 == HIGH){
    SD.remove("test.txt");
    if(SD.exists("test.txt")){
      Serial.println("Test.txt nije obrisan");
      }else{
        Serial.println("Fajl je obrisan");
        }
    }
  delay(200);
}
-----------------------------

Prvo se naravno dodaju neophodne biblioteke, u ovom slučaju SPI i SD. Zatim dodeljujemo funkcije pinovima i dodeljujemo logičku 0 promenljivima koje će nam trebati za prekidače. U setup funkciji nakon pokretanja serial monitora i sd slota otvaramo karticu i pravimo test.txt fajl a zatim slot zatvaramo. Ukoliko kartice nema to prikazujemo na serial monitoru.

U loop funkciji čekamo stanje nekog od tri prekidača. Ako je pritisnut prvi prekidač i dobijemo logičku jedinicu, u već kreiran fajl (koji ako nije kreiran biće ovom prilikom) unosimo prikladan tekst. Ukoliko je pritisnut drugi prekidač otvaramo sd slot i izlistavamo sadržaj na serial monitoru. Ukoliko fajla nema dobijamo obaveštenje o tome. Kada je treći prekidač pritisnut brišemo test.txt i sve u njemu i ispisujemo na serial monitoru šta smo uradili. Ukoliko idemo ovim redom dobićemo ispis kao na slici a ukoliko nakon brisanja pritisnemo drugi prekidač da izlistamo sadržaj, dobićemo poruku da fajla nema. Možemo ponovo pritisnuti prvi taster koji će ispisati tekst i uz put prethodno napraviti test.txt.



Vrlo zanimljiv modul prikladan da se koristi u razne svrhe ukoliko se ne koristi neki šild koji ga već ima. Osim ovakvog načina upisa moguće ga je koristiti i za data logging ili slično. Na kartici se može držati više fajlova ali se može u jednom trenutku otvoriti samo jedan i nakon toga zatvoriti ako terba da se otvori drugi. Isto tako ovaj primer će obrisati samo selektovani fajl a druge će ostaviti na kartici.

Ostavite poruku

Vaša mejl adresa neće biti objavljena.Označena polja su obavezna*

  1. Dejan Petrovic

    Zaboravih skeč. Ispravljeno.