ラズパイピコからSDカードを扱う

ラズパイピコ

 Raspberry Pi Picoに、micro SDカードリーダ(DM3AT-SF-PEJM5)を接続して、データを読み書きできるようになりました。各種センサと組み合わせればデータロガーが作れると思います。

広告

使用する電子部品

 本稿で使用する部品はラズパイピコと秋月電子通商のマイクロSDカードスロットDIP化キット(AE-MICRO-SD-DIP)のみです。このキットは、ヒロセ電機のmicroSDカードスロット(DM3AT-SF-PEJM5)を2.54ミリピッチの基板に挿せるようにキット化したものです。

電子部品個数備考
1個Raspberry Pi Pico
1個AE-MICRO-SD-DIP
秋月電子通商で売っているmicro-SDカードリーターです。
なおmicro-SDカード自体は別途準備して下さい。

配線図

 配線図は以下の通りです。

Picoのpin番号Picoのpin内容AE-MICRO-SD-DIPのpin番号AE-MICRO-SD-DIPのpin内容
22SPI0 CSn(チップセレクタ)2CD/DAT3
25SPI0 TX(MOSI)3CMD
363V3(OUT)4VDD
24SPI0 SCK(CLK)5CLK
28GND6VSS
21SPI0 RX(MISO)7DAT0
DAT0とCMDは10kΩを介してVDDに繋ぐ必要があるという情報も見かけたけど、繋がなくても動作しました。
SPI(Serial Peripheral Interface)でやりとりをします

 ちなみに上記のfritzingのAE-MICRO-SD-DIP(DM3AT-SF-PEJM5)のパーツは現物を見ながら自分で描いてみました。折角なので公開します。

AE-MICRO-SD-DIP.fzpz

MicroPythonのコード

 SDカードリーダの制御(フォルダとファイルの作成&削除、書き込み&読み込み)するコードは以下の通りです。ところで、sdcard.pyというコードをインポートしていますが、githubに同じ名前のファイルが幾つかあり、動くものを探すのに少し苦労しました。リンクを貼っておきます。

from machine import Pin,SPI
import os, sdcard

spi = SPI(0,sck=Pin(18), mosi=Pin(19), miso=Pin(16))
sd = sdcard.SDCard(spi, Pin(17))

#SDカードをマウント
os.mount(sd, '/sd')

#SDカード内を表示
print(os.listdir('/sd'))

#フォルダを作成
os.mkdir('/sd/test')

#ファイルを書き込み用に開く(無ければ新規作成)
fp = open('/sd/test/test.txt', 'w')

#ファイルに書き込み
fp.write('test')

#ファイルを閉じる
fp.close()

#ファイルを読み取り用に開く
fp = open('/sd/test/test.txt', 'r')

#ファイルから読み出し
print(fp.read())

#ファイルを閉じる
fp.close()

#ファイルを削除
os.remove('/sd/test/test.txt')

#カレントディレクトリを変更
os.chdir('../')

#フォルダを削除
os.rmdir('/sd/test')

#SDカード内を表示
print(os.listdir('/sd'))

コメント

タイトルとURLをコピーしました