怎样将SD卡模块连接到Arduino 并使用LM35温度传感器记录温度值

电子说

1.3w人已加入

描述

电路图

首先,将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配合使用,因此我们已经包含了SPI库。

#include

#include

#include

然后我们初始化一个File类型的对象“sdcard_file”,它将帮助我们使用这些函数之后,我们定义了连接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卡已正确初始化,则串行监视器上将打印“SD卡已准备就绪”。

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;

}

接下来我们打印“日期”,“时间”和“温度” “在串口显示器上。然后我们打开SD卡文件并在那里打印相同的东西。如果我们命名的文件不在那里,它将在那里创建。

在那里打印后,我们关闭SD卡,以便保存文件中的数据。

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

}

在循环功能中,我们从LM35传感器读取并计算输出。然后我们在串行监视器上打印当前日期,当前时间和当前温度。

之后,我们再次打开SD卡文件并打印当前日期,当前时间和当前温度。

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);

}

您现在应该有一个正常运行的数据记录器,它使用Arduino来跟踪传感器周围的时间,日期和温度。

您将为此项目添加什么?分叉并开发自己的版本。

完整代码

#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);

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分