なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

Raspberry PiでPython(とOpenCV)はじめました。

Posted by arms22 on 2016年01月26日 2  0



仕事ではC/C++を使ったプログラムを書くことが多いのですが、動的型付け言語、所謂スクリプト言語を1つマスターしたいと思いPythonを勉強することにしました。

Pythonを選んだ理由は、

  • プログラム言語別年収ランキングで一位
     国外の話で国内だとあんまり変わらないみたい。orz
  • Rubyより速そう
     バイナリパーサーを書いてみたんだけどあまりにも遅いのでPythonならどうだろう?という期待を込めて。
  • Raspberry Piにはじめから入っている
     環境構築の手間がはぶけて電子工作しつつPythonの勉強ができて一石二鳥。
  • OpenCVも使ってみたい
     OpenCVは画像処理・画像解析・機械学習用のライブラリ。データサイエンスの分野でPython+OpenCVが流行っているみたいなのでついでに。

これからPythonをはじめようと思っている方は下記チュートリアルから始めると良いと思います。実際にPythonインタプリタを動かしながら読むとすぐにコードを書けるようになります。

Python チュートリアル - Python 2.7.x ドキュメント
http://docs.python.jp/2/tutorial/

今回は前回紹介した2次元温度センサー「Grid-EYE」を使ったサーモグラフィーをRaspberry PiとPythonを使って作り直しました(上動画)。画面への表示処理にはOpenCVを使っています。

本記事では、
  • Raspberry PiからI2Cデバイスにアクセスする方法
  • Raspberry PiからOpenCVを利用する方法
を解説します。


回路


IMGP1086
Grid-EYEのピン配置・周辺回路についてはこちらの記事を参照してください。

GPIO_RaspberryPi_Model_A+_B+_and_B2
Raspberry Pi Model A+, B+, B2のピン配置図です。Model A, Bのピン配置はこのサイトを参照してください。

Raspberry PiとGrid-EYEの接続
2)SDA -- SDA1
3)SCL -- SCL1
4)INT -- 未接続
9)VDD -- +3V3
6)GND -- GND




I2Cドライバ・I2Cライブラリのセットアップ


まずはI2C関連のツールとPython用のI2Cライブラリをインストールします。
# sudo apt-get install i2c-tools python-smbus

次に raspi-config を使ってカーネルのI2Cドライバを有効にします。設定が終わったら一旦再起動します(ドライバを読み込む為)。
# sudo raspi-config
08 Advanced Options > A7 I2C > Yes
# sudo reboot

再起動したらI2Cドライバが正常に動作しているか確認してみましょう。次のコマンドを入力するとI2Cバスに接続されているデバイスのアドレスが表示されます。68はGrid-EYEです。
# sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

次のようなエラーが表示された場合、I2Cバスの番号を1から0に変えてコマンドを実行してください。
Error: Could not open file `/dev/i2c-1' or `/dev/i2c/1': No such file or directory

Raspberry Piのリビジョンによって利用できるI2Cバスが異なるようです。初期モデルのRaspberry PiはI2C0、A+, B+, B2ではI2C1が利用できます。
# sudo i2cdetect -y 0

Pythonからデバイスにアクセスできるか確認してみましょう。Pythonを起動して青色のコマンドを入力してください。Grid-EYEのサーミスタ温度が読み出せるはずです。
# python
>>> import smbus # I2Cライブラリをインポート
>>> i2c = smbus.SMBus(1) # I2Cバスアクセス用のインスタンス取得
>>> temp = i2c.read_word_data(0x68, 0x0E) # デバイスアドレス0x68のレジスタ0x0Eから2バイト読み出す
>>> temp * 0.0625 # 読み出した値に0.0625を掛けて温度に変換
29.1875



OpenCVライブラリのセットアップ


続いてOpenCVライブラリとPython用バインディングをインストールします。
# sudo apt-get install libopencv-dev python-opencv

PythonからOpenCVのバージョンを確認します。
# python
>>> import cv2 # opencvライブラリをインポート
>>> print cv2.__version__ # バージョン情報をプリント
‘2.4.9.1'

画像を読み込んで画面に表示します。
# wget http://www.cs.cmu.edu/~chuck/lennapg/lena_std.tif
# python
>>> import cv2
>>> img = cv2.imread('lena_std.tif') # wgetで取得した画像を読み込む
>>> cv2.imshow('lena_std', img) # 読み込んだ画像を表示するよう指示
>>> cv2.waitKey() # waitKeyを呼び出したタイミングで画像を表示

GdkGLExt-WARNING **: Window system doesn't support OpenGL.というエラーが発生した場合、次のライブラリもインストールしてください。Raspbian Jessie 8.0ではOpenGLがなぜか無効になっているようです。
# sudo apt-get install libgl1-mesa-dri

画像を表示するにはRaspberry PiをGUIモードで起動しておく必要があります。コンソールモードを使用している場合、次のようにXウィンドウシステムを起動し環境変数DISPLAYを設定してからPythonスクリプトを実行してください。
# startx&
# export DISPLAY=:0.0

sshでログインしている場合、Xオプションを指定してログインするとリモートホストに画面を転送することができます。リモートホスト側にXウィンドウシステムが必要です(OSXだとXQuartsとか)。
$ ssh pi@rpi.local -X
# echo $DISPLAY
localhost:11.0



サーモグラフィーのソースコード


GridEye.pyはGridEYEへのアクセス処理をまとめたモジュールです。thermistorTempはサーミスタ温度を浮動小数点型で返します。pixelOutはピクセル毎の温度を浮動小数点のリスト型で返します。

grid_eye_view.pyはサーモグラフィーのメインモジュールです。GridEYEからピクセル毎の温度データを読み出し、温度を0~255のグレースケール値に変換します。このデータを8x8のグレースケール画像として、カラー画像に変換(cv2.applyColorMap)し、512x256の表示用バッファに補完アルゴリズムを変えて2回拡大転送(cv2.resize)します。最後に画面に表示するよう指示(cv2.imshow)します。実際にはcv2.waitKeyを呼んだタイミングで画面に表示されます。

ソースコードはGitHubで公開しています。こちらからもダウンロードできます。

arms22/GridEye.py
https://gist.github.com/arms22/e62e682089fe428b1de8

アーカイブをダウンロードしてスクリプトファイル(grid_eye_view.py)に実行権を与えて実行してください。
# curl -L https://git.io/vzoKn > grid_eye_view.zip
# unzip -j -d grid_eye_view grid_eye_view.zip
# cd grid_eye_view/
# chmod +x grid_eye_view.py
# ./grid_eye_view.py



参考リンク


RPi Low-level peripherals - eLinux.org
http://elinux.org/RPi_Low-level_peripherals

Configuring I2C | Adafruit’s Raspberry Pi Lesson 4. GPIO Setup | Adafruit Learning System
https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c

Raspberry Pi B+にOpenCV-Python環境を構築する - Qiita
http://qiita.com/jh3rox/items/be803f9171db8fe737de

Enable OpenGL on Raspbian Jessie for OpenCV
https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=128464


初めてのPython 第3版
初めてのPython 第3版
posted with amazlet at 16.01.25
Mark Lutz
オライリージャパン
売り上げランキング: 64,168


詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
Gary Bradski Adrian Kaehler
オライリージャパン
売り上げランキング: 50,249


スポンサーサイト



Raspberry PiにOSMCをインストールして快適YouTubeライフ!

Posted by arms22 on 2015年11月18日 0  0

image

Raspberry PiにOSMC(オープンソースのメディアセンターアプリと関連するソフトウェア環境一式)を入れて、HDTVでYouTube動画を視聴できる環境を作りました。OSMCはネットワーク上の動画・音楽・写真を再生する機能のほか、アドオンを追加するとことで海外のさまざまな動画配信サービスに接続することができます。Raspberry PiにはH.264のハードウェアデコーダが搭載されており、OSMCはこの機能を使ってフルHDサイズの動画もスムースに再生することができます。OSMCのインストールはRaspbianと同様にインストール用SDカードを用意してRaspberry Piに挿して起動するだけ(簡単!)。Raspberry Pi買ったものの積み基板になっているという方は試してみてください。

ハードウェア構成はRaspberry Pi B+に8GBのマイクロSDカードとバッファローのUSB無線LAN子機「WLI-UC-GNHP」、TVはシャープの「LC-20E5」です。OSMCはすべてのRaspberry Piモデルで動作します。初期型のBモデル(メモリ256MB)でも動作しました。より安定した動作を求めるなら1GBのメモリを積んだRaspberry Pi 2、クラス10のSDカード、安定した電源の利用が推奨されています。


OSMCのインストール


OSMCインストール1

下記URLからRaspberry Pi向けのインストーラーをダウンロードします。
https://osmc.tv/download/

インストーラーを起動しいくつかの質問に答えていくと、SDカードへのOSMCイメージの書き込みが始まります。ここでWiFiの設定をしておけばRaspberry Pi上での設定が省けます。

  • 言語→英語
  • OSMC動作させるデバイス→Raspberry Pi
  • インストールするバージョン→2015.09-2
  • インストールメディア→on an SD card
  • ネットワーク→ワイヤレス(SSIDとパスワードを設定)
  • メディア選択→/dev/rdisk1(環境によって変わります)

SDカードへの書き込みが終わったらRaspberry Piに挿入し電源を入れるとインストールの続きが始まります。


初期設定

OSMC初期設定

インストールが完了するとOSMCが起動しHOME画面が表示されます。続いて初期設定画面が開きます。

HDMI CEC対応のTV(○○リンク)を使用している場合、TVリモコンで基本的なメニュー操作が行えます。TV側のHDMI機器連動機能がオフになっていると使えないのでこの機能をオンにしてください。

初期設定画面で言語の選択メニューが表示されますが、まずは「English」を選んで設定を終えてください。デフォルトのフォントには日本語フォントが含まれていないので「Japanese」を選択すると画面一杯に豆腐(□)が表示されて操作できなくなります。


日本語メニューに切り替える

次のようにメニューを選ぶと日本語表示に切り替わり、日本語コンテンツが表示できるようになります。
Settings > Appearance > Skin > Fonts > Arial
Settings > Appearance > International > Language > Japanese
Settings > Appearance > International > Character set > Japanese (Shift-JIS)


M+フォントのインストール(オプション)

OSMCのテーマに合わせて最近流行の細字フォントをインストールします。下記URLで公開されているスクリプトファイルを使ってM+フォントのインストールと設定を行いました(うまく動かなかったので少し手直して使っています)。

Raspberry Pi2にOSMC入れてKodi(旧:XBMC)日本語化するまで
http://mzyy94.com/blog/2015/02/16/raspberry-pi2-osmc-jp/

OSMC Japanese font replace(修正版)
https://gist.github.com/arms22/19b8548a6e516496c81f

Raspberry Piにsshでログインします。※パスワードは osmc です。
ssh osmc@osmc.local

シェルスクリプトをダウンロード・実行します。
curl -L http://git.io/vClug | sh -

シェルスクリプトの実行が終わったら一旦再起動してください。OSMCのメニューからRebootを選択すると再起動します。
Power > Reboot

OSMCが起動したらインストールしたフォントを選んで言語を日本語に設定します。Character setはDefaultでOKです。
Settings > Appearance > Skin > Fonts > Arial > M+ 1C Light
Settings > Appearance > International > Language > Japanese
Settings > Appearance > International > Character set > Default


リモコンアプリ

Kodiリモコンアプリ

iOS/Android向けにリモコンアプリが提供されています。基本操作に加え日本語入力にも使えて、TVリモコンよりもレスポンスが良いようです。OSMCのソフトウェアキーボードでは日本語を入力することができないので、YouTubeで日本語キーワードを検索したい場合はこのアプリを使って入力するとよいでしょう。

Official Kodi Remote - App Store
https://itunes.apple.com/jp/app/official-kodi-remote/id520480364


YouTubeアドオンの追加

Youtubeサブスクリプション一覧

次のようにメニューを選んでYouTubeアドオンを追加します。
ビデオ > video add-ons > Get more... > YouTube > Install

Googleアカウントを使ってSign inします。画面の指示に従ってPCまたはタブレットでYouTubeのアクティベートページを開き、OSMCの画面に表示されている認証コードを入力します。
ビデオ > video add-ons > YouTube > Sign in

認証が完了するとお気に入りに登録している動画(Liked Videos)や購読しているチャネルの動画(My subscriptions)が視聴できるようになります。
ビデオ > video add-ons > YouTube > Liked Videos
ビデオ > video add-ons > YouTube > My subscriptions


TVリモコンのキー割り当てを変更する

キーエディタ

選択しているアイテムに対する操作はコンテクストメニューにまとめられています。TVリモコンにはコンテクストメニューの機能が割り当てられていないので、Keymap Editorを使ってTVリモコンにコンテクストメニューを割り当てます。

次のようにメニューを選んでKeymap Editorをインストールします。
プログラム > Get more ... > Keymap Editor

Keymap Editorを起動し、TVが反応しないキーにコンテクストメニューを割り当てます。
プログラム > Keymap Editor > Edit > Global > Navigation > Context Menu > Edit key > 任意のキーを押す


Sambaサーバのインストール(オプション)

OSMCのローカルストレージに動画を置いて再生させたい場合、Sambaがあると便利です。次のようにメニューを選んでSambaサーバをインストールします。
MyOSMC > App Store > Samba (SMB) Server

OSXの場合、Finderのメニューから移動→サーバへ接続、次のURLを入力して接続ボタンを押すとOSMCのホームフォルダがデスクトップにマウントされます。
smb://osmc.local


参考記事

ラズベリーパイとOSMCで作るハイレゾオーディオプレイヤー – インストール&日本語化セットアップガイド
http://dolls.orz.hm/?p=10783

RPi - Raspberry Pi と OSMC(旧 RaspBMC)でメディア・ハブを楽しむ方法
http://netbuffalo.doorblog.jp/archives/5070483.html

Raspberry Pi2にOSMC入れてKodi(旧:XBMC)日本語化するまで
http://mzyy94.com/blog/2015/02/16/raspberry-pi2-osmc-jp/

OSMC - Lisa Wiki
http://www.lisa.jp/index.php/OSMC




Raspberry Pi Model A+
Raspberry Pi Model A+
posted with amazlet at 15.11.15
raspberrypi.org
売り上げランキング: 37,751


Raspberry PiにRepetier-Serverをインストールして複数の3Dプリンターを制御する

Posted by arms22 on 2015年11月11日 0  0

Repetier-Server_ダッシュボード

Repetier-Serverはブラウザを通してネットワーク越しに3Dプリンターを制御する為のソフトウェアです。以前、このブログでも紹介したOctoPrintと同列のソフトウェアになります。OctoPrintとRepetier-Serverの大きな違いは1つ。Repetier-Serverは複数の3Dプリンターを制御できるということです。3Dプリンターを自作する人は必ずと言っていいほど複数の3Dプリンターを所有しているので、Repetier-Serverは非常に魅力的なソフトウェアに見えるはずです。本記事ではRaspberry Piへのインストール方法、プリンターの設定、プリント手順を解説します。

2015年11月現在、Repetier-Serverはベータ版ですべての機能が使えます。ベータ期間終了後、一部の機能(Webカメラ、タイムラプス、スライシング等)は使えなく、すべての機能を利用するにはライセンスが必要になります。


Raspberry Piの準備



image

次の記事でRaspbian JessieのインストールからWiFiの設定までまとめています。こちらの記事を参考にRaspberry Piの準備を行ってください。セルフパワーのUSBハブにWiFiドングルを接続しておくとRaspberry Piの動作が安定するようです。特に初期型のRaspberry Piは電源周りが弱いのでセルフパワーのUSBハブは必須です。

Raspbian Jessieの自動インストールとWiFi設定
http://arms22.blog91.fc2.com/blog-entry-595.html


Repetier-Serverのインストール

ダウンロードページからarmel版のURLを取得してください。armel版がRaspberry Pi向けのファイルです。

Download - Repetier-Server
http://www.repetier-server.com/download-repetier-server/

これより先の作業は ssh でログインして行います。※ホスト名"rpi"は適宜変更してください。
ssh pi@rpi.local

Repetier-Serverをダウンロードします。先ほど取得したURLを貼付けてください。
curl -o Repetier-Server-0.65.0-Linux.deb http://download.repetier.com/files/server/debian-armel/Repetier-Server-0.65.0-Linux.deb

Repetier-Serverをインストールします。
sudo dpkg -i Repetier-Server-0.65.0-Linux.deb

Repetier-Serverを起動します。この操作は動作確認用です。次回から電源オン時に自動的にRepetier-Serverが起動します。
/etc/init.d/RepetierServer start

ブラウザでRaspberry Piのポート3344にアクセスするとRepetier-Serverのダッシュボードが開きます。
http://rpi.local:3344/



3Dプリンターの追加

Repetier-Serverは複数プリンターの制御に対応しています。まず初めに使用する3Dプリンターを追加します。ダッシュボードの Add new Printer ボタンを押すと3Dプリンターの追加ウィザードが起動します。

Repetier-Server_設定ウィザード_step1
Step1では3Dプリンターの名前(atom)を設定します。3Dプリンターを識別する為の名前なので自由に付けます。

Repetier-Server_設定ウィザード_step2
Step2では使用しているFirmware(Repetier-Firmware)を選択し、シリアルポート(/dev/ttyAMA0)、シリアルポートのボーレート(250000)を設定します。Input Buffer Sizeはとりあえずデフォルトの63byteにしておきます。ここでウィザードは3Dプリンターに接続し様々な値を読み込もうとします。3DプリンターをRaspberry Piに接続し電源を入れおきましょう。

Repetier-Server_設定ウィザード_step3
Step3ではプリントベッドの形状(Rectangle)とXYZの最大・最小値を設定します。XYZの最大・最小値はFirmwareから自動取得します。

Repetier-Server_設定ウィザード_step4
Step4ではエクストルーダーの数(1)とフィラメント径(1.75mm)とヒーテッドベッドの有無(Yes)を設定します。

Repetier-Server_設定ウィザード_step5
最後のStep5ではクーリングファンの有無(Yes)とソフトウェアによる電源制御(Yes)、SDカードの読み込みに対応しているか(No)を設定します。

以上で3Dプリンターの追加作業は完了です。ダッシュボードに3Dプリンターが追加されていることが確認できると思います。2台目以降も同様の手順で追加できます。


G-Codeのアップロードとプリント

ダッシュボードから先ほど追加した3Dプリンターを選んでプリンターのページに移動します。

Repetier-Server_プリント中1

Upload G-Code ボタンを押してG-Codeを選択しアップロードします。アップロードが完了するとG-Codeが一覧に追加されます。G-Codeは3Dプリンター毎に管理されます。他の3Dプリンターでプリントすることはできません(たぶん)。

左端の青いボタンを押すとプリントが開始されます。プリント中は停止・一時停止の操作に加え、プリント速度と射出量の微調整が行えます。


参考URL

Repitier-Server Manual
http://www.repetier-server.com/manuals/0.65/index.html

Raspberry PiにOctoPrintを入れてWebブラウザから3Dプリンタを制御する
http://arms22.blog91.fc2.com/blog-entry-521.html


Raspberry Pi 2 Model B (1)
Raspberry Pi 2 Model B (1)
posted with amazlet at 15.11.08
Raspberry Pi
売り上げランキング: 1,610


BUFFALO Air Station NFINITI HighPower 11n/g/b USB用 無線子機 WLI-UC-GNHP
バッファロー (2009-10-01)
売り上げランキング: 13,227




ELECOM フェライトコア内蔵USB2.0ケーブル A-B 0.5m USB2-FS05
エレコム (2003-10-15)
売り上げランキング: 7,309

Raspbian Jessieの自動インストールとWiFi設定

Posted by arms22 on 2015年11月03日 4  0

Raspbianの最新バージョン「Raspbian Jessie」が公開されました。Raspbian Jessieの自動インストールからWiFi設定まで簡単にまとめました。

SDカードの準備


  1. SD Card Formatterを使ってフォーマットを行います。
  2. NOOBSをダウンロードします。
  3. NOOBSのzipファイルを展開しzipファイルの内容をSDカードにコピーします。
  4. キーボード・マウス操作なしでインストールを行うため、自動インストールの設定を行います。
    recovery.cmdline を開いて silentinstall を追加します。

    runinstaller quiet vt.cur_default=1 elevator=deadline

    runinstaller quiet vt.cur_default=1 elevator=deadline silentinstall

  5. os/Data_Partition ディレクトリを削除します。


インストール

SDカードをRaspberry Piに挿入し電源を入れます。NOOBS Liteを使う場合、有線ネットワークにも接続しておこう。30分程でインストールが完了し、自動的に再起動が行われます。HDMI端子にディスプレイを繋いでおくとインストールの状況が確認できます。


初期設定を行う

ここからは ssh で接続し設定を行います。Raspberry Piに有線ネットワークを接続し次のコマンドを実行します。

$ ssh pi@raspberrypi.local

avahi-daemon が設定済みなので raspberrypi.local でRaspberry Piにアクセスできます。初期パスワードは raspberry です。ログインできたら raspi-config を起動します。

# sudo raspi-config

次のように設定します。
  • Boot Options > Console
    GUIは不要なので Console で起動させます。
  • Advanced Options > Hostname > “rpi"
    ホスト名を短い名前に変えます。
  • Advanced Options > Memory Split > “16”
    GUIを止めたのでグラフィックメモリの割り当ても減らします。
  • Overclock > Modest 800MHz ARM, 250MHz core, 400MHz SDRAM, 0 overvolt
    少しだけクロックアップします、程々に。

設定を終えると自動的に再起動します。


WiFiの設定

WiFiドングルを接続した状態でRaspberry Piを起動し再度 ssh で接続します。ホスト名を変更した場合、接続先が変わるので注意してください。

$ ssh pi@rpi.local

今回は対話形式でWiFi設定が行える wpa_cli コマンドを使って設定を行います。※赤字が入力したコマンドです。SSID・PSKは適宜変更してください。

# wpa_cli
wpa_cli v2.3
Copyright (c) 2004-2014, Jouni Malinen and contributors
...
>
add_network
0
>
set_network 0 ssid "hogehogehoge"
OK
>
set_network 0 psk "xxxxxxxx"
OK
>
enable_network 0
OK
...
>
save_config
OK
>
quit

wlan0 の接続状況を確認します。IPアドレスが割り振られているか確認しましょう。

# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 10:6f:3f:ea:71:ce
inet addr:192.168.24.62 Bcast:192.168.24.255 Mask:255.255.255.0
inet6 addr: fe80::bb4e:2b3e:b1c3:ad51/64 Scope:Link
inet6 addr: 2001:a037:7187:0:c47e:858b:9a2b:302e/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3605 (3.5 KiB) TX bytes:8077 (7.8 KiB)

ついでに設定ファイルの中身も確認してみましょう。

# sudo cat /etc/wpa_supplicant/wpa_supplicant.conf 
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="hogehogehoge"
psk="xxxxxxxx"
}

続いてWiFiのパワーマネジメント機能をオフにします。Raspberry Piを長時間、起動したままにしているとWiFi接続が切れてしまうので接続が切れないように。利用するWiFiドングルによって設定方法が異なるようですが、両方設定しておけば問題ないでしょう(ぉ。

sudo sed /etc/network/interfaces -i -e '/wpa-conf \/etc\/wpa_supplicant\/wpa_supplicant.conf/i wireless-power off'

echo "options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1" | sudo tee /etc/modprobe.d/8192cu.conf

ついでにパッケージとカーネルも更新しておきます。

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update



参考記事


Raspberry Pi 2でRaspbian Jessieをセットアップする方法
http://karaage.hatenadiary.jp/entry/2015/10/20/073000

Raspberry Pi Raspbian Wheezy(2015-05-05)で最速Wi-Fiセットアップ
http://qiita.com/CLCL/items/5be3a7beda4e76c78205

ディスプレイなしでRaspberry Piのセットアップをするときの備忘録
http://hine.hatenablog.com/entry/2015/05/24/110812

Raspberry Pi 2でWiFiを使うAdd Star
http://d.hatena.ne.jp/embedded/20151018/p1


Raspberry Pi 2 Model B (1)
Raspberry Pi 2 Model B (1)
posted with amazlet at 15.11.03
Raspberry Pi
売り上げランキング: 756


BUFFALO Air Station NFINITI HighPower 11n/g/b USB用 無線子機 WLI-UC-GNHP
バッファロー (2009-10-01)
売り上げランキング: 11,665


ラズパイ焼損

Posted by arms22 on 2014年10月05日 0  0

ラズパイ燃焼

Raspberry pi(以下ラズパイ)の5V電源にプラスとマイナスを逆に接続してしまった為、ラズパイが火花を散らして焼損してしまいました。。オーディオジャックとUSBコネクタの間にあるタンタルコンデンサ(黒い四角い部品)にヒビが入っているのが見えます。もともと綺麗なオレンジ色だったのですが真っ黒焦げに。

今回、焼損までいたった原因と対策

  • プラスマイナスの逆接続
    何を勘違いしたのか電源のプラスとマイナスを逆につないだ。
    対策:指差し確認ぐらいしか思いつかん。
  • 電源のフューズをバイパスしていた
    WiFi接続を安定させる為に、GPIOコネクタから直接5Vを供給していた。
    対策:フューズ実装する。
  • フューズを実装しなかった
    対策:フューズ実装する。
  • 過大な電流源
    400WクラスのATX電源から直接5Vを接続していた。
    対策:必要十分な電流に絞る

気をつけようと思います。。

Raspberry Pi Model B+ (Plus)
Raspberry Pi Model B+ (Plus)
posted with amazlet at 14.10.05
raspberrypi.org
売り上げランキング: 709



プリント状況を音声で実況する3Dプリンター

Posted by arms22 on 2014年02月13日 6  0

IMGP8951

ずいぶんと間があいてしまいましたが、プリント状況を音声で実況する3Dプリンターの作り方をまとめました。今回の音声実況3Dプリンターでは音声の再生にRaspberry Pi向けの音声合成ソフト「AquesTalk Pi」を使用しています。

AquesTalk Piはアクエスト社のテキスト音声合成アプリです。所謂、ゆっくり声のヤツですね。個人で直接・間接を問わず営利を目的としない場合にのみ無償で使うことができます。




AquesTalk Piのインストール



下記URLから使用許諾をよく読んでからダウンロードしてください。
http://www.a-quest.com/products/aquestalkpi.html

Raspberry Piに直接ダウンロードしたい場合はwgetコマンドでゴニョゴニョ。。。
$ wget http://www.a-quest.com/download/package/aquestalkpi-20130827.tar.gz
ダウンロードが終わったらホームディレクトリ(~/)にコピーして解凍します。
$ tar zxvf aquestalkpi-20130827.tar.gz
$ cd aquestalkpi/


AquesTalk Piの使い方


まずは音声出力端子の設定から。オーディオ端子から出力させたい場合は次のコマンド。
$ amixer cset numid=3 1
HDMI端子から出力させたい場合は次のコマンド。
$ amixer cset numid=3 3
あと音量設定の設定も。
$ amixer set PCM 80%
基本的な使い方。喋らせたい文字列を引数に渡すと標準出力から音声=WAV形式が出力されます。パイプでaplayにWAVを食わせてやると音声が再生されます。
$ ./AquesTalkPi "こんにちわ世界、私はラズベリーパイ。" | aplay
$ ./AquesTalkPi -k "オワッタカ'ンワ,イ'ナメナ'イヨネ" | aplay


Octoprintのイベントをトリガーにしゃべらせる


OctoPrintには起動時やプリント開始時、プリント終了時、アップロード完了時などイベントを起点にコマンドを実行する機能があります。OctoPrintのコンフィグレーションファイル(~/.octoprint/config.ymal)にイベントと実行したいコマンドを列挙しておくと、イベントが発生したタイミングでコマンドが実行されます。
events:
systemCommandTrigger:
enabled: true
subscriptions:
- command: ~/.octoprint/scripts/startup.sh
event: Startup
- command: ~/.octoprint/scripts/print_started.sh
event: PrintStarted
- command: ~/.octoprint/scripts/print_done.rb
event: PrintDone
- command: ~/.octoprint/scripts/upload.sh %(data)s
event: Upload
- command: ~/.octoprint/scripts/zchange.sh %(currentZ)s
event: ZChange
OctoPrintが対応しているイベントの一覧は次のURLに。

Available Events - foosel/OctoPrint Wiki
https://github.com/foosel/OctoPrint/wiki/Available-Events

今回、僕が作成したイベント毎のスクリプトは次のURLからダウンロードできます。

arms22 / dot.octoprint
https://github.com/arms22/dot.octoprint


参考URL


AquesTalk Pi - Raspberry Pi用の音声合成
http://www.a-quest.com/products/aquestalkpi.html

AquesTalk Pi の使い方まとめ
http://blog-yama.a-quest.com/?eid=970157


Raspberry Piで遊ぼう! 改訂第2版
林 和孝
ラトルズ
売り上げランキング: 15,463


Raspberry Piでデジカメを作ろう!
ラトルズ (2013-08-01)
売り上げランキング: 2,320


Raspberry Pi Type B 512MB ケースセット (clear)
RS Components Ltd
売り上げランキング: 1,362



Raspberry Piと専用カメラモジュールで写真を付けてツイートする

Posted by arms22 on 2013年09月26日 0  0

IMGP8930

Raspberry Piに専用カメラモジュールを取り付けて、写真付きのツイートができたら便利だと思う。やってみた。Raspberry Piからツイートするにはtwコマンドを使う。twは@shokaiさんが作ったターミナルで動くシンプルだけど高機能なtwitterクライアントだ。twには写真をつけてツイートする機能はなかったけど、リクエストしたら速攻で機能追加してくれた。一生ついていくしかない。


twのインストール



twはrubyで作られているのでまずrubyをインストールする。twのインストールにrubyの開発パッケージも必要なので忘れずに入れておく。
$ sudo apt-get update
$ sudo apt-get install ruby rubygems ruby1.9.1-dev

twをインストールする。gemで簡単にインストールできる。少し時間がかかる。
$ sudo gem install tw

twのインストールが終わったらまず最初にtwitterの認証を行う。
$ tw
# 最初のtwコマンドの実行で認証用のURLが表示される
# URLをブラウザで開いてPIN番号をコピーする
# ターミナルに戻ってPIN番号を入力する

認証が終わったらとりあえずツイートしてみよう。
$ tw こんにちわ世界、私はラズベリーパイ。

うまくツイートできたら次はカメラのセットアップへ。


カメラモジュールのセットアップ


Raspi-configを立ち上げてカメラ機能を有効にする。再起動するとカメラが有効になる。カメラ機能を有効にするとグラフィックメモリが128MBに変更されるので256MBモデルのRaspberry piを使ってる人は注意。
$ sudo raspi-config
# 5 Enable Camera→Enable

静止画の撮影はraspistillコマンドで行う。twitterにアップできる画像サイズには制限(3MB)がかかっているので、画像サイズを小さくして撮影する。そのかわりJPEG品質を100(最大)に設定している。HDMI端子にテレビをつないでおくとプレビューが表示される。
$ raspistill -w 1024 -h 768 -q 100 -o capture.jpeg


写真付きでツイート


twの--fileオプションで撮影した画像を指定すると写真つきでツイートとしてくれる。
$ raspistill -w 1024 -h 768 -q 100 -o capture.jpeg
$ tw もういっちょテスト。 --file=capture.jpg --yes

こんな感じ。



3Dプリンターのプリントが終わったら写真を撮ってツイートすると、出先からでもプリントが終わったこと・失敗したこと・成功したことが分かって便利そうだ。


関連URL


橋本商会 >> ターミナルで使うtwitterクライアント作った
http://shokai.org/blog/archives/6513

橋本商会 >> Twのレシピ
http://shokai.org/blog/archives/6549

橋本商会 >> twで写真を付けてtweetできるようになった
http://shokai.org/blog/archives/8245

[コラム] 第5回『Raspberry Pi専用カメラモジュールで遊ぼう part 1』
http://blog.livedoor.jp/victory7com/archives/27752962.html

Raspberry Piカメラのセットアップ方法
http://www.designspark.com/jpn/blog/jpn-raspberry-pi-camera-module-setup

Raspberry Pi のカメラモジュールの使い方 (2013/07/26)
http://www.mztn.org/rpi/rpi23.html

raspistill manpage
http://techstorage.interlink.ne.jp/wp-content/uploads/2013/08/raspistill_man.txt




Raspberry Pi Type B 512MB
Raspberry Pi Type B 512MB
posted with amazlet at 13.09.25
RS Components Ltd
売り上げランキング: 405



Raspberry PiとOctoPrintの一時停止問題

Posted by arms22 on 2013年08月28日 1  0

IMGP8778

前回、Raspberry PiにOctoPrintを入れてWebブラウザから3Dプリンタを制御できるようにしました。しばらく順調に動作していましたが、プリント中に一時停止する問題が発生してしまいました。多い時には1回のプリントで十数回停止することも。。

とりあえず次のような対策を実施しましたが、まったく効果がありませんでした。

  • データアップロード後にsyncコマンド実行(SD書き込みによる遅延?)
  • グラフィックメモリを16MBに変更(メモリ不足?)
  • 不要なデーモンを停止(CPU負荷?)
  • tmpfsにプリントデータを配置(SD読み込み遅延?)

次にRaspberry Piの電源を強化することにしました(写真上)。秋月電子の5V2AのACアダプタの出力をRaspberry PiのGPIOの5V端子から直接供給しています。マイクロUSBの入力には1Aのポリフューズが入っているので、このポリフューズをバイパスさせています。Raspberry Piの電源は以前からトラブルが多かったので今回の件も、原因は電源ではないかと。

IMGP8781

僕のRaspberry Piは初期のモデルで、USBポートのV-BUSに140mAのポリフューズが入っているので、これもバイパスさせています。またVBusへの電源ラインはかなり細いらしいので、少し太めのワイヤで接続しています。

あとUSBケーブルにノイズがのって通信エラーになっている可能性もあったので、USBケーブルをフェライトコア付きの短いケーブルに変えました。pySerialにもパッチをあてて通信レート250000bpsで通信できるようにしました。

上記3点の対応で、プリント中に一時停止する問題は以前よりずっと発生しにくくなりました。けどまだ時々、極たまに一時停止することがあります。


関連URL


Raspberry PiにOctoPrintを入れてWebブラウザから3Dプリンタを制御する
http://arms22.blog91.fc2.com/blog-entry-521.html

Raspberry Pi で使用しないデーモンを停止する
http://www.pc-links.com/blog/raspberrypi/daemon/

Raspberry Pi でRAMディスクを使う
http://www.pc-links.com/blog/raspberrypi/ramdisk/

pySerialのパッチ
https://github.com/foosel/OctoPrint/issues/222



ELECOM フェライトコア内蔵USB2.0ケーブル A-B 0.5m USB2-FS05
エレコム (2003-10-15)
売り上げランキング: 3,254



BUFFALO Air Station NFINITI HighPower 11n/g/b USB用 無線子機 WLI-UC-GNHP
バッファロー (2009-10-01)
売り上げランキング: 649


Raspberry PiにOctoPrintを入れてWebブラウザから3Dプリンタを制御する

Posted by arms22 on 2013年08月04日 3  0

IMGP8704

Raspberry PiにOctoPrintを入れてWEBブラウザから3Dプリンタを操作できるようにしました。OctoPrintはホストコントローラーとよばれる3Dプリンタ用のソフトウェアで、制御コマンドを3Dプリンタに送る働きをします。

ホストコントローラーにはPrintrun、Repetier Host、Curaなどいくつか存在します。これらはパソコン上で動作するソフトウェアですが、OctoPrintはサーバサイドで動作するソフトウェアで、WEBブラウザを通してネットワーク越しに3Dプリンタを操作できるよう設計されています。

またOctoPrintはRaspberry Piなど組み込み向けのデバイスで動作するように開発されています。Raspberry Pi+OctoPrintがあれば既存の3Dプリンタに簡単にWiFi機能を追加できます。

IMGP8715

こんな感じでiPadからWEBブラウザを通して3Dプリンターを操作します。

以下にRaspberry Piの立ち上げからOctoPrintのインストールまでの手順をまとめました。Raspberry Piの立ち上げがすでに終わってる人は最後のOctoPrintのインストールだけ行えば動くと思うよ。


NOOBSを使ってRaspbianをインストール



久しぶりにRaspberry Piを動かすのでOSを入れ直すところから始めます。NOOBSという新しいインストラー形式のソフトウェアが今年の6月頃に公開されていたので、これを使ってRaspbianをインストールします。

まずSDアソシエーションが公開しているSD Formatterを使用してSDカードをフォーマットします。オプションの論理アドレス調整を「する」に変更し、上書きフォーマットを行います。

SD Formatter 4.0 for Mac Download - SD Association

次にNOOBSのzipファイルをダウンロードし解凍します。zipファイルの中身をすべてSDカードにコピーします。

New Out Of Box Software (Recommended)

コピーが終わったらRaspberry PiにSDカードを入れてキーボード、HDMIケーブルを接続し電源を入れます。そうすると次のような画面が表示されるのでRaspbianを選択します。10分ほどでインストールが完了します。


IMGP8660

Raspi-configで初期設定


インストールが完了すると自動的に再起動し、Raspi-configが立ち上がります。以下に変更した項目を列挙します。
  • Expand Filesystem
    SDカードの容量全体を使うようにする。OSのインストール作業中に自動的に行われるようになったので今回は不要です。
  • Enable Boot to Desktop
    Raspberry Piの起動後すぐにGUIを起動。あとでVNCサーバーを入れるので今回は無効にしています。
  • Internationalisation
    localeにen_us.UTF-8とja_jp.UTF8、ja_jp.EUC-JPを追加して、default system localをja_ja.UTF8に変更します。
  • Timezone
    Asia→Tokyoを選択。
  • Keyboard Layout
    Generic 105-key (Intl) PCを選択し、適当に日本語キーボードを選びます。
  • Advanced Options
    これ以降の作業は基本的にSSHで行うのでsshを有効にしておきます。あとTVに繋いだ時に画面一杯に使えるようにOverscanを無効にしておきます。
最後にFinishを選んで再起動します。

Raspi-configは次のコマンドで再度起動させることができます。
$ sudo raspi-config


初期設定の続き


ここからはssh経由で作業を行います。Raspberry PiのIPアドレスをifconfigで調べてMacからSSHで接続します。ユーザ名は pi、パスワードは raspberry です。
# ssh pi@192.168.111.103
ログインに成功したら取りあえずアップデートします。
$ sudo apt-get update
$ sudo apt-get upgrade
日本語フォントをインストールします。GUIを使わない場合はインストール不要です。
$ sudo apt-get install fonts-ipafont ttf-vlgothic xfonts-intl-japanese xfonts-intl-japanese-big
言語を日本語に設定します。システムのデフォルト言語を日本語したのでこの設定は不要かも。。
$ echo export LANG=ja_JP.UTF-8 >> .profile


WiFiの設定


/etc/network/interfaces を編集します。
$ sudo nano /etc/network/interfaces
iface wlan0 inet manual

iface wlan0 inet dhcp

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
次に /etc/wpa_supplicant/wpa_supplicant.conf を編集します。wpa_passphraseコマンドでSSIDとパスフレーズをwpa_supplicant.confに追記します。hogenetに接続先のSSID、11223344にパスワードを指定します。
$ sudo bash
# wpa_passphrase hogenet 11223344 >> /etc/wpa_supplicant/wpa_supplicant.conf
さらに幾つかの設定を追加します。
# nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
scan_ssid=1 #非公開ネットワークに接続するときは1
key_mgmt=WPA-PSK
proto=WPA2
pairwise=CCMP
group=CCMP
ssid="hogenet"
#psk="11223344"
psk=36a27d75d232205e4806fdbf745cd2351af30c43d53794dd14c2afe08d892e09
}
接続できるか確認します。
$ ifdown wlan0
$ ifup wlan0
$ ifconfig wlan0
wlan0 Link encap:イーサネット ハードウェアアドレス 10:6f:3f:ea:71:ce
inetアドレス:192.168.111.103 ブロードキャスト:192.168.111.255 マスク:255.255.255.0
...
正常にIPアドレスが取得できれば成功です。


ホスト名でリモート接続する


avahi-daemonをインストールします。
$ sudo apt-get install avahi-daemon
ホスト名をpiに変更します。piの方が短くて入力しやすいだけなので、デフォルトのraspberrypiのままでも構いません。
$ sudo nano /etc/hostname
raspberrypi

pi
ホスト名を変えたので /etc/hosts も変更します。
$ sudo nano /etc/hosts
127.0.1.1 raspberrypi

127.0.1.1 pi


OctoPrintのインストール


pythonとgitをインストールします。
$ sudo apt-get install python-pip python-dev git
OctoPrintをGitHubからダウンロードして、幾つかのPythonライブラリをインストールします。
$ cd ~
$ git clone https://github.com/foosel/OctoPrint.git
$ cd OctoPrint
$ sudo pip install -r requirements.txt
piユーザーでシリアルポートにアクセスできるように設定します。
$ sudo usermod -a -G tty pi
$ sudo usermod -a -G dialout pi
試しにOctoPrintを起動させます。
$ ./run
ブラウザを立ち上げて http://pi.local:5000 もしくは http://ラズパイのIPアドレス:5000 にアクセスするとOctoPrintの画面が表示されます。

raspi-octoprint

最後にRaspberry Piの起動時にOctoPrintを立ち上げるように設定しておきます。
$ sudo cp octoprint.init /etc/init.d/octoprint
$ sudo chmod 755 /etc/init.d/octoprint
$ sudo insserv octoprint


これですべての設定が完了しました。お疲れ様でした。

2013/8/4 追記
OctoPrintと3Dプリンターを接続する時のボーレートは115200以下に設定してください。pySerialが250000に対応していないみたい。ファームウェアのボーレートを変更するのを忘れないで。


2013/9/24 追記
pySerialにパッチを当てることで、3Dプリンターとの接続にボーレート250000を指定できるようになります。

https://github.com/foosel/OctoPrint/issues/222
https://groups.google.com/forum/#!topic/ultimaker/BNjPpoJpfrE
$ svn co http://pyserial.svn.sourceforge.net/svnroot/pyserial/trunk pyserial
$ cd trunk/
$ wget http://sourceforge.net/p/pyserial/patches/_discuss/thread/ed3fb0de/f4fd/attachment/pyserial.patch
$ patch -p0 < pyserial.patch
$ cd pyserial/
$ python setup.py install --user
$ python3 setup.py install --user



関連URL


Raspberry Pi を始める (NOOBSで)
http://pi-ras.blogspot.jp/2013/06/raspberry-pi-noobs.html

Raspberry Pi の初期設定
http://openrtm.org/openrtm/ja/node/266

Raspberry Piで遊ぼう [No.5:VNC接続をしよう] [Raspberry Pi]
http://assimane.blog.so-net.ne.jp/2013-03-27

RPi VNC server
http://moon-forest.com/category/raspberry-pi/page/2/

OctoPrint.org
http://octoprint.org/

Setup on a Raspberry Pi running Raspbian
https://github.com/foosel/OctoPrint/wiki/Setup-on-a-Raspberry-Pi-running-Raspbian

Raspberry Pi(ラズベリーパイ)届いたよ。
http://arms22.blog91.fc2.com/blog-entry-483.html

Raspberry Piで無線LANの反応が悪い時の対処法 | ものづくりエクスペリメント
http://denshikousaku.net/fix-sluggish-response-of-raspberry-pi-wifi-adaptor


Raspberry Pi 2 Model B (1)
Raspberry Pi 2 Model B (1)
posted with amazlet at 15.10.05
Raspberry Pi
売り上げランキング: 747



豆ガードとRaspberry Piケース

Posted by arms22 on 2013年07月27日 2  0

IMGP8665

3Dプリンタの製作を始めた頃からお願いされていた「豆ガード」ようやく作ることができました。

IMGP8669

コーヒーミルに装着して使います。コーヒー豆をガリガリ挽いていると、勢い良くコーヒー豆が飛び出してくるので、豆ガードで飛び出さないようにしました。

モデルはTinkerCADで作成しました。一応、モデルデータを公開しているので、作ってみたい方(いるのか?)はこちらからダウンロードしてください。

https://tinkercad.com/things/5YpBqmIofuO-coffee-beans-guard


Raspberry Piケース



IMGP8672

それと、またRaspberry PiをさわりだしたのでRaspberry Pi用のケースもプリントしました。データはThingiverseで見つけたものです。

Raspberry PI Case (RS Version)
http://www.thingiverse.com/thing:30646

IMGP8675

Raspberry Piをケースに収めるとこんな感じ。わりと良い。。

IMGP8677

けど、はめ合いがもひとつな感じ。。側面に小さな穴が2カ所空いているので、そこにピンかネジを入れて止める。

該当の記事は見つかりませんでした。