前にポケコン用サーマルプリンタをArduinoで使用するでArduinoからポケコンのプリンターCE-126Pに印字することが出来たのですが、あまり活用する機会がありませんでした。古いハードを無理矢理にでも活用したい者としては、なにかいい利用法を考えたいところです。
そこで思いついたのが、UbuntuからArduino経由でCE-126Pを利用出来ないかということです。
Arduinoのボード書き込みにシリアル出力を利用しているので、UbuntuとArduino間の通信は行えるはずです。
早速ググってみると、通信方法はすぐに分かりました。意外と簡単に実現できそうと思い、まずは印字データの受け側となるPro Micro(HiLetgoの互換機)にプログラムを実装し始めたのですが、これが思うように動作しません。
テストはArduino IDEのシリアルモニタで行っていたのですが、タイミングによってシリアルポートにつながったり、つながなかったり...。シリアルポートにつながった後でも、シリアルからのデータを受け取ってくれないことがあったりと安定して利用できないのです。
ここでふとPro Microの互換機の問題かもと思い、今度はLeonardo(これもkeyestudioの互換機ですが)でテストしてみました。
すると...動きます。なんの問題もありません。Ubuntu側で簡単なテストプログラムを作成し、Leonardoのつながっているシリアルポートにテキストデータを送ると正しく印字できました。この環境で開発を行い、UbuntuからArduino経由でCE-126Pに印字することが出来るようになりました。
しかしPro Microで安定動作しないのも気に入らないので、デバッグプログラムを書いて徹底的に調べてみることに。すると、Pro Microリセット直後にATコマンドらしきものが19バイトシリアルから入力されていることが分かりました。しかも数十秒の時間をかけて…。
(Pro Microでプリントしました。)
このデータがUbuntuからのものなのか、Pro Microのブートローダーに起因するのかよく分かりませんでした。もしかしたら純正品のPro Microでは発生しないのかもしれません。
でも、この19バイトのデータを受け取った後ならばLeonardoと同様に正しく動作しました。
そういえば、このPro Microにコンパイル済みバイナリを書き込むとき、シリアルポートにアクセス出来なくて失敗することが時々ありましたが、これが原因だったようです。
なんとか解決策が見つかったので、Pro Micro問題の対策を組み込んだスケッチを完成させることが出来ました。
・Arduinoスケッチ
SerialPrint.ino
CE-126Pのピン→Arduinoのピン
3番ピン → GND
4番ピン → 4番ピン
5番ピン → 5番ピン
9番ピン → 6番ピン
10番ピン → 7番ピン
・Ubuntuソース
serialprint.c
Makefile
実際にCE-126Pを所有している方は少ないでしょうが、ちょっとしたシリアル通信プログラムを作るときの参考くらいにはなると思います。
スケッチSerialPrint.inoはPro Micro(HiLetgoの互換機)で利用する場合のものです。Leonardoで利用する場合はスケッチの
#define PROMICRO
をコメントアウトしてください。他の機種については未確認です。
使用方法ですが、CE-126P接続済のArduinoをPCにつなぐとLeonardoでは直ぐに、Pro Microではしばらくしてから'Print Ready.'と印字されますので、Ubuntuでコンパイルしたserialprintを使って
./serialprint < テキストファイル
または
cat テキストファイル | ./serialprint
などと入力すると印字が開始されます。また、gtktermなどのシリアル端末から/dev/ttyACM0に接続して印字することも出来ます。
当然日本語は表示されず文字化けしますし、記号の一部も異なりますが、デバッグやちょっとしたデータを記録しておくのに最適です。
ところで、今回CE-126Pで印字テストするにあたって、純正の感熱ロール紙ではすぐに使い切ってしまいそうなので、
別途、レジ用の感熱ロール紙を購入してしまいました。
近所のDIYショップで5巻入って確か¥1,000ちょっとくらいでした。
おかげで思う存分印字テストが行えました。
(スタンドはとりあえず手近なもので間に合わせました。)
最新の画像[もっと見る]
- ラスベリーパイのベアメタル環境でLVGLを使う 6日前
- ラスベリーパイのベアメタル環境でLVGLを使う 6日前
- ラスベリーパイのベアメタル環境でLVGLを使う 6日前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
- ILI9341搭載のタッチパネルをLVGLで利用する 2週間前
※コメント投稿者のブログIDはブログ作成者のみに通知されます