日記とか、工作記録とか

自分に書けることを何でも書いてゆきます。作った物、買ったもの、コンピュータ系の話題が多くなるかもしれません。

Amazon Dash Button買ってみます

ここに書くようなことが最近少なくて間が空いています。

Amazon IoT Buttonというのがあって、ボタンを押すとAWSのいろいろな機能が呼び出せる…… らしいのですが、あいにく日本には出荷されないということです。早く日本でも使えるようにならないかと待っていたのですが、どうもそんな気運を感じませんね。ユニークな(というより素っ頓狂な)(なんと古い言い回し)使い道を切り開くには日本でも売ってみた方が良いと思うんですけどね。

しかし、どうもAmazon Dashボタンでも、いくつか手を加えるとIoT Button相当の動作がさせられるようで。Amazonさんとしては最初からハックしてみせよという意向なんでしょうかね。

赤いきつねうどん Dash Button

赤いきつねうどん Dash Button

というわけで3個買ってみました。まずは普通のDashボタンとして使ってみて、そのあと遊んでみようと思います。

オデッセイ(MARTIAN:火星の人)

映画をみました。どうして洋画ってタイトル変えるんですかね。日本語にするならわかるけれど、わざわざ横文字のままで…… 原作には、オデッセイという言葉は出てきません。う~ん。

普段あまり映画は見ないのですが、映画館でやっていたころTVCMをたくさんみたので、興味は持っていました。
読書はたくさんするほうなので、先にKindle版の本を読んで、これなら映画も観られそうかなってことで休日の鑑賞となりました。

書籍の方が中身は濃いので、時間のある人にはKindle版をおすすめしたいところです。映画の場合2時間に詰め込む必要があるので、どうしても端折りますよね。しかたないことですが、ストーリーの結構大事な一角が無くなっていたりするので、ちょっと残念だなと思いました。

火星の人

火星の人

ざっくりしたストーリーとしては、火星に独り取り残されることになった主人公マーク・ワトニーがどうやって生き残って地球に帰還するのか、というものなのですが、絶望的な状況でもメゲない主人公の明るさにより、全体的に観やすい内容になっています。独りで観ても、家族で観てもOKかと。

独りで生き残るストーリーなので、難しい人間関係が絡まったりはしません。
私は複雑な人間関係は苦手なのですが、そういう方にもこのお話はオススメです。

はてなブログ、重いですよね……

最近は、少々将棋にはまっています。
ものを作るのはあまりやっていませんが、自分の持っている小さなサーバでCGIを作りましたのでその紹介を。

将棋ウォーズというゲームがありまして、私もここで地道に対局しています。私は現在3級なのですが、将棋は強くなるために対局後の振り返りが重要で、対局相手との対話(感想戦)が大切とされてきました。

ただ、ネット対戦の場合、感想戦はなかなか難しいとおもいます。相手の方と手軽に話せませんしね。将棋ソフトを使用して分析することが多くなるのですが、将棋ウォーズの中で分析するだけでなく、自分で用意した将棋ソフトで解析したい場合もあります。そんな時に棋譜を取り出す必要がありますが、そのためのCGIです。

dododon.jp

こちらのサイトで棋譜をツイートするときのURLをコピー&ペーストしてボタンを押すと、棋譜ファイル(*kif)がダウンロードできます。使い方は簡単ですのでお試しください。私はダウンロード後は激指14に読み込ませて使っています。

Raspberry pi 3のバックアップ再び(rpi-clone)

以前バックアップについては一度書きましたが、以前のエントリでは、microSDカードを抜いてPCでバックアップを取る方法でした。今回はRaspberry piを起動したままで取得することを試みます。
f:id:WindVoice:20170129223222j:plain

準備

今回のバックアップはmicroSDカードに取得します。以前書いた方法はPCにファイルの形でとることができるので、場合によってはこちらのほうが便利かもしれません。SDカードを交換して簡単に環境を入れ替えたい場合は今回の方法がよさそうです。まずは安いSDカードとUSB-microSDカードリーダを入手しました。どっちも安いです。

rpi-cloneのインストール

インストールというほどのことはないですが…… GitHubにソースがあるのでcloneしました。
シェルスクリプトで、作者の方によれば/usr/local/binにコピーする説明となっています。

pi@raspberrypi:~ $ git clone https://github.com/billw2/rpi-clone.git
Cloning into 'rpi-clone'...
remote: Counting objects: 58, done.
remote: Total 58 (delta 0), reused 0 (delta 0), pack-reused 58
Unpacking objects: 100% (58/58), done.
Checking connectivity... done.
pi@raspberrypi:~ $ cd rpi-clone/
pi@raspberrypi:~/rpi-clone $ ls
README.md  rpi-clone
pi@raspberrypi:~/rpi-clone $ sudo cp rpi-clone /usr/local/sbin
pi@raspberrypi:~/rpi-clone $ type rpi-clone
rpi-clone は /usr/local/sbin/rpi-clone です
pi@raspberrypi:~/rpi-clone $

USBメモリとして認識させる

実はここでしばらくうまくいかなくて悩みました。ネットを探しても、みんなすんなり認識しているのですが、なぜか私のmicroSDカードは認識しない…… 結局カードリーダにしっかりカードがささっていなくて認識していなかったようです。このカードリーダ、ちゃんと差し込まれていなくても青いLEDが点灯するので怪しいと思いませんでした。最終的には/dev/sdbとして認識しました。

pi@raspberrypi:/dev $ sudo lsusb
Bus 001 Device 009: ID 0bda:0109 Realtek Semiconductor Corp.★
Bus 001 Device 004: ID 174c:1153 ASMedia Technology Inc.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:/dev $ sudo fdisk -l

Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

...

Disk /dev/sdb: 28.8 GiB, 30945574912 bytes, 60440576 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1        8192 60440575 60432384 28.8G  c W95 FAT32 (LBA)

pi@raspberrypi:/dev $

rpi-cloneでコピー

コマンドにバックアップ先のmicroSDカードのデバイス名(sdb)を指定します。SDカードは最初FATでフォーマットされているので、そのままではバックアップできません。パーティションから作り直しになるので、--force-initializeオプションを指定しました。あとはひたすら、ひたすら待ちます。忍耐です。なお、バックアップ中はrootファイルシステムの変更があるのは良くないと思われます。コピーしたカードから正常に起動できない可能性がでてくるからです。信頼性の高さが求められるような状況では使わないほうがいいかもね。

pi@raspberrypi:~/rpi-clone $ sudo rpi-clone sdb --force-initialize

Forcing a partition initialization of destination disk sdb
The existing destination disk 'sdb' partitions are:
Disk /dev/sdb: 30946MB
Partition Table: msdos

Number  Start   End      Size     Type     File system  Flags
 1      4.19MB  30946MB  30941MB  primary  fat32        lba

*** All data on destination disk sdb will be overwritten! ***

Do you want to initialize the destination disk /dev/sdb? (yes/no): yes

Imaging the partition structure, copying 1181 megabytes...
1181+0 レコード入力
1181+0 レコード出力
1238368256 バイト (1.2 GB) コピーされました、 140.037 秒、 8.8 MB/秒
Running fsck on /dev/sdb1...
Sizing partition 2 (root partition) to use all SD card space...
mke2fs 1.42.12 (29-Aug-2014)
Found a dos partition table in /dev/sdb2
Creating filesystem with 7268695 4k blocks and 1818624 inodes
Filesystem UUID: 01ad2d41-0ad0-4b22-a402-d4bc93355317
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done


/dev/sdb is initialized and resized.  Its partitions are:
Disk /dev/sdb: 30946MB
Partition Table: msdos

Number  Start   End      Size     Type     File system  Flags
 1      4.19MB  1173MB   1169MB   primary  fat32        lba
 2      1173MB  30946MB  29773MB  primary  ext4

e2label: Attempt to read block from filesystem resulted in short read while trying to open /dev/mmcblk0p2
Couldn't find valid filesystem superblock.

Your booted /dev/mmcblk0p2 rootfs existing label:
You may enter a label for the destination rootfs /dev/sdb2: bkuppi

======== Clone Summary ========
Clone mode               :  rsync all files to sdb root file system
Clone destination disk   :  sdb
Clone destination rootfs :  /dev/sdb2 (bkuppi) on /mnt/clone
Clone destination bootfs :  /dev/sdb1 on /mnt/clone/boot
Verbose mode             :  off
===============================
Final check, is it Ok to proceed with the clone (yes/no)?: yes
=> Mounting /dev/sdb2 (bkuppi) on /mnt/clone
=> Mounting /dev/sdb1 on /mnt/clone/boot
===============================
Starting the filesystem rsync to sdb
(This may take several minutes)...

*** Done with clone to /dev/sdb ***
    Started: 09:58:10    Finished: 12:13:47

Hit Enter when ready to unmount the /dev/sdb partitions...unmounting /mnt/clone/boot
unmounting /mnt/clone
===============================
pi@raspberrypi:~/rpi-clone $

最後に

コピーには時間がかかります。大きいことはいいことだ、ということで32GBのカードを使っているのですが、コピーに2時間15分かかりました。忍耐です。終わるまでひたすら忍耐です。

Raspberry pi 3 + USB HDD(6TB)でNASを作る

しばらく間が空いてしまいました。
最近は買い物する度にここでネタにしていますが、今回は自宅用のNASを作ろうという話です。

NASは別に自分で作らなくても、買うことができます。ただ結構お値段がするんですよね。RAIDを組むことができたりする利点はありますし機能に応じて値段も大きく変わるのですが、安くて数万円(HDDは別で)というところじゃないでしょうか。自宅用の軽い用途のものなので、本格的なストレージがほしいわけでもありませんし。Windows PCやRaspiやSurfaceなどいろいろ使うようになるにつれてファイルサーバの必要性が高まってきました。

で、今回もなるべく安く(できればHDDの値段に近いくらいの予算で)、低機能でもいいから…… ということで探しました。

f:id:WindVoice:20170115121419j:plain

もともと、NASの本体には組み込みのLinuxが入っていたりします。もちろんファイルサーバとしてふさわしいチューニングがされていたりもするのでしょうけど、Raspberry piがあるのですから自分で作ってもいいんじゃないかな。少しだけDIYしている感じですね。

買い物

今回の買い物のキモはこちら。SATAのHDDをUSB3.0に変換するケーブルです。Raspberry pi 3はUSB3.0ではありませんが、しかし互換性があるのであってもこまらないということでこちらにしました。電源アダプタがついているのでRaspberry piの動作が不安定になることもありません。

サンワサプライ SATA-USB3.0変換ケーブル 0.8m USB-CVIDE3

サンワサプライ SATA-USB3.0変換ケーブル 0.8m USB-CVIDE3

HDDとしては、Western DigitalNAS用HDD(Red)です。消費電力が少なめで常時起動に向いているタイプだそうです。容量は正直なところ6TBもいらないのですが、容量単価を計算するとこのあたりが魅力的なのかなということで選択しています。今回は26,000円ほど。

3.5インチのHDDを常時裸のままで放置しておくのもさすがにいかがなものかと思いましたので、ケースというかカバーも用意しました。シリコーンでできた柔らかいカバーです。なんと464円。買った時点では裸よりはマシというくらいの期待でした。放熱とかどうなのかなと思いましたが、今回使ってみて、書き込み続けてもさほど熱くならないのでWD Redとの組み合わせなら大丈夫そうです。

グリーンハウス 3.5インチHD用シリコンケース ホワイト GH-CA-HD35W

グリーンハウス 3.5インチHD用シリコンケース ホワイト GH-CA-HD35W

組み立て

説明無用かと思います。直感的につなぐだけ。アダプタをコンセントにつないだら、本体のスイッチをONにするとHDDの電源が入ります。
f:id:WindVoice:20170115152502j:plain

試行錯誤

NASに入れたいファイルは、WindowsのPCにあります。ざっと計ったら1.5TB。ネットで見かけた物とか動画なども捨てずにダウンロードしてため続けているのでファイルも小さいのや大きいのやさまざまです。ともかく、最初は単純にSambaext4で…… と思って作り始めました。

USB接続すると、普通に/dev/sdaとして認識しました。
この時点ではディスクラベルも記録されていないまっさらなHDDです。

pi@pi3:~$ sudo fdisk -l /dev/sda

Disk /dev/sda: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
pi@pi3:~$

fdiskは2TBまでのストレージしか扱えないそうで、最近はGPTというディスクラベルが使えるGNU Partedを使うんだそうです。ネットで探してパーティションを作ります。下の記録では無くなってしまっていますが、実際にはmklabelしてからmkpartでパーティションを作っています。

pi@pi3:~$ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart
Partition name?  []?
File system type?  [ext2]? ext4
Start? 0G
End? 6001G
(parted) p
Model: ASMT 2115 (scsi)
Disk /dev/sda: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  6001GB  6001GB  ext4

(parted) q
Information: You may need to update /etc/fstab.

pi@pi3:~$

で、そのあとはext4でフォーマットです。さらに/smbディレクトリに自動でマウントされるように設定します。

pi@pi3:~$ sudo mkfs.ext4 /dev/sda
mke2fs 1.42.12 (29-Aug-2014)
Found a gpt partition table in /dev/sda
Proceed anyway? (y,n) y
Creating filesystem with 1465130646 4k blocks and 183144448 inodes
Filesystem UUID: 72fa8af4-ea42-4319-9987-3e0be3cf542d
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

pi@pi3:~$ sudo mount -t ext4 /dev/sda /smb/
pi@pi3:~$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         28G  5.9G   21G   23% /
devtmpfs         459M     0  459M    0% /dev
tmpfs            463M     0  463M    0% /dev/shm
tmpfs            463M  6.6M  457M    2% /run
tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs            463M     0  463M    0% /sys/fs/cgroup
/dev/mmcblk0p6    63M   21M   43M   33% /boot
tmpfs             93M     0   93M    0% /run/user/1000
/dev/mmcblk0p5    30M  398K   28M    2% /media/pi/SETTINGS
/dev/sda         5.5T   58M  5.2T    1% /smb
pi@pi3:~$
pi@pi3:~$ sudo vi /etc/fstab
pi@pi3:~$ cat /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p6  /boot           vfat    defaults          0       2
/dev/mmcblk0p7  /               ext4    defaults,noatime  0       1
/dev/sda        /smb            ext4    defaults        0       0
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
pi@pi3:~$ sudo chown pi /smb

NASにするためにSambaを設定するわけですが、いつもここで躓きます。何が正しい設定かわからん……

試行錯誤の結果、とりあえず/etc/samba/smb.confはこんな風にして動いています。PCのWindVoiceユーザが/smbディレクトリにアクセスするとき\\pi3\nasというネットワークフォルダ名に見えます。アクセスするときはRaspberry piの内部ではpiユーザの権限で読み書きされます。ですから/smbディレクトリはpiユーザの所有権にしておくことが必要です。

[nas]
   comment = NAS Directories
   path = /smb
   browseable = yes
   read only = no
   valid user = WindVoice
   force user = pi
   public = yes

結果

ここまでで一応使えるようになるのですが、心配はしていたのですがやっぱり遅いですね。

Wi-Fiネットワークのせいなのか、USB2.0のせいなのかはっきりしませんが、書き込み速度が1.5MB/sec程度になっています。先ほども書いたのですが、ファイルはなんだかんだで1.5TBもあり(それを何とかしろということだとは重々承知しているのですが)、1.5MB/secでコピーしていては12日もかかってしまいます。これで動画読み取りとかできるのでしょうか……

しかたないので、上記の方法はいったん諦め、Windows PCにUSB3.0接続してNTFSフォーマットしたあと、ファイルをコピーしています。USB3.0接続なら大きいファイルの場合で50MB/Secから最大70MB/Sec程度の速度がでているので、今日のうちにはコピーが終わりそうです。

最近はLinuxでもNTFSがスムーズに使えるので、コピーが終わってからRaspberry piに接続してNASにしようと思います。便利な使い方はもう少し追求しないといけませんね。

Smart Video Car Kit for Raspberry pi(消費電力が測れない編)

引き続きSmart Video Carをいじって遊びます。
f:id:WindVoice:20161120152159j:plain

もうちょっとスマートにコントロールしたい

前回の最後にスクリーンショットを載せましたが、Smart Video Carの操作はなんといいますか、「簡易な」という表現がぴったりの見た目です。現代的なゲーム世代には到底受け入れられそうにありません。マウスでボタンをクリックして操作するということは、一度に一つの操作しかできないという意味でもあります。非常にプリミティブな前進、後退、ハンドルを右に、左に、上向け、下向け…… など、ひとつひとつやるのでは眠くなってしまいます。

このあたりソースコードではどうなっているのかなということで調べました。

まずはWindowsから直接コントロールしよう

コントローラの役をしているクライアントプログラムは、Pythonで動いています。Raspberry piTCP接続して、前進、後退などのコマンドを送るという単純な仕組みで動作しています。Windows版のPythonをインストールしてWindows PCにもSunFounderのGitHubサイトからソースコードをダウンロードしておけばOKです。Surfaceなので64bit版をインストールです。

www.python.org

あとはRaspberry piでサーバプログラムを起動して、Windows PCからクライアントプログラム(接続先IPはRaspberry piに変更)を起動すれば、GUIWindows上に表示されます。

マウスではなくキーボードでコントロール

マウスのコントロールより少し便利にキーボードで操作したいわけですが、ソースコードをよく見たらもうWASDでの操作には対応していました。でもカメラの向きを操作するキーはバインドされていなかったので、この部分だけ追記しています。

ゲームコントローラで操作しようとするともう少し工夫が必要だと思いますが、とりあえずこれだけなら簡単でした。というかソースコード短いですね。ほとんど見たまんまのことしか書いていないというか……

# =============================================================================
# Bind buttons on the keyboard with the corresponding callback function to 
# control the car remotely with the keyboard.
# =============================================================================
top.bind('<KeyPress-a>', left_fun)   # Press down key 'A' on the keyboard and the car will turn left.
top.bind('<KeyPress-d>', right_fun) 
top.bind('<KeyPress-s>', backward_fun)
top.bind('<KeyPress-w>', forward_fun)
top.bind('<KeyPress-h>', home_fun)
top.bind('<KeyRelease-a>', home_fun) # Release key 'A' and the car will turn back.
top.bind('<KeyRelease-d>', home_fun)
top.bind('<KeyRelease-s>', stop_fun)
top.bind('<KeyRelease-w>', stop_fun)

# ちょっとした改良。ikjlキーでカメラの向きを変更
top.bind('<KeyPress-i>', y_increase)
top.bind('<KeyPress-k>', y_decrease)
top.bind('<KeyPress-j>', x_decrease)
top.bind('<KeyPress-l>', x_increase)

消費電力はどうなのか?

Raspberry piは消費電力が少ないことがひとつのウリなわけですが、追加のボードを使ったりDCモーターを2個つけたりしていますから、消費電力が大きくなっているはずです。これを測りたいのですがよい方法がありません。以前購入したUSB電流/電圧計で測ってみましたが、この場所ではモーターの消費電力はふくまれていませんでした。モーターを回しても数字はほとんど変わりません。4.99V - 0.28Aですから、だいたい1.4Wくらいの消費電力になりますね。

youtu.be

SunFounder(サンファウンダー)スマートビデオカーキット [並行輸入品]

SunFounder(サンファウンダー)スマートビデオカーキット [並行輸入品]

Smart Video Car Kit for Raspberry pi(試験走行編)

さて、前回の組み立てから間が開いてしまいました。試験走行の様子です。
f:id:WindVoice:20161120095729j:plain

インストール

メーカーであるSunFounderから、動かすためのプログラムが提供されています。これを搭載したRaspberry piに配置(git clone)しておくのが最初のポイントになります。

github.com

git clone https://github.com/sunfounder/Sunfounder_Smart_Video_Car_Kit_for_RaspberryPi.git

モータドライバ他との接続でRaspberry piのI2Cポートを使用していますので、raspi-configコマンドでポートを有効にしたり、/boot/config.txtを変更したりします。このあたりは解説の小冊子がついていますので(英語ですが)、コマンドラインをそのまま入力していけば準備ができると思います。

ほかにカメラの映像をストリーミング配信するためのMJPG-streamerをインストールしたりなどしてゆきます。

カリブレーション(調整)

サーボモータの初期の状態がとても重要です。くみ上げの段階で、サーボモータがちょうど首振りの真ん中になるようにしているのですが、プログラムも初期配置の状態を記憶しておかなくてはなりません。

カリブレーションのためのプログラムもGitHubに含まれています。Raspberry piIPアドレスだけちょっと書き換えて動かせばOKです。Raspberry piリモートデスクトップ接続して、このプログラムを起動すると、簡易的なGUIが起動します。f:id:WindVoice:20161120103741p:plain

なんかよくわからない画面ですが(笑)、とりあえずこれで車が前後に正しく走るか(ケーブルの接続を間違えているとモーターが片方逆回転になったりなどするかも)、左右にタイヤが振れるか、カメラの首振りが正常かを確認します。うまくいったところでConfirmボタンです。

いざ出発

プログラムは、サーバプログラム(DCモータ、サーボモータ、カメラを制御する)と、クライアントプログラム(サーバへ動作コマンドを送信する)に分かれます。クライアントプログラムはGUIを使うので、リモートデスクトップ環境から起動する必要があります。

f:id:WindVoice:20161120104717p:plain

またストリーミングサーバプログラムも別に起動することができ、車載カメラ視点の映像をFirefoxから(なぜかIE非対応)参照することができます。

f:id:WindVoice:20161120104449p:plain

こんな感じで車をリモコン操作して楽しむ…… というのが、とりあえずデフォルトの機能でできる部分です。動作している状態の動画はこちら。


Smart Video Car Kit for Raspberry pi

今後の展開

正直なところ低機能です。工作キットですから、ここから各自でいろいろ試してみてね、というのがメーカーの意図なんだろうと思います。プログラムはPythonでできていますから読むことができますし、GUIのボタンをポチポチ押しながら動かすちょっとイケてない感じも、それが嫌なら自分で開発しよう、ということなんだろうと前向きに解釈するのがよいでしょう。

やってみたらいいかも、というToDoを挙げておきます。

  • クライアントプログラムはWindows PCにおいておく(難易度:低)
  • 車の操作をゲームコントローラに対応させる(難易度:中)
  • カメラに映ったものを識別する(難易度:高)
  • さらに自動走行までできちゃったりする(難易度:超高)
  • DCモーターを換装してパワフルにする(もしかすると電源強化が必要かも)

SunFounder(サンファウンダー)スマートビデオカーキット [並行輸入品]

SunFounder(サンファウンダー)スマートビデオカーキット [並行輸入品]