Регистратор данных для ардуино

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Простой регистратор данных на Arduino с модулем SD-карты

Одним из вариантов применения платы Arduino может быть сбор и обработка данных от различных датчиков. Для такого приложения внутренней памяти (как flash, так и энергонезависимой памяти EEPROM) микроконтроллера ATmega, используемого в Arduino, будет явно недостаточно. Тем более в некоторых случаях эти зарегистрированные данные необходимо прочитать и проанализировать на другом устройстве, например, на компьютере.

Тогда остается только запись информации на какой-либо внешний съемный накопитель, и самым удобным и дешевым вариантом является использование SD-карты. В этом материале будет показано, как своими руками сделать простейший регистратор данных с помощью платы Arduino Uno и модуля для работы с SD-картами.

Передача информации между Arduino и модулем для SD-карт осуществляется по протоколу SPI. Подключение этих двух устройств довольно простое:

5 V — 5 V (VCC)
GND — GND
D13 — SCK
D12 — MISO
D11 — MOSI
D10 — CS

Теперь в Arduino IDE нужно подключить библиотеку SdFat-master, которую можно скачать здесь. Разархивируйте содержимое zip-файла библиотеки в папку Libraries, находящуюся в каталоге Arduino IDE. Перед использованием SD-карты обязательно отформатируйте ее, например, в формате FAT16 или FAT32. После этого можете вставить ее в слот модуля.

Для того, чтобы проверить работоспособность модуля и SD-карты, в примерах выберете SdInfo. Соедините Arduino с компьютером посредством кабеля USB и загрузите скетч.

Затем откройте монитор последовательного порта, введите любой символ и нажмите Enter. После этого будет выведена информация по подключенной SD-карты.

Теперь можно приступить к записи данных непосредственно на SD-карту. Для начала откройте скетч Datalogger (File — Examples — SD — Datalogger) и загрузите его в Arduino. Этот скетч считывает информацию с трех аналоговых входов и записывает ее на карту памяти в текстовый файл datalog.txt, который можно открыть на компьютере. Запись данных можно наблюдать в мониторе последовательного порта.

Теперь можно создать свой логгер данных, подключив датчик температуры LM35. Схема подключения показана ниже.

Источник

Регистратор температуры Arduino с модулем SD-карты

в Ардуино 0 12,097 Просмотров

В этом посте показано, как создать регистратор данных Arduino. Мы будем использовать DHT11 для измерения температуры, модуль часов реального времени (RTC) для отметок времени и модуль SD-карты для сохранения данных на SD-карте.

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

Вот полный список частей, необходимых для этого проекта:

  • Arduino UNO
  • Модуль SD-карты
  • Микро SD-карта
  • Датчик температуры и влажности DHT11
  • RTC модуль
  • Макетная плата
  • Перемычки

Примечание: в качестве альтернативы модулю SD-карты вы можете использовать Data Logging Shield. Data Logging Shield поставляется со встроенным RTC и зоной прототипирования для паяных соединений, датчиков и т. д.

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

На следующем рисунке показана схема для этого проекта.

Установка библиотеки датчиков DHT

Для этого проекта вам необходимо установить библиотеку DHT для чтения с датчика DHT11.

  1. Нажмите здесь, чтобы загрузить библиотеку DHT-sensor. У вас должен быть файл .zip в папке «Загрузки»
  2. Разархивируйте .zip, и вы получите папку DHT-sensor-library-master
  3. Переименуйте вашу папку в DHT
  4. Переместите папку DHT в папку библиотек установки Arduino IDE
  5. Наконец, снова откройте ваш Arduino IDE

Скетч

Скопируйте следующий код в Arduino IDE и загрузите его в свою плату Arduino.

В этом коде мы создаем функцию loggingTime () и функцию loggingTempera (), которые мы вызываем в loop () для записи времени и температуры в файл DATA.txt на SD-карте.

Откройте Serial Monitor со скоростью 9600 бод и проверьте, все ли работает правильно.

Получение данных с SD-карты

Позвольте этому проекту работать в течение нескольких часов, чтобы собрать приличный объем данных, и когда вы будете довольны периодом регистрации данных, выключите Arduino и извлеките SD из модуля SD-карты.

Вставьте SD-карту в компьютер, откройте ее, и у вас должен быть файл DATA.txt с собранными данными.

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

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

Это отличный проект, чтобы узнать, как использовать модуль SD-карты с Arduino для создания регистратора данных. Вы можете применить эту концепцию практически в любом проекте, который вам нравится.

Источник

Как я логгер собирал на SD card Shield V2.0

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

Задача, действительно, была простейшая. Но как всегда все срочно. Тратить деньги на промышленный логгер не хотелось, а в запасе оказалась платка Ардуино УНО. Пятиминутное прогугливание вопроса и нашелся подходящий шильдик, который прекрасно подходил для этой задачи. Промышленный газоанализатор ДОГ-4, который необходимо было подключить к логгеру, имеет лишь выводы на бумажные самописцы. Выводы токовые 0..5 мА для каждого анализируемого газа (NO и SO2).
Кстати, газоанализатор оптический — отличная и надежная конструкция, но морально устаревшая электроника внутри портит все дело. Задача была пологгировать данные в течение недели и записать их в электронном виде для расчетов технологам. Больше подробностей не сказали.
Найденный в Интернете шильдик был заказан в этом (кстати, очень неплохом) магазине и буквально на следующий день был доставлен в Томск из Новосибирска. Шильдик по описанию очень удобный, имеет площадку для прототипирования, которую я надеялся использовать в этом простом проекте. Достаточно нагрузить токовые выводы самописцев, к примеру, на резисторы 1 кОм, подтянутые в земле и получишь цифровые данные с прибора для всего диапазона измерений. Разрядности ADC в 10 бит Ардуино вполне устраивало технологов (еще бы, с бумажных лент скалывать данные куда веселее). Пришла посылка, красивая упаковка, описание как в интернет магазине. Указано наличие площадки для прототипирования, на которую необходимо было подпаять лишь два резистора.

Уже задумавшись о том, чтобы начать самому программировать корректную работу данного устройства, я вспомнил о том, что в версиях Arduino IDE 1.0+ разработчики везде по какой-то причине стали использовать дефиницию #include «Arduino.h» вместо #include «WProgram.h» и поэтому старые библиотеки перестали работать в поздних версиях Arduino IDE. Вернувшись к библиотеке с сайта производителя я обнаружил, что именно по этой причине я не могу её «завести». Лечится ситуация достаточно просто. В файлах с расширениями .h и .cpp необходимо строку #include «WProgram.h» заменить на такую конструкцию

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

Окончательный код моего логгера для газоанализатора вряд ли будет интересен для поста, но привожу для ознакомления простенький пример. Так будет выглядеть рабочий код для записи данных на SD карту, который будет писать в файл каждые 5 секунд фразу «Hello, Habrahabr!»

Несколько важных замечаний. Перед тем, как начать запись необходимо отформатировать карточку (FAT16) и открыть пустой файл с названием, которое будет использоваться в программе. В примере это data.log. Не выдергивайте карту из шильдика на «горячую». Лучше предусмотреть программное отключение питания командой digitalWrite(MEM_PW, LOW);
Если ваши данные переменной длины, используйте вычисление длины строки. В примере это unsigned long length = sizeof(buffer)-1. Неточности в длине фраз приводят к сбою процесса записи и можно получить вместо данных битый файл.

Шильдик оказался вполне рабочим. Прекрасная скорость записи данных. Конечно, не очень приятно, что описание не соответствует действительности, но это даже забавляет и дает возможность немного пораскинуть мозгами. Кстати, этот же шильдик можно использовать и для мини SD. Разъем для такой карты находится с обратной стороны.

Источник

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

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

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

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

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

  1. Плата Arduino Uno (купить на AliExpress) (или любая другая).
  2. Датчик температуры и влажности DHT11 (купить на AliExpress).
  3. Модуль часов реального времени DS3231 RTC (купить на AliExpress).
  4. Модуль для чтения SD карт (купить на AliExpress).
  5. SD карта.
  6. Макетная плата.
  7. Соединительные провода.
  8. Компьютер/ноутбук.

Работа схемы

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

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

контакт 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 чтобы получить следующий экран.

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

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

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

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

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

Источник

Adblock
detector