Raspberry Pi PicoのMicroPythonでSDカードを利用する


先週、Raspberry Pi PicoのMicroPythonにFATFSのサポートが追加されました。 これで FAT 形式の SD カードの読み書きが可能になります。

rp2: Add SD card + FAT support. by StereoRocker · Pull Request #6840 · micropython/micropython
manifest.py: Added sdcard module. mpconfigport.h: Added FAT driver and configuration.

というわけで早速試してみました。

利用するのは手元にあったArduino用(たぶん)の SD カードリーダです。 これはmicroSD カードを SPI モードで読み書きするものです。(MISOがMOSOになっているあたり、微妙な製品ですが・・・)

最新のMicroPythonをPicoにインストールし、次にSDカードドライバをMicroPythonのシステムに追加します。このドライバはSDカードをブロックデバイスとして読み書きするもので、MicroPythonで書かれています。(これ自体は以前から提供されています。)Thonnyなどでこのドライバ(sdcard.py)をMicroPython側のファイルシステムに保存すれば準備完了です。

 

カードリーダとPicoの結線は、以下のようにしました。現状、PicoのMicroPythonはSPIで使用するピンが決まっています。CSは任意のピンが使えますが、私は先人の業績を拝借したのでGP28を使っています。

Pico Pin Function SD-Card
6 GP4 SPI RX MISO
9 GP6 SPI CLK SCK
10 GP7 SPI TX MOSI
34 GP28 SPI CS CS
39 VSYS +5V VCC
GND GND

今回使ったカードリーダモジュールは電源が5V系だったので(信号線は3.3V/5V両用)、VCCはVSYSにつないでいます。

これで、以下のコードを実行すると、無事microSDにアクセスできました。

コメント