Регистратор (логгер) данных (температуры, влажности) на SD карту и компьютер с помощью Arduino

Инженеры и разработчики всегда полагаются на собранные данные для проектирования или улучшения системы. Запись данных и их анализ является обычной практикой в большинстве отраслей промышленности и в этой статье мы рассмотрим проект регистратора данных на основе платы Arduino (Arduino Data Logger), в котором мы будем регистрировать (записывать) данные через определенные интервалы времени. В этом проекте плата Arduino будет считывать определенные данные (температура, влажность, дата и время) и сохранять их на SD-карте и компьютере одновременно.

Внешний вид логгера данных на Arduino

Сохраненные данные затем можно будет легко открыть в листе Excel для дальнейшего анализа. Для получения информации о дате и времени мы будем использовать хорошо известный модуль часов реального времени DS3231 RTC (RTC — англ. Real Time Clock), а для измерения температуры и влажности – датчик DHT11.

В конце работы над проектом вы узнаете:
1. Как записать на SD-карту данные даты и времени, а также значения с датчиков.
2. Как записать данные непосредственно в лист Excel на компьютер с помощью последовательной связи.

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

Плата Arduino Uno (или любая другая)
Макетная плата
Датчик температуры и влажности DHT11
Модуль часов реального времени DS3231 RTC
Модуль для чтения SD карт
SD карта
Соединительные провода
Компьютер/лэптоп

Внешний вид датчика температуры и влажности DHT11

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема логгера данных на ArduinoКак можно видеть, соединения на схеме достаточно простые и перечислены в следующих таблицах:

контакт Arduino контакт датчика температуры и влажности DHT11
Vcc 5V
Gnd Gnd
Nc Nc
Pin 7 Out
контакт Arduino контакт DS3231 RTC
5V Vcc
Gnd Gnd
Pin A5 SCL
Pin A4 SDA
контакт Arduino контакт модуля для чтения SD карт
5V Vcc
Gnd Gnd
Pin 12 MISO
Pin 11 MOSI
Pin 13 SCK
CS CS

Вы можете заменить датчик DHT11 в схеме на любой другой аналогичный, например, LM35. Модуль RTC DS3231 подключается к плате Arduino по протоколу I2C (SCL, SDA), а модуль чтения SD карт – по протоколу SPI (MISO, MOSI, SCK, CS). Контакты 4 и 7 платы Arduino подключаются к контактам CS и Out модуля чтения SD карт и датчика DHT11 соответственно, при желании вы их можете сменить на любые другие контакты. Ранее подключение модуля чтения SD карт к плате Arduino мы рассматривали в проекте аудиоплеера на Arduino.

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

В программе для Arduino мы должны сделать следующие вещи:

  1. Считывать данные с датчика DTH11 (или с любого другого датчика, данные с которого мы хотим регистрировать).
  2. Инициализировать шину I2C чтобы считывать данные от часов реального времени (RTC module).
  3. Инициализировать шину SPI чтобы подключить модуль чтения SD карт к плате Arduino.
  4. Сохранить дату, время, температуру и влажность на SD карту.
  5. Сохранить дату, время, температуру и влажность в лист Excel на компьютере.

Все перечисленные вещи легко осуществить когда мы скачаем необходимые библиотеки для Arduino, которые будут делать всю работу за нас. Скачать их можно по следующим ссылкам:

  1. DHT11 Sensor Library (библиотека для работы с датчиком температуры и влажности) с GitHub.
  2. DS3231 RTC module library (библиотека для работы с часами реального времени) с Rinky-Dink Electronics.

Когда вы скачаете эти библиотеки, добавьте их в вашу Arduino IDE с помощью инструкции вида (или с помощью аналогичного пункта меню в Arduino IDE):

Sketch->Include Library -> Add .ZIP Library

Чтобы передавать данные с Arduino в лист Excel на вашем компьютере установите программное обеспечение под названием PLX-DAQ, разработанное компанией Parallax Inc. Скачайте его по приведенной ссылке и установите его на ваш компьютер. В результате этой операции на вашем компьютере должна появиться папка с названием PLS-DAQ.

После того как вы скачали и установили обе приведенные библиотеки и программное обеспечение PLX-DAQ вы можете загружать полный код программы (приведенный в конце статьи) в плату Arduino и тестировать его работу. Здесь же мы обсудим работу наиболее важных участков этого кода.

1. Чтение данных с модуля DS3231

DS3231 представляет собой модуль часов реального времени (RTC, Real Time Clock). Он используется для поддержания/хранения даты и времени во многих электронных проектах. Модуль имеет свой собственный источник питания (батарейку), поэтому сохраняет значения даты и времени даже когда питание всего устройства (в котором он стоит) выключается или когда устройство подвергается аппаратному сбросу. Поэтому стоит нам один раз выставить в нем правильную дату и время и он будет хранить/поддерживать их все время (до тех пор пока не разрядится его батарейка).

Работать с этим модулем очень просто благодаря специальной библиотеке, присутствующей в Arduino.

Примечание: когда вы используете этот модуль в первый раз вы должны установить в нем дату и время. Для этого раскоментарьте (снимите комментарий) со строк, приведенных выше (установите в них необходимые вам дату и время). После этого снова поставьте комментарии к этим строкам и заново загрузите программу в плату Arduino иначе (если вы оставите их раскомментированными), то каждый раз при запуске программы в модуль будут записываться эти дата и время. Также вы можете использовать модуль часов реального времени RTC IC DS1307 для считывания времени в плату Arduino.

2. Считывание данных с датчика DHT11

DHT11 представляет собой датчик температуры и влажности. Он передает значения температуры и влажности по 8 бит последовательно через свой выходной контакт. С помощью библиотеки мы считываем эти данные в Arduino в последовательном формате.

В данном проекте мы подключили выходной контакт датчика DHT11 к контакту 7 платы Arduino, однако вы можете использовать любой другой контакт, поддерживаемый библиотекой последовательной связи (Software Serial Library). Функция DHT.read(pin number); считывает значения температуры и влажности и сохраняет их в переменных DHT.temperature и DHT.Humidity соответственно. Более подробно об этом вы можете прочитать в статье про подключение датчика DHT11 к плате Arduino.

3. Инициализация модуля чтения SD карт

Работа с SD картами так проста потому что в Arduino IDE по умолчанию присутствует библиотека для работы с SD картами. В рассмотренной функции инициализации SD карты мы создали текстовый файл с именем “LoggerCD.txt” и записали туда первую строку нашего контента (содержимого). Мы будем разделять данные с помощью символа “,” – запятая будет выступать в качестве разделителя. То есть запятая будет обозначать переход к следующей ячейке в листе Excel.

4. Запись данных на SD карту

Мы сохраняем значения даты, времени, температуры и влажности на SD карту с помощью библиотек для DS3231 и DHT11. Операторы (переменные) для получения этих данных представлены в следующей таблице:

Date (дата) rtc.getDateStr());
Time (время) rtc.getTimeStr());
Temperature (температура) DHT.temperature
Humidity (влажность) DHT.humidity

Для сохранения этих данных на SD карту мы используем оператор вида:

Вы могли заметить что каждый параметр разделяется с помощью запятой чтобы сделать его удобочитаемым, а функция dataFile.println(); используется для обозначения конца строки.

5. Запись данных в PLX-DAQ

PLX-DAQ представляет собой специальный плагин для приложения Microsoft Excel, который помогает нам записывать данные от Arduino непосредственно в Excel файл на вашем компьютере. Мы выбрали этот плагин исходя из следующих причин:

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

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

Программа PLX_DAQ может распознавать такие слова как LABEL, DATA, TIME, DATE и т.д. Как показано в приведенном фрагменте кода мы используем слово “LABEL” чтобы начать первую строку на листе Excel. Далее мы используем слово “DATA” чтобы дать понять программе что затем мы будем передавать ей данные. Для перехода к следующему столбцу мы используем запятую (“,”). Для обозначения конца строки мы используем Serial.println();.

Для получения данных о дате и времени с вашего компьютера мы используем слова “DATE” и “TIME”.

Примечание: не используйте монитор последовательной связи во время использования программного обеспечения PLX_DAQ.

Объяснение работы проекта

Работа нашего регистратора данных (логгера) на Arduino достаточно проста. После того как вы соберете всю схему и загрузите программу в плату Arduino значения даты, времени, температуры и влажности начнут сохраняться в файл на SD карте. Для того, чтобы задействовать PLX-DAQ для записи данных в лист Excel на вашем компьютере, вы должны выполнить следующую последовательность действий.

Шаг 1: Откройте файл “Plx-Daq Spreadsheet” который был создан на вашем рабочем столе во время установки этого программного обеспечения.

Шаг 2: Если Excel показывает вам ограничение на запись данных, то кликните Options->Enable the content -> Finish -> OK чтобы получить следующий экран.

Получение необходимого листа в ExcelШаг 3: Выберите бодовую скорость “9600” на том последовательном порту, к которому подключена плата Arduino и нажмите на Connect. Ваши данные должны начать записываться как показано на следующем рисунке.

Выбор скорости передачи данных

Вы можете оставить этот лист Excel открытым и смотреть как записываются данные. Те же самые данные в это же время записываются и на SD карту. Чтобы проверить это извлеките SD карту из собранного устройства и вставьте ее в ваш компьютер. Вы должны найти на ней файл “LoggerCD.txt”. Когда вы откроете его, он будет выглядеть примерно так, как показано на следующем рисунке:

Вид сохраненных данных на SD карте

Но в таком виде их трудно будет анализировать. Поэтому мы можем открыть этот файл в Excel в формате CSV (Comma separated values – данные, разделенные запятыми) чтобы сделать анализ этот данных более удобным. Чтобы открыть его в Excel выполните следующую последовательность действий:

  1. Откройте Excel. Кликните на File->Open и выберите “All file” в правом нижнем углу, затем выберите файл “LoggerCD” на вашей SD карте. Запустится мастер импорта текста.
  2. Кликните на “Next” и выберите запятую (comma) в качестве разделителя. Кликните на “Next” снова, затем на Finish.
  3. После этого ваши данные будут открыты в Excel файле как показано на следующем рисунке:

Вид сохраненных данных в Excel файле

В этом проекте мы записываем данные каждые 5 секунд – но вы можете изменить это время на любое необходимое вам внеся небольшие изменения в программу.

Внешний вид собранного на макетной плате логгера данных

Беспроводная регистрация данных (лог) с помощью Arduino

Если у вас все получилось, то вы можете внести ряд усовершенствований в этот проект. Просто подсоедините к плате Arduino Bluetooth устройство (например, модуль HC-05) и передавайте данные в программу PLX-DAQ при помощи технологии Bluetooth, а не по последовательному порту. В этом случае в программе вам необходимо заменить Serial.print(parameter); на BluetoothName.print(parameter); и соединить ваш компьютер/лэптоп к HC-05 по Bluetooth – для этого необходимо будет выбрать COM порт, к которому подсоединен Bluetooth на вашем компьютере/лэптопе. И все – ваш беспроводной логгер (регистратор) данных на основе Arduino будет готов.

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

Видео, демонстрирующее работу логгера данных

(Проголосуй первым!)
Загрузка...
533 просмотров

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

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