[Diao Ye apprend la programmation] Arduino pratique (52) --- Module de lecture et d'écriture de carte MicroSD 5

La référence à 37 capteurs et modules a largement circulé sur Internet, en effet il doit y avoir plus de 37 modules capteurs compatibles avec Arduino. Compte tenu du fait que j'ai accumulé des modules de capteurs et d'actionneurs sous la main, selon le concept de vraie connaissance (doit être pratique), à ​​des fins d'apprentissage et de communication, ici, je vais essayer de faire plus d'expériences une par une.

[Arduino] 168 types d'expériences de série de modules de capteurs (code de données + programmation de simulation + programmation graphique)
Expérience 52 : Interface SPI Module de carte Micro SD Lecteur de carte TF (avec puce de conversion de niveau)

insérez la description de l'image ici
Liste du matériel requis pour l'expérience du module de lecture et d'écriture de carte Micro SD
Carte 1G et 4GTF X2
Petit haut-parleur 8Ω 0,5 W
X1 Lecteur de carte Micro SD X2
Carte de développement Arduino Uno X1
Module de lecture et d'écriture de carte Micro SD X2 Module de
température et d'humidité DHT11 X1
Lignes DuPont (9 pièces sont préparées)
Diode électroluminescente LED (bleue) X1
Carte d'extension prototype Proto Shield (avec mini planche à pain) X1

insérez la description de l'image ici

Plate-forme logicielle requise pour les expériences de module de capteur
Programmation de code Arduino IDE (version 1.8.19)
Programmation de simulation Linkboy (version V4.6.3)
Programmation graphique Mind+ (version V1.7.0 RC2.0)
et apprentissage lors de l'édition (plate-forme en ligne https://ide.codepku.com/?type=Arduino)

Arduino – Bibliothèque SD
La bibliothèque SD intégrée permet à Arduino de lire et d'écrire sur des cartes SD. Il est développé sur la base de la bibliothèque SdFat de William Greiman. La bibliothèque SD prend en charge les modes de système de fichiers FAT16 et FAT32 sur les cartes SD standard et les cartes SDHC.

Les paramètres des fonctions de la bibliothèque SD peuvent contenir des chemins séparés par des barres obliques /, tels que "répertoire / nomfichier.txt". Le répertoire de travail étant toujours la racine de la carte SD, son nom pointe vers le même fichier qu'il contienne ou non une barre oblique (par exemple, "/fichier.txt" équivaut à "fichier.txt"). À partir de la version 1.0, la bibliothèque SD prend en charge l'ouverture de plusieurs fichiers.

La communication entre la carte de développement et la carte SD utilise SPI, note :
la broche SS doit être connectée pour sélectionner la carte SD. Sur UNO, SS est la broche D10 par défaut, et sur MEGA2560, SS est la broche 53 par défaut, ou vous pouvez également spécifier une broche SS dans la fonction SD.begin() et vous y connecter. Veuillez noter qu'après avoir personnalisé la broche SS, veuillez régler la broche sur le mode de sortie, sinon la bibliothèque SD ne fonctionnera pas correctement.

Schéma de câblage expérimental
Pin VCC ===> 5V Arduino
Pin GND ===> GND Arduino
Pin MOSI ===> Pin 11 Arduino
Pin MISO ===> Pin 12 Arduino
Pin SCK ===> Pin 13 Arduino
Pin CS ===> Pin 10 Arduino

insérez la description de l'image ici

Arduino crée et supprime des fichiers sur la carte SD
(1) Code open source de référence Arduino

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序六:Arduino在SD卡上创建和删除文件
  实验接线:
  Micro SD      UNO
  CS-------------10
  MOSI(DI)------11
  MISO(DO)------12
  CLK------------13
*/

#include <SPI.h>
#include <SD.h>
 
// 创建File实例化对象
File myFile;
 
void setup(){
    
    
    // 初始化硬件串口并设置波特率为9600
    Serial.begin(9600);
    while (!Serial)
    {
    
    
        ; //等待串口连接,仅使用本地 USB 端口
    }
 
    Serial.print("正在初始化 SD 卡...");
 
 
    // 检测是否初始化完成
    if (!SD.begin())
    {
    
    
        Serial.println("初始化失败!");
        return;
    }
    Serial.println("初始化完成。");
 
    // 查看是否存在"example.txt"文件
    if (SD.exists("example.txt"))
    {
    
    
        Serial.println("example.txt exists.");
    }
    else
    {
    
    
        Serial.println("example.txt 不存在");
    }
 
    // 打开一个新文件,然后立即将其关闭(创建文件)
    Serial.println("创建 example.txt...");
    myFile = SD.open("example.txt", FILE_WRITE);
    myFile.close();
 
    // 检查该文件是否新建成功
    if (SD.exists("example.txt"))
    {
    
    
        Serial.println("有example.txt文件了");
    }
    else
    {
    
    
        Serial.println("example.txt 不存在");
    }
 
    //删除该文件
    Serial.println("移除 example.txt...");
    SD.remove("example.txt");
 
    if (SD.exists("example.txt"))
    {
    
    
        Serial.println("example.txt exists.");
    }
    else
    {
    
    
        Serial.println("example.txt 不存在。");
    }
}
 
void loop(){
    
    
}

(2) L'état de retour du port série expérimental

insérez la description de l'image ici

Enregistreur de données Arduino avec carte SD et capteur d'humidité et de température DHT11
Schéma de câblage expérimental

insérez la description de l'image ici
Code open source de l'expérience Arduino

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序七:带有SD卡和DHT11湿度和温度传感器的Arduino数据记录器
  实验接线:DHT11接D4
  Micro SD      UNO
  CS-------------10
  MOSI(DI)------11
  MISO(DO)------12
  CLK------------13
*/

#include <SPI.h>    // 包含 SPI 库(SD 卡需要)
#include <SD.h>     // 包含 SD 库
#include <DHT.h>    // 包含 DHT 传感器库

File dataFile;

#define DHTPIN 4         // DHT11 数据引脚连接到 Arduino 引脚 4
#define DHTTYPE DHT11    // 使用 DHT11 传感器
DHT dht(DHTPIN, DHTTYPE); // 初始化 DHT 库

void setup() {
    
    
  // 打开串行通信并等待端口打开
  Serial.begin(9600);
  while (!Serial)
    ; // 等待串口连接。仅本机 USB 端口需要
  Serial.print("正在初始化 SD 卡...");
  if (!SD.begin())
  {
    
    
    Serial.println("初始化失败!");
    while (1);
  }
  Serial.println("初始化完成。");
  delay(2000);
  dht.begin();
}

uint16_t line = 1;

void loop() {
    
    
  delay(1000);
  // 读取湿度
  byte RH = dht.readHumidity();
  //以摄氏度读取温度
  byte Temp = dht.readTemperature();
  //打开文件DHT11Log.txt
  dataFile = SD.open("DHT11Log.txt", FILE_WRITE);

  // 如果文件打开正常,写入它:
  if (dataFile)
  {
    
    
    Serial.print(line);
    Serial.print(": 温度 = ");
    Serial.print(Temp);
    Serial.print("°C, 湿度 = ");
    Serial.print(RH);
    Serial.println("%");
    // 将数据写入 SD 卡文件 (DHT11Log.txt)
    dataFile.print(line++);
    dataFile.print(": 温度 = ");
    dataFile.print(Temp);
    dataFile.print("°C, 湿度 = ");
    dataFile.print(RH);
    dataFile.println("%");
    dataFile.close();

  }
  // 如果文件没有打开,打印错误
  else
    Serial.println("打开 DHT11Log.txt 出错");
}

État de retour du port série expérimental
insérez la description de l'image ici
Diagramme de scène expérimentale Arduino

insérez la description de l'image ici

Schéma de câblage pour la lecture de fichiers audio Expériences 2.wav et 3.wav
(ici CS est connecté à D10)

insérez la description de l'image ici
Code source ouvert de référence Arduino

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序八:播放音频文件2.wav和3.wav
  实验接线:喇叭接D9
  Micro SD      UNO
  CS-------------10
  MOSI(DI)------11
  MISO(DO)------12
  CLK------------13
*/

#include <SD.h>        //包含SD模块库
#include <TMRpcm.h>    //包含扬声器控制库

#define SD_ChipSelectPin 10   //将pin10定义为CS pin

TMRpcm tmrpcm;                //为扬声器库创建一个对象

void setup() {
    
    
  //定义扬声器引脚。扬声器库正在使用 pin9。
  tmrpcm.speakerPin = 9;

  // 设置串口
  Serial.begin(9600);
  Serial.println("准备就绪");
  

  //查看卡是否存在并且可以初始化。
  if (!SD.begin(SD_ChipSelectPin)) {
    
    
    Serial.println("SD 失败");
    return;               //如果没有就不要再做
  }

  //每次arduino上电或重置时都会播放声音文件“2”
  Serial.println("播放声音文件2.wav");
  Serial.println(" ");
  tmrpcm.play("2.wav");
}

void loop() {
    
    
  if (Serial.available()) {
    
    
    //通过串口监视器发送字母a开始播放
    if (Serial.read() == 'a') {
    
    
      // 设置音量。数字的范围可以是 0-7。
      // 此时设置音量为5。
      tmrpcm.setVolume(5);    // 将音量设置为 5。

      // 播放文件 3。文件 3 是 Red Light 的音频。
      Serial.println("字母a");
      Serial.println("播放声音文件3.wav");
      tmrpcm.play("3.wav");
    }
  }
}

Retour de port série expérimental

insérez la description de l'image ici
Diagramme de scène d'expérience Arduino

insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41659040/article/details/131875725
conseillé
Classement