Translate

ページ

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





0 件のコメント:

コメントを投稿