1.45M

Разработка программного алгоритма для микроконтроллера и настройка взаимодействия с базой данных

1.

РАЗРАБОТКА ПРОТОТИПА КОНТРОЛЬНО-ПРОПУСКНОЙ
СИСТЕМЫ ВХОДА НА ПРЕДПРИЯТИЕ ПО RFID-МЕТКАМ С
БЕСКОНТАКТНЫМ КОНТРОЛЕМ ТЕМПЕРАТУРЫ
СОТРУДНИКОВ
ЧАСТЬ 2. РАЗРАБОТКА ПРОГРАММНОГО АЛГОРИТМА ДЛЯ
МИКРОКОНТРОЛЛЕРА И НАСТРОЙКА ВЗАИМОДЕЙСТВИЯ
С БАЗОЙ ДАННЫХ
Студент группы АИС-119 Кривов Егор Сергеевич
Институт прикладной математики, физики и информатики
02.03.03 – математическое обеспечение и администрирование информационных систем
Кафедра физики и прикладной математики
Профиль: проектирование и защита информационных систем и баз данных
Руководитель: к.п.н., доцент кафедры ФиПМ Касьянов Аркадий Александрович

2.

Постановка задачи
Целями данной работы является:
1) Разработка прототипа контрольно-пропускной системы
для входа на предприятие с использованием RFID-меток с
бесконтактным контролем температуры сотрудников.
2) Создание веб-сайта для управления данной
информационной системой.
2

3.

USE-CASE диаграмма контрольнопропускной системы
3

4.

Блок-схема работы контрольнопропускной системы
Начало
Общий алгоритм
A
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include
<Adafruit_MLX90614.h>
#include
<LiquidCrystal_I2C.h>
#include <Ethernet.h>
#include
<MySQL_Connection.h>
#include
<MySQL_Cursor.h>
#define RST_PIN 9
#define SS_PIN 6
IPAddress ip(192, 168, 0,
102);
IPAddress
server_addr(141, 8, 192,
136);
EthernetClient client;
MySQL_Connection
conn((Client
*)&client);
A
MFRC522
mfrc522(SS_PIN,
RST_PIN);
Adafruit_MLX90614 mlx
= Adafruit_MLX90614();
LiquidCrystal_I2C
lcd(0x27, 16, 2);
byte mac[] = { 0xDE,
0xAD, 0xBE, 0xEF,
0xFE, 0xED };
void
setup()
Функция setup()
Начало
Serial.begin(9600);
Ethernet.begin(mac, ip);
lcd.init();
lcd.backlight()
lcd.clear(); SPI.begin();
mfrc522.PCD_Init();
mlx.begin();
Конец
void
loop()
Конец
4

5.

1
Начало
2
D
-
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Wait
card....");
conn.connect(serv
er_addr, 3306, "
a0440308_diplom
a e", "user")
C
+
-
-
row_values *row =
NULL;
byte
head_count = 0;
column_names *columns
= cur_mem>get_columns();
E
+
A
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Error");
delay(2000);
E
+
-
row !=
NULL
D
-
mytemp
row = cur_mem>get_next_row();
i=0
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Incorrect");
delay(2000);
delay(3000);
mytemp =
mlx.readObjectTem
pC();
+
mfrc522.PI
CC_ReadCa
rdSerial()
+
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Get
temp");
String queryCountCard = "call
arduinoGetCountCardUser('"
+ card + "')";
cur_mem>execute(queryCountCard.c_s
tr())
E
cur_mem =
NULL;
head_co
unt == 0
MySQL_Cursor
*cur_mem = new
MySQL_Cursor(&conn);
cur_mem->execute("USE
a0440308_diploma");
mfrc522.PICC_
IsNewCardPres
ent()
i<4
4
B
F
в
byte cardUID[4] = { 0,
0, 0, 0 };
String card = "";
float mytemp = 0.0;
Блок-схема
контрольнопропускной
системы:
работа
функции
loop()
3
A
mytemp
> 37.2
mfrc522.PICC_HaltA(
);
mfrc522.PCD_StopCr
ypto1();
+
+
+
head_count =
atoi(row>values[0]);
cardUID[i] =
mfrc522.uid.uidByte[i];
card +=
String(cardUID[i], HEX);
i++
row !=
NULL
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CLOSE");
lay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("OPEN");
delay(2000);
String queryPatient = "call
arduinoSetPatient('" + card +
"','" + mytemp + "')";
cur_memф>execute(queryPatient.c_str(
));
String queryHealthy = "call
arduinoSetHealthy('" + card +
"','" + mytemp + "')";
cur_mem>execute(queryHealthy.c_str()
);
F
в
+
B
C
5

6.

ER-диаграмма базы данных
6

7.

Макеты веб-сайта
7

8.

USE-CASE диаграмма для системы
считывателя карт
8

9.

Блок-схема для системы считывателя карт
Общий алгоритм
Функция setup()
Функция loop()
Начало
EthernetClient
client =
server.available();
client
+
client.co
nnected()
+
client.av
ailable()
-
+
processClie
nt(client);
client.flush();
client.stop();
9

10.

1
4
Начало
2
memset(cardUID, 0,
sizeof(cardUID));
mfrc522.PICC_HaltA();
+
-
3
clientThread.println("H
TTP/1.1 200 OK");
clientThread.println("Co
ntent-Type: text/html");
C
mfrc522.PI
CC_ReadCa
rdSerial()
clientThread.println("Co
nnection: close");
clientThread.println();
clientThread.println("Co
nnected");
D
-
i=0
clientThread.println("H
TTP/1.1 200 OK");
clientThread.println("Co
ntent-Type: text/html");
clientThread.println("H
TTP/1.1 200 OK");
clientThread.println("Co
ntent-Type: text/html");
clientThread.println(
"Connection: close");
clientThread.println()
;
clientThread.println(
"Connection: close");
clientThread.println()
;
clientThread.
println("Card
wasn't read");
clientThread.
println(card);
E
-
i<4
E
D
-
+
+
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Wait
card....");
cardUID[i] =
mfrc522.uid.uidByte[i];
card +=
String(cardUID[i], HEX);
index = 0;
card = "";
B
+
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Card was
readed ..");
+
clientThread.println("Co
nnected");
!mfrc522.PICC
_IsNewCardPre
sent()
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Card
wasn't readed ..");
B
+
A
-
+
mfrc522.PCD_Init
();
index++;
request.indexOf("
GET
/?method=sendSig
nal") != -1
request.indexOf
("GET
/?method=getC
ard") != -1
card.equ
als("")
mfrc522.PCD_Reset(
);
String request =
clientThread.readS
tringUntil('\r');
Блок-схема
для системы
считывателя
карт - функция
processClient()
C
index == 50
mfrc522.PCD_StopCry
pto1();
mfrc522.PCD_Reset();
mfrc522.PCD_Init();
D
A
C
-
i++
clientThread.flush(
);
clientThread.stop()
;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Working
..");
Конец
10

11.

Реализация сайта
11

12.

Тестирование системы
Пример тест-плана:
Пример тест-требований:
1) Проверить,
что
при
попытке
обхода
формы
авторизации путём явного обращения к элементам
сайта по адресам происходит перенаправление на
страницу авторизации.
2) Проверить, что при неправильном вводе одного из
полей формы происходит вывод соответствующего
сообщения в форме.
3) Проверить, что при попытке получить данные карты
происходит их фактическое получение и корректная
обработка.
12

13.

Заключение
В результате выполнения выпускной квалификационной работы все
поставленные цели были выполнены.
Были решены следующие задачи:
Для микроконтроллера реализован программный алгоритм прототипа
контрольно-пропускной системы для входа на предприятие с
использованием RFID-меток с бесконтактным контролем температуры
сотрудников.
Спроектирован и разработан веб-сайт, позволяющий управлять
информационной системой.
Реализован программный алгоритм считывателя карт для взаимодействия с
веб-сайтом.
Произведено тестирование веб-сайта в связке с аппаратной платформой и
был сделан анализ полученных результатов.
13

14.

Перспективы
• Увеличение количества функции контрольно-пропускной системы;
• Оптимизация выполнения функций системы со стороны клиенты;
• Доработка графического интерфейса пользователя.
14
English     Русский Правила