Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot_c:exp37 [2024/12/04 16:42] – [Эксперимент 37. RFID] labuser30 | products:laboratory_iot_c:exp37 [2024/12/04 17:20] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 11: | Строка 11: | ||
| В комплект нашего конструктора (в версии MAXI) входит RFID считыватель и две метки — одна в формате карты, вторая в виде брелока. | В комплект нашего конструктора (в версии MAXI) входит RFID считыватель и две метки — одна в формате карты, вторая в виде брелока. | ||
| - | Проведем эксперимент с RFID. Для работы с модулем приемника нам потребуется специальная библиотека " | + | Проведем эксперимент с RFID. Для работы с модулем приемника нам потребуется специальная библиотека " |
| - | [[products: | + | [[products: |
| - | {{ products: | + | |
| - | + | ||
| - | В этом архиве находятся два файла mfrc522.py и mfrc522.mpy. Это одна и та же библиотека, | + | |
| - | + | ||
| - | Дело в том, что мы пишем программу на понятном человеку языке, в котором есть понятные по названию переменные, | + | |
| - | файл '' | + | |
| ==== Схема эксперимента ==== | ==== Схема эксперимента ==== | ||
| Строка 46: | Строка 40: | ||
| void setup() { | void setup() { | ||
| Serial.begin(9600); | Serial.begin(9600); | ||
| + | Serial.println(); | ||
| SPI.begin(); | SPI.begin(); | ||
| rdr.PCD_Init(); | rdr.PCD_Init(); | ||
| Строка 60: | Строка 55: | ||
| Подключаем библиотеку для работы со считывателем RFID меток | Подключаем библиотеку для работы со считывателем RFID меток | ||
| - | < | + | < |
| - | import mfrc522 | + | #include < |
| </ | </ | ||
| - | Создаем объект считывателя, | + | Задаем псевдонимы для пинов, к которым подключен считыватель: |
| + | <code arduino[enable_line_numbers=" | ||
| + | #define PIN_SS | ||
| + | #define PIN_RST 16 | ||
| + | </ | ||
| + | |||
| + | Создаем объект считывателя, | ||
| <code python[enable_line_numbers=" | <code python[enable_line_numbers=" | ||
| - | rdr = mfrc522.MFRC522(0, 2, 12, 13, 14) #sck, mosi, miso, rst, sda | + | MFRC522 |
| </ | </ | ||
| - | В основном | + | Далее мы определили функцию '' |
| - | <code python[enable_line_numbers=" | + | <code python[enable_line_numbers=" |
| - | (stat, tag_type) = rdr.request(rdr.REQIDL) | + | String bytesToString(byte *bytes, byte size) { |
| + | String str; | ||
| + | for (byte i = 0; i < size; i++) { | ||
| + | str += bytes[i] < 0x10 ? " | ||
| + | str += String(bytes[i], HEX); | ||
| + | } | ||
| + | return str; | ||
| + | } | ||
| </ | </ | ||
| - | Если обнаружена метка, то запрашиваем номер | + | Инициализируем шину SPI и считыватель меток: |
| - | < | + | < |
| - | (stat, raw_uid) = rdr.anticoll() | + | |
| + | | ||
| </ | </ | ||
| - | Формируем строку с номером карты для отображения пользователю | + | В основном цикле мы сначала проверяем приложена ли метка с считывателю, если нет начинаем цикл сначала. Аналогично |
| - | < | + | < |
| - | | + | if (!rdr.PICC_IsNewCardPresent()) return; |
| + | if (!rdr.PICC_ReadCardSerial()) return; | ||
| </ | </ | ||
| - | Метод '' | + | Если считывание метки было |
| - | + | < | |
| - | < | + | |
| - | print("Card detected: " + card_number) | + | |
| </ | </ | ||
| + | |||
| Оператор '' | Оператор '' | ||
| + | |||
| + | Функция '' | ||
| + | <code arduino[enable_line_numbers=" | ||
| + | rdr.PICC_HaltA(); | ||
| + | </ | ||
| <WRAP center round info 60%> | <WRAP center round info 60%> | ||
| - | [[https://pythonworld.ru/osnovy/formatirovanie-strok-metod-format.html|Подробнее о format()]] | + | * [[https://arduino.ru/Reference/StringObject|Подробнее о строках в Arduino]] |
| </ | </ | ||
| - | |||