Сборка и соединение составляющих частей



Чтобы подключить датчик к плате, нам понадобятся три соединительных провода: два из них нужны для питания, а вот третий провод для передачи данных.

Плата подключается к персональному компьютеру с помощью кабеля micro-USB, а сам датчик подключается к плате тремя проводами которые подключаются в соответствующие разъемы (рисунок 2.1).

Затем нам нужно проверить подключение, поэтому заходим в диспетчер устройств и смотрим подключение порта. Если всё подключено и стабильно работает, значит, можно переходить к следующей части работы.

Рисунок 2.1 – Схема установки Frittzing

Рисунок 2.2 – Фотография собранных элементов

Написание кода программы

Итак, сначала нам необходимо прописать инструкции #define, константы const и подключить библиотеки #include. Инструкция #define используется для упрощения кода. Синтаксис: #define <что изменяем> <на что изменяем>, например,  #define PIN_LED 13. Аналогично используем константу: сonst int PIN_LED = 13, где «int» – тип константы PIN_LED, целочисленный тип. Точно так же подключаются библиотеки. Библиотеки – это специальные программы для работы с датчиками и приводами, для их подключения используется инструкция #include. Часть кода, в которой прописаны инструкции, константы и библиотеки, изображена на рисунке 2.2.

Цифровой датчик DHT11 - датчик температуры и влажности. Для работы с ним подключаем библиотеку: #include <DHT.h>.

#define DHTTYPE DHT11 – эта строка означает, что переменная DHTTYPE=DHT11.

#define DHTPIN 2 – строка означает, что переменная DHTPIN=2.

Создаём объект dht класса DHT с параметрами DHTPIN и DHTTYPE – DHT dht(DHTPIN, DHTTYPE).

Далее программируем ридер microSD карт. Сохранять результат измерений будем на карту памяти формата microSD, у нас карта памяти 2 Гб. Для её чтения понадобится специальный ридер misroSD для Arduino. Для его подключения необходимы библиотеки <SPI.h> и <SD.h>. При этом очень важно отметить, что каждый раз перед запуском программы нужно форматировать карту памяти в Проводнике Windows.

Затем подключаем часы реального времени (Real Time Clock – RTC) на базе микросхемы DS1302. Для этого используем соответствующую библиотеку – "RTClib.h". Скетч предусматривает вариант альтернативного подключения к портам 8,6,7, подключаем к этим портам часы – DS1302 rtc (8, 6, 7).

Рисунок 2.2 – Используемые инструкции, константы и библиотеки

Далее пишем код функции void setup (). Функция называется «setup», а слово «void» означает, что функция не возвращает никаких данных. Команды функции выполняются только один раз во время загрузки скетча. Здесь описываются номера портов, устанавливается скорость соединения с СОМ-портом, подключаются внешние программы. На рисунке 2.3 представлена написанная нами функция void setup ().

Сначала подключаем датчик температуры и влажности. Для этого откроем последовательный порт на скорости 9600 бод - Serial.begin(9600); где Serial – Объект последовательного порта, а begin(9600) – метод объекта с параметром скорости «9600». В последовательный порт будем выдавать значения влажности и температуры с датчика. С помощью Монитора порта на вкладке Инструменты Arduino IDE смотрим, что пришло в последовательный порт. После открытия порта выводим в него приветственное сообщение - Serial.println("Начинаем измерять…"), где println – метод печати в порт, с переносом каретки в конце строки на новую строку. Аналогичным образом «открываем» датчик температуры - dht.begin();

Затем прописываем в функции void setup () код для работы ридера misroSD. Сначала пишем часть скетча, где ждём подключение порта : while (!Serial) { ;}. После пишем о подключении карты : Serial.print("Подключение SD карты..."); и проверяем подключение, пока это не случится: if (!SD.begin(chipSelect)){Serial.println("Карта не читается или отсутствует"); while(1);}. Когда карта подключена, выводим информацию о подключении на экран.

После для часов реального времени проводим инициализацию аналогично инициализации датчика температуры и ридера карт памяти. После в теле функции if проверяется подключение RTC и устанавливается дата и время. Функция установки даты и времени rtc.adjust(DateTime(__DATE__, __TIME__)); записывает в микросхему DS1302 на плате RTC текущую дату и время загрузки скетча в плату Arduino. Эта функция должна выполниться только один раз, из-за этого и создаётся отдельный скетч начальной установки RTC. Потом функцию установки даты и времени закомментируем. Затем прописываем проверку корректности работы часов реального времени. Проверка осуществляется с помощью тела if.

Рисунок 2.3 – Функция void setup ()

После остаётся прописать код функции void loop (). Все команды, которые располагаются внутри этой функции, выполняются бесконечное количество раз, пока плата Arduino не будет выключена. Все пользовательские алгоритмы заложены в этом месте, поскольку это основной блок программы. Используемая функция void loop () представлена на рисунке 2.4.

Сначала прописываем код для подключения датчика температуры и влажности. Для этого вначале делается пауза длительностью 2000 мс - delay(2000). Потом, используя Метод readHumidity, Объекта dht и Метод readTemperature, записываем в соответствующие переменные h и t типа данных «с плавающей запятой» значение влажности и температуры – float h = dht.readHumidity(); и float t = dht.readTemperature();. Одновременно объявляются переменные, присваиваются их значения и описывается тип данных. Если на выходе датчика нет информации, то в серийный порт будет выдана ошибка (конструкция if). После этого производим вывод значений влажности и температуры в последовательный порт с помощью Методов print и println.

Потом вносим изменения в конец кода для записи данных на карту памяти. Создаем переменную dataString типа String и присваиваем ей пустое значение: String dataString = "";. В эту переменную мы затем будем записывать через точку с запятой (это требует формат SCV) значения влажности и температуры из переменных h и t. Для согласования типов данных нужно преобразовать переменные из формата с плавающей запятой (float) в текстовый формат, сохраняя при этом два знака после запятой. Поэтому воспользуемся функцией String() : String(h,2), String(t,2). Точку с запятой не преобразовываем, только берем ее в кавычки. Записываем последовательно текст влажности, точку с запятой и текст температуры, затем присваиваем это значение переменной dataString: dataString=String(h,2)+";"+String(t,2);. После этого мы создаем переменную dataFile класса (типа) File и присваиваем ей результат выполнения метода open объекта SD с параметрами "datalog.csv" и FILE_WRITE:

File dataFile = SD.open("datalog.csv", FILE_WRITE); – данная строчка означает, что мы открываем для записи (или создаем и открываем для записи, если его не было) на карте памяти файл "datalog.csv" и присваиваем переменной dataFile это действие. Далее проверяем с помощью условия, удалось ли создать (открыть) файл. Если все хорошо, пишем в файл с новой строки значение переменной dataString и закрываем файл: dataFile.println(dataString); dataFile.close();. Ранее в эту данную мы уже поместили влажность и температуру. Для проверки выводим в Монитор порта записанное значение: Serial.println(dataString);. Если с файлом что-то не так, пишем в Монитор порта сообщение об ошибке: Serial.println("Ошибка при открытии datalog.csv");. Для RTC в функции void loop () ничего не пишем.[2]

Рисунок 2.4 – Функция void loop ()


Проведение эксперимента

Постановка эксперимента

Перед нами была поставлена задача провести эксперимент, в ходе которого изменяется температура и влажность воздуха, поэтому мы решили изучить актуальную проблему, связанную с пандемией коронавируса. Нам нужно было выяснить, как изменяется температура и влажность воздуха под противоковидным костюмом (защитным медицинским халатом). Для этого одного из нас, а именно - Ярослава, мы одели в такой костюм и провели два эксперимента (см. Приложение А).

Первый эксперимент заключался в измерении температуры и влажности воздуха после того, как человек попьёт горячий чай (поскольку после этого температура повышается быстрее, чем в обычных условиях). Датчик мы поместили между халатом и ногой, плотно прижав резинку костюма к ноге для уменьшения теплообмена со средой и увеличения точности получаемых данных. Опыт проводился в течение 30 минут.

Второй эксперимент заключался в измерении температуры и влажности воздуха после выполнения физических упражнений. Этот эксперимент очень важен, так как врачи на рабочем месте довольно много двигаются. Поэтому мы попросили Ярослава сначала побегать, а потом попрыгать несколько минут. После того, как тело начало потеть, мы поместили датчик между туловищем и костюмом и начали измерять температуру и влажность. Эксперимент проводился в течение 3 минут.

Анализ полученных данных

После проведения каждого из опытов, на карте памяти появлялся файл DATALOG.CSV. Из этого файла нам необходимо экспортировать полученные данные на лист Excel. После экспорта данных мы строили графики зависимостей температуры и влажности воздуха от времени. Графики первого эксперимента представлены на рисунках 3.1 и 3.2, а второго – на рисунках 3.3 и 3.4.

Рисунок 3.1 – График зависимости температуры воздуха от времени – эксперимент №1

Рисунок 3.2 – График зависимости влажности воздуха от времени – эксперимент №1

Рисунок 3.3 – График зависимости температуры воздуха от времени – эксперимент №2

Рисунок 3.4 – График зависимости влажности воздуха от времени – эксперимент №2

Проанализируем полученные графики. Из графиков на рисунках 3.1 и 3.2 видно, что за 6,5 минут температура воздуха повысилась с 27,6 °C до 30,7 °C, а влажность снизилась с 50% до 36%. Полученную зависимость можно охарактеризовать как линейную. Получаем, что скорость изменения температуры составляет примерно 0,5 град/мин. Причина снижения влажности скорее всего связана с повышением температуры воздуха при неизменном содержании паров воды. Данное снижение влажности мы анализировать не будем, поскольку изучаем время, через которое достигается максимальная влажность.

Из графиков, изображенных на рисунках 3.3 и 3.4, видно, что за 1 минуту температура повысилась с 27,9 °C до 29,2 °C, а влажность повысилась с 39% до 55%, соответственно, эти зависимости можно охарактеризовать как линейные. Из первого эксперимента видно, что температура изменяется линейно, и в этом случае скорость изменения температуры составляет примерно 1,4 град/мин. Влажность тоже изменяется линейно, со скоростью около 17 %/мин.

В соответствии с требованиями СанПиНа о параметрах микроклимата в помещениях постоянного пребывания медицинских сотрудников, максимальная температура воздуха в помещении составляет 25, а влажность – 60%. Предположим, что начальная температура составляет 18 °C, начальная влажность – 20% (такая температура и влажность являются минимальными допустимыми в больницах) [4]. Тогда в первом случае максимально возможная температура воздуха может быть достигнута через 14 минут. Во втором случае (при интенсивной физической нагрузке) максимальная температура достигается спустя 5 минут, а максимальная влажность – спустя 2,5 минуты. Мы видим, что значения, за которые достигается максимальный параметр, очень малы. Однако стоит учитывать, что такой быстрый рост температуры и влажности возможен за счёт того, что Ярослав в первом эксперименте выпил чай, а во втором – занимался интенсивной физической активностью. Исходя из этого, можно сделать вывод, что медицинским работникам противопоказано активно двигаться в противоковидных костюмах для сохранения хорошего самочувствия, кроме того, необходимо давать врачам отдых и возможность переодеться хотя бы каждый час для обеспечения надлежащих условий труда.


 

Заключение

Целью данной работы являлось изучение программы Arduino и принципов её работы, pазработка, создание и программирование работы термогигрометра на базе датчика DHT11 и Arduino, а также запись результатов на карту памяти.

Данная цель достигнута, поскольку были изучены способы работы с Arduino, приобретены умения и знания программирования платы, датчика температуры и влажности, ридера microSD и часов реального времени. Было проведено 2 эксперимента, в результате которых были записаны, выведены и проанализированы данные об изменении температуры и влажности воздуха.

Подобная работа была очень полезной и познавательной, поскольку были получены умения и навыки сборки и программирования термогигрометра, а также опыт постановки и проведения собственных экспериментов, анализа полученных данных и получения вывода о проведенном исследовании. Опыт, полученный во время работы над курсовой работой, будет полезен в будущем, так как программирование и умение проводить эксперименты очень важны в настоящее время.


 


Дата добавления: 2021-06-02; просмотров: 97; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!