mc3(模型撮影用カメラv3)作成のためにSDIOでのmicroSDカードアクセスを試してみたので、回路構成と設定をメモ
ハードウェア周り
まずはラズパイ周り。Raspberry Pi Zero 2Wはpinoutを参考に、microSD側は秋月電子のマイクロSDカードスロットDIP化キットを使用。
最初調べたところだと、GPIOからmicroSDのスロット付き基板まで直接繋いでいたけど、それだとうまく動かなかった。色々調べてたところ
この動画の概要欄で
(Following connections should have 22-33 Ohm resistors in series. Values aren’t really critical.)
https://www.youtube.com/watch?v=uMLaNqOBdvk
CLK — GPIO22 (Pin 15)
CMD — GPIO23 (Pin 16)
DAT0 – GPIO24 (Pin 18)
「以下の接続には、22~33オームの抵抗を直列に接続する。値はあまり重要ではありません。」とあるのに行き着き、秋月電子で(間違えて)240Ωの抵抗を買ってきて接続したら動くくらいには安定するようになった。
Linuxの設定
/boot/config.txtに以下を追記してから一回再起動。
[all]
dtoverlay=disable-wifi
dtoverlay=disable-bt
dtoverlay=sdio,poll_once=off
内容は調べれば出てくるので細かいところはすっ飛ばすけど、WifiとBluetoothを無効化してsdioを有効にしている。
microSDカードをセットしてdmesgを見ると
$ dmesg | grep mmc
[ 3.830309] mmc-bcm2835 3f300000.mmc: mmc_debug:0 mmc_debug2:0
[ 3.836380] mmc-bcm2835 3f300000.mmc: DMA channel allocated
[ 3.954355] mmc1: host does not support reading read-only switch, assuming write-enable
[ 3.959582] mmc1: new high speed SDHC card at address 1234
[ 3.963554] mmcblk1: mmc1:1234 SA16G 14.4 GiB
[ 4.562367] mmcblk1: p1
[ 4.567888] mmcblk1: mmc1:1234 SA16G 14.4 GiB
[ 4.593830] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
[ 4.635970] mmc0: host does not support reading read-only switch, assuming write-enable
[ 4.649488] mmc0: new high speed SDHC card at address 1234
[ 4.658246] mmcblk0: mmc0:1234 SA16G 14.4 GiB
[ 4.667512] mmcblk0: p1 p2
[ 4.673240] mmcblk0: mmc0:1234 SA16G 14.4 GiB
[ 4.721596] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Quota mode: none.
[ 8.206991] EXT4-fs (mmcblk0p2): re-mounted. Quota mode: none.
となり、sdio接続のmicroSDカードがmmcblk1として見えるようになる。このmmcblk1p1がmicroSDカードのパーティション。
これを
sudo mount -t vfat /dev/mmcblk1p1 /media/microSD/
でマウントすると、中身が見れるようになる。lsコマンドで中身見たり、cpでファイルやり取りしたら
sudo umount /media/microSD/
でアンマウント。
最後に撮影試験
カメラモジュールを繋いでraspistillコマンドで写真を撮ろうとしたけど、何故か拒否されるので、一旦ホームディレクトリに保存してからcpで写真を転送して回収した写真がこれ
上下反転してるのは、カメラを設定していないから。
課題
なんかいまいちまだ安定しない。22~33Ωじゃなくて240Ωなのが悪さしてるのかは不明。症状としては、mount, umount, dfなどを叩くと、そのままプロンプトが帰ってこない。直にキーボード繋いでるときはSysRqキーで再起動できるけど、ssh接続で発生すると詰み。
あと、ジャンパワイヤが所持分使い切ったために次の実験ができない。今度買いに行かないとな。