センサーなどの情報を記録したいな。
使いたいのか。
センサーやカメラのデータを保存したいのだ。
使いやすいそ。使ってみるか!
この記事では、「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
Raspberry Pi Pico W
ピンヘッダ実装済み
ピンヘッダを自分ではんだ付けするもの
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スロットを準備しました。
駆動電圧は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への書き込み
- Raspberry Pi PicoをパソコンにUSB接続します。
- Arduino IDEで前述のプログラムを記載して、 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。
「Raspberry Pi Pico/RP2040」-「Raspberry Pi Pico W」 - 「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
- 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。(転送速度は「115200」です)
- 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
※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
Raspberry Pi Pico W
ピンヘッダ実装済み
ピンヘッダを自分ではんだ付けするもの
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」を使っ […]