ATOM Printer - 感熱プリンタキットを触ってみよう
はじめまして
ブログの執筆を担当します、尾藤です。初めて電子工作に挑戦する方でも、なるべくわかりやすいようにブログを書いていこうと思います。
今回は「ATOM Printer - 感熱プリンタキット」の使用方法やライブラリの解説をします。使用する商品は以下の2点です。(弊社でご購入いただけます。)
感熱プリンタとは、熱で色が変わる紙を使って、黒のみの諧調なしで印刷するものです。コンビニやスーパーなどで見る、レシートの印刷をM5 ATOM Liteを使って行うことができます。
実際に届く商品はこちら
開封すると、このようになっています。ケースは紙製です。
端子部分
裏にはプロトコルの説明があります
次に、紙のセッティング方法について説明します。まず、画像矢印のように真ん中の部分を指で引っ張ります。
すると、蓋が開きます。凹みの部分にロール紙が入っています。
そしてこの赤で囲んでいる部分が印刷する・熱を出す部分になります。
印刷部分が紙の表につくように、また蓋で紙を挟み込むようにすれば、セッティングは完了です。
替えの用紙(シール)はこの箱を開けた左の部分に入っています。
横幅は55 mmで、芯の直径は14 mmです。
用紙を入れるところは円形の凹みになっています。
正確な測定ではありませんが、縦横ともに約37mmでした。
替えの紙は、直径が37mmを超えない程度のものを購入してください。または既に入っている用紙を使い終えるとこの黒い芯が残りますので、ここに用紙を直径が37mmになるまで巻いて、セットするのも良いかもしれません。
それでは、電源を入れてみます
Mode:UIFLOW
WiFi Password Erro!と印刷されました。
なにかエラーが起きているようです。これを解決するには、「m5Burner」でM5Printerをburningする必要があります。
m5burnerはこちらからインストールすることができます。https://docs.m5stack.com/en/download
左のタブから、「ATOM」を選択して
Searchから、「Printer」と入力すると、「ATOM_PRINTER」が出てきます。
Burning中
そして、プリンターの電源を入れてみると
Mode: AP
AP SSID: ATOM-PRINTER_CD95
IP address: 192.168.4.1と印刷されました。
どうやらM5 ATOM LiteとスマホやPCなどをWi-Fiで繋ぐことができるようです。
スマートフォンで見てみると・・・
「ATOM-PRINTER_CD95」がありました。ここに接続しましょう。
ブラウザアプリを起動して、先ほどのIPアドレスを入力しましょう。
するとこのような画面が立ち上がります。
空欄にテキストを入力すると、ASCII文字、QRCode、BarCodeを印刷することができます。
続いて、このプリンターの簡単な仕組みを説明します。これは、ATOM LITEから、サーマルプリンタに信号を送って、印刷を行っています。そして、そのATOM LITEとサーマルプリンタを繋ぐための通信のルールをプロトコルといいます。例えば、1という信号が送られたらAするよ、2という信号が送られたらBするよ・・・というものです。
これを少し複雑化したものが次のようなものです。
0x1B,0x40という信号が送られたら「初期化」するよ
0x0Aという信号が送られたら「紙を出す」よ、などです。また、この2間の通信方式はシリアル通信を使用しています。
では、サンプルコードを動かしてみましょう。
その前に2つのライブラリをArduinoIDEにインストールする必要があります。
- M5Atom用ライブラリ
- ATOM-PRINTER用ライブラリ
M5Atom用ライブラリは、次の画像を参考にしてインストールをしてください。
一番左の本棚アイコンをクリック→ライブラリマネージャーからM5ATOMと入力→M5Atom by M5Stackのインストールをクリック
ATOM-PRINTER用ライブラリのインストールは以下を参考にしてください。
https://github.com/m5stack/ATOM-PRINTER
右上の「Code▼」を押して
その後、ArduinoIDEを開いて、タブから「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」で、先ほどダウンロードしたZIPファイルを選択すれば、ライブラリのインストールは完了です。
では、サンプルコードを動かしてみましょう
まず「examples」を開き
その中にある、「PRINTER_IMAGE」を開き
すると、コードが出てきますので、全てコピーして、ArduinoIDEで書き込みましょう。書き込む際は、DC12Vのコードを抜いて、USB-Cの接続のみにしてください。
では、このサンプルコードに則って、ライブラリとプロトコルの関係について説明します。
プロトコルとライブラリ
プロトコルは、16進数のシリアル通信ですので、Serial.beginとSerial.writeを使い、適切な信号を送れば、印刷することができます。
しかし、それだと使っている情報が0x00などといった16進数なので、そのコードをみたとき、誰もがすぐに理解できるとは限りません。
それを文字的にわかりやすく使えるようにしたのが、ライブラリです。しかしこれにはデメリットがあります。ライブラリの仕様を理解していないと、扱うことが難しいということです。それを理解するためには、ライブラリがどのようなコードで書かれているのか調べる必要があります。
ということで、今回はそのライブラリの仕様をまとめましたので説明します。
実際の使い方については、おまけのサンプルコードを参考にしてみてください
本来ライブラリを使うときには、「ATOM_PRINTER.init();」と記述します。ですが、「ATOM_PRINTER printer;」とライブラリを使う前に入力することで「printer.init();」だけでライブラリを使うことができます。これを元に以下のプロトコルとライブラリの説明を見て試してみてください。
printer.begin();
このプリンターを使うとき一番はじめに実行するものです。
シリアルのレート、RX、TXなどを指定します。
printer.init();
プリンターが初期化します。
printer.writeCMD();
プロトコルのコマンドを、ここで指定して実行します。
printer.printPos();
()内には、印刷されるx軸の場所を指定します。
printer.fontSize();
()内にはフォントの大きさを指定します。
printer.clean();
バッファをクリアします。
printer.newLine();
印刷をせずに、紙のみ出します。
()内には数値が入ります。
printer.printASCII();
()内のASCII文字を印刷します。
printer.printQRCode();
()内の文字からQRコードを印刷します
printer.setBarCodeHRI();
()内の文字からバーコードを印刷します。
printer.printBMP(mode, xdata, ydata, buffer);
0と1で表現された画像データを印刷します。
ここで注意ですが、ブログ執筆時点(2023年11月)だと、0~255までの小さな画像しか印刷することができません。ここで、ライブラリの変更が必要になります。
修正点は以下の2つです
- ATOM_PRINTER.cpp(104行目)
(変更前)void ATOM_PRINTER::printBMP(uint8_t mode, uint8_t xdot, uint8_t ydot,
↓
(変更後)void ATOM_PRINTER::printBMP(uint8_t mode, uint16_t xdot, uint16_t ydot,
- ATOM_PRINTER.h(46行目)
(変更前)void printBMP(uint8_t mode, uint8_t xdot, uint8_t ydot, uint8_t *buffer);
↓
(変更後)void printBMP(uint8_t mode, uint16_t xdot, uint16_t ydot, uint8_t *buffer);
今回は、ATOM Printer - 感熱プリンタの紹介と、ライブラリの解説をしました。
ぜひ、皆さんの手で遊んでみてください。
おまけ
スイッチサイエンス商品ページおみくじを作ってみました。QRコードをスマホなどで読み込むと、ランダムで弊社の商品ページにアクセスできます。M5 ATOM LITEのボタンを押すと、おみくじが出てきます。書き込む際には、前述のライブラリの変更が必要です。
コメントは全9種です。
QRコードが左揃えなのが気になりますが、ライブラリの更新に期待です。以下がコードの.inoファイルです。ダウンロードしてお使いください。
それでは また!