Arduino IDERaspberry Pi Pico にSDカードを使いたくてライブラリをいくつか試してみました。

何とか動きましたので,忘れないようにメモしておきます。


Raspberry Pi Pico マイクロSDカードリーダーです。




SDカードリーダーはSPIでつなぎます。





[SPI接続のデフォルト設定]
 Arduino IDEにはRaspberry Pi Pico用のボードマネージャが2種類あり,どうもデフォルトのSPI接続Pinが異なります。

使ったSDライブラリのサンプルコードに書かれているコメントです。




PIn配置図です。
 最近は多分言葉の問題で,Master-Slaveを使わない表記がされることもあるようで, Picoもそうなっています。

Master In - Slave Out -> SPIRX
Master Out - Slave In -> SPITX






[ボードマネージャー]
  私は何となく評判の良いearlephilhower/arduino-picoを使っています(^^)。

 ボードマネージャのURL:https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json



[SDライブラリー]
 khoih-prog / RP2040_SDからライブラリを頂きました。

SDライブラリのURL:https://github.com/khoih-prog/RP2040_SD
ここからライブラリをダウンロードして追加します。

1) サイトの[Code] -> [Downlad ZIP]でライブラリのZIPファイルをPCにダウンロードします。





2) Arduino IDE の[スケッチ]->[ライブラリをインクルード]->[.ZIP形式のライブラリをインストール]でWindowが開くので,ダウンロードしたファイルを指定するとインストールされます。



 ↓ ↓




再度[スケッチ]→[ライブラリをインクルード]するとライブラリに追加されたのが確認できます。






[SDライブラリをインクルードしたプログラム]
 今回インクルードしたライブラリ"RP-2040_SD"はArduino IDEの2つのボードマネージャーの両方に対応するようにできています。

そのため,サンプルプログラムではプログラムの初頭にコンパイラに対する記述があります。




不必要な方のPin名の読み替え部分を消さなくても,特にコンパイル後のプログラムの大きさには関係ないのでしょうが,,,何か長いですよね(^^;;;;;;;;

ちなみにSDカードのファイルオブジェクトをグローバルで宣言しているのはプログラムのどこのスコープでもSDカードからデータが使えるので良いのでしょうね。



[テストプログラム]
 上記サンプルの"ReadWrite"プログラムで動作を確認した後,少し自分なりにアレンジしてテストしてみました。

初頭部は私が使っているボードマネージャ"arduino-pico"にだけ対応する仕様です(^^;;;;;;






プログラム自体はSDカードに"newtest2.txt"というファイルを作って0-9の数字を書き込み,それを読み出してシリアルモニタに出力する,,,というだけです
(^^;;;;;;。

setup 部でプログラムは終わっていて,loop部は空です。





このプログラムの出力結果です。ま,地味に出ています(^^)。





今回使ったライブラリ"RP-2040_SD"はSPIの対応Pinがデフォルトだけで変更できないようですが,それでもArduino IDE でPico にSDカードがつけられるようになりましたV(^^)。

Raspberry Pi Pico でSDカードを使うのはPython では多くの記事があります。Arduino IDE ではどうも話がすっきりせず,実際に幾つかのライブラリを試してみてもコンパイルエラーの連続で困りました。

Arduinoのフォーラムで見かけ,試してみたライブラリでやっと動きました。

動けばこちらのものですのでESP32で行っているRGBビットマップ画像データのSDカードからの取り込みなどがPicoでもできるようになって便利に使えそうです。
AD