Posted at

サーマルプリンタで印刷する: まとめ(再セットアップ&自動起動編)


0. 前回までのあらすじ


  1. サーマルプリンタをLinuxから印刷できるようにセットアップしました。

  2. Raspberry Piから文字、画像をテスト印刷しました。

  3. 画像を印刷するための印刷サービスを構築しました。

  4. HTMLを画像に変換するためにレンダリングサービスを構築しました。

  5. GitHubのIssue/PRをブラウザから印刷するためにChrome拡張を構築しました。

これまでの記事については『目次』をご覧ください。


1. 概要

これまでの作業で、サーマルプリンタ、印刷サービス、レンダリングサービスなどが正常に動作することを確認できました。

いろいろと試行錯誤もあったので、一度環境をクリーンアップし、一通りのセットアップ手順を整理したいと思います。


2. ハードウェアをセットアップする

はじめに、ハードウェアをセットアップします。


2.1. 必要な機材を調達する

今回のシステムで使用した機材は以下の通りです。

No
種別
メーカ
型番
コメント
リンク

1
サーマルプリンタ
MunByn
ITPP068USE-BK
約11,000円のリーズナブルなサーマルプリンタ。RS232C、USB、Ethernetの3つのインターフェースに対応。
Amazon

2
感熱紙
ビジコム
ST808012-5K
80mm幅。5巻で約1,400円。
Amazon

3
Raspberry Pi
-
3 Model B+
OSインストール済みmicroSDカード、スイッチ付き電源(便利!)などを含むコンプリートセット。約9,500円。
Amazon

詳しくは『セットアップ編』をご覧ください。


2.2. サーマルプリンタを仮想COMポートモードに変更する(要Windows環境)

サーマルプリンタ「MunByn ITPP068USE-BK」のUSBポートは、出荷時には「USBプリンタモード」に設定されています。

Linuxからこのサーマルプリンタを取り扱うためには「仮想COMポートモード」に変更する必要があります。ただ、設定用のツールがWindows向けにのみ提供されているため、設定にはWindows環境が必要です。

詳しくは『セットアップ編』をご覧ください。


2.3. ハードウェアを接続する

今回のシステムでは、機材は以下のように接続されています。ディスプレイ、キーボード、マウスは必要に応じて接続してください。


  • サーマルプリンタ -- (USBケーブル) -- Raspberry Pi

  • サーマルプリンタ -- (DC電源ケーブル) -- AC/DCアダプタ -- (AC電源ケーブル) -- 商用電源(AC100V)

  • Raspberry Pi -- (Ethernetケーブル) -- スイッチングハブなど

  • Raspberry Pi -- (Type-A/Micro-B USBケーブル スイッチ付き) -- USB電源 -- 商用電源(AC100V)

  • テスト時のみ: Raspberry Pi -- (HDMIケーブル) -- ディスプレイ

  • テスト時のみ: Raspberry Pi -- (USB) -- USBキーボード

  • テスト時のみ: Raspberry Pi -- (USB) -- USBマウス


3. Raspberry Piをセットアップする

続いて、Raspberry Piの基本的なセットアップを行います。


3.1. RaspbianをmicroSDカードに書き込む

以前はデスクトップ版のRaspbianを用いましたが、GUIは必要ないのでLite版に変更しました。具体的には以下のイメージを使用しました。

$ unzip 2018-11-13-raspbian-stretch-lite.zip

$ ls -lh 2018-11-13-raspbian-stretch-lite.img
-rw-r--r--@ 1 yuya staff 1.7G Nov 13 23:02 2018-11-13-raspbian-stretch-lite.img
$ shasum 2018-11-13-raspbian-stretch-lite.img
716a8c96bb108c396087a2e42dcf9eec2592e4fc 2018-11-13-raspbian-stretch-lite.img

今回は上記のイメージをmacOS上からddコマンドを使ってmicroSDカードに書き込みました。書き込んだmicroSDカードを使ってRaspberry Piをブートします。


参考:


3.2. Raspberry Piの設定を変更する

raspi-configコマンドを使って基本的な設定を行います。具体的には以下の通りです。なお、実行にはroot権限が必要です。

sudo raspi-config


  • ホスト名を変更する。


    • 「2 Network Options」→「N1 Hostname」→「raspi-3bp



  • ロケールを設定する。


    • 「4 Localisation Options」→「I1 Change Locale」→「en_US.UTF-8



  • タイムゾーンを設定する。


    • 「4 Localisation Options」→「I2 Change Timezone」→「Asia」→「Tokyo」



  • キーボードレイアウトを設定する。


    • 「4 Localisation Options」→「I3 Change Keyboard Layout」→「Generic 105-key (Intl) PC」→「Other」→「Japanese」→「Japanese」→「The default for the keyboard layout」→「No compose key」



  • Wi-Fiの地域を設定する。


    • 「4 Localisation Options」→「I4 Change Wi-fi Country」→「JP Japan」



  • SSHを有効化する。


    • 「5 Interfacing Options」→「P2 SSH」→「Yes」




3.3. Raspbianをアップデートする

apt-get upgradeコマンドを使ってインストールされているパッケージを更新します。

$ ssh pi@raspi-3bp.local

pi@raspi-3bp$ sudo apt-get update
pi@raspi-3bp$ sudo apt-get upgrade
pi@raspi-3bp$ sudo reboot

pi@raspi-3bp$ uname -a
Linux raspi-3bp 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux

pi@raspi-3bp$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"


4. ソフトウェアをセットアップする

続いて、Docker CE、各種サービスをセットアップします。


4.1. Docker CEをセットアップする

Raspberry Pi 3 Model B(Raspbian)にDockerをインストールする - Qiita』に従ってDocker CEをインストールします。

pi@raspi-3bp$ id

uid=1000(pi) gid=1000(pi) groups=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),101(input),108(netdev),996(docker),997(gpio),998(i2c),999(spi)

pi@raspi-3bp$ docker version
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:57:26 2018
OS/Arch: linux/arm
Experimental: false

Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:17:57 2018
OS/Arch: linux/arm
Experimental: false


4.2. 印刷サービスをセットアップする

Web API経由でサーマルプリンタを使って印刷する「印刷サービス」をセットアップします。自動起動にはsystemdを使います。

# リポジトリをクローンする。

pi@raspi-3bp$ mkdir -p ~/repo/github.com/nayutaya
pi@raspi-3bp$ cd ~/repo/github.com/nayutaya/
pi@raspi-3bp$ git clone https://github.com/nayutaya/thermal-printer.git

# タグをチェックアウトする。
pi@raspi-3bp$ cd ~/repo/github.com/nayutaya/thermal-printer/
pi@raspi-3bp$ git checkout master
pi@raspi-3bp$ git pull
pi@raspi-3bp$ git checkout service-printing-v1.1.0
pi@raspi-3bp$ git branch -v
* (HEAD detached at service-printing-v1.1.0) 06aa2bc Merge pull request #16 from nayutaya/bump_version
master 06aa2bc Merge pull request #16 from nayutaya/bump_version

# Dockerイメージをビルドする。
pi@raspi-3bp$ cd ~/repo/github.com/nayutaya/thermal-printer/service/printing/
pi@raspi-3bp$ ./build_image.sh

# サービスの自動起動を設定する。
pi@raspi-3bp$ sudo cp printing.service /etc/systemd/system/
pi@raspi-3bp$ sudo systemctl enable printing
pi@raspi-3bp$ sudo systemctl status printing

# サービスを手動で起動する。
pi@raspi-3bp$ sudo systemctl start printing

# Dockerコンテナの状況を確認する。
pi@raspi-3bp$ docker ps | grep service_printing
27482f6cd5d6 thermal-printer/service/printing "uwsgi --module=app …" About a minute ago Up About a minute 0.0.0.0:3030->8080/tcp thermal-printer_service_printing

印刷サービスの起動に成功すると、サーマルプリンタからバージョン番号、デバイス名などが印刷されます。

詳しくは『印刷サービス編』をご覧ください。


4.3. レンダリングサービスをセットアップする

Web API経由でHTMLをPNG画像としてレンダリングする「レンダリングサービス」をセットアップします。

# タグをチェックアウトする。

pi@raspi-3bp$ cd ~/repo/github.com/nayutaya/thermal-printer/
pi@raspi-3bp$ git checkout master
pi@raspi-3bp$ git pull
pi@raspi-3bp$ git checkout service-rendering-v1.1.0
pi@raspi-3bp$ git branch -v
* (HEAD detached at service-rendering-v1.1.0) 06aa2bc Merge pull request #16 from nayutaya/bump_version
master 06aa2bc Merge pull request #16 from nayutaya/bump_version

# Dockerイメージをビルドする。
pi@raspi-3bp$ cd ~/repo/github.com/nayutaya/thermal-printer/service/rendering/
pi@raspi-3bp$ ./build_image.sh

# サービスの自動起動を設定する。
pi@raspi-3bp$ sudo cp rendering.service /etc/systemd/system/
pi@raspi-3bp$ sudo systemctl enable rendering
pi@raspi-3bp$ sudo systemctl status rendering

# サービスを手動で起動する。
pi@raspi-3bp$ sudo systemctl start rendering

# Dockerコンテナの状況を確認する。
pi@raspi-3bp$ docker ps | grep service_rendering
2be6f51649bf thermal-printer/service/rendering "/bin/bash --login -…" 14 seconds ago Up 11 seconds 0.0.0.0:3031->8080/tcp thermal-printer_service_rendering

なお、初回のレンダリングには各種の初期化が行われるため、5〜10秒程度の時間を要します。その後は1秒以下でレンダリングできると思います。

詳しくは『レンダリングサービス編』をご覧ください。


4.4. HTML印刷ツールをセットアップする

WebブラウザからHTMLをサーマルプリンタで印刷するための「HTML印刷ツール」をセットアップします。

# タグをチェックアウトする。

pi@raspi-3bp$ cd ~/repo/github.com/nayutaya/thermal-printer/
pi@raspi-3bp$ git checkout master
pi@raspi-3bp$ git pull
pi@raspi-3bp$ git checkout tool-html-print-v1.1.0
pi@raspi-3bp$ git branch -v
* (HEAD detached at tool-html-print-v1.1.0) 06aa2bc Merge pull request #16 from nayutaya/bump_version
master 06aa2bc Merge pull request #16 from nayutaya/bump_version

# Dockerイメージをビルドする。
pi@raspi-3bp$ cd ~/repo/github.com/nayutaya/thermal-printer/tool/html_print/
pi@raspi-3bp$ ./build_image.sh

# サービスの自動起動を設定する。
pi@raspi-3bp$ sudo cp html-print.service /etc/systemd/system/
pi@raspi-3bp$ sudo systemctl enable html-print
pi@raspi-3bp$ sudo systemctl status html-print

# サービスを手動で起動する。
pi@raspi-3bp$ sudo systemctl start html-print

# Dockerコンテナの状況を確認する。
pi@raspi-3bp$ docker ps | grep tool_html_print
362545fefce9 thermal-printer/tool/html_print "serve --single --li…" 20 seconds ago Up 17 seconds 0.0.0.0:3032->8080/tcp thermal-printer_tool_html_print

http://raspi-3bp.local:3032/ に同一ネットワーク内のWebブラウザからアクセスすることで、HTMLをサーマルプリンタで印刷することができます。

詳しくは『Webアプリ編』をご覧ください。


4.5. Chrome拡張をセットアップする

Chrome拡張「GitHub Printer」をセットアップすると、Google Chrome(またはChromium)からGitHubのIssue、Pull Requestを印刷できるようになります。

詳しくは『Chrome拡張編』をご覧ください。


5. 終わりに

7つの記事に渡り、サーマルプリンタをより便利に使うためのツールなどを紹介してきました。これらの記事が何らかの参考になれば幸いです。