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 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ę nico niżej.

Moduł czytnika kart MicroSD

Rak5Fcutd90Mq

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ę SPImagistrala SPImagistralę SPI. Większość mikrokontrolerów, w tym te wykorzystane w Arduino, posiadają sprzętową kontrolę tego interfejsu.

Ważne!

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

Specyfikacja

  • Napięcie zasilania: od 4,5 V do 5,5 V

  • Wbudowany regulator napięcia: 3,3 V na pinach SPI

  • Prąd: około 80 mA

  • Interfejs: SPI

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 poprawnego działania modułu czytnika kart microSD potrzebne są dwie biblioteki – SD oraz SPI.

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ócenia wartość false, program wykona instrukcję else.

Ważne!

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

Kod

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

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. Linia 4. const int CSPin znak równości 10 średnik. Linia 5. int czas znak równości 0 średnik. Linia 7. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik. Linia 10. pinMode otwórz nawias okrągły CSPin przecinek OUTPUT zamknij nawias okrągły średnik. Linia 12. 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 13. 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 14. return średnik. Linia 15. zamknij nawias klamrowy. Linia 16. 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. Linia 17. zamknij nawias klamrowy. Linia 19. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 20. 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 22. if otwórz nawias okrągły myFile zamknij nawias okrągły otwórz nawias klamrowy. Linia 23. myFile kropka print otwórz nawias okrągły cudzysłów Działa cudzysłów zamknij nawias okrągły średnik. Linia 24. myFile kropka println otwórz nawias okrągły czas plus plus zamknij nawias okrągły średnik. Linia 25. myFile kropka close otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 27. Serial kropka println otwórz nawias okrągły cudzysłów Dane zapisane wykrzyknik cudzysłów zamknij nawias okrągły średnik. Linia 28. zamknij nawias klamrowy. Linia 29. else otwórz nawias klamrowy. Linia 30. 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 31. zamknij nawias klamrowy. Linia 32. delay otwórz nawias okrągły 3000 zamknij nawias okrągły średnik. Linia 33. zamknij nawias klamrowy.

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

Co nam będzie potrzebne:

  • płytka stykowa,

  • przewody połączeniowe męsko‑żeńskie,

  • moduł karty microSD,

  • płytka Arduino Uno,

  • kabel USB typu A‑B do podłączenia do komputera.

R1wMIawYXQJSH

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

R16sBzHjxlvIB
Film nawiązujący do treści lekcji. Na filmie przedstawione jest okno COM6. W polu głównym wyświetlają się komunikaty. Komunikat w pierwszym wersie brzmi: „Błąd inicjalizacji karty!”, w następnych wierszach pojawia się kilkukrotnie ten sam komunikat brzmiący „Błąd otwarcia pliku!”.

Jeśli karta znajduje się w module, to w monitorze portu szeregowego pojawi się informacja o poprawnej inicjalizacji i zapisie danych na kartę.

RYKLO3JokdS21
Film nawiązujący do treści lekcji. Na filmie przedstawione jest okno COM6. W polu głównym wyświetlają się komunikaty. Komunikat w pierwszym wersie brzmi: „D!”, w drugim wierszu komunikat brzmi: „Karta została poprawnie zainicjalizowana!”, w następnych wierszach pojawia się kilkukrotnie ten sam komunikat brzmiący „Dane zapisane!”.

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

RslN40djo5vHI
W filmie przedstawiony jest ekran komputera. Użytkownik ma otwarty folder, w którym znajduje się plik o nazwie TEST. Użytkownik otwiera plik TEST, który jest arkuszem kalkulacyjnym. W kolumnie A wpisane są następujące komunikaty: w komórce A 1 „Działa 0”, w komórce A 2 „Działa 1”, w komórce A 3 „Działa 2” i tak dalej.

Czujnik temperatury i wilgotności DHT22

Rb4DiREmv0cSD1

Czujnik DHT22 wyróżnia się wśród podobnych elementów z tej serii głównie pod względem zakresów pomiarowych oraz dokładności wskazań. Jeśli chodzi o temperaturę, jest to zakres od -40Indeks górny OC do +80Indeks górny OC i całkiem duża precyzja pomiaru oraz rozdzielczość na poziomie odpowiednio: +/- 0,5Indeks górny OC i 0,1Indeks górny OC. Czas reakcji czujnika na nagłe zmiany temperatury to jedynie dwie sekundy, co umożliwia pracę nawet w bardzo dynamicznych systemach sterowania. Czujnik DHT22 działa w pełnym zakresie wilgotności względnej, czyli od 0% RH do 100% RH, zapewniając dokładność +/- 2% RH i rozdzielczość 0,1% RH. Całość (zarówno przetworniki, jak i układ pomiarowy wraz z cyfrowym interfejsem komunikacyjnym) mieści się w niewielkiej, perforowanej obudowie z tworzywa sztucznego o wymiarach zaledwie 20 x 15,1 x 7,7 mm.

Komunikacja z czujnikiem DHT22

Czujnik temperatury i wilgotności DHT22 komunikuje się z nadrzędnym mikrokontrolerem za pomocą jednoliniowego interfejsu szeregowego. Transmisję danych inicjuje master (mikrokontroler), wysyłając sekwencję stanów logicznych: L → H. Wtedy czujnik rozpoczyna nadawanie danych, zaczynając od najstarszego bitu. Ramka ma długość 40 bitów i zawiera następujące pola danych: części całkowitą i ułamkową odczytu wilgotności (po osiem bitów), części całkowitą i ułamkową odczytu temperatury (również po osiem bitów) oraz sumę kontrolną (jeden bajt). Wartości stanów logicznych (bity 0 i 1) są kodowane jako dwufazowe impulsy o zróżnicowanym czasie trwania (stan L przez 50 µs i następujący po nim stan H przez czas 26‑28 µs oznacza logiczne zero; logiczna jedynka jest kodowana przez impuls „H” o czasie trwania 70 µs). Aby na szynie danych nie doszło do kolizji, linia GPIO mikrokontrolera przeznaczona do pracy w roli wejścia/wyjścia danych powinna być skonfigurowana jako wyjście typu otwarty dren (OD).

Specyfikacja

  • Napięcie zasilania: od 3,3 V do 6 V

  • Średni pobór prądu: 0,2 mA

Temperatura:

  • Zakres pomiarowy: -40 do 80 °C

  • Rozdzielczość: 8 bitów (0,1 °C)

  • Dokładność: ± 0,5 °C

  • Czas odpowiedzi: średnio 2 s

Wilgotność:

  • Zakres pomiarowy: 0 - 100 % RH

  • Rozdzielczość: 8 bitów (±0,1 % RH)

  • Dokładność ±2 %RH*

  • Czas odpowiedzi: średnio 2 s

Połączenie z Arduino

  • VCC – 5V Arduino

  • SDA – dowolny pin cyfrowy Arduino

  • GND – GND Arduino

Program testowy

Do poprawnego działania czujnika potrzebna jest biblioteka DHT.

Biblioteka do obsługi czujnika:

R14blEg64VPTA

Plik z biblioteką czytnika kart.

Plik ZIP o rozmiarze 2.42 KB w języku polskim

Po pobraniu biblioteki należy ją zainstalować w Arduino IDE.

Najpierw dołączamy bibliotekę DHT.

Linia 1. kratka include cudzysłów dht kropka h cudzysłów.

Następnie tworzymy nowy obiekt.

Linia 1. dht DHT22 średnik.

Definiujemy pin Arduino, do którego wpięty jest czujnik.

Linia 1. kratka define DHT22PIN 7.

W pętli setup() inicjujemy połączenie z monitorem portu szeregowego z prędkością 115200 bodów i wyświetlamy tekst startowy programu.

Linia 1. Serial kropka begin otwórz nawias okrągły 115200 zamknij nawias okrągły średnik. Linia 2. Serial kropka println otwórz nawias okrągły cudzysłów Program testowy do czujnika DHT22 cudzysłów zamknij nawias okrągły średnik. Linia 3. Serial kropka println otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły średnik.

W pętli loop() sprawdzamy stan sensora i wyświetlamy odpowiedni komunikat.

Linia 1. int chk znak równości DHT22 kropka read otwórz nawias okrągły DHT22PIN zamknij nawias okrągły średnik. Linia 3. Serial kropka print otwórz nawias okrągły cudzysłów Stan sensora dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 4. switch otwórz nawias okrągły chk zamknij nawias okrągły otwórz nawias klamrowy. Linia 6. case DHTLIB podkreślnik OK dwukropek. Linia 7. Serial kropka print otwórz nawias okrągły cudzysłów OK cudzysłów zamknij nawias okrągły średnik. Linia 8. Serial kropka print otwórz nawias okrągły cudzysłów kreska pionowa cudzysłów zamknij nawias okrągły średnik. Linia 9. break średnik. Linia 10. case DHTLIB podkreślnik ERROR podkreślnik CHECKSUM dwukropek. Linia 11. Serial kropka println otwórz nawias okrągły cudzysłów Błąd sumy kontrolnej cudzysłów zamknij nawias okrągły średnik. Linia 12. break średnik. Linia 13. case DHTLIB podkreślnik ERROR podkreślnik TIMEOUT dwukropek. Linia 14. Serial kropka println otwórz nawias okrągły cudzysłów Koniec czasu oczekiwania minus brak odpowiedzi cudzysłów zamknij nawias okrągły średnik. Linia 15. break średnik. Linia 16. default dwukropek. Linia 17. Serial kropka println otwórz nawias okrągły cudzysłów Nieznany błąd cudzysłów zamknij nawias okrągły średnik. Linia 18. break średnik. Linia 19. zamknij nawias klamrowy.

Ostatnia rzecz, jaką musimy zrobić, to wyświetlić wartości pomiarowe.

Linia 1. Serial kropka print otwórz nawias okrągły cudzysłów Wilgotnosc dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 2. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły float zamknij nawias okrągły DHT22 kropka humidity przecinek 2 zamknij nawias okrągły średnik. Linia 3. Serial kropka print otwórz nawias okrągły cudzysłów procent cudzysłów zamknij nawias okrągły średnik. Linia 4. Serial kropka print otwórz nawias okrągły cudzysłów kreska pionowa cudzysłów zamknij nawias okrągły średnik. Linia 5. Serial kropka print otwórz nawias okrągły cudzysłów Temperatura dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 6. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły float zamknij nawias okrągły DHT22 kropka temperature przecinek 2 zamknij nawias okrągły średnik. Linia 7. Serial kropka println otwórz nawias okrągły cudzysłów st kropka C cudzysłów zamknij nawias okrągły średnik.

Kod

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

Linia 1. kratka include cudzysłów dht kropka h cudzysłów. Linia 3. dht DHT22 średnik. Linia 5. kratka define DHT22PIN 7. Linia 7. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. Serial kropka begin otwórz nawias okrągły 115200 zamknij nawias okrągły średnik. Linia 9. Serial kropka println otwórz nawias okrągły cudzysłów Program testowy do czujnika DHT22 cudzysłów zamknij nawias okrągły średnik. Linia 10. Serial kropka println otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły średnik. Linia 11. zamknij nawias klamrowy. Linia 13. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 14. int chk znak równości DHT22 kropka read otwórz nawias okrągły DHT22PIN zamknij nawias okrągły średnik. Linia 16. Serial kropka print otwórz nawias okrągły cudzysłów Stan sensora dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 17. switch otwórz nawias okrągły chk zamknij nawias okrągły otwórz nawias klamrowy. Linia 19. case DHTLIB podkreślnik OK dwukropek. Linia 20. Serial kropka print otwórz nawias okrągły cudzysłów OK cudzysłów zamknij nawias okrągły średnik. Linia 21. Serial kropka print otwórz nawias okrągły cudzysłów kreska pionowa cudzysłów zamknij nawias okrągły średnik. Linia 22. break średnik. Linia 23. case DHTLIB podkreślnik ERROR podkreślnik CHECKSUM dwukropek. Linia 24. Serial kropka println otwórz nawias okrągły cudzysłów Błąd sumy kontrolnej cudzysłów zamknij nawias okrągły średnik. Linia 25. break średnik. Linia 26. case DHTLIB podkreślnik ERROR podkreślnik TIMEOUT dwukropek. Linia 27. Serial kropka println otwórz nawias okrągły cudzysłów Koniec czasu oczekiwania minus brak odpowiedzi cudzysłów zamknij nawias okrągły średnik. Linia 28. break średnik. Linia 29. default dwukropek. Linia 30. Serial kropka println otwórz nawias okrągły cudzysłów Nieznany błąd cudzysłów zamknij nawias okrągły średnik. Linia 31. break średnik. Linia 32. zamknij nawias klamrowy. Linia 34. Serial kropka print otwórz nawias okrągły cudzysłów Wilgotność dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 35. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły float zamknij nawias okrągły DHT22 kropka humidity przecinek 2 zamknij nawias okrągły średnik. Linia 36. Serial kropka print otwórz nawias okrągły cudzysłów procent cudzysłów zamknij nawias okrągły średnik. Linia 37. Serial kropka print otwórz nawias okrągły cudzysłów kreska pionowa cudzysłów zamknij nawias okrągły średnik. Linia 38. Serial kropka print otwórz nawias okrągły cudzysłów Temperatura dwukropek cudzysłów zamknij nawias okrągły średnik. Linia 39. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły float zamknij nawias okrągły DHT22 kropka temperature przecinek 2 zamknij nawias okrągły średnik. Linia 40. Serial kropka println otwórz nawias okrągły cudzysłów st kropka C cudzysłów zamknij nawias okrągły średnik. Linia 42. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik. Linia 43. zamknij nawias klamrowy.

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

Co nam będzie potrzebne:

  • płytka stykowa,

  • przewody połączeniowe męsko‑męskie,

  • czujnik DHT22,

  • rezystor 4,7 komega,

  • płytka Arduino Uno,

  • kabel USB typu A‑B do podłączenia do komputera.

R1C7WEPpH4lA3

Po uruchomieniu monitora portu szeregowego należy zmienić prędkość na 115200 bodów. Po zmianie prędkości nasze informacje będą poprawnie wyświetlane.

RB85d1cbvgKNm
Film nawiązujący do treści lekcji. Na filmie przedstawione jest okno COM6. W polu głównym wyświetlają się komunikaty składające się z różnych liczb, liter, znaków. Użytkownik wybiera w prawym dolnym roku jedną z trzech opcji. Od lewej znajdują się następujące listy wyboru: Nowa linia, 9600 baud oraz Wyczyść okno. Użytkownik wybiera środkowe pole, zmieniające parametr z 9600 baud na 115200 baud. Następnie wyświetlają się kolejne komunikaty. W drugim wierszu pojawia się długa przerywana linia, w kolejnych wierszach pojawiają się komunikaty pomiarowe. Od góry są one następujące: „Stan sensora: OK | Wilgotność: 35.00 % | Temperatura: 26.10 st. C”, „Stan sensora: OK | Wilgotność: 35.10 % | Temperatura: 26.10 st. C”, „Stan sensora: OK | Wilgotność: 35.10 % | Temperatura: 26.10 st. C”, „Stan sensora: OK | Wilgotność: 35.20 % | Temperatura: 26.10 st. C” i tak dalej. W dalszych wierszach zauważamy zwiększoną wilgotność, mianowicie: „Stan sensora: OK | Wilgotność: 54.20 % | Temperatura: 26.30 st. C”, a dalej „Stan sensora: OK | Wilgotność: 97.90 % | Temperatura: 26.60 st. C”. Maksymalna wartość wilgotności to „Stan sensora: OK | Wilgotność: 99.90 % | Temperatura: 26.50 st. C”. Po tym pomiarze wilgotność maleje, a ostatni pomiar zawiera też najwyższą zmierzoną temperaturę: „Stan sensora: OK | Wilgotność: 62.10 % | Temperatura: 26.60 st. C”.

Jeśli Arduino nie wykryje czujnika, pojawi się komunikat o braku odpowiedzi.

R1GXM1E4EGJtI
Film nawiązujący do treści lekcji. Na filmie przedstawione jest okno COM6. W polu głównym wyświetla się wielokrotnie w kolejnych wierszach następujący komunikat: „Stan sensora: Koniec czasu oczekiwania – brak odpowiedzi, Wilgotność: minus 999.00 % | Temperatura: minus 999.00 st. C”.

Słownik

format FAT32
format FAT32

odmiana systemu plików FAT, po raz pierwszy zastosowany w systemie operacyjnym Windows 95 OSR2, jego poprzednikiem jest FAT16

magistrala SPI
magistrala SPI

(ang. Serial Peripheral Interface) - jeden z trzech najważniejszych interfejsów komunikacyjnych obok I2C oraz UART; jest to interfejs typu full‑duplex, umożliwiający jednoczesne wysyłanie i odbieranie danych; SPI to interfejs synchroniczny, a więc jednym z przewodów przesyłany jest sygnał zegarowy synchronizujący wszystkie układy

AVR
AVR

typ ośmiobitowych mikrokontrolerów produkowanych przez firmę Atmel