Friday, March 11, 2016

How to install Scikit-image for Python

Phythonだけをインストールした状態でscikit-imageをインストールしようとしたら、かなり苦労したので、メモとして残しておきます。

必要なものは以下の通りです。

  • pip (sudo yum install python-pip)
  • numpy (pip install numpy)
  • cython (pip install cython)


それから、以下のコマンドでscikit-imageをインストールします
  • easy_install -U scikit-image
因みに、pythonに登録されているパッケージの一覧は、https://pypi.python.org/pypi?%3Aaction=browseで見られます。

Wednesday, March 2, 2016

Enjoy Raspberry Pi 2 ラズベリーパイ B+を楽しもう!

約4000円の小型コンピューターでNASAにハッキング」と言うニュースにも登場するこの小さいコンピューターは、実に魅力満点の商品です。2019年6月現在は、Raspberry Pi 4 Model Bが発売されて、60fpsの4K動画に対応し、OpenGL ES 3.x系をサポートし、DDR4 SDRAMは最大4GBまであります。
Raspberry Pi 2 Model Bの箱
◆主な仕様
・SoC:Broadcom BCM2835 700MHz ARM1176JZFS
・GPU:Broadcom VideoCore IV 250MHz
・RAM:512MB SDRAM
・ストレージ:MicroSDカードスロット
・ネットワーク:10/100Mbps Ethernet (RJ45)
・ビデオ出力:HDMI、Composite 3.5mm 4極ジャック
・オーディオ出力:ステレオ 3.5mm 4極ジャック、HDMI
・USBポート:USB 2.0×4
・GPIO:40(2×20)ピン(UART,SPIを含む)
・電源:DC5V(2A)、給電はmicroUSBから
・サイズと重さ:85×56×17mm、45g
・サポートOS:Debian、Fedora,、Arch Linux

使い方と各種リソース

ラズベリーパイからの直接ダウンロードはこちらです。インストールするOSでRaspbianを選択する。

 というか、その前に、厳密にやれば、SD Association’s websiteからSD Formater 4.0をダウンロードし、MicroSD(推奨は8GB)をフォーマットすることです。それから、Sourceforge Project pageからWin32DiskImagerというツールをダウンロードして、インストールしたい(この場合Raspbian)のイメージをSDカードに書き込みます。

 因みに、RaspberryのHPからダウンロードした*.imgファイルをそのままSDカードにコピーするだけでいいと勘違いする人もたまにいます(汗)。

 DACを楽しむならば、 Volumio 1.55HiFiBerryRaspyFiIrBerryDAC(PCM5102A使用、ハイレゾ対応)、384kHz/32Bit PCM5102A DAC, I2S input, Ultra Low Noise Regulator等を利用できます。

 特にRaspberry Pi model A+/B+ 用 DAC カードはRaspberry Pi に直接接続可能なハイレゾ DAC カードで、ハイエンドのポータブルオーディオ機器にも採用されている 384kHz/32bit をサポートする Burr-Brown の PCM5102A を採用しています。

写真を楽しみたい場合、以下の商品は利用できます。(RS-onlineからも購入できる)
 ・Raspberry Pi Video Module Raspberry Pi Camera Board
 Omnivision 5647センサ、焦点固定モジュールに内蔵
   5メガピクセルセンサ
   内蔵IRフィルタ
   静止画像の解像度: 2592 x 1944
   最大動画解像度: 1080 p
   最大フレームレート: 30 fps
   サイズ: 20 x 25 x 10 mm
   フラットリボンケーブルによるRaspberry Piコンピュータボード上の
     15ピンMIPIカメラシリアルインターフェイス(CSI)コネクタS5への接続
  類似商品は、アマゾンのラズベリーパイ カメラモジュール Camera Module for Raspberry Pi
    (Raspberry製で、アマゾンで販売)
 ・Raspberry Pi 用 赤外線カメラモジュール Pi NoIR
   赤外線画像を撮るには、これしかないでしょう
 右の写真はOV5647カメラモジュールをケース付きのラズベリパイに接続したときの様子です。カメラをEnableしたので、LEDが点灯しています。画像の書き込みは沢山行われるし、システムの容量も限られているので、USBフラッシュメモリを差して写真専用にしています。

 記事、第6回『Raspberry Pi専用カメラモジュールで遊ぼう part 2』は使い方や組み立て方などの参考になります。

 これはRaspberry+カメラの応用版です:Raspberry Piと安めのウェブカメラで監視カメラを作る。何か動きがあったら画像保存もする

 当然引き出しに眠っているWebカメラもちゃんと使える可能性は高いですよ!「Raspberry Piと安めのウェブカメラで監視カメラを作る。何か動きがあったら画像保存もする」は使用例を紹介しています。motionというプロ部ラムを利用します。

 raspistill(raspberry pi camera専用?)やfswebcam、guvcview(手元のWebカメラではエラーになった)等のコマンドでインタバル撮影(微速撮影)したものを以下のコマンドでビデオファイルに合成できます。「Raspberry Piカメラによる微速撮影」は参考になります。

 まず、raspistillコマンド(raspberry pi用カメラで、カメラポートに接続される)で、指定間隔と時間で写真を撮りましょう。screenコマンドは、バーチャルコンソールを作り、モニターやキーボードなどを外してもコマンドをバックグランドで実行し続けてくれます。(Ctrl+aそれからdで、あるscreenのセッションから抜ける。Ctrl+dでは完全に抜ける)
$screen
$raspistill -o a%04d.jpg -t 21600000 -tl 30000
その次、以下のコマンドでビデオに合成します。
$ls *.jpg > stills.txt
$mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o tlcam.avi -mf type=jpeg:fps=24 mf://@stills.txt
因みに、fswebcamの場合、「sudo fswebcam filename.jpg」で一枚撮影できますが、cronに以下の内容のコマンド(takepic.shとする)を追加すれば、lapse画像を撮れます(pi で遊んでみる (Webカメラ))。
#!/bin/sh
# ファイル名は時刻
filename=`date +%H%M.jpg`
/usr/bin/fswebcam -c /home/pi/etc/fswebcam.conf /run/shm/${filename}
それから、crontabに以下の行を追加すればいいです。
# 60分毎に撮影
0 * * * * /home/pi/bin/takepic.sh

接続してある(ウェブのみ?)カメラが提供している制御機能を調べるには、以下のコマンドを使います。
        $uvcdynctrl -d /dev/video1 -c

 ビデオのストリーミングにはmjpg_streamerというプログラムを使うことになります。
また、CAMERA BOARD AVAILABLE FOR SALE!には詳細なステップを紹介されています。

 Raspberry Pi で無線ルータでは、手持ちのRaspberry Piを使って、無線ルータを構築できてしまいます。

 FlashAirを使ったアプリケーションはこちらをご参照ください。

 Raspberry PiでMinecraft!では、もともと有料ゲームであるMinecraftを無料のRaspberry Pi版の「Minecraft Pi Edition」(ダウンロード)で構築できます。

 『Raspberry Piで家電をリモートコントロールしよう』:Raspberry PiのGPIOポートに電子機器を接続し、ネットワーク経由で様々な機器をコントロールする応用です。

 しゃべらせる(TTS)には、AquesTalk Piを使います。

  • Piのオーバークロック
  • クリスマス用電飾と音楽の同期
  • 湿度と温度センサー
  • 天気ステーション
  • デジタルフォトフレーム
  • ゲームデバイス
  • モバイル・ロボット
  • スーパー・コンピューター
  • ホームオートメーション・システム
  • デジタルカメラ
  • タッチスクリーン・タブレット
  • 固定電話
 小型コンピューター【Raspberry Pi(ラズベリーパイ)】がけっこう万能!も大変参考になりますよ。

 内蔵のハードウエアだけで、インターネットラジオを楽しみたい場合、mpc、pmd、alsaをダウンロードしてください。コマンドは、"sudo apt-get install mpd mpc alsa"です。後は、お呪いの"sudo amixer cset numid=3 1"を叩いて、"mpc add http://lazygit.no-ip.inf:5560/"でインターネットラジオのアドレスをどんどん登録して、例えば"mpc play 2"で2番目のアドレスを聞くことができます。詳細はInternet Radio (with some Raspberry Pi)をご参照ください。

 shoutcastのラジオ番組のアドレスはhttp://www.shoutcast.com/から入手できます。

 同じインターネットラジオの話ですが、BBCのファンであれば、BBC STREAMING RADIO SCRIPT FOR MPDは参考になります。mpdのために、BBCのストリーミングの最新アドレスを更新してくれる方法です。

 ところで、昔「 mplayer -playlist http://www.bbc.co.uk/worldservice/meta/tx/nb/live_infent_au_nb.asx」のようなコマンドで、BBCを聞けましたが、今はダメになりました。同様に、以下のアドレスもダメになりました。
    mplayer -playlist http://www.bbc.co.uk/radio/listen/live/r1.asx

 面白いことに、BASH SCRIPT FOR LISTENING TO ONLINE BBC RADIO STATIONS USING MPLAYER AND LINUXで(魚拓キャッシュ)紹介されたアドレスにある、national(イギリス国内)のアドレスはまだ生きています。

 音楽を聴くなら、mplayerのお世話になります。

 残念ながら、Raspberry版のAdobe Flashがないそうです。そのためYoutubeを見るにも大変なことをしなければいけません。

 達人となると、タブレットまで作り上げてしまいました!「私がどのようにしてRaspberry Piタブレットを作ったか」はその詳細です。

 独立したコンピュータとして使いたいならば、「Raspberry Pi」にモニタをつないでみるを参照してください。

VNC ViewerでRaspberryを使う!
さらに、vnc(virtual network computing)を使えば、タップレットや、スマフォン、PC等からも完全に操作できるようになりますよ。やり方は、まずtightvncserver(使い方は[13]を参照)をインストールして、tightvncserveコマンドで起動します。初回の起動時でパスワードを設定します。xwindowを起動しておく必要もあるので、startxコマンドを実行します。それから、PCやタップレットやスマフォンに例えばultralvnc viewerをインストールします。それで、タップレットやスマフォン等はRaspberryのディスプレイと入力デバイスになります!PCなら、VNC Viewerはお勧めです。
 この一連の作業を自動的に(つまり必要な時だけ)行うには、/etc/inetd.confに以下の行を追加する必要があります。
    startx 5901/tcp
    tightvncserver 5901/tcp
 VNCのパスワードを変更するには、vncpasswdを使います。
 VNCの起動時自動スタートについて、最後の参考リンク[14]を参照してください。
起動時にVNCのスタートに、「vncserver: Wrong type or access mode of /usr/home/Lorenzo/.vnc.」と言われるときに、/home/pi/.Xauthorityの属性は755ではないからの可能性もありますよ。

 大容量ディスクを使いたい場合、外付けハードディスクはベストチョイスでしょう。「Raspberry Piでファイルサーバ、Part2 外付けハードディスクの導入編」はいい参考になります。NTFSフォーマットの場合ntfs-3g、exFATの場合exfat-fuseをそれぞれインストールする必要があります。
 因みに、手持ちのSanDiskの32GUSBメモリを差し込んたら、システムは自動的に/media/BBC60607C605C71Aとしてマウントしてくれました。

 USBメモリを差し込むと、自動的に認識してくれます。その所在はlsusbで分かります。認識された状態で、「mount -t vfat /dev/sda1 /mnt/extsd」というコマンドで、FAT32フォーマットのディスクを/mnt/extsdというディレクトリにマウントできます。いつもそう使うならば、/etc/fsatに以下の行を追加して、「sudo reboot」で再起動すればよいです。
  /dev/sda1  /mnt/extsd           vfat    defaults,rw,uid=pi,gid=pi,noatime  0       0
 実験したところ、Fat32フォーマットで、ファイルタイプをvfatにすると一番スムーズに行く感じです。

 OpenCVを楽しむために、以下の通りインストールすればよいです。
    $ sudo apt-get install libopencv-dev
    $ sudo apt-get install python-opencv
 基本中の基本だが、opencvを使う時に以下のエラーメッセージ出たら、ファイル名のパスは正しくないか、チャンネル数はあっていないだけです。
Python-OpenCV cv2 OpenCV Error: Assertion failed (scn == 3 || scn == 4) in unknown function, file ..\..\..\modules\imgproc\src\color.cpp

注意点

1.Raspberry Pi 2 にカメラのフラッシュを当てるとクラッシュするという事実が発覚されています(Why is the PI2 camera-shy ?)。
2.RaspberryはMicroSDをディスク側に使うので、頻繁の書き込みには弱いです。どうしても沢山の書き込みを繰り返す必要がある場合、ネットワーク上にあるディスクを使うか、
3.Raspbianの例ですと、最初(デフォルト)のディスク使用量はなんと2.9GB位です!最初に立ち上がる時に以下の画面(raspi-configコマンドでも入れる)の「1 Expand Filesystem」を選べば、自動的に使用中のMicroSDの最大容量を使うようになる。
4.無線LAN子機(USB版WiFi子機)の選択
デフォルトではELECOM WDC-150SU2MBKは全く認識されないこと!参考リンクの12では認識させる方法を紹介しています。しかし、いざ試してみたら、以下のエラーで失敗しました。
WARNING: "_raw_spin_unlock" [/usr/src/rtl8188eu/8188eu.ko] undefined!
WARNING: "_raw_spin_lock_bh" [/usr/src/rtl8188eu/8188eu.ko] undefined!
WARNING: "del_timer_sync" [/usr/src/rtl8188eu/8188eu.ko] undefined!
WARNING: "_raw_spin_unlock_irqrestore" [/usr/src/rtl8188eu/8188eu.ko] undefined!
WARNING: "device_init_wakeup" [/usr/src/rtl8188eu/8188eu.ko] undefined!
WARNING: "_raw_spin_unlock_bh" [/usr/src/rtl8188eu/8188eu.ko] undefined!
WARNING: "_raw_spin_lock" [/usr/src/rtl8188eu/8188eu.ko] undefined!
WARNING: "_raw_spin_lock_irqsave" [/usr/src/rtl8188eu/8188eu.ko] undefined!
make[1]: Leaving directory '/usr/src/raspberrypi-linux-11f2a1f'
さらに調べていくと、Raspberry pi 2 + WDC-150SU2MWH=動いた!という記事があり、どうやらupdateとupgradeをすれば、WDC-150SU2MWHなら動くようになるらしいです。しかし、同じように「sudo apt-get update」と「sudo apt-get upgrade」(2014年2月25日現在)を実行して、rebootとしても、やはりWDC-150SU2MBKを認識してくれませんでした。うむ。。。MBKはブラックで、MWHはホワイトで、色違いだけのはずですけどね。
 仕方がないので、実績のあるBUFFALO WLI-UC-GNMをまた買ってきました。いざさしてみると、すぐさま認識されて、WiFi設定メニューからも見えて、さっそくWiFiルーターに繋がりました!

問題と解決策

1.古いRaspberry Piならば、Raspberry Pi - SDカードを差しても認識しない。自分はこれで解決しましたは起動しない問題の参考になりかもしれません。
2.mplayerを使う時に以下のエラーになったら、 「~/.mplayer/config」に「afm=mp3lib」を追加すればとりあえず解決できます。
    Requested audio codec family [mpg123] (afm=mpg123) not available.
    Enable it at compilation.

その他

カーネルのバージョンを変えるには、以下のコマンドを使います。
        $sudo rpi-update 6413da9f74871b239c5bd27d7edf90a8afeab363
 ここで6413da9f74871b239c5bd27d7edf90a8afeab363は"commit hashes"であり、https://github.com/Hexxeh/rpi-firmware/commits/masterから見つけられます。
もっと電子工作をしたいならば、aitendo秋月電子通商csunなどでオンラインで色々な部品を買えます。

カーネルバージョンの確認は、「uname -a」を使うか、「/proc/version」の中身を見るかです。元となったdebianのバージョンは「/etc/debian_version」にあります。

Pi 2 ラズベリーパイ B+用スケルトンケースを付けると格好いいですよ!
Raspberry Pi ラズベリー・パイ 超小型パソコン MODEL B (PLUS) 専用ケ-ス Case for Raspberry Pi model B+(Clear) ¥ 1,300(アマゾン価格)

 ちなみに、2015年3月1日前後、つにRaspberry Pi 3が発売されました![15][16]
 CPUに1.2GHz クアッドコアの64bit CPU・ARM Cortex-A53(速度はRaspberry Pi 2の5倍)を採用し、802.11n Wi-FiとBluetooth 4.1(BLE対応)がオンボードで搭載されます。但し、消費電力もその分増え、2.5Aの電源が必要になります。

参考関連リンク

  1. ラズベリーパイと電子工作:Raspberry PiでSC1602とSC2004を制御する、Raspberry PiでRHT03を制御するなどの工作例。ソースコード付き
  2. Raspberry Pi 電子工作:サーボモーターを動かす、圧電スピーカーで音階を奏でる、部屋の明るさを取得するフォトトランジスター編、Raspberry Piをメディアサーバーに変身させる等々、面白い工作例沢山。ソースコード付き。
  3. RASPBERRY PIで自動監視システム
  4. RCタンク を作る ( 楽しい工作シリーズ + Raspberry Pi + Wi-Fi + Webブラウザ )
  5. Raspberry Pi 応用編(こじ研):キャラクタ液晶ディスプレー( SD1602HULB)の活用、SPI による ADC (Analog-Digital Converter) の接続、(超小型)有機 EL ディスプレーの接続、カラー液晶ディスプレーの接続等の実例。ソースコード付き。
  6. RaspberryPiでfluentdを立ち上げる。fluentdはさまざまなログの収集手段を提供するアーキテクチャ
  7. Raspberry Pi のクロス開発環境構築
  8. Raspberry Pi | Raspberry piとArduinoの工作室:温度センサーIC LM19を使う、Raspberry piにshut downボタンを付ける、動体検出にPIRセンサーを、Raspberry piの日本語化等は大変参考になる
  9. raspberry pi で認識しないUSBタイプの無線LAN子機 wli-uc-gn を簡単に使う方法
  10. Raspberry Piの設定【有線LAN(イーサネット)・無線LAN(WiFi)設定】
  11. Raspberry Piでwifi接続
  12. Raspberry Pi B+ モデルで無線LANアダプタ(Elecom WDC-150SU2M)を利用する
  13. パソコンの遠隔操作 (Ultr@VNC) 
  14. Raspberry Piをスッキリさせる その2(VNCサーバ自動起動)
  15. 新CPU搭載のRaspberry Pi新モデル「Raspberry Pi 3 Model B」が登場
  16. RASPBERRY PI 3 ON SALE NOW AT $35
  17. 新「Raspberry Pi 4」が4Kサポート&CPU高速化など大幅にスペックアップして登場