- •Розділ 1 загальна частина
- •1 Обґрунтування актуальності теми дипломного проекту
- •1.2 Аналітичний огляд існуючих рішень
- •Розділ 2 спеціальна частина
- •Аналіз технічного завдання
- •3 Розробка принципової схеми і вибір елементної бази
- •Модуль Ethernet
- •Тактова кнопка
- •Електромагнітний замок ml-194k
- •Датчик диму cg312mq2
- •Датчик руху
Розділ 2 спеціальна частина
Аналіз технічного завдання
Метою дипломного проекту є розробка системи дистанційного моніторингу датчиків і контролю доступу в приміщені.
Пристрій призначений для дистанційного моніторингу датчиків і контролю доступу в приміщені з використанням апаратної платформи Arduino Uno, що зберігатиме в собі базу даних ідентифікаторів і керуватиме роботою інших елементів системи. Виконавчим пристроєм буде електромагнітний замок. Для ідентифікаторів користувача використовуватиметься картка з відповідним зчитувачем. Контролер працюватиме, як правило, з одним зчитувачем на вхід, для відкриття замку з середини приміщення використовуватиметься кнопка. Після цього система буде накопичувати інформацію про всі проходи через точку проходу(двері) – час,дата, ідентифікаційний номер картки. Дана інформація зберігатиметься в пам’яті контролера і може бути за потребою переглянута. Для отримання інформації і представлення її в наочному вигляді використовуватиметься спеціальне програмне забезпечення. Для забезпечення нормального режиму роботи контролю доступу контролер оснащуватиметься резервним джерелом живлення. Дана система ще буде містити датчик диму який реагуватиме на дим в приміщені і датчик руху який реагуватиме на рух в приміщені.
Рисунок 2.1 – Модульна структура системи контролю доступу
ЕЗ – електромагнітний замок;
ТК – тактова кнопка;
ДР – датчик руху;
ЕТН - модуль Ethernet;
ЗК – зчитувач SMART-карток;
ДД – датчик диму;
ПК – персональний комп’ютер.
Порядок роботи
Для того щоб зайти в приміщення, потрібно буде підійти до дверей, взяти карту і провести її по зчитувачу (). Зчитувач зчитає код з карти і надішле його на контролер.
Рисунок 2.2 – Вигляд
Якщо код співпаде з тим кодом який є на контролері двері відчиняться. Після цього ми потрапимо в приміщення. Для того щоб вийти з приміщення не потрібно карти, на стіні коло дверей буде кнопка, після натиснення якої двері можна буде відчинити.
3 Розробка принципової схеми і вибір елементної бази
В Мікропроцесорний модуль системи дистанційного моніторингу датчиків і контролю доступу в приміщені буде спроектований на базі апаратної платформи Arduini Uno. Arduino Uno –мікроконтролерна плата побудована на контролері ATmega328. Платформа має 14 цифрових вхід/виходів (6 з яких можуть використовуватися як виходи ШІМ), 6 аналогових входів, кварцовий генератор 16 МГц, роз'єм USB, силовий роз'єм, роз'єм ICSP і кнопку перезавантаження. Для роботи необхідно підключити платформу до комп'ютера за допомогою кабелю USB, або подати живлення за допомогою адаптера AC/DC або батареї. На рисунок 2.3 зображений зовнішній вигляд Arduino Uno.
Рисунок 3.1 – Зовнішній вигляд Arduino Uno
На відміну від усіх попередніх плат, які використовували FTDI USB
мікроконтроллер для зв'язку по USB, новий Arduino Uno використовує мікроконтролер ATmega8U2.
Програмне забезпечення
Інтегроване середовище розробки Arduino це додаток на Java, що включає в себе редактор коду, компілятор і модуль передачі прошивки в плату. Середовище розробки засноване на мові програмування Processing та спроектоване для програмування новачками, не знайомими близько з розробкою програмного забезпечення. Мова програмування аналогічна мові Wiring. Строго кажучи, це C ++, доповнений деякими бібліотеками. Програми обробляються за допомогою препроцесора, а потім компілюються за допомогою AVR-GCC.
Живлення
Arduino Uno може одержувати живлення через підключення USB або від зовнішнього джерела живлення. Джерело живлення вибирається автоматично.
Зовнішнє живлення (НЕ USB) може подаватися через перетворювач напруги AC / DC (блок живлення) або акумуляторною батареєю. Перетворювач напруги підключається за допомогою роз'єму 2.1 мм з центральним позитивним полюсом. Провідники від батареї підключаються до виводів Gnd і Vin роз'єму живлення.
Платформа може працювати при зовнішньому живленні від 6 В до 20 В. При напрузі живлення нижче 7 В, вивід 5V може видавати менше 5 В, при цьому платформа може працювати нестабільно. При використанні напруги вище 12 В регулятор напруги може перегрітися і пошкодити плату. Рекомендований діапазон від 7 В до 12 В.
Виводи живлення:
VIN. Вхід використовується для подачі живлення від зовнішнього джерела (в відсутність 5 В від роз'єму USB або іншого регульованого джерела живлення). Подача напруги живлення відбувається через даний вивід.
5V. Регульоване джерело напруги, використовуване для живлення мікроконтролера і компонентів на платі. Живлення може подаватися від виводу VIN через регулятор напруги, або від роз'єму USB, або іншого регульованого джерела напруги 5 В.
3V3. Напруга на виводі 3.3 В регульована вбудованим регулятором на платі. Максимальне споживання струму 50 мА.
GND. Вивід заземлення.
Виводи плати Arduino зображені на рисунку 3.2.
Рисунок 3.2 – Виводи плати Arduino
ISCP – для USB інтерфейсу призначений для програмування контролера USB інтерфейсу. ISCP для «основного» мікроконролера (МК) використовується для роботи з програматором, через який можна здійснювати операції, недоступні через звичайний послідовний інтерфейс - запис завантажувача і зміна фьюз (fuses), що змінюють поведінку МК.
Виводи МК діляться (в якомусь роді умовно) на цифрові (D0-D13) і аналогові (A0-A5), хоча при написанні програм використовується «наскрізна» нумерація виводів, тобто виводи 13 = D13, а 14 = A0, 15 = A1.
Цифрові виводи можуть використовуватися і як входи і як виходи (режим входу або виходу задається в програмі), аналогові використовують як входи, з дозволом АЦП 10 біт (0-1023) і межею вимірювань 5В щодо землі або виведення AREF.
Виводи D0, D2 використовуються для передачі даних через асинхронний послідовний порт і підключені до USB-serial контролеру. Ці виводи не можна підключати безпосередньо до порту RS323. Ці виводи використовують послідовний інтерфейс ТТЛ , який несумісний з RS232 і вимагає перетворення;
Виводи D2, D3 можуть використовуватися для виклику зовнішніх переривань;
Виводи D3, D5, D6, D9, D10, і D11 пов'язані з внутрішніми лічильниками-таймерами МК і можуть використовуватися для виводу шим-сигналу (Широтно-імпульсна модуляція, PWM) і в якості лічильників зовнішніх імпульсів;
Виводи D10-D13 можуть використовуватися для роботи із зовнішніми пристроями по протоколу SPI, при чому D10 (SS) використовується у випадку, якщо МК є веденим (slave);
Вивід D13 підключений до світлодіоду «L» на платі, що ніяк не впливає на його використання, але може бути корисним для індикації чогось;
Два виводи I2C в верхньому (або «довгому») ряду - дублюють A4 і A5. Вони можуть використовуватися для роботи із зовнішніми пристроями по протоколу I2C, що є додатковою функцією A4, A5;
Вивід Vin використовується для подачі живлення від зовнішнього джерела, далі він проходить через регулятор напруги;
Виводи GND, 5V, 3V3 - земля і регульована напруга 5В, 3,3В;
Вивід IOREF - видає робочу напругу, тобто 5В для Arduino Uno.
Таким чином, можливості вводу-виводу досить різноманітні. Через аналогові входи можна вимірювати напругу сигналу (можна навіть зробити осцилограф, але частота вимірювань буде обмежена швидкістю процесора), для цифрових входів-виходів можна як зчитувати, так і виставляти стан, в т.ч. генерувати ШІМ сигнал (зазвичай використовується для управління двигунами або генерування звуку), а через цілий ряд інтерфейсів можна спілкуватися із зовнішніми пристроями: однонапрямлена шина на базі будь-якого цифрового виводу, асинхронний послідовний порт, I2C, SPI.
При чому I2C і SPI дозволяють одночасно підключати безліч пристроїв на одну шину.
Більшість сенсорів для Arduino підключаються за допомогою аналогових входів, однонапрямленої шини або I2C.
Через SPI зазвичай працюють пристрої, що вимагають великої швидкості передачі даних (Ethernet shield, WiFi shield).
Дуже корисно для експериментів мати Sensor shield - плату з зручним дублюванням всіх виводів разом із заземленням і живленням для підключення зовнішніх пристроїв. Так само дуже зручна макетна плата для швидкого підключення пристроїв і пасивних компонентів без пайки.
Входи і виходи
Кожен з 14 цифрових виводів Uno може бути налаштований як вхід або вихід, використовуючи функції pinMode (), digitalWrite (), і digitalRead (),. Виводи працюють при напрузі 5 В. Кожен вивід має навантажувальний резистор 20-50 кОм і може пропускати до 40 мА.
Послідовна шина: 0 (RX) і 1 (TX). Виводи використовуються для отримання (RX) і передачі (TX) даних TTL. Дані виводи підключені до відповідних виводів мікросхеми послідовної шини ATmega8U2 USB-to-TTL;
Зовнішнє переривання: 2 і 3. Дані виводи можуть бути налаштовані на виклик переривання або на молодшому значенні, або на передньому чи задньому фронті, або при зміні значення;
Шим: 3, 5, 6, 9, 10, і 11. Будь-який з виводів забезпечує ШІМ з роздільною здатністю 8 біт за допомогою функції analogWrite ();
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). За допомогою даних виводів здійснюється зв'язок SPI, для цього використовується бібліотека SPI;
LED: 13. Вбудований світлодіод, підключений до цифрового виводу 13. Якщо значення на виводі має високий потенціал, то світлодіод горить.
На платформі Uno встановлені 6 аналогових входів (позначених як A0... A5), кожен діапазоном 10 біт (тобто може приймати 1024 різних значень). Стандартно виводи мають діапазон виміру до 5 В відносно землі, проте є можливість змінити верхню межу з допомогою виводу AREF і функції analogReference ().
Деякі виводи мають додаткові функції:
I2C: 4 (SDA) і 5 (SCL). За допомогою виводів здійснюється зв'язок I2C (TWI), для створення якої використовується бібліотека Wire.
Додаткова пара виводів платформи
AREF. Опорна напруга для аналогових входів. Використовується з функцією analogReference ();
Reset. Низький рівень сигналу на виводі перезавантажує мікроконтролер. Зазвичай застосовується для підключення кнопки перезавантаження на платі розширення, що закриває доступ до кнопки на самій платі Arduino.
Зв'язок
На платформі Arduino Uno встановлено декілька пристроїв для здійснення зв'язку з комп'ютером, іншими пристроями Arduino або микроконтроллерами. ATmega328 підтримують послідовний інтерфейс UART TTL (5 В), здійснюваний виводами 0 (RX) і 1 (TX). Встановлена на платі мікросхема ATmega8U2 направляє даний інтерфейс через USB, програми на стороні комп'ютера "спілкуються" з платою через віртуальний COM порт.
Прошивка ATmega8U2 використовує стандартні драйвера USB COM, ніяких сторонніх драйверів не потрібно, але на Windows для підключення буде потрібно файл ArduinoUNO.inf. Моніторинг послідовної шини (Serial Monitor) програми Arduino дозволяє посилати і отримувати текстові дані при підключенні до платформи. Світлодіоди RX і TX на платформі будуть миготіти при передачі даних через мікросхему FTDI або USB підключення (але не при використанні послідовної передачі через виводи 0 і 1).
Бібліотекою SoftwareSerial можливо створити послідовну передачу даних через будь-який з цифрових виводів Uno.
ATmega328 підтримує інтерфейси I2C (TWI) і SPI. В Arduino включена бібліотека Wire для зручності використання шини I2C.
Програмування
Платформа програмується за допомогою ПО Arduino. З меню «Tools Board» вибирається «Arduino Uno» (згідно зі встановленим микроконтроллером).
Мікроконтролер ATmega328 поставляється з записаним загрузчиком, що полегшує запис нових програм без використання зовнішніх программаторів. Зв'язок здійснюється оригінальним протоколом STK500.
Є можливість не використовувати завантажувач і запрограмувати мікроконтроллер через виводи ICSP (Внутрішньосхемне програмування).
Автоматичне (програмне) перезавантаження
Uno розроблена таким чином, щоб перед записом нового коду перезавантаження здійснювалося самою програмою Arduino на комп'ютері, а не натисканням кнопки на платформі. Одна з ліній DTR мікросхеми ATmega8U2, керуючих потоком даних (DTR), підключена до виводу перезавантаження микроконтроллера ATmega328 через 100 нФ конденсатор. Активація даної лінії, тобто подача сигналу низького рівня, перезавантажує мікроконтролер. Програма Arduino, використовуючи дану функцію, завантажує код одним натисканням кнопки Upload в самому середовищі програмування. Подача сигналу низького рівня по лінії DTR скоординована з початком запису коду, що скорочує таймаут завантажувача.
Функція має ще одне застосування. Перезавантаження Uno відбувається кожного разу при підключенні до програми Arduino на комп'ютері з ОС Mac X або Linux (через USB). Наступні півсекунди після перезавантаження працює завантажувач. Під час програмування відбувається затримка декількох перших байтів коду щоб уникнути отримання платформою некоректних даних (усіх, крім коду нової програми).
На Uno є можливість відключити лінію автоматичної перезавантаження розривом відповідної лінії. Контакти мікросхем з обох кінців лінії можуть бути з'єднані з метою відновлення. Лінія маркована «RESET-EN». Відключити автоматичне перезавантаження також можливо підключивши резистор 110 Ом між джерелом 5 В і даною лінією.
Струмовий захист роз'єму USB
В Arduino Uno вбудований самовідновлюючий запобіжник (автомат), що захищає порт USB комп'ютера від струмів короткого замикання і надструмів. Хоча практично всі комп'ютери мають подібний захист, проте, даний запобіжник забезпечує додатковий бар'єр. Запобіжник спрацьовує при проходженні струму більше 500 мА через USB порт і розмикає ланцюг до тих пір, поки нормальні значення струмів не будуть відновлені.
В якості мікропроцесора в системі управління використовується 8-ми розрядний мікроконтролер ATMEL – Atmega328, зображеного на рисунок 3.3.
Рисунок 3.3 – Мікроконтролер Atmega328
Особливості мікроконтролера Atmega328:
Висока продуктивність;
Прогресивна RISC архітектура;
До 20 MIPS пропускна на частоті 20 МГц;
32 х 8 робочих регістрів;
Множник 2 циклу.
Пам'ять включає:
32 КБ з програмованого FLASH;
1 КБ з EEPROM;
10000 циклів запису і стирання для FLASH і 100000 для EEPROM;
Зберігання даних протягом 20 років при 85 ° С і 100 років при 25 ° C;
Необов'язковий розділ завантажувального коду з незалежними бітами.
Периферійні особливості:
Два 8-розрядних таймер / лічильники, кожен з незалежним дільником і порівнюючими режимами;
Один 16-розрядний таймер / лічильник з незалежним дільником, порівнюючими режимами зйомки;
В режимі реального часу лічильник з незалежним генератором;
10-бітний, 6-канальний аналого-цифровий перетворювач ;
6 імпульсні канали імпульсної модуляції;
Внутрішній датчик температури;
Послідовний USART (Програмований);
Master / Slave SPI послідовний інтерфейс;
Програмований сторожовий таймер з окремим внутрішнім генератором;
Внутрішній аналоговий компаратор.
Додаткові характеристики:
Внутрішній калібрований генератор;
Скидання по включеню живлення;
Зовнішні та внутрішні переривання;
6 режимів сну:
режим холостого ходу;
скорочення АЦП;
енергозбереження;
вимикання живлення;
режиму очікування;
режим розширеного очікування;
23 програмованих входів / виходів.
Робоча напруга:
1.8 - 5.5V.
Діапазон робочих температур:
40 ° С до 85 ° С;
Активний режим: 0.3 мА;
Режим відключеного живлення: 0,1 мкА;
Режим економії енергії: 0,8 мкА (у тому числі 32 кГц RTC);
Flash пам'ять : 32 Кбайт.
Виводи, які містить ATmega328 показані на рисунок 3.4.
Рисунок 3.4 – Виводи ATmega328
Таблиця 3.5 - Характеристики мікроконтролера ATmega328
Робоча напруга |
5 В |
Вхідна напруга (рекомендований) |
7-12 В |
Вхідна напруга (граничне) |
6-20 В |
Цифрові Входи / Виходи |
14 (6 з яких можуть використовуватися як виходи ШІМ ) |
Аналогові входи |
6 |
Постійний струм через вхід / вихід |
40 мА |
Постійний струм для виведення 3.3 В |
50 мА |
Флеш-пам'ять |
32 Кб (ATmega328) з яких 0.5 КБ використовуються для завантажувача |
ОЗУ |
2 Кб (ATmega328) |
EEPROM |
1 Кб (ATmega328) |
Тактова частота |
16 МГц |
