산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino SD 카드 및 데이터 로깅 튜토리얼

<메인 클래스="사이트 메인" id="메인">

이 Arduino Tutorial에서는 Arduino 보드와 함께 SD 카드 모듈을 사용하는 방법을 배웁니다. 또한 DS3231 실시간 클록 모듈과 함께 온도 센서의 데이터를 SD 카드에 저장하고 Excel로 가져와 차트를 만드는 데이터 로깅 예제를 만들 것입니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다.

작동 방식

먼저 SD 카드 모듈을 살펴보겠습니다. 작동 전압이 3.3V인 표준 MicroSD 카드와 함께 작동합니다. 따라서 모듈에는 전압 조정기와 레벨 시프터가 있어 Arduino 보드의 5V 핀과 함께 사용할 수 있습니다.

<그림 클래스="aligncenter">

SD 카드 모듈에는 6개의 핀이 있습니다. 2개는 모듈, VCC 및 GND 핀에 전원을 공급하고 4개는 SPI 통신용 핀입니다. Arduino 보드에 연결하는 방법은 다음과 같습니다.

<그림 클래스="aligncenter">

각 Arduino 보드에는 서로 다른 SPI 핀이 있으므로 그에 따라 연결해야 합니다.

<그림 클래스="aligncenter">

아래 링크에서 이 Arduino 튜토리얼에 필요한 구성요소를 얻을 수 있습니다.

Arduino SD 카드 모듈 코드

다음으로 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 라이브러리를 포함하고 "파일" 개체를 만들고 SPI 버스의 ChipSelect 핀(제 경우에는 Arduino Mega Board용 핀 53)을 정의해야 합니다. 이 예에서는 코드가 한 번만 실행되기를 원하므로 모든 코드는 "setup" 섹션에 배치되고 "loop" 섹션은 비어 있게 됩니다.

따라서 먼저 직렬 통신을 시작하고 ChipSelect 핀을 출력으로 정의해야 합니다. 모듈과 Arduino 간의 SPI 통신이 작동하려면 ChipSelect 핀이 "낮음"이어야 하기 때문에 이 작업을 수행해야 합니다.

다음으로 SD.begin() 함수를 사용하여 SD 카드를 초기화하고 초기화에 성공하면 "if" 문이 true가 되고 문자열 "SD 카드를 사용할 준비가 되었습니다."가 됩니다. 시리얼 모니터에 "SD card initialization failed"라는 문구가 출력되고 프로그램도 종료됩니다.

다음으로 SD.open() 함수를 사용하여 파일을 읽고 쓸 수 있음을 의미하는 FILE_WRITE 인수를 포함하는 "test.txt"라는 새 파일을 만듭니다. 파일이 이미 있는 경우 SD.open() 함수가 파일을 엽니다.

따라서 파일이 먼저 성공적으로 생성되었으면 직렬 모니터에 "Writing to file" 문자열을 인쇄한 다음 myFile.println() 함수를 사용하여 "Testing text 1, 2,3..." 텍스트를 파일. 그 후에 파일에 기록된 이전 데이터가 물리적으로 SD 카드에 저장되었는지 확인하기 위해 close() 함수를 사용해야 합니다.

다음으로 파일에서 읽는 방법을 살펴보겠습니다. 다시 동일한 함수인 SD.open()을 사용하지만 이번에는 "test.txt" 파일이 이미 생성되었으므로 이 함수는 파일을 엽니다. 그런 다음 myFile.read() 함수를 사용하여 파일에서 읽고 직렬 모니터에 인쇄합니다. read() 함수는 실제로 한 번에 한 문자만 읽으므로 "while" 루프와 myFile.available() 함수를 사용하여 모든 문자 또는 이전에 작성된 전체 데이터를 읽어야 합니다. 마지막으로 파일을 닫아야 합니다.

이제 Arduino에 코드를 업로드한 후 모든 것이 정상이면 직렬 모니터에 다음과 같이 표시됩니다.

<그림 클래스="aligncenter">

보시다시피 SD 카드가 성공적으로 초기화되었으며 쓰기도 성공했으며 작성된 데이터나 "Testing text 1, 2,3..." 문자열도 성공적으로 읽혔습니다. 컴퓨터에서 SD 카드를 열면 생성된 "test.txt" 파일과 그 안에 쓰여진 텍스트를 볼 수 있습니다.

Arduino SD 카드 데이터 로깅

이제 온도 센서에 데이터를 기록하는 또 다른 흥미로운 예를 만들어 보겠습니다. 이를 위해 온도 센서도 내장된 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 카드를 열어 결과를 볼 수 있습니다.

<그림 클래스="aligncenter">

Excel에서 차트를 생성하려면 이 파일을 가져와야 하며 이를 수행하는 방법은 다음과 같습니다.

데이터 메뉴에서 "텍스트에서 데이터 가져오기" 버튼을 클릭하고 텍스트 파일을 선택해야 합니다. 여기서 "Delimited"를 선택하고 다음을 클릭합니다. 두 번째 단계에서 쉼표를 구분 기호로 선택한 다음 마법사를 마칩니다.

따라서 이 프로세스는 시간과 온도 값을 별도의 열에 삽입합니다. 이제 두 열을 모두 선택하고 삽입 메뉴에서 "선 차트 삽입"을 선택하기만 하면 됩니다. 이렇게 하면 3초마다 온도 값을 볼 수 있는 차트가 생성됩니다.

<그림 클래스="aligncenter">

여기까지가 이 가이드의 전부입니다. 아래 댓글 섹션에서 언제든지 질문하세요.


제조공정

  1. [동영상] 기계(PLC) 데이터 로깅 및 대시보드 설명
  2. Arduino RFID 잠금 자습서
  3. Arduino 에너지 모니터 및 데이터 로거를 구축하는 방법
  4. LCD 애니메이션 및 게임
  5. 온도 및 습도 데이터 로거
  6. Python3 및 Arduino 통신
  7. Arduino 및 RDA8057M을 사용하는 FM 라디오
  8. Arduino 지문 센서 자습서
  9. Arduino 튜토리얼:미니 피아노
  10. Arduino 튜토리얼 01:시작하기