Файл: График (план) Производственная (Преддипломная) практика обучающегося группы ххх Шифр и группы Фамилия, имя, отчество обучающегося Содержание практики.docx

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

Категория: Дипломная работа

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

Добавлен: 12.01.2024

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

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

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


Модуль HC-05 оснащен шестью выводами. EN – управление питанием, Vcc – питание модуля, GND – «земля», RX и NX – выводы последовательного порта, STATE – индикация, KEY – активирует режим управления при помощи AT-команд, при KEY = 0 осуществляется передача данных, при KEY = 1 – AT-команды [15, 16].

По умолчанию скорость передачи данных равна 38400 бод. Подключение датчика HC-05 к микроконтроллеру Arduino Uno через делители напряжения номиналами 1 кОм и 2 кОм проиллюстрировано на рисунке 19.



Рисунок 19 – Подключение HC-05 к Arduino Uno


3 Программная реализация задачи


Для измерения температуры в системе используется аналоговый датчик LM35CZ, поэтому нет необходимости подключения специальных библиотек. Процедура считывания значений температуры осуществляется функцией getTemp() при помощи функции analogRead(A0), где A0 – аналоговый порт, к которому подключен датчик температуры. С помощью функции millis(), которая возвращает количество миллисекунд с момента начала выполнения текущей задачи, опрос датчиков происходит каждые 5 с. Функция period() хранит в себе необходимые условия инкубации для каждого из этапов инкубации и меняет значение необходимой температуры, хранящейся в переменной needTemp, в зависимости от дня инкубации. Управление включением и выключением управляющим реле обогрева происходит с помощью функций digitalWrite(lightPin, LOW) и digitalWrite(lightPin, HIGH), где переменная lightPin хранит номер порта Arduino, к которому подключен управляющий контакт релейного модуля [17]. Управление реле обдува лампочки и реле охлаждения происходим аналогичным образом, переменные, используемые для хранения номеров портов реле обдува лампы и реле охлаждения – firstFanPin и secondFanPin соответственно. Алгоритм работы системы управления температурой представлен на рисунке 20.



Рисунок 20 – Блок-схема алгоритма работы системы управления температурой

Для получения показаний с датчиков температуры и влажности семейства DHT необходимо использовать готовую библиотеку dht. Считывание показателей влажности происходит в функции getTemp() при помощи вызова функции dht.readHumidity(), где dht – созданный объект класса DHT. [18] Полученное таким образом значение хранится в переменной dhtH. Значение показателей влажности, которые необходимо соблюдать на каждом из этапов инкубации, хранится в переменной needH и меняется с помощью функции period() в зависимости от дня инкубации. По аналогии с управлением реле обогрева, реле обдува лампы и реле вентиляции, для изменения состояния реле управления влажностью используются функция analogWrite(thirdfanPin, LOW), значения LOW или HIGH определяют уровень, который необходимо подать на вход реле, thirdfanFanPin –

номер порта контроллера, к которому подключен соответствующий выход релейного модуля. Алгоритм работы системы управления влажностью в виде блок-схемы представлен на рисунке 21.
Рисунок 21 – Блок-схема алгоритма работы системы управления влажностью

Для управления углом поворота сервопривода используется стандартная библиотека Servo, для работы с которой создается специальный объект myservo класса Servo. Подключение сервопривода к управляющему порту происходит c помощью вызова функции myservo.attach(7), где 7 – номер вывода, к которому подключен сервопривод. Выбранный сервопривод SG90 является стандартным, то есть позволяет поворачивать привод на определенный угол в диапазоне от 0° до 180°. Поворот осуществляется с помощью вызова функции myservo.write(90), где 90 – угол, на который требуется повернуть привод. Для работы со временем используется функция millis(). Алгоритм работы системы управления положением лотков в виде блок-схемы представлен на рисунке 22 [19].


Рисунок 22 – Блок-схема алгоритма работы системы управления положением лотков
Во избежание резких рывков при повороте, была разработана функция rotate(pos), совершающая поворот последовательно с задержкой в 100 мс. Аргумент этой функции определяет угол, на которой необходимо повернуть привод. Переменная rotation хранит значение угла, который в данный момент удерживает сервопривод. Алгоритм работы функции поворота в виде блок-схемы представлен на рисунке 23 [20].



Рисунок 23 – Блок-схема алгоритма работы функции rotate(pos)

4. Приложение для управления технической системой
Существует множество готовых приложений для устройств на базе Android, позволяющих осуществлять управление системой на базе Arduino по сети Bluetooth. Основным отличием приложения Virtuino от конкурентов является то, что коммуникация между устройством и управляемой системой происходит с помощью веб-сервера, реализованного на самом устройстве. Это значит, что соединение по Bluetooth-сети возможно без подключения смартфона или планшета к сети Интернет.


Virtuino позволяет создать и настроить собственный интерфейс с помощью виджетов и разработать необходимый функционал, но при этом используется технология «приложения в приложении», которой ограничивает доступ к разработанному приложению исходным.

Для управления инкубатором на Arduino, разработано двухстраничное приложение. «Главная» страница, представленная на рисунке 24 осуществляет вывод ключевых параметров системы, таких как температура, день инкубации и влажность. Для наглядности, вывод информации о температуре и влажности представлены не только в цифровом виде, но и в качестве линейных графиков.


Рисунок 24 – «Главная» страница
Вторая страница – «Управление», представленная на рисунке 25 позволяет начать инкубацию или завершить ее, принудительно изменить день инкубации, а также осуществить тесты сервопривода и работоспособности систем управления температурой и влажностью.


Рисунок 25 – Вид страницы «Управление»
Для реализации последовательного порта на 2 и 3 выводах микроконтроллера, используется библиотека SoftwareSerial. Для использования приложения Virtuino с целью управления системой и вывода информации, существует специальная библиотека VirtuinoBluetooth, обладающая широким спектром возможностей. Передача данных основывается на записи и чтении данных, записанных в виртуальные переменные. Для этого использованы специальные функции virtuino.vMemoryWrite() и vMemoryRead() соответственно, где virtuino – созданный объект класса VirtuinoBluetooth.

Передача значений температуры, влажности и текущего дня инкубации осуществляется с помощью записи значений в виртуальные переменные V2, V3 и V1 соответственно. Начало, окончание и желаемый день инкубации хранятся в виртуальных переменных V4, V5 и V0. Принудительный поворот сервопривода на 60°, 90° и 120° задается переменными V6, V7 и V8. Тестирование работоспособности системы регулирования температуры и влажности осуществляется с помощью виртуальных переменных V9, V10, V11 и V12. При нажатии на кнопку, система получает значение «1» соответствующей переменной и совершает необходимые действия. Полный листинг кода представлен в приложении А [21, 22].