LoginSignup
4
3

More than 5 years have passed since last update.

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

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

4
3
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
4
3