ラズパイ上のPronterfaceをTT-SSHのフォワーディングを使ってWindowsPCに表示

先日から3Dプリンタ2号機にRaspberryPiを乗せ、Pronterfaceの画面をメインPC(Windows)に飛ばして使っています。Pronterface/X

ラズパイ上でPronterfaceはX-Windowのアプリケーションとして動作するので、Windows側ではX端末ソフトを動かせばネットワークを経由して表示できます。
メインPCには既にCygwinをインストールしてあるのでこれをX端末として使用しました。

で、今までこういう時はX端末を起動したローカルPC側で’xhost +’コマンドを実行し、リモートホスト側ではDISPLAY環境変数を設定した上でアプリケーションを起動するという手順を踏んでいました。昔ながらのやり方です。

‘xhost +’はあらゆるホストからの要求を受け入れて画面に表示してしまうのでセキュリティ上よろしくないのは分っていましたが、家の中で使うのなら大した問題はないだろう・・・と。

しかし今回TeratermのTT-SSHでフォワーディングを試したところ、単にセキュリティ的に安全というだけでなく手間が大きく省ける事を知りました。
比較するとこんな感じ。

Xforward

新しい方法も面倒がらず、何事も試してみるべきでした。

3Dプリンタ2号機~その8~

やっぱり二代目3Dプリンターにラズパイを取付けました。
初代RaspberryPiのModelBです。

3dp28_1

Raspberry Piをねじ止め。

ラズパイにモニターやキーボードは取付けていませんが、Xwindowの画面をメインPCに飛ばしPronterfaceを実行できます。
又はTeratermでログインしてPronsoleを使う事も。。。

フロントパネルにはラズパイ専用の電源スイッチとシャットダウンボタンを設置したのでLCDコントローラだけで動作させる場合にはラズパイ電源はOFFにできます。

3dp28_2

手持ちのスイッチを取付け。

なお特に対策をしなければラズパイ専用電源をOFFにしてもArduinoからの電圧でラズパイのLEDが点いてしまいます。正常動作する程の力はない様ですがArduino側のレギュレータに負荷が掛かりそうです。気持ち悪いのでUSBコネクタの+5V端子にカプトンテープを貼って絶縁するという、いい加減な対策をしました。

3dp28_3

USBコネクタの+5V端子を絶縁。

 

これで3Dプリンタ2号機は一旦完成とします(多分まだ何かやりますが)。

3dp28_4

3Dプリンタ2号機~その6~

前回の投稿では1層目の貼り付きが悪いと言って一生懸命Z軸のレベル調整を行なった挙句、結局はプリントベッドをアルコールで拭いたら改善したというオチでした。その後も貼り付き性には問題なく、ネットで調べたらアルコール拭きは常識みたいですね。勉強不足でした。

コントロールPCのラズパイ化検討

3Dプリンタ1号機ではこの時設定したUbuntuマシンをまだ使っていました。たしかCPUはPentium4だったかな?
2号機もコイツで動かしてもいいのですが、レーザー加工機の制御PCも兼ねているので両方同時に使えないんですよね。また先日はボタン電池が切れて交換したし、そろそろいつ止まっても不思議ではない状態です。
他に使えるPCもないのでわが家に何個かあるラズパイで試してみようと思います。

Raspberry Pi1 ModelB

ラズパイの中では最も古いModelBです(+でも2でも、もちろん3でもないヤツ)。動作速度がどうかなーと思いますが、まずは試してみます。

3DP26_1

Raspberry Pi1 ModelB

Pronterfaceをインストール

Pronterfaceをインストールするのですが、まずはその前に今このRaspberry Piに入っているOSはいつのだか判らないので最新版のRaspbian(STREATCHと言うそうです)を入れ直しました。
その後・・・
’sudo apt-get install printrun’ で何事もなくインストール完了。

実行すると見慣れた画面が立ち上がります。
そしてプリンターと繋いで実行すると・・・なんかやっぱり遅いです。モデルの表示を2Dにしても操作した後10秒ぐらいしてからやっと反応する感じ。3D表示だと固まったかと思います。これはちょっと使えるレベルではありません。

pronsole

pronterfaceと一緒にpronsoleというのもインストールされています。こちらはコマンドラインでプリンターを操作できるものなので、メインPCからSSHでログインして操作可能です。 これだとGコードのロード時以外は遅さを感じないので、これもアリかと思います。

Raspberry Pi 2

Pi1だと遅いのですが、ならばRaspberry Pi2ではどうなのか試してみます。 このラスパイ、流行りに乗ってAIY VOICE KITに使ったのでこんな箱に入ったままです(AIY VOICE KITは Raspberry PI3を使うものとされていますが、わが家にPi3はないので2で試したところ、それなりに動いていました)。

3DP26_2

Raspberry Pi2(AIY VOICE KITに収納)

OSはAIY projectのイメージをSDに焼いたもの(ベースはRaspbian Jessie)が入っているのでこのまま使います。
ここでも上と同様にapt-getでインストールを試みたのですが、printurnが見つからないと言ってきます(apt-getの使い方を良くわかっていないだけかもしれません)。そこでGithubからソースを取ってきました。
実行してみると3D表示はやはり遅くてダメですが2Dなら問題なく使えるレベルです。

それぞれのレビジョン確認

ここでPi1とPi2で微妙に画面表示が異なるのが気になり、レビジョンを確認したところ・・・

Pi1   :2015.03.10
Pi2   :1.6.0

なんかレビジョン番号の付け方から異なっていて、どっちが新しいのか分かりません(当然GitHubから取ってきた1.6.0が最新だとは思いますが)。

もう一度Pi1に戻って最新版Pronterfaceをインストール

そこで再びPi1に戻って1.6.0をインストールしてみました。すると結構速度は改善されている様です。当然Pi2には負けますがなんとか使えるレベルだと思います。

(ここら辺の「使えるレベル」とか「遅い」とかは全て私の主観です。念の為。)

・・・という事で

Pi1で行こうかと考えながらも、ラズパイがつながるモニターはメインPCのしか持ってないんですよね。結局、RAMPSに液晶ディスプレイとSDカードを付ければそれでもいいかなとも思って揺れています。

RepRapのSenderって・・・

ところでPronterface等のSenderソフトって何をやっているんでしょう?想像では単にファイルからGコードを読んでArduionoに向けてシリアル送信するだけで、いくら古いラズパイだからってそんなに重い処理ではない様な気がします。実際Teratermでプリンターに接続し、’G0X10Y10F300’とか打ち込んでやるとその通りに動作します(エコーバックがないのでローカルエコーをONにし、改行コードを’LF’にしておく必要あり)。

Senderの動作としてとりあえず次のあたりが疑問です。

  • ロードとはどこにロードするのか?
    RAM上?
  • プリント中のフロー制御。
    プリンターの動作にどうやって同期しているのか?Arduinoとの接続では恐らくハードウェアフロー制御はできないと思っているので、Xon/Xoffなのか、または別の方法なのか?

という事でpronsoleのソースを眺めています(Pythonの経験値が低いので苦労しながら)。わかったら報告します。

FRISKのケース

電子工作界で話題のFRISKのケースサイズ変更、熊本ではまだ見かけないと昨日書きましたが、今日発見したので早速購入しました。

FRISKcase

FRISKケース新旧

長辺は同じですが短辺が約5mm、厚みが約0.4mm増えていました(ノギスでの実測)。
ちょっと前のMake:のブログでRaspberryPi ZEROがFRISKのケースにギリギリ納まらないという話題が載っていましたが、新規格では納まるんじゃないでしょうか。

でも旧規格の小型ケースは今後入手困難になるんでしょうね。

 

山口ミニメイカーフェア終了

終わってしまいました、山口ミニメイカーフェア

YMMF2015

YMMF2015
ほいほい堂ブースの風景

今回、OpenStickとRaspberryPiモータードライバをキット化して販売しました。結果は二日間でOpenStickは6セット買って頂けましたが、モータードライバは残念ながら一つも売れませんでした。コマーシャルメイカーの出展費用が¥10800なので全く元が取れていません。予測ではマニアックなOpenStickよりもモータードライバの方が買ってもらえるかなと思っていたけど逆でした。

ほいほい堂本舗のブースは毎回、子供のたまり場と化すのですが今回も同様でした。特にフライトシミュレータは奪い合いで、これまたいつも通りフライトヨークの根元が壊れては修理を繰り返しています。今回は少し丈夫にしてきたつもりでしたが、やはり何度か修理が必要でした。

ところで初日にヨットシミュレータに妙に大喜びの子供(幼稚園児ぐらい?)がいて、それを中国新聞の記者さんが写真に撮って行かれ、翌10月20日の朝刊に掲載されました。そのお陰か二日目は結構ヨットシミュレータが人気になりました。
中国新聞の記事ネット版(「技術の結晶」は言い過ぎかと・・・)

今日は熊本に戻ってきてヨークを修理中・・・。

Yoke

ここをもう少し強化する必要がある。

YMMF2015キット販売

来週の山口ミニメイカーフェアで販売を予定しているキットの取説ページを作ってみました。

OpenStick基板キット

OpenStickPCB

OpenStickの基板キット

RaspberryPi用モータードライバキット

RaspiMDKit

RaspberryPi用モータードライバキット

どちらも価格は未定です。
その他、小物の販売も検討しています。

 

おいでませ、山口へ 2015

来週はヤマグチミニメイカーフェア2015です。
またまたフライトシミュレータ、ヨットシミュレータほかを出展してきます。

なお今回は初の試みとしてOpenStick基板キット、RaspberryPiモータードライバーキット他を販売する予定です。なのでコマーシャルMakerとして登録しています。
(売れるかな・・ドキドキ)

FlightYoke

フライトヨーク

ヨットシミュレータ

 

Maker Faireでモータードライバ基板プレゼント

もうすぐMaker Faire Tokyo2014。
当日会場で「ブログを見た。基板くれ。」と言っていただくと、以前作成したRaspberry Pi 用モータードライバ基板をプレゼントします。 先着5名様まで。

Raspberry Pi Motor driver

モータードライバ基板

モータードライバIC東芝TA7291Pを最大3個載せる事ができます。
またラジコンサーボ2回路、LEDのON/OFFを1回路、シャットダウン等に使えるタクトスイッチ1回路が載ります。
電源は5Vのみ対応(ニッケル水素×4本で動作させていました)。

※Raspberry Pi A/Bを想定した基板です。(最新のRaspberry Pi B+では固定穴の位置が異なるので取付けに工夫がいると思います)。
※基板のみです(部品は無し)
※基板の良品確認はしていません。また不具合が発生しても責任は持てません。
※Raspberry PiからのH信号レベル(3.3V)がTA7291PのH入力範囲より若干低いです。実用上問題ありませんが自己責任でご使用願います(手持ちの数個を測定したところではいずれも約2.7V以上で動作していました)。

 

Raspberry Pi + MCP3002で照度センシング

先日書いたMCP3002でのアナログ入力方式で照度センシング基板を作った。
今回、片面基板の銅箔面に部品を載せる方法にした。両面基板は以前にも書いた様に、CNCで切削するには位置合わせが面倒なのだ。

Sense with MCP3002

MCP3002を用いた照度センサ

以前、OpenStickで作った基板はこれ。

OpenStickを用いた照度センサ

OpenStickを用いた照度センサ

多チャンネルが不要なら、MCP3002で作る方がかなりシンプルになる。

 

Raspberry Piで正統派のアナログ入力

Raspberry Piでのアナログ入力方法として、OpenStickを用いる例を先日書いたが、今回はA/D変換ICを用いる正統派の方法を試してみた。

使用したのは秋月電子で¥200のMCP3002。アナログ入力が2CHあり、SPIでRaspberry Piと接続する。

回路図

RaspiAN_SPI

回路図

Raspberry Pi側の準備
こちらを参考に設定した。

  1. sudo apt get install python-dev  でpython-devをインストール
  2. /etc/modprobe.d/raspi-blacklist.confファイルをエディタで開き、
    blacklist spi-bcm2708 行の先頭に#を追加してコメントアウト。
  3. リブート後、lsmodコマンドを実行して「spi_bcm2708    ・・・」の表示がある事を確認。
  4. 下記を実行してPython-spiをインストール
    mkdir python-spi
    cd python-spi
    wget https://raw.github.com/doceme/py-spidev/master/setup.py
    wget https://raw.github.com/doceme/py-spidev/master/spidev_module.c
    sudo python setup.py install

お試し
次のスクリプトをspiread.pyという名前で作成。

#!/usr/bin/env python
# _*_ coding: utf-8 _*_

import spidev
import time

CE=0

spi = spidev.SpiDev()
spi.open(0,CE)

while True:
retspi = spi.xfer2([0x68,0x00])
value = (retspi[0]*256+retspi[1]) & 0x3ff
print value
time.sleep(1)

実行結果(可変抵抗でアナログ値を変化させながら実行した例)

$ ./spiread.py
0
0
128
292
489
1023
1023
1023

Raspberry PiのSPIはCE0とCE1端子を用いて2個のSPIデバイスを個別に使用できる。これをスクリプト中では変数CEで指定している。
spi.xfer2()に渡している0x68はMCP3002に対し、「シングルエンド動作」、「アナログ入力CH0を使用」、「MSPから出力」 を設定している。 変換結果は配列retspiに2バイトで入るので、連結して下位10ビットを取出した後、print文に渡している。
なおspi.xfe2()に渡す値0x68を0x78に変更するとCH1入力を使用する事になる。

OpenStick方式と比べると・・・

  1. ICが安い
    OpenStickで使うPIC18F2550は350円。更に発振子やUSBコネクタが必要だが、MCP3002だと200円で殆ど外付け部品が不要。
  2. チャンネルが2つだけ
    OpenStickだとアナログ10CHで更にデジタル入力も使えるがMCP3002は2CHのみ。
  3. プログラムが簡単
    慣れや使用言語にもよると思うが・・・ジョイスティックの値を取るよりSPIの方が簡単な気がする。
  4. PIC18F2550のアナログソースは最大2.5KΩのインピーダンスにせよと取説に記載がある。 一方MCP3002の取説によるとアナログ入力リークが0.001μA(TYP)なので、こちらの方が扱いやすそうである。
  5. OpenStickはUSB電源駆動なので0~5Vの範囲でA/D変換する。 MCP3002はRaspberry Piと直結する場合、SPI信号が3.3VなのでA/D変換も0~3.3Vの範囲となる。