読者です 読者をやめる 読者になる 読者になる

時には立ち止まってみるのもいいよ

仕事の合間の息抜き&備忘録。最近息抜きと仕事の区別がついていない。

Raspberry Pi 3 の電源は本当に2.5A必要なのか?

 

前書き

結論から言ってしまうと、以下で書いているのは、RasPi3でもUSBには2.5Aも必要ないんじゃないか、という趣旨の記事です。が、当然使用環境などによって動作条件は変わってきますので、動作に問題がでたり故障したりしても補償できませんので自己責任でお願いします。

 

で、本題

Raspberry Pi 3が2月末に本国でリリースされてから、ようやく技適が通って日本国内でも販売が開始され、ボクのところにも先日実機が届きました。

 

で、本国リリース時からネット上で「電源容量は2.5Aを推奨」とか言っていたので、基本的にビビリな自分はあらかじめ

 

 

 こんなのを購入していたわけです。

 で実際に起動して測ってみると、

RasPi2もPi3も、消費電流は大して変わらんゾ?

という結果に。

具体的に言うと、有線LAN接続でBTも使わない状態で、

  • Raspbianを起動してGUIが立ち上がってる状態で5.1V/0.23~0.25Aくらい
  • ウインドウをグリグリ動かすと、Pi2で0.30~0.35, PI3でも最大0.40Aくらい
  • omxplayerでのFullHD H.264 MP4動画再生はどちらも0.30A以下。

てな感じでした。

これって、普通に1AのACでいけるんじゃないでしょうかね。。

 

ソースは?

2.5A必要!っていう話の元の記事ってたぶん↓これかなと。

www.raspberrypi.org

ここに書かれている文書を引用すると、

All of the connectors are in the same place and have the same functionality, and the board can still be run from a 5V micro-USB power adapter. This time round, we’re recommending a 2.5A adapter if you want to connect power-hungry USB devices to the Raspberry Pi.

の部分じゃないかと思うんですが、拙い英語力で理解した感じでは

USBに大消費電力のデバイスを差したい場合は2.5Aのアダプタを使うと良いよ

 

と言っているだけのような気が。

この記事のコメントで、Raspi公式のひと?(コメント欄にロゴが付いてる)の曰く、

There is only one recommended power adapter, the 2.5A Raspberry Pi power adapter. But the power consumption is based on 1A to the processor plus 0.3A to the WiFi plus 1.2A to the USB

These are peak values only but of course you can easily get close to those numbers playing software decoded video for example (youtube on chromium!)

だそうなので、まぁ確かに2.5Aを推奨はしていますが、普通に使う分には全然ヨユーじゃないのか、と思う次第です。

 

USBカメラでキャプチャしながらOpenCVで画像解析とか、そういうのだと影響あるかもしれませんね。

 

 

 

AndroidStudio 1.4 + JNI

AndroidStudio1.4でJNIをつかう方法の覚書。

1.3版を書いてる間に1.4がリリースされたのでその辺の記述も。

ってほとんど同じですけd。

 

元ネタはこちら→

Experimental Plugin User Guide - Android Tools Project Site

 

 

1. experimentalなプラグインが必要。

NDKをつかうためのプラグインはGradle2.5が必要なので、その辺も含めて設定をいろいろいじります。何かダウンロードしてインストールする、というわけではありません。

Gradle2.5 + NDK r10e + SDK Build Tools 19.0.0以上が必要です。

  • {PROJDIR}/gradle/wrapper/gradle-wrapper.propertiesファイルを編集して、distributionUrlをgradle-2.5に変更する
    変更後)
      distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-bin.zip
  • {PROJDIR}/build.gradleのクラスパスを変更する
    変更後)
      classpath 'com.android.tools.build:gradle-experimental:0.2.0'
  • {PROJDIR}/.idea/gradle.xmlにgradleHomeオプションがあれば、消す。
    変更前)
    <option name="gradleHome" value="C:\Program Files\Android\Android Studio\gradle\gradle-2.4" />
    ※これに気が付くのにえらい時間がかかった。。
2. Gradle Scripts の変更

元ネタサイトのまとめを適当に日本語化すると、こんな感じ。

  • プラグイン名を"com.android.model.application"に変更する
  • 設定は model {} で囲む
  • ほとんどのプロパティは = で記述する(以前はスペースのみ)
  • Collectionへの追加は += で記述する(proguardんとこの話)

が、いくつか限定条件があって、

  • buildTypes, productFlavors, signingConfigs は android{} ブロックの外に出す
  • android {}ブロックの中にネストされている項目には with キーワードをつける
  • プロパティ値として設定できるのは direct types のみ。
    ※ minSdkVersionとかproGuardFilesの話だと思います。
  • buildTypeやproductFlavorを作成するには create メソッドを使う必要がある。
    ただしrelease buildTypeのような既存のものは名前を指定するだけで使える。
  • dependencyのtestCompileコマンドは使えないようだ。
    ※ AndroidStudio1.4でやるとdependenciesにtestCompileが追加されますが、エラーで通りませんでした。よくわからんのでコメントアウト(^^; いいのか?

 

で、デフォルトのプロジェクトを書き換えたbuild.gradleがこちら。

apply plugin: 'com.android.model.application'

model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.0"

        defaultConfig.with {
            applicationId = "jp.poiuy56.project"
            minSdkVersion.apiLevel = 19
            targetSdkVersion.apiLevel = 23
            versionCode = 1
            versionName = "1.0"
        }
    }
    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles += file('proguard-rules.pro')
        }
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:design:23.0.1'
}

 

ここらで一度Gradleを同期してみて、ビルドが通るか確認します。

Gradle-2.5 が読まれていれば、 {PROJDIR}/.gradle/2.5 が出来上がってファイルが配置されてるはずです。

 

3. Gradle Scripts (NDK用の追加設定)
  • {PROJDIR}/local.propertiesにndk.dirを追加。
    SDKLocationで設定すると追加されます。
    ndk.dir=C\:\\android-ndk-r10e
    sdk.dir=C\:\\android-sdk-windows
  • {PROJDIR}/app/build.gradle に android.ndk ブロックを追加
    android.ndk {
    moduleName = "jni-sample"
    CFlags += "-UNDEBUG"
    ldLibs += ["android","log"]
    stl = "stlport_static"
    }
4. JNIソースを追加する
  • appから右クリックで new -> Folder -> JNI Folder でjniフォルダを作成
  • jniフォルダに .c とかを置けばOK

後は普通にJNIですね。nativeメソッドを含むjavaクラスを作って、javahでヘッダ生成、んで中身を実装してjniフォルダに配置すれば、うまくやってくれます←

 

JNIのモジュールを複数に分けたりフォルダを分けたりする方法がよくわからんので今後の課題です。

 

 

 

ソフト屋さんがblueninjaをさわってみてます

前回の続きです。

 

 

TOSHIBAのBSPが入手できました。

思ったよりは早かったですが、署名を送り返す(メールで)作業が面倒ですねぇ。。

わざとかもしれませんが。

 

さて、無事BSPを入手できるようにはなりましたので早速環境を整えましょう。

AppLite | 東芝 セミコンダクター&ストレージ社

ここからTZ1000のBSPを入手します。アカウント登録後ライセンス許諾に署名して送り返すと、BSPがダウンロードできるようになります。

が、

f:id:poiuy56:20150826085934p:plain

なぜかChromeでは1回目のサインインがはじかれます。パスワードはお忘れではないです。

もいっかいやると入れるんですけど。

 

で、ライセンス許諾云々が完了していると、BSPやドキュメント類のダウンロードページが開くようになります。

 

現在(2015/8/26)BlueNinja開発環境として必要なBSPのファイルは、

  • TZ1000 BSP non OS Version for MDK-ARM

ですが、東芝サイトでは最新版が更新されていますので、一つ古いバージョンを取得する必要があります。

f:id:poiuy56:20150826090741p:plain

 

余談ですが、最初「新しいほうがいいじゃね?」と思ってLatestVersionをダウンロードしたら、関数のI/Fが変わっててビルドが通りませんでしたorz 人間の業ですね(ちがう

 

ダウンロードしたZIPファイルの中にある、「TOSHIBA.TZ10xx_DFP.1.31.1.pack」を、Cerevoのスターターガイドにあるように配置してインストールスクリプト(.BAT)を実行すると、おおむね準備完了です。

f:id:poiuy56:20150826091710p:plain

インストールしたらC:\Cerevo\CDP-TZ01B\に一式ファイルがコピーされます。

 

start.shell.batを起動すると、必要な環境変数を設定してコマンドプロンプトが開きますが、このBATファイルは

  • MinGW / MSYS のPATHはすでに通っている
  • GitはC:\Program Files (x86)にインストールされている

のが前提になっていますので、必要に応じてstart_shell.batファイルを書き換えましょう。#って、こんな記事を読んでる人は気づくと思いますけど。。

 

ようやく、環境がでけたので、とりあえずはサンプルをビルドしてみます。

 

start_shell.batを起動後、gitからソースを入手→makeします。

C:\Cerevo\CDP-TZ01B> cd \

C:\> mkdir work

C:\work> git clone https://github.com/cerevo/BlueNinja_BLE_EXAMPLE

Cloning into 'BlueNinja_BLE_EXAMPLE'...
remote: Counting objects: 125, done.
remote: Total 125 (delta 0), reused 0 (delta 0), pack-reused 125 Receiving object
Receiving objects: 100% (125/125), 132.63 KiB | 0 bytes/s, done.
Resolving deltas: 100% (48/48), done.
Checking connectivity... done.

 

C:\work> cd BlueNinja_BLE_EXAMPLE

C:\work\BlueNinja_BLE_EXAMPLE> make

  なんかいっぱい出る

C:\Cerevo\CDP-TZ01B\tools\bin\arm-none-eabi-objcopy -O binary blueninja_ble_example.elf blueninja_ble_example.bin

C:\work\BlueNinja_BLE_EXAMPLE>

うまくいけば、blueninja_ble_example.elfと.binができあがりです。

 

 

 

 

ソフト屋さんがblueninjaをさわってみた

IoTブームの流れで、CEREVOさんから出たblueninjaってーのが気になったので買ってみました。紆余曲折あってちょっと届くのが遅れたけどまぁよくあること。

 

ニュース記事はここらへんとか。

pc.watch.impress.co.jp

 

で、開発環境の資料が見たかったんだけど、現物しか入ってないんです。しくしく。

  • Blueninja本体
  • ブレイクアウトボード
  • バッテリ(初回?限定オマケらしい)
  • ネジ
  • 保証書

保証書に「詳細な情報はオンラインドキュメントを参照」とのことで。

BlueNinja ドキュメント - Cerevo

 

うん。わからん。

ソフト屋さんにはよくわからん用語がいっぱい。

 

実はこのドキュメントはもうちょっと後で必要な話で、開発環境については「スターターガイド」ってのを見ないといけなかったのでした。

BlueNinja スターターガイド - Cerevo

 

ここに、開発環境のつくり方が丁寧に書いてあるので、それにしたがって実行します。

おおざっぱに段取りだけならべると、以下のような感じです。

  • USBで接続する
  • mbedドライバをインストール :USBシリアルで見えるようになる
  • MinGW(msys)をインストール :コンパイルに必要
  • Git for Windowsをインストール :ソースなどの入手に必要
  • BitbucketからBlueNinja BSP (Board Support Package)を入手
  • KeilからARM.CMSIS.3.20.4.packを入手
  • 東芝からTZ1000のBSP(TOSHIBA.TZ10xx_DFP.1.31.1.pack)を入手
  • インストール用BATを実行

 

が、しかし、、

 

東芝からのBSP入手がまだできていません。。

(8/25追記:入手できました)

スターターガイドには、ログインしたら自分でダウンロードできるような感じで書いてあるのですが、2015/08/21現在では東芝のサポート宛てにメールを投げて、ライセンス確認&サインが必要なんだそうです。

 

とりあえず、仕方がないのでメールを投げたところで、今日はここまで。。。

#きっと週末は返事が来ないだろうから、続きは来週かなぁ。。

 

→ つづきはこちら

Raspberry PI 2 + Windows10 IoT Core でアプリ開発

前回、RasPI2に Windows 10 IoT Coreをインストールして、なんじゃこりゃぁってなって、VS2015でアプリが作れるらしいぞ、ってなって、今回に至ります。

 

繰り返しになりますが、Windows10 IoTだけでは何もできないので、アプリを作ってインストールする必要があるわけです。で、VS2015の出番と。

 

VS2015のインストールは、まぁ適当にすればOK.(をぃ

 

まずは、プロジェクトの作成

Windowsユニバーサル」というのが、RasPI2で動くいわゆるマルチプラットフォーム用のプロジェクトです。とりあえず、C#で作成。

f:id:poiuy56:20150803204059p:plain

VS2015のインストール時にユニバーサルアプリの機能をインストールしていなかった場合は、ここで追加インストールするか選択肢が出てきて追加することができます。

 

フツーにプロジェクトを作成しますが、ここで気を付けないといけないのが2点。

  • プラットフォームの設定をARMにしておく
  • ターゲットをリモートにしておく。+認証は無しに設定。

前者は、思わず「ユニバーサルちゃうんかい!」と独りツッコミを入れたところです。

後者のリモートターゲットのIPアドレスはもちろんWindows10IoTCoreが動いているRasPI2のIPアドレスです。

f:id:poiuy56:20150803205140p:plain

また、設定しておくと後々都合がよさそうのが

  • パッケージ名

です。デフォルトではGUIDのような長ったらしい16進文字列なのですが、後でビルドしたパッケージを削除したり起動したりするのに名前を付けておくとわかりやすいです。

f:id:poiuy56:20150803210458p:plain

さぁ、ビルド&実行だ。

ん?プログラム書いてませんね。。

何かつくろうとおもったんですが、ストアアプリ書いたことが無くて、XAMLが分からんくてあきらめました←

ということで、スケルトンのままです。動くことが確認できればよろしい。

 

普通にビルドして、リモートデバッグで実行すると。。。

f:id:poiuy56:20150803211041j:plain

おー。うごいた。って面白くも何ともないですね。デフォルトのアプリが隠れちゃってます。

 

で、ここでハタと気が付くわけです。「これって、どうやってプロセス管理やらインストールやらするんだ??」

 

管理はPowerShell!なんだろうけど、Webでもいろいろできる。

先の疑問をGoogle先生に問いかけてみると、どうも開発PCからPowerShellでリモート接続してコンソールコマンドでごちゃごちゃやるのが正当らしいです。

が、PowerShellってどうも苦手。。で、実は今までずっとスルーしていた「Windows IoT Core Watcher」をいじってたら、

f:id:poiuy56:20150803212444p:plain

ネットワーク上のRasPI2が勝手に検出されていて、しかも右クリックすると "Web Browser Here" っていうメニューが。

『ひょっとしてブラウザで管理できるんじゃね?』

ってことでクリックすると、ブラウザに飛んでRaspi2の8080ポートへ接続しました。

ユーザー名とパスワードを聞かれるので、PowerShellでログインするときの設定でユーザ名="Administrator",パスワード="p@ssw0rd"を入れてみたら、ビンゴでした。

f:id:poiuy56:20150803213251p:plain

上の画面は"AppX Manager"となっていて、いわゆるパッケージ管理画面と思われます。先ほどVS2015の設定で「パッケージ名を設定しといた方が便利」っていってたところの設定ファイルが実は”Package.appxmanifest"っていう名前で、こことつながってるわけですね。

”Installed apps"のところに"TestApp1_1.0.0.0_arm_xxxx"っていうパッケージ名が見えていますが、このTestApp1がVS2015で設定した名前です。その後ろはバージョン番号とプラットフォーム名、あとは開発環境か開発者IDか、そんな感じでしょう。

 

AppX以外にも、プロセス一覧やデバイス一覧、今はまだ使えないWiFiBluetoothの設定画面もここにあります。興味のある方は8080ポートにつないで覗いてみてください。

 

でも、バッテン出すだけじゃぁねぇ。。。

RasPIのテストアプリといえば「Lチカ」ですが、限りなくソフト屋さんの自分は敢えてグラフィック周りを。っつーてもやっぱりスケルトンのみですが。

 

VS2015のプロジェクト新規作成で、C#ではなくてC++からWindowsユニバーサルアプリを選ぶと、「DirectXのアプリ」が作れたりします。

f:id:poiuy56:20150803214637p:plain

こいつをひな形にしてビルド&実行すると、プロジェクト作成画面のサムネ画像のような四面体がグリグリ回ってFPSが表示されます。RasPI2で!

RasPIでDirectX11とかが動くのって不思議な感じですね。

 

まぁ、でもしかし、こんな単純なCubeですが15FPSくらいです。遅いです。

raspbianのOpenGLデモに比べれば、ハエが止まりそうです。

 

Web管理からデバイスドライバの一覧っぽいのも見えるんですが、ディスプレイドライバが "Microsft Basic Display Driver" ってなっていて、どうもアクセラレーションは特に効いてなさそうな雰囲気です。

 

が、無線関係も含めてまだ改善はされていきそうな気配なので、今後に期待したいところです。

 

 

Raspberry PI 2 に Windows 10 をインストールするのだ。(正式版)

まず初めに言っておきましょう。

 

Raspberry PI 2 にインストールできるのは、

Windows 10 IoT Core

であって、普通のWindows 10ではありません!!

 

インストールするまでよくわかってなかったので、とりあえず先に言っといたほうがいいかなと。

 

何が違うんや、というと、

Windows 10 IoT Coreは、それ単体ではなんにもできません!

ということで、全然違います。IEなんてありません。というかアプリは何も入っていません。動作環境というかプラットフォームがWindows(みたいなの)なだけです。

 

前置きが長くなりましたが、インストール手順を。

 

インストールするときには普通のWindowsが必要。10じゃなくても可

実はInsiderPreviewのときとかは、RaspberryPI2の起動ディスクを作るためにWindows10が必要だったのですが、これはSDカードに書き込むコマンドがWindows10にしか入っていなかったためです。

 

Windows10の正式リリースと同時に、RaspberryPI用のツールも更新されて、SDカードへの書き込みツールが同梱されるようになりましたので、書き込み側はWindows8.1でも可能です。(7では試してません)

 

RaspberryPIの起動SDへイメージを書き込むには、

Windows IoT - Setup your Raspberry Pi 2

からWindows 10 IoT Core toolsをダウンロードしてインストールします。

MSDNサブスクリプションからもDLできるようです。

 

ISOファイルがダウンロードできますが、中身はアプリのセットアップが1本だけですので、それを実行します。

このツールは、VisualStudio2015で作ったRasPI2用のアプリをデバッグするのにも必要になるものです。

 

インストールが済んだら、「Windows IoT Image Helper」というツールを起動します。

f:id:poiuy56:20150730200619p:plain

実行すると、SDカードのデバイスと、書き込むイメージファイルを選択するGUIが出てきます。

f:id:poiuy56:20150730200718p:plain

SDカードは8GB以上のものが必要です。

イメージファイルは、"flash.ffu"というファイルがツールをインストールしたときにProgram Files下にコピーされていますので、それを指定します。

あとは、「Flash」ボタンを押せばコマンドプロンプトが開いて書き込みが始まります。数分経つと終了です。特に何のメッセージも出ません!漢らしい。

 

RasPI2で実行

起動中。。

f:id:poiuy56:20150730195450j:plain

 

起動したらさぞもっさりしたWindows10のスタートメニューが出てくるんだろうと思ってwktkしてたら、

f:id:poiuy56:20150730195759j:plain

なんかボクの知ってるWindowsじゃない、感。

で、セットアップは言語選択のみで「Next」。

f:id:poiuy56:20150730195836j:plain

どうやらこれが立ち上がった状態らしい。。

 

まぁ結局のところは冒頭に書いた通りで、写真の「デバイス情報」のほかには

基本設定は言語選択のみ。Wi-Fiってのがちょっと気になったんですが手持ちのUSB Wi-Fiモジュールはどれも認識しませんでした。。。有線LANは使えるようで、「デバイス情報」からDHCPで割り当てられたIPアドレスが取得できていました。

 

チュートリアルは、これ自体がVisualStudio 2015 でビルドされたアプリケーションのようで、ソースも取得できるようです。

 

が、開発環境にWindows10とVisualStudio 2015 が必要なんですよね。。敷居が高いなぁと思うのはボクだけでしょうか。。

 # 追記:開発用OSはWindows8.1でいけました。

 

また時間ができたらアプリの一つも書いてみたいところです。

Raspberry PI2でPCゲームをリモートプレイ その2

 

前回、Gamepadについて何も書かなかった、というか、H.264の映像配信が見られたところで満足して実際にゲームをしてなかったので、続きを。

 

やろうとしてるのはFF14なのでまぁキーボードとマウスでもできる、っちゃぁできるんだが、ゲームはやっぱりコントローラでやりたい、というのが個人的な心情である。

で、moonlightでUSBゲームパッドを使う方法について、まとめ。

 

使用したコントローラはLogicool Gamepad F310 というやつで、まぁヨドバシあたりで安価で購入できるやつだ。これをRaspberryPIにつなぐと、あっさり認識はする。

$ lsusb

Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 046d:c21d Logitech, Inc. F310 Gamepad [XInput Mode]
Bus 001 Device 005: ID 099a:7202 Zippy Technology Corp.

4番目のやつですな。/dev/inputを見てみると、event0, event1, event2と3つ出来上がっている。。キーボードとマウスと、Gamepadなのだが、どれがどれに該当するのか確認する方法がよくわからん。。

で、どうせキャラクターデバイスだからcatしてGamepadいじればなんか出るんじゃないの?と思ったら、そのとおりでした。

$ cat /dev/input/event0

どうやらevent0がパッドでevent1がキーボード、event2がマウスらしい。

が、これって認識した順番のような気がするのであまりあてにならんなぁ。。ちゃんと一意に確認する方法だれかおしえてください(他力本願)

 

とりあえずGamepadがちゃんと入力できそうなのは分かったので、パッドのボタンマッピングを設定する必要がある。moonlightでactionにmapを指定すると、マッピングファイルを出力することができる。言われたボタンを押す(倒す)とデバイスのイベントコードをファイルに書き出す仕組みのようだ。

$ moonlight map f310.map

Move Left Stick Right
Move Left Stick Up
Press Left Stick Button
Move Right Stick Right
Move Right Stick Up
Press Right Stick Button
Press D-Pad Right
Press D-Pad Down
Press Button X (1)
Press Button A (2)
Press Button B (3)
Press Button Y (4)
Press Back Button
Press Start Button
Press Special Button
Press Left Trigger
Press Right Trigger
Press Left Bumper
Press Right Bumper

 Playstation系のパッドに慣れているので「Left Triggerってなんや?」ってなったけど、パッドを見たら「LT」ってかいてたのですぐわかった。

コマンドの最後に指定したf310.mapが、出力されたmapファイル。これをstreamで指定すればOKだ。

カレントディレクトリに、前回と同様認証用の鍵ファイルなどを置いておくことを忘れずに。。

$ ls

client.p12  client.pem  f310.map  key.pem  uniqueid.dat

$ moonlight stream -1080 -30fps -app "Final Fantasy XIV: A Realm Reborn" -mapping f310.map 192.168.0.5

 

f:id:poiuy56:20150605001929j:plain

こんな感じ~。左のモニターがPCで右がRaspberryPIだす。

モニターを並べるとさすがにちょっと遅延があるのがわかるが、実際に操作してる限りではPS4/VITAのリモートプレイより快適な気がする。

 

ではでは~

 

 

LOGICOOL ゲームパッド F310r

LOGICOOL ゲームパッド F310r

 

 

 

Raspberry Pi2 Model B ボード&ケースセット (Standard, Clear)