Програма мікроконтролера написана в середовищі Arduino. У програмі реалізується процес передачі даних, просте меню управління і вибору режиму роботи, а також простий спосіб індикації поточного серійного номера ключа за допомогою світлодіодів встановлених на платі.
Найважчим завданням при написанні програми було обчислення парності і контрольної суми даних «на льоту». Контрольний біт передається в кінці кожного напівбайту (4 біта) - це перевірка парності - означає, що передавач додає 1 до кожного напівбайту, якщо кількість одиниць в ньому непарна кількість. Наприклад, візьмемо послідовність даних, яка буде передана: 2C 0077 55A2 (HEX). До першого напівбайту «2» (0010) буде додано контрольний біт рівний 1, так система перевірки парності визначить, що кількість одиниць непарна. До наступного напівбайту «C» (1100) буде додано контрольний біт 0, тому що кількість одиниць парна.
BIN | HEX |
00101 | 2 |
11000 | C |
00000 | 0 |
00000 | 0 |
01111 | 7 |
01111 | 7 |
01010 | 5 |
01010 | 5 |
10100 | A |
00101 | 2 |
Контрольна |
Контрольна сума являє собою перевірку парності в вертикальних шпальтах. Таким чином здійснюється горизонтальна і вертикальна перевірка кожного переданого біта.
Щоб дані були коректно прийняті зчитувальних пристроєм, ключ повинен передавати їх в реальному часі (багато зчитувальних пристроїв вимагають декількох послідовних читань), а введення підпрограм і алгоритмів підрахунку може викликати тимчасові затримки, що відіб'ється на правильності даних. Завдання було вирішена за допомогою заповнення масиву бітами, які повинні будуть передаватися, коли ключ знаходиться в режимі передачі. Відповідно, розрахунки проводяться лише один раз.
Від моменту подачі живлення універсальний RFID ключ переходить в режим очікування натискання кнопки «Mode» (SW10). Поточний режим відображається 4 світлодіодами, встановленими на платі. Кожне натискання на кнопку перемикає режим, підтвердження вибору режиму здійснюється кнопкою «Enter» (SW15).
Всі дані вводяться за допомоги клавіатури. Для роботи з клавіатурою використовувалася готова бібліотека (в середовищі Aduino).
Після програмування мікроконтролера проводилися експерименти зі стандартним зчитувальним пристроєм RFID.
Завантажити:
Вихідний код програми мікроконтролера