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 <SPI.h> #include <SD.h> 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() { }