電路圖
首先,將SD卡模塊連接到Arduino。 SD卡模塊通過SPI通信與Arduino配合使用。 Arduino上的SPI引腳是10,11,12和13.
OLED與Arduino的連接如下:
將SD卡模塊的CS連接到Arduino的第10針
將SD卡模塊的MOSI連接到Arduino的第11針
將SD卡模塊的MISO連接到Arduino的第12針
將SD卡模塊的SCK連接到Arduino的第13針
將SD卡模塊的VCC連接到5V Arduino的引腳
將SD卡模塊的GND連接到Arduino的GND引腳
之后,連接DS3231模塊帶有Arduino。 DS3231模塊通過I2C通信與Arduino配合使用。 Arduino上用于I2C通信的引腳是SDA和SCL。
按如下方式將DS3231模塊與Arduino連接:
將DS3231的GND連接到Arduino的GND引腳
將DS3231的VCC連接到Arduino的5V引腳
將OLED的SDA連接到Arduino的A4引腳
連接SCL Arduino的OLED到A5引腳
最后,將LM35傳感器與Arduino連接。將LM35的左引腳連接到Arduino的5V,中間引腳連接到Arduino的A0,左引腳連接到Arduino的地。
代碼說明
首先,包括SD卡和DS3231 RTC模塊的庫。 SD卡通過SPI通信與Arduino配合使用,因此我們已經(jīng)包含了SPI庫。
#include
#include
#include
然后我們初始化一個(gè)File類型的對(duì)象“sdcard_file”,它將幫助我們使用這些函數(shù)之后,我們定義了連接SD卡模塊的CS引腳和lm35傳感器引腳的引腳。
File sdcard_file;
DS3231 rtc(SDA, SCL);
int CS_pin = 10; // Pin 10 on Arduino Uno
const int sensor_pin = A0;
float temp;
float output;
接下來我們宣布CS引腳作為輸出,LM35傳感器引腳作為輸入。然后我們開始與RTC模塊的串行通信和通信。
之后,我們檢查SD卡是否正確初始化。如果SD卡已正確初始化,則串行監(jiān)視器上將打印“SD卡已準(zhǔn)備就緒”。
pinMode(sensor_pin,INPUT);
pinMode(CS_pin, OUTPUT);
Serial.begin(9600);
rtc.begin();
// SD Card Initialization
if (SD.begin())
{
Serial.println(“SD card is ready to use.”);
} else
{
Serial.println(“SD card initialization failed”);
return;
}
接下來我們打印“日期”,“時(shí)間”和“溫度” “在串口顯示器上。然后我們打開SD卡文件并在那里打印相同的東西。如果我們命名的文件不在那里,它將在那里創(chuàng)建。
在那里打印后,我們關(guān)閉SD卡,以便保存文件中的數(shù)據(jù)。
Serial.print(“Date ”);
Serial.print(“ ”);
Serial.print(“ Time ”);
Serial.print(“ ”);
Serial.print(“ Temp ”);
Serial.println(“ ”);
sdcard_file = SD.open(“data.txt”, FILE_WRITE);
if (sdcard_file) {
sdcard_file.print(“Date ”);
sdcard_file.print(“ ”);
sdcard_file.print(“ Time ”);
sdcard_file.print(“ ”);
sdcard_file.print(“ Temp ”);
sdcard_file.println(“ ”);
sdcard_file.close(); // close the file
}
在循環(huán)功能中,我們從LM35傳感器讀取并計(jì)算輸出。然后我們?cè)诖斜O(jiān)視器上打印當(dāng)前日期,當(dāng)前時(shí)間和當(dāng)前溫度。
之后,我們?cè)俅未蜷_SD卡文件并打印當(dāng)前日期,當(dāng)前時(shí)間和當(dāng)前溫度。
output = analogRead(sensor_pin);
temp =(output*500)/1023;
Serial.print(rtc.getDateStr());
Serial.print(“ ”);
Serial.print(rtc.getTimeStr());
Serial.print(“ ”);
Serial.println(temp);
sdcard_file = SD.open(“data.txt”, FILE_WRITE);
if (sdcard_file) {
sdcard_file.print(rtc.getTimeStr());
sdcard_file.print(“ ”);
sdcard_file.print(rtc.getTimeStr());
sdcard_file.print(“ ”);
sdcard_file.println(temp);
sdcard_file.close(); // close the file
}
// if the file didn‘t open, print an error:
else {
Serial.println(“error opening test.txt”);
}
delay(3000);
}
您現(xiàn)在應(yīng)該有一個(gè)正常運(yùn)行的數(shù)據(jù)記錄器,它使用Arduino來跟蹤傳感器周圍的時(shí)間,日期和溫度。
您將為此項(xiàng)目添加什么?分叉并開發(fā)自己的版本。
完整代碼
#include
#include
#include
File sdcard_file;
DS3231 rtc(SDA, SCL);
int CS_pin = 10; // Pin 10 on Arduino Uno
const int sensor_pin = A0;
float temp;
float output;
void setup() {
Serial.begin(9600);
pinMode(sensor_pin,INPUT);
pinMode(CS_pin, OUTPUT);
rtc.begin();
// SD Card Initialization
if (SD.begin())
{
Serial.println(“SD card is ready to use.”);
} else
{
Serial.println(“SD card initialization failed”);
return;
}
Serial.print(“Date ”);
Serial.print(“ ”);
Serial.print(“ Time ”);
Serial.print(“ ”);
Serial.print(“ Temp ”);
Serial.println(“ ”);
sdcard_file = SD.open(“data.txt”, FILE_WRITE);
if (sdcard_file) {
sdcard_file.print(“Date ”);
sdcard_file.print(“ ”);
sdcard_file.print(“ Time ”);
sdcard_file.print(“ ”);
sdcard_file.print(“ Temp ”);
sdcard_file.println(“ ”);
sdcard_file.close(); // close the file
}
// if the file didn’t open, print an error:
else {
Serial.println(“error opening test.txt”);
}
}
void loop() {
output = analogRead(sensor_pin);
temp =(output*500)/1023;
Serial.print(rtc.getDateStr());
Serial.print(“ ”);
Serial.print(rtc.getTimeStr());
Serial.print(“ ”);
Serial.println(temp);
sdcard_file = SD.open(“data.txt”, FILE_WRITE);
if (sdcard_file) {
sdcard_file.print(rtc.getTimeStr());
sdcard_file.print(“ ”);
sdcard_file.print(rtc.getTimeStr());
sdcard_file.print(“ ”);
sdcard_file.println(temp);
sdcard_file.close(); // close the file
}
// if the file didn‘t open, print an error:
else {
Serial.println(“error opening test.txt”);
}
delay(3000);
}
-
SD卡
+關(guān)注
關(guān)注
2文章
578瀏覽量
65671 -
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192113
發(fā)布評(píng)論請(qǐng)先 登錄
如何連接溫度探頭到數(shù)據(jù)記錄儀
溫度傳感器常用規(guī)格參數(shù)
如何校準(zhǔn)溫度傳感器
工業(yè)溫度傳感器的優(yōu)缺點(diǎn) 溫度傳感器在智能家居中的應(yīng)用
Arduino程序:實(shí)現(xiàn)SD NAND(貼片sd卡)的讀寫功能
基于電阻的溫度傳感器原理
非接觸溫度傳感器如何測(cè)量?jī)?nèi)部溫度?
電磁爐溫度傳感器壞了有什么特征
LM19溫度傳感器數(shù)據(jù)表

LM92數(shù)字溫度傳感器和窗口比較器數(shù)據(jù)表

LM77數(shù)字溫度傳感器和比較器數(shù)據(jù)表

LM76數(shù)字溫度傳感器和熱窗比較器數(shù)據(jù)表

LM35高精度攝氏溫度傳感器數(shù)據(jù)表

LMx35 LMx35A 精密溫度傳感器數(shù)據(jù)表

評(píng)論