Запись данных Arduino в файлы на компьютере через Putty

В этом уроке мы подключим датчик барометрического давления 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" (Всегда).

Перезапишите это, если это то, что вы хотите. Нажмите кнопку "Browse" (Обзор) и найдите место и имя файла, куда вы можете сохранить файл, который вы записали в журнал.

Хорошей идеей будет поместить расширение имени файла .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.

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

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

#include <Adafruit_BMP280.h>

Adafruit_BMP280 bmp;
float QNH = 1024.67; //Change the "1022.67" to your current sea level barometric pressure (https://www.wunderground.com)
const int BMP_address = 0x76;
float pressure;
float temperature;
float altimeter;
//char charRead;
char dataStr[100] = "";
char buffer[7];
////////////////////////////////////////////////////
void setup() {
    Serial.begin(9600);
    bmp.begin(BMP_address);
} // end setup()

////////////////////////////////////////////////////////////
void loop(void) {
    dataStr[0] = 0; //clean out string
    pressure = bmp.readPressure() / 100; //and conv Pa to hPa
    temperature = bmp.readTemperature();
    altimeter = bmp.readAltitude(QNH); //QNH is local sea lev pressure
    //----------------------- using c-type ---------------------------
    //convert floats to string and assemble c-type char string for writing:
    ltoa(millis(), buffer, 10); //conver long to charStr
    strcat(dataStr, buffer); //add it onto the end
    strcat(dataStr, ", "); //append the delimeter

    //dtostrf(floatVal, minimum width, precision, character array);
    dtostrf(pressure, 5, 1, buffer); //5 is mininum width, 1 is precision; float value is copied onto buff
    strcat(dataStr, buffer); //append the coverted float
    strcat(dataStr, ", "); //append the delimeter

    dtostrf(temperature, 5, 1, buffer); //5 is mininum width, 1 is precision; float value is copied onto buff
    strcat(dataStr, buffer); //append the coverted float
    strcat(dataStr, ", "); //append the delimeter

    dtostrf(altimeter, 5, 1, buffer); //5 is mininum width, 1 is precision; float value is copied onto buff
    strcat(dataStr, buffer); //append the coverted float
    strcat(dataStr, 0); //terminate correctly 
    Serial.println(dataStr);
    delay(1000);


} //end main
///////////////////////////////////////////////

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

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

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

buffer = strcat(dataStr, temperature)

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

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

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

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

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

29 мая 2020 в 16:15 | Обновлено 29 июня 2020 в 18:29 (редакция)
Опубликовано: | Оригинал
Уроки,

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

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