ArduinoでSDカード

公開日: 電子工作 | ,

ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduinoでも比較的簡単にSDカードを読み書きできるらしいことが分かった。
今回は、それを試してみました。 

 

SDカード

SDカード・マイクロSDカード

SDカードには、通常サイズのSDカードと、miniSDカード、microSDカードと3種類存在しています。
現在良く使っているのは、通常サイズのSDカードとmicroSDカードでしょう。(miniSDってどこ行ったんでしょうね)

端子

SDカード、マイクロSDカード、若干の違いは有るものの、カードから出ている端子はほぼ共通しているようです。

SDカード 端子

マイクロSDカード 端子

SD microSD 機能 SPIモード Arduino UNO
9 1 DAT2    
1 2 DAT3 CS (SS) D4※
2 3 CMD DI (MISO) D11
3 - VSS    
4 4 VDD VDD 3.3V
5 5 CLK SCK D13
6 6 VSS VSS GND
7 7 DAT0 DO (MOSI) D12
8 8 DAT1    

※ArduinoのCS端子は変更可能、その他は変更不可。

 

変換基板

AE-MICRO-SD-DIP AE-MICRO-SD-DIP

今回は、ターゲットをマイクロSDカードに絞って、秋月電子のマイクロSDカードスロットDIP化キットを利用しました。
ブレッドボードで利用するのに便利です。

 

抵抗で分圧して接続

SDカードの動作電圧は2.7~3.6Vと決められている。対して(一般的な)Arduinoは5V。
この電圧差をなんとかしないといけないのですが、簡単な方法として、それぞれの信号を抵抗で分圧して接続する方法が良く利用されているようです。

ArduinoでSDカード

 

プルアップ+ダイオード接続

抵抗で分圧する方法以外に、プルアップ+ダイオードを使って接続する方法も良く利用されているようです。

ArduinoでSDカード

ちなみに、秋月電子で扱われている通常サイズのSDカード変換基板(SDカードスロットDIP化モジュール)には、基板上でプルアップ抵抗が結線されているので、この方法を使わざるをえない。

 

プログラム

Arduinoには、便利なSDカード・ライブラリがあります。
また、サンプルスケッチも用意されているので、今回はサンプルスケッチを使って動作確認を行います。

ArduinoでSDカード

メニューのファイル→[スケッチの例]→[SD]で、

  • CardIndo
  • Datalogger
  • DumpFile
  • Files
  • listfiles
  • ReadWrite

これら6種類のサンプルスケッチが用意されているので、この中から適当に選んでSDカードの読み書きが出来ることを確認しました。

サンプルスケッチによっては、CS信号ピンの設定が4番ピンが利用されていたり10番ピンが利用されていたりバラバラなので、回路に合わせてソースを変更するなり、ソースに合わせて回路を変更するなり、要チェックです。

 

SDカード抜き挿し

SDカードの通電時の突入電流は割りと大きいらしい。
そのことが以下のリンクの端子処理と活線挿抜の項で述べられている。

MMC/SDCの使いかた – elm-chan.org

つまり、SDカードの抜き差し時にはその突入電力によってArduinoにBOR(低電圧リセット)が発生すると。

実際に私の手持ちのArduinoで試してみると、古いDuemilanoveではBORが発生するが、UNOだとBORは発生しませんでした。
この違いは、DuemilanoveはFTDIのUSBシリアル変換から3.3Vの電圧を取っているのに対して、UNOは3端子レギュレターから3.3V取っている違いなのかな?と考えています。
(Duemilanoveでは、BORがFTDIのチップで発生してPCとの接続が切断されてしまうので結構面倒です。)

UNOの方でも、もしかするとSDカードによっては発生するかもしれないので、SDカードの抜き差しには何等かの対策を考慮する必要があるかもしれません。
とりあえず、仕様としてSDカードの抜き差しは禁止としておくとか・・・

 

消費電力

今回、2枚のSDカードで試したところ、アイドル状態で1枚は約10mA、もう1枚は約15mA程度の電流を消費することが分かりました。
(自作の電圧・電流計なので精度は高くありませんのであくまで参考程度で見てください。)

ArduinoでSDカード
Arduino UNOで、カードを抜いた状態で55mA流れています。

ArduinoでSDカード
1枚目のSDカードでは66mAに上昇

ArduinoでSDカード
2枚目では70mAまで上がりました。

当たり前なのでしょうが、SDカードによって消費電流はバラバラなようです。

 

関連記事

no image

AndroidにPS2キーボードを繋いでみた

@yishiiさんの素のAndroid端末を外部のキーにより操作する実験と言う記事を参考に、Ardu

記事を読む

raspi-config

Raspbianの最初の設定

  Raspbianのインストール後にraspi-configを使って行う最初の設定

記事を読む

熱湯の温度計測実験

パソコンで温度計 #3

今回は、I2C接続の温度センサー STTS751をケーブルを使ってArduinoに接続できるよう

記事を読む

thermometer

パソコンで温度計 #2

今回は温度表示とログ取りアプリを作ったので公開。 前回にArduino+STTS751で作った

記事を読む

S2 SoundIR analyzer

赤外線リモコン受信機(イヤホンジャック接続)のアプリ

 前回の赤外線リモコン受信機(イヤホンジャック接続)の回路 を使う為のAndroidア

記事を読む

thermometer overlay

パソコンで温度計 #4

前回までに作ったPC温度計のログデータを、計測と同時に撮影した映像にオーバーレイ表示(スーパーイ

記事を読む

X-Window

Raspberry Piのスクリーンショット

  ブログで使う用に、Raspberry Piのスクリーンショットを撮りたいと思った時、

記事を読む

no image

気になる物

HT-03Aで使えるのかどうかは知らないけど、Bluetooth-シリアルモジュール(BT-MOD1

記事を読む

Raspberry Pi - Ethernet

Raspberry Pi インターネット接続

Raspberry Piをインターネットに接続してみた。 有線で接続(Ethern

記事を読む

ssh_connected

Raspberry PiをWindowsで操作する(SSH)

SSHを使って、Raspberry Piを外部PC(Windows)で操作する。

記事を読む

Arduinoで温湿度データロガー
Arduinoで温湿度計 #2

今回は、前回作った温湿度計にRTCモジュールとSDカードアダプタを

Arduinoで温湿度計
Arduinoで温湿度計

秋月電子の温湿度モジュールを使って、温湿度計を作ってみました。 以前

SDカード・マイクロSDカード
ArduinoでSDカード

電子工作で大量のデータを保存する方法を調べていると、 Arduin

秋月電子 リアルタイムクロック(RTC)モジュール
秋月のリアルタイムクロック(RTC)モジュール

今回は秋月電子のI2C接続のリアルタイムクロック(RTC)モジュールを

秋月電子 キャラクタLCD
秋月の小型キャラクタLCD

今回秋月電子で売られている小型のキャラクター液晶2種を買ったので、

PAGE TOP ↑