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

아두이노 SD 카드 & DS3231 RTC 데이터 로깅 – 단계별 튜토리얼

이 아두이노 튜토리얼에서는 아두이노 보드와 SD 카드 모듈 사용법을 배우고, DS3231 실시간 시계 모듈과 조합해 온도 센서 데이터를 SD 카드에 저장한 후 엑셀로 가져와 차트를 만드는 데이터 로깅 예제를 실습합니다. 아래 비디오를 시청하거나 작성된 튜토리얼을 읽어보세요.

작동 원리

먼저 SD 카드 모듈을 살펴보겠습니다. 표준 마이크로 SD 카드(작동 전압 3.3V)와 호환됩니다. 따라서 모듈에는 전압 레귤레이터와 레벨 시프터가 있어 아두이노의 5V 핀과도 사용할 수 있습니다.

아두이노 SD 카드 & DS3231 RTC 데이터 로깅 – 단계별 튜토리얼

SD 카드 모듈은 6개 핀을 가집니다: 전원용 VCC, GND 2개와 SPI 통신용 4개 핀. 아두이노 보드와의 연결 방법은 다음과 같습니다.

아두이노 SD 카드 & DS3231 RTC 데이터 로깅 – 단계별 튜토리얼

각 아두이노 보드마다 SPI 핀이 다르므로 이에 맞춰 연결해야 합니다.

아두이노 SD 카드 & DS3231 RTC 데이터 로깅 – 단계별 튜토리얼

필요한 부품은 아래 링크에서 구할 수 있습니다:

  • 마이크로 SD 카드 모듈………………..
  • 아두이노 보드 ……………………………
  • 브레드보드와 점퍼 와이어 ………

아두이노 SD 카드 모듈 코드

이제 아두이노를 프로그래밍해 보겠습니다. 간단한 코드입니다:

/*
 * 아두이노 SD 카드 튜토리얼 예제
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 */
#include <SD.h>
#include <SPI.h>
File myFile;
int pinCS = 53; // 아두이노 우노의 경우 핀 10
void setup() {
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  // SD 카드 초기화
  if (SD.begin()) {
    Serial.println("SD card is ready to use.");
  } else {
    Serial.println("SD card initialization failed");
    return;
  }
  // 파일 생성/열기
  myFile = SD.open("test.txt", FILE_WRITE);
  // 파일 열기 성공 시 쓰기
  if (myFile) {
    Serial.println("Writing to file...");
    myFile.println("Testing text 1, 2 ,3...");
    myFile.close();
    Serial.println("Done.");
  } else {
    Serial.println("error opening test.txt");
  }
  // 파일 읽기
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("Read:");
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    myFile.close();
  } else {
    Serial.println("error opening test.txt");
  }
}
void loop() {
  // 비워둠
}코드 언어: Arduino (arduino)

코드 설명: 표준 SD, SPI 라이브러리를 포함하고 "File" 객체 생성, SPI 버스 ChipSelect 핀 정의(아두이노 메가 기준 핀 53). 이 예제는 한 번만 실행하면 되므로 모든 코드를 setup에 넣고 loop는 비워둡니다.

시리얼 통신 시작과 ChipSelect 핀을 출력으로 설정합니다. ChipSelect 핀이 "Low"여야 SPI 통신이 작동하므로 필수입니다.

SD.begin()으로 SD 카드 초기화, 성공 시 "SD card is ready to use." 출력, 실패 시 에러 메시지 출력 후 프로그램 종료.

SD.open()으로 "test.txt" 파일 생성(FILE_WRITE 인자로 읽기/쓰기 모두 가능). 파일이 이미 있으면 열기만 합니다.

파일 생성 성공 시 "Writing to file" 출력 후 myFile.println()으로 텍스트 기록, close()로 데이터가 물리적으로 SD 카드에 저장되도록 합니다.

파일 읽기도 같은 SD.open() 사용, 이미 파일이 있으면 열기만 함. myFile.read()로 한 문자씩 읽어 시리얼 모니터에 출력하므로 myFile.available()과 while 루프로 전체 데이터 읽기. 마지막에 파일 닫기.

코드 업로드 후 시리얼 모니터에 다음과 같이 나타납니다.

아두이노 SD 카드 & DS3231 RTC 데이터 로깅 – 단계별 튜토리얼

SD 카드 초기화 성공, 쓰기 성공, 읽기 성공 모두 확인됩니다. 컴퓨터에서 SD 카드를 열면 생성된 "test.txt" 파일과 기록된 텍스트를 볼 수 있습니다.

아두이노 SD 카드 데이터 로깅

이제 온도 센서 데이터 로깅 예제를 만들어 보겠습니다. DS3231 실시간 시계 모듈에 내장된 온도 센서를 사용합니다. 이 모듈 연결 및 사용법에 대한 자세한 내용은 이전 튜토리얼을 참조하세요.

두 모듈을 아두이노에 연결한 후 코드를 살펴보겠습니다.

/*
 * 아두이노 온도 데이터 로깅
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 */
#include <SD.h>
#include <SPI.h>
#include <DS3231.h>
File myFile;
DS3231 rtc(SDA, SCL);
int pinCS = 53; // 아두이노 우노의 경우 핀 10
void setup() {
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  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();
  } else {
    Serial.println("error opening test.txt");
  }
  delay(3000);
}코드 언어: Arduino (arduino)

코드 설명: 두 모듈용 라이브러리 포함, 객체 생성, setup에서 초기화.

loop에서 Serial.print()로 시간과 온도 값을 시리얼 모니터에 출력, 사이에 콤마(,) 문자를 두고 온도 값 뒤에 줄바꿈. 이 형식으로 라인을 구성하면 엑셀에서 쉽게 가져와 차트 생성 가능. 온도 값은 정수로 변환.

같은 값을 "test.txt" 파일에 기록하고, 데이터 기록 간격을 나타내는 delay 추가.

코드 업로드 후 아두이노는 3초마다 온도 값을 저장합니다. 잠시 후 컴퓨터에서 SD 카드를 열어 결과를 확인합니다.

아두이노 SD 카드 & DS3231 RTC 데이터 로깅 – 단계별 튜토리얼

엑셀에서 차트 만들기 위해 이 파일을 가져오는 방법:

데이터 메뉴에서 "텍스트로부터 데이터 가져오기" 클릭, 텍스트 파일 선택. "구분 기호로 분리" 선택 후 다음, 2단계에서 콤마를 구분 기호로 선택하고 마침.

이 과정으로 시간과 온도 값이 별도 열에 삽입됩니다. 두 열을 선택하고 삽입 메뉴에서 "꺾은선형 차트 삽입" 선택. 3초마다 기록된 온도 값 차트 생성.

아두이노 SD 카드 & DS3231 RTC 데이터 로깅 – 단계별 튜토리얼

이 튜토리얼은 여기까지입니다. 궁금한 점은 댓글로 남겨주세요.


제조공정

  1. IXON Cloud: 단 몇 분 만에 기계 데이터 로깅 & 대시보드 마스터하기
  2. 아두이노 RFID 도어락 만들기 – 단계별 완벽 가이드
  3. 아두이노 에너지 모니터 & 데이터 로거 만들기 – Dr. Wattson 보드 활용
  4. 아두이노 우노로 만드는 LCD 애니메이션 & 게임 기초
  5. 아두이노 DHT11 이더넷 실드 온습도 데이터 로거
  6. 파이썬 3로 아두이노 우노 제어하기 – 시리얼 통신 LED 제어 기초
  7. 아두이노 나노와 RDA8057M으로 소형 FM 라디오 만들기
  8. 아두이노 나노 지문 센서 프로젝트 – 단계별 튜토리얼
  9. 아두이노 UNO로 만드는 미니 피아노 - 단계별 튜토리얼
  10. 아두이노 입문 튜토리얼 01: 첫 프로젝트 시작하기