Smart Laser CO2でラスターデータの刻印にチャレンジしていたのですが速度を上げると途中で停止する(エラーもでず)不可解な現象がありました。
品質を落としても早く刻印したい場合にこれでは困るな。。。と思い、FBのコミュニティーサイトに質問を投げたら「USBが問題では?」とヒントをいただき、USB3.0ハブを取り除いてPCと直結したら問題解決した。。。ということが最近ありました。
で、どうせなら、backendをPCではなくマイコンにやらせたら。。。と思い始めたのが発端です。
マイコンならRaspberryPiなのですが、手元に空いているものがなく。。。どうしたものかのぉ。。。と思っていたところ。ずいぶん前に買ったBeagleBoardがあることを思い出しました。このページをみると手元にある初期型(白いやつ)は2008年に発売されているようですからほぼ10年になる代物です。
これが出た当初に隣の研究室のY教授に貸していただき、少し遊んでみて面白いなぁと思い卒業研究等で学生が使わせようと4つ購入しました。
ただ、SDカードのセットアップなど当時はかなり面倒に感じArduinoを使ってきました。また、その後、RaspberryPiが出てきたことも使わなくなった理由の1つでもあります。
そのBeagleBoardを数年ぶりに使ってみようと思ったわけです。で、昨日からごにょごにょやってきました。
まず、結論を書きます。
「動きました」
ただ、CPU(もしくはI/O?)が遅いのでしょう。大量のデータを流し込むとバックエンドエラーになりました。ゆっくり動かせばそれなりに使えるのですが。。。
さらに、エラーが出たときにブラウザには表示されないログもみたいので結局sshで接続する。。。ことになります。それならより高速なPCでbackendを動かした方がいいんじゃね?という結論になりました。。。なので、あまり役に立たない情報になりますが、自分の行動記録として残しておきたいと思います。一週間もすれば綺麗に忘れるでしょうから。
ここから手順です。
BeagleBoardを用意します。
あとSDカード(4GB以上)を用意します。私はKingstonの4GBのSDカード(class4)を使いました。他のメーカーのSDカードだと認識しないとか。。。ずーっと前に構築したときに経験していたので、このメーカーのやつを使用します。今は。。。どうなんでしょう?わかりません。
SDカードをMacに接続します(僕はMBAなのでSDカードアダプタを介して接続しました)
次にBeagleBoard(BlackとかxMとかじゃない)に対応した最新のイメージファイルを取得します。今回は「Wheezy for BeagleBone via microSD card」というやつをダウンロードして使用しました。ダウンロードするとbone-debian-7.11-lxde-4gb-armhf-2016-06-15-4gb.img.xzというファイルができます。
BeagleBoard.org - latest-images
書き込む方法はいろいろありますが、ここではGUIを使った方法を書きます。
xzファイルを展開するためにThe Unarchiverを使います。展開すると.imgファイルができます。
次にSDカードに.imgファイルを書き込むためにPi Fillerというアプリをここからダウンロードします。
Pi Fillerを起動して、ダウンロード済みの.imgファイルを指定します。そのあとSDカードをPCに接続して、フォーマット後、.imgファイルがSDカードに転送されます。(Pi Fillerを起動する前にSDカードを差し込んではダメとどこかに書いていたような記憶があります。もしうまくいかなかったら試してみてください)
さらに、BeagleBoardをMacに接続するときに認識されるようにここから2つのドライバ(pkg)を入れておきます。
インストールが終わったら、BeagleBoardをMacに付属のUSBケーブルで(充電のみのケーブルはないと思うのですが他のケーブルでは接続できないことを経験しました)接続します。すると、FinderでBeagleBoardというデバイスが表示されるので(すぐには認識されないので5分くらい待ってください)、イジェクトします。するとネットワーク接続できるようになります。アドレスは192.168.7.2です。ブラウザにこのアドレスをいれると以下のようなページが表示されるはずです。
このあと、USB接続ではインターネットに接続できない(できなくはないけど設定が必要)ので、イーサネットケーブルを接続し電源(5V)を本体に接続します。で、このイーサーネットを認識できるように設定ファイルを書き換えます。
上記のアドレスにssh接続します。パスワードはtemppwdです。ターミナルに表示されるはずです。
/etc/network/interfacesをviとかnanoとかで編集して、以下のコメント(#)を削除して活かします。あとはrebootするだけ。sudoできるのでsudo rebootでOKです。
auto eth0
iface eth0 inet dhcp
上記の設定はBeagleBoardを接続するDHCPサーバーがあることを期待しています。IPアドレスの割り当てとか外部に出るための設定もこれでしてくれるはずなので。
再起動したら、もうUSBケーブルは外していいので、PCとBeagleBoardをLAN経由でssh接続し(BeagleBoardのIPアドレスはDHCPサーバーを確認します)、名前解決ができること、インターネットに接続できることを確認したのちに、以下を入力します。ここからの設定はsmartdiysさんのマニュアルページに書かれていますが、コマンドだけ書いておきますね。ちなみに以下はユーザー名debianでログインしそのホームディレクトリで作業しています。
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-dev
sudo pip install Pillow
wget http://www.smartdiys.com/manual/wp-content/uploads/2016/03/SmartLaserCo2LinuxJa.zip
unzip SmartLaserCo2LinuxJa.zip
cd SmartLaserCo2LinuxJa
chmod +x run.bat
あとrun.batの中身を以下のように書きかえます。
#!
python backend/app.py --raspberrypi -p
最後にrun.batを実行して、PCのブラウザでhttp://BeagleBoardのIPアドレス:4444にアクセスしていつもの画面が表示されれば オーケーとおもいます。
ちらかっていますが、BeagleBoardをSmart Laser CO2に接続している様子が以下です。
とりあえず以上です。