工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ArduinoSDカードとデータロギングのチュートリアル

このArduinoチュートリアルでは、ArduinoボードでSDカードモジュールを使用する方法を学習します。また、DS3231リアルタイムクロックモジュールと組み合わせて、温度センサーのデータをSDカードに保存し、Excelにインポートしてグラフを作成するデータロギングの例を作成します。次のビデオを見るか、以下のチュートリアルを読むことができます。

仕組み

まず、SDカードモジュールを見てみましょう。動作電圧が3.3Vの標準のMicroSDカードで動作します。したがって、モジュールには電圧レギュレータとレベルシフターがあり、Arduinoボードの5Vピンで使用できます。

SDカードモジュールには6つのピンがあり、モジュールに電力を供給するための2つ、VCCピンとGNDピン、さらにSPI通信用の4つのピンがあります。 Arduinoボードに接続する方法は次のとおりです。

各Arduinoボードには異なるSPIピンがあり、それに応じて接続する必要があることに注意してください。

このArduinoチュートリアルに必要なコンポーネントは、以下のリンクから入手できます。

  • マイクロSDカードモジュール………………..
  • Arduinoボード……………………………
  • ブレッドボードとジャンパー線………

ArduinoSDカードモジュールコード

次に、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メガボードのピン53)を定義する必要があります。この例では、コードを1回だけ実行するため、すべてのコードは「セットアップ」セクションに配置され、「ループ」セクションは空のままになります。

したがって、最初にシリアル通信を開始し、ChipSelectピンを出力として定義する必要があります。モジュールとArduino間のSPI通信が機能するようにChipSelectピンを「ロー」にする必要があるため、これを行う必要があります。

次に、SD.begin()関数を使用して、SDカードを初期化します。初期化が成功すると、「if」ステートメントがtrueになり、「SDカードを使用する準備ができました」という文字列が表示されます。シリアルモニターに印刷されます。そうでない場合は、「SDカードの初期化に失敗しました」という文字列が印刷され、プログラムも終了します。

次に、SD.open()関数を使用して、「test.txt」という名前の新しいファイルを作成します。このファイルには、ファイルの読み取りと書き込みの両方ができることを意味するFILE_WRITE引数が含まれています。ファイルがすでに存在する場合、SD.open()関数はファイルを開くだけです。

したがって、ファイルが最初に正常に作成された場合は、シリアルモニターに「Writingto file」という文字列を出力し、次にmyFile.println()関数を使用して、「Testing text 1、2,3…」というテキストを出力します。ファイル。その後、close()関数を使用して、ファイルに書き込まれた以前のデータがSDカードに物理的に保存されていることを確認する必要があります。

次に、ファイルからどのように読み取ることができるかを確認します。ここでも同じ関数SD.open()を使用しますが、今回はファイル「test.txt」がすでに作成されているため、この関数はファイルを開くだけです。次に、myFile.read()関数を使用して、ファイルから読み取り、シリアルモニターに出力します。 read()関数は、実際には一度に1文字だけを読み取るため、「while」ループと関数myFile.available()を使用して、すべての文字または以前に書き込まれたデータ全体を読み取る必要があります。最後に、ファイルを閉じる必要があります。

コードをArduinoにアップロードした後、すべて問題がなければ、シリアルモニターに次のように表示されます。

ご覧のとおり、SDカードは正常に初期化されており、書き込みも成功しています。また、書き込まれたデータまたは文字列「テキスト1、2、3…のテスト」の読み取りも正常に読み取られています。コンピューターでSDカードを開くと、作成された「test.txt」ファイルとその中に書き込まれたテキストが表示されます。

ArduinoSDカードデータロギング

次に、温度センサーを記録するデータのもう1つの興味深い例を作成しましょう。そのために、温度センサーも内蔵されたDS3231リアルタイムクロックモジュールを使用します。このモジュールを接続して使用する方法の詳細については、前のチュートリアルをご覧ください。

したがって、2つのモジュールを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)

コードの説明: まず、両方のモジュールに必要なライブラリを含める必要があります。次に、2つのオブジェクトを作成し、セットアップセクションでそれらを初期化します。

Serial.print()関数を使用するループセクションでは、時間と温度の値をシリアルモニターに出力し、それらの間に「コンマ」文字を入れ、温度値の後に改行を入れます。簡単にインポートしてExcelでグラフを作成できるように、この形式の線が必要です。また、温度値は整数に変換されることに注意してください。

したがって、これらの同じ値は、新しく作成された「test.txt」ファイルにも書き込まれ、最後に、温度データを記録する間隔を表す遅延を追加する必要があります。

コードをアップロードした後、Arduinoは3秒ごとに温度値の保存を開始します。しばらくすると、コンピューターでSDカードを開いて結果を確認できます。

Excelでグラフを作成するには、このファイルをインポートする必要があります。その方法は次のとおりです。

データメニューから、「テキストからデータを取得」ボタンをクリックして、テキストファイルを選択する必要があります。ここで「区切り」を選択して「次へ」をクリックし、2番目のステップで区切り文字としてカンマを選択して、ウィザードを終了します。

したがって、このプロセスでは、時間と温度の値が別々の列に挿入されます。次に、両方の列を選択し、挿入メニューから「折れ線グラフの挿入」を選択する必要があります。これにより、3秒ごとの温度値を確認できるグラフが作成されます。

このチュートリアルは以上です。下のコメントセクションで質問してください。


製造プロセス

  1. [ビデオ]マシン(PLC)のデータロギングとダッシュボードの説明
  2. ArduinoRFIDロックチュートリアル
  3. Arduinoエネルギーモニターとデータロガーを構築する方法
  4. LCDアニメーションとゲーム
  5. 温度および湿度データロガー
  6. Python3とArduinoコミュニケーション
  7. ArduinoとRDA8057Mを使用したFMラジオ
  8. Arduino指紋センサーチュートリアル
  9. Arduinoチュートリアル:ミニピアノ
  10. RaspberryPiとArduinoラップトップ
  11. Arduinoチュートリアル01:はじめに