Рубрики
Схемы на Arduino

Логгер данных с датчика температуры DHT11 на основе MATLAB и Arduino

Графики являются удобным инструментом для визуализации различных данных. В настоящее время существует достаточно много программных средств для построения графиков, однако наиболее популярной и мощной из них является математическая система MATLAB, которая не только имеет хороший инструментарий для построения разнообразных графиков, но и хорошо интегрируется в системы с использованием микроконтроллеров.

В этой статье мы рассмотрим построение в системе MATLAB графиков данных температуры и влажности, считываемых в режиме реального времени с датчика DHT11 с помощью платы Arduino. Ранее на нашем сайте мы рассматривали аналогичную задачу с помощью датчика температуры LM35, MATLAB и Arduino, но в этой статье мы рассмотрим более продвинутый инструментарий для решения данной задачи – сконструируем полноценный логгер данных. Более подробно о подключении датчика температуры и влажности DHT11 к плате Arduino и влажности вы можете прочитать в данной статье.

Чтобы лучше понять материал этой статьи вы можете изучить следующие проекты на нашем сайте, посвященные взаимодействию системы MATLAB и платы Arduino:

Также на нашем сайте вы можете посмотреть проект логгера данных на SD карту и компьютер (в лист Excel) с помощью Arduino (то есть без использования MATLAB).

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Установленная на компьютер математическая система MATLAB (предпочтительно версии R2016a или выше).
  3. Датчик температуры и влажности DHT11 (купить на AliExpress).
  4. Соединительные провода.

Схема проекта

Схема подключения датчика температуры и влажности DHT11 к плате Arduino представлена на следующем рисунке.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе подключим библиотеку для взаимодействия с датчиком DHT11.

Затем дадим осмысленное название контакту, в которому подключен датчик DHT11 – в нашем случае это контакт 4 платы Arduino.

В функции ‘void setup’ инициализируем последовательную связь и датчик DHT11.

В функции ‘void loop’ для хранения считанных с датчика DHT11 данных температуры и влажности мы будем использовать переменные вещественного типа (float) temp и humi. Считанные значения мы будем передавать с помощью последовательного порта связи чтобы система MATLAB могла их считать последовательно.

Объяснение программы логгера данных в MATLAB

Откройте MATLAB на своем компьютере и нажмите в нем на кнопку ‘new script’ как показано на следующем рисунке. При этом откроется новое окно редактора, в котором вы можете писать программу.

Полный код программы для MATLAB приведен в конце статьи, здесь же мы кратко обсудим ее основные фрагменты.

Написание программы начнем с объявления переменной для взаимодействия (последовательной связи) между MATLAB и Arduino. В нашем случае это взаимодействие осуществляется по последовательному порту COM18 – у себя вы его должны изменить на тот COM порт, по которому подключена плата Arduino к вашему компьютеру (можно посмотреть в диспетчере устройств Windows).

В следующих строчках кода функция fopen() используется для установления последовательной связи между MATLAB и Arduino. Затем мы сохраняем принятые по последовательному порту данные в переменной ‘out’. Переменная ‘out’ представляет собой строку из 9 символов, в которой первые 4 символа используются для хранения температуры, а остальные символы – для хранения значения влажности. Поэтому, используя далее команды Temp(i)=str2num(out(1:4)) и Humi(i)=str2num(out(5:9)), мы получаем, соответственно, значения температуры и влажности.

Далее скопируем полный текст программы в окно редактора MATLAB. Нажмите на кнопку ‘run’ чтобы запустить нашу программу на выполнение.

Подождите некоторое время пока MATLAB будет компилировать и исполнять вашу программу – в это время в его нижнем левом углу будет гореть надпись busy (занят) как показано на следующем рисунке.

Если в коде программы нет ошибок, то вы увидите окно, в котором в реальном времени будут строиться графики температуры и влажности. В нашей программе эти данные будут обновляться с периодичностью 2 секунды – это время, необходимое для считывания данных с датчика DHT11 и передачи их через последовательный порт связи.

Чтобы посмотреть численные значения считываемых данных температуры и влажности сделайте двойной клик на соответствующей переменной в workspace window (окно рабочей области) как показано на следующем рисунке.

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

Таким вот достаточно простым способом вы можете строить графики реального времени в MATLAB на основе данных, получаемых от платы Arduino, и производить их регистрирование – то есть реализовать функцию логгера (регистратора) данных.

Исходные коды программ

Код программы для Arduino

Код программы для MATLAB

Видео, демонстрирующее работу проекта

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *