R1CylcNdFJIjj
Zdjęcie przedstawia główny moduł Arduino, do którego podpięte są przewody połączeniowe łączące go z płytką stykową.

I_R_W15_M03 Przykładowe projekty

Moduł czytnika kart MicroSD

Karty SD pozwalają na zapisywanie i prowadzenie rejestru odczytanych danych. Taki sposób przetwarzania danych stosuje się w urządzeniach, w skład których wchodzą m.in:

  • moduł GPS do zbierania danych dotyczących położenia;

  • stacja pogodowa do zapisywania danych na temat temperatury, opadów itp.;

  • systemy pomiarowe zbierające dane odnośnie odległości, odchyleń itp.

Jedną z najczęściej mierzonych wartości nieelektrycznych we wszystkich dziedzinach elektroniki jest temperatura. Jej pomiary są podstawą regulacji powietrza w pomieszczeniach przez różnego rodzaju systemy grzewcze, klimatyzatory, wentylatory itp., oraz monitorowania warunków panujących na zewnątrz przez stacje pogodowe. Sam pomiar temperatury zazwyczaj jest wystarczający, jednak bardziej skomplikowane systemy wymagają dokładniejszej informacji na temat warunków środowiska. Dobrym rozwiązaniem jest stosowanie zintegrowanych czujników, które umożliwiają jednoczesny pomiar zarówno temperatury powietrza, jak i wilgotności. Należą do nich sensory z serii DHT, w tym niewielki, cyfrowy czujnik temperatury i wilgotności DHT22, którym zajmiemy się później.

Moduł ten zawiera wszystkie potrzebne elementy, aby można było komunikować się z kartą microSD poprzez np. Arduino. Karty SD komunikują się poprzez magistralę SPI. Większość mikrokontrolerów, w tym te wykorzystane w Arduino, posiadają sprzętową kontrolę tego interfejsu.

R1DPUS155VQSM
Źródło: Contentplus.pl Sp. z o.o., Moduł czytnika kart MicroSD.
Ważne!

Stosując kartę SD, należy pamiętać, aby była ona sformatowana w formacie FAT32.

Specyfikacja:

Budujemy układ

Podłącz układ według poniższego schematu, wgraj kod i przetestuj działanie programu.

Co nam będzie potrzebne:
R1QQ1X1NHGNA3
Schemat ideowy
Źródło: Contentplus.pl Sp. z o.o., Układ ideowy.

Połączenie z Arduino:

  • MOSI – pin 11 Arduino,

  • MISO – pin 12 Arduino,

  • CLK – pin 13 Arduino,

  • CS – pin 10 Arduino,

  • VCC – 5 V Arduino,

  • GNG – GND Arduino.

Program zapisu na kartę

Do obsługi dodatkowych elementów podłączonych do Arduino, takich jak karta pamięci microSD, potrzebne są odpowiednie biblioteki. W tym przypadku wykorzystujemy dwie biblioteki: SD oraz SPI.

Biblioteka SD zawiera gotowe funkcje umożliwiające między innymi tworzenie plików, zapisywanie danych na karcie oraz ich odczytywanie. Biblioteka SPI odpowiada natomiast za komunikację pomiędzy Arduino a modułem karty SD. Dzięki zastosowaniu tych bibliotek obsługa karty pamięci jest znacznie prostsza i nie wymaga samodzielnego programowania całego sposobu komunikacji z modułem.

Poniżej możesz pobrać obie biblioteki potrzebne do wykonania ćwiczenia.

Biblioteka do obsługi karty SD:

Rrxof1ti6TxnL

Plik z biblioteką do obsługi kart SD.

Plik ZIP o rozmiarze 65.27 KB w języku polskim

Biblioteka do obsługi komunikacji SPI:

R13z6CQOiNNcj

Plik z biblioteką SPI

Plik ZIP o rozmiarze 24.68 KB w języku polskim

Po pobraniu bibliotek instalujemy je w Arduino IDE.

Na początku dołączamy potrzebne biblioteki do szkicu.

Linia 1. kratka include otwórz nawias ostrokątny SD kropka h zamknij nawias ostrokątny. Linia 2. kratka include otwórz nawias ostrokątny SPI kropka h zamknij nawias ostrokątny.

W celu poprawnej inicjalizacji karty SD należy w programie wprowadzić w pętli setup() poniższe komendy. Instrukcja warunkowa if() sprawdza, czy karta jest wykrywana. Jeśli nie, następuje wyświetlenie informacji poprzez port szeregowy i przerwanie wykonywania programu. Jeśli karta zostanie rozpoznana, program nie wejdzie do instrukcji i wyświetli napis znajdujący się poza nią.

Linia 1. if otwórz nawias okrągły wykrzyknik SD kropka begin otwórz nawias okrągły CSPin zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. Serial kropka println otwórz nawias okrągły cudzysłów Błąd inicjalizacji karty wykrzyknik cudzysłów zamknij nawias okrągły średnik. Linia 3. return średnik. Linia 4. zamknij nawias klamrowy. Linia 5. Serial kropka println otwórz nawias okrągły cudzysłów Karta została poprawnie zainicjalizowana wykrzyknik cudzysłów zamknij nawias okrągły średnik.

W pętli loop() wpisujemy komendy zapisu tekstu na kartę microSD.

Linia 1. File myFile znak równości SD kropka open otwórz nawias okrągły cudzysłów test kropka csv cudzysłów przecinek FILE podkreślnik WRITE zamknij nawias okrągły średnik. Linia 3. if otwórz nawias okrągły myFile zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. myFile kropka print otwórz nawias okrągły cudzysłów Działa cudzysłów zamknij nawias okrągły średnik. Linia 5. myFile kropka println otwórz nawias okrągły czas plus plus zamknij nawias okrągły średnik. Linia 6. myFile kropka close otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 8. Serial kropka println otwórz nawias okrągły cudzysłów Dane zapisane wykrzyknik cudzysłów zamknij nawias okrągły średnik. Linia 9. zamknij nawias klamrowy. Linia 10. else otwórz nawias klamrowy. Linia 11. Serial kropka println otwórz nawias okrągły cudzysłów Błąd otwarcia pliku wykrzyknik cudzysłów zamknij nawias okrągły średnik. Linia 12. zamknij nawias klamrowy.

Polecenie SD.open otwiera plik o podanej nazwie, a jeśli taki plik nie istnieje, zostanie dzięki temu poleceniu utworzony. Gdy plik jest już otwarty (lub utworzony), program wchodzi do instrukcji warunkowej if(), gdzie następuje wpisanie jej do pliku. Jeśli zaś zostanie zwrócona wartość false, program wykona instrukcję else.

Ważne!

Po otwarciu plik musi zostać zamknięty - w przeciwnym razie dane nie będą poprawnie wprowadzone.

Całość kodu wygląda następująco:

Gotowy szkic

Jeśli karta nie znajduje się w module, w monitorze portu szeregowego pojawi się informacja o błędnej inicjalizacji karty.

Po włożeniu karty do komputera widzimy, że na karcie znajduje się plik TEST.CSV. Po jego otwarciu możemy zobaczyć zapisane dane.