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か、あるいはそれに近い方法で組み込み文字列が印字できるようになると良いですね。