grbl1.1+Arduino CNCシールドV3.5+bCNCを使用中。
BluetoothモジュールおよびbCNCのPendant機能でスマホからもワイヤレス操作可能。
その他、電子工作・プログラミング、機械学習などもやっています。
MacとUbuntuを使用。

CNCマシン全般について:
国内レーザー加工機と中国製レーザー加工機の比較
中国製レーザーダイオードについて
CNCミリングマシンとCNCルーターマシンいろいろ
その他:
利用例や付加機能など:
CNCルーター関係:



*CNCマシンの制作記録は2016/04/10〜の投稿に書いてあります。


ラベル bCNC の投稿を表示しています。 すべての投稿を表示
ラベル bCNC の投稿を表示しています。 すべての投稿を表示

2017年2月9日木曜日

IPカメラによる加工状況の監視(bCNCのIPカメラ化)

現在Bluetoothで、MacBook上のbCNCからCNCマシンを操作しています。同時にbCNCのPendant機能でスマホからも操作ができるので便利です。
あとは、加工中の状況(特にレーザー加工/目に危険なので)をカメラで監視できればいいと思って、Webカメラを設置できないかと考えていました。
USBケーブルでCNCマシンとMacBookをつなげていれば、Webカメラ(USB接続)で監視が可能です。例えば、以下のようなもの、

USBエンドスコープ:
AliExpress.com Product - Waterproof 5m Mini USB Endoscope Inspection Camera 6 White LEDs 1/9 CMOS 7mm Lens Borescope Snake Tube Camera with P2PUSBエンドスコープ(内視鏡):750円(送料込み)、直径7mm、ケーブル5m長いケーブル先端に直径7mmのカメラがついており、CNCマシンに取り付けやすいと思います。加工スポットをズームアップして監視したいので、こんな感じがいいのですが、ワイヤレスではないのが少し残念。そうなると、以下のようなもの。

AliExpress.com Product - Free shipping! 6LED HD 720P 1M / 2M / 5M WiFi Endoscope Waterproof Inspection Camera for ios and Android PCWifiエンドスコープ:2571円(1m)、2713円(2m)、2929円(5m)、送料無料。Wifiモジュールがついているので便利そうです。Wifiモジュールから外せばUSBカメラとしても使えると思います。
全体がコンパクトなWifiカメラなら、 AliExpress.com Product - 20pcs Mini DV Wifi Camera Q7 Cam 720P HD DVR Wireless IP Camera Video With IR LED Pocket-Size Remote By Phone Wholesale 1840円(送料込み)幅23mm、高さ43mmくらいなのでCNCマシンのどこにでも設置できそうです。
bCNCのカメラ機能:ひとつ気になるのは、bCNCにはOpenCVを使ったカメラ機能があり、パソコンとUSBカメラで接続していないと使えません。つまりWifiエンドスコープからbCNCには取り込めないということです。単なる監視として使うならWifiエンドスコープがとても便利そうですが、少し残念。

BluetoothカメラやワイヤレスUSB:そうなると、BluetoothカメラがあればワイヤレスかつbCNCにも取り込めるのではないかと探しましたが案外ない。Bluetoothも進化しているようですが、カメラなどのストリーミング映像には向いていないらしい。どちらかというとストリーミング映像はWifiが得意らしいです。通信速度の違いだと思います。Bluetooth3.0から通信速度が上がったので不可能ではないようですが、あまり機器類を見かけないし、当然安価にもならないはず。同様に、ワイヤレスUSBも数年前にはありましたが、下火になったようで、これも機器類を探すこと自体難しい。
やっぱりWifiカメラ:ワイヤレスのカメラといえば、現在はWifiが主流となってしまいます。例えば、スマホのカメラから、パソコンにwifiを通して映像を流すということも、アプリがあればすぐにできます。以前、スマホからパソコンに映像を送るだけなら、AirMoreというので簡単にできました。
パソコンのブラウザ上ではこんな画面。いわゆるスマホ画面のミラーリングという機能です。このほかにもスマホからいろんなデータ転送もできるので便利です。
スマホにアプリをインストールして、あとはパソコンのブラウザでWifi通信という感じです。

いくつかアプリを試しましたが、以下のIP Webcam(Android版)というアプリが便利そうでした。
これはタブレット(スマホも可)から流している映像をパソコンのブラウザ上で見ているところです。
操作画面は先ほどのAirMoreに比べるとシンプルです。このアプリはどちらかというとカメラに重点が置かれているようで、画質などいろんな設定が可能です。



解像度、前面背面カメラ切り替え、露出、ズーム、フォーカス、上下左右反転など様々なことがパソコンからも操作できます。また、ローカルネットワークだけでなく、外出先からも見る設定もできるようです。さらに便利なのは、

このように直接アクセス可能なアドレスが載っており、ストリーミング映像ならIPアドレス:ポート/videoというところへアクセスすればMJPEG、連続したJPEG画像取得するなら、IPアドレス:ポート/shot.jpgへアクセスということです。ブラウザで192.168.3.2:8080/shot.jpgにアクセスして見ると、
こんな感じで、シンプルに画像だけ取り出すことができます。これはJPEG画像ですが、画面を更新し続ければ動画にもなるようでした。おそらくスマホでの動画をブラウザからリクエストしてその都度最新画像を読み込んでいるということだと思います。
状況的にはこんな感じ。タブレットをバイスに立てかけています(はさみこんではいません)。ワイヤレスなので好きなところに置くことができますが、できれば本体に取り付けたい。映像については連続するJPEG画像なので、Pythonで読み込むプログラムも難しくなさそう。もしかしたらbCNCへも取り込めるかもしれないという可能性がアップしてきました。

Python-OpenCVで実験:bCNCはPythonで書かれているため、そしてbCNCのカメラ機能はOpenCVを使っているため、Python-OpenCVで先ほどのストーリミング画像を取り込めないか試して見ました。多少PythonもOpenCVも触ったことはあるのですが、基本的にどちらも初心者です。とりあえず、Python-OpenCVのGetting Startedから見てみることにしました。いくつかのチュートリアルがあり、まずは静止画像の読み込みと表示方法、そして動画の読み込みと表示方法という感じです。
import numpy as np
import cv2

img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:         # wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()
どうやらcv2.imread()とcv2.imshow()でできるようです。画像ソースをcv2.imread()に入れればいいだけのようで、そのまま先ほどのhttp://192.168.3.2:8080/shot.jpgを入れてcv2.imshow()で表示しようとしたのですがダメです。
import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
VideoCaptureクラスの方でも試して見ると、やはりcv2.VideoCapture()にIPアドレスを入れてもエラーが出ます。Python2.7なのでOpenCV2.4を使用中。というのは、bCNCがPython3に対応していないため。どうやらOpenCV3にすれば、URLを入れても大丈夫らしい。惜しい。色々調べて見ると、OpenCV2.4ではネットワーク上の画像などを読み込むには、この方法ではダメらしい。

# coding: UTF-8
import cv2
import numpy as np
import urllib
import sys

ipAddress='http://192.168.3.2:8080/shot.jpg'

def readImg(ip):
   req=urllib.urlopen(ip)
   data=req.read()
   byteData=bytearray(data)
   arr=np.asarray(byteData, dtype=np.uint8)
   return cv2.imdecode(arr,1)

while True: 
   img = readImg(ipAddress)
   if len(img) > 0:
      h, w = img.shape[:2]
      halfImg = cv2.resize(img, (w/2,h/2))
      cv2.imshow('IMAGE',halfImg)
   else:
      print 'no image'
      sys.exit()
      break
   if cv2.waitKey(1) & 0xFF == ord('q'):
      break

cv2.destroyAllWindows()

その後、いろいろエラー続出でかなり悩みましたが、なんとかIPカメラから画像を取り込んでPythonで表示することができました(上記コード)。たったこれだけのコードですが、外部から取り込んだデータをデコードする必要があるみたいで、その方法に気づくのに時間がかかり、なおかつ普通の読み込みではしないような手順があったり、一行ずつ確かめては書き直したりしていました。
追記: その後もPythonをいじってましたが、Pythonではdefの外側の変数(グローバル変数)は、def内にはそのままでは通らないようで、def内でglobalを書かないといけないということがわかりました。Pythonはちょっと癖があっていちいち調べないといけないので難しいです。
これはPython-OpenCVによる映像の読込み/表示画面。シンプルに映像だけ取り出せることができました。

手順としては、VideoCapture()の代わりに、urllib.urlopen()でインターネットなどネットワーク上にあるデータをリクエストして受け取り、その配列データをバイトデータ配列へ、そして符号なし8ビット配列、さらにはデコードもして映像画素に合わせた行列に変換して、ようやく読み込める状態になるようです。普通ならimread()など読み込むための関数一発でいけそうですが、そうではないという面倒な手順になっています。しかしデコードする関数などはPythonにあるため、手順を踏めばそれほど難しくはありません。しかし、それぞれが何をしているのか、パラメータは何なのかなど、Documentationも見ながら理解していかないとエラーばかり出てしまいます。
*尚、このようなことを可能にするには、PythonのほかOpenCV、NumPyなどのインストールが必要です。


bCNCへ取り込み:
次は、これを元にbCNCのコードを改造していかなければなりません。bCNCのCamera.pyを開いて見ると、基本的にUSBカメラから映像を取り込んでいるためか、OpenCVのVideoCaptureを使っていました。これは先ほどの動画に関するチュートリアルでも見た方法ですが、今回はVideoCaptureを使わないで、映像(連続するJPEG画像)を取り込む方法(上のコード)でやりたいと思います。というか、その方法しかまだ知らないので。VideoCaptureを使ってMJPEGを取り込めれば簡単そうだけど、OpenCV2.4だと多分できない。 だいたいこの辺のQ&AサイトGitのここなどを参考に試行錯誤していました。
追記: MPEGの場合、IPアドレス:ポート/video?.mpegにアクセスすればいいようで、このサイトに書いてありました。mpegやjpegは1フレームごとに開始マーカー、終了マーカーがあり、それを手掛かりにデータを読み取るようです。

これが、bCNCのCamera.pyの中身です。いろいろいじっている最中。当然バックアップは取ってあります。IPアドレスからの画像取り込みのため、手順が違ってちょっと面倒です。すぐエラーが出ます。
数時間後、とりあえず画像を取り込む所まではできました(やや強引に)。
もともと、bCNCのPendant機能でカメラ映像を他の端末でモニタリングできるのですが、それも可能でした。つまり、IPカメラ(スマホ)の映像をbCNCを通してMacBookに橋渡しさせ、また別の端末(タブレット)からMacBookのIPアドレスにアクセスして、その映像を見るということです。当然、映像配信元のIPカメラ(スマホ)のIPアドレスに直接アクセスして見ることもできます。
まだ、bCNC内の画像調整(画像サイズや角度)のパラメータとはつなげられていないので、きちんとは機能していません。 bCNCのProbe Camera Alignment(OpenCVを使った位置決め機能)を試したことはないのですが、できればこの機能にUSBカメラのみならずIPカメラも接続可能にして使えればと思っています。もう少しプログラムの改造には時間かかりそうです。というか、Pythonに慣れていないので、かなり疲れてきたという感じです。
予定としては:

・bCNCにおいてIPカメラからの映像を読み込めるようにする(現在ここ)
・読み込んだ映像のサイズや角度の調整ができるようにbCNCのパラメータにつなげる
・USBカメラとIPカメラの両方を使えるようにする 
・USBカメラとIPカメラ切り替えボタンやIPアドレス入力欄をつくる

ここまでできれば便利だけど、かなりめんどくさそう。


IPカメラについて:
プログラムの方は少しずつ改造していきますが、IPカメラの方も考えています。とりあえず手っ取り早いのが、スマホやタブレットをCNCマシンのヘッド近くに置いておくことですが、できれば小型なカメラを設置したいと思っています。WifiといえばESP8266が安価なので、それにカメラモジュールをつけて、スピンドル先端付近に取り付けられるのが理想です。
AliExpress.com Product - V3 4 M bytes (32 Mbits) FLASH Lua NodeMcu placa de desarrollo de Redes WIFI Basado ESP8266 con firmwareESP8266:341円(送料込み)これに以下のようなカメラモジュールをつければ、Wifiカメラとして使えます。

AliExpress.com Product - New OV7670 VGA Camera Module Lens CMOS 640X480 SCCB w I2C Interface Auto Exposure Control Display Active384円(送料込み)これは前回調べましたが、AudCamのGitにArduino用ライブラリなどあります。あるいはInstructables追記:どうやらこの安価なOV7670はFIFOなし(バッファメモリなし)らしく、接続してもかなり遅いフレームレートになるようです。FIFOありの以下のようなモジュールが扱いやすいと思います。
AliExpress.com Product - High Quality with FIFO CMOS Camera Module OV7670 Sensor Module Microcontroller Collection Module 1374円(送料無料)、FIFOつきOV7670カメラモジュール。


  AliExpress.com Product - Free shipping ESP32-T Shield ESP32-Bit Development Board Compatible For ESP-32S Bluetooth WiFi Module ESP32S Wireless Board810円(送料込み)、追記:これはシールドだけでした。さらにこのESP32はWifiだけでなくBluetoothもついているようなので、もしかするとBluetoothカメラも可能かもしれません。ESP8266の上位機種といったところ。少し高価ですが、スペックに対してはかなり安い。秋月にもチップだけ700円で売っています
IPカメラ化についてはまた作業が進んだら報告します。

memo:Reading and Writing images and Video(OpenCV)python-opencv-ipcam.pyTo get mjpeg from "http://192.168.3.2:8080/video?.mjpeg"  To get images from "http://192.168.3.2:8080/video?action=stream"   pip install requests

2017年1月26日木曜日

bCNCのインストールや使い方

普段は、G Code Sender(PC上のGコード送信ソフト)としてbCNCを使用しています。GrblのサイトUsing Grblに掲載されているGrbl1.1対応ソフトの一つでもあります。



bCNCの特長:
・Grbl1.1に対応(頻繁にアップデートされている)
・シンプルかつ機能も豊富
・Gコード以外にもdxfファイルも読み込み可
・Raspberry Piでも使用可能
・機能割当も含めボタンなどをカスタマイズできる
・リアルタイムでフィードやスピンドル出力調整可能
・Probe機能、オートレベリング機能(基板制作用)
・Gコードを視覚的に編集可能
・Pendant機能によりWifi環境下で他の端末(スマホなど)からも操作可能
・オフセットカット、穴あけ、タブ配置などの補助加工機能
・OpencvによるWebカメラを使った位置決め機能/映像モニタリング

まだ一部の機能しか使っていませんが、けっこう便利そうです。bCNCはPythonベースのソフトであるためPythonがPCにインストールされている必要があります。
bCNCのWikiページに一応OSごとのインストールの仕方がのっています(こちら)。


目次:
Pythonやモジュールのインストール方法:(事前準備)
Pythonのインストール方法
Pythonの有無/バージョンを確認するには
Pythonのディレクトリを調べるには
Pythonのバージョンを選んで起動する
pipやpyserialのモジュールの有無を調べる
pipをインストールする(Anacondaを使わない場合)
モジュールのインストールが上手くいかない場合
pyserialのインストール
pyserialがインストールされているか確認
bCNCのインストールや起動方法:
bCNCのインストール&起動
bCNCとArduino Unoとの通信開始
「Terminal」タブでGコード入力内容やエラーを確認
「Command:」欄にコマンドを手入力する
画面の調整
bCNCの利用方法:
bCNCの使い方(利用例)
bCNCの日本語化
ホーミング($H)について
リファレンス点復帰(G28、G30)
いつものやり方(ホーミングなし)
現在のGrbl設定
オーバーライド機能
.bCNC(不可視ファイル)で設定する場合
Pendant機能(スマホで遠隔操作)
Webカメラを使う場合
タブ自動配置機能
パスが選べないとき
オフセット(工具径補正)加工
アップデート確認
その他:
起動アイコン・ランチャー
PyenvとAnacondaを導入した場合
「conda activate py27」へ変更
アイコン画像のつくりかた(Mac)


Pythonのインストール方法:
Macの場合すでにApple-Python(root権限)がインストールされていますが、できればローカル環境に新たにインストールしたほうが無難です。
bCNCのインストールの仕方に書いてあるようにWindows/Macともにインストールできますが、まずはAnacondaというPythonパッケージ管理システムをインストールするのがおすすめです。Anacondaを使うとPythonやその他のモジュールなどを設定した環境内にインストール/アップグレードすることができます。AnacondaにはNavigatorというGUI操作でインストールやアップグレードができる機能もあるのでターミナルでコマンドを打ち込む必要もありません。またVSCODEやJupyter Notebookもボタンひとつでインストールできます。
AnacondaのGUI画面

Pythonには2.7系と3.X系がありますが互換性はないので、bCNCを使うならばPython2.7をインストールする必要があります。最近は3.X系が多くなってきたので面倒なのですが、これもAnacondaがあれば両方インストールしておいて必要に応じて簡単に切り替えることができます。
2020年4月以降、Python2がサポート切れとなったのでPython3を使う必要があります。
bCNCのwikiではpipを使用したインストール方法が紹介されていますが、以下はAnacondaをでインストールする場合についてです。個人的にはAnacondaを利用したほうが便利だと思うので。

インストールの流れとしては:
Anacondaのインストール(2021年現在Python3.8がインストールされる)。
・デフォルトだとbaseというAnaconda環境ができあがり、その中のPythonを使用することになる。
・Anacondaをインストールした場合は、pipを使ったインストールの代わりに必要なモジュールは「conda install 必要なモジュール」でインストールする。
・コマンドプロンプト、ターミナルを使って、pyserialをAnacondaでインストールする(conda install pyserial)

Macに入っているルート権限のPythonだとトラブルが起きた場合修復が面倒になるので、Anacondaなどの設定したローカル環境にPythonをインストールしたほうが何かと便利です。
Windowsの場合はいずれにせよ新たにPythonをインストールすることになるため、Anacondaをインストールしたほうがいいと思います。


Pythonの有無/バージョンを確認するには:
ターミナル(Mac)あるいはコマンドプロンプト(Win)を開き、
python -V
を入力。
Python 3.8.5
と表示されれば、Python3.8.5がインストールされていることになります。
*Anaconda利用の場合は、その環境内のPythonのバージョンが出てきます。


Pythonのディレクトリを調べるには:
which python(あるいはwhere python)
を入力。
C:\Users\username\anaconda3\python.exe(Windowsの場合)
/Users/username/opt/anaconda3/bin/python(Macの場合)
が表示されれば、このディレクトリのPythonが使われます。


Pythonから起動する:
Macの場合はダウンロードした「bCNC-master」フォルダ内にある「bCNC」ファイルをダブルクリックして起動することもできます。Windowsの場合は「bCNC.bat」をダブルクリックして起動。

bCNC-masterフォルダをDownloadフォルダ内へダウンロードした場合は以下のディレクトにあるはずです(Macの場合)。

/User/username/Downloads/bCNC-master

「bCNC-master」フォルダ内には「bCNC.py」ファイルがあるはずなので、それをターミナル(コマンドプロンプト)を使ってPythonで起動します。

python /User/username/Downloads/bCNC-master/bCNC.py


尚、起動アイコンのつくりかたは下のほうに書いてあります。


pipやpyserialのモジュールの有無を調べる:
python -c "help('modules')"
を入力。そうするとアルファベット順にたくさんのモジュールが出てきます。その中にpipとpyserialが入っていればインストールする必要はありませんが、初期状態では入っていません。
あるいは、
pip list
もしくは
pip freeze

Anacondaの場合は
conda list

pipをインストールする(Anacondaを使わない場合):
まずpyserialをインストールする前にpipをインストールします。
easy_install pip
を入力。もし管理者権限がないためにエラーがでるようなら、
sudo easy_install pip
と入力すると、
Password:
が表示され、管理者権限パスワード要求されるのでそのままパスワードを入力。パスワードを入力しても画面には表示されないので、そのまま入力。
問題なければpipがインストールされます。


モジュールのインストールが上手くいかない場合:詳細はこちら
python -m pip install -U pyserial --user
と入力すると、PC本体のシステム(ルート)ではなくユーザーごとのディレクトリにインストールされます。たまにシステムからインストール権限がないためエラーが出ることがあるので、この方法であれば大体大丈夫かと。
また、python2.7やpython3など、バージョンを使い分けてインストールするならば、
python2.7 -m pip install -U pyserial --user
python3 -m pip install -U pyserial --user
という感じになります。

インストールする場合に管理者権限パスワードが要求される場合は、ルートにインストールしているということなので、できればルートではなくユーザー以下のディレクトリかAnacondaなどで設定したローカル環境にインストールしたほうがトラブル回避につながります。

Anacondaであればこういったトラブルには遭遇しないかと思いますが、たまにバージョンの異なるモジュールをインストールしてコンフリクトを起こす場合もあります。Anacondaであれば、つくった環境ごと消去し再度環境をつくり直せばいいので簡単です。


pyserialのインストール:
pipを使ってpyserialをインストールする場合。
pip install pyserial
を入力。
管理者権限パスワードが必要なら、前回同様sudoを頭につけて入力(できれば管理者パスワードを使ってのルートへのインストールはしないほうがいいと思います)。
sudo pip install pyserial
もしアップグレードする必要があるならば、
pip install pyserial --upgrade
を入力。
上記の方法でインストールできない場合は、こちらの方法で。

Ancondaの場合は、
conda install pyserial


pyserialがインストールされているか確認:
python -c "import serial"
を入力してエラーがでなければ、pyserialがインストールされたことになります。
あるいは、先ほどの
python -c "help('modules')"
を入力し、モジュールリストの中から確認。
もしくは
pip list
あるいは、
pip freeze

Anacondaの場合は、
conda list


bCNCのインストール&起動:
bCNCのこのページの緑色のボタン「Clone or download」から、「Download ZIP」をクリック。

適当なところにダウンロードし、解凍すると「bCNC-master」フォルダが出来上がります。「bCNC-master」フォルダを開き、Macなら「bCNC」、Winなら「bCNC.bat」をダブルクリックで起動。

ダブルクリックしても起動しない場合は、ターミナル(コマンドプロンプト)を起動して、以下のようにPythonを使って直接プログラムを立ち上げることもできます。

python C:\Users\username\Downloads\bCNC-master\bCNC.py(Winの場合)
python /User/username/Downloads/bCNC-master/bCNC.py(Macの場合)
*上記usernameは各自のユーザー名。

毎回この方法で起動するのが面倒という場合は、下の方に書いてある「起動アイコン・ランチャー」の作り方を参考に独自の起動コマンドを作成するといいと思います。

Gitを使ってのインストール方法などについてはこちらへ(本家)


bCNCとArduino Unoとの通信開始:
Arduino UnoとUSB接続しbCNCを起動したら上部「File」タブを押す。
Serial内のPort:でArduinoのポート選択、Baud:115200、Controller:Grbl、「Open」ボタンで接続開始。
Status:Alarmになったら、上部「Control」タブに切り替えて(以下画面)、
「Unlock」で解除(あるいは$Xをコマンド入力)。そうすると、Status:Idleに変わります。「Unlock」しないと以後の操作ができないので要注意。
「Open」ボタンを押しても、Status:Not connectedのままなら「Reset」ボタンでやり直し。

Unlock後(Idle状態)、下のほうにあるジョグボタン(十字ボタン)の操作が可能となります。
ジョグボタン右側にある数値10.0は10.0mm、ボタン一回で進む量です。一度に進む量は数値の周りにあるボタンで調整できます。
ジョグボタン中央の○ボタンは、WPos加工原点(0,0,0)に戻るボタンです。
「Home」はホーミングサイクル($H)、まだ設定していない場合は使えません(ホーミングについてはこちらへ)。
エラーなど生じたら「Reset」でソフトをリセット。



「Terminal」タブでGコード入力内容やエラーを確認:
上部右端「Terminal」タブを選択すれば、ボタン操作した内容がGコードとしてコンソール画面上に確認できます。ボタン操作したのに反応がないときは、ここでエラーがでているか確認できます。
先ほどのジョグボタン中央の○ボタンは、
G90G0X0Y0Z0
というコマンドを送信したことになっています。ボタン送信によるコマンドの内容を変更したい場合は、そのボタンを右クリック(あるいは中クリック)で設定し直すことができます。


「Command:」欄にコマンドを手入力する:
ボタン操作以外に、画面左下の「Command:」欄に直接Gコードを手入力できます。
「Unlock」ボタンのかわりに、$Xなどと直接打ち込んだほうが早いかもしれません。


画面の調整:
ラズパイ用の小さな画面に表示している際は画面がはみ出てしまうことがありますが、以下のように画面内の表示エリアを調整すれば大丈夫な場合もあります。
「State:」はクリックすれば折りたたむことができ、下の「Control」や「Command:」の表示エリアが少し上にあがります。また、中央の画面境目を左右に動かすことで、左右画面幅を調整することができます。


bCNCの使い方(利用例):
以下は、これまでのbCNC使用例のリストです。
G Code Sender(bCNCなど)
bCNCでGrbl1.1レーザーモードの実験
Jscutでオフセットカット設定、bCNC上で加工原点を移動する
Gコード38.2のプローブ設定とbCNCプローブ機能
Raspberry Pi3にbCNCをインストール&Pendant機能で遠隔操作
bCNCのIPカメラ化(実験段階)

また、CNCマシン使用前の設定についてはこちらへ。リンク先では、bCNCではなくUniversal-G-Code Sender(UGS)を使用していますが、手入力設定なのでbCNCの画面左下のCommand:に同様のコマンドを入力することで設定可能です。


bCNCの日本語化:
最近(2017/01/22)、bCNCも日本語化されたようです。画面右上のほうに言語タブがあり、Japaneseが選べるようになっています。最新のbCNCをダウンロードしてみたら設定変更できました。
bCNCを他言語化するには、このページにやりかたが書いてあります。このあたりは、オープンソースなので利用者(参加者)によって徐々に改良されていくという感じですね。おかげで見やすくなりました。まだ部分的に日本語になっていないところもあるので、このページのやり方で追加更新していけそうです。


ホーミング($H)について:
bCNCの「Home」ボタンを押すと、Grblにおける$Hコマンドが送信され、ホーミングサイクルが開始します(詳しくはこちらへ)。ホーミングを可能にするためには、XYZ軸にリミットスイッチをつけ、Grblの設定$22=1にしておく必要があります。ホーミングサイクルが終了すれば、CNCマシンは自分の位置(MPos:マシン座標)を把握できるようになりますが、ホーミングサイクルをしなくてもWPosを基準にして加工作業はできます。


リファレンス点復帰(G28、G30):
ホーミング後、G28(リファレンス点復帰)やG30(第2リファレンス点復帰)を入力することで、作業エリア中央やツール交換場所などの任意の位置へ自動で移動することができます。その設定をするには、ジョグボタンなどで任意の位置まで行き、その位置でG28.1あるいはG30.1を入力します。そうすると、その場所の座標がG28やG30用に登録されるようです(個人的には使ったことありませんが)。


いつものやり方(ホーミングなし):
だいたいは作業エリア中央で加工しているので、個人的にはホーミングは普段使っていません。MPos(機械座標)は無視して、WPos(加工座標)だけで以下のような流れでやっています。
・CNCマシン電源投入、bCNCと接続
・bCNCの「Open」ボタン(接続開始)、「Unlock」ボタン(初期ロック解除)
・材料を任意の場所(作業エリア中央付近)に固定する
・材料の左手前角(加工原点)までジョグボタンでXY軸を移動
・エンドミル先端を材料上面と接するまで(紙1枚はさんで)ジョグボタンでZ軸を下げる
・bCNCで「X=0」、「Y=0」、「Z=0」を押す(加工原点設定)、G92 X0 Y0 Z0でも可
・エンドミル先端を10mmほど上に戻しておく(安全のため)
・Gコードファイルを読み込んで加工開始
*Gコードファイル内の加工パスも、材料左手前角を加工原点にしておき、加工開始点は材料左手前角、加工終了後も材料左手前角に戻ります。
*Grbl設定は、$20=0(ソフトリミット:OFF)、$21=1(ハードリミット:ON)、$22=1(ホーミング:ON)にしてあります。


現在のGrbl設定:各設定コマンドについてはこちらへ
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=2 (dir port invert mask:00000010)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=1 (hard limits, bool)
$22=1 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=30.000 (homing feed, mm/min)
$25=600.000 (homing seek, mm/min)
$26=25 (homing debounce, msec)
$27=5.000 (homing pull-off, mm)
$100=320.000 (x, step/mm)
$101=320.000 (y, step/mm)
$102=320.000 (z, step/mm)
$110=1000.000 (x max rate, mm/min)
$111=1000.000 (y max rate, mm/min)
$112=400.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=740.000 (x max travel, mm)
$131=940.000 (y max travel, mm)
$132=190.000 (z max travel, mm)


オーバーライド機能:
Grbl1.1からはリアルタイムで加工中にもフィードやスピンドル出力数を可変制御できるようになりました。bCNCのControlタブを選択すれば以下のようなスライダーが表示されます。
この状態であれば、フィード100%(上段の100という数値)であり、スライダーを使って25%〜200%まで調節できます。Resetを押せば瞬時に100%の位置に戻ります。
その下のSpindleボタンでスピンドルON/OFF切り替え、スライダーで回転数(レーザーであれば出力数)を調整できます。ただし、スピンドルに関してはTTL端子付きの可変出力制御可能なスピンドル用ドライバを接続しておかないとこの機能は使えません。
スライダーにおける回転数や出力数は、Tools>Configで設定します。

スピンドルの回転数表示にしたい場合は、Spindle max(RPM)の欄へ使用しているスピンドルの最大回転数に合わせた数値を入力しておきます。こうすることで、回転数(RPM)から判断したいときは見やすくなると思います。
レーザーの場合は回転数ではないので、M3やM4で設定するS値(S0〜S1000)やワット数など入れておくといいと思います。
尚、設定したら一度bCNCを再起動する必要があります。


.bCNC(不可視ファイル)で設定する場合:
上記のTools>Configでマシンに合わせた設定がある程度できますが、ここで設定できないようなことは.bCNCファイル(不可視ファイル)に書き込むことで可能になるようです(本家説明はこちら)。
.bCNCファイル(不可視ファイル)の場所は、ダウンロードした「bCNC-master」フォルダ内ではなく、パソコンのユーザーディレクトリ内にあります(Macなら/User/username/.bCNC)。
不可視ファイルを見えるようにするには(Macの場合)、ターミナルから、
defaults write com.apple.finder AppleShowAllFiles -boolean true
そして、
killall Finder
を入力します。これで不可視ファイルが見えるようになります。
元に戻すなら、
defaults delete com.apple.finder AppleShowAllFiles
そして、
killall Finder
を入力し不可視ファイルを見えない設定にします。

Windowsにおける不可視ファイルの表示/非表示に関しては、こちらが参考になるかと

追記(Mac用):
もっと簡単なのは、ファインダーを開き、左側のリスト内にあるホームディレクトリを選択し、「command+shift+.(コマンド+シフト+ピリオド)」で可視/不可視に切り替わります。


Pendant機能(スマホで遠隔操作):
CNCマシンとUSB接続してあるパソコン上のbCNC画面から操作する以外に、Wifi環境があればPendant機能を使うことで、他の端末(スマホなど)からも遠隔操作可能となります。エンドミル先端と材料との距離を見ながら、手元のスマホで加工原点合わせすることも楽になります。
File画面↑で、Playボタン(Start pendant)を押せばすぐに使えます。他の端末のブラウザで「localhost:8080(あるいは192.168.X.X:8080などのローカルIPアドレス+ポート番号)」にアクセスすれば、以下のような操作画面が出てきます。
Androidタブレット上の画面です。
ここで、|Home|Unlock|Reset|の下に「Idle」が表示されていれば使うことができます。「Disconnected」と表示されている場合は、再接続した方がいいと思います。


Webカメラを使う場合:
パソコン(ホスト側)に接続したカメラ(Opencv、PIL:要インストール:pip install opencv pillow)をオンにすれば(以下の赤丸のボタン)、
http://localhost:8080/camera.html(あるいは192.168.x.x:8080/camera.htmlなど)にスマホなどからアクセスしてカメラ映像を見ることができます。例えば、スピンドル近くに設置したカメラで加工状況などをカメラを通して確認できます。

関連:bCNCのIPカメラ化(実験段階)


タブ自動配置機能:
ルーターやフライス加工の際に、加工後半で部品が材料から完全に切り離されて、部品そのものの固定が不安定になってしまう時があります。そうならないようにTool>Tabsボタンで部品の周囲にタブ(部分的に部品と材料とつなげておく処理)を配置することができます。bCNCのwikiに説明が載っています(こちら)。
Gコードの一番下のパスだけ選んだ後、Tabsボタンを押すと画面左に設定項目が出てきます。

ここで、タブの数、配置間隔、大きさ(Dx、Dy)、高さ(マイナスの値で入力)を設定。
この画面上部のTabsを押すと黄色いタブが生成されます。その後、Cutボタンを押し、厚みや深さなど設定し(場合によってはStockボタンの方でも材料の厚みなど設定し)、Cut設定項目上部のCutボタンを押すと、一番下のパスにタブ(一段上がったパス)が出来上がります。


パスが選べないとき:
もし、一番下のパスだけを選択できない場合は、すべてのパスが一つのHeaderやblockに入っているのかもしれません(Editorタブの画面に切り替える)。そのような時は、一番下のパスが含まれているパス用のフォルダを展開し、以下のように真横に視点を変えて、選択ツールで一番下のパスだけを囲んで選びます。
その際、左側に見える選択したパスの内容を確認して、抜けているような部分も含めてGコードをカットします。

左側のパス用フォルダのリスト上でペーストすると、先ほどカットした一番下のパスだけのデータがblockという名前で出てきます。ペーストされたフォルダの上下の順番を変えるにはUp/Downを押します。その後、一番下のパスを選ぶ時は、このパス用フォルダをクリックすることで選べるようになります。
不必要なフォルダはDeleteボタン、新たにフォルダを追加する時はAddなど、ここでGコードの編集が可能です。


オフセット(工具径補正)加工:
例えば、直径6mmのエンドミルを使用している場合、加工パス(加工する軌道)は、図面外形線に対して3mm分(エンドミル半径)外側や内側を通らなければいけません。bCNCではこの補正(オフセットしたパスを描く)も可能です(InkscapeやJscutでも可能)。
まず、Toolタブで画面を切り替えProfileボタンを押します。
そうすると画面左に設定画面がでてきます。
例えば、3mm外側をオフセット加工するなら、以下のように入力します。
Direction: outside(図形外側にオフセット)
Additional offset distance: 3.0(この場合3mm)

そして、オフセットしたい図形を画面内で選びます(青線になる)。
設定項目の上にある横長のProfileボタンを押せば、選択した図形の線(パス)が、3mm外側にずれてくれます。
この機能を使わずに、InkscapeやJscutなどであらかじめオフセット加工用のパスに変換しておくこともできます。もしオフセットされていないデータを使用するなら、このようにしてbCNC上でも可能となります。


アップデート確認:
Fileタブ画面内のUpdatesボタンで使っているbCNCが最新かどうか確認できます。


こんな感じで表示されますが、自動的にアップデートしてくれるというわけではないようです。Git pullでアップデートできるのかもしれませんが、そのままサイトからダウンロードした方が早いかもしれません。
常に開発中(改良中)のオープンソースなので、微妙にエラーなどでたりする時があります。調子が悪かったり、きちんと機能しない部分があるときは、アップデートした方がいいかもしれません。


起動アイコン・ランチャー:
テキストエディタで、「bCNC-launcher.sh」などと名前をつけたファイルをつくり(「.sh」の拡張子は省略可)、中にはシェルコマンドを書いておきます。

#!/bin/bash
cd `dirname $0`
python bCNC.py

シェルコマンドとしては、このコマンドファイルが置かれているディレクトリへ移動して、そこでPythonでbCNC.pyを起動という感じです。ちなみに、「`dirname $0`」に使われている「``」はバッククオート(Shift + @)で、「''」のシングルクオート(Shift + 7)とは違うので要注意。
記入したらファイルを閉じて、このファイルに実行権限を与えるため、

chmod +x bCNC-launcher.sh

と打ち込みます。
そして、このコマンドファイルを「bCNC-master」フォルダ内に入れておきます。あとはエイリアスをつくってデスクトップやDockに配置しクリックすれば起動するようになります(Macにおけるアイコンのつくりかたについては次の項目に書いてあります)。


PyenvとAnacondaを導入した場合:
PythonでプログラミングもするためAnacondaを導入したことから、

source activate py27
python bCNC.py

などとPython2.7の環境に切り替えてから起動するときもあります(「py27」はAnaconda内につくった任意の環境名)。しかしながら、pyenvとAnacondaの両方を導入すると「activate」が競合してしまうので以下のようなシェルスクリプトとなります。

#!/bin/bash
source ~/.pyenv/versions/anaconda3-5.1.0/bin/activate py27
cd `dirname $0`
python bCNC.py

Anacondaの仮想環境「py27」に入り、このスクリプトのあるディレクトリへ移動し、そこでpythonにてbCNC.pyを起動させるという感じです。pyenvのコマンドである「activate」と競合してしまうため、Anacondaの「activate」のフルパスを書き込んでいます。解決方法は以下。


「conda activate py27」へ変更:
このためなのか、conda4.4以上からは仕様が変わったようで、「source activate py27」と入力するよりも「conda activate py27」の使用が推奨されているようです。その場合は、「.bashrc」もしくは「.bash_profile」に書いてあるパスを書き換える必要があるようです(こちらに説明がかいてあります)。
試してみたところ、「.bash_profile」に(「.bashrc」には書かない)、

export PYENV_ROOT=$HOME/.pyenv
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
. $PYENV_ROOT/versions/anaconda3-5.1.0/etc/profile.d/conda.sh
conda activate base

を書き込んでみました。5行目の「conda activate base」を書き込むと、Anacondaの「base(ルート)」環境に入った状態でターミナルが起動するので、それが嫌ならなくてもいいかもしれません。
そして環境を変えるには「source activate py27」のかわりに、

conda activate py27

を入力します。
これでpyenvとの競合がなくなったと思います。
またアイコン用のシェルスクリプトなら、

#!/bin/bash
. ~/.pyenv/versions/anaconda3-5.1.0/etc/profile.d/conda.sh
conda activate py27
cd `dirname $0`
python bCNC.py

とすればいいと思います。


アイコン画像のつくりかた(Mac):
任意の画像をアイコンにするには、画像ファイルをPreviewなどで開き、画像をセレクトオールでコピーしておきます。
そして、先ほどつくったコマンドファイルを右クリック「情報を見る(command+I)」で表示させ、左上にあるアイコン画像をクリック選択してペーストすればアイコンとして表示されます。


この他の機能については今後追記していきます。

2016年12月18日日曜日

Grbl1.1 Laser Modeの実験

さてGrbl1.1のレーザーモードの実験をしてみました。
前回も書きましたが、Grbl1.1では新たにLaser Modeが加わり、その中でもM4コマンドをつかった(従来まではM3)Dynamic Laser Modeという、レーザーヘッドの移動スピードに比例するようにレーザー出力をリアルタイムで調節してくれる新機能があります。今までは、スピードが落ちがちなパス折り返し地点や出だしの部分などで、焦げが目立っていましたが、それが解消(緩和)されるというわけです。どの程度効果あるのか、そしてどんな設定やコマンド操作するといいのか試してみました。
結果的には、従来に比べけっこう使えるんじゃないかという感じです。

使っているG Code SenderはbCNCです。今回は90度の扇形(半径20mm)の図面を描いて実験です(Inkscapeで描画、Laser Tool Plug-inでGコード生成)。直線部分、角の部分、そして円弧がある図形という感じです。特にいままでは、角の部分で焦げが目立っていましたが、どうなるかいくつかのパターンで試してみました。
画面左↑にGコードがあります。ちょうど水色の部分にM03があり、ここをM4に変更したりS値を少し書き換えていくつかのパターンをつくってみました。
結果は以下。
材料は厚さ2.2mmのシナベニヤ板。半径20mmの扇形。5.5Wダイオードレーザー使用。
まずは下の段から、
左端は、従来のM3 S1000 F200でカットしたもの(やや角に焦げが見えます)。
左から2番目、M4 S1000 F200。Dynamic Laser Modeなので、あまり角が焦げていません。なかなか効果あり。

M4でもS値を入力する必要がある:
ここで疑問に思ったことがあり(前回の投稿での疑問でもありましたが)、M4はスピード(フィード)に合わせてレーザー出力するのなら(M4の場合、スピードが0だと出力も自動的に0なる)、S1000はコマンド入力しなくてもいいんじゃないか?ということで試してみると、M4だけで出力値Sを入れないでRunさせると、レーザー自体出力していませんでした。つまり、M4 S1000などと出力したい値(おそらく100%のときの出力値)を入力しないとダメです。
ということで、右から2番目のが、M4 S500 F200。出力を半分に下げてのDynamic Laser Mode。少しわかりにくいかもしれませんが、左から2番目のS1000よりは弱いかなと。
わかりにくいので、右端がS100まで出力を落としたDynamic Laser Mode。ということから、M4の場合、Sの値は上限値という感じです。

レーザーモードのオン・オフ設定:
ただ、注意点としては、M3の場合は最初に$32=0という感じで、レーザーモードをオフにしておき、M4を使うなら$32=1に設定変更が必要です。M4での作業が終わればまた$32=0に戻すという感じ。M4が便利そうなので、$32=1のままでよさそうですが(M3はもはや使わないかも)。

リアルタイムオーバーライド機能:
それから、実験結果画像の上のほうにあるのは何かというと、Grbl1.1からはReal-time Overridesが使えるようになったので、もともとbCNCについているオーバーライド機能を使ってみたという結果です。
bCNCには、FeedやSpindleをリアルタイムで調節できるスライダーがついています。加工中ではないときでも、Spindleボタンを押せば、レーザーオン・オフや出力調整が可能です(いきなりレーザー光がでるので注意が必要です)。この画像↑の場合、Feedが最大200になっています。
追記:調べてみると、どうやらこの200は200%とということらしいです。100が100%でそれに対し、25%〜200%で可変制御可能ということみたいです。
このようにスライダを右にずらせばフィード50%などに変更できます。これを加工中(レーザー照射中)に変更するとどうなるかというのが、実験結果画像の上段です。上の段真ん中が、M4で加工中にフィードを200%から50%まで下げてみた結果です。Dynamic Laser Modeなので、理論的にはフィードが途中で変わっても、それに合わせて出力変化してくれるので、均一な加工結果になるはずです。ぐりぐり少しいじったので、円弧の部分でややムラがありますが、縦のラインはフィード200%で横のラインがフィード50%ですが、だいたい同じくらいの出力になっている感じなので、効果はでていると思います。

実験結果画像上段の右端は、M3で同じように加工中にリアルタイムでフィードを変化させたものです。Dynamic Laser Modeではないので、当然200%から50%に下げれば、それだけ焦げが多くなるはずです。まあ、そういう結果になっているので、やはりリアルタイムで調節可能ということが分かりました。

まとめ:
Dynamic Laser Modeはけっこう効果あります(焦げが少なくなるために、きれいに切断できる)。
Dynamic Laser ModeでM4を使うときは$32=1(レーザーモードON)にする。
従来のコマンド(M3)の場合は、
M3 S1000(レーザーON、出力100%)
でしたが、
Dynamic Laser Mode(M4)の場合は、
M4 S1000(S値:レーザー出力上限値、S500なら最高50%で出力)。
リアルタイムでフィード(25%〜200%)や出力値(0〜100%)も調整可能。
結果的には、Grbl1.1のほうがGrbl0.9よりずっと優れている。

要するに、どうすればいいかというと、Gコード上ではM4 S1000で出力値MAX、フィードもやや速め(M3のときの設定に比べれば1.5倍〜2倍)に設定しておき、bCNCならスライダで出力値やフィードを調整するという手順になるかと。なので、今回の実験のように、いちいちGコードファイルを開いて編集する必要もないと思います。

Inkscape Laser Tool Plug-inでの設定:
例えば、Inkscape Laser Tool Plug-inを使うならば、
こんな感じで、
Laser ON Command: M04、
Laser Speed: 200(これはやや速め/レーザーのW数による)、
Laser Power S#:1000(ここはGrblのスピンドルMAX出力値の1000)
にしておいてGコードを生成。
あとでbCNCなどのG Code Senderのほうで出力値やフィードは現場調整という感じ。

bCNCの画面折り畳み機能:
これはレーザーモードには関係ないですが、bCNCの場合以下のようにState▲をクリックすると、画面が折り畳めます(しばらく気づかなかった)。
bCNCの全体表示画面が大きすぎるとき(Raspberry Piの小さなモニターのときなど)、折りたたみ機能を使えば大丈夫というわけです。

2016年6月14日火曜日

Raspbarry Pi3 7インチタッチスクリーン1024x600px

Raspberry Pi3(AliExpressで4328円)を購入した際に3.5インチタッチスクリーン(480x320px:1322円)も同時に注文しましたが、3.5インチだと小さすぎて使いづらいので、さらに7インチタッチスクリーン(1024x600px:5028円)を注文し直しました。それが今日届きました。送料無料でしたが、8日間で届いたことになります。かなり早いほうです。

Raspberry Pi3本体よりも値段が高かったのでためらいましたが、やはり3.5インチでは使いづらいので購入することに。いつものようにAliExpressで探してみましたが、結果的に1024x600pxのものにしました。
公式の7インチタッチスクリーンもありますが1万円くらいします。しかも解像度が800x480pxです。

Raspberry Pi RASPBERRYPI-DISPLAY
Posted at 2017.6.18
Raspberry Pi
販売価格 ¥10,899
(2017年6月18日0時4分時点の価格)
売上げランキング: 1334

AliExpressで探してみると、当然安いのですが、7インチでもいくつか種類がありました。
だいたいは、7インチでも
・800x480px、タッチパネルなし(3000円前後)
・800x480px、タッチパネルあり(4000円前後)
・1024x600px、タッチパネルなし(4000円前後)
・1024x600px、タッチパネルあり(5000円以上)
という感じ。
AliExpress.com Product - LCD HDMI Touch Screen 5 inch Display TFT 800*480 for Banana Pi Raspberry Pi 3 / 2 Model B / B+
解像度だけで見れば、800x480pxなら5インチというのもありますが、3.5インチ480x320pxでは小さすぎたことから、できるだけ大きく1024x600pxを候補としてます。


こんな感じで公式と同じ7インチ800x480pxの大きさですが、いろいろ基板とかついているため、ケースがないとこのままでは使いにくいという感じ。4200円送料無料。いちおうタッチスクリーンです。
これでもいいかと思いましたが、もう少しさがしてみると、


これは7インチでも1024x600pxもあります。しかも3230円です。しかしどうやらタッチスクリーンではなさそうです。タッチスクリーンはあまり使わないので(でもあったほうがよさそう)、これでもいいのかもしれません。
これは先ほどのものにケースというか土台がついたもの。4307円。あまりいいデザインではないですが、こんな感じでまとまっていれば使いやすいかもしれません。これもタッチスクリーンなしです。ただの1024x600pxのLCDスクリーン。ただこれも含め上の3つは基板は同じタイプ。小さい基板とタクトスイッチの基板はキーボードと書いてありますが、何か調節用でしょうか。気になるのが電源部分。もしかするとRaspberry Pi本体とは別に電源が必要かもしれません。USBとDCプラグのケーブルがついているので、Raspberry PiのUSB端子から電源供給かもしれません。

そうなるとつぎに考えられるのは、1024x600pxでタッチスクリーンのタイプ。
こんな感じで余計な基板などなくすっきりしているタイプ:7794円。1024x600pxでタッチスクリーン。アクリルっぽいケースというかフレームがついています。でもけっこう高価です。ケーブルもUSB経由でタッチパネル制御、モニターはHDMIケーブルです。

そしてこれのケース(フレーム)なしのものが、今回購入した以下のもの。
現在5384円。購入したときは5%オフとクーポンで5028円でした。
これは1024x600pxでタッチスクリーン。
それで、最初の写真にもどると、

5000円代になると、このようにタッチパネルの基板も本体にまとめてあって、HDMIケーブルとUSBケーブルを接続するだけです。別電源は必要なし。ただですらケーブルでごちゃごちゃしてしまうので、できるだけすっきりしていたほうがよさそうです。裏側は以下のような感じ。


注文して次の日には配送したようで、送料無料になっているわりには8日間で届くというかなり早い対応です(ほかのショップもこのくらいの対応をして欲しい)。たぶん、他のショップの多くは注文を受けてから在庫確保しているに違いない(無在庫転売/ドロップシッピング)。そのためすぐに配送できないのでしょう。
このショップはおそらくメーカー直送のためか、配送もすぐだったし梱包もしっかりしています。
内容物は:
7インチタッチスクリーン本体
HDMIケーブル
USBケーブル
ネジ+スペーサー
DVD-R

そして付属DVD-Rには、以下のようなものが入っていました。

さらに中には、
マニュアル各種、ドライバー、イメージファイル、ソフトなど一通り必要そうなものが入ってます。配送の対応が早かったし、付属のソフト類もきちんとしており、ここのショップは今までになくかなり親切です。
Documentフォルダのなかに7inch Quick start(Read Me).pdfがあるので、それを見てみると、


1 .How to easily check if the LCD is OK?
Connect the LCD's USB interface to the windows-system computer's USB interface,
connect the LCD's HDMI interface to the computer's HDMI interface (connect to USB, then connect to HDMI).
Normally, we can see the Windows to identify a touch driver. When the installation is completed (the first installation generally requires 3~5 minutes), you can test the touch and LCD display.

2. using the images we have provided.
Step 1: Step 2:
Step 3:
Copy the image to the computer.
Format SD card by
SDFormatter.exe, downloaded the image into the SD card by
Win32DiskImager.exe.
Insert the SD card to Raspberry Pi, use the HDMI cable to connect Raspberry Pi

and LCD. Connect the one of four USB of the Raspberry Pi and LCD with the USB cable, then Raspberry Pi on electricity. If the display and touch are normal, the procedure is successful. (Please use the 2A power supply enough)
3. how to use with the official mirrors of Raspberry Pi?
Step 1:
Step 2: Step 3:
Download the latest image from the official website.
https://www.raspberrypi.org/downloads/
Format SD card by SDFormatter.exe, downloaded the image into the SD card by Win32DiskImager.exe.
Open the SD card drive, find the config.txt file in the file, then add the following code in the end according to resolution:
·For 7inch HDMI LCD (B)(800 x 480),Add
max_usb_current=1
hdmi_group=2
hdmi_mode=1

hdmi_mode=87
hdmi_cvt
800 480 60 6 0 0 0
·For 7inch HDMI LCD (C)(1024 x 600),Add
max_usb_current=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt
1024 600 60 6 0 0 0

こんな感じです。どうやら、公式のイメージファイルも使えるようです。SDカードにマウントしたイメージファイルのconfig.txtに上の4行を書き足せばいいようです。
しかし、このようにやってみたのですが、画面には何もでてこない(白画面)でした。よく読むと一番上にUSBとHDMI接続すると3~5分くらいかけてタッチパネルのドライバーがインストールされるようですが、すぐに電源を切ってしまいました。モニターはHDMI接続なので、すぐに使えるとは思うのですが、少なくてもタッチパネルのドライバーはインストールしないとダメそうです。
ということで面倒なので、DVD-Rに入っていたイメージファイルをチェックしてみると、2016年3月のものになっていたので(現行の公式イメージファイルより一つ古いバージョン)、まあ大丈夫だろうと、そのままこのイメージファイルごとをマウント(ApplePi Bakerで)しました。やはりそうするとあっさり使えるようになりました。

一通りwifi、キーボード、日本語など設定し、
sudo apt-get update
sudo apt-get upgrade
をしながら、scrotやbCNCもインストールもしてみました。

これ↑が、bCNCの画面です。3.5インチとは違って広々しています。縦が600px、このままだとやや下のほうが欠けていますが充分つかえそうです。左下が上下左右のジョグボタンです。ぎりぎり入っているのでこのままでもいけそうです。
以下は3.5インチのときの画面。かなりちがいます。上の画面の約1/4くらいしか見えていなかったという感じです。

それとこの3.5インチだとHDMI経由ではなくI2C通信で画面を表示させているため、すこし反応が遅いのも気になっていました。
今回の1024x600pxだとかなり実用的です。同じ7インチでも公式の800x600pxよりもピクセル数は多いのでその分表示される内容も増えます。
やっとこれでRaspberry Pi3が使えるようになったという感じです。

ちなみに画面が小さい場合は、右側の「State:」をクリックすれば折りたたむことができるので、下の「Command:」の入力欄も見えるようになります。また右画面との境目を左右に動かして画面幅を調整することもできます。


http://elinux.org/RPiconfig#CMA_-_dynamic_memory_split

追記:
どうやら付属のイメージファイルには以下のbcm2835というCライブラリも既にインストールされているらしい。

Install C Library bcm2835
The bcm2835 installation package file can be found on: /home/pi/bcm2835-1.25 under the image we provide, or can be obtained from the official website: http://www.airspayce.com/mikem/bcm2835/
Copy the installation package into your own system via a USB flash drive, enter the bcm2835-1.25 folder, then do this to install:


./configure
make
sudo make check
sudo make install

人気の投稿