- Необходимые материалы:
- Принципиальная электрическая схема:
- Пояснение к программе Arduino:
- Рабочее объяснение:
Как инженеры / разработчики мы всегда полагаемся на собранные данные для проектирования или улучшения системы. Запись данных и их анализ - обычная практика в большинстве отраслей, здесь мы создаем проект Arduino Data Logger, где мы узнаем, как мы можем регистрировать данные через определенный интервал времени. Мы будем использовать плату Arduino для чтения некоторых данных (здесь температура, влажность, дата и время) и одновременного сохранения их на SD-карту и компьютер.
Сохраненные данные можно легко открыть в таблице Excel для дальнейшего анализа. Чтобы поддерживать дату и время, мы будем использовать известный модуль RTC DS3231, а для получения температуры и влажности - датчик DHT11. В конце проекта вы узнаете
- Как записывать данные на SD-карту с датой, временем и значениями датчика.
- Как записывать данные непосредственно в Excel Sheet на ПК через последовательную связь.
Необходимые материалы:
- Макетная плата
- Arduino UNO (любая плата Arduino)
- DHT11 Датчик температуры
- Модуль DS3231 RTC
- Модуль SD-карты
- SD Card
- Соединительные провода
- Компьютер / Ноутбук
Принципиальная электрическая схема:
Принципиальная схема этого проекта регистратора температуры Arduino показана ниже.
Как показано на принципиальной схеме, соединения очень просты, поскольку мы использовали их в качестве модулей, которые мы можем построить прямо на макете. Соединения дополнительно классифицированы в таблице ниже.
Штырь Arduino |
Вывод модуля |
Датчик температуры - DHT11 |
|
Vcc |
5В |
Gnd |
Gnd |
Nc |
Nc |
Из |
Штырь 7 |
Модуль RTC DS3231 |
|
Vcc |
5В |
Gnd |
Gnd |
SCL |
Штырь A5 |
ПДД |
Штырь A4 |
Модуль SD-карты |
|
Vcc |
5В |
Gnd |
Gnd |
MISO |
Штырь 12 |
MOSI |
Штырь 11 |
SCK |
Пин 13 |
CS |
Штырь 4 |
Вы можете заменить датчик температуры DHT11 любым из ваших датчиков, с которых вам нужно регистрировать значения. Вы можете проверить LM35 с Arduino, чтобы узнать температуру.
Модуль DS3231 RTC взаимодействует с Arduino с помощью связи I2C (SCL, SDA), а модуль SD-карты подключается с помощью связи SPI (MISO, MOSI, SCK, CS). Контакты 4 и 7 определены программой Arduino как вывод CS и вывод, вы можете изменить их на любой другой вывод, если требуется. Ранее мы сопрягали SD-карту с Arduino в проекте музыкального проигрывателя.
Пояснение к программе Arduino:
Нам нужно написать программу Arduino, которая может делать следующее.
- Считайте данные с датчика DTH11 (или любые другие данные, которые вы хотите зарегистрировать).
- Инициализируйте шину I2C для чтения данных из модуля RTC.
- Инициализируйте шину SPI для взаимодействия модуля SD-карты с Arduino.
- Сохраните дату, время, температуру и влажность на SD-карте.
- Сохраните дату, время, температуру и влажность на листе Excel, запущенном на компьютере / ноутбуке.
Вышеупомянутые шаги могут показаться сложными, но они очень просты, поскольку у нас есть библиотеки, которые сделают за нас тяжелую работу. Вам необходимо загрузить следующие две библиотеки
- Библиотека датчиков DHT11 от GitHub
- Библиотека модулей DS3231 RTC от Rinky-Dink Electronics
После того, как вы скачали библиотеку, добавьте их в свою Arduino IDE, выполнив следующие действия.
Эскиз-> Включить библиотеку -> Добавить библиотеку.ZIP
Для загрузки данных из Arduino в таблицу Excel на компьютере нам также потребуется установить программное обеспечение под названием PLX-DAQ, предоставленное Parallax Inc. Перейдите по ссылке, чтобы загрузить файл и установить их на основе вашей операционной системы. Это должно было создать папку с именем PLS-DAQ на вашем рабочем столе. Мы позаботимся об этом позже в нашем рабочем разделе.
Теперь, после добавления обеих библиотек и установки программного обеспечения, вы можете использовать Полный код (приведенный в конце руководства) и загрузить их на свой Arduino. Я изо всех сил старался сделать код как можно более простым, и объяснения также даются в разделах комментариев. Далее я объясню важные сегменты ниже.
1. Чтение данных из DS3231:
DS3231 - это модуль часов реального времени (RTC). Он используется для поддержания даты и времени для большинства проектов в области электроники. Этот модуль имеет собственный источник питания для монетных элементов, с помощью которого он поддерживает дату и время, даже когда основное питание отключено или MCU прошел аппаратный сброс. Итак, как только мы установим дату и время в этом модуле, он всегда будет их отслеживать.
Использовать этот модуль очень просто благодаря библиотеке, предоставленной Arduino.
// Инициируйте DS3231 с помощью аппаратного интерфейса DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Инициализируем объект rtc rtc.begin (); // #### следующие строки можно раскомментировать, чтобы установить дату и время впервые ### / * rtc.setDOW (FRIDAY); // Установить День недели на ВОСКРЕСЕНЬЕ rtc.setTime (18, 46, 45); // Установите время на 12:00:00 (24-часовой формат) rtc.setDate (6, 30, 2017); // Устанавливаем дату на 1 января 2014 г. * /}
Примечание: при первом использовании этого модуля вам необходимо установить дату и время. Это можно сделать, просто удалив комментарии, как указано выше, и написав дату и время. Не забудьте прокомментировать их и загрузить, иначе каждый раз, когда вы запускаете доску, дата и время будут устанавливаться заново. Вы также можете использовать RTC IC DS1307 для чтения времени с помощью Arduino.
2. Чтение данных из DHT11:
DHT11 - это датчик температуры и влажности. Он последовательно отправляет значения температуры и влажности в виде 8-битных данных через выходной контакт модуля. Библиотека считывает эти данные, используя программную последовательную функцию Arduino.
#define DHT11_PIN 7 // Выходной контакт датчика подключен к контакту 7 dht DHT; // Объект датчика с именем DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Здесь я подключил выходной контакт к контакту 7, в качестве примера вы можете выбрать любой контакт, который поддерживает программный последовательный порт. Вызов DHT.read (пин-код); будет считывать значение температуры и влажности и сохранять их в параметрах DHT.temperature и DHT.Humidity соответственно. Также проверьте это измерение температуры Arduino на основе DHT11.
3. Инициализация модуля карты SC:
void Initialize_SDcard () {// проверяем, присутствует ли карта и может ли она быть инициализирована: if (! SD.begin (chipSelect)) {Serial.println ("Карта неисправна или отсутствует"); // больше ничего не делать: return; } // открываем файл. обратите внимание, что одновременно может быть открыт только один файл, // поэтому вы должны закрыть этот, прежде чем открывать другой. Файл dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // если файл доступен, записываем в него: if (dataFile) {dataFile.println ("Дата, время, температура, влажность"); // Записываем первую строку файла excel dataFile.close (); }}
Использовать SD-карту с Arduino легко благодаря библиотеке SD-карт, которая по умолчанию будет добавлена в Arduino IDE. В функции инициализации SD-карты мы создадим текстовый файл с именем «LoggerCD.txt» и запишем первую строку нашего содержимого. Здесь мы разделяем значения с помощью символа «,» в качестве разделителя. Это означает, что когда ставится запятая, это означает, что мы должны перейти к следующей ячейке в листе Excel.
4. Запись данных на SD-карту.
void Write_SDcard () {// открываем файл. обратите внимание, что одновременно может быть открыт только один файл, // поэтому вы должны закрыть этот, прежде чем открывать другой. Файл dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // если файл доступен, записываем в него: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Сохраняем дату на SD-карте dataFile.print (","); // Переход к следующему столбцу с помощью символа "," dataFile.print (rtc.getTimeStr ()); // Сохраняем дату на SD-карте dataFile.print (","); // Переход к следующему столбцу с помощью символа "," dataFile.print (DHT.temperature); // Сохраняем дату на SD-карте dataFile.print (","); // Переход к следующему столбцу с помощью символа "," dataFile.print (DHT.humidity); // Сохраняем дату на SD-карте dataFile.print (","); // Переход к следующему столбцу с помощью символа "," dataFile.println (); // Конец строки перейти к следующей строке dataFile.close ();// Закройте файл} else Serial.println ("OOPS !! Ошибка записи SD-карты"); }
Как было сказано ранее, мы намерены сохранить дату, время, температуру и влажность на нашей SD-карте. С помощью библиотеки DS3231 и библиотеки DHT11 наша Arduino сможет считывать все эти четыре параметра и сохранять их в следующих параметрах, как показано в таблице ниже.
Свидание |
rtc.getDateStr ()); |
Время |
rtc.getTimeStr ()); |
Температура |
DHT. Температура |
Влажность |
DHT. Влажность |
Теперь мы можем напрямую использовать эти параметры, чтобы сохранить их на SD-карте, используя строку печати.
dataFile.print (параметр);
Вы можете заметить, что каждый параметр разделен запятой, чтобы он выглядел удобочитаемым, и dataFile.println (); используется для обозначения конца строки.
5. Запись данных в PLX-DAQ
PLX-DAQ - это подключаемый модуль Microsoft Excel, который помогает нам записывать значения из Arduino непосредственно в файл Excel на нашем ноутбуке или ПК. Это мой личный фаворит по двум причинам:
1. Вы можете записывать и отслеживать данные одновременно, а также отображать их в виде графиков.
2. Вам не нужен модуль RTC, такой как DS3231, для отслеживания даты и времени. Вы можете просто использовать дату и время на своем портативном компьютере / компьютере и сохранить их прямо в Excel.
Чтобы использовать это программное обеспечение с Arduino, мы должны последовательно отправлять данные по определенному шаблону, так же как отображение значения на последовательном мониторе. Ключевые строки поясняются ниже:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // очищает все данные, оставшиеся от предыдущих проектов Serial.println ("LABEL, Date, Time, Temperature, Humidity"); // всегда пишем LABEL, чтобы указать его как первую строку} void Write_PlxDaq () {Serial.print ("DATA"); // всегда записывать "DATA", чтобы указать следующее как Data Serial.print (","); // Перейти к следующему столбцу, используя "," Serial.print ("DATE"); // Сохраняем дату в Excel Serial.print (","); // Перейти к следующему столбцу, используя "," Serial.print ("TIME"); // Сохраняем дату в Excel Serial.print (","); // Перейти к следующему столбцу, используя "," Serial.print (DHT.temperature); // Сохраняем дату в Excel Serial.print (","); // Перейти к следующему столбцу, используя "," Serial.print (DHT.humidity);// Сохраняем дату в Excel Serial.print (","); // Переход к следующему столбцу с помощью "," Serial.println (); // Конец строки перейти к следующей строке}
Программное обеспечение может распознавать такие ключевые слова, как LABEL, DATA, TIME, DATE и т. Д. Как показано в функции Initialize, ключевое слово «LABEL» используется для записи первой СТРОКИ листа Excel. Позже в функции записи мы используем ключевое слово «ДАННЫЕ», чтобы указать, что следующую информацию следует рассматривать как ДАННЫЕ. Чтобы указать, что мы должны перейти к следующей строке, мы должны использовать запятую («,»). Чтобы указать конец строки, мы должны отправить Serial.println ();.
Как было сказано ранее, мы можем записать системную дату и время, отправив ключевые слова «ДАТА» и «ВРЕМЯ» соответственно, как показано выше.
Примечание: не используйте серийный монитор при использовании этого программного обеспечения PLX_DAQ.
Рабочее объяснение:
Работа с регистратором данных Arduino проста. Как только оборудование и программное обеспечение готовы, пора записать программу на вашу плату Arduino. Как только ваша программа будет загружена, ваши значения температуры и влажности начнут сохраняться на вашей SD-карте. Вы должны выполнить следующие шаги, чтобы позволить PLX-DAQ регистрировать данные в таблице Excel на компьютере.
Шаг 1: Откройте файл «Plx-Daq Spreadsheet», который был создан на вашем рабочем столе во время установки.
Шаг 2: Если есть блокировка безопасности, нажмите « Параметры» -> «Включить содержимое» -> «Готово» -> «ОК», чтобы получить следующий экран.
Шаг 3: Теперь выберите скорость передачи «9600» и порт, к которому подключен ваш Arduino, и нажмите «Подключиться». Ваши значения должны начать регистрироваться, как показано на рисунке ниже.
Вы можете оставить этот лист Excel открытым и отслеживать значения по мере их регистрации. Когда это происходит, наша SD-карта также сохранит те же значения. Чтобы проверить, работает ли она, просто извлеките SD-карту и откройте ее на своем компьютере. Вы должны найти в нем текстовый файл с именем «LoggerCD.txt» . В открытом состоянии это выглядело бы примерно так.
В этом файле есть данные, но проанализировать их в блокноте будет сложно. Следовательно, мы можем открыть его в Excel как файл CSV (значения, разделенные запятыми), что сделает его более эффективным. Открыть в Excel
1. Откройте Excel. Нажмите File-> Open, выберите «All file» в правом нижнем углу и выберите файл «LoggerCD» с SD-карты. Откроется мастер импорта текста.
2. Нажмите «Далее» и выберите запятую в качестве разделителя. Снова нажмите «Далее». Тогда Готово.
3.Теперь ваши значения будут открыты в файле Excel, как показано ниже.
Я записывал значения каждые 5 секунд; вы можете записывать их в любое желаемое время, изменив функцию задержки в программе. Для детального понимания работы посмотрите видео ниже.
Надеюсь, вам понравился проект, если у вас есть сомнения, напишите их в разделе комментариев ниже, и я помогу вам.
Дополнительное улучшение - беспроводная регистрация данных с использованием Arduino:
Как только вы добьетесь успеха до этого момента, с помощью некоторых улучшений и простого добавления нескольких строк кода вы сможете регистрировать данные по беспроводной сети.
Просто подключите устройство Bluetooth, такое как HC-05, и запишите данные в PLX-DAQ через Bluetooth вместо последовательного порта. То есть заменить Serial.print (параметр); с BluetoothName.print (параметр); и подключите свой ноутбук к модулю Bluetooth, выберите COM-порт, к которому подключен ваш ноутбук через Bluetooth, и Taadaaa… У вас есть работающая беспроводная система регистрации данных в кратчайшие сроки.