Interfejs SPI – moduł RFID
Wstęp
Skonfigurować projekt z płytką Nucleo L432 jak na poprzednich zajęciach i dodatkowo:
- obsługa komunikacji po UART (USART2)
- dioda LED na pinie PB3
- uruchomić interfejs komunikacyjny SPI1 – zakładka “Connectivity”, ustawić SPI1 na Mode Full-Duplex Master, ustawić w Parameter Settings Data Size na 8 Bits
- ustawić pin PA5 jako wyjście z pull-UP, nadać nazwę SPI1_CS
- zapoznać się z modułem czytnika kart RFID MFRC522: link do dokumentacji
- podłączyć czytnik RFID do Nucleo według tabeli:
Opis | Płytka NUCLEO | Moduł RFID-MFRC522 |
Zasilanie +3.3V | 3V3 | 3.3V |
Zasilanie GND | GND | GND |
MISO | A5 | MISO |
MOSI | A6 | MOSI |
SCK | A1 | SCK |
CS | A4 | SDA |
Zadanie 1
- narysować schemat połączeń pomiędzy mikrokontrolerm i modułem RFID
- opisać funkcje poszczególnych połączeń
Zadanie 2
- wgrać biblioteki do obsługi moduły RFID do projektu (plik “MFRC522.h” do folderu Inc a plik “MFRC522.c” do folderu Src) – biblioteka
- dodać do pliku “main.c” zamiast pętli “While” poniższy kod programu, przetestować działanie przez przykładanie różnych kart RFID
- co robi przykładowy kod? jakie informacje są odczytywane z kart RFID?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
MFRC522_Init(&hspi1); char str1[100]; uint8_t cardstr[20]; uint8_t status = 0; while (1) { status = MFRC522_Request(PICC_REQIDL, &(cardstr[0])); if (status == MI_OK) { status = MFRC522_Anticoll(&(cardstr[0])); if (status == MI_OK) { sprintf(str1, "Card:%x,%x,%x,%x,%x\r\n", cardstr[0], cardstr[1], cardstr[2], cardstr[3], cardstr[4]); HAL_UART_Transmit(&huart2, str1, strlen(str1), 500); } } HAL_Delay(1000); } |
Zadanie 3
- na bazie poprzedniego czytnika kart RFID utworzyć system alarmowy
- zapisać w pamięci numery dwóch kart, które pozwalają uzbroić/rozbroić alarm.
- alarm po uzbrojeniu jest aktywny i sygnalizuje to mrugając diodę LED
- alarm po rozbrojeniu nie jest aktywny i dioda LED jest wyłączona
- każde przyłożenie karty powoduje jej odczyt, jeśli karta jest zapisana to następuje uzbrojenie/rozbrojenie alarmu (przeciwny stan niż był)
- wszystkie informacje jak rozbrojenie, uzbrojenie, błędny kod karty, prawidłowy kod karty itd. powinny być wyświetlane na terminalu komputerowym
Zadanie 4
- rozbudować alarm o możliwość dodawania/usuwania kolejnych kart RFID
- maksymalnie obsługujemy 3 karty
- wywoływanie funkcji dodawania/odejmowania karty należy wykonać za pomocą komend z terminala (program powinien mieć menu z opis dostępnych opcji)
- przykład działania: przyciskamy “g”, jeśli jakiś slot pamięci jest wolny to program prosi o przyłożenie nowej karty i zapisuje numery w wolnym slocie. Jeśli brak wolnego slotu to program wyświetla odpowiedni komunikat. Po przyciśnięciu “d” program prosi o podanie numeru slotu do skasowania, wpisujemy “1”, program kasuje kartę z pierwszego slotu itd.