IoTに挑戦。
はじめに
2010年ごろ、タブレットや電子書籍が普及し始め、いわゆる”自炊”が流行りました。私も自炊に魅力を感じた人間の一人で、当時は学生でお金もありませんでしたが、ScanSnap1500という高価なスキャナ(当時4万円くらいだったと記憶)を購入しました。
最近は、Kindleにはまっちゃって自炊もほとんどしなくなりましたので、ScanSnapは部屋の片隅に追いやられてしまっていましたが、もったいないので活用してみようというのがこの企画です。
今回は下記が実現できればOK。
- 領収書などのペーパーレス化
- 雑誌の電子書籍化(自炊)
- 手軽にスキャンできる環境
3が最も大切な点です。なんだかんだで、ScanSnapは大きく、場所を取りますので、一人暮らしの部屋にはなかなか邪魔です。また、メインではSurface Pro 3を使用していますが、いちいちScanSnapを接続するという行動がめんどくさく感じていました。そこで、今回は「ネットワーク経由で利用できる」環境を実現するため小型PCであるRasberry Piを利用します。
用意するもの
- ScanSnap1500
- rasberry pi type-B
- コントロール用のPC(rasberry piへのログイン用)
- TeraTerm(rasberry piへのログイン用)
- ファイルサーバ
構成はこんな感じ。ラズパイがScanSnapの菅理サーバとなります。ちなみにラズパイはScanSnapの側面にテープでくっつけました。Wi-Fiでラズパイを接続するので、PCの場所に縛られずどこにでもScanSnapを置くことができるようになります。
設定
接続設定
Wi-Fi子機とScanSnapをラズパイにUSB接続し、lsusbで認識されているか確認します。
# lsusb
Bus 001 Device 004: ID 04c5:11a2 Fujitsu, Ltd
Bus 001 Device 005: ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]
wpa_supplicant.confを編集します。
## added on 20160129
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID"
psk="パスワード"
# 0: default, 1: stealth
scan_ssid=0
}
/etc/network/interfacesでインターフェース設定
auto wlan0
iface wlan0 inet static
address 192.168.10.7
netmask 255.255.255.0
gateway 192.168.10.1
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
インターフェースを再起動
# /etc/init.d/networking restart
[....] Restarting networking (via systemctl): networking.service
. ok
ifconfigでインターフェースが更新されていることを確認します。今回はWi-Fi不調時にもLAN線つなぐだけでラズパイにログインできるよう固定IPを振っています。
# ifconfig
eth0 inet addr:192.168.10.7 Bcast:192.168.10.255 Mask:255.255.255.0
wlan0 inet addr:192.168.10.8 Bcast:192.168.10.255 Mask:255.255.255.0
※表示はいろいろ省略
scanimageをインストール
次に、スキャンを実行できる環境を整えます。
まずはパッケージのインストール。
必要なソフトのインストール
sudo apt-get install sane-utils
ScanSnapを認識できるか確認
#scanimage -L
とりあえずスキャンできるか、ScanSnapに紙をセットしsacanimageを実行。スキャンが実行され、ファイルが出来上がっていれば成功です。
# scanimage > output_file
スクリプトの作成
次は、運用に耐えられるよう自動化スクリプトを書きます。
今回はとりあえず、スキャン⇒scpでファイルサーバへ転送までを実現しますのでこんな感じで書いてみました。
#!/bin/bash
home=/home/pi/scripts
date=$(date "+%Y%m%d-%H%M%S")
output=/home/pi/scripts/${date}
destdir=/mnt/share/disk1/ドキュメント/スキャン
mkdir ${date}
cd ${date}
sudo scanimage --batch=${output}/${date}-%d.tiff --format=tiff --mode Color --source "ADF Duplex"
cd ${home}
expect -c "
spawn scp -r ${date} ユーザ名@192.168.10.10:${destdir}/
expect {
\"Are you sure you want to continue connecting (yes/no)?\" {
send \"yes\r\"
expect \"password:\"
send \"パスワード\r\"
} \"password:\" {
send \"パスワード\r\"
}
}
interact
"
scanimageのオプションは下記の通り。
batchオプションをつけることで連番保存が可能です。%dで番号がつきます。
- --batch=${output}/${date}-%d.tiff
formatオプションで保存するファイル形式を指定できます。今回はTIFFで保存してます。
- --format=tiff
カラーモードを指定します。カラー以外にグレースケールや白黒が指定できます。
- --mode Color
両面印刷できるようにADFを指定しています。
- --source "ADF Duplex"
あとは完成したTIFFファイルをscpコマンドでファイルサーバに転送しています。
これで、シェルスクリプトを実行すればファイルサーバにファイルができるようになりました。
今後の課題
とりあえず、一通りの環境は整いましたので、今後は改良を進めようと思います。
③について、今ははがきをスキャンするとこんな感じになってしまいます。これだと、無駄なスペースが多く、スキャナ機能としては半人前ですよね。
今後は、サイズにかかわらず勝手にトリミングして背景削除できるようにしたいです。ImageMagik使えばできるかな?
参考
Raspbian の初期設定 その2 (無線LANの設定) - こまけぇこたぁいいんだよ!!
UbuntuでScanSnap S1500を使う | Way2Go
pi3g Blog – Raspberry Pi: Sharing a scanner with the Network – even Windows!
Ubuntu 12.04上のSaneによってスキャナを共有 - notes plastiques
またたびりなっくす scanimageでGT-X820を使う
ScanSnap fi-5110EOXをDebian/Ubuntuで使う | d.sunnyone.org