Розробка системи безпеки на основі платформи Arduino

Проект апаратно-програмної системи безпеки приміщення на платформі Arduino та сумісних з нею периферійних пристроїв. Аналіз середовища розробки. Створення схем підключення периферійних пристроїв та плати-мікроконтролера. Розробка програмного коду.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 24.05.2023
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Тепер необхідно визначиться з набором фраз, які знадобляться для проєкту охоронної сигналізації.

Нижче наведено перелік, який буде використовуватися для побудови голосового меню:

1. З'єднання з сигналізацією встановлено.

2. Систему поставлено під охорону.

3. Систему знято з охорони.

4. Увага. Тривога. Зафіксовано проникнення.

5. Навантаження номер один увімкнено.

6. Навантаження номер один вимкнено.

7. Навантаження номер два увімкнено.

8. Навантаження номер два вимкнено.

9. Заряд батареї в нормі.

10. Низький заряд батареї.

Коли з текстом покінчено, необхідно перетворити написане на звуковий файл формату MP3. Для цього є кілька способів. Можна просто надиктувати фрази на комп'ютерний мікрофон, а можна використовувати сторонній сервісинтезатор мови. Для нашого проєкту було обрано другий спосіб, як найприйнятніший у відповідних умовах. У підсумку виконаної роботи вийшов набір із 10 AMR-файлів, які мають загальний розмір 45,6 кБ, проти 254 кБ для формату MP3.

Завантаження звукових файлів у пам'ять SIM800L

Для завантаження AMR-файлів у пам'ять модуля нам знадобиться спеціальна програма. Утиліта дає змогу з'єднатися з SIM800L через COM-порт з метою передачі списку заздалегідь підготовлених файлів. Зовнішній вигляд програми показано на рисунку 3.17.

Під час роботи з програмою слід закрити монітор порту середовища Arduino IDE, щоб звільнити зайнятий ним СОМ-порт, як зображено на рисунку 3.17.

Рисунок 3.17 Завантажені файли. Джерело: складено автором

Також звертаємо увагу на швидкість обміну даними. Перед записом слід додати ARM-файли в центральне вікно за допомогою кнопки Add. Відповідно, видалення файлу зі списку здійснюється кнопкою Del.

Після того, як список сформовано, подаємо живлення на схему, очікуємо 5 секунд, поки ініціалізується SIM800L і натискаємо кнопку Start. Починається процес запису, що йде по ланцюгу: Sim800 Series AmrFile Downloader V1.00 > Arduino Nano > SIM800L. У нижній частині вікна відображається номер файлу, що записується в даний момент, і рівень прогресу.

3.2 Розробка програми

Перш ніж почати програмувати, слід визначити низку основних вимог до проекту у вигляді загального технічного завдання. Отже, після подачі живлення сигналізація намагається встановити зв'язок із мережею мобільного оператора. При цьому світлодіод блимає синім кольором. Якщо ініціалізація пройшла успішно - загоряється зелений світлодіод. У разі, коли мережа недоступна, світлодіод горить червоним кольором.

Якщо початковий етап пройдено успішно, сигналізація очікує введення команди з клавіатури або дзвінка із заздалегідь визначеного номера.

Постановка об'єкта під охорону здійснюється шляхом натискання # на матричній клавіатурі або відповідної клавіші мобільного телефону в разі встановленого з'єднання. У разі використання матричної клавіатури, сигналізація стане активною після закінчення 20 сек, щоб людина могла вчасно покинути приміщення, що охороняється. Свідченням того, що об'єкт перебуває під охороною, є миготіння червоного світлодіода з періодом 1 раз на секунду. Зняття об'єкта з охорони також можна виконати двома способами, а саме: ведення секретного коду на клавіатурі та натискання * на мобільному телефоні під час сеансу мобільного зв'язку з блоком керування. У разі керування клавіатурою перед кожним введенням пароля слід натиснути кнопку*, а також у разі неправильного введення символу. Натискання цієї кнопки скидає буфер пароля і його можна вводити повторно.

Будь-який дозвон на блок сигналізації супроводжується голосовим привітанням. Після з'єднання, крім встановлення і зняття з охорони об'єкта, користувач може керувати двома навантаженнями. Увімкнення і вимкнення першого навантаження можна виконати кнопками 1 (увімкнути) і 4 (вимкнути) на мобільному телефоні. Керування другим навантаженням здійснюється кнопками 2 (увімкнути) і 5 (вимкнути). Кожен крок супроводжується звуковим підтвердженням голосового меню.

Натискання на телефоні цифри 3 призведе до вимірювання напруги батареї з подальшим повідомленням результату (в нормі/розряджена).

У разі проникнення, блок сигналізації зателефонує на телефон користувача і повідомить про проникнення на територію, що охороняється.

Після того, як технічне завдання внесло невелику ясність в алгоритм роботи охоронної системи, саме час писати і тестувати код. У Додатку А наведено лістинг програми з докладними коментарями, можливо підлаштувати скетч під себе або його модернізувати. Зрештою, система дуже гнучка і розширювати її функціонал можна до нескінченності.

Висновки

Була створена недорога апаратно-програмна розумна систему безпеки приміщення. Для досягнення цієї мети було виконано декілька завдань. Зокрема, проведений аналіз поняття систем безпеки та описано сучасні технології, що використовуються для їх створення. Також було проаналізовано необхідні та бажані функції, що необхідні для забезпечення стану захищеності, та розглянуто готові рішення на ринку.

Далі, було проаналізовано середовище розробки та інші системи, що необхідні для написання програми та створення такої системи безпеки. Були створені функціональна та принципова схеми підключень периферійних пристроїв та плати-мікроконтролера. Також був написаний програмний код апаратної частини системи безпеки у середовищі Arduino IDE.

Отже, загалом, був виконан комплекс завдань, необхідних для створення недорогої апаратно-програмної розумної системи безпеки приміщення.

В рамках дипломного проекту була розроблена система безпеки для приміщень, що забезпечує контроль за станом захищеності та можливість сповіщення власника про незаконне проникнення. Для цього було використано плату Arduino Uno R3 та різноманітні датчики, такі як датчики руху та датчики закритості дверей та вікон. Також система має можливість віддаленого керування за допомогою додатку на платформі Android. Розроблена система може бути використана для забезпечення безпеки не тільки в житлових будинках, а й в офісах, підприємствах та інших приміщеннях.

Список використаних джерел

1. Поняття та система безпеки. [Електронний ресурс].

2. Сучасні системи безпеки. [Електронний ресурс]

3. Дротова та бездротова мережа. [Електронний ресурс]

4. Поняття хмарних обчислень: основні моделі та характеристики. [Електронний ресурс]

5. Розумний будинок. [Електронний ресурс]

6. Системи забезпечення інформаційної безпеки. [Електронний ресурс]

7. Arduino основи програмування. [Електронний ресурс]

8. Система домашней безопасности в реальном времени на базе Arduino Uno. [Електронний ресурс]

9. Програмування Ардуїно. [Електронний ресурс]

10. Using the Serial Monitor tool. [Електронний ресурс]

11. Використання платформи ARDUINO для професійної підготовки майбутніх інженерів-педагогів. [Електронний ресурс]

12. Програмування ARDUINO. [Електронний ресурс]

13. Вивчення платформи Arduino. [Електронний ресурс]

14. Структура программы для Arduino. [Електронний ресурс]

15. Уроки Arduino. [Електронний ресурс]

16. Блок живлення Biom DC12 60W 5А TR60-12. [Електронний ресурс]

17. Акумулятор Samsung 18650 4.2V 2550mAh. [Електронний ресурс]

18. Модуль з динаміком KY-006 (пасивний). [Електронний ресурс]

Додаток А

#include <SoftwareSerial.h>

SoftwareSerial SIM800L(11, 10); // RX, TX

#include <Keypad.h>

const byte ROWS = 4;

const byte COLS = 3;

char keys[ROWS][COLS] = {

{'1','2','3'},

{'4','5','6'},

{'7','8','9'},

{'*','0','#'}

};

byte rowPins[ROWS] = {9, 8, 7, 6};

byte colPins[COLS] = {5, 4, 3

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS,

COLS );

#define PIN_LED_RED A2

#define PIN_LED_GREEN A1

#define PIN_LED_BLUE A0

#define PIN_RELAY_1 12

#define PIN_RELAY_2 13

#define PIN_BUZZER 2

#define PIN_SECURITY_LOOP_1 A3

#define PIN_SECURITY_LOOP_2 A4

#define PIN_SECURITY_LOOP_3 A5

#define PIN_SECURITY_LOOP_4 A6

#define PIN_BAT A7

uint8_t globalState = 0;

String _response = "";

bool flagAlarm = false;

bool securityState = 0;

int defaultSL[4];

int passwordIndex = -1;

char key;

uint8_t accessPassword[7] = {7, 6, 5, 4, 3, 2, 1};

uint8_t tempPassword[7] = {0, 0, 0, 0, 0, 0, 0};

uint32_t tmpTimer = 0;

String waitResponse() {

String _resp = "";

long _timeout = millis() + 10000;

while (!SIM800L.available() && millis() < _timeout) {};

if (SIM800L.available())

{

_resp = SIM800L.readString();

}

else {

Serial.println("Timeout...");

}

return _resp;

}

String sendATCommand(String cmd, bool waiting) {

String _resp = "";

Serial.println(cmd);

SIM800L.println(cmd);

if (waiting) {

_resp = waitResponse();

if (_resp.startsWith(cmd)) {

_resp = _resp.substring(_resp.indexOf("\r\n", cmd.length()) + 2);

}

Serial.println(_resp);

}

return _resp;

}

bool enterPassword() {

if(key == '*') {

for(uint8_t i = 0; i < 7; i++) tempPassword[i] = 0;

passwordIndex = -1;

}

else if(key == '#') {

if(passwordIndex == 6) return 1;

}

else {

if(passwordIndex <= 6) {

if(passwordIndex < 6) passwordIndex++;

tempPassword[passwordIndex] = (key - 48);

}

}

return 0;

}

void setup() {

// Настройка периферии

pinMode(PIN_LED_RED, OUTPUT); digitalWrite(PIN_LED_RED,

LOW);

pinMode(PIN_LED_GREEN, OUTPUT); digitalWrite(PIN_LED_GREEN,

LOW);

pinMode(PIN_LED_BLUE, OUTPUT); digitalWrite(PIN_LED_BLUE,

LOW);

pinMode(PIN_RELAY_1, OUTPUT); digitalWrite(PIN_RELAY_1, LOW);

pinMode(PIN_RELAY_2, OUTPUT); digitalWrite(PIN_RELAY_2, LOW);

pinMode(PIN_BUZZER, OUTPUT); digitalWrite(PIN_BUZZER, LOW);

pinMode(PIN_SECURITY_LOOP_1, INPUT);

pinMode(PIN_SECURITY_LOOP_2, INPUT);

pinMode(PIN_SECURITY_LOOP_3, INPUT);

pinMode(PIN_SECURITY_LOOP_4, INPUT);

pinMode(PIN_BAT, INPUT);

Serial.begin(9600);

SIM800L.begin(9600);

_response = sendATCommand("AT", true);

if( _response == "OK") digitalWrite(PIN_LED_GREEN, HIGH);

else digitalWrite(PIN_LED_RED, HIGH);

_response = sendATCommand("AT+DDET=1,0,1", true);

_response = sendATCommand("AT+CLIP=1", true);

}

void loop() {

while(1) {

key = keypad.getKey();

if(securityState == 1) {

defaultSL[0] = analogRead(PIN_SECURITY_LOOP_1);

defaultSL[1] = analogRead(PIN_SECURITY_LOOP_2);

defaultSL[2] = analogRead(PIN_SECURITY_LOOP_3);

defaultSL[3] = analogRead(PIN_SECURITY_LOOP_4);

securityState = 2;

}

else if(securityState == 2) {

if((analogRead(PIN_SECURITY_LOOP_1) > defaultSL[0] - 100) ||

(analogRead(PIN_SECURITY_LOOP_1) < defaultSL[0] + 100))

{ digitalWrite(PIN_BUZZER, HIGH); globalState = 3; }

if((analogRead(PIN_SECURITY_LOOP_2) > defaultSL[1] - 100) ||

(analogRead(PIN_SECURITY_LOOP_2) < defaultSL[1] + 100))

{ digitalWrite(PIN_BUZZER, HIGH); globalState = 3; }

if((analogRead(PIN_SECURITY_LOOP_3) > defaultSL[2] - 100) ||

(analogRead(PIN_SECURITY_LOOP_3) < defaultSL[2] + 100))

{ digitalWrite(PIN_BUZZER, HIGH); globalState = 3; }

if((analogRead(PIN_SECURITY_LOOP_4) > defaultSL[3] - 100) ||

(analogRead(PIN_SECURITY_LOOP_4) < defaultSL[3] + 100))

{ digitalWrite(PIN_BUZZER, HIGH); globalState = 3; }

if(millis() % 1000 == 0) digitalWrite(PIN_LED_RED,

!digitalRead(PIN_LED_RED));

}

else if(securityState == 0) digitalWrite(PIN_LED_RED, LOW);

if(globalState == 0) {

if(key) {

if(key == '#') globalState = 10;

}

if (SIM800L.available()) {

_response = waitResponse();

_response.trim();

String whiteListPhones = "+380991917261, +380968068008";

if (_response.startsWith("RING")) {

int phoneindex = _response.indexOf("+CLIP: \"");

String innerPhone = "";

if (phoneindex >= 0) {

phoneindex += 8;

innerPhone = _response.substring(phoneindex, _response.indexOf("\"",

phoneindex));

}

if (innerPhone.length() >= 7 && whiteListPhones.indexOf(innerPhone) >=

0) {

sendATCommand("ATA", true);

globalState = 1;

}

else {

sendATCommand("ATH", true);

}

}

}

}

else if(globalState == 1) {

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

SIM800L.println("1.amr\",1,100");

globalState = 2;

}

else if(globalState == 2) {

if(SIM800L.available()) {

_response = waitResponse();

_response.trim();

if (_response.startsWith("+DTMF:")) {

String symbol = _response.substring(7, 8);

if(symbol=="1") {

digitalWrite(PIN_RELAY_1, HIGH);

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

SIM800L.println("5.amr\",1,100");

}

else if(symbol=="4") {

digitalWrite(PIN_RELAY_1, LOW);

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

SIM800L.println("6.amr\",1,100");

}

else if(symbol=="2") {

digitalWrite(PIN_RELAY_2, HIGH);

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

SIM800L.println("7.amr\",1,100");

}

else if(symbol=="4") {

digitalWrite(PIN_RELAY_2, LOW);

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

SIM800L.println("8.amr\",1,100");

}

else if(symbol=="3") {

int adc = analogRead(PIN_BAT);

float u = 5.0 * (float)adc / 1023.0;

if(u > 3.4)

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

SIM800L.println("9.amr\",1,100");

else

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

SIM800L.println("10.amr\",1,100");

}

else if(symbol=="#") {

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

SIM800L.println("2.amr\",1,100");

securityState = 1;

}

else if(symbol=="*") {

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

SIM800L.println("3.amr\",1,100");

securityState = 0;

flagAlarm = false;

}

}

if (_response.startsWith("NO CARRIER")) {

globalState = 0;

}

}

}

else if(globalState == 3) {

if(key) {

if(enterPassword()) {

if((tempPassword[0] == accessPassword[0]) &&

(tempPassword[1] == accessPassword[1]) &&

(tempPassword[2] == accessPassword[2]) &&

(tempPassword[3] == accessPassword[3]) &&

(tempPassword[4] == accessPassword[4]) &&

(tempPassword[5] == accessPassword[5]) &&

(tempPassword[6] == accessPassword[6])) {

securityState = 0;

flagAlarm = false;

globalState = 0;

digitalWrite(PIN_BUZZER, LOW);

}

tempPassword[0] = 0; tempPassword[1] = 0;

tempPassword[2] = 0; tempPassword[3] = 0;

tempPassword[4] = 0; tempPassword[5] = 0;

tempPassword[6] = 0; tempPassword[7] = 0;

}

}

_response = sendATCommand("ATD+380991917261;", true);

if(_response == "OK") {

SIM800L.print("AT+CREC=4,\"C:\\User\\"), SIM800L.print(1),

M800L.println("4.amr\",1,100");

globalState = 2;

}

else if(_response == "NO DIALTONE" ||

_response == "BUSY" ||

_response == "NO CARRIER" ||

_response == "NO ANSWER") {

globalState = 3;

}

}

else if(globalState == 10) {

tmpTimer = millis();

globalState = 11;

}

else if(globalState == 11) {

if((millis() - tmpTimer) > 20000) {securityState = 1; globalState = 0;}

}

} // while(1)

} // loop()

Размещено на allbest.ru

...

Подобные документы

  • Дослідження та представлення моделі інтерактивного засобу навчання, заснованого на платформі Microsoft.net технології ConferenceXP. Розробка програмного середовища, що обслуговує навчальний процес, з метою удосконалення викладання навчального матеріалу.

    дипломная работа [4,2 M], добавлен 22.10.2012

  • Android, iOS та Windows як основні платформи для розробки додатків для мобільних пристроїв. Перелік вимог до програмної системи. Основні вимоги, які є критичними для працездатності мобільного додатку. Аналіз основних напрямків розвитку системи.

    курсовая работа [1,1 M], добавлен 19.08.2016

  • Особливості системи онлайн-агрегаторів новин, універсальної програмної платформи Microsoft Window. Використання мови програмування C#, створення бази даних. Розробка програмного продукту, алгоритм його створення. Вихідний код та інструкція користувача.

    дипломная работа [730,9 K], добавлен 21.01.2016

  • Ескізний проект програмного забезпечення для 3D-навігації для мобільних пристроїв під управління ОС Android. Розробка прототипу інтерфейсу. Технічний проект програмного забезпечення. Створення діаграми класів, аналізу, розгортання та кооперацій.

    курсовая работа [880,5 K], добавлен 09.01.2014

  • Характеристика підприємства, основне електронне обладнання. Інсталяція та налагодження програмного забезпечення. Діагностика та усунення неполадок у комп’ютерній мережі. Обслуговування периферійних пристроїв (принтер, сканер): підключення, настройка.

    отчет по практике [38,9 K], добавлен 22.03.2010

  • Алгоритмічна структура алгоритму керування. Вибір конфігурації контролера, схем підключення, технічних засобів автоматизації. Схеми підключення зовнішніх пристроїв. Розроблення прикладного програмного забезпечення для реалізації алгоритму керування.

    курсовая работа [3,5 M], добавлен 22.01.2014

  • Забезпечення захисту інформації. Аналіз системи інформаційної безпеки ТОВ "Ясенсвіт", розробка моделі системи. Запобігання витоку, розкраданню, спотворенню, підробці інформації. Дослідження та оцінка ефективності системи інформаційної безпеки організації.

    курсовая работа [1,6 M], добавлен 27.04.2014

  • Вибір мови програмування та середовища розробки. Основні можливості мови php та сервера MySQL. Основні переваги середовища розробки NetBeans. Macromedia Dreamweaver як один з популярних середовищ розробки сайтів. Розробка програмного коду сайту.

    контрольная работа [3,0 M], добавлен 16.02.2013

  • Розробка програмного забезпечення для управління транспортними платформами на базі програмованого логічного контролера S7-300 в Simatic STEP-7. Аналіз програмного забезпечення, розрахунок показників його надійності. Опис алгоритму функціонування системи.

    дипломная работа [2,1 M], добавлен 17.05.2012

  • Мова VHDL. Створення проекту для моделювання цифрових і аналогових схем. Синтез і моделювання комбінаційних пристроїв, заданих в табличній формі, за допомогою системи Active-HDL 6.1. Створення ієрархічних структур при проектуванні складних пристроїв.

    реферат [287,3 K], добавлен 14.02.2009

  • Опис основних етапів розробки архітектури програмної системи: структурування системи, моделювання управління, декомпозиція підсистем. Ознайомлення із кроками створення інтерфейсу користувачів як однієї із фаз проектування програмного забезпечення.

    реферат [20,7 K], добавлен 24.11.2010

  • Особливості створення та програмний код тестової системи для визначення професійної придатності програмістів на основі тестів IQ, розрахунок кошторису витрат на його розробку. Характеристика та порівняння основних засобів розробки інформаційної системи.

    дипломная работа [2,3 M], добавлен 13.10.2010

  • Приклади рішень від провідних компаній-розробників, що працюють у сфері автоматизації роботи з документами. Основні можливості систем електронного документообігу. Вибір програмного забезпечення для створення програмного продукту. Опис програмної системи.

    курсовая работа [45,8 K], добавлен 06.06.2011

  • Характеристика функціональної структури предметної області програмного комплексу. Розробка архітектури програмної системи. Вибір типу архітектури й зразків проектування. Опис декомпозиції, залежностей та інтерфейсу. Детальне проектування модулів та даних.

    курсовая работа [462,2 K], добавлен 19.12.2013

  • Характеристика об’єкта автоматизації, вимоги до системи, склад та зміст системи. Розробка функціональної схеми програмного продукту. Тестування підпрограми програмного продукту. Розробка бази даних та налаштування ECO компонент в Borland Developer Studio.

    практическая работа [1,8 M], добавлен 05.06.2014

  • Аналіз технічного забезпечення, вибір інструментального програмного забезпечення та середовища розробки програм. Створення класів для реалізації необхідних функцій для роботи програмного засобу. Розробка інтерфейсу для користувача та лістинг програми.

    курсовая работа [343,9 K], добавлен 24.08.2012

  • Cтворення системи для впорядковування інформації про файли, що зберігаються на компакт-дисках або інших знімних носіях. Загальні вимоги до розробки. Технології розробки Windows-додатків. Опис функціональних можливостей і програмної реалізації системи.

    дипломная работа [891,7 K], добавлен 25.10.2012

  • Проблеми розробки компонентного програмного забезпечення автоматизованих систем управління. Сучасні компонентні технології обробки інформації. Аналіз вибраного середовища проектування програмного забезпечення: мова програмування PHP та Apache HTTP-сервер.

    дипломная работа [2,8 M], добавлен 11.05.2012

  • Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.

    курсовая работа [3,4 M], добавлен 17.11.2014

  • Основні функціональні можливості програми для забезпечення комп'ютерної системи дистанційного управління приладами. Функція пульта дистанційного керування мартфонів. Реалізація пультів дистанційного управління на основі апаратно-програмного комплексу.

    дипломная работа [1,7 M], добавлен 09.07.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.