Как вывести график в ардуино

Digitrode

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

Как использовать функцию Serial Plotter в Arduino IDE для отображения графиков

Визуализация данных при работе с Arduino – это то, что нам всем приходилось делать в прошлом, используя стороннее или самостоятельно разработанное программное обеспечение. Но команда Arduino недавно решила это изменить. Сегодня мы рассмотрим их решение, называемое Serial Plotter, новый инструмент, который поставляется с новыми версиями Arduino IDE.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Serial Plotter обеспечивает среду, через которую мы можем видеть графики данных, выводимых в последовательный порт Arduino в режиме реального времени. Перед включением этой функции в Arduino IDE инженерам и любителям обычно приходится писать дополнительный код с использованием других инструментов и языков программирования, таких как Python. Иногда это затрудняет отладку из-за дополнительной работы и времени, которое требуется, особенно в приложениях, основанных на сигналах, где просмотр данных на последовательном мониторе будет недостаточным.

Serial Plotter или последовательный плоттер в основном принимает значения, поступающие из заданного последовательного порта, и отображает их на графике плоскости x-y. Ось Y представляет значения из последовательного порта и автоматически настраивается при увеличении или уменьшении значения. Можно сказать, что ось X представляет собой момент времени. Каждая точка на оси x представляет выполнение оператора println в коде Arduino. Проще говоря, каждый раз, когда выполняется команда println, на графике записывается новая точка / данные (значение Y, соответствующее этой конкретной инструкции println). Ограничением Serial Plotter в этой версии Arduino IDE является тот факт, что он поддерживает всего 500 выборок данных, после чего может потребоваться перезапуск плоттера. Это может сделать плоттер непригодным для определенных приложений, но, возможно, это изменится в следующих версиях Arduino IDE.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Чтобы продемонстрировать использование последовательного плоттера в сегодняшнем уроке, мы создадим два примера. Для первого примера мы будем использовать Serial Plotter для получения данных с фоторезистора. Это даст нам возможность изучить, как данные изменяются в зависимости от силы света, не пытаясь понять, какие числа выводятся на последовательном мониторе. Во втором примере мы будем использовать датчик температуры и влажности DHT22. Цель этого примера – показать, как выводить данные с нескольких датчиков с помощью последовательного плоттера Arduino.

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

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Для второго примера схема содержит датчик температуры и влажности DHT22, подключенный к Arduino, как показано на следующей схеме.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Здесь в рамках функции бесконечного цикла void loop() мы используем функцию analogRead() для получения данных с вывода делителя напряжения, после чего данные отправляются в последовательный порт с помощью команды serial.println(), благодаря чему отображаются в виде графика в Serial Plotter.

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

В функции void loop(), как обычно, делается большая часть работы. Мы начали с использования функций dht.readTempera() и dht.readHumidity, чтобы получить значение температуры и влажности от датчика. После чего мы приступили к их распечатке таким образом, чтобы Serial Plotter понимал разницу между переменными. Это делается путем печати пустого пространства между переменными (после первого значения, перед вторым значением). Без этого пустого пространства между данными плоттер увидит следующий оператор println как обновление предыдущего.

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

Источник

Как просто построить график сигнала с Ардуино

В данной статье описан простой способ построить график сигнала с Ардуино совместимых аналоговых датчиков. Это нужно для настройки и отладки некоторых измерительных систем.
Ранее были опубликованы проекты и статьи, которые предполагали настройку модуля AD620 под различные сигналы (ЭКГ, ЭЭГ, ЭМГ и др.) Однако возник вопрос как увидеть данный сигнал на ПК? Это ключевой момент в настройке!
К счастью это очень просто, если использовать нативную среду Arduino IDE.

Подключение и настройка среды Ардуино

Вначале подключите Ардуино к USB ПК.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Параметры программы Ардиуно

Для примера рассмотрим программу калибровки модуля AD620:

В программе контроллера Ардуино нужно уделить внимание на три момента:

График сигнала с Ардуино

Там нужно задать (проверить) скорость соединения и если все правильно — построение графика начнется сразу!

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Видеодемонстрация

Подробно весь процесс смотрите в видео:

Если возникнут вопросы, то пишите в комментариях здесь, на канале YouTube или обращайтесь в группу ВК.

Источник

Урок 13.3 Arduino строим графики по данным c sd карты.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Сегодня в уроке мы сохраним данные и время считывания данных в файл. Который можно открыть в Excel и построить график.

Как вывести график на смартфон, в режиме реального времени смотрите тут: Arduino SD карта. Воспроизводим звуки и музыку в wav формате.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

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

Подключаем SD-модуль и модуль реального времени DS3231 к Arduino UNO по схеме.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Для работы нам понадобиться библиотека DS3231.h. Скачать ее можно с сайта разработчика или в разделе для скачивания файлов внизу страницы.

Мы уже научились работать с картой, если возникнут сложности посмотрите предыдущий урок: Arduino SD карта. Создаем, удаляем файлы. Чтение, запись файлов.

Для вывода текущего времени и температуры есть 2 функции.

Для примера работы выведем время и показания в монитор порта.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

И точно такие же показания будем сохранять в наш файл.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Можно сохранять в текстовый файл. А можно сохранить в файл TEST.csv.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Это тоже текстовый файл. Но его можно сразу открыть в Excel.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Осталось только построить график по полученным данным.

У вас наверное возникнет вопрос, почему у меня так скачет температура? Нет у меня нет резкого изменения температуры в комнате. Просто я погрел пальцами модуль времянки. И после он постепенно остывал.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Этот небольшой урок дает представления о возможностях легирования данных с использованием Arduino и SD карты.

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока. И до встречи в следующем уроке.

Понравилась статья? Поделитесь ею с друзьями:

Источник

Визуализация данных в виде графика — SFMonitor

С помощью Ардуино можно легко собирать данные с самых разных датчиков. Можно, к примеру, измерить температуру, скорость ветра и влажность воздуха на улице. А если добавим к этому списку МЭМС барометр и датчик освещенности, получим настоящую погодную станцию у себя во дворе. Но что делать с огромной массой полученных данных? Как проанализировать накопленные массивы чисел?

Самое простое, что мы можем сделать — это вывести показания датчиков в монитор COM-порта в виде таблицы, а затем построить с помощью них график в одном из редакторов таблиц. Например, показания барометра, полученные с помощью трех разных датчиков в одном из моих экспериментов, выглядели так:

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Такой подход хорош, когда нам достаточно оценить показания датчиков уже после проведения эксперимента. Если же график нужно строить в режиме реального времени потребуется специальное приложение для визуализации потоков данных. Например, это можно сделать с помощью известного пакета MatLab. В одной из послежний версий Arduino IDE также появилась возможность строить простые графики.

На этом уроке мы поговорим еще про один инструмент для визуализации — приложение SFMonitor. Это монитор последовательного порта с открытыми исходными кодами, который я разработал пару лет назад для работы над системой стабилизации беспилотников. В основе SFMonitor лежит проект Eli Bendersky написанный на языке python и библиотеки PyQt. Монитор позволяет строить сразу несколько графиков, используя для передачи данных библиотеку SerialFlow. Обо всем этом я расскажу далее.

Строим простой график в SFMonitor

Для того, чтобы построить в SFMonitor самый простой тип графика, потребуется несложная программа, которая будет отправлять в COM-порт показания какого-нибудь датчика. Для примера используем фоторезистор, подключенный к аналоговому порту Ардуино.

Важно отметить, что мы будем передавать всего один байт за раз, а это число от 0 до 255. АЦП же нам дает число от 0 до 1023. Мы используем функцию map, чтобы нормировать результат АЦП в 1 байт.

Также следует после каждой отправки данных в порт делать небольшую паузу, не менее 10мс. В противном случае COM-порт персонального компьютера начнет тормозить.

Теперь включим монитор и настроим параметры. Первое, что нужно будет выбрать — это тип графика. В выпадающем меню выбираем «Простой».

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Затем настраиваем формат данных в пакете. Для этого зайдем в пункт меню «Данные/Настройка потоков».

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

На вкладке «Общие» выбираем размер чисел в пакете — 1 байт.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Переходим на вкладку «Поток №1» и ставим галку «Беззнаковые значения». Это означает, что мы будем принимать строго положительные числа от 0 до 255.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Теперь выбираем COM-порт Ардуино и скорость передачи данных.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Наконец, запускаем монитор и наблюдаем график.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Пакетная передача данных

В SFMonitor для пакетной передачи используется библиотека SerialFlow. Эта библиотека позволяет задать формат пакета и предоставляет функции для упаковки данных в пакет и для их распаковки обратно.

Чтобы SFMonitor смог отобразить три графика настроим следующие параметры:

После запуска монитора получим такие вот три графика:

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Построение графиков в Arduino IDE

Начиная с версии 1.6.6 в среде Arduino IDE появилось штатное средство для построения графиков. Немного изменим программу, чтобы Ардуино смогла корректно передавать данные с акселерометра для встроенного монитора.

Используем обычный println. Загружаем программу на Ардуино и запускаем встроенный монитор через меню «Инструменты/ Плоттер по последовательному соединению». Результат ниже.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

К сожалению, встроенный инструмент Arduino IDE пока позволяет строить только один график, и не имеет вообще никаких настроек.

Заключение

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

В будущих версиях планируется режим отображения трехмерных данных, который удобно использовать для визуализации данных инклинометра. И напоминаю, приложение SFMonitor полностью открытое, и мы приветствуем любую помощь по доработке!

Источник

Данные с Arduino в виде диаграмм и графиков

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

После перебора различных вариантов решения этой задачи обратил внимание на микроконтроллеры Arduino. Плюсом данных устройств является простота получения необходимого «железного» функционала путем простого соединения элементов. Например, для получения возможности соединения с локальной сетью достаточно на основную плату надеть сверху плату сетевого адаптера. Главное, чтобы при этом совпали соответствующие разъемы.

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Сигнал с датчика приходит на аналоговый вход микроконтроллера, обрабатывается, например, усредняется за необходимые, ранее установленные интервалы времени. Микроконтроллер содержит программное обеспечение, реализующее http-сервер, по запросу с браузера клиента выдающий в локальную сеть html страницу с информацией от датчика. Таким образом, любое устройство, имеющее веб-браузер, например, смартфон и подключенное к локальной сети, имеет возможность просмотра графика.

Аппаратная часть преобразователя состоит из двух частей: платы Arduino Uno, включающей процессор Atmega328, и Ethernet шилда. Были опробованы оба типа имеющихся в семействе Arduino Ethernet-шилдов на ИС ENC28j60 и на W5100.

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

Программное обеспечение (скетч) для arduino разработано для двух разных условий применения. В первом случае предполагалось, что клиенты, запрашивающие данные, имеют доступ в интернет, что позволяет использовать внешние библиотеки для визуализации. При использовании библиотеки для построения гистограмм от Google внешний вид странички, получаемой от Arduino, может быть таким:

Как вывести график в ардуино. Смотреть фото Как вывести график в ардуино. Смотреть картинку Как вывести график в ардуино. Картинка про Как вывести график в ардуино. Фото Как вывести график в ардуино

Скетч для вывода данных в виде такой диаграммы c Ethernet шилдом на базе чипа W5100 представлен ниже. При желании использовать плату с чипом ENC28J60 необходимо просто раскомментировать 1 строку и закомментировать следующие 2 строки скетча. В программе применены методы оптимизации использования памяти процессора для того, чтобы максимально освободить оперативную память и добиться надежной работы программы на обоих типах сетевых адаптеров.

//вывод данных с помощью web-сервера в виде гистограммы
// автор А. Коновалов 2015 г.
//#include //для работы с ENC28J60
#include
#include «;
const char str2[] PROGMEM = » »;
const char str12[] PROGMEM = » «;

const char* const string_table[] PROGMEM = ;
const char* const string_table2[] PROGMEM = ;
char myChar;
char buffer[80];

unsigned long previousMillis1 = 0;// посл момент времени
unsigned long previousMillis2 = 1;// посл момент времени
unsigned long previousMillis3 = 1;// посл момент времени

long OnTime2 = 60000; // минута
long OnTime3 = 1800000; // полчаса
int In_sec = 0; // отсчет за сек
int In_min = 0; // отсчет за мин
int In_half = 0; // отсчет за полчаса

long Sum_min = 0; // сумма за мин
long Sum_half = 0; // сумма за полчаса
float Sum_base_min = 0;
float Sum_base_half = 0;
int i,j,k =0;

void setup()
<
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();

>
//unsigned long begMillis = millis();// нач время в мс
void loop()
<
unsigned long currentMillis = millis();// тек время в мс

In_sec = analogRead(0);
Sum_min = Sum_min + (currentMillis — previousMillis1) * In_sec;
In_min = (Sum_min + Sum_base_min ) / (OnTime2 * i + currentMillis — previousMillis2);
Sum_half = Sum_half + (currentMillis — previousMillis1) * In_sec;
In_half = (Sum_half + Sum_base_half) / (OnTime3 * j + currentMillis — previousMillis3);
previousMillis1 = currentMillis; // запоминаем момент времени

if(currentMillis — previousMillis2 >= OnTime2)
< i=1;
Sum_base_min = Sum_min;
previousMillis2 = currentMillis; // запоминаем момент времени
Sum_min = 0;
>
if(currentMillis — previousMillis3 >= OnTime3)
< j=1;
Sum_base_half = Sum_half;
previousMillis3 = currentMillis; // запоминаем момент времени
Sum_half = 0;
>

EthernetClient client = server.available();
if (client) <
boolean currentLineIsBlank = true;
while (client.connected()) <
if (client.available()) <
char c = client.read();
if (c == ‘\n’ && currentLineIsBlank) <
for (int i = 0; i скетч с линейным графиком

//вывод данных с помощью web-сервера в виде графиков
// автор А. Коновалов 2015 г.
//#include
#include
#include
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = < 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED >;
IPAddress ip(192,168,26,15);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
const char str1[] PROGMEM = «

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *