You are on page 1of 24

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Національний аерокосмічний університет ім. М.Є. Жуковського


«Харківський авіаційний інститут»
Кафедра комп’ютерних систем, мереж і кібербезпеки

Лабораторна робота № 1
Тема: «Швидка розробка пристроїв IoT
серед віртуального моделювання Proteus»

з дисципліни
«Програмування систем IoT»

ХАІ.503.535.24В.050102,9609654

Виконав: здобувач(ка) 3 курсу гр. 535


(№ групи)

Чепелевич А.І.
(підпис, дата) (ім’я, прізвище)

Перевірив асистент
(науковий ступінь, вчене звання, посада)

Землянко Г.А.
(підпис, дата) (ім’я, прізвище)

Харків
2024
Мета роботи:
Ознайомитись з віртуальними моделями пристроїв IoT у програмному
середовищі Proteus, отримати практичні навички швидкого налагодження
програм для AVR-мікроконтролерів у середовищі Proteus.

Постановка завдання
Навчитися аналізувати та проектувати пристрої, використовуючи
віртуальні мікроконтролери Arduino, засоби налагодження програм.

1. Розглянути приклади проектів працюючих схем у програмному


середовищі Proteus для Arduino
 Arduino 4 Channel Relay;
 Arduino Cyrillic LCD;
 Arduino Motor Shield.

2. Описати процеси, що відбуваються під час моделювання схем –


прикладів.
3. Звіт з лабораторної роботи повинен містити:

 Короткий опис суті виконання роботи;


 Опис прикладів симуляції у Proteus:
o Принцип роботи;
o Приклади осцилограм;
o Дані обміну в терміналі;
o Оцінка використовуваних ресурсів (пам'яті програм та даних,
висновків).
4. Висновки щодо роботи.

2
Виконання роботи
1. Приклад проекту: Arduino 4 Channel Relay
Починаємо роботу з відкриття проекту працюючої схеми Arduino 4
Channel Relay у програмному середовищі Proteus. Після запуску програми у
вікні Sample Projects Browser вибираємо схему, що цікавить нас (рис. 1.1).

Рис. 1.1 – Вибір схеми моделювання Arduino 4 Channel Relay

На рис. 1.2 бачимо завантажену схему проекту Arduino 4 Channel Relay.

Рис. 1.2 – Cхема проекту Arduino 4 Channel Relay


3
Дана схема моделює управління роботою діодів за допомогою реле, яке
здійснюється через консоль, до якої користувач вводить номер діода від 0 до
3 та режим роботи: 1 для ON, 0 для OFF. Щоб подивитися результат,
підключимо до схеми осцилограф (рис. 1.3).

Рис. 1.3 – Підключення каналів A, B, C, D осцилографа


до терміналів сигналів IO8, IO7, IO2, IO4

Після підключення запускаємо симуляцію. На рис. 1.4 видно


налаштування: часова розгортка 0.5мс на ділення і DC сигнали на кожному
каналі. На цьому ж рисунку представлено результат роботи схеми.

4
Рис. 1.4 – Спостереження реакції мікроконтролера (IO8, IO7, IO2, IO 4)
на команди, що надходять, по послідовному каналу
на схемі моделювання Arduino 4 Channel Relay

Розглянемо внутрішні елементи моделі мікроконтролеру при обиранні


Debug-AVR:
 CPU Registers (Регістри загального призначення, рис.1.5);
 Data Memory (оперативна пам'ять даних – ОЗУ (SRAM), рис. 1.6);
 EPROM Memory (Енергонезалежна пам'ять даних, рис.1.7)
 Program memory (Flash пам'яті програм, рис. 1.8);
 IO Registers (реєстри введення-виведення, рис. 1.9).
5
Рис. 1.5 – Стан 32-х робочих регістрів ядра мікроконтролера (CPU Registers)
Робочі регістри (регістри загального призначення) R0..31 утворюють
область надоперативної пам'яті. Регістри беруть безпосередню участь у
виконанні машинних команд. Використовуються при програмуванні мовою
низького рівня – Асемблер.

Рис. 1.6 – Масив 2048 байт комірок ОЗУ (SRAM)

6
Рис. 1.7 – Масив 1024 байт енергонезалежної пам'яті даних (EPROM)

Рис. 1.8 – Вміст 65536 байт Flash пам'яті програм

Рис. 1.8 (прод.) – Вміст 65536 байт Flash пам'яті програм

Рис. 1.8 (прод.) – Вміст 65536 байт Flash пам'яті програм


7
Коди команд програми (рис. 1.8) займають 5477 байт у діапазоні адрес
$0000 … $1565 (0..5477).

Рис. 1.9 – Масив регістрів введення-виведення (I/O)

Регістри спеціального призначення (введення-виведення) пов'язані з


портами мікроконтролера та зовнішніми висновками, а також внутрішніми
периферійними пристроями.
Далі необхідно вибрати мікроконтролер. Замість elf-файлу, що
використовувався для налагодження, нам необхідно вибрати hex-файл, що
створюється при компіляції програми. Вибираємо вкладку Source code (рис.
1.10), в якій вже розміщено готовий код програми. Компілюємо код
програми, збираємо проект.

Рис. 1.10 – Код програми


8
Заходимо в меню налаштування мікроконтролера, завантажуємо
згенерований після складання проекту hex-файл. Також у цьому меню
вказуємо частоту роботи мікроконтролера – 16Мгц (16000000). Розглянути
меню налаштування мікроконтролера можна на рис. 1.11.

Рис. 1.11 – Вікно налаштування властивостей мікроконтролера


Після налаштування мікроконтролера необхідно запустити симуляцію
виконання. Однак, у ході виконання цього кроку було виявлено помилку, яка
не дозволяє програмі коректно працювати. Опис виникнення помилки таке: у
термінал необхідно ввести 2 значення – номер діода та його стан; однак, при
введенні двох даних значень робота програми завершується помилкою,
зображеною на рис.1.12; при введенні одного значення термінал видає
повідомлення про некоректно введені дані та зміну стану на 74.
З’ясувати, що збуджує таку помилку не вийшло, тому вважаємо, що у
програми стався конфлікт із ОС.

Рис. 1.12 – Демонстрація вікна Simulation Errors


9
2. Приклад проекту: Arduino Cyrillic LCD

Починаємо роботу з відкриття проекту схеми Arduino Cyrillic LCD у


програмному середовищі Proteus. Після запуску програми у вікні Sample
Projects Browser вибираємо схему, що нам потрібна (рис. 2.1).

Рис. 2.1 – Вибір схеми моделювання Arduino Cyrillic LCD


На рис. 2.2 бачимо завантажену схему проекту Arduino Cyrillic LCD.

Рис. 2.2 – Схема проекту Arduino Cyrillic LCD

10
Ця схема надає нам можливість детально подивитися на моделювання
роботи LCD-екрану, який має два рядка для виводу тексту, який у свою чергу
треба зазначити в програмі. Задля виведення кирилиці використовується
бібліотека «CyrillicLiquidCrystal.hpp».
Запускаємо симуляцію на виконання. Результати за різний проміжок
часу зазначені на рис. 2.3-2.5.

Рис. 2.3 – Виведення тексту вказаного у програмі (1)

Рис. 2.4 – Виведення тексту вказаного у програмі (2)

11
Рис. 2.5 – Виведення тексту вказаного у програмі (3)
Але починаючи з шістнадцятої секунди текст перестає коректно
виводитися (рис. 2.6), тому звертаємося до коду (рис. 2.7).

Рис. 2.6 – Некоректне виведення кирилицею

12
Рис. 2.7 – Вкладка Source Code
Прогортавши до кінця, побачимо випадок, на якому виникає проблема,
і бачимо, що саме у цей момент вимикається декодування символів (рис. 2.8).

Рис. 2.8 – Фрагмент коду, який потребує виправлень


Змінюємо параметр, що передається до функції lcd.enableRecode(); на
true, перезбираємо проект та запускаємо симуляцію, результати якої видно

на рис. 2.9.

13
Рис. 2.9 – Результат роботи симуляції після внесення змін до коду
Розглянемо внутрішні елементи моделі мікроконтролера при обиранні
Debug-AVR:
 CPU Registers (Регістри загального призначення, рис. 2.10);
 Data Memory (оперативна пам'ять даних – ОЗУ (SRAM), рис. 2.11);
 EPROM Memory (Енергонезалежна пам'ять даних, рис.2.12)
 Program memory (Flash пам'яті програм, рис. 2.13);
 IO Registers (реєстри введення-виведення, рис. 2.14).

Рис. 2.10 – Стан 32-х робочих регістрів ядра мікроконтролера (CPU Registers)

14
Рис. 2.11 – Масив 2048 байт комірок ОЗУ (SRAM)

Рис. 2.12 – Масив 1024 байт енергонезалежної пам'яті даних (EPROM)

Рис. 2.13 – Вміст 65536 байт Flash пам'яті програм


15
Рис. 2.13 (прод.) – Вміст 65536 байт Flash пам'яті програм

Рис. 2.13 (прод.) – Вміст 65536 байт Flash пам'яті програм

Коди команд програми (рис. 2.13) займають 3329 байт у діапазоні адрес
$0000 … $0D01 (0.. 3329).

Рис. 2.14 – Масив регістрів введення-виведення (I/O)


Тепер, як і в першій частині, обираємо мікроконтролер. Замість elf-
файлу, що використовувався для налагодження, обираємо hex-файл, що
створюється при компіляції програми. Вибираємо вкладку Source code,
компілюємо код програми, збираємо проект.
Заходимо в меню налаштування мікроконтролера, завантажуємо
згенерований після складання проекту hex-файл. Також у цьому меню
вказуємо частоту роботи мікроконтролера – 16Мгц (16000000). Розглянути
меню налаштування мікроконтролера можна на рис. 2.15.

16
Рис. 2.15 – Налаштування мікроконтролера

Після налаштування мікроконтролера запускаємо симуляцію


виконання. Результати представлені на рис. 2.16 та 2.17.

Рис. 2.16 – Результат роботи (1) Рис. 2.17 – Результат роботи (2)

17
3. Приклад проекту: Arduino Motor Shield

Як і в усі минулі рази, починаємо роботу з відкриття проекту


працюючої схеми Arduino Motor Shield у програмному середовищі Proteus. У
вікні Sample Projects Browser вибираємо схему, яка нам потрібна (рис. 3.1).

Рис. 3.1 – Обирання проекту Arduino Motor Shield


На рис. 3.2 бачимо завантажену схему проекту Arduino Motor Shield.

Рис. 3.2 – Схема проекту Arduino Motor Shield


18
Дана схема моделює управління роботою двох DC-моторів (А та В).
Результат роботи бачимо на рис. 3.3.

Рис. 3.3 – Результат роботи схеми при натисканні на ключі A та В


Розглянемо внутрішні елементи моделі мікроконтролеру при обиранні
Debug-AVR:
 CPU Registers (Регістри загального призначення, рис. 3.4);
 Data Memory (оперативна пам'ять даних – ОЗУ (SRAM), рис. 3.5);
 EPROM Memory (Енергонезалежна пам'ять даних, рис. 3.6)
 Program memory (Flash пам'яті програм, рис. 3.7);
 IO Registers (реєстри введення-виведення, рис. 3.8).

Рис. 3.4 – Стан 32-х робочих регістрів ядра мікроконтролера (CPU Registers)
19
Рис. 3.5 – Масив 2048 байт комірок ОЗУ (SRAM)

Рис. 3.6 – Масив енергонезалежної пам'яті даних (EPROM)

20
Рис. 3.7 – Вміст Flash пам'яті програм

Рис. 3.7 (прод.) – Вміст Flash пам'яті програм

Рис. 3.7 (прод.) – Вміст Flash пам'яті програм

Коди команд програми (рис. 3.7) займають 3613 байт у діапазоні адрес
$0000 … $0Е1D (0.. 3613).

Рис. 3.8 – Масив регістрів введення-виведення (I/O)

Далі обираємо мікроконтролер. Замість elf-файлу, що


21
використовувався для налагодження, обираємо hex-файл, що створюється
при компіляції програми. Вибираємо вкладку Source code (рис. 3.9),
компілюємо код програми, збираємо проект.
Заходимо в меню налаштування мікроконтролера, завантажуємо
згенерований після складання проекту hex-файл. Також у цьому меню
вказуємо частоту роботи мікроконтролера – 16Мгц (16000000). Розглянути
меню налаштування мікроконтролера можна на рис. 3.10.

Рис. 3.9 – Вкладка Source Code Рис.3.10 – Налаштування


мікроконтролера

Після налаштування мікроконтролера запускаємо симуляцію


виконання. Результати представлені на рис. 3.11 та 3.12.

22
Рис. 3.11 – Результат роботи (1)

Рис. 3.12 – Результат роботи (2)


Висновки
Під час виконання даної лабораторної роботи було вивчено програмне
середовище Proteus, яке надає можливість моделювання різноманітних схем
систем та розробки прототипів проектів Arduino безпосередньо у програмі
Proteus. Так само було досліджено інтерфейс програми та її можливості.
В ході роботи було закріплено теоретичні знання та набуто практичних
навичок і умінь стосовно моделювання схем електричних систем у
середовищі Proteus. Ця практика дозволила краще розібратися у взаємодії з
мікроконтролерами Arduino та різноманітними електронними компонентами.

23
Крім того, отримано досвід у роботі з терміналом для введення даних,
вивчили режими відлагодження та виконання програм, написання та збору
проекту.
Було проведено різні типи робіт: з осцилографом для візуалізації
роботи електричних схем і вивчення їх параметрів; з LCD-екраном для
поглиблення знань з області взаємодії з периферійними пристроями та
розширення вмінь працювати з візуалізацією інформації на електронних
дисплеях; аналіз внутрішніх елементів моделі мікроконтролера за допомогою
режиму відлагодження (Debug-AVR), завдяки якому можна ретельніше
вивчати параметри та властивості мікроконтролера, що було корисно для
розуміння його роботи та можливостей.
Під час аналізу схеми моделювання роботи двигунів було виявлено, що
в середовищі Proteus можна реалізувати графічне відображення складних
елементів, наприклад, обертання моторів та системи гальмування. Ці
елементи можуть працювати не лише за допомогою кліків миші, але й за
довгого натискання на кнопку.
В результаті цих дій поглиблено розуміння роботи електричних систем
та практично застосовувати отримані знання.
Використані джерела
1. Методичні вказівки Землянко Г.А. до Лабораторної роботи №1
2. Лекції Землянко Г.А. з дисципліни «Програмування систем IoT»

24

You might also like