Translate

ページ

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

2016年3月11日金曜日

LabTool を Raspberry Pi2B の Raspbian Jessie上でコンパイルする

 簡易オシロLabToolを時々使っていますが、せっかくRasPi2に綺麗なモニタもつながったので、PC無しで使えると便利(?)と考えました。

ところが、ネットで調べるとゲーマニウムさん曰く、最新版のRaspbian Jessie 4.1をはじめ、Raspbian Wheezy 3.18以降動かないとのこと。

しかし、よく読むとバイナリで配布しているものを試したということ。LabToolはソースも配布していますので、手順を読んでコンパイルしたところ動くものが出来たようです。



 以下に手順をまとめます。と言っても、ほとんどオリジナルの手順をなぞっただけですが...



    バイナリ配布版の確認

    • バイナリ配布版(2014-04-28版)を使用したところ、LabToolアプリ自体は起動するのですが、LabToolをUSBポートに差し込んでもアプリ側で認識されません。確かに動作しません。
      • その後、バイナリ配布版の動かない原因はファームウェア操作用のツールの実行権限が落ちていることであるこちが分かりました。(こちら参照)というわけで、以下は本当に趣味&勉強用となってしまいました…
    • なお、標準ではRasPiのUSBバスパワー供給能力は不足しますので、電源アダプター付のUSBハブ経由でLabToolをつないでいます。


    準備するもの

    • Raspbian Jessie 4.1 のインストールされたRaspberry Pi
    Raspbery Pi 2Bを使いました。(初代のモデルA以外は512MB以上積んでいるので使用可能だと思います。)
    あらかじめsudo apt-get update : sudo apt-get upgrade して最新版にしています。
    8GB以上のmicroSD/SDHCが必要です。
    sudo raspi-configコマンドの Expand Filesystem を行って、カード全体をRaspberry Piで使える状態にする必要があります。 
     インターネットへアクセスできる環境が必要です。
    言語環境はデフォルトのen_GB.UTF-8としました。(特に必須ではありませんが、参考にした手順が英語なので、合わせて作業しました。)
    • 1024x768以上の表示環境(モニタ又はX-Window server)
     コンパイル時に統合開発環境Qt Creatorを使います。XGA以上の解像度が無いと画面に収まりません。(設定でどうにかなるのかもしれませんが、Qtで開発環境を整備することが目的では無いので、深追いはしません。)
     Qt CreatorはGUI環境となりますので、対応したキーボードと対応したポインティングデバイス(マウス、タッチパッド)が必要です。
    • 電源アダプター付のUSBハブ
    標準ではRasPiのUSBバスパワー供給能力は不足しますので、電源アダプター付のUSBハブ経由でLabToolを接続しています。(config.txtにバスパワー電流増強のおまじないを書けば不要に出来る場合もあるようです。)


    参考にした手順


    LabToolアプリビルド完了までの記録

    • コンパイルに必要な開発環境関係パッケージをインストール
      (所要時間20分ほど)
    $ sudo apt-get update
    $ sudo apt-get install git libudev-dev libtool automake qt-sdk
    • libusbx 1.0.17をコンパイル、インストール
      (所要時間数分)
    $ mkdir ~/projects
    $ cd ~/projects
    $ wget http://sourceforge.net/projects/libusbx/files/releases/1.0.17/source/libusbx-1.0.17.tar.bz2/download
    $ mv download libusbx-1.0.17.tar.bz2
    $ tar -xf libusbx-1.0.17.tar.bz2
    $ cd libusbx-1.0.17
    $ ./configure
    $ make
    $ sudo make install
    • github上のlabtoolソースレポジトリをローカルに複製(ソースダウンロード)
    $ cd ~/projects/
    $ git clone https://github.com/embeddedartists/labtool.git

    •  先ほどコンパイルしたlibusbxをlabtoolソースツリー上にコピー
    $ cp ~/projects/libusbx-1.0.17/libusb/.libs/libusb-1.0.a ~/projects/labtool/app/libusbx/Linux/ 
    • Qt Creatorのコンパイル環境整備

      • GUIで「Menu」-「Programming」-「Qt Creator」 又はコマンドラインから「qtcreator」を起動
      • 「Help」-「About Plugins」を開く
      • 「Device Support」の下の「Remote Linux」オプションのチェックを外し、右下の[Close]をクリックする
      • 一旦QtCreatorを終了する

        • Qt Creatorを再度起動する
        • 「Tools」-「Options」を開き、「Build&Run」を開く
        • 「Compilers」タブを開き、「Add」ボタンを押し「GCC」を選択する。コンパイラパスに「/usr/bin/arm-linux-gnueabihf-gcc」を指定し、[Apply]をクリックする

        • 「Kits」タブを開き、デスクトップを選択する。Compilerパラメータ欄を数回クリックすると表示が空白からGCCに変わる。Qt versionのパラメータ欄も数回クリックして、自動設定される値とする。設定のCompilerにGCC、Debuggerに/usr/bin/gdbが設定されていることを確認し[Apply]を押す


        • [OK]を押しOptions画面を閉じる 

      • LabToolをコンパイルする

        • Qt Creatorを起動する
        • 「FIle」-「Open File or Project」を開き、/home/pi/projects/labtool/app/LabTool.proを選択し[Open]をクリックする
        • 「デスクトップ」にチェックが入っていることを確認し[Configure Project]をクリックする


        • ビルドモードがDebugになっていることを確認後、ビルドをクリックする(Releaseでもコンパイル可能です。)
          (所要時間15分ほど)



        • ビルド後の実行ファイルLabToolは、/home/pi/projects/labtool/build-LabTool-unknown-Debug/の下に格納されています。(Releaseでコンパイルした場合は/home/pi/projects/labtool/build-LabTool-unknown-Releaseの下です。)

      ファームウェアのコンパイル

      • LabToolアプリは、アプリ本体とは別に、LPC Link2に送り込むfirmware.binを必要とします
      • バイナリ配布パッケージ中のfirmware.binがそのまま使えるようですが、せっかくなのでこちらのコンパイルもやってみました
      • ここまでの作業が完了していれば、ファームウェアのソースが/home/pi/projects/labtool/fwの下に、コンパイル手順書が/home/pi/projects/labtool/fw/COMPILE.mdに格納されています

      • まず、gcc-arm-none-eabi環境をインストールします
        (所要時間5分ほど)
      $ sudo apt-get install gcc-arm-none-eabi

        • 続いて、コンパイルを実施します
          (所要時間2分ほど)
        $ cd ~/projects/labtool/fw
        $ make

        • ファームウェアは/home/pi/projects/labtool/fw/firmware.binとして保存されます


          /etc/udev/rules.d/10-ea-labtool.rules

          • もしまだ存在しない場合は以下の内容を書き込みます
          # Allow group plugdev to access the LabTool Hardware (1fc9:0018)
          ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0018", MODE="664", GROUP="plugdev"

          # Allow group plugdev to access the LPC DFU device (1fc9:000c)
          ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="000c", MODE="664", GROUP="plugdev"


          動作確認

          • コンパイル完了した実行ファイルLabToolとファームウェアfirmware.binを同じディレクトリにコピーします
          $ mkdir ~/Desktop/LabTool2
          $ cp ~/projects/labtool/build-LabTool-unknown-Debug/LabTool ~/Desktop/LabTool2/
          $ cp ~/projects/labtool/fw/firmware.bin ~/Desktop/LabTool2/
          $ cp -pr ~/projects/labtool/tools ~/Desktop/LabTool2/
          $ chmod u+x ~/Desktop/LabTool2/tools/dfu-util-0.7-binaries/linux-armel/dfu-util

          • 起動
          $ cd ~/Desktop/LabTool2
          $ ./LabTool



          •  Users Manual記載のQuick Start Guideに沿って動作テストを行いました。prjファイルはWindows版のパッケージに含まれていたdemo.prjをコピーして使いました。(格納パスはC:\Program Files\Embedded Artists\LabTool\)

          うまく動いたようです。良かった! 

                2016年3月8日火曜日

                LabTool on Raspberry Pi2B with Raspbian Jessie

                再コンパイルとかいろいろやっている間に気づいたのですが、単に
                http://www.embeddedartists.com/products/app/labtool.php
                からダウンロードできるlabtool_raspi_2014-04-28.tgz を手順に沿ってインストールした後、
                chmod u+x /home/Pi/Desktop/LabTool/tools/dfu-util-0.7-binaries/linux-armel/dfu-util
                とするだけで動きそうな気がする....?

                2016年2月28日日曜日

                Raspberry Pi2 B : 7inch toucscreen や IGZOパネルやら...

                メモメモ
                新旧情報が入り乱れているので、2016-02-28現在の最新情報だけまとめる。
                細かい話は抜き

                使用Raspberry Pi

                DOWNLOAD&標準的なインストール手順

                  • ZIPファイルをダウンロードし展開
                  • SDカードをSD Formatter 4で初期化
                  • ダウンロードしたZIPファイルの全中身をSDカードにコピー
                  • SDカートを差し込んでRasPiを起動
                  • 画面に従ってインストール

                  • ZIPファイルをダウンロードし展開
                  • Win32DiskImagerを使ってイメージを書き込み

                公式7inchタッチスクリーンの場合

                • 仕様
                  • これ
                  • フレキシブルケーブル接続
                  • 解像度は800x480


                • 使用ケース
                  • スイッチサイエンス(adafruit製) (このケースは上下がひっくり返る構造となっているので、後述の通りconfig.txtを編集して反転させる必要がある)

                • NOOBS
                  • インストーラ起動する
                  • ただし、上のスタンドは表示が上限反転となる
                  • インストール中の画面は下が切れる
                  • インストール後、/boot/config.txtにlcd_rotate=2 を追加して上下を合わせる

                • RASBIAN
                  • 普通に起動する
                  • 上下はやっぱりひっくり返るので、NOOBS同様に/boot/config.txtを直す

                IGZO液晶パネル

                • 仕様
                  • HDMI接続
                  • 解像度は1920x1200(フルHD)



                • NOOBS
                  • NOOBS経由のインストールは現在お勧めしません...
                  • インストーラの画面が全く表示されない
                  • 他のモニタ(上述のタッチスクリーンや通常のPC用モニタなど)を使ってインストールする
                  • RASPBIANを選択した場合は、次の通り/boot/config.txtを編集する
                  • 注: 2016/02/28現在、rpi-updateするとGraphical インストール画面が表示されなくなってしまいます。

                • RASPBIAN JESSIE
                  • /boot/config.txtをこちらの内容と置き換えるか、”# 以下はオリジナル”という行までを追加する
                    • 液晶の向きにより4つの設定が書かれており、1つ(フレキシブルケーブルが下となった縦長)だけ有効となっている
                    • フレキシブルケーブルを左とする設定を生かしたかったので、そのように変更した
                    • 当該部分(framebuffer_width=1920, framebuffer_height=1200は変更可能。1280x800位が使いやすそう)

                両方切り替えて使いたい場合

                • SDメモリかモニタケーブルを差し替えて両方使いたい場合は。/boot/cofig.txtを各モニタ向けに数パターン用意しておき切り替えて使うと良い
                  • /boot/config.txtは、SDメモリが読み書きできる環境があれば、PCからも編集や置き換えが可能です
                • 両方同時に使う方法があるのかどうかは知りません。

                うまく行かない場合


                • 既存のRaspberry Piに使う等で環境が古い場合、igzoパネルはうまく表示できない場合があるようです。
                  • apt-get update, apt-get upgrade, rpi-updateを実行するとうまく行くという情報がありますが、うちでは逆に起動後のXの起動に失敗するようになってしまいました。(emerge+さんブログ参照

                GL Driver


                • raspi-configAdvanced OptionGL Driverをonにすると以下が起こります。
                  • 公式7inchタッチスクリーンは電源投入直後のレインボーの正方形のまま画面が変化しなくなります。
                  • IGZOパネルの場合は、framebuffer_width, famebuffer_heightの指定が効かなくなります。
                • SDカードのconfig.txtdtoverlay=vc4-kms-v3dという行が追加されていますので、これをコメントアウトするか、消去すると設定を無効化することができます。
                  • 操作可能なら、sudo vi /boot/config.txt
                  • 操作できない場合は、SDカードをPCにつないで編集できます

                2015年1月26日月曜日

                mbed HRM1017でIPv6 (Rev.1)


                といっても、BLEデバイス相手にping出来ただけ。
                mbed HRM1017とRaspberry PiとUSBドングルとWin.dows PCがあれば、特別なライセンスソフト無しで、Nordic IoT SDK 0.7.0で遊べるという実験の紹介です。


                手順概略は以下のとおり。詳細はPDF版参照。
                It decribes how to try Nordic IoT SDK 0.7.0 with mbed HRM1017 user. (Just try ping6 to device.) 
                It can be applied to other mbed platform with nrf58122 like BLE nano with small modification.
                If you need an English version of this page and PDF instruction, please request me.  (naka.takafumi@gmail.com or tweet to @NakaTakafumi)


                Great Thanks to ARM, Nordic, Switch Science and many experts on my TL!!
                 I'm enjoing mbed life.
                1.MDK-ARM Lite (Keil5)インストール
                2.MDK Version 5 - Legacy Support (Cortex-M support)インストール
                3.nRF51-IoT-SDK-zip (0.7.0)展開
                4.LED光らせたい場合

                • mbed HRM1017のLED1、LED2にLEDを接続
                  • GPIO電流値制限(0.5mA)があるので、FET使うとか、赤いLEDを3.9KΩ位を挟んで使うとか。
                • (IOT SDK)\nrf51\examples\bsp\nrf6310.hを調整(適当。無駄な設定もあるかも。)
                  • #define LED_START      18
                  • #define LED_0          18
                  • #define LED_1          19
                  • #define LED_2          21
                  • #define BSP_LED_0_MASK    (1<<BSP_LED_0)
                  • #define BSP_LED_1_MASK    (1<<BSP_LED_1)
                  • #define BSP_LED_2_MASK    (1<<BSP_LED_2)
                  • #define LEDS_NUMBER    3
                  • #define BUTTONS_MASK 0x08830000
                  • #define LEDS_MASK        0x000C0000
                  • #define LEDS_INV_MASK  0x00000000
                  • #define SER_CONN_ASSERT_LED_PIN     LED_2

                5.IoTサンプルプログラムコンパイル

                • (IoT SDK)\nrf51\examples\iot\ipv6_icmp\boards\nrf6310\arm\app_ipv6_icmp_nrf6310.uvproj を開く
                • Applicationの下のmain.cを開き、650行目付近を以下のように直す。(mbed HRM1017用に内部クロック使用設定)
                      // Initialize the SoftDevice handler module.
                      // SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, true);
                         SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION, false);
                • ビルドする。
                • Drag & Dropで以下をmbed HRM1017に書き込む
                  • (IoT SDK)\nrf51\components\softdevice\s1xx_iot\s1xx-iot-prototype2_softdevice.hex
                  • (IoT SDK)\nrf51\examples\iot\ipv6_icmp\boards\nrf6310\arm\_buid\nrf51422_xxaa_s1xx_iot.hex
                • LED1つないでいれば、ここで光る。
                6.Raspberry Pi環境構築
                Raspberry Pi B+
                USB BLE I/F (Princeton PTM-UBT7)装着
                bluez_4.99-2_armhf.deb, libcap-ng0_0.6.6-2_armhf.deb, radvd_1.8.5-1_armhf.deb
                raspbian-kernel-zip by Nordic
                IoT添付DocumentUser Guides Setting up Raspberry Pi as routerに沿って環境構築
                (IoT SDK)\ Documentation\iot\html\a00039.html

                 7.テスト

                • 6LoWPANコネクトしてから、デバイスのIPv6アドレスに対してping6実行して応答あり
                • LED2つないでいれば、コネクトした時に光る。LED1は消える。



                2014年12月20日土曜日

                自宅の温湿度測定(今年:2014年に作ったもの)

                自宅の温度測定(昔:2012年ごろ作ったもの)の続きです。

                2014年の2月頃からBLEに興味を持ち、いろいろ買いました。
                 テレビリモコン、(息子の)家の鍵、Pasmoなど、連日のように屋内捜索していたのですが、短時間で見つかるようになりました。 また、外出時に子供の持ち物に付けておくと、イベント会場等で別行動しても、近く(数10m以内)にいるかどうかが分かるので、捜索が楽になります。MFT2014でも役立ちました。 
                 このアプリは、デバイスで測定した温度も送ってくるので、プロトコル解析すれば温度計として使えるかもと、期待したのですが、結局難しくて断念。温度センサーも誤差が大きく。今となってみれば、nrf51822のオンチップの温度センサーを使っていたためだと分かりました。 
                • ×TI sensortag : 技適も確か通っている。ワイヤレスの温度センサーとして期待しましたが、すぐに電源切れてしまうので、常駐のセンサーとしては使えませんでした。
                • CC2540 USB Evaluation Module Kit + SmartRF Protocol Packet Sniffer : 前述のStick'n findのパケット分析用に・・・と思ったのですが、結局ほとんど使わずじまい。今後に期待します。
                と何度か、調べては、買っては、諦めるを繰り返していました。

                そこへ、mbed HRM1017が登場しました。しかも、温度センサーと組み合わせて使うサンプルが最初から紹介されています。

                これは使えるかもと思い、購入したところ、うまく使えそうであることが分かりました。

                さらに、D510moをRasberry Pi B+ (BLEドングル拡張済み)に置き換えました。

                というわけで、自宅の温湿度測定は現在次のようなシステムになっています。

                温度センサーユニット

                2014/12/20の状態。研究中のため、5,6は仮設です。
                1. 屋外:1W340D接続の温湿度センサ
                2. リビングルーム:1W340D接続の温湿度センサ
                3. 寝室1:HRM1017 Breakout + 温度センサ(TMP102)
                  (eneloop 単3×2駆動。2.5ヶ月ほど持ちます。)
                4. 寝室2:HRM1017 breakout + 温湿度センサ(AM2321) / オンチップ温度センサ
                5. リビングPC周辺1:mbed HRM1017 + 温度センサ(TMP102) / オンチップ温度センサ
                6. リビングPC周辺2: BLE nano オンチップ温度センサ

                データ収集+アップロード
                • Raspberry Pi B+ + BLEドングル + Wifiドングル
                データ収集+アップロードのスクリプトは、人様に紹介できるレベルのものではないので、現在非公開です。 
                D510MO時代は、省電力のためhybernationして1時間に一度の測定でしたが、Raspberry Pi B+になってから常時運転、10分に一度の測定です。

                現在使っているページ
                temperature at home