こんにちは! けい(Twitter)です。
今回は、Raspberry Pi Pico(ラズピコ)でSDカードにファイルを書き込む方法を紹介していきたいと思います。
目次
必要な物
Raspberry Pi Pico
SDカードリーダーモジュール
SPI通信を介してマイコンとSDカードを接続することができます。
SDカード
SDカードに相性問題があるようです。
自分が持っている中で動作したものがこちらのKingstonのSDカードです。
MicroPythonのファームウェアのアップデート
MicroPythonでのSDカード対応が最近行われたので、古いファームウェアを使っている方はファームウェアの再度書き込みを行ってください。
こちらのページからダウンロードして、ファームウェアの書き込みを行ってください。
ファームウェアの書き込み方法については以前の記事を参考にしてください。(勿論Win/Macからでも書き込めます。)
ライブラリのダウンロード
githubからダウンロード
MicroPythonでのSDカードを簡単に取り扱えるライブラリが公開されているので、そちらをダウンロードします。
こちらのリンクにアクセスして、zipファイルをダウンロードします。
「Code」→「Download ZIP」でダウンロードできます。
ラズピコに保存
ダウンロードが完了したら、解凍を行ってください。
ラズパイをPCと接続し、Thonnyを開きます。
「ファイル」→「Open…」をクリックします。
「This Computer」を選択し、先ほど解凍したフォルダから
「micropython-master/drivers/sdcard/sdcard.py」をOpenします。
それではこのファイルをラズピコに保存していきます。
「ファイル」→「Save as…」をクリックします。
「Raspberry Pi Pico」を選択し、「sdcard.py」という名前で保存してください。
これでライブラリの準備は完了です。
回路図
Raspberry Pi Pico | SDカードモジュール |
---|---|
GP28 | CS |
GP6 | SCK |
GP7 | MOSI |
GP4 | MISO |
VSYS | VCC |
GND | GND |
サンプルプログラム
それでは、MicroPythonでSDカードにファイルを書き込んでみましょう。
このプログラムは、「テストテストテスト」という内容のテキストファイル「test.txt」を作成しています。
import machine
import os
import sdcard
sd = sdcard.SDCard(machine.SPI(0), machine.Pin(28))
os.mount(sd, '/sd')
# ファイル書き込み
file = open('/sd/test.txt', 'w')
file.write('テストテストテスト')
file.close()
実行後に、「/sd/test.txt」というファイルが保存されているはずです。
温度センサーで読み取った値をファイルに保存する
それでは、ラズピコの温度センサーから温度を取得し、ファイルに保存してみましょう。
import machine
import os
import sdcard
import utime
sd = sdcard.SDCard(machine.SPI(0), machine.Pin(28))
os.mount(sd, '/sd')
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)
# 温度を10回分記録
file = open('/sd/test.csv', 'w')
for i in range(10):
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721
file.write('temperature,' + str(temperature) + '\n')
utime.sleep(1)
file.close()
これは、10個の温度のデータを10行のcsvファイルに保存するプログラムです。
温度センサーの使い方については以前の記事を参考にしてみて下さい。
エクセルで問題なく見ることができました。