HOME | Raspberry Pi | ビジネス書籍紹介 | 2024-03-29 (Fri) Today's Access : 815 Total : 882299. Since 10 Sep. 2019

サーマルプリンタを使う
2020.02.04 / 2022.04.24更新

YouTubeでポイントを説明しています。画像をクリックすると再生できます。

今回は、サーマルプリンターをラズベリーパイから利用します。
■サーマルプリンタ

埋め込みサーマルプリンター (TTL 5-9v 19200) Raspberry Pi Arduino BeagleBone Black AM335x imx6ボード Linux /Androidドライバー対応
品番 TTL 5-9v 19200
対応ロールペーパー 幅57.5±0.5mm / 直径39mm以下の感熱ロール紙
動作電源 DC5~9V、1.5A
インターフェース UART (TTLレベル)、19200bps
印刷速度 50-80mm / s
解像度 8ドット/mm、384ドット/ライン
文字セット ASCII、GB2312-80(中国語)※日本語は使用できません
印刷フォント ANK:5×7、中国語:12×24,24×24
外形寸法 (WxDxH) 111x65x57mm
カラー ブラック
動作温度 5 ℃~50 ℃
動作湿度 10~80%

■分解・再構築
埋め込みサーマルプリンターを購入したので、分解して見栄えをよくしてみました。

■電源ケーブルの加工

左側、3ピン-2ピンのXHコネクタのものが電源用ケーブル、右側3ピンのものがUART用ケーブルです。
電源ケーブルを途中で切って、ネジ端子アダプタDCジャック変換プラグを取り付けます。これで一般的なACアダプタで使えるようになります。 さらに、DC-USB変換ケーブルを使うことで、USB電源(出力1.5A以上)を使うことができます。

5.5mm x 2.1mm ネジ端子アダプタDCジャック変換プラグ
DC(外径5.5φ/内径2.1φ)メス→USB2.0(A:オス)変換ケーブル

■UART接続
 DP-EH600  -  Raspberry Pi
GND   -  GND (PIN6)
RX   -  14 (UART TXD:PIN8)
TX   -  15 (UART RXD:PIN10)



■UARTを有効化
ラズベリーパイには、2つのUART(PL011とmini UART)があります。まずは、config.txtの内容を確認します。
$ sudo vi /boot/config.txt
# Enable UART
enable_uart=1
#dtoverlay=pi3-miniuart-bt, core_freq=250

$ ls -l /dev/serial*
lrwxrwxrwx 1 root root 5  2月  3 20:48 /dev/serial0 -> ttyS0
lrwxrwxrwx 1 root root 7  2月  3 20:48 /dev/serial1 -> ttyAMA0
初期状態では、Mini UARTがGPIO14,15にマッピングされています。 PL011に対してmini UARTには次のような機能制限があります。
・ブレークを検出できない
・フレームエラーを検出できない
・パリティビットを使えない
・タイムアウト割り込を使えない
・DCD, DSR, DTR, RI信号がない
$ sudo vi /boot/config.txt
# Enable UART
#enable_uart=1
dtoverlay=pi3-miniuart-bt, core_freq=250

$ sudo reboot

$ ls -l /dev/serial*
lrwxrwxrwx 1 root root 7  2月  3 20:54 /dev/serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5  2月  3 20:54 /dev/serial1 -> ttyS0
PL011 UARTがGPIO14,15にマッピングされ、高機能なUART機能が使用可能になります。

■シリアルコンソールの無効化
/dev/ttyAMA0 や /dev/ttyS0 は、 consoleとししても使われているため、無効化しないと、オンチップのUARTを利用できません。

$ sudo vi /boot/cmdline.txt
console=serial0,115200 という部分だけを削除する

$ sudo reboot

■印刷
シリアルポートに接続して、サーマルプリンターに制御コードを流し込んで印刷します。 詳細は、プリンタ用制御コード(ESC/P:Epson Standard Code for Printer)を参照してください。 直接、制御コードをいじらなくても、便利なライブラリが公開されているので、そちらを利用するのもよいかもしれません。

$ vi sample.py
from serial import Serial
from time   import sleep

p = Serial('/dev/ttyAMA0', 19200, timeout=3)
p.write([0x1b,0x40])      # initialize
p.write([0x1b,0x61,0x01]) # center
p.write([0x1b,0x2d,0x01]) # underline
p.write(bytes("center underline\n",'ascii'))
p.write([0x1b,0x61,0x00,0x1b,0x2d,0x00])

■補足 - 日本語対応

日本語をサポートしていないサーマルプリンターの場合は、日本語テキストを画像に変換して、ビットマップデータとして印刷します。

画像処理ライブラリPillow(PIL)のインストール
※Stretchには既にインストールされています
$ pip3 show Pillow
Name: Pillow
Version: 4.0.0
Summary: Python Imaging Library (Fork)
Home-page: http://python-pillow.org
Author: Alex Clark (Fork Author)
Author-email: aclark@aclark.net
License: Standard PIL License
Location: /usr/lib/python3/dist-packages
日本語フォントのインストール

Mgen+ (mgenplus-20150602.7z)
Mgen+ (ムゲンプラス) は、フリーフォントである「M+ OUTLINE FONTS」をベースに、これに含まれない漢字・記号のグリフを「源ノ角ゴシック (Noto Sans CJK / Source Han Sans の日本語部分」で補うことで、さらに豊富な漢字や記号を使えるようにした合成フォントです。 個人・商用利用可。同人誌や各種印刷物も可。

7zipのインストール

$ apt-cache show p7zip
Package: p7zip
Version: 16.02+dfsg-3+deb9u1
Architecture: armhf
Maintainer: Robert Luberda
Installed-Size: 729
Depends: libc6 (>= 2.4), libgcc1 (>= 1:3.5), libstdc++6 (>= 5)
Suggests: p7zip-full
......
Another package, p7zip-full, provides 7z and 7za which support more compression formats.

$ sudo apt -y install p7zip-full

フォントファイルの展開と配置
$ sudo mkdir -p /usr/share/fonts/opentype/mgenplus
$ 7z x mgenplus-20150602.7z
$ sudo mv *.ttf /usr/share/fonts/opentype/mgenplus
$ sudo fc-cache -fv

Pythonで処理する場合、PIL(Pillow)ライブラリなどで日本語テキストを画像化して、そのビットマップデータをサーマルプリンターに流し込むことになります。 詳細は、プリンタ用制御コード(ESC/P)を参照してください。

■補足 - シリアル通信のフロー制御

UART(Universal Asynchronous Receiver Transmitter)は、非同期方式による通信です。 UARTの信号線は送信用のTXDと受信用のRXDの2本です。送信側が送信したいタイミングでデータを送信できます。 画像データのシリアル転送速度が印刷速度を上回ると、印刷中にプリンタの内部バッファがオーバーフローしてしまい、 データの取りこぼしが発生します。 サーマルプリンターによっては、RTS/DTRのコネクタを備えている機種があります。
シリアル通信のハードウェア・フロー制御では RTS/CTS(または DTR/DSR)信号を使って通信します。 シリアル・デバイスとコンピュータを接続する場合は、CTS ピンと RTS ピンを接続します(DTR/DSRフロー制御では、DSRとDTR)。 送信側は送信の前に CTS ピンの状態を確認して、「CTS がオン」の場合は送信を開始し、「CTS がオフ」の場合は送信を控えます。

ラズパイのCTS端子(#16:Pin36)は初期状態ではGPIOになっているので、これをCTS端子に利用するために、ピンのモードを「ALT3」に切り替えます。


ラズパイのピンにはそれぞれ複数の機能が割り当てられており、モードをALT0~ALT5まで切り替えることで、ピンの役割を変更することができます。
まずは現在のピンの状態を確認します。

-------------------------------------------------------------------
◇Raspberry Pi OS (64bit/bullseye)の場合
gpioコマンドを使えるようにするために、WiringPiをビルドします。
$ sudo apt-get install libi2c-dev
$ git clone https://github.com/WiringPi/WiringPi.git
$ cd WiringPi
$ ./build
Ref.WiringPiのインストール
Ref.WiringPiインストールエラー

◇Raspberry Pi OS (Raspberry Pi Zero 2 W / 32bit/buster)の場合
$ gpio readall
gpio: Symbol `piModelNames' has different size in shared object, consider re-linking
Oops - unable to determine board type... model: 18
リポジトリを最新に更新します
$ wget https://project-downloads.drogon.net/wiringpi-latest.deb
$ sudo dpkg -i wiringpi-latest.deb
$ gpio -v
gpio version: 2.70
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
 Type: Pi Zero2-W, Revision: 00, Memory: 512MB, Maker: Sony
 * Device tree is enabled.
 *--> Raspberry Pi Zero 2 W Rev 1.0
 * This Raspberry Pi supports user-level GPIO access.
$ sudo reboot
-------------------------------------------------------------------

$ gpio readall

#16 のモードを「ALT3」に変更します。
$ gpio -g mode 16 alt3
ピンの状態を確認します。
$ gpio readall


起動時に自動で設定変更するようにします。
$ sudo vi /etc/rc.local
....
gpio -g mode 16 alt3 ← 追加

exit 0

■参考文献
Maker向けサーマルプリンタ『DP-EH600』を爆速化する
DP-EH600 Technical Manual.pdf
adafruit Mini Thermal Receipt Printer
ラズパイでUART通信を行う
Raspberry Pi のGPIOと機能について
【2019年版】Linuxでも使えるフリーフォント集
 Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
2019.12.13 モバイルバッテリーによる瞬間停電対策
2020.01.01 1280x800 HDMI MONITOR
2020.01.12 micro:bitをコマンドラインで使う
2020.02.04 サーマルプリンタを使う
2020.04.10 電卓を制御して数字を表示する
2020.08.03 Seeeduino XIAO
2020.08.09 LGT8F328P - Arduino clone
2020.09.18 電流計測モジュール INA219
2021.02.16 癒しの電子回路
2021.03.06 疑似コンソール
2021.08.08 電子ペーパー
2021.09.04 AVRマイコン・ATTiny85
2021.09.25 pH測定
2021.11.13 NTP時刻取得と活用
2021.11.27 GPS情報取得
2021.12.11 GR-KURUMI
2021.12.25 ATMEGA328P 3.3V/8MHz
2022.01.11 AS-289R2 プリンタシールド
2022.01.25 TM1637 & ATtiny85
2022.02.22 Raspberry Pi Zero 小道具
2022.03.01 ATTinyCore
2022.03.18 Adafruit QT Py + XIAO Expansion board
2022.07.31 サーマルプリンター番外編:通信筒
2022.09.03 l' art en circuit (回路でアート)
2023.01.01 FTP Server & SPI Flash SD
2023.02.01 LPC810(ARM Cortex-M0+)
2023.02.15 IchigoJam互換機
2023.03.01 Telnet
2023.04.26 USBメモリをUART接続で利用する
2023.05.14 焦電型赤外線モーションセンサー
2023.07.01 文字化けしないキーボード
2023.08.01 Bluetoothサーマルプリンター
2023.08.12 LattePanda 2G/32GB
2023.09.04 SI-3012KS
2023.12.01 疑似コンソール(C言語編)
2023.12.16 昭和レトロ・温度湿度時刻計
2023.12.25 二酸化炭素濃度監視
2024.01.23 なんちゃってmicro:bit
2024.02.07 オリジナル micro:bit
2024.02.23 ESP32 OTA
2024.03.08 TELNETサーマルプリンター


Arduinoで学ぶ組込みシステム入門(第2版)
●Arduinoを使って組込みシステム開発を理解する
・ハードウェアやソフトウェアなどの基礎知識/ ・設計から実装までを系統的に説明するモデルベース開発/ ・Arduinoを用いた実際の開発例

最新 使える! MATLAB 第3版
◆◆すぐに「使える!」 全ページフルカラー!◆◆
・MATLAB R2022bに対応し、解説もより詳しく!/ ・コマンド・スクリプトの例が豊富で、動かして学べる!/ ・超基本から解説。これから使いはじめる人にぴったり!/ ・全編フルカラー、スクリーンショットも豊富!

Amazon Web Services基礎からのネットワーク&サーバー構築改訂4版
1.システム構築をインフラから始めるには/ 2.ネットワークを構築する/ 3.サーバーを構築する/ 4.Webサーバーソフトをインストールする/ 5.HTTPの動きを確認する/ 6.プライベートサブネットを構築する/ 7.NATを構築する/ 8.DBを用いたブログシステムの構築/ 9.TCP/IPによる通信の仕組みを理解する

C言語は第二の母国語: 独学学生時代から企業内IT職人時代に培った、独立のための技術とノウハウ 平田豊著
学生時代から独学でプログラミングをはじめ、企業内でデバイスドライバを開発し、そして独立後もたくさんのアプリケーション開発や技術書制作に携わってきた著者。その筆者が大事に使い続ける「C言語」の“昔と今”について、気づいたことや役立つ知識、使ってきたツールなどについて、これまで記してきたことを整理してまとめました。 本書では、現役プログラマーだけでなく、これからプログラミングを学ぶ学生などにも有益な情報やノウハウを、筆者の経験を元に紹介しています。

1冊ですべて身につくJavaScript入門講座
・最初の一歩が踏み出せる! 初心者に寄り添うやさしい解説 ・最新の技術が身につく! 今のJavaScriptの書き方・使い方 ・絶対に知っておきたい! アニメーションとイベントの知識 ・プログラミングの基本から実装方法まですべて学べる

図解! Git & GitHubのツボとコツがゼッタイにわかる本
ソフトウェア開発では欠かすことのできないGit、GitHub。 これからGit、GitHubを使いたいという入門者の方でも、実際に手を動かしながら使い方を学べます。

C自作の鉄則!2023 (日経BPパソコンベストムック)
メーカー製のパソコンはスペックが中途半端で、自分が本当に欲しい機種がない――。そう思っている人には、ぜひ自作パソコンをお薦めします。自作パソコンのパーツは進化が速く、しかも驚くほど種類が豊富。価格も性能も、幅広く用意されているため、満足度100%の“自分だけの1台”を手に入れることができます。

Interface 2023年6月号
特集:第1部 フィルタ設計 基礎の基礎/ 第2部 係数アプリや波形観測アプリで合点!FIR&IIRフィルタ作り/ 第3部 配布プリント基板で体験!マイコンで動くフィルタ作り

日経Linux 2023年5月号
【特集 1】 AI時代の最強フリーソフト ~ 25のやりたいを実現! 【特集 2】 AWS、Azureのうまみを無料で体感!面倒なことはクラウドに任せよう 【特集 3】 新しいRaspberry Pi Cameraで遊んでみよう 【特集 4】 Linuxで旧型PCを復活! 1kg切るモバイルPCを「ChromeOS Flex」でChromebook化

ラズパイマガジン2022年秋号
特集:5大人気ボード 電子工作超入門
「半導体不足で在庫が不足し、電子工作のボードがなかなか買えない…」。そんな今にふさわしい特集を企画しました。5種の人気ボードにすべて対応した電子工作の入門特集です。「GPIO」や「I2C」を使った電子パーツの制御方法は、どのボードでも同じです。手に入れられたボードを使って、今こそ電子工作を始めましょう。

地方で稼ぐ! ITエンジニアのすすめ
学歴、理系の知識、専門スキル……全部なくてもITエンジニアになれる! 地方でも高収入でやりがいをもって働ける!ITエンジニアの魅力を一挙大公開

Raspberry Piのはじめ方2022
本書は、ラズパイやPicoの買い方やインストール、初期設定といった基本から、サーバー、電子工作、IoT、AIといったラズパイならではの活用方法まで、1冊でお届けします。 ラズパイをこれから始める方向けに、全36ページの入門マンガ「女子高生とラズベリーパイ」も巻末に掲載。これを読むだけでラズパイがどんなものなのか、すぐに分かって触れるようになります。

ハッカーの学校 IoTハッキングの教科書
生活にとけこみ、家電機器を便利にするIoT技術。 Webカメラなど、便利の裏側に潜むセキュリティの危険性をハッキングで検証。 専門家がパケットキャプチャからハードウェアハッキングまで、その攻撃と防御を徹底解説。 本書は2018年7月に刊行された「ハッカーの学校IoTハッキングの教科書」に一部修正を加えた第2版です。

攻撃手法を学んで防御せよ! 押さえておくべきIoTハッキング
本書は、経済産業省から2021年4月にリリースされた、IoTセキュリティを対象とした『機器のサイバーセキュリティ確保のためのセキュリティ検証の手引き』の『別冊2 機器メーカに向けた脅威分析及びセキュリティ検証の解説書』をもとに、IoT機器の開発者や品質保証の担当者が、攻撃者の視点に立ってセキュリティ検証を実践するための手法を、事例とともに詳細に解説しました。

ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS… 全WEB媒体で効果バツグン! カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術

プログラマーは世界をどう見ているのか 西村博之著
イーロン・マスク(テスラ)、ジェフ・べゾス(Amazon)、ラリー・ペイジ(Google)…etc. 世界のトップはなぜプログラマーなのか?

ニーア オートマタ PLAY ARTS改 <ヨルハ 二号 B型 DX版> PVC製 塗装済み可動フィギュア
「NieR:Automata」より、ヨルハ二号B型こと2BがPLAY ARTS改に新たに登場! 高級感の感じられるコスチュームや髪の質感、洗練されたボディバランス、細かなデティールに至るまでこだわり抜かれた逸品。 DX版には通常版のラインナップに加え2Bの随行支援ユニット ポッド042などをはじめ“純白の美しい太刀"白の約定やエフェクトパーツ、自爆モードを再現できる換装用ボディパーツ、シーンに合わせて変えられる顔パーツ2種も付属する豪華な仕様に。 作中のあらゆるシーンを再現することが可能なファン必見の一品となっている。

Newtonライト2.0 ベイズ統計
ベイズ統計は,結果から原因を推定する統計学です。AIや医療などの幅広い分野で応用されています。その基礎となるのは18世紀に考えだされた「ベイズの定理」です。 この本では,ベイズ統計学のきほんをやさしく紹介していきます。

白光(HAKKO) ダイヤル式温度制御はんだ吸取器 ハンディタイプ FR301-81


無水エタノールP 500mlx2個パック(掃除)


ケイバ(KEIBA) マイクロニッパー MN-A04


サンハヤト SAD-101 ニューブレッドボード


白光(HAKKO) HEXSOL 巻はんだ 精密プリント基板用 150g FS402-02


[Amazon限定ブランド]【指定第2類医薬品】PHARMA CHOICE 解熱鎮痛薬 解熱鎮痛錠IP 100錠


Copyright © 2011-2024 Sarako Tsukiyono All rights reserved®.