・目的
秋月電子sd-dip化キットを使用してSDカードにテキストファイルを書き込む。
・使用したもの
秋月sd-dip化キット
ユニバーサル基盤
1.8kΩ×3個
3.3kΩ×3個
分割ロングピンソケット(細ピン)
SDカード8MB
micro SD 8GB
・方法
(1)回路作成
1.8kと3.3kの抵抗を使い分圧する。回路図を図1に示した。
抵抗なしで繋いでも絶対に認識されない。またブレッドボードに
図1の回路を作った。(図2、3)
またSDソケット側のピンとArduino側のピンの接続を
以下の表1に示した。
図1:秋月SD-dip化キットの回路図
図2:ユニバーサル基板にはんだ付けその1
図3:ユニバーサル基板にはんだ付けその2
表1:SDソケット側のピントArduino側のピンの接続
Akiduki dip-sd |
Arduino uno pin No |
5.0V |
接続しない |
3.3V |
3.3V |
CLK |
D13 |
SDI |
D11 |
SDO |
D12 |
CS |
D10 |
CD |
接続しない |
Arduino unoのピン配置図を図4に示した。図4を見るSCKがD13
MISOがD12、MOSIはD11、SSはD10であるため表1の配線になる。
図4:Arduino uno pin
source: http://www.pighixxx.com/test/pinoutspg/boards/page/3/#prettyPhoto
(2)SDカードの状態の確認
Arduinoのスケッチの例>SD>Cardinfo から選択し、Cardinfo を書き込む。
図5を参照のこと。
このサンプルコードはSDカードの状態を表示する。もしここでうまくいかず
initialization failed. Things to check:
と表示された場合は、SDカードのフォーマットがされていないとか、配線が
違っているなどの問題があるはず。成功すると図6のようになる。
図5:CardInfo サンプルファイル
図6:CardInfo 実行結果
(3)SDカードにテキストファイルを書き込む
SDカードとSPI通信にて通信する。SPI通信については
に詳しく書いてあり参考にした。SPI(Serial Peripheral Interface)
SPIはSCLK(or SCK),MISO(orSDO,do).MOSI(or,SDI,DI),SS(orCS)の4種類
の信号線からなる。 ※カッコ内は別名
SSピンLOWだとスレーブとなりマスタと通信する。Arduino unoをマスタにし、
SDカードをスレーブにしたいのでCSピンをHIGHに設定する必要がある。
プログラムコードを図7にしめした。
#include <SD.h>
#include <SPI.h>
const int cs = 10; //チップセレクトピンをD10に設定
void setup()
{
File myFile ;
Serial.begin(9600) ;
//以下の2行でarduino unoがマスターとなる
pinMode(cs, OUTPUT) ;
digitalWrite(cs,HIGH);
if (!SD.begin(cs)) {
Serial.println("Card failed, or not present") ;
return ;
}
Serial.println("card initialized.") ;
myFile = SD.open("test.txt",FILE_WRITE) ;
if (myFile) {
myFile.write("1234567890\r\n") ;
Serial.write("1234567890\r\n") ;
myFile.write("abcdefg\r\n") ;
Serial.write("abcdefg\r\n") ;
myFile.close() ;
} else {
Serial.println("error opening") ;
}
}
void loop() {
}
図7:全体のプログラムコード
・実験結果
結果を図8、図9にしめした。図8はシリアル通信画面、図9は書き込んだ
テクストファイル。
図8:結果シリアル通信
図9:結果テクストファイル
<考察>
最初CardInfoは実行できても図7のコードが実行できなかった。8MBの古い
SDカードを利用していたが、8GBのSDカードで試したところうまくいった。
SDカードにはいくつかのバージョンがあり、初期のSDカードをにはArduinoの
ライブラリが対応してないのかもしれない。詳しく調べていないがCardInfoが
実行できても書き込みができないといった症状なら最近のSDカードに替えて
やってみるとうまくいくかもしてない。