0. 前回までのあらすじ
- サーマルプリンタをLinuxから印刷できるようにセットアップしました。
- Raspberry Piから文字、画像をテスト印刷しました。
- 画像を印刷するための印刷サービスを構築しました。
- HTMLを画像に変換するためにレンダリングサービスを構築しました。
- 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
」
- 「2 Network Options」→「N1 Hostname」→「
- ロケールを設定する。
- 「4 Localisation Options」→「I1 Change Locale」→「
en_US.UTF-8
」
- 「4 Localisation Options」→「I1 Change Locale」→「
- タイムゾーンを設定する。
- 「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つの記事に渡り、サーマルプリンタをより便利に使うためのツールなどを紹介してきました。これらの記事が何らかの参考になれば幸いです。