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

A0 аналоговому порту платы Arduino.11, 12, и 13. CS пин может быть подключен к произвольному цифровому пину. Мы выбрали 10.Создайте новый проект в XOD и назовите его как-нибудь, вроде temparature-log.
thermometer-tmp36 к патчу. Этот термометр должен быть подключен к аналоговому порту Arduino. Мы подключили наш датчик к A0, поэтому установите значение пина PORT на A0.system-time ноду. Эта нода отображает время в секундах, прошедшее с момента запуска программы. Если мы хотим непрерывно обновлять данные, нам лучше нумеровать каждую новую запись. count нода будет делать это для нас. Поместите её на патч и установите STEP значение на 1.Сейчас у нас есть три источника данных на патче.

Нам нужно установить частоту обработки данных, чтобы ограничить объем считываемых данных и дать некоторое время, чтобы плата microSD очистилась после каждой записи. Самый простой способ сделать это - использовать clock ноду. Поместите её на патч и соедините со всеми тремя источниками данных.

IVAL пин отвечает за частоту генерации импульсов, и, как следствие, для получения нового объема данных. Мы решили получать и записывать данные 4 раза в секунду, поэтому мы установили IVAL значение 0.25 (=¼).
Мы прогнозируем получение большого колличества данных. Для упрощения обработки рекомендуется отформатировать их как таблицу. Каждая строка будет представлять собой одну запись: номер записи, отметку времени записи и значение температуры, считанное в этот момент. Чтобы объединить все значения данных и сохранить их, как одну строку, используйте join ноду. Поместите ноду join на патч и соедините её со всеми источниками данных.

D пин ноды join используется для разделения значений. С помощью этого пина вы можете установить символ или строку, которые вы хотите разграничить.
Существует множество текстовых форматов для хранения и обмена данными. Примерами таких форматов являются CSV (Comma-Separated Values) или TSV ((Tab-separated values)). Эти текстовые форматы используются для хранения табличных данных и обмена ими между различными компьютерными программами. В частности, приложения для работы с электронными таблицами, такие как Google Spreadsheets, Microsoft Excel, LibreOffice Calc, могут легко импортировать такие файлы. Посмотрите пример файла CSV, который определяет длительность треков для музыкального альбома:
No.,Title,Length
1,Hells Bells,5:12
2,Shoot to Thrill,5:17
3,What Do You Do for Money Honey,3:35
4,Givin’ the Dog a Bone,3:31
5,Let Me Put My Love into You,4:15
6,Back in Black,4:15
7,You Shook Me All Night Long,3:30
8,Have a Drink on Me,3:58
9,Shake a Leg,4:05
10,Rock And Roll Ain’t Noise Pollution,4:15
Итак, давайте использовать текстовый формат TSV для хранения. Чтобы разграничить значения с вкладками, поместите \t символ в D пин ноды join. \t представляет собой специальную последовательность для обозначения TAB символа, поскольку ее нельзя легко распечатать и отобразить в среде IDE.
В XOD существует нода sd-log для добавления текстовых строк в конец указанного файла, хранящегося на SD-карте. Добавьте ноду sd-log в патч и настройте её входы:
Свяжите входной пин LINE с выходным пином ноды join.
CS пин используется для указания порта SPI интерфейса на Arduino плате. В этом примере это D10.
FILE пин указывает название файла на карте MicroSD. Назовем наш файл данных temp-log.txt.
W пин запускает новую запись. Соедините его с DONE пином термометра. С помощью этого линка в sd-log создается новая запись только при появлении нового значения температуры.
Вот результирующий программный патч.

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

Когда будет собрано достаточно данных, вытащите карту microSD.
Откройте temp-log.txt файл на своем компьютере, чтобы узнать, что получилось.

Как видите, у нас есть таблица с тремя столбцами и множеством строк. Одна строка для одного образца. В первом столбце хранится номер записи (просто игнорируйте 00 части), второй столбец - это значение времени в секундах, а последнее - фактическая температура в градусах Цельсия. Вы можете использовать различные приложения для анализа данных. В нашем эксперименте мы будет использовать Google Spreadsheets.
Вы можете перемещать значения данных в электронную таблицу по-разному:
temp-log.txt файла, нажав CTRL+A в текстовом редакторе. Скопируйте то, что вы выбрали, нажав CTRL+C. Создайте новый документ Google Spreadsheet, выберите первую ячейку в таблице и нажмите CTRL+V.File -> Import.. -> Upload. Выберите temp-log.txt файл с карты microSD или перетащите его в поле. Выберите Tab тип разделителя и импортируйте данные.
После ввода данных вы можете визуализировать их.
Insert -> Chart.Chart type. Мы выбрали Smooth line chart.X-AXIS и выберите столбец времени в качестве данных.SERIES и выберите столбец температуры в качестве данных.CUSTOMIZE -> Chart & axis title.Temperature, C и Time.(10,90) значение для Temperature, C оси и (0,3000) для оси Time .Series и выбрав цвет.
На графике вы можете четко видеть изменение температуры после наших манипуляций с термометром.
Если у вас возникли проблемы с попыткой повторить эксперимент, загрузите готовый проект и откройте его в среде IDE.
С картой microSD вы можете сохранять значительные объемы данных, которые иначе не могут быть сохранены в памяти контроллера. Вы можете использовать любой другой датчик или даже несколько разных датчиков для регистрации и наблюдения за физическими процессами по вашему выбору.
Чтобы улучшить отображение работы устройства, используйте led и delay ноды связанные с ERR и DONE пинами чтобы ваше устройство четко показывало поступление записей без каких либо проблем или возникновение ошибки ( из-за сбоя / нехватки места / плохой SD-карты или неправильного соединения).