Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Учебное пособие по SD-карте Arduino и регистрации данных

<основной класс="главный сайт" id="главный">

В этом уроке по Arduino мы узнаем, как использовать модуль SD-карты с платой Arduino. Также в сочетании с модулем часов реального времени DS3231 мы создадим пример регистрации данных, в котором мы будем хранить данные датчика температуры на SD-карте и импортировать их в Excel, чтобы сделать из них диаграмму. Вы можете посмотреть следующее видео или прочитать письменное руководство ниже.

Как это работает

Сначала давайте взглянем на модуль SD-карты. Он работает со стандартными картами MicroSD, рабочее напряжение которых составляет 3,3 В. Поэтому модуль имеет регулятор напряжения и переключатель уровня, чтобы мы могли использовать его с контактами 5 В на плате Arduino.

Модуль SD-карты имеет шесть контактов, два для питания модуля, контакты VCC и GND и еще четыре контакта для связи SPI. Вот как нам нужно подключить его к плате Arduino.

Обратите внимание, что каждая плата Arduino имеет разные контакты SPI, которые следует подключать соответствующим образом.

Компоненты, необходимые для этого руководства по Arduino, можно получить по ссылкам ниже:

Код модуля SD-карты Arduino

Далее нам нужно запрограммировать Arduino. Вот простой код:

/*
 *  Arduino SD Card Tutorial Example
 *  
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 */

#include <SD.h>
#include <SPI.h>

File myFile;

int pinCS = 53; // Pin 10 on Arduino Uno

void setup() {
    
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  
  // SD Card Initialization
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
  
  // Create/Open file 
  myFile = SD.open("test.txt", FILE_WRITE);
  
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.println("Writing to file...");
    // Write to file
    myFile.println("Testing text 1, 2 ,3...");
    myFile.close(); // close the file
    Serial.println("Done.");
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }

  // Reading the file
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("Read:");
    // Reading the whole file
    while (myFile.available()) {
      Serial.write(myFile.read());
   }
    myFile.close();
  }
  else {
    Serial.println("error opening test.txt");
  }
  
}
void loop() {
  // empty
}Code language: Arduino (arduino)

Описание кода:  Итак, сначала нам нужно включить стандартные библиотеки SD и SPI, создать объект «Файл» и определить вывод ChipSelect шины SPI, в моем случае вывод 53 для Arduino Mega Board. В этом примере мы хотим, чтобы наш код выполнялся только один раз, поэтому весь код будет помещен в раздел «Настройка», а раздел «Цикл» останется пустым.

Итак, сначала нам нужно запустить последовательную связь и определить вывод ChipSelect как выход. Мы должны сделать это, потому что вывод ChipSelect должен быть «Низким», чтобы связь SPI между модулем и Arduino работала.

Затем, используя функцию SD.begin(), мы инициализируем SD-карту, и если инициализация прошла успешно, оператор «if» станет истинным, а строка «SD-карта готова к использованию». будет напечатано на последовательном мониторе, иначе будет напечатана строка «Ошибка инициализации SD-карты», а также программа будет завершена.

Затем, используя функцию SD.open(), мы создадим новый файл с именем «test.txt», включая аргумент FILE_WRITE, означающий, что мы можем как читать, так и записывать в файл. Если файл уже существует, функция SD.open() просто откроет его.

Поэтому, если файл был успешно создан, сначала мы напечатаем строку «Запись в файл» на последовательном мониторе, а затем, используя функцию myFile.println(), мы напечатаем текст «Тестовый текст 1, 2, 3…» в файл. После этого нам нужно использовать функцию close(), чтобы убедиться, что предыдущие данные, записанные в файл, физически сохранены на SD-карте.

Далее мы увидим, как мы можем читать из файла. Итак, мы снова воспользуемся той же функцией SD.open(), но на этот раз, поскольку файл «test.txt» уже создан, функция просто откроет файл. Затем, используя функцию myFile.read(), мы будем читать из файла и печатать его на последовательном мониторе. Функция read() на самом деле считывает только один символ за раз, поэтому нам нужно использовать цикл while и функцию myFile.available() для чтения всех символов или всех ранее записанных данных. В конце нам нужно закрыть файл.

Теперь, после загрузки кода в Arduino, если все в порядке, на последовательном мониторе появится следующее.

Как мы видим, SD-карта успешно инициализирована, запись на нее также прошла успешно, а также успешно прочитано записанные данные или строка «Тестовый текст 1, 2 ,3…». Если мы откроем SD-карту на нашем компьютере, мы увидим созданный файл «test.txt» и написанный в нем текст.

Запись данных SD-карты Arduino

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

Итак, после подключения двух модулей к Arduino, давайте взглянем на код для этого примера.

/*
 *  Arduino Temperature Data Logging
 *  
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 */

#include <SD.h>
#include <SPI.h>
#include <DS3231.h>

File myFile;
DS3231  rtc(SDA, SCL);

int pinCS = 53; // Pin 10 on Arduino Uno

void setup() {
    
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  
  // SD Card Initialization
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
  rtc.begin();    
}
void loop() {
  Serial.print(rtc.getTimeStr());
  Serial.print(",");
  Serial.println(int(rtc.getTemp()));
 
  myFile = SD.open("test.txt", FILE_WRITE);
  if (myFile) {    
    myFile.print(rtc.getTimeStr());
    myFile.print(",");    
    myFile.println(int(rtc.getTemp()));
    myFile.close(); // close the file
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }
  delay(3000);
}Code language: Arduino (arduino)

Описание кода:  Сначала нам нужно подключить библиотеки, необходимые для обоих модулей, затем создать два объекта и в разделе установки инициализировать их.

В секции цикла с помощью функции Serial.print() мы будем печатать значения времени и температуры на последовательном мониторе с символом «запятая» между ними и новой строкой после значения температуры. Нам нужна эта форма линий, чтобы мы могли легко импортировать их и сделать диаграмму в Excel. Также обратите внимание, что значения температуры преобразуются в целые числа.

Таким образом, эти же значения будут также записаны во вновь созданный файл «test.txt», и в конце нам просто нужно добавить задержку, которая будет представлять собой интервал записи данных о температуре.

После загрузки кода Arduino начнет сохранять значения температуры каждые 3 секунды. Через некоторое время мы можем открыть SD-карту на нашем компьютере, чтобы увидеть результаты.

Для создания диаграммы в Excel нам нужно импортировать этот файл, и вот как мы это сделаем:

В меню данных нам нужно нажать кнопку «Получить данные из текста» и выбрать текстовый файл. Здесь мы выберем «С разделителями» и нажмем «Далее», а на втором шаге выберем запятую в качестве разделителя и завершим работу мастера.

Таким образом, этот процесс вставит значения времени и температуры в отдельные столбцы. Теперь нам просто нужно выбрать оба столбца и в меню вставки выбрать «Вставить линейный график». Это создаст диаграмму, на которой мы сможем видеть значения температуры каждые 3 секунды.

Это все, что касается этого руководства. Не стесняйтесь задавать любые вопросы в разделе комментариев ниже.


Производственный процесс

  1. Объяснение регистрации данных [видео] машины (ПЛК) и панели мониторинга
  2. Учебное пособие по блокировке RFID для Arduino
  3. Как создать монитор энергии и регистратор данных Arduino
  4. ЖК-анимация и игры
  5. Регистратор данных температуры и влажности
  6. Связь Python3 и Arduino
  7. FM-радио с использованием Arduino и RDA8057M
  8. Учебное пособие по датчику отпечатков пальцев Arduino
  9. Учебное пособие по Arduino:мини-пианино
  10. Учебник по Arduino 01:Начало работы