Как записать данные с ардуино в текстовый файл

Обновлено: 05.07.2024

Здравствуйте! Помогите новичку! Использую плату Arduino Uno и программирую её в среде Arduino IDE 1.6.6. При помощи данного процессора считываю и обрабатываю данные с акселерометра. Задача состоит в том, чтобы данные, считанные с порта и отображающиеся в мониторе функцией Serial.print() записывались в текстовый файл на компьютер. Искала информацию в просторах интернета, но разобраться трудно, в основном находится информация по сохранению файлов на внешнюю аппаратную sd при помощи соответствующей библиотеки. Подскажите, пожалуйста, как сохранять данные в файл на компьютер.

Остання редакція siriniti (2016-02-03 20:41:26)

Йожэг Учасник Зареєстрований: 2015-12-30 Повідомлень: 95

Интересно, получится ли так:

где "COM1" надо заменить на ваш реальный виртуальный порт Arduino, а "%USERPROFILE%\Documents\comport.txt" - на путь с вашими правами на запись.

alex_dol Учасник Зареєстрований: 2015-12-28 Повідомлень: 190

Если я правильно понял - надо чтоб на компе пришедшее с ком порта записывалось в файл. В такой формулировке надо искать софт для компа: программы обработчики ком порта или терминалки умеющие писать лог в файл. К ардуино это не имеет никакого отношения.

siriniti Учасник Зареєстрований: 2016-02-03 Повідомлень: 2

Спасибо за ответы! нашла решение.

gorenkov Учасник З Кіев Зареєстрований: 2015-11-05 Повідомлень: 41

Спасибо за ответы! нашла решение.

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

NoName Customer З Київ Зареєстрований: 2014-07-08 Повідомлень: 1,446

вариант alex_dol запустить терминалку ( TerraTerm, PuTTy и другие ) а потом сохранить в файл не работает?

Остання редакція NoName (2016-02-04 20:33:25)

lkj Учасник Зареєстрований: 2016-02-03 Повідомлень: 104 NoName Customer З Київ Зареєстрований: 2014-07-08 Повідомлень: 1,446 lkj Учасник Зареєстрований: 2016-02-03 Повідомлень: 104

Для NoName.
Конечно, программа пишется под конкретное задание и потому мы любим монстров.
Особенно “монстры на каникулах”
Для простого потока с порта можете использовать любую терминалку. Например, Terminal.

Как сохранить данные, полученные с датчика, в текстовый файл на компьютере?

вы можете записать данные датчика в последовательный порт, используя serial-lib и напишите небольшую программу обработки, которая считывает данные из последовательного порта и записывает их в файл.

в коде arduino инициализировать серийный lib в методе настройки

и напишите свои значения датчика на последовательный интерфейс, используя

на стороне обработки используйте PrintWriter для записи данных, считанных с последовательного порта, в файл

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

Программа gobetwino будет регистрировать значения датчиков от Arduino до текстового файла или таблицы с минимальными усилия. Он также может автоматизировать работу на компьютере, добавлять временные метки (поэтому вам не нужно программировать их в arduino) и т. Д.

alt text

Самый простой способ - использовать последовательную библиотеку и выводить на него. Затем вы можете захватить вывод в текстовый файл с помощью программы терминала. Hyperterminal доступен в Windows, Teraterm на Linux и Z Term на OS X.

Если вы хотите записать данные датчика непосредственно в файл на вашем компьютере без необходимости копировать и вставлять выходные данные из окна последовательного монитора, попробуйте прочитать поток данных непосредственно из последовательного порта (это то, что делает последовательный монитор во всяком случае, я подозреваю). На mac /linux выполните что-то вроде:

Бог знает, что эквивалентно на машинах Windows.

Вы можете создать скрипт python для чтения последовательного порта и записать результаты в текстовый файл:

Мне стало проще и безопаснее использовать скрипт Python. Обычно я использую этот вариант на основе последовательной библиотеки . Очень часто используется также модуль datetime для добавления временных меток:

В этом уроке мы подключим датчик барометрического давления BMP280 к Arduino и запишем результаты на компьютер, используя PuTTY.

О проекте

BMP280 будет подключен с использованием I2C. Мы будем собирать данные и записывать в файл временную метку смены, считывая время, прошедшее с момента запуска Arduino.

Файл будет записан в формате CSV (значения, разделенные запятыми), который часто используется, когда данные со сходной структурой сохраняются в файл или передаются по ссылке. Он совместим с программой MS Excel и может быть просто открыт в ней, чтобы удобно отобразить значения в столбцах и строках.

Используя PuTTY, мы создадим регистратор данных для BMP280, подключенного к Arduino. Как правило, регистратор данных - это электронное устройство, используемое для записи данных с датчиков во времени и их хранения для дальнейшего использования или анализа.

Putty (скачиваем, устанавливаем, настраиваем)

PuTTY можно скачать отсюда. После того, как вы его скачаете, просто запустите программу установки и выберите место, куда вы хотите её установить.

PuTTY - эмулятор терминала. В прошлом программисты вводили и считывали информацию с мейнфреймных компьютеров с терминалами.

А некоторые из них были даже механическими и назывались телетайпами, как в "телеграфной пишущей машинке". PuTTY имеет много доступных типов соединения и протоколов передачи данных, но мы будем использовать простой RS232.

Эмуляторы терминалов широко использовались для подключения к другим удаленным компьютерам до появления Интернета.


На этот раз сконцентрируйтесь сначала на получении программы Arduino, прежде чем запускать и находить данные, записываемые в окно вашего последовательного монитора. Запишите используемый порт в самой верхней части окна (например, COM12).

Закройте окно Serial, так как мы хотим открыть этот же порт в PuTTY. Не нужно беспокоиться, потому что Arduino будет продолжать отправлять данные в порт.

Теперь откройте PuTTY и нажмите «Session» в левой части окна. Введите com-порт (например, COM12) в поле «Последовательная линия» (Serial line) в правой части окна и выберите «Последовательный» (Serial).

С левой стороны выберите "Logging" (Ведение журнала), затем выберите "Printable output" (Вывод на печать) и, возможно, выберите "Always" (Всегда).

Хорошей идеей будет поместить расширение имени файла .csv (например, 'logging.csv'), чтобы MS Excel мог его сразу распознать.

Вернитесь в окно сеанса (Session) и в поле "Сохраненные сеансы" (Saved Sessions) введите свое имя или инициалы и нажмите "Сохранить" (Save). Делая это, каждый раз, когда вы открываете PuTTY, просто выберите Saved Session (Сохраненная сессия) и нажмите кнопку "Load" (Загрузить), и вам не придется делать всё это снова.

Чтобы начать регистрацию, просто нажмите кнопку "Open" (Открыть).

Подключаем BMP280 к Arduino

Для получения более подробной информации о том, как BMP280 работает с Arduino Uno, ознакомьтесь с нашим уроком по беспроводной связи между двумя ардуинами.

Теперь подключите компоненты с помощью инструкции ниже.

BMP280UNO
VCC3.3V
GNDGND
SCLA5
SDAA4
CSBНе используется
SDDНе используется

Наглядно схема соединений будет такой:


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

Библиотеку Adafruit BMP280 можно скачать с нашего сайта отсюда или с Github.

Скетч Ардуино

Скетч (эскиз) для Ардуино Уно скопируйте ниже:

Для этих эскизов я не использовал объект String (строка) Arduino. Серьезные программисты избегают этого на самом деле и предпочитают использовать символьные строки типа C (C-type). Подробнее о том, почему следует избегать объекта string мы поговорим в следующих уроках.

Функция loop() начинает работу с сброса dataStr до 0, чтобы обновить его, а затем получает метку времени с помощью функции millis() (количество миллисекунд, прошедших с момента нашего запуска). Теперь его нужно добавить в конец dataStr , за которым следует переменная, разделенная запятыми.

strcat() немного сбивает с толку, так как дает нечто подобное:

Но на самом деле буфер является временным хранилищем для хранения результата.

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


На этот раз закройте окно последовательного порта Arduino (PuTTY не откроет порт, если Arduino держит его открытым). Откройте PuTTY и нажмите «Открыть».

После этого Arduino выйдет из последовательного порта, поэтому вы должны увидеть что-то вроде этого:


PuTTY дает вам возможность добавить или перезаписать ваш файл. После сохранения вы можете открыть файл в MS Excel.

Во втором уроке просвещенном работе с SD картой . Научимся создавать и удалять файлы с помощью Arduino. Также запишем информацию в файл и считаем её. Как получить информацию о карте памяти и файлах хоронящихся на карте смотрите в предыдущем уроке: Урок13. Библиотека SD Arduino. Выводим информацию о SD карте.

Для роботы нам понадобится библиотека SD.h которую можно установить через менеджер библиотек.

библиотека SD.h которую можно установить через менеджер библиотек

Для урока нам понадобиться:

Подключаем SD-модуль к Arduino UNO по такой схеме.

Подключаем SD-модуль к Arduino UNO по такой схеме.

Давайте создадим файл на флешке, для этого используется функции SD.open(). Которая открывает файл на SD карте. Если файл открывается для записи, и если он еще не существует, то он будет создан (но содержащий его каталог уже должен существовать).

Remove() - Удаляет файл.

SD.exists() - проверяет существует ли файл.

Простой пример скетча для создания и удаления файлов с помощью библиотеки SD.

После загрузке в мониторе порта мы увидим вот такую информацию.

создания и удаления файлов с помощью библиотеки SD.

Сперва мы проверяем на существование файла, создаем файл. Проверяем еще раз, что файл создан. Удаляем файл. И проверяем, что файла больше нет на карте памяти.

Если нам не нужно удалять файл, можно закомментировать строку отвечающую за удаления и уведомления, что будем удалять файл тоже лучше закомментировать.

Сейчас наш файл создан и не удален. С ним можно работать.

Сейчас наш файл создан и не удален. С ним можно работать.

Давайте создадим файл и запишем информацию в него. Код будит не очень сильно измене.

В мониторе порта мы увидим, что файл создан и удачно сохранился наш текст.

В мониторе порта мы увидим, что файл создан и удачно сохранился наш текст.

Если перезагрузить Arduino. То текст запишется еще раз в файл.

Если перезагрузить Arduino. То текст запишется еще раз в файл.

Это отличное решение для сохранения показаний с датчика.

В некоторых приложениях на Arduino полезно иметь возможность локально сохранять и извлекать информацию. Вы можете сделать это с помощью Secure Digital, или SD, карты. SD карта – это энергонезависимая карта памяти, широко используемая в портативных устройствах, таких как мобильные телефоны, цифровые фотоаппараты, навигационные устройства GPS, карманные консоли и планшетные компьютеры. Другой тип SD карт – это карта microSD. Это самая маленькая карта памяти, ее размеры составляют 15 мм x 11 мм x 1 мм. Это примерно четверть размера SD карты обычного размера.

Карта памяти microSD

Карта памяти microSD

Для подключения карты памяти microSD к нашей плате Arduino Mega мы будем использовать плату расширения Ethernet shield со встроенным слотом microSD. Однако, есть множество других плат расширения, доступных для других типов SD карт.

Распиновка карты памяти microSD

Распиновка карты памяти microSD

Как показано на рисунке выше, карта памяти microSD имеет 8 выводов. Описание каждого вывода приведено в таблице ниже.

Описание выводов карты памяти microSD
Номер выводаНазваниеОписание
1NCне подключен
2CSвыбор чипа / выбор ведомого (SS)
3DIвыход мастера / вход ведомого (MOSI)
4VDDнапряжение питания
5CLKтактовый сигнал (SCK)
6VSSземля
7DOвход мастера / выход ведомого (MISO)
8RSVзарезервировано

Если вы решили попробовать подключить SD карту самостоятельно, то убедитесь, что подключили выводы SD карты к соответствующим выводам платы Arduino. Так как мы используем имеющуюся в продаже плату расширения, то у нас с этим проблем нет. Всё, что нам нужно сделать, это сконфигурировать вывод Arduino, использующийся по умолчанию, как CS (выбор чипа), для работы в качестве выхода. В нашей Arduino Mega это вывод 53. На плате расширение Ethernet shield выводом CS является вывод 4. Вы должны правильно указать это в коде для SD карты.

Эксперимент 1

В этом эксперименте мы рассмотрим, как прочитать файл с SD карты.

Комплектующие

Для чтения с SD карты мы будем использовать библиотеку SD.h . Данный код предполагает, что файл " ourfile.txt " уже записан на SD карту.

Эксперимент 2

В этом эксперименте мы рассмотрим, как создать файл, записать его, а затем прочитать его с SD карты.

Комплектующие

Мы будем использовать то же самое аппаратное обеспечение, что и в предыдущем эксперименте.

Чтобы записать файл на SD карту и прочитать его же, мы снова будем использовать библиотеку SD.h .

Читайте также: