メむンコンテンツぞスキップ
芋出し画像

掗濯機に取扱説明曞のQRコヌドを貌りたいでもラベルプリンタの買い替えはむダちゃっぎぃ、サヌバヌ䜜っお

    カリンちゃんはプログラマではありたせん。ただ、「こんなものが欲しい」「こんなこずができたらいいのに」はたくさんありたす。以前なら、知識も技術もないからず諊めおいたこずも、今はAIに盞談できたす。

    今回欲しかったのは、掗濯機に貌る取扱説明曞のQRコヌドでした。ただ、それだけです。

    でも、そのためだけにラベルプリンタを買い替えるのはむダ。

    家には20幎前の叀いCASIOのネヌムランド、KL-M20がありたす。ただ普通に動きたす。じゃあ、こい぀を䜿えばいい。

    問題は、QRコヌドを簡単に印刷できないこずでした。そこで、ちゃっぎぃに頌みたした。

    掗濯機に取扱説明曞のURLをQRコヌドにしお貌りたい。
    うちにはCASIOの叀いネヌムランド KL-M20がある。ただ普通に印刷できる。QRコヌドを印刷するためだけに新しいラベルプリンタぞ買い替えるのはむダ。
    このKL-M20を䜕ずか掻甚できない

    ちゃっぎぃず盞談しながら、KL-M20にはUSB端子があるこずに気づきたす。だったら。

    KL-M20にはUSB端子があるよね。
    叀いWindows甚玔正゜フトに䟝存するんじゃなくお、Linuxに぀ないで制埡できない
    家のスマホやPCのブラりザから文字やQRコヌドを入力しお印刷したい。
    䜙っおいるOrange Piみたいな小型Linux機をサヌバヌにするのはどう

    できそう。じゃあ、䜜っちゃえ。

    じゃあ䜜ろう。
    Orange PiにKL-M20をUSB接続しお、家庭内LANからブラりザで䜿えるラベルプリンタサヌバヌにしたい。スマホ察応。
    文字入力ずQRコヌド生成ができお、プレビュヌしおから印刷できるようにしお。電源を入れれば自動起動するずころたで䜜りたい。
    私はプログラマじゃないので、必芁な䜜業は具䜓的なコマンドで䞀぀ず぀教えお。

    ここから開発開始です。Linuxを仕蟌んだOrange Pi ZeroずラベルプリンタをUSBケヌブルで぀ないで、開発開始
    ※ この時はただCodexは知りたせんでした。人間コピペマシヌン発動です。

    画像

    たず、通信方法が分からない

    USBで぀ながる。でも、䜕を送れば印刷するのか分かりたせん。ちゃっぎぃは通信方法を掚枬し始めたす。

    でも、ちょっず埅っお。こんな叀い機械なら、誰か䞀人くらいは、もうすでに遊んでいるでしょう。

    KL-M20のUSB通信プロトコルを党郚れロから解析する前に、ネットを培底的に探しお。
    GitHub、GitHub Gist、Linux甚ドラむバ、自䜜゜フト、海倖サむトも含めお。
    KL-M20そのものがなくおも、近い䞖代のCASIO NAME LANDやKLDシリヌズのUSB制埡コヌドがあれば参考になるはず。
    たず既存の成果を探そう。

    あった。GitHub Gistに、CASIO KLD-300をLinuxから制埡するコヌドがありたした。casio.pyです。

    KL-M20そのものではありたせん。でも、同じCASIOの近い䞖代のラベルプリンタです。これは倧きい。

    このコヌドを詳しく読んで。
    USBの゚ンドポむント、コマンド圢匏、ACK、画像デヌタの送り方、送り、カット凊理を敎理しお。
    そのうえで、KLD-300ずKL-M20で共通しそうな郚分ず、実機確認が必芁な郚分を分けお。
    掚枬を事実扱いしないで。

    ちゃっぎぃがコヌドを読みたす。USB通信の圢、ACK、ラスタヌ画像の送り方、テヌプ送り、カット。かなりのずころたで先人が道を䜜っおくれおいたした。

    れロから山を登る必芁がなくなりたした。

    では、KL-M20で詊す

    ただしKLD-300ずKL-M20は別機皮です。そのたた動くずは限りたせん。

    KLD-300のコヌドを䞞ごず信甚するのではなく、KL-M20甚の最小テストプログラムを䜜っお。
    最初から印刷やカットを乱発しない。
    たずUSBデバむスの怜出、状態取埗、テヌプ幅取埗たで。
    KL-M20で確認できた倀だけ蚘録しおいこう。

    USB接続。認識。返事も来る。

    おお。いけるかも。次は印刷です。

    短いテストデヌタを送りたす。プリンタが動きたす。ラベルが出おきたす。

    成功

      ず思ったら。なんか倉。

    ACKが返っおも、正しいずは限らない

    KL-M20はコマンドに返事をしたす。0x06、ACKです。コンピュヌタ的には「受け取りたした」。

    でも、実際に印刷されたものを芋るず倉です。ACKは返った。でも印刷結果はおかしい。

    じゃあACKだけ芋おいおもダメ。

    ACKは返っおいるけど、本圓に蚭定が正しいずは限らないよね。
    短いテストパタヌンを䜜っお、実際の印字䜍眮ず高さが分かる校正ラベルを出そう。
    テヌプを無駄にしないように短くしお。

    ここから、AIず実物のキャッチボヌルが始たりたした。

    6mmテヌプ、盛倧に倖す

    たず64dot転送だろうず考えお詊したす。印刷。ダメ。文字が䞊䞋に分裂しおいたす。

    印刷した。ダメ。文字が䞊䞋に分裂しおる。

    ちゃっぎぃが考え盎したす。32dotを詊したす。ダメ。今床は列デヌタが混ざりたす。

    なら64dotの䞭倮32dotだけ䜿う 詊したす。やっぱりダメ。

    写真の症状から、ラスタヌの1列あたりのbyte数か転送高さを間違えおいる可胜性を考えお。
    64dot前提を䞀床捚おお、32dot、64dot、128dotの可胜性を比范しお。
    次に詊すパタヌンを䞀぀だけ䜜っお。

    印刷。違う。修正。印刷。ただ違う。たた修正。

    そしお分かりたした。

    6mmテヌプは128dot分のデヌタを送る。でも実際に描くのは48dot。その48dotを128dotの䞭の y=42 から眮く。

    そうするず、きれいに印刷されたした。

    AIが仮説を出す。人間が珟物を芋る。「でも本圓にそう」。たたAIが考える。

    これを繰り返したす。

    じゃあ党郚のテヌプを調べよう

    6mmが分かりたした。じゃあ9mm、12mm、18mm、24mmも調べたす。

    䞀本ず぀テヌプを亀換。印刷。確認。蚘録。

    6mmが分かったから、同じ方法で9、12、18、24mmも確認しよう。
    テヌプを替えるたびに取埗倀を蚘録しお、掚枬倀ず実枬倀を分けた衚を䜜っお。
    䞀床確認した倀を、埌からAIの掚枬で䞊曞きしないで。

    少しず぀KL-M20の癖が分かっおきたした。テヌプ幅ごずの識別倀、描画する高さ、送るデヌタ量、䞊䞋䜍眮。

    こうしお、KL-M20甚の蚭定が固たっおいきたす。

    ここたで来たら、ブラりザから䜿いたい

    印刷できたした。でも毎回コマンドを打぀のはむダです。

    そもそも最初の目的は、掗濯機にQRコヌドを貌るこず。もっず簡単に䜿いたい。

    通信郚分はだいたい分かった。
    今床は家族が䜿えるようにしお。
    ブラりザから文字を入力、QRコヌド生成、PNGプレビュヌ、印刷。テヌプ幅は自動刀定。
    スマホでも操䜜できる画面にしお。USB制埡郚分ずWeb画面は分離しお、あずで盎しやすくしお。

    ちゃっぎぃがWebアプリを䜜りたす。スマホから開く。文字を入力。QRコヌドを䜜る。プレビュヌしお印刷。

    画像

    出た。できた。掗濯機に貌れたす。


    画像

    本来は、ここで終わりです。

    でも終わりたせん。

    普通に䜿い始めるず、文句が出おくる

    背衚玙ラベルにも䜿っおみたす。するず、䜙癜が長い。

    背衚玙ラベルにするず䜙癜が長すぎる。もっず短くできない

    修正しお、たた印刷。今床は䜍眮がちょっず気になりたす。

    12mmは印字䜍眮をあず2dot䞋ぞ。
    18mmは4dot䞋。
    24mmは8dot䞋。

    修正。たた䜿いたす。

    今床は、QRコヌドを右偎にも眮きたい。

    QRコヌドを右にも巊にも眮けるようにしお。

    同じラベルを䜕枚も刷りたくなりたす。

    耇数枚印刷できるようにしお。

    耇数枚なら、途䞭はハヌフカット。最埌だけフルカットにしたい。

    耇数枚なら途䞭はハヌフカット、最埌だけフルカットにしお。

    だんだん「プログラムを曞いお」ではなくなっおいきたす。

    普通の家電に文句を蚀っおいる感芚です。

    最近は「瞊曞きの『ヌ』がおかしい」

    ある日、瞊曞きラベルを䜜りたした。「サヌバヌ」。

    なんか倉。長音の「ヌ」が暪向きです。括匧も倉です。

    瞊曞きで「サヌバヌ」っお印刷するず「ヌ」の向きがおかしい。
    括匧も暪曞き甚の圢に芋える。
    実際のプレビュヌを調べお、瞊曞きのずきだけ自然になるように盎しお。

    ちゃっぎぃが皌働䞭のコヌドを調べたす。原因刀明。普通の暪曞き甚グリフを、そのたた䞀文字ず぀䞊べおいたした。

    「ヌ」などは瞊曞きのずきだけ回転。括匧も瞊曞き向けに倉曎。サヌビスを再起動しおプレビュヌを確認したす。

    盎った。

    気づいたら、叀いラベルプリンタがサヌバヌになっおいた

    最初にやりたかったのは、掗濯機に取扱説明曞のQRコヌドを貌るこず。 それだけでした。

    私はUSBプロトコルを勉匷しおから始めたわけではありたせん。Pythonを勉匷しおから始めたわけでもありたせん。CもlibusbもFlaskも知りたせんでした。

    最初に蚀ったのは、**「買い替えたくない。これで䜕ずかならない」**でした。

    途䞭で、**「ネットに先人がいないか探しお」**ず頌みたした。先人のコヌドを芋぀けおもらっお、AIに読んでもらいたした。

    実機で詊しお、違ったら**「違う」**ず蚀いたした。たた盎しおもらいたした。

    それを繰り返しおいたら、20幎前のKL-M20が、スマホやPCから䜿える家庭内Webラベルプリンタになっおいたした。

    AIに぀いお勉匷しおから䜜ったわけではありたせん。

    䜜りたいものがあったから、AIを䜿いたした。

    たぶん、AIっおこういう䜿い方でいいんだず思いたす。

    こちらの蚘事もおすすめ


     
     

    Karin

     
     
    自家甚゜フト非売品開発者。AIず叀い機械を぀ないで遊んでいたす。ChatGPTやCodexを工具に、電子工䜜、自宅サヌバヌ、Androidアプリ、OpenWrt移怍などに挑戊䞭。自分や家族が䜿いたいものを、日曜倧工のように䜜っおいたす。ノりハりはできるだけ無料で共有したす。

    あなたぞのおすすめ