Файл: Пояснительная записка к курсовой работе Разработка по для кодового замка по курсу Программирование микропроцессоров.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 124

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

3.2 Сетевой уровень


На основе платы ESP 8266 NodeMcu реализовать:

  1. Обработку протоколов из таблиц 1.1, 1.2 аппаратного уровня, а также осуществить поддержку протокола из таблиц 1.3 – 1.4;

  2. Подключение к внешнему серверу

  3. Обновление списка паролей;

  4. Получение конфигурации для аппаратного уровня с сервера.

Требования:

  1. Обработка запросов из таблиц 1.1 – 1.3 предусматривает использование HTTP протокола для формирования запросов на серверную часть. Для записи на сервер действий на аппаратном уровне необходимо использовать POST запрос;

  2. Данные о взаимодействиях должны содержать только уникальный идентификатор пользователя и описание действия;

  3. При запросе на получение пароля необходимо использовать GETзапрос

  4. Обновление списка паролей должно проводиться при каждой обработке пароля, а также при входе в главное меню.


Таблица 1.3 – Протокол связи с аппаратным уровнем

Запрос

value

*

Описание

Действие

Окончание

Пример

open* – разрешение на открытие двери;

close* – запрет на закрытие двери.


Таблица 1.4 – Протокол связи для обработки аппаратного уровня

Запрос

lock

Описание

Блокировка доступа к замку

Пример

lock – заблокировать возможность использования замка.



3.3 Серверный уровень


Необходимо реализовать REST API на Java 8 по взаимодействию с сетевым уровнем кодового замка.

Атрибуты пользователя:

  • Уникальный идентификатор;

  • Имя;

  • Фамилия;

  • Отчество (необязательно для заполнения).

Атрибуты конфигурации:

  • Параметр звука;

  • Параметр для отображения пароля в символьном виде;

  • Параметр для блокировки/разблокировки кодового замка.

Атрибуты истории взаимодействий:

  • Уникальный идентификатор;

  • Идентификатор пользователя;

  • Тип действия с замком.


Атрибуты списка паролей:

  • Уникальный идентификатор;

  • Тип пароля;

  • Значения пароля;

  • Уникальный идентификатор пользователя, за которым закреплён пароль.



Рисунок 1.1 – Диаграмма датологического проектирования базы данных
Методы REST API:

  1. Методы для контроллера:

    1. Получение списка паролей с уникальным идентификатором пользователя;

    2. Добавление в таблицу истории взаимодействий действий с кодовым замком;

    3. Предоставление конфигурации для кодового замка;

    4. Изменение параметра блокировки для кодового замка.

  2. Методы для главного пользователя:

    1. Регистрация пользователя. При регистрации устанавливается дата регистрации к его атрибутам;

    2. Изменение атрибутов пользователя;

    3. Добавление пароля для пользователя;

    4. Предоставление информации полным списком всех зарегистрированных пользователей;

    5. Предоставление информации о всех зарегистрированных пользователях с постраничным представлением данных;

    6. Предоставление информации ободном пользователе по уникальному идентификатору;

    7. Предоставление списка пользователей, имеющих пароли, с постраничным представлением данных;

    8. Предоставление всех пользователей, с постраничным представлением данных;

    9. Представление истории взаимодействий полным списком;

    10. Представление истории взаимодействий с постраничным представлением данных;

    11. Удаление пользователя по уникальному идентификатору;

    12. Удаление всех доступных паролей у пользователя;

    13. Открыть/заблокировать доступ к замку.

Дополнительные требования:

  1. При удалении клиента из базы данных его пароли должны удаляться из списка паролей.

Требования к реализации:

  1. Сервис должен поддерживать следующие профили:

    1. prod - конечный профиль для запуска на сервере;

    2. test - тестовый профиль для запуска в тестовом окружении;

  2. Создание таблиц базы данных должно происходить через систему управления версиями базы данных Liquibase;

  3. Должны быть предоставлены скрипты по созданию тестового набора данных таблиц;

  4. В качестве системы управления базами данных:

    1. для prod профиля должна быть использована PostgreSQL 10+;

    2. для test профиля должна быть использована H2;

  5. Работа с базой данных должна осуществляться с помощью фреймворка реализующего JPA;

  6. REST API должно быть реализовано с помощью фреймворка Spring MVC;

  7. В качестве транспортного формата данных должен использоваться JSON;

  8. В качестве библиотеки для преобразования объектов одного класса в объекты другого класса можно использовать MapStruct 1.4.2.Final в связке с Lombok;

  9. REST API должно быть задокументировано с помощью фреймворка OpenAPI.




4 ОПИСАНИЕ ИСПОЛЬЗУЕМЫХ КОМПОНЕНТОВ В
ПРОГРАММИРУЕМОЙ СИСТЕМЕ




4.1 ARDUINO UNO


Это небольшая плата с собственным процессором и памятью, которая позволяет разрабатывать на своей основе различные электронные устройства. Немаловажен тот факт, что Arduino может работать как самостоятельно, так и в паре с компьютером. Устройства на этой платформе могут получать сигналы от всевозможных датчиков и управлять разнообразными периферийными устройствами [1].

ArduinoUNO разработана на базе процессора ATmega328p с тактовой частотой 16 МГц, наделена 32 кБ памяти и имеет 20 контролируемых контактов ввода и вывода, 14 из которых являются цифровыми, а остальные 6 аналоговые. К этим контактам можно подключить различные компоненты: светодиоды, датчики, моторы и платы расширения. Так же в Arduino имеются: разъёмы USB, ICSP, разъём внешнего питания, кнопка перезагрузки и 4 светодиода (одним можно управлять). Для работы платы необходимо подключить её к компьютеру при помощи USB кабеля или подать питание при помощи адаптера AC/DC, или аккумуляторной батареей.

Рекомендуемый диапазон при работе с платой составляет 7-12В., также Arduino может функционировать и при наличии напряжения менее 7В, но в таком случае работа может быть неустойчивой, а при напряжении более 12В плата может перегреться и прийти в негодность.

На Arduino UNO имеются следующие контакты для доступа к питанию:

  • VIN. Вход применяется для подачи питания от внешнего источника (во время отсутствия 5 В от разъема USB или другого регулируемого источника питания). Подача напряжения питания происходит через данный вывод.

  • 5V. Регулируемый источник напряжения, который используется для питания микроконтроллера и компонентов на плате. Питание может подаваться от вывода VIN через регулятор напряжения, или от разъема USB, или другого регулируемого источника напряжения 5 В. Максимальный допустимый ток, получаемый с этого контакта — 800 мА.

  • 3.3V. Напряжение на выводе 3.3В генерируемое встроенным регулятором на плате. Максимальное потребление тока 50 мА.

  • GND. Выводы заземления.




Рисунок 1.2 - Arduino uno

4.2 ESP 8266 NodeMCU


Платформа на основе ESP8266 для создания различных устройств интернета вещей (IoT). Модуль умеет отправлять и получать информацию в локальную сеть либо в интернет при помощи Wi-Fi. Недорогой модуль часто используется для создания систем умного дома или роботов Arduino, управляемых на расстоянии [2].

Данный модуль имеет 128 КБ ОЗУ и 4 МБ флэш-памяти (для хранения программ и данных), достаточных, чтобы справиться с большими строками, которые составляют веб-страницы, данными в JSON/XML.

ESP8266 содержит встроенный приемопередатчик Wi-Fi 802.11b/g/nHT40, поэтому он может не только подключаться к сети Wi-Fi и взаимодействовать с интернетом, но и устанавливать собственную сеть, позволяя другим устройствам подключаться напрямую к нему.

Диапазон рабочего напряжения ESP8266 составляет от 3 В до 3,6 В, данная плата для поддержания постоянного напряжения на уровне 3,3 В поставляется с LDO стабилизатором напряжения. Он может надежно обеспечивать ток до 600 мА, чего должно быть более чем достаточно, поскольку ESP8266 во время радиочастотных передач потребляет до 80 мА. Выход стабилизатора также выводится на выводы на сторонах платы и обозначен как 3V3. Эти выводы можно использовать для подачи питания на внешние компоненты.

На Arduino UNO имеются следующие контакты для доступа к питанию:

  • VIN. Вход применяется для подачи питания от внешнего источника. Подача напряжения питания происходит через данный вывод.

  • 3V3. Напряжение на трёх выводах 3.3В генерируемое встроенным стабилизатором на плате. Максимальное потребление тока 50 мА.

  • GND. Выводы заземления.



Рисунок 1.3 - ESP 8266 NodeMCU

4.3 Дисплей LCD 2004


Жидкокристаллический дисплей (LiquidCrystalDisplay), сокращенно LCD, построен на технологии жидких кристаллов. При проектировании электронные устройства, нам необходимо недорогое устройство для отображения информации и второй не менее важный фактор наличии готовых библиотек для Arduino. Из всех доступных LCD дисплеев на рынке, наиболее часто используемой является LCD 1602A, который может отображать ASCII символы в 2 строки (20 знаков в 1 строке) каждый символ в виде матрицы 5х7 пикселей [