37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做实验,不管能否成功,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真) 实验五十二:SPI接口Micro SD卡模块TF卡读写卡器 (带电平转换芯片) SN74LVC125A 具有三态输出的四路总线缓冲器 逻辑系列 LVC 每片芯片元件数目 4 最长传播延迟时间@最长CL 5.3 ns @ 2.7 V 最大高电平输出电流 -24mA 最大低电平输出电流 24mA 安装类型 表面贴装 封装类型 TSSOP 引脚数目 14 尺寸 5 x 4.4 x 1.15mm 高度 1.15mm 长度 5mm 最大工作电源电压 3.6 V 最高工作温度 +125 °C 最小工作电源电压 1.65 V 传输延迟测试条件 50pF 最低工作温度 -40 °C 宽度 4.4mm 该模块(MicroSD Card Adapter)是Micro SD卡读写模块,通过文件系统及SPI接口驱动程序,单片机系统即可完成MicroSD卡内的文件进行读写。Arduino用户可直接使用Arduino IDE自带的SD卡程序库即可完成卡的初始化和读写。 模块特点如下 1.支持Micro SD卡、Micro SDHC卡(高速卡) 2.板载电平转换电路,即接口电平可为5V或3.3V 3.供电电源为4.5V~5.5V,板载3.3V稳压电路 4.通信接口为标准SPI接口 5.4个M2螺丝定位孔,便于安装 模块电原理图 制接口:共 6 个引脚(GND、VCC、MISO、MOSI、SCK、CS),GND 为地,VCC 为供 电电源,MISO、MOSI、SCK 为 SPI 总线,CS 为片选信号脚; 3.3V 稳压电路:LDO 稳压输出的 3.3V 为电平转换芯片、Micro SD 卡供电; 电平转换电路:往 Micro SD 卡方向的信号转换成 3.3V,MicroSD 卡往控制接口方向的 MISO 信号也转换成了 3.3V,一般 AVR 单片机系统都能读取该信号; Micro SD 卡座:是自弹式卡座,方便卡的插拔。 定位孔:4 个 M2 螺丝定位孔,孔径为 2.2mm,使模块便于安装定位,实现模块间组合。 实验器材: 1 个 Arduino 兼容主板 Catduino(不熟悉开源硬件的可以将其理解为 Atmega328P 单片机 开 发板)及一根 mini USB 线; 1 个 Micro SD 卡模块; 1 张三星的 2G 的 Micro SD 卡; 1 个 Arduino 接口扩展板 Base shield(内链接); 6 根母对母杜邦线,用于连接模块的控制接口和 Base Shield 上引出的 SPI 接口。 实验步骤: 1. 将 Base Shield 直接插到 Catduino 主板上,确保 Micro SD 卡已格式化为 FAT16 或 FAT32 格式,并将其插到 Micro SD 卡模块上。 2. 用 6 根母对母杜邦线将 Micro SD 卡模块与 Base Shield 的 SPI 接口连接起来,如下表所示 3. 用mini USB将Catduino连接起来,如果是首次使用该主板,其USB转串口驱动可从Arduino的IDE目录下的drivers找到USB Drivers。 4. Micro SD卡读写的相关程序可使用Arduino IDE自带的程序,目录是 ..\Arduino-1.0\libraries\SD。重新打开Arduino IDE,点击工具栏的Open按钮,打开SD中的CardInfo例程,如下图所示,需要注意的是片选信号脚应改成实际连接到模块的片选脚,在本实验中选择D10。 选好串口、板子名称,点击烧录按钮,即可烧录。该例程展示的是如何读取 Micro SD 卡的信息,包括卡的类型、文件系统类型、存储容量,也列出卡中的文件名称。点击 Serial Monitor即可查看。 /* 【Arduino】168种传感器模块系列实验(52) 实验五十二:SPI接口Micro SD卡模块TF卡读写卡器 (带电平转换芯片) Arduino 的 uno 引脚 CS-------------10 MOSI(DI)------11 MISO(DO)------12 CLK------------13 */ #include #include File myFile; void setup() { Serial.begin(9600); while (!Serial) { ; } Serial.print("Initializing SD card..."); if (!SD.begin(10)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); myFile = SD.open("123456.TXT"); if (myFile) { Serial.println("123456.txt:"); Serial.println("↓↓↓↓"); while (myFile.available()) { Serial.write(myFile.read()); } myFile.close(); } else { Serial.println("error opening 123456.txt"); } } void loop() { }