以前の記事でESP32でMicro SDカードを扱う記事を書きました。
Raspberry Pi PicoでもMicro SDカードの読み書きができることがわかったので、今回はその備忘録となります。
詳しく参考資料に挙げているページ様を参照してください。
では、始めます。
1:準備するもの
今回準備したものは以下の通りです。Micro SDカードについてはデータが破損する可能性があるので、壊れてもよいようなものを使う方が安心です。
- Raspberry Pi Pico ラズベリーパイピコ: マイコン関連 秋月電子通商-電子部品・ネット通販
- マイクロSDカードスロットDIP化キット: 組立キット(モジュール) 秋月電子通商-電子部品・ネット通販
- 壊れてもよいMicro SDカード
- ジャンパ線
- ブレッドボード
2:回路図
以下のように回路を作ります。
3:サンプルスケッチの実行
回路とライブラリの準備ができたら、以下のサンプルスケッチを作成します。RP2040のボードがインストールされていれば、サンプルスケッチで使うライブラリも入っているはずです。
・pico_sd_test.ino
#include <SPI.h> #include <SD.h> const int _MISO = 4; const int _MOSI = 7; const int _CS = 5; const int _SCK = 6; const String TARGET_PATH = "example.txt"; File target_file; void setup() { Serial.begin(115200); // 一応waitを入れる delay(3000); Serial.println("Initializing SD card..."); // SPIのピン設定 SPI.setRX(_MISO); SPI.setTX(_MOSI); SPI.setSCK(_SCK); // SDカードの接続判定 if (!SD.begin(_CS)) { // 接続できなかったら終了 Serial.println("initialization failed!"); return; } Serial.println("initialization done."); if (SD.exists(TARGET_PATH)) { // SDカードにすでにファイルがある場合はprintのみ Serial.println(TARGET_PATH + " exists."); } else { // ファイルがない場合は新規作成 Serial.println("Creating " + TARGET_PATH + "..."); target_file = SD.open(TARGET_PATH, FILE_WRITE); target_file.close(); } // ファイルを書き込みモードでopen(openは1つのファイルしかできないため、この前には必ずcloseしておくこと) target_file = SD.open(TARGET_PATH, FILE_WRITE); Serial.println("Writing: testing 1, 2, 3."); // ファイル書き込みしてclose target_file.println("testing 1, 2, 3."); target_file.close(); // ファイルを読み込みモードでopen target_file = SD.open(TARGET_PATH, FILE_READ); if (target_file) { Serial.println(TARGET_PATH + ":"); // ファイルが存在していた場合は中身を表示 while (target_file.available()) { Serial.write(target_file.read()); } target_file.close(); // ファイル削除 SD.remove(TARGET_PATH); } else { Serial.println(TARGET_PATH + " is not exists!!"); } Serial.println("end!!"); } void loop() { // 何もしない }
スケッチの内容を見ればわかるかとは思いますが「Micro SDカードにアクセスしてファイルがなければ新規作成をして書き込み、そのファイルを読み込んで中身を表示した後にファイル自体を削除」という動きをしています。
上記のスケッチをRaspberry Pi Picoに書き込み実行すると、シリアルモニタには以下のように表示されます。
15:40:18.060 -> Initializing SD card... 15:40:18.608 -> initialization done. 15:40:18.608 -> Creating example.txt... 15:40:18.608 -> Writing: testing 1, 2, 3. 15:40:18.686 -> example.txt: 15:40:18.686 -> testing 1, 2, 3. 15:40:18.732 -> end!!
以上がRaspberry Pi PicoでMicro SDカードの読み書きを行う方法になります。
SDカードへのアクセスが必要になってくる時もあるので、知っておいて損はないかと思います。
・参考資料
- Arduino IDEでRaspberry Pi Pico にSDカードをつないでみた | P.T.A.55
- GitHub - khoih-prog/RP2040_SD: This library enables you to use SPI SD cards with RP2040-based boards such as Nano_RP2040_Connect, RASPBERRY_PI_PICO using either RP2040 Arduino-mbed or arduino-pico core. This SD-Fat v2 can support FAT16, FAT32, exFAT file systems. exFAT supports files larger than 4GB by using uint64_t as file offset.
- GitHub - MhageGH/esp32_ST7735_Movie: Movie Player on esp32 and ST7735