Оглавление:
- Шаг 1. Использование миллисекундных временных меток Arduino, Millis ()
- Шаг 2. Добавление диаграммы в меню
- Шаг 3: Редактирование источника сюжета и таблиц
- Шаг 4: выбор формата даты / времени
- Шаг 5: Создайте и протестируйте эскиз Arduino
- Шаг 6: Как PfodApp отображает дату / время в миллис ()?
- Шаг 7. Воспроизведение графиков даты и времени на вашем компьютере
- Шаг 8: Как избежать ограничения в 49,7 дней в миллис () и почему этого не следует делать
- Шаг 9: Использование часов реального времени (RTC)
- Шаг 10: Использование модуля GPS
- Шаг 11: Заключение
Видео: Построение / регистрация даты / времени Arduino с использованием Millis () и PfodApp: 11 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Программирование на Arduino или Android не требуется. Также поддерживаются модули RTC и GPS. Автоматическая коррекция часовых поясов, смещения часов реального времени и отсутствия дополнительных секунд GPS
Вступление
Из этого туториала Вы узнаете, как использовать временные метки Arduino millis () для сопоставления данных с датой и временем на мобильном устройстве Android с помощью pfodApp.
Не требуется программирования для Arduino или Android. pfodApp также регистрирует достаточно данных, чтобы вы могли позже воспроизвести графики даты и времени в электронной таблице.
НИКАКИХ модулей RTC или GPS не требуется, однако, если в вашем проекте Arduino есть RTC (часы реального времени) или модуль GPS, их также можно использовать. В этих случаях графики pfodApp автоматически исправят часовой пояс, смещение RTC и недостающие секунды координации GPS. Для этих исправлений не требуется специального кода Arduino. Как всегда с pfodApp, полученные данные регистрируются в том виде, в каком они есть, без исправлений, однако файл журнала также содержит достаточно информации, чтобы вы могли внести эти исправления самостоятельно при загрузке журналов на свой компьютер. См. Ниже примеры этой постобработки.
Поддерживается большое количество форматов времени и даты по оси X, все из которых полностью контролируются короткими текстовыми строками в вашем эскизе Arduino. Никакого программирования под Android не требуется.
pfodApp будет подключаться через Wi-Fi, Bluetooth Classic, BLE и SMS. Бесплатный pfodDesigner генерирует полные эскизы Arduino для построения / регистрации даты / времени для подключения к большому количеству плат. Никакого программирования Arduino не требуется.
Это руководство будет использовать Adafruit Feather52 в качестве примера платы Arduino, которая подключается через BLE.
Это руководство охватывает три случая: - 1) Ваш проект микропроцессора имеет только миллисекундные отметки времени - millis () 2) Ваш проект микропроцессора имеет часы реального времени (RTC) - pfodApp автоматически корректирует отклонение. 3) В вашем микропроцессорном проекте есть модуль GPS - pfodApp автоматически корректирует дополнительные секунды по мере их появления (в настоящее время 18 секунд по состоянию на 2018 год).
Шаг 1. Использование миллисекундных временных меток Arduino, Millis ()
Использование миллисекунд для даты и времени состоит из двух частей. Одна предназначена для построения графика данных по истекшему времени или дате / времени, а другая часть - это воссоздание даты и времени из зарегистрированных миллисекундных временных меток сырых данных. pfodApp не изменяет необработанные данные, полученные от pfodDevice (Arduino micro). Он просто регистрирует точно полученные байты.
Сначала используйте бесплатный pfodDesigner, чтобы сгенерировать эскиз Arduino для вашего микроконтроллера, который будет отправлять миллисекунды и измерения данных в pfodApp для построения / записи. В этом примере создается меню для доски Adafruit Feather 52 BLE, которое читается как A0. Учебник по Adafruit Feather nRF52 LE - Пользовательские элементы управления с pfodApp проходит через шаги pfodDesigner для создания меню для Feather nRF52, которое включает кнопку «Диаграмма», поэтому ознакомьтесь с подробностями. В этом руководстве мы добавим только кнопку диаграммы и будем использовать новые параметры формата оси X для построения графика значений A0 относительно прошедшего времени и даты / времени.
В первой части этого руководства мы рассмотрим использование бесплатного pfodDesigner для создания образца диаграммы даты / времени на вашем мобильном устройстве Android. Когда вы будете удовлетворены отображением, вы можете сгенерировать эскиз Arduino, который воспроизведет его при подключении к pfodApp. Никакого программирования под Android не требуется, и поскольку pfodDesigner генерирует полные эскизы Arduino для самых разных плат Arduino, программирование Arduino также не требуется.
Шаг 2. Добавление диаграммы в меню
Загрузите приложение pfodDesigner из Google Play, откройте его и нажмите «Начать новое меню».
Щелкните «Target Serial», а затем кнопку «Bluetooth Low Energy», чтобы отобразить список из 11 плат BLE (прокрутите вниз, чтобы увидеть другие варианты). Выберите на Adafruit Bluefruit Feather52.
Вернитесь в меню «Редактирование», нажмите «Редактировать подсказку» и установите подходящую подсказку для этого меню, например «Feather52» и текст жирный, размер +7. Цвет фона был оставлен белым по умолчанию.
Вернитесь и нажмите «Добавить элемент меню», прокрутите вниз и выберите «Кнопка диаграммы», чтобы открыть экран редактирования кнопки диаграммы. Здесь вы можете изменить внешний вид кнопки. В этом случае текст кнопки был изменен на «График даты / времени A0», а другие значения по умолчанию были оставлены как есть.
Это дает вам кнопку в меню, которая открывает экран диаграммы.
Шаг 3: Редактирование источника сюжета и таблиц
Нажмите кнопку «График даты / времени A0», чтобы открыть экран редактирования графиков, где вы можете получить доступ к метке диаграммы, формату оси X, интервалу данных графика и (путем прокрутки вниз) к самим настройкам графика. Измените метку диаграммы на что-нибудь подходящее, например «A0 Вольт».
Прокрутите вниз и для графиков 2 и 3 откройте «Изменить график» и нажмите «Скрыть график», чтобы удалить их с отображения диаграммы.
Затем нажмите «Редактировать график 1» и установите метку графика (например, A0), единицы yAxis (например, вольт), отобразите максимум 3,6 В и подключитесь к контакту ввода / вывода A0.
Прокрутите назад и нажмите «Предварительный просмотр диаграммы», чтобы перейти к последним 0 точкам выборки данных с интервалом в 1 секунду, построенным в зависимости от прошедшего времени в минутах: секундах.
Для всех графиков прошедшего времени начальные нулевые единицы не отображаются, поэтому на этом графике только для тех времен> 1 мин показаны ведущие минуты.
Шаг 4: выбор формата даты / времени
Для графиков прошедшего времени ведущая единица просто продолжает увеличиваться с течением времени. Чтобы увидеть пример этого, вернитесь к экрану «Редактирование графиков» и увеличьте интервал данных графика до 15 минут (внизу этого экрана).
Затем нажмите «Предварительный просмотр диаграммы», чтобы отобразить те же данные выборки, но теперь с 15-минутными интервалами между выборками. Как видите, минутная часть mm: ss продолжает увеличиваться.
Теперь вернитесь и нажмите кнопку оси X, чтобы отобразить небольшой выбор всех возможных форматов данных / времени оси X (прокрутите вниз, чтобы узнать больше).
Выше представлены предварительные просмотры диаграмм с использованием различных форматов оси X.
Графики даты и времени, показанные здесь, находятся в «местном» часовом поясе. Существуют также параметры формата для отображения даты / времени в формате UTC. Полный набор возможных вариантов формата даты / времени см. В pfodSpecification.pfd.
Шаг 5: Создайте и протестируйте эскиз Arduino
Как только вы будете довольны форматом вашей диаграммы и интервалом данных, вы можете перейти к экрану «Редактирование Меню_1», прокрутить вниз и «Сгенерировать код» для выбранной вами целевой доски. Вот образец скетча для Adafruit Feather52 с использованием интервалов данных в 1 секунду и формата прошедшего времени mm: ss, pfodFeather52_timeplot.ino
Выше сюжет A0 от Feather52
Изменение формата на Weekday hr: mins: sec (~ E HH: mm: ss) и повторная генерация кода (pfodFeather52_dateplot.ino) дает график, подобный второму выше.
Вы можете редактировать формат оси X прямо в эскизе Arduino, как описано ниже.
Шаг 6: Как PfodApp отображает дату / время в миллис ()?
Когда pfodApp подключается, он запоминает свое «местное» время и время в формате UTC и запрашивает текущие временные метки данных графика pfodDevice (платы Arduino). Используя эту информацию, pfodApp может затем построить миллисекундные временные метки либо как прошедшее время, то есть преобразовать миллисекунды в часы, минуты, секунды и т. Д., Либо построить дату и время, которые представляют миллисекундные временные метки относительно того, когда было установлено соединение и было запрошено текущее время pfodDevice.
Если посмотреть на эскиз, сгенерированный Arduino (например, pfodFeather52_dateplot.ino), можно увидеть три небольших фрагмента кода, которые обрабатывают сторону Arduino графиков.
Раздел кода loop (), который обрабатывает запрос текущего времени {@} pfodApp.
// обрабатываем {@} запрос} else if ('@' == cmd) {// pfodApp запросил "текущее" время plot_mSOffset = millis (); // фиксируем текущие миллисекунды как смещение меток времени rawdata parser.print (F ("{@` 0} ")); // возвращаем `0 как 'текущие' миллисекунды сырых данных
Вы можете просто вернуть текущее значение millis (), но millis () возвращается к 0 каждые 49,7 дней, что заставит график прыгнуть назад. Поэтому вместо этого код запоминает текущее значение millis (), когда был сделан запрос {@}, и возвращает {@ `0}, то есть текущую временную метку в миллисекундах, равную нулю. Затем при отправке точек сырых данных скетч использует
plot_1_var = analogRead (A0); // считываем входные данные для построения графика // plot_2_var plot Hidden, поэтому здесь не назначены данные // plot_3_var plot Hidden, поэтому здесь не назначены данные // отправляем данные графика в формате CSV parser.print (millis () - plot_mSOffset); // время в миллисекундах ….
так что миллисекундная временная метка, отправляемая с данными, начинается с 0 и увеличивается до 49,7 дней. Если вы будете постоянно оставаться на связи в течение 49,7 дней, вы увидите, что график перескочит назад на ~ 50 дней. Отключение и повторное подключение каждые 49,7 дней позволяет избежать этого.
Третья часть графика даты / времени - это сообщение графика.
} else if ('A' == cmd) {// нажал пользователь - 'График даты / времени A0' // в главном меню Menu_1 // возвращаем построение графика msg. parser.print (F ("{= A0 Volts ~ E HH: mm: ss | date | A0 ~~~ Volts ||}"));
Когда пользователь нажимает кнопку «График даты / времени A0», pfodApp отправляет команду {A} в pfodDevice, а pfodDevice отвечает сообщением графика, {=… {= A0 Volts ~ E HH: mm: ss | date | A0 ~~~ Volts ||}, который содержит формат оси X E HH: mm: ss
Здесь приемлемы форматы Java SimpleDateFormat. pfodApp Data Logging and Plotting и pfodSpecification.pdf содержат более подробную информацию о сообщении о графике.
Шаг 7. Воспроизведение графиков даты и времени на вашем компьютере
По умолчанию pfodApp регистрирует все входящие необработанные данные в файле журнала на вашем мобильном телефоне, если вы не отключили это ведение журнала на экране редактирования соединения, см. PfodAppForAndroidGettingStarted.pdf
Когда вы редактируете pfodApp, отображается краткое сообщение с местоположением и именем файла журнала, например /pfodAppRawData/pfod_bluefruit52.txt Этот файл находится в формате CSV, разделен запятыми, и после передачи его на ваш компьютер (параметры передачи см. в pfodAppForAndroidGettingStarted.pdf), вы можете открыть его в электронной таблице для построения данных.
Вот несколько первых строк файла журнала.
// pfodApp V3.0.360, местное время, UTC, мс в день, текущее время pfod bluefruit52 (мс), текущее время pfod bluefruit52, // подключено в, 2019/04/20 11: 32: 50.238, 2019/04/20 01: 32: 50.238, 86400000, 0, 366, 0,25`` 1366, 0,29`` 2366, 0,31`` 3366, 0,33`` 4366, 0,33``
Выше вы можете увидеть «местное» и универсальное время, когда pfodApp подключился к Feather52, а также текущее время в мс, которое Feather52 сообщил в ответе {@..}. Последний столбец пуст, потому что нет RTC или GPS, поэтому Feather52 не сообщил о текущем времени в формате гггг / мм / дд.
Чтобы построить график зависимости данных от прошедшего времени, вычтите текущее время (мс) из миллисекундной отметки времени, а затем разделите на значение мс в день. Вот таблица с добавленной формулой и нанесенным результатом. Таблица ниже (pfod_bluefruit52.xls) представляет собой электронную таблицу OpenOffice, сохраненную в формате Excel.
В OpenOffice график представляет собой точечную диаграмму, а ось x графика была отформатирована в формате ЧЧ: ММ: СС. Примечание: форматы даты и времени электронной таблицы НЕ совпадают с форматами графика, используемыми pfodApp. Например, в pfodApp MM - это месяцы, а mm - минуты.
Для построения графика по дате и времени вам нужно только добавить время соединения ко времени электронной таблицы и выполнить повторное построение графика. (pfod_bluefruit52_date.xls)
Примечание. Местное время и всемирное координированное время были импортированы в мою электронную таблицу в виде текста, поэтому мне нужно было удалить ведущие символы перед использованием их в формуле.
Шаг 8: Как избежать ограничения в 49,7 дней в миллис () и почему этого не следует делать
Как упоминалось выше в разделе «Как pfodApp строит дату / время из millis ()?», Если вы остаетесь подключенным непрерывно в течение более 49,7 дней, миллисекундные отметки времени вернутся к нулю. Этого можно избежать с помощью нескольких строк кода, но это не рекомендуется.
Во-первых, как избежать заворачивания. Добавьте еще одну переменную типа unsigned int, чтобы отслеживать, сколько раз метки времени оборачиваются, и распечатать объединенный результат в HEX.
uint_t mSwrapCount = 0; uint32_t lastTimeStamp = 0;
… Plot_1_var = analogRead (A0); // считываем ввод для построения графика // plot_2_var plot Hidden, поэтому здесь не назначены данные // plot_3_var plot Hidden, поэтому здесь не назначены данные // отправляем данные графика в формате CSV uint32_t timeStamp = millis () - plot_mSOffset; if (timeStamp <lastTimeStamp) {// timeStamp возвращен в 0 mSwrapCount ++; // добавляем единицу в счетчик} lastTimeStamp = timeStamp; parser.print ("0x"); parser.print (msWrapCount, HEX); parser.print (timeStamp, HEX); // время в миллисекундах в HEX….
При возврате ответа {@.. также очистите mSwrapCount.
// обрабатываем {@} запрос} else if ('@' == cmd) {// pfodApp запросил "текущее" время plot_mSOffset = millis (); // захватить текущие миллисекунды как смещение меток времени rawdata mSwrapCount = 0; // очистить счетчик переносов. parser.print (F ("{@` 0} ")); // возвращаем `0 как 'текущие' миллисекунды сырых данных
Временные метки теперь будут давать «правильное» значение для следующих 40,7 дней * 65536 ~ = 7308 лет.
pfodApp автоматически преобразует шестнадцатеричные метки времени для построения и регистрирует их точно в том виде, в котором они были получены, то есть в шестнадцатеричном формате. В электронной таблице (OpenOffice) вы используете эту формулу для преобразования шестнадцатеричной строки в A2 в mS (где A1 - любая пустая ячейка) = HEX2DEC (REPLACE (A2; 1; 2; A1))
Почему ты не хочешь этого делать
Как показано выше, временные метки mS легко увеличить до более чем 50 дней. Однако вы, вероятно, не захотите этого делать, потому что они становятся все более неточными. Типичный кристалл с частотой 16 МГц, используемый для создания результатов millis () на микроконтроллере, имеет точность ~ 50 ppm (частей на миллион). Это означает, что через 49,7 дней отметка времени миллисекунды может быть неточной на 3 ½ минуты, и это игнорирует влияние температуры на точность кристалла.
В течение коротких периодов подключения такая неточность не является проблемой, поскольку ответ {@.. повторно синхронизирует отметку времени в миллисекундах с датой / временем мобильного устройства при каждом повторном подключении. Однако, если вы хотите оставаться на связи в течение длительных периодов времени (дней) и непрерывно регистрировать данные, вам следует использовать что-то более точное, чем встроенный millis (), например модуль RTC или GPS.
Шаг 9: Использование часов реального времени (RTC)
Доступен ряд модулей RTC, одним из наиболее точных является DS3231, например. Модуль Adafruit DS3231. Заявленная точность составляет +/- 2 ppm в диапазоне от 0 до 40 ° C. т.е. ~ +/- 5 сек / месяц.
Если вы хотите построить данные с отметками времени и даты, например 2019/04/19 20: 4: 34, тогда вам нужно изменить ответ {@, чтобы он возвращал текущую дату / время, например {@ `0 ~ 2019/4/19 3: 33: 5}. Вот несколько примеров изменений кода, которые можно применить к эскизу, созданному pfodDesigner для использования модуля RTC, при условии, что вы используете библиотеку RTClib и добавили код, инициализирующий модуль RTC.
// обрабатываем {@} запрос} else if ('@' == cmd) {// pfodApp запросил "текущее" время plot_mSOffset = millis (); // фиксируем текущие миллисекунды как смещение меток времени rawdata parser.print (F ("{@` 0 "}); // возвращаем` 0 как 'текущие' миллисекунды сырых данных parser.print ('~'); // начальная строка date / time DateTime now = rtc.now () sendDateTime (& now); // отправляем yyyy / M / d / H: m: s в parser.print, передаем адрес & как аргумент parser.print ('}'); // конец {@ ответа, например {@ `0 ~ 2019/4/19 3: 33: 5}….
// отправляем дату и время парсеру printvoid sendDateTime (DateTime * dt) {parser.print (dt-> year (), DEC); parser.print ('/'); parser.print (dt-> month (), DEC); parser.print ('/'); parser.print (dt-> day (), DEC); парсер.print (''); parser.print (dt-> hour (), DEC); parser.print (':'); parser.print (dt-> minute (), DEC); parser.print (':'); parser.print (dt-> second (), DEC); }
void sendData () {если (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // перезапуск таймера данных графика без дрейфа // присвоение значений переменным графика из переменных цикла или чтение входов АЦП plot_1_var = analogRead (A0); // считываем входные данные для построения графика // plot_2_var plot Hidden, поэтому здесь не назначены данные // plot_3_var plot Hidden, поэтому здесь не назначены данные // отправляем данные графика в формате CSV DateTime now = rtc.now (); sendDateTime (& сейчас); // отправляем yyyy / M / d / H: m: s в parser.print, передаем адрес & как аргумент. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Сюжет 2 скрыт. Данные не отправлены. parser.print (','); // Сюжет 3 скрыт. Данные не отправлены. parser.println (); // конец записи данных CSV}}
Часть ответа ~ 2019/4/19 3: 33: 5 {@ response позволяет pfodApp узнать, что pfodDevice считает текущей датой и временем. Затем ваш эскиз может отправлять данные с отметками времени yMd Hms, и pfodApp отобразит их либо как прошедшее время от времени соединения, либо как дату и время, в зависимости от указанного вами формата оси X.
При построении графика по дате и времени процедура построения графика pfodApp корректирует любой «дрейф» в RTC, сравнивая текущее время, сообщаемое pfodDevice, с текущим временем мобильного телефона. Это исправление также обрабатывает часовой пояс RTC, установленный на другой часовой пояс от местного часового пояса вашего мобильного телефона. Отметки времени millis () продолжают работать так же, как в Использование отметок времени миллисекунды Arduino, шаг 5 выше.
Вот пример электронной таблицы комнатной температуры за 8-дневный период, Office_Temp.xls. Когда файл журнала был импортирован, первый столбец был помечен как YMD для преобразования текста в дату / время. Вам по-прежнему необходимо удалить ведущие из записей местного времени, UTC и текущего времени Office Temp, чтобы электронная таблица интерпретировала их как дату и время.
Чтобы получить тот же график, что и pfodApp, вам необходимо вычислить «Скорректированную дату / время». В этом случае время RTC на 2 секунды отстает от местного времени мобильного телефона, поэтому к каждой метке времени RTC добавляется (местное время - текущее время Office Temp), чтобы получить истинное местное время.
Для графиков истекшего времени создайте новый столбец, содержащий (временная метка даты / времени - текущее время офиса) и используйте его в качестве оси X на диаграмме (Office_TempElapsed.xls). На самом деле в этом случае pfodApp создает более удобные диаграммы прошедшего времени. в днях час: мин: сек.
Шаг 10: Использование модуля GPS
Использование модуля GPS аналогично использованию модуля RTC, за исключением того, что для модулей GPS доступны миллисекунды, годы начинаются с 2000 года, а во времени отсутствуют дополнительные секунды UTC (см. Https://tycho.usno.navy.mil/leapsec.html) Дата и время GPS в настоящее время на 18 секунд опережают UTC по состоянию на январь 2018 года.
Библиотека Adafruit GPS для Adafruit Ultimate GPS, в отличие от RTClib, не добавляет смещение на 2000 лет к годам GPS, поэтому его необходимо добавлять при отправке даты и времени. Кроме того, хотя библиотека GPS предоставляет миллисекунды, которые имеют очень хорошую долгосрочную точность, они не очень точны. Обновление времени GPS происходит только один раз каждые 100 мс, а затем возникает дополнительная задержка при получении последовательных данных на медленной скорости 9600 бод и еще одна задержка при их анализе. Все это увеличивает точность до миллисекунды при чтении данных с метками времени.
Вот несколько примеров изменений кода, которые можно применить к эскизу, созданному pfodDesigner для использования модуля GPS, при условии, что вы используете библиотеку GPS Adafruit и добавили код для приема и анализа сообщений в объект GPS.
// обрабатываем {@} запрос} else if ('@' == cmd) {// pfodApp запросил "текущее" время plot_mSOffset = millis (); // фиксируем текущие миллисекунды как смещение меток времени rawdata parser.print (F ("{@` 0 "}); // возвращаем` 0 как 'текущие' миллисекунды сырых данных parser.print ('~'); // начальная строка date / time sendDateTime (& GPS); // отправляем yyyy / M / d / H: m: s в parser.print, передаем адрес & как аргумент parser.print ('}'); // конец {@ response eg {@ `0 ~ 2019/4/19 3: 33: 5}….
// отправляем дату и время парсеру printvoid sendDateTime (Adafruit_GPS * gps) {parser.print (F ("20"); // 20.. год parser.print (gps-> year, DEC); parser.print ('/ '); parser.print (gps-> month, DEC); parser.print (' / '); parser.print (gps-> day, DEC); parser.print (' '); parser.print (gps- > час, DEC); parser.print (':'); parser.print (gps-> minute, DEC); parser.print (':'); parser.print (gps-> second, DEC); // parser.print ('.'); при отправке миллисекунд // если вы хотите отправить mS, вам нужно дополнить значение gps-> миллисекунд ведущими нулями // т.е. 3 нужно дополнить до 003}
void sendData () {если (plotDataTimer.isFinished ()) {plotDataTimer.repeat (); // перезапуск таймера данных графика без дрейфа // присвоение значений переменным графика из переменных цикла или чтение входов АЦП plot_1_var = analogRead (A0); // считываем входные данные для построения графика // plot_2_var plot Hidden, поэтому здесь не назначены данные // plot_3_var plot Hidden, поэтому здесь не назначены данные // отправляем данные графика в формате CSV sendDateTime (& GPS); // отправляем yyyy / M / d / H: m: s в parser.print, передаем адрес & как аргумент. parser.print (','); parser.print (((float) (plot_1_var - plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); parser.print (','); // Сюжет 2 скрыт. Данные не отправлены. parser.print (','); // Сюжет 3 скрыт. Данные не отправлены. parser.println (); // конец записи данных CSV}}
При построении графика по дате и времени pfodApp автоматически корректирует дополнительные секунды. По состоянию на январь 2018 года время GPS на 18 секунд опережает UTC. pfodApp исправляет это, сравнивая дату и время, возвращаемые GPS при подключении через ответ {@, с датой и временем в формате UTC на мобильном устройстве. Создание графиков в электронной таблице из файла журнала pfodApp такое же, как для модулей RTC, описанных выше. Добавление (местное время - текущее время Office Temp) к отметкам времени GPS исправляет дополнительные секунды.
Отметки времени millis () продолжают работать так же, как в Использование отметок времени миллисекунды Arduino, шаг 5 выше.
Шаг 11: Заключение
Использование pfodApp на вашем мобильном устройстве Android позволяет отображать данные в зависимости от даты и времени или прошедшего времени, используя только функцию Arduino millis (). Используя файл журнала pfodApp, вы можете воспроизвести эти графики даты / времени в электронной таблице. Если в вашем проекте Arduino есть модуль RTC, вы можете регистрировать и наносить на график дату и временные метки RTC, автоматически корректируя «дрейф» RTC. Если в вашем проекте Arduino есть модуль GPS, вы можете регистрировать и наносить на график его высокоточные временные метки, и pfodApp автоматически исправит недостающие дополнительные секунды GPS.
Во всех случаях необработанные данные из вашего проекта Arduino регистрируются в том виде, в котором они были получены, без исправлений. Однако файл журнала pfodApp включает дополнительные данные, позволяющие вам воспроизвести эти исправления в электронной таблице из загруженного файла журнала.
Кодирование под Android не требуется. Все форматы графика задаются небольшими текстовыми строками в вашем эскизе Arduino. Бесплатный pfodDesigner генерирует полную регистрацию данных Arduino и построение эскизов для широкого спектра плат Arduino, подключаемых через Wi-Fi, классический Bluetooth, BLE и SMS.
Рекомендуемые:
ESP8266 OLED - получение времени и даты из Интернета: 8 шагов
ESP8266 OLED - получение времени и даты из Интернета: в этом руководстве мы узнаем, как получить дату и время с сервера NIST TIME с помощью ESP8266 OLED и Visuino, посмотрите демонстрационное видео
Построение графика данных датчика температуры в реальном времени (TMP006) с использованием MSP432 LaunchPad и Python: 9 шагов
Построение графика данных датчика температуры в реальном времени (TMP006) с использованием MSP432 LaunchPad и Python: TMP006 - это датчик температуры, который измеряет температуру объекта без необходимости соприкасаться с ним. В этом руководстве мы построим график данных температуры в реальном времени из BoosterPack (TI BOOSTXL-EDUMKII) с использованием Python
Интернет-часы: отображение даты и времени с помощью OLED с использованием ESP8266 NodeMCU с протоколом NTP: 6 шагов
Интернет-часы: отображение даты и времени с помощью OLED с использованием ESP8266 NodeMCU с протоколом NTP: Привет, ребята, в этой инструкции мы создадим Интернет-часы, которые будут получать время из Интернета, поэтому этому проекту не потребуется RTC для запуска, ему понадобится только рабочее подключение к Интернету И для этого проекта вам понадобится esp8266, который будет иметь
Простая регистрация мобильных данных с использованием PfodApp, Android и Arduino: 5 шагов
Простая регистрация мобильных данных с использованием PfodApp, Android и Arduino: регистрация данных Moblie стала проще с помощью pfodApp, вашего мобильного телефона Andriod и Arduino. Никакого программирования под Android не требуется. Для построения графиков данных на вашем Android см. Далее в этой статье. Простое простое удаленное построение данных с использованием Android / Arduino / pfodApp
Высокоточная удаленная регистрация данных с использованием мультиметра / Arduino / pfodApp: 10 шагов (с изображениями)
Высокоточная удаленная регистрация данных с помощью мультиметра / Arduino / pfodApp: обновлено 26 апреля 2017 г. Переработанная схема и плата для использования с USB-счетчиками 4000ZC. Кодирование Android не требуется для ведения журнала и