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

 



Потоковая передача данных из Arduino в Excel

Автор: Mike(admin) от 7-05-2023, 23:55

Microsoft Excel – полезный инструмент для визуализации и анализа данных. Надстройка Data Streamer позволяет импортировать, просматривать и анализировать оперативные данные с внешних устройств, таких как микроконтроллер Arduino. Это делает сбор данных с датчиков доступным, недорогим и удобным для широкого круга приложений.


Потоковая передача данных из Arduino в Excel

Дополнение Data Streamer бесплатное и поставляется с O365, оно считывает значения, выведенные в последовательном порту вашего компьютера, таким же образом данные выводятся в последовательный монитор Arduino IDE. Для этого руководства вам понадобится Microsoft Excel O365 с включенным Data Streamer.


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


Напишите и запустите скетч, который считывает значения с датчика и выводит значения в последовательный монитор с новой строкой в конце. Напишите свой собственный или используйте приведенный в конце материала пример кода. Примечание: если вы используете пример кода, обязательно подключите датчик к аналоговому контакту A0 микроконтроллерной платы Arduino.


Откройте Excel и перейдите на вкладку Data Streamer. Щелкните Подключить устройство (Connect a Device), чтобы подключить Excel к микроконтроллеру. Это создаст 3 новых листа. Входящие данные (Data In): текущие данные выводятся на этом листе. Выходящие данные (Data Out): отправляйте данные и/или команды на плату Arduino с помощью этого листа. Настройки (Settings): изменение основных настроек Data Streamer, включая количество оперативных данных и количество столбцов данных.


Потоковая передача данных из Arduino в Excel

Нажмите Начать передачу данных (Start Data), чтобы начать потоковую передачу данных в Excel. По умолчанию мы получаем только 15 строк данных, но вы можете собрать до 500 строк данных в реальном времени (ограничение связано с пропускной способностью Excel). Чтобы сохранить данные в текстовый файл (.CSV), нажмите кнопку Записать данные (Record Data). Когда вы нажмете Остановить запись (Stop Record), вам будет предложено выбрать имя файла и местоположение. Теперь добавьте график ваших данных и проведите анализ данных.


Потоковая передача данных из Arduino в Excel

Диаграммы рассеивания показывают, как показания датчика меняются с течением времени. Добавьте точечную диаграмму, выбрав Вставка - Диаграммы - Точечная диаграмма (Insert - Charts - Scatter).


Потоковая передача данных из Arduino в Excel

Когда появится график, щелкните правой кнопкой мыши пустой график и выберите Выбрать данные (Select Data), затем Добавить последовательность данных (Add a Series).


Потоковая передача данных из Arduino в Excel

Добавьте заголовок к ряду данных. Затем вы захотите отобразить свои данные по оси Y, а время * по оси X. Для этого щелкните стрелку под Значения последовательности данных по Y (Series Y-Values).


Потоковая передача данных из Arduino в Excel

Перейдите на лист Входящие данные (Data In) и выберите все входящие данные из датчика.


Потоковая передача данных из Arduino в Excel

Теперь у вас есть график ваших живых данных. Это значительно упрощает визуализацию и понимание изменений в показаниях датчиков.


int exampleVariable = 0;
int sensorPin = A0;

const byte kNumberOfChannelsFromExcel = 6; 

const char kDelimiter = ',';    
const int kSerialInterval = 50;   
unsigned long serialPreviousTime; 

char* arr[kNumberOfChannelsFromExcel];

void setup() {
  // Initialize Serial Communication
  Serial.begin(9600);  
}

void loop()
{
  processSensors();

  processIncomingSerial();

  processOutgoingSerial();

//   if ( strcmp ("Apple", arr[0]) == 0){ 
//       Serial.println("working");
//   }
}

void processSensors() 
{
  exampleVariable = analogRead( sensorPin );
  
}

void sendDataToSerial()
{

  Serial.print(exampleVariable);
  Serial.print(kDelimiter);
  
  Serial.println();
}

void processOutgoingSerial()
{
  if((millis() - serialPreviousTime) > kSerialInterval) 
  {
    serialPreviousTime = millis(); 
    sendDataToSerial(); 
  }
}

void processIncomingSerial()
{
  if(Serial.available()){
    parseData(GetSerialData());
  }
}

char* GetSerialData()
{
  static char inputString[64];
  memset(inputString, 0, sizeof(inputString));
  while (Serial.available()){
    Serial.readBytesUntil('\n', inputString, 64);
  }
  return inputString;
}

void parseData(char data[])
{
    char *token = strtok(data, ",");
    int index = 0;
    while (token != NULL){
      arr[index] = token;
      token = strtok(NULL, ",");
      index++;
    }
}



© digitrode.ru


Теги: Arduino, Excel




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий