card SD și Arduino modulul

card SD și Arduino modulul

card SD și Arduino modulul

Ce trebuie să știți atunci când utilizați un card SD cu Arduino

În primul rând. Hărțile sunt proiectate pentru 3.3 V. Când datele este intensitatea curentului poate atinge valori ridicate de până la 100 mA, și chiar mai mult! Acest lucru sugerează că este necesar să se asigure de înaltă calitate alimentară 3.3 carte. În plus, este necesar să aibă o sursă de 3.3V pentru putere logica. carduri SD sunt foarte sensibile - utilizarea de rezistențe și conductori lungi de legătură conduc la o scădere semnificativă a ratei de transmisie a datelor. Deci, utilizați imediat ce conectorii și pentru a evita rezistențe în lanțul de aprovizionare logica. În schimb puteți utiliza convertoare de nivel bazate pe cipuri HEF4050, 74LVX245 sau 74AHC125.

În al doilea rând. Există două moduri: SPI și SDIO. SDIO îndeplinește mai repede, dar dau seama că atunci când se lucrează cu Arduino dificilă. modul SPI este mult mai ușor să se stabilească atunci când se lucrează cu orice microcontroler. Pentru a vă conecta la modul SPI va avea nevoie de un total de patru pini (mai în detaliu, considerăm această întrebare în continuare).

cardurile SD sunt disponibile în doi factori de formă: microSD și SD. Conexiuni, structura de program, etc. Pentru ei la fel. Singura diferență - dimensiunea. Micro SD card este mult mai mic în dimensiuni.

În al treilea rând. carduri SD reprezintă un cip cu sectoare individuale. Adică, o anumită structură, pe care trebuie să îl utilizați nu. Acest lucru înseamnă că, cardul poate fi formatat cu un sistem de fișiere Linux, GFAT (DOS) sau Mac. Acesta poate fi sistemul de fișiere absent! Astfel, 99% dintre calculatoare, camere, MP-3 jucători, GPS-navigator pentru utilizare necesită fișiere FAT16 sau FAT32 format de sistem. Captura constă în faptul că un procent relativ mare de memorie alocată atunci când se lucrează cu sisteme de fișiere complexe, în microcontrolere, cum ar fi Arduino.

Formatarea unui card SD

Practic, puteți utiliza un card SD cu nici un sistem de fișiere, dar nu este foarte convenabil. Pentru a lucra cu Arduino este mai bine să utilizeze FAT16 sau FAT32. Acest lucru se datorează în principal prezenței bibliotecilor respective. Unele un format de sprijin, unele - altele. Arduino SD Biblioteca acceptă ambele formate.

Pentru formatare, puteți utiliza acest program, de exemplu: card SD Formatter

Pe pagina de descărcare, există instrucțiuni pentru utilizarea programului. Probleme ar trebui să apară.

Conectarea modulului de card SD pentru Arduino

După această precondiționare, cardul SD poate începe să se conecteze carduri microSD de expansiune și Arduino. card de expansiune facilitează foarte mult conexiunea. Este setat un regulator care convertește tensiunea de 3,3 - 6 V, la 3,3 V (I2C). Există un regulator de nivel, care transformă puterea logicii în 3.3-5 la 3.3 V. Acest lucru înseamnă că placa de extensie poate fi utilizat cu un microcontroler 3.3 V și 5 V.

În exemplul am folosit Arduino microcontroler. Dacă utilizați un alt microcontroler, diagrama de conectare și codul poate varia.

  • Conectați-5V pini la pinul de pe Arduino 5V
  • Conectați GND pini la pinul de pe Arduino
  • Conectați-Pin CLK la pinul 13 sau 52
  • Conectați la pinul 12 sau 50
  • DI conectați la pinul 11 ​​sau 51
  • Conectați CS la pinul 10 sau 53

Mai există un conector - CD - acest PIN pentru a inițializa cardul SD. El se închide pe sol atunci când este introdus cardul. Dacă doriți să utilizați, conectați-pull-up rezistor (aproximativ 10k) și la o altă Pina. În acest exemplu, ia în considerare această opțiune, nu vom.

card SD și Arduino modulul

Totul! Suntem gata să se alipească!

Încărcarea bibliotecii și prima lansare a cardului SD

Transferul de date pe un card SD - este o mare bucată de cod, dar din fericire pentru noi nu este integrat în biblioteca Arduino IDE numit SD (numele punctului, nu este.)). Găsiți biblioteca poate fi în meniul Exemple. Exemple În submeniu, selectați schița CardInfo.

card SD și Arduino modulul

Cu această schiță, nu puteți transfera date, ci doar primi un răspuns, dacă conectat SD-card este recunoscut. schiță Foarte util, dacă doriți să aflați dacă aceasta este susținută de lucrul cu cardul. Înainte de a lucra cu noul card este necesar pentru a efectua această verificare!

La începutul chipSelect variabilă de verificare schiță. În acest exemplu sunt conectate la 10 pini de, respectiv, variabila ia valoarea 10.

card SD și Arduino modulul

Acum, introduceți cardul SD în placa de extensie și încărcați schița.

Deschideți fereastra monitorului de serie în Arduino IDE, tastați orice caracter și apăsați Trimitere. Cel mai probabil vă va arăta ceva de genul:

card SD și Arduino modulul

Vă rugăm să rețineți că oferă informații sistemul de fișiere - FAT16, dimensiunea cardului (2 GB, care, în acest caz corespunde realității), etc.

Dacă aveți un card de rău (în primul rând, această carte de la producători necunoscuți), par să fie similare cu următoarele:

card SD și Arduino modulul

În acest exemplu, cardul răspunde la solicitări, dar incorect. Notă de lângă display-uri ID-ul produsului „N / A“, nu există nici o identitate Producător și OEM ID-ul. În plus, cardul SD de eroare revine erori. În general, cardul inutilizabil. Puteți încerca să-l formatați. Dacă după erorile de formatare nu sunt consumate, folosind aceasta nu va funcționa.

Încercați să scoateți cardul SD și reporniți programul. În monitorul de serie afișează următoarele:

card SD și Arduino modulul

Această eroare se produce atunci când nu a reușit chiar și pentru a inițializa cartela. Primul motiv posibil: cardul este deteriorat. În al doilea rând de conectare, incorectă a modulului pe cardul SD Arduino.

Înregistrarea datelor de pe un card SD, prin intermediul Arduino

În schița prezentată capacitățile de bază pentru înregistrarea pe datele de card. De fapt, este baza pentru lucrul cu modulul de card SD.

Serial.print ( "Inițializare card SD.");

// se potrivesc cu plăcuța de identificare de pe PIN-ul Ethernet CS de 4 partide. În mod implicit este setat la modul de ieșire

// rețineți că în cazul în care nu este utilizat ca PIN-ul CS, PIN-ul SS pe echipament

// (10 pe cele mai multe placi Arduino, 53 pe Arduino Mega) ar trebui să fie lăsat în modul de ieșire.

// funcții de bibliotecă de bibliotecă altfel SD nu va funcționa.

// deschide fișierul. Rețineți că paralela nu se poate deschide mai multe fișiere.

// înainte de a deschide un fișier nou, vechi trebuie să se închidă

FișierulMeu = SD.open ( "test.txt", FILE_WRITE);

// în cazul în care în imposibilitatea de a deschide fișierul, scrie să-l:

Serial.print ( "Scrierea la test.txt.");

myFile.println ( "testare 1, 2, 3");

// dacă fișierul nu este deschis, apare un mesaj de eroare:

Serial.println ( "eroare de deschidere test.txt");

// setare după ce nu se întâmplă nimic

Rularea scenetă pentru a efectua, veți vedea următoarele:

card SD și Arduino modulul

Dupa schita de lucru, puteți deschide fișierul generat pe un computer personal. Fiecare linie corespunde unui ciclu al programului. Adică, se adaugă datele, și nu sunt suprascrise.

card SD și Arduino modulul

Este demn de remarcat câteva lucruri:

bibliotecă de card SD nu este acceptat „nume lung“, astfel încât numele fișierelor trebuie să fie scurt! De exemplu, Imagine.jpg - mare titlu, datalog.txt - de asemenea, potrivite. Dar, ceva de genul „GPS-ul meu jurnal file.text“ nu va funcționa! De asemenea, rețineți numele nu sunt sensibile la litere. Asta este, datalog.txt - este același lucru ca și DataLog.Txt sau DATALOG.TXT

Citirea datelor de pe cardul SD, prin intermediul Arduino

Acum vom înțelege cum este posibil pentru a citi informații dintr-un fișier care este stocat pe hartă. Procesul este foarte similar cu înregistrarea. Vom folosi funcția SD.open () cu numele fișierului. Puteți apela funcția disponibilă () (care vă va spune dacă există informații pe hartă pentru a citi) și citiți () din fișierul, care returnează următorul octet.

Serial.print ( "Inițializare card SD.");

// se potrivesc cu plăcuța de identificare de pe PIN-ul Ethernet CS de 4 partide. În mod implicit este setat la modul de ieșire

// rețineți că în cazul în care nu este utilizat ca PIN-ul CS, PIN-ul SS pe echipament

// (10 pe cele mai multe placi Arduino, 53 pe Arduino Mega) ar trebui să fie lăsat în modul de ieșire.

// funcții de bibliotecă de bibliotecă altfel SD nu va funcționa.

// setare după ce nu se întâmplă nimic

Câteva note importante:

  • Puteți păstra ambele deschise mai multe fișiere și de a citi informații de la gazdă.
  • Citește () returnează bytes pe unitatea de timp. Funcția nu citește toată linia!
  • În final, este necesar să se utilizeze funcția de închidere () pentru a închide dosarul pentru a reduce cantitatea de memorie RAM.

date recursive citire / scriere din fișiere

Rulați SD → listfiles mostră schiță.

Acolo veți găsi o ANIM subfolder (există fișiere de animație). Numărul după numele fișierului descrie dimensiunea fișierului în octeți. Foarte util dacă doriți să verificați ce fișiere sunt numite de cartela.

card SD și Arduino modulul

Este demn de remarcat câteva lucruri:

Alte caracteristici utile

Există și alte funcții utile pentru lucrul cu cardul SD. Unele dintre ele, vom da mai jos:

  • Dacă doriți să verificați pentru fișierul pe mass-media, folosiți funcția SD.exists ( „filename.txt“), care se va întoarce adevărat sau fals.
  • Pentru a șterge un fișier, puteți utiliza funcția SD.remove ( „filename.txt“). Dar fii atent! Fișierul este șters complet. Nu „coș“ sau de rezervă va fi lăsată pentru a recupera.
  • Creați un subfolder, puteți utiliza funcția SD.mkdir ( "/ imya_novoy_papki"). Foarte convenabil pentru structurarea datelor la nivel primar. În cazul în care există deja un dosar cu același nume, nimic nu se va întâmpla. Nu uitați că puteți utiliza SD.exists () pentru a crea un dosar pentru revizuire.

Câteva funcții utile pentru lucrul cu fișiere:

  • Pentru a muta indicatorul la citirea / scrierea unui fișier, folosit caută funcția (). De exemplu, funcția de înregistrare ca să caute (0) va muta la începutul fișierului.
  • Funcția poziție () vă permite să știți exact unde vă aflați în fișierul în acest moment.
  • mărimea () funcție vă va aduce informații cu privire la dimensiunea fișierului în octeți.
  • Aflați dacă directorul în fișierul hartă poate fi accesat funcția isDirectory ().
  • de lucru în concordanță cu fișiere care sunt într-un dosar este implementat folosind openNextFile () funcția de apel.
  • Poate fi necesar să depună nume. De exemplu, dacă ați numit următorul fișier în folderul folosind openNextFile (). În acest caz, puteți utiliza numele (), care returnează o serie de date de caractere care pot fi afișate direct pe monitor de serie Arduino IDE folosind Serial.print ().
  • Foaie de date pe card microSD: Transcend.
  • Cea mai recentă versiune a bibliotecii bibliotecii card SD: GitHub.

ARDUINO-DIY.COM - o resursă de informații cu cele mai bune instrucțiuni și tutoriale despre utilizarea controlerului Arduino.

Întotdeauna bucuroși să coopereze în mod constructiv. Dacă aveți întrebări, comentarii și sugestii vă rugăm să e-mail [email protected].