注目キーワード

【Arduino】Raspberry Pi Pico/W でmicroSDカードを読み書き!

すけろく
ウーム。
センサーなどの情報を記録したいな。
げんろく
なに。Raspberry Pi Picoで記録媒体を
使いたいのか。
すけろく
そうだ。
センサーやカメラのデータを保存したいのだ。
げんろく
データの保管には、microSDカードが
使いやすいそ。使ってみるか!

この記事では、「Raspberry Pi  Pico/W」に「microSDカードスロット」を接続して読み書きしてみます。

microSDカードは、とても小さいですが、かなりのデータ量を保存できるので、「Raspberry Pi  Pico/W」でも活用の幅は大きいです。

microPythonやC言語でのプログラム例はあるものの、Arduino IDEを使った例はあまりないので、ぜひチェックしてくださいね!

Raspberry Pi の中でも、省電力なCPUを搭載したマイコン開発ボードです。

他のRaspberry Pi 製品とは異なり、Linux OSを搭載していません。

しかし省スペース、省電力の専用CPU「RP2040」を搭載していて、Arduino IDEや、MicroPythonで開発可能です。

しかも、Wi-FiとBluetoothが使用できるモジュールも搭載されているので、スタンドアロンでの稼働のみならず、他のマイコンと無線通信することが可能です。

 

今回の目標
microSDカードスロット」を「Raspberry Pi  Pico/W」のGPIOに接続し、microSDカードにあるデータを読み書きします。
開発環境としては、Arduino IDEを使います。

ぜひ、皆さんも挑戦してみてくださいね!

この記事の前提となる「Raspberry Pi  Pico W」のはじめかたは、次の記事で紹介しています。

関連記事

すけろく ついに、国内でもRaspberry Pi Pico Wを手に入れたぞ! げんろく Wi-Fiモジュールがついているので、 国内の技適取得が必要だったからな。 すけろ[…]

あわせて読みたい!「Raspberry Pi  Pico W」関連の便利記事

関連記事

すけろく ん~。 このエラーの時の変数の値が知りたいな~ げんろく どうした? プログラムがうまく動かないのか? すけろく そうなのだ。 Raspberry Pi Pico[…]

今回の記事の対象となるマイコンはこちら!

Raspberry Pi Pico

created by Rinker
Raspberry Pi
¥1,350 (2024/07/18 04:58:46時点 Amazon調べ-詳細)

Raspberry Pi Pico W

ピンヘッダ実装済み

created by Rinker
ノーブランド品
¥2,290 (2024/07/18 10:07:00時点 Amazon調べ-詳細)

ピンヘッダを自分ではんだ付けするもの

created by Rinker
Raspberrypi
¥1,630 (2024/07/18 01:15:04時点 Amazon調べ-詳細)

 

 

microSDカードスロットとの接続をするためには?

microSDカードスロットは、microSDカードを挿入してデータの読み書きができるものです。

microSDカードは、次のような端子を持っています。

今回はmicroSDをSPIというプロトコルで操作しますので、各端子の対応付けは次の通りになります。

microSDカード側 SPIでの役割
D2(DAT2) 接続なし
CD/D3(DAT3) CS(Chip Select)
CMD MOSI(RX)
VDD 3.3V
CLK SLK
VSS GND
D0(DAT0) MISO(TX)
D1(DAT1) 接続なし

今回、microSDカードにアクセスするために、次のmicroSDスロットを準備しました。

マイクロSDカードスロットDIP化キット(秋月電子)

駆動電圧は3.3Vですので、今回のRaspberry Pi Pico / W では問題ありませんが、Arduino Unoなどの場合は5V⇔3.3Vのレベルシフターが必要です。

microSDカードスロットの端子の対応付けは次の通りです。

SPIを使った接続を行う場合の端子の対応付けは次の通りになります。

スロットには、microSDカードが挿入されているかを検出するスイッチ(A、B)が追加されています。

microSDカードスロット側 SPIでの役割
D2(DAT2) 接続なし
CD/D3(DAT3) CS(Chip Select)
CMD MOSI(RX)
VDD 3.3V
CLK SLK
VSS GND
D0(DAT0) MISO(TX)
D1(DAT1) 接続なし
カード検出スイッチB microSDカード検出時に
A-Bの間がクローズとなる
スイッチとして働きます。
カード検出スイッチA 同上

 

Raspberry Pi  Pico/W」との接続の際には、SPIのポートの対応付けに注意しながら次のように接続しました。

Raspberry Pi  Pico/W」では、SPIで使うことのできるインターフェイスはSPI0とSPI1がありますが、今回はSPI1を使用します。

 

microSDカードスロット側 SPIでの役割 Raspberry Pi Pico /W側 GPIO
D2(DAT2) 接続なし 接続なし
CD/D3(DAT3) CS(Chip Select) CS 13
CMD MOSI(RX) MISO(TX) 15
VDD 3.3V 3.3Vout 3.3Vout
CLK SLK SCK 14
VSS GND GND GND
D0(DAT0) MISO(TX) MOSI(RX) 12
D1(DAT1) 接続なし 接続なし
カード検出スイッチB microSDカード検出時に
A-Bの間がクローズとなる
スイッチとして働きます。
GND GND
カード検出スイッチA 同上 SDSW 9

 

カード検出スイッチAに接続するGPIO9は、プルアップし、スイッチA-B間がクローズした場合にLOWになるようにします。

スイッチを使った回路例は、次の記事で紹介しています。

関連記事

すけろく うーむ。 げんろく どうした浮かない顔して。 すけろく これまで、Raspberry Pi Pico / Wをいろいろ確認してきたが 外付けのボタンの認識ってやったか[…]

 

最終的な、「Raspberry Pi  Pico/W」と「microSDカードスロット」の接続は次のようになります。

 

Raspberry Pi  Pico/W」は、USBでパソコンと接続して、シリアルモニター経由でmicroSDカードへの処理内容を出力させます。

実際にブレッドボード上で接続すると次のようになりました。

 

ブレッドボード左側にあるPicoprobe用の「Raspberry Pi Pico」には、

GPIOをわかりやすくする「GPIO Master」を取り付けています。

気になる方は、こちらからどうぞ。

Boothショップで販売中!

この商品は、電子工作でRaspberry Pi Pico/Wを使う場合に便利なツールです。Raspberry Pi Pi…

 

 

microSDカードへの読み書きプログラムの作成

microSDカードへ読み書きするプログラムを作成します。

今回は、次のような処理を行います。

  • microSDカードが挿入されるとカード内のファイル一覧を表示する
  • microSDカード挿入時に「Hello microSD card ! 」というテキストを「mountdate.txt」ファイルに追記する

 

Arduino IDEでのプログラムの作成

プログラムをArduino IDEで作成して書き込みます。

そのためにArduino IDE上で新規のスケッチを作成します。

スケッチに次のようにコードを記載し、保存します。

 Arduino IDE スケッチ例

 

Raspberry Pi Pico Wへの書き込み 

  1.  Raspberry Pi PicoをパソコンにUSB接続します。
  2.  Arduino IDEで前述のプログラムを記載して、 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  3. 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。
    「Raspberry Pi Pico/RP2040」-「Raspberry Pi Pico W」
  4. 「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
  5. 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。(転送速度は「115200」です)
  6. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

※Raspberry Pi Pico の場合は、③の手順から適宜変更してください。

プログラム実行結果

書き込みが完了したら、microSDにテスト用のファイルを格納します。

ファイルは、次のような構成にしました。

フォーマット:FAT32

/                ←microSDのルート
 testfile01.txt           ←ルートに配置したファイル
 testfile02.txt
 testfolder/           ←フォルダ
  testfolder_text01.txt      ←フォルダ内に格納したファイル
 mountdata.txt           ←書き込みテスト用ファイル(ルートに配置)

 

microSDカードをスロットに挿入するとArduinoIDEのシリアルモニタに、次のように出力されます。

Initializing SD card...
Wiring is correct and a card is present.
Card type:         SDHC/SDXC
System Volume Information/
  WPSettings.dat12CREATION: 2024-07-01 17:44:12LAST WRITE: 2024-07-01 17:44:14
  IndexerVolumeGuid76CREATION: 2024-07-01 17:44:14LAST WRITE: 2024-07-01 17:44:16
testfile01.txt 0 CREATION: 2024-07-01 17:48:18 LAST WRITE: 2024-07-01 17:00:56
testfile02.txt 0 CREATION: 2024-07-01 17:48:34 LAST WRITE: 2024-07-01 17:00:56
testfolder/
  testfolder_text01.txt0CREATION: 2024-07-03 12:53:32LAST WRITE: 2024-07-03 12:53:34
mountdata.txt 0 CREATION: 2024-07-03 12:54:10 LAST WRITE: 2024-07-03 12:54:12
/mountdata.txt exists.

フォルダ階層きちんと認識して表示できています。

「mountdata.txt」ファイルにも「Hello microSD card !」と追記されていることが確認できます。

 

 

編集後記

いかがだったでしょうか。

Raspberry Pi  Pico/W」に「microSDカードスロット」を接続して読み書きしてみました。

センサーや、カメラなどから生成されるデータを「Raspberry Pi  Pico/W」に接続したmicroSDへ保存できるようになりました。

これで様々なIoT機能をmicroSDカードのデータをもとに動かすことができますね!

 

記事の内容は以上です。

最後までご覧くださり、ありがとうございました。

次回もご期待ください。

今回の記事の対象となるマイコンはこちら!

Raspberry Pi Pico

created by Rinker
Raspberry Pi
¥1,350 (2024/07/18 04:58:46時点 Amazon調べ-詳細)

Raspberry Pi Pico W

ピンヘッダ実装済み

created by Rinker
ノーブランド品
¥2,290 (2024/07/18 10:07:00時点 Amazon調べ-詳細)

ピンヘッダを自分ではんだ付けするもの

created by Rinker
Raspberrypi
¥1,630 (2024/07/18 01:15:04時点 Amazon調べ-詳細)

 

Raspberry Pi Pico Wの他の記事はこちらからどうぞ!

すけろく ウーム。 センサーなどの情報を記録したいな。 げんろく なに。Raspberry Pi Picoで記録媒体を 使いたいのか。 すけろく そうだ。 センサーやカメラのデータを保存したいのだ。 げんろく データの保管には、microSDカードが 使いやすいそ。使ってみるか! この記事では、「Raspberry Pi  Pico/W」に「microSDカードスロット」を接続して読み書きしてみま […]

すけろく うーむ。 げんろく どうした?浮かない顔をして。 すけろく LEDを火のように光らせる方法を知りたくてな。 げんろく それなら、1/fの揺らぎを使って 再現してみるか。 この記事では、「Raspberry Pi  Pico W」を使って、「LEDを揺らぎを加えて点灯させる」方法をご紹介します。 Raspberry Pi の中でも、省電力なCPUを搭載したマイコン開発ボードです。 他のRa […]

すけろく うーむ。 どうしたものか。 げんろく どうした。 暗い顔をして。 すけろく カーモデルのウィンカー点滅を再現したくてな。 明滅回路を作ろうか悩んでおる。 げんろく ん!? そんなときは、メインプロセッサと切り離して 動作するPIOの出番ではないのか! この記事では、「Raspberry Pi  Pico/W」に実装されている「PIO(Programmable I/O」を実際に使ってみます […]

すけろく Raspberry Pi Pico/WのPIO機能を使ってUARTの送信には成功した。 しかし、まだ受信側ができていないのぉ。 げんろく そうだな。 今度は受信側を試してみるか。 すけろく どうせなら、パソコンから送った文字を返すような やり取りができるといいな。 げんろく よし。 UART送受信を実装してみよう。 この記事では、「Raspberry Pi  Pico/W」に実装されてい […]

すけろく Raspberry Pi Pico/WのPIO機能については前回調べた。 今度は実際に使ってみたいの~ げんろく そうだな。 実際にプログラムする際の注意事項などを見ていこう。 すけろく Arduino IDEでも使用できるのか? げんろく ああ。 使えるぞ! Arduino IDEで使う場合を例にやっていこう。 この記事では、「Raspberry Pi  Pico/W」に実装されている […]

すけろく Raspberry Pi Pico/Wには、PIOという機能があるらしいな。 げんろく そうだ。 UARTなどのインタフェース不足や、実装されていない機能を GPIOに対してプログラムできる機能だ。 すけろく Raspberry Pi Pico/Wをもっと知るために PIOを調べてみたい。 げんろく よし! PIOについて少し調べてみるか! この記事では、「Raspberry Pi  P […]

すけろく うーむ。 げんろく どうした浮かない顔して。 すけろく これまで、Raspberry Pi Pico / Wをいろいろ確認してきたが 外付けのボタンの認識ってやったかぇ? げんろく たしかに!まだ取り上げていない基本的なものがあるな よし、今回はボタン押下時の状態を Raspberry Pi Pico / Wで認識してみよう。 この記事では、「Raspberry Pi  Pico W」を […]

すけろく 宅内で使っているリモコンは、どういった仕組みで テレビなどをつけているのかな~? げんろく 赤外線を使って信号を送っているのだ。 すけろく しかし、たくさんある機器のリモコンが混信しないのは どういった仕組みなのかぇ? げんろく よし、今回は赤外線リモコンの通信を 調査してみるか! この記事では、「Raspberry Pi  Pico W」を使って、「赤外線リモコンの通信内容を分析する」 […]

すけろく うーむ。 対応付けが難しいな。 げんろく どうした? Raspberry Pi Picoで悩んでいるようだな。 すけろく Raspberry Pi PicoやPico Wの GPIOピンの情報がボード上にプリント されていないから資料との対応付けがやりづらくてな。 げんろく そうか。そういう課題があるのだな。 よし、解決するグッツを作って提供してみよう! 皆さんは、「Raspberry […]

すけろく うーむ。 モーターを毎回同じくらい回転させることはできんのかな。 げんろく DCモーターや、サーボモーターだと、 回転量を正確に制御することは難しいぞ。 すけろく では、何か解決策はあるのかぇ? げんろく ステッピングモーターというものがある。 モーターの回転をステップとして制御できる。 今回はこのあたりを動かしてみるか。 この記事では、「Raspberry Pi  Pico W」を使っ […]