3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ArduinoAdvent Calendar 2017

Day 14

AS-289R2プリンタシールドをArduino 101でBLE化した話

Last updated at Posted at 2017-12-14

とある船上ハッカソンで、ナダ電子製AS-289R2プリンタシールドをArduino 101でBLE化したので、ちょいとまとめます。

#使用物

##AS-289R2プリンタシールド
ナダ電子株式会社から発売されている、感熱式プリンタのシールドで、レジについている、レシートを印刷するプリンタのような物です。
いわゆるANK文字、第二水準までの漢字やJIS非漢字に加えて、QRやバーコードも印字可能です。
メーカーサイト: http://www.nada.co.jp/as289r2/

##Arduino 101
2016年に発売された、Intel Curieモジュールを搭載したArduinoです。
BLEに加えて、6軸加速度センサー、ジャイロスコープ等を搭載した便利なボードでしたが、2017年7月にIntelがCurieの生産終了を発表、Arduino 101も販売終了、在庫限りとなってしまいました。
メーカーサイト: https://store.arduino.cc/usa/arduino-101

Arduino IDEで101を使う際には設定等必要になりますので、下記サイトを参考にして下さい。
https://www.arduino.cc/en/Guide/Arduino101

##電源など
AS-289R2は、Arduinoからの電源供給ではプリンタが動作しないため、5V、3.0A以上の外部電源必須です。
共立エレショップの商品ページでは、ACアダプタとDCジャック変換コネクタを勧めていますね。
http://eleshop.jp/shop/g/gG16311/
私は、これと同じものを共立シリコンハウス店頭で買って使用しました。

#接続
AS-289R2はシールドなので、Arduino 101にシールドとして刺せば良いのですが、その前に設定を変更します。
Arduino 101は動作電圧が3.3Vのため、AS-289R2のJP5を1-2から2-3に切り替えて、3.3Vにします。
参照: http://www.nada.co.jp/as289r2/support_arduino.html
JP5を変えるには、いったんネジを外してAS-289R2をバラす必要があります。
シールドからArduino 101に電源供給するようにしたい場合は、JP1をショートしておきます。

#スケッチ
BLEから1バイトずつ受け取ってプリンタに送るスケッチを置いておきます。
注意点としては、BLEからの受信をloop()内でやると取りこぼすことが有ります。
これでちょっとハマりました。 orz
データ受信はイベントハンドラで行いましょう。

#include <CurieBLE.h>

#define SERVICE_UUID        "19B10010-E8F2-537E-4F6C-D104768A1214"
#define CHARACTERISTIC_UUID "19B10011-E8F2-537E-4F6C-D104768A1214"

BLEService blePrintService(SERVICE_UUID);
BLECharCharacteristic blePrintCharacteristic(CHARACTERISTIC_UUID, BLEWrite);

void setup() {
  Serial1.begin(9600);

  // begin initialization
  BLE.begin();

  // set the local name peripheral advertises
  BLE.setLocalName("BlePrint");

  // set the UUID for the service this peripheral advertises:
  BLE.setAdvertisedService(blePrintService);

  // add the characteristics to the service
  blePrintService.addCharacteristic(blePrintCharacteristic);

  // add the service
  BLE.addService(blePrintService);

  blePrintCharacteristic.setValue(0);

  // start advertising
  BLE.advertise();

  blePrintCharacteristic.setEventHandler(BLEWritten, characteristicWritten);
}

void loop() {
  // poll for BLE events
  BLE.poll();
}


void characteristicWritten(BLECentral& central, BLECharacteristic& characteristic) {
  while (blePrintCharacteristic.written()) {
    int v = blePrintCharacteristic.value();
    Serial1.write(v);
  }
}

あとは、iPhoneアプリなどを適当に書いて繋ぎましょう。
では、良い印刷生活を!!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?