Translate

ページ

2017年4月2日日曜日

micro:bitの類似品 (Micorosft Make Code (PXT)利用の他社製品など)

micro:bitにはchibi:bit以外にもMicrosoft Make Codeを使った幾つかの類似品が存在します。
残念ながらBLEが使えるものは工事設計認証(いわゆる技適)の関係で日本で使うのは難しいのですが、見つけたものを記しておきます。

Adafruit Circuit Playground Express



  • AdafruitはNeo Pixelをpxt-microbitにも提供しており、取り込まれています。
    • Neo Pixelをブロックエディタ上に配置すると、左のシミュレーション画面にもデバイスが表示されます。良くできていますね。

Calliope Mini (ドイツ)



     番外編

    chibi:bit (micro:bit)はmbedで動いている

    chibi:bitmicro:bit互換ですので、開発環境も共通で利用できます。 この開発環境や開発者向けの情報について、つらづらと書いてみます。

    開発者向け情報へのアクセス

    micro:bitは子供の教育用のプラットフォームとして開発されています。開発者向けの情報は、micro:bitのホームページの一番右下に「Developers」として存在しています。
    初心者の子供が間違って迷い込まないようにという配慮でしょう、非常に控えめです。

    Developers

    このdevelopersリンクの先(http://tech.microbit.org/)はこのようになっています。
    一番右の「Learn about how the micro:bit software ecosystem works」に入ってみます。

    the micro:bit Software Ecosystem

    the micro:bit Software Ecosystemというページが開きました。
    このページでは、micro:bitがどう動いているのかについて、ざっとした説明とさらに深い情報へのリンクがまとめられています。

    (一部の方々は)ちょっとワクワクしてきますよね?
    「micro:bit Low Level (C/C++) Software Stack」→「the micro:bit runtime」をクリックします。

    The micro:bit runtime and mbed programming

    まぁ、多少調べた人や勘の良い人は気づいていたのかも知れませんが、mbed環境が含まれていたのですね.....
    このような図も載っています

    はい。幾つか気になった情報載せておきましょう。
    • Lancaster University micro:bit runtime
      • micro:bit runtimeのコアとなるモジュールのようです。
      • mbed 2.0をベースにLancaster Universityがカスタマイズしたものです。
      • githubにも載っています。
      • mbed オンラインコンパイラでmicro:bit向けに新規にプログラム作ったことがある人はご存知かも知れませんが、このLancaster Univerrsity micro:bit runtimeが"microbit"ライブラリとして"mbed"や"mbed-os"の代わりにリンクされます。
    というわけで、micro:bitはmbedで動いていたということがわかりました(ちょっと古いみたいだけど)。

    このページは、この辺で。

    いろいろdevelopersの下眺めてみたり、開発環境構築して眺めてみると、勉強になりそうです。


    chibi:bit (micro:bit)のPXT開発環境(Microsoft Make Code)を自宅に構築する

    *** 2017/09/01追記 ***
    matsujirushi(マツジルシ)さんが試された結果を以下に記されています。
    私の手順で抜けているところ、最新の環境で実施するための情報等が書かれていますので、そちらもご参照ください。
    (最近、他のことをやっており、OSもmakecodeや、関連ツールもどんどん更新されていますので、フォローアップは気がついたとき、気が向いたときにならざるを得ません。すいません。)

    Raspberry Pi 上にchibi:bit (micro:bit)のMirosoft Make Code 開発環境(PXT-microbit(ブロック/Javascript開発環境))を
    https://makecode.com/cli
    及び
    https://github.com/Microsoft/pxt-microbit/blob/master/README.md
    を参考に、自宅のRaspberry Pi 3上に構築してみました。




    (PXT-microbit環境の改良などできたら良いなと思い、Raspberry Pi 3上に自前の環境を構築し、ちょこちょこ調査していますがまだ成果にはつながっていません。https://makecode.com/docsを勉強すると良さそうです)

    micro:bitchibi:bitの公式開発環境はMicrosoftが開発したPXTが使われています。
    オープンソースであり、GITHUB上にpxt-microbitとして公開されていますので、誰でも入手・改良することができるのですが、日本語でまとまった情報が無いようです。
    とりあえず、Raspberry Pi上に構築した例を紹介します。なお、node.jsとgcc-arm, yotta等が動く環境であれば、OS問わず構築可能だと思います(以下では一部でRaspberry Piをサーバと呼びます)。

    本ブログに記載の操作には無駄・不足・間違いがある可能性があります。ご指摘頂ければ修正しますので、コメントいただけると助かります。


    開発環境立ち上げのみ(ソース等無し)

    Command Line Toolを参考にworkspace構築

     node.js導入

     PXT Command Line Tool 導入

    • (PXT) Command Line Tool を参考にPXT Commnad Line Toolをインストール
    • sudo npm install -g pxt

     サービス構築&起動

    別ディレクトリに構築する場合は、下線部を任意に変更してください。

      • cd
      • mkdir pxt-microbit
      • cd pxt-microbit
      • pxt target microbt
        • このままでは、localhostからのアクセスしか許可されないので、下記「補足情報」を参考にnode_modules/pxt-core/built/server.jsを編集してポートやIPアドレスを変更 

      • pxt serve
        • 以下の様に表示されるとサーバ起動完了です。

          To launch the editor, open this URL:
          http://localhost:3232/#ws=3233&local_token=XXXXXXX

      • これで開発環境が使用可能となります
        • http://IPADDRESS:PORT/ IPADDRESS,PORT部分は変更した内容に変更してください。デフォルトのまま使用する場合は、Raspberry Pi 3上のブラウザから http://localhost:3232/ となります。



      github上のソースから構築する場合

      以下は、github上のレポジトリを使う場合
      https://github.com/Microsoft/pxt-microbit/blob/master/README.md を参考に

       mbedアカウント準備


      • yotta.mbed.comへのログインアカウントが必要です。developer.mbed.orgでアカウントを作成して利用して下さい。

       yotta

      • (mbed yotta) Installing on Linux を参考にyottaをインストール
      • sudo apt-get update && sudo apt-get install python-setuptools cmake build-essential ninja-build python-dev libffi-dev libssl-dev && sudo easy_install pip
      • sudo pip install yotta
      • 本ブログ更新時点のyottaのバージョン(yotta --version出力)0.17.2

       arm-none-eabi-gcc

      • sudo apt-get install gcc-arm-none-eabi
      • gcc-arm-node-eabiのバージョン(arm-node-eabi-gcc --version出力)4.8.4-1+11-1

       githubレポジトリコピー

      • cd
      • git clone https://github.com/Microsoft/pxt-microbit pxt-microbit
      • cd pxt-microbit
      • sudo npm install -g pxt (不要かも)
      • npm install
        • いろいろエラーが出るようですが、先に進んでも大丈夫のようです。

       サービス構築&起動

        • cd
        • cd pxt-microbit
          • このままでは、localhostからのアクセスしか許可されないので、下記「補足情報」を参考にnode_modules/pxt-core/built/server.jsを編集してポートやIPアドレスを変更
        • pxt serve (現状のビルドをそのまま使う場合)
        • pxt serve -yt (ソースの変更があり、リビルドが必要な場合)
          • 途中で"yotta is unable to open a browser for you to complete login on this machine. Please copy and paste this URL into a browser to complete login:
            https://yotta.mbed.com/#login..."
            表示されたURLにブラウザでアクセスしてください。

        補足情報

        • 必要容量:ソース無しの環境構築だけなら63MiB, githubのソースを引っ張ってくると728MiB使っています。
        • 使用IPアドレスの変更
          • デフォルトでは、pxt-microbitはlocalhost(127.0.0.1)にのみポートを開きます。
          • この状態ではネットワーク上の他のPCからアクセスすることはできません。
          • まずエディタで node_modules/pxt-core/built/server.js を開いてください。
          • serveOptions.hostnameを定義している行について、"localhost"の中身をRaspberry Pi 3のIPアドレスに変更してください(空文字列””にするとRaspbery Pi 3に割り当てられたIPアドレスがすべて使えるようになります)。
        • 使用ポートの変更
          • デフォルトでは、3232, 3233の2ポートを使います。
          • まずエディタで node_modules/pxt-core/built/server.js を開いてください。
          • serveOptions.portとserveOptions.wsPortを定義している行があり、それぞれ3232, 3233を設定しています。この行を使用したいポート番号に変更してください。
        • 複数の開発環境を1台のサーバ上に構築したい場合は以下の様にしてください
          • 別ディレクトリに環境構築する
          • 使用ポートを重複しないように変更する
        • pxt開発環境と記していますが、「Microsoft Make Code」と呼ぶ方が良いのかも知れません
          • このMicrosoft Make Codeのページにはmicro:bit類似貧の開発環境の紹介と、Make Codeに関する情報が掲載されています(このページは、最近頻繁に変更されているようです。この記事は2017/04/02現在の情報に基づいて記されています)。
          • Micorosof Make code の Aboutドキュメントによると以下の様に定義しているそうです。

        2017年3月28日火曜日

        chibi:bit + AS-289R2 BLE UART sample with Block Editor

        *** AS-289R2の製品ページで作例として紹介されました。大した内容では無いのに、ありがとうございます ***

        スイッチサイエンスchibi:bit と ナダ電子のAS-289R2の組み合わせで、chibi:bit公式のブロックエディタで作ったプログラムを利用してAndroidスマホから日本語の印字ができましたので、ここに記録を残しておきます。


        ナダ電子AS-289R2

        先日のmbed祭りの抽選会でナダ電子AS-289R2プリンタシールドが当たりました!
        買うかどうか迷っていたので、非常にありがたい!

        AS-289R2はArduinoシールド形式のサーマルプリンタ(レジなどで使う感熱式プリンタ)です。
        詳細はナダ電子の公式ホームページを見て頂くと良いですが、以下の特徴があります。
        • 非常に多くのデバイスで使用可能です。
        • 基本的には、3.3V/5VでUART出力できるデバイスであれば利用可能です。
        • 日本語の印字はUTF-8(あるいはShift JIS)で文字コードを出力する。
        • 制御コードを送ることで文字サイズ、バーコード、QRコードなどの印字が可能です。
        今回は3月限定配布中のベースボードも入手できましたので、それを使っています。

        chibi:bitでの利用

        さて、AS-289R2で何を作ってみようか?ということで、switch-scienceのchibi:bitと組み合わせを試してみることにしました。

        接続は、chibi:bitとP0とプリンタシールドのTX、両者のGNDの接続の2線のみとなります。
        chibi:bitはKitronikPrototyping System for the BBC micro:bitに装着しています(この製品は現在Switch Scienceから購入可能です:4/1加筆)。

        まず、chibi:bitのIDEを開いて以下を行ってください。
        • Bluetoothパッケージを追加する
        • プロジェクトの設定を開き、「Unsecure: Anyone can connect via Bluetooth.」に設定する。
        • 本当はその下の2モードのどれかにするべきだとは思うのですが、その状態では手持ちのAndroidスマホでうまく動作しなかったための措置です。
        続いてプログラムしていきます。一番簡単なのは、Javascriptに切り替えて、以下のコードをコピー&ペーストすることです。

        let message = ""
        let connected = 0
        bluetooth.onBluetoothConnected(() => {
            connected = 1
            serial.writeLine("Connected")
            basic.showIcon(IconNames.Yes)
        })
        bluetooth.onBluetoothDisconnected(() => {
            connected = 0
            serial.writeLine("Disconnected")
            basic.showIcon(IconNames.No)
        })
        basic.forever(() => {
            if (connected == 1) {
                message = bluetooth.uartReadUntil(serial.delimiters(Delimiters.Fullstop))
                serial.writeLine(message)
            }
        })
        serial.redirect(
            SerialPin.P0,
            SerialPin.P1,
            BaudRate.BaudRate9600
        )
        serial.writeLine("+++ Start +++")
        connected = 0
        bluetooth.startUartService()
        basic.showIcon(IconNames.No)

        ブロックモードに切り替えると次のような表示になります(配置は自動的に行われるのでこの画面とは異なると思います)。


        これをchibi:bitに書き込んでリセットボタンを押して準備完了です。

        Androidからの操作

        スマホ側のアプリはmicro:bit UART terminalを使いました。他のBluetooth UARTアプリも使えると思いますが、その場合は操作法は異なってきます。

        • [Connect]を押してデバイス"BBC micro:bit [hogen]"に接続します。LEDの模様が[×]から[レ]に変わります。 (hogenはデバイスにより変わってきます)
        • 文字列を打ち込んで最後に"."を付けてから、[Transmit]を押してください。対応した文字列が印字されます。
        • この時、日本語は一度に6文字までしか送れません。もし、1行に6文字以上印字したいときは、最初に6文字を行末の"."を付けずに送信してから、次の6文字を送信してください(面倒くさいですよね。サンプルプログラムだから、許してください)。 




        その他

        • ブロックエディタで[serial write line "日本語"]のようにしても、うまく印字されません(コンパイル済みのHEXファイルを確認しましたが、UTF-16LEの最初の1バイトだけの文字列に化けて埋め込まれています。それをプリンタに送るので漢字が出るわけもありません)。
        • chibi:bitはmbed環境でサポートされていまあすので、こちらのAS-289R2のサンプルが動作します(ピンの割り当てなど多少の変更は必要)
        • chibi:bit (micro:bit)の開発環境はptx-microbitとしてMicrosoftからオープンソースとして公開されており、自分のシステム上に環境を構築することが可能です。いろいろ面白そうなので、これはこれで研究中です。とりあえず、serial write lineか、あるいはそれに近い方法で組み込み文字列が印字できるようになると良いですね。





        2016年11月1日火曜日

        TISPY wifiパスワード変更方法

        注意!!:ここに記載の書き換えを真似する場合は完全に自己責任でお願いします。
        真似してTISPYが動かなくなっても、一切責任は持ちません。
        また、メーカサポート外の行為なので、動かなくなってもメーカへの問い合わせはおやめ下さい。

        MAKUAKEにクラウドファンディングで申し込んでおいたTISPYが届いたので、さっそく開けてみました。
        私が買ったのはFlashAir無しモデル。

        手持ちのFlashAirで使うためには、ご購入後の初期設定2の記載に沿ってFlashAirの初期設定が必要です。

        さて、これを持って颯爽と飲み屋で測定!っと行きたいところですが、セキュリティ大切。
        SSIDと、パスワードを変更してっと.....あれ?つながらない?
        良く良く読んでみると、ご購入後の初期設定1にSSIDは変更できるが、パスワードは設定不可能とあります。

        「これじゃ外に持って出られないじゃん!」

        というわけで、まぁ、誰でも思いつくところではありますが、Firmwareをハックしてみました。

        1. 電源を切る
        2. 電池を抜く
        3. 付属のUSBケーブルでPCと接続する
        4. 「上」ボタンを押しながら電池を入れる
        5. 「CRP DISABLD」という名前のドライブが見える(デバイスマネージャで見ると「NXP LPC1XXX IFLASH USB Device」)
        6. 当該ドライブを開くとfirmware.binというファイルが見える
        7. firmware.binをPCにバックアップ・コピーする
        8. firmware.binをバイナリエディタ(とりあえず入っていたBiNedit使用)で開く
        9. wifiパスワードと同じ文字列を探す
        10. 同じ文字数のパスワードを決め、当該文字列を上書きする
        11. firmware.binのサイズがオリジナルと改変版が一致していることを確認する
        12. 「CRP DISABLD」ドライブ上のfirmware.binを消す
        13. 改変版firmware.binを書き込む
        14. お持ちのPCの安全なUSBデバイスの取り外し手順に基づき、デバイスを取り外す
        これで、私のTISPYは無事WiFiのパスワードを変更することができました。
        早いうちに改善版firmware/初期設定ファイルセットが開発・公開されることを期待します。

        TISPY盗まれた場合に備えて、大事な他のパスワードとは別の物設定しましょうね!!





        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
                      とするだけで動きそうな気がする....?