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

Дополнение 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, включая количество оперативных данных и количество столбцов данных.

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

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

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

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

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

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