あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

コミック

本棚に収めないと片付かない

エロマンガ先生 (11・12)

11巻飛ばしてて、両方まとめて。11はムラマサがえっちだったし12はエルフがえっちだった。rin先生の絵柄がよかったですね。

亜人ちゃんは語りたい (10)

首がつながる回!
しかし次回で最終巻らしく楽しみでありつつ寂しいですな。。

小山内夫妻はいとなみたい (2)

ど、どうオチるんやろなあ。

世話やきキツネの仙狐さん (10)

もふもふ分補充マンガ。水着回もあるよ

月曜日のたわわ (3)

たわわは青版にかぎる。Twitterのサイレントもいいけど、ストーリーがついたたわわもよき。

Raspberry Pi Advent Calendar 25日目

Raspberry Pi Advent Calendar 25日目です。おかげさまで2年連続の完走となりました。ご参加いただいたみなさま、ありがとうございました。

adventar.org

つぼさんは、こんどオジギソウの種を送りますね。mayukaさんはSecondlifeと音楽ストリーミングのお話をありがとうございました。arkw0さんはスキャナーの話で楽しそう〜と思っていたら、どうしてOrange Piの話をしてしまった……w。Orange Pi Zero LTSは調べた感じ技適がなさそうだったのですが、大丈夫なんでしょうか?🤔Orange Piのこと知らないので違ったらごめんなさい。

というわけで今日はシメにふさわしくない雑多な小ネタの寄せ集めです。

ラズパイインスパイア系ボードとCompute Module

Jeffの動画より、PINE64などのRockchip系ラズパイインスパイア系ボードが、Compute Module 4コンパチのモジュールボードを出しているようです。

www.youtube.com

ラズパイのフォームファクターをパクるのって大丈夫なのかなあと昔から各種インスパイアボードが出るたびに思ってるんですが、Compute Module 4もか……面の皮が厚いと言うかなんというか(?)。

紹介されたCM4パチボードは、ありがちな「Raspberry Piより高スペック!!!」がウリのようですが、同じくありがちな「情報不足」「手薄なソフトウェアサポート」「コミュニティの小ささ」もいつもどおりっぽく、コメントもそのへんが嘆かれていたので、まあ所詮インスパイア系と言った感想でした。

しかし、コミケの新刊のコピー誌でも言及していますが、CM4は現状ほぼ全く入手できないのがつらいところです。技適もまだですし。RAMたっぷりのCM4が欲しいよお〜。

サージ問題再び

私の前回のブログの続き。

akkiesoft.hatenablog.jp

サージ対応ができたので箱に固定しました。電源も雑にユニバーサル基板にごにょっとしたものを取り付けました。

f:id:Akkiesoft:20211225014114j:plain

が、固定した途端、サージ問題が再発しました。コインセレクターの前でカチャカチャするだけでお支払い完了してしまう……。うーんなんか持っていくか悩ましいなあ。

social.mikutter.hachune.net

嘆いていても仕方ないので、コードの整理と、必要な部分の実装を進めています。今回は新刊が単品購入不可なので、それだけ選んだ時に購入に進めない機能、購入完了時にCSVに売上を記録する機能、レシートのコードの組み込み中で日付が変わりました。

残作業はレシート印字、現金支払のUI実装、カード払いのUI実装です。やることがまだ多い。。

リレータッチボードであそんでみた

カレンダーに穴が空いたときに代打できるようにストックしていた記事を放流。スイッチサイエンスのリレータッチボードなるおもちゃであそんでみました。

www.switch-science.com

スマートフォンなどの画面をタッチすることができるボードです。スマートフォンの画面にボードを置いた状態でリレーをONにするとボードを置いた位置を指でタッチした状態として認識されます。

要するに、スマホを指でタッチしているやつをRaspberry Piとか何かしらの電子工作にやらせられるモノ、らしいです。絶対楽しい。というわけで、先日のRTCモジュール購入の時に合わせ買いしていました。

f:id:Akkiesoft:20211208235952j:plain

配線は適当にメスのピンヘッダケーブルを3本用意して、5V、GND、ENのそれぞれにはんだ付けします。Raspberry Piへの配線は、5VとGNDは普通に電源ピンに差し込み、ENはGPIO17あたりに接続します。

f:id:Akkiesoft:20211221234622j:plain

あとはLチカの要領でオンオフしてあげればOKなので、bashで適当に書いてしまいます。

#!/bin/bash
  
if [ ! -f /sys/class/gpio/gpio17/direction ] ; then
  echo "17" | sudo tee /sys/class/gpio/export > /dev/null
  echo "out" | sudo tee /sys/class/gpio/gpio17/direction > /dev/null
fi

while true
do
  echo 1 | sudo tee /sys/class/gpio/gpio17/value > /dev/null
  sleep 0.5
  echo 0 | sudo tee /sys/class/gpio/gpio17/value > /dev/null
  sleep 0.2
done

画面へのモジュール貼り付けは両面テープで、とのことですが、ちょっと面倒かなーと思い、ひっつき虫を採用してみました。これならはがすのは簡単です。

f:id:Akkiesoft:20211221235030j:plain

画面タッチは……そうですね。ひとまずPokemon Goのトレーニングを自動化でもしてみましょう。

social.mikutter.hachune.net

ちゃんとタッチできていそうです。乗っかっているのはリレーなので、オンオフのたびに「カチッカチッ」という機械音がするのがかわいいですね。ポケモンの仕様的な問題かもしれませんが、たまにタッチができなくなってしまうので貼り直しが必要になるみたいです。

タッチができると次はスワイプとか複雑な動作もさせてみたくなりますが、そうするとXY軸で動くプロッター?的な物が必要になるのかな?とおもうとなんか大掛かりになりそうですね。実用的な使い所を見つけるのは難しいかもしれませんが、ネタで遊んでみるにはアリなボードでした。やはり、スイッチサイエンスさんの動画にあるとおりクッキークリッカー…なのかも?w

Raspberry Pi OS Bullseye Desktopの初期セットアップをちゃんとやると日本語入力環境が揃う

Raspberry Pi OS Bullseyeでは、デスクトップ版の初期設定ウィザードをちゃんとやると日本語フォント(fonts-vlgothicとfonts-mplus)とfcitx-mozcがインストールされるようになりました。

ちゃんとってなんだよって話ですが、要点をまとめるとこうです。

  • 言語設定で日本語を設定する
  • ネットワークにつなぐ(有線か、ウィザード中で無線の設定をする)
  • アップデートをスキップせずに実行する

アップデートをスキップしたあとは、再実行しても入らなくなるっぽいので、気づかないとタイミングを逃しますが、以下のコマンドで同等にできます。

sudo apt install fonts-vlgothic fonts-mplus fcitx-mozc

BullseyeとHDMI節電

前に書いたこれの続き。

akkiesoft.hatenablog.jp

Bullseyeではディスプレイ周りがKMSに移行したため、HDMIサービスをオフをするための/opt/vc/bin/tvserviceコマンドがそのままでは使えなくなりました。tvserviceコマンド自体は/usr/bin/tvserviceに移動したため、tvserviceと打つだけでよくなりましたが、HDMIをオフにするには、KMSを無効化して以前のシステムに戻す必要があります。

$ sudo vi /boot/config.txt

# Enable DRM VC4 V3D driver
#dtoverlay=vc4-kms-v3d
↑これをコメントアウト

$ sudo reboot

(再起動後)
$ tvservice -o
Powering off HDMI

一応、Bullseyeでも上記の手順で節電効果は引き続きありそうでした。いつまで使える方法かは不明ですが、KMSを切ってしまうのはアリかなと思っています。

forums.raspberrypi.com

薄い本剃ったあとで気づいてしまったので、パッチを挟み込まないといけませんね……。

ことしのAdvent Calendarおわり!最後に告知!

今回みたいな感じの与太話とかラズパイ作例がたくさんある薄い本は来週のコミケで頒布します。参加チケットの購入が大変みたいですが、ゲットできた方はぜひ遊びに来てくださいね。

f:id:Akkiesoft:20211225023907p:plain

また、ほとんどが既刊で、メロンブックスさんなどで委託中です。年末年始の暇つぶしにぜひ。

www.melonbooks.co.jp

コインセレクターをちゃんとつなぎつつレシートプリント機能に着手

Raspberry Pi Advent Calendar 19日目です。18日目はunaristさんのMIDIバイスRaspberry Piで動かすお話でした。初代Model Bアツい。初代でももちろんBullseyeも動きますしね(たぶんLiteじゃないときついけど)。

adventar.org

コミケまであと2週間を切ったけど、レジアプリは……

今日新刊のコピー誌を印刷・製本し終えました。

f:id:Akkiesoft:20211218223110j:plain

売り物は用意できたので、あとはレジアプリですが、進捗していませんでした……。実は、コイン投入時に誤作動が起こしがちで、コイン投入口にコインを当てこするだけでたまにカウントすることが判明していたのですが、対策を考えるのが面倒で放置になっていました。

もともとの配線はコインセレクターの5V・GND・100円の信号線をほぼ直結していたのですが、ググってみるとどうもコインセレクターはサージが起きやすいらしく、コインセレクターで工作している人達は大体リレー回路を使っていることがわかりました。ウワーめんどくせーという感じになったのですが、100円専用のお遊び要素だとしてもカウントミスはやはり避けたいので導入します。

リレーということは、電源を分離することになりそうなので、この際USBから5V取れるブツを用意して分離していきます。ちょうどMicroUSBのブレイクアウトがあったので、これにピンヘッダーを立てて、D+とD-をショートさせることで電源を取り出せるようにします。

f:id:Akkiesoft:20211218221657j:plain

で、5V電源をリレーモジュールとコインセレクターに食わせて、100円の信号線をリレーモジュールのIN1に接続します。Raspberry Pi側からはGPIO18とGNDをリレーモジュールのK1に接続します。コード側の変更はありません。

f:id:Akkiesoft:20211218221744j:plain

では動作確認。以前はコイン投入口にカツカツ100円玉を当てたりするだけでまれによくカウントされていましたが、それがなくなりました。投入がしっかり判定できていて良さそうです。リレーモジュールが一瞬ピカッと光るのがいい。

social.mikutter.hachune.net

電源分離とリレーでうまくいくようなら、もともとコインセレクターについていたソレノイドのコインシャッターもまたつけられそうですが、昇圧回路とかを考えるのも手間なので今回は外したままにしておきましょう。アレも動くとカチカチ言ってかっこいいんですけどね。

リレーでうまくいくことはわかったので、1ch版のリレーモジュールを買うか否かが悩みどころです。4chはでかすぎるんよ。

レシート!

せっかくレシートプリンターがあるので、レシートというか、私がこれを見ながら商品のピックアップをやる感じの紙が欲しく、レシートをデザインしていきます。レジアプリの操作を売り手買い手のどちらがやるかのオペレーションが固まっていないのが悪いせいではあるのですが……。

さておき、サークルのロゴを出そうとしたところ、画像出力がバグっているのかうまく出せず、断念。雑にpngじゃなくて、ESCPOSに合わせてちゃんとしたデータを食わせたらいいのかなあ?

f:id:Akkiesoft:20211218222757j:plain

まあ、今回はテキストで妥協します。と思ったら文字サイズ変更もライブラリの仕様が変わったらしく、サイズ指定の他にcustom_size=Trueとか言う宣言的なものが必要になっていて、これも出すまでに苦労しました。そのへんがクリアできれば、あとはハードコードでざっくりデザインです。

from datetime import datetime
from escpos import printer
from jptext import jptext

Printer = printer.Usb(0x08a6,0x0041)

# 1x: 16文字
#Printer._raw(jptext("あいうえおかきくけこさしすせそた\n"))
# 2x:  8文字
#Printer._raw(jptext("あいうえおかきく\n"))

Printer.set(align="center",width=2,height=2,custom_size=True)
Printer._raw(jptext("こくだランド\n"))
Printer.set(align="center",width=1,height=1)
Printer._raw(jptext("https://l.kokuda.org/\n"))
Printer._raw(jptext("コミックマーケット99 東5-テ23a\n\n"))
Printer.set(align="left",width=1,height=1)
Printer._raw(jptext("ミ★こくだランドでお買い上げ\n"))
Printer._raw(jptext("  ありがとうございます。\n"))
Printer._raw(jptext("  良いお年をお過ごしください!\n\n"))

now = datetime.now().strftime("%Y年%m月%d日 %H:%M\n\n")
Printer._raw(jptext(now))

Printer._raw(jptext("あっきぃのラズピッピ4        500\n"))
Printer._raw(jptext("あっきぃのラズピッピ5        500\n"))
Printer._raw(jptext("あっきぃのラズピッピPetit-3  100\n"))
Printer._raw(jptext("EJECTO 2012-2017             800\n"))
Printer._raw(jptext("Eject2020                    300\n"))
Printer._raw(jptext("麦子アクリルキーホルダー     500\n"))
Printer._raw(jptext("TinyPicoKeyピン付き          300\n"))
Printer._raw(jptext("TinyPicoKey板のみ            200\n"))
Printer._raw(jptext("--------------------------------\n"))
Printer.set(width=2,height=1,custom_size=True)
Printer._raw(jptext("合 計     3,200\n"))
Printer.set(width=1,height=1,custom_size=True)
Printer._raw(jptext("交通IC支払                 3,200\n"))
Printer._raw(jptext("上記領収致しました。\n\n\n"))

このスクリプトをそのまま使う人はいないと思いますが、jptextはこれです

印刷結果はこちら。やべ、紙がなくなってしまった。ヨドバシでポチりました。

f:id:Akkiesoft:20211218221150j:plain

あとはレジアプリへの組み込みをしていく感じになりますが、なんか若干体調不良気味?なので、健康第一で今日はデザインまでにしておきます。

組み込むために必要な実装が思い浮かべると、複数個買ったときの表記とか、両端揃えとかの処理とか、支払い方法に応じた表記とか、まあまあやること多くてだるそうだなあ?という感じです。レシートに特化したプロダクトがあるのも知ってはいるのですが今回はパスして、なんとか今日作ったやつベースでゴリゴリしていくつもりです。

電子ペーパーのInky pHAT(V1)を破壊してみる

Raspberry Pi Advent Calendar 2021の17日目です。ネタって意外と枯渇しないんだね。

adventar.org

social.mikutter.hachune.net

気づいてはいけないこともある……。

Inky pHATをリプレースした

自宅で常設のInky pHATがだいぶ劣化してきたので、V2バージョンに交換しました。並べてみるとだいぶ見栄えが違いますね。

f:id:Akkiesoft:20211216120712j:plain

去年の記事の時点と比較してみても、縞模様がだいぶ増えたように見えます。

f:id:Akkiesoft:20211216120746j:plain

そもそもInky pHAT V1には、電子ペーパー自体の問題等によって、劣化スピードが早かったという問題がありました。調査や原因究明を経て、比較的早いうちに違うメーカーの電子ペーパーの採用と基板の改良が施したV2がリリースされたという経緯があります。V1を購入したユーザーにはV2への交換サポート(実際にはV2が追加でもらえるかたち)が提供されており、今回交換したV2のInky pHATもその時にもらったものです。V1は縞模様が増えて使い物にならなくなったら交換しようと思っていたのですが、案外3年ももって今日に至った次第です。

blog.pimoroni.com

破壊してみよう

さて、交換後のV1も、ただ捨てるだけではもったいないなあと思い、電子ペーパーをはがしてみることにしました。できれば非破壊で剥がしたかったのですが、粘着テープが強力すぎて、軽く温める程度でははがせず、結局破壊する感じになってしまいました。かなしみ。電子ペーパーはガラスが使われているため、素手でやるには危険ですし、破片が飛び散るため、ゴム手袋をつけてビニール袋の中で作業をしました。手袋を見るとわかりますが、赤いインクが付着しています。液体っぽい感じなんですね。

f:id:Akkiesoft:20211216121721j:plain

剥がれたものを見てみると、インクが載っているシート、表面のフィルム的なものとフレキケーブル、ガラス、といったように複数のレイヤーに分かれているようです。

f:id:Akkiesoft:20211216121819j:plain

ガラスの方を見ると、銀色で細かい点の模様が入ったレイヤーも確認できました。

f:id:Akkiesoft:20211216121955j:plain

TDKの解説を見るに、たぶん電気泳動方式で、銀色の細かい点の模様はインクを制御する電極なのかもしれません。オイルと顔料とあるので、手袋の汚れはそれなのでしょう。おもしろい。

www.tdk.com

さて、細かい点の模様の下にうっすらQRコードが見えていることに途中で気づいたのですが、電子ペーパーをすべてはがし終わったところ、基板上にプリントされたものと言うことがわかりました。しかも、読み取るとPimoroniの製品ページに飛びました。ここまでバキバキにはがさないと見られないのでどういう意味があるのかやや謎ですが、こういう隠し要素が見つけられるのはたのしいですね。

f:id:Akkiesoft:20211216123218p:plain

基板はどうしよう

そんなQRコード入りなボードですが、インダクターが弱いらしいこともあって、代わりのパネルを買っても多分すぐ線入りになってしまうことを考えると持っていてもしょうがない節はあります。が、ボードの裏面はイカちゃんが入ってたりしてかわいいので、なんか捨てにくいですね……。

f:id:Akkiesoft:20211216123721j:plain

と思っていたら、前に買ったペラペラの電子ペーパーが互換ありで一応使えたので、これでいいかも(そして前に使ってたWaveShareのe-Paper HATの方を捨てる?)。ライブラリがArchivedになっててサポートなしですが、まあ使い方もサポート外なので、これで行きましょうかね。

f:id:Akkiesoft:20211216134910j:plain

Pico水温センサーのアレをブレッドボードからそれっぽくまとめる

Raspberry Pi Advent Calendar 2021 16日目です。

adventar.org

試作が終わったらブレッドボードから退場いただく

これの続き。

akkiesoft.hatenablog.jp

前回はまあなんとなくいい感じに動いてZabbixに送るところまでできました。

f:id:Akkiesoft:20211209110623j:plain

1日分データが取れるとこんな感じで変化が見られて良いですね。いやこれ、親メダカの水温もちゃんとログ取っておこうかな……。

f:id:Akkiesoft:20211216095245p:plain

ブレッドボードのまま運用しても良いと言えば良いですが、あくまで試作のためのボードですし、なによりオス-オスのピンヘッダーケーブルが枯渇してしまったので、継続して使うならユニバーサル基板かなんかに移動したほうが良いですね。

やっていき

Tiny2040がW5500モジュールよりも一回り小さいので、モジュールの足の間に収められそうではあるのですが、高さ調節のためにTiny2040のピンヘッダー付け替えはやりたくないので、ユニバーサル基板を挟むような形で表裏にそれぞれ配置する方法にしてみました。こ、こうかね?

f:id:Akkiesoft:20211216100514j:plain

ピンソケットは最近マイブームのロープロファイルで実装。エナメル線で配線して板は完成です。

f:id:Akkiesoft:20211216100659j:plain

コンパクトに収まってるようで収まってないような気がしますが、ケーブルが出る向きは揃えてあります。センサーのケーブルもLANポートと板の間を通せば引き出せますね。

f:id:Akkiesoft:20211216100707j:plain

さて、W5500モジュールとOLEDのピンヘッダーは付け替えてもいいというか、どちらも出荷時に結構曲がって付けられていて見栄えが良くなかったので、取り外してロープロファイルピンヘッダーに置き換えました。置き換え後はLANモジュールの高さが抑えられたことで全体の高さが減りました。こうなるとTiny2040もやりたい気持ちになりますが、家の中では唯一普通のピンがついているTiny2040で、これを変えると使い回しが難しくなるのでやめておきます。。

f:id:Akkiesoft:20211216100936j:plain

完成

というわけで、一旦はこんな感じで完成です。飽きるまでは水温計として運用しようと思っています。

f:id:Akkiesoft:20211216101359j:plain

WIZnetさまが見てる

そういえば、12/3の記事を貼ったらTwitterでLANモジュールのチップ製造元であるWIZnetのアカウントにRTされていたのは見ていたのですが、昨日突然メールで「WIZnetとPicoの組み合わせで作品コンテストに出しませんか」みたいなメールマガジンぽいのが来ておしっこちびるかと思いました。メール登録もしてないのに急によこすな感があります。Githubあたりでメールアドレスを拾ったんでしょうかね。まあいいんだけども……。ちなみに、応募するとWIZnetのEthernet HATかRP2040付きボードがもらえる上、入賞すると1500ドル〜5000ドル(!?)のギフト券がもらえるのだとか。ここまで書いてURLは貼らないんですけども(回し者ではないので)。

あと、12/3の動作確認に毛が生えたような記事が機械翻訳にかけられてWIZnetのブログに転載されていて、それもワロタ。まあいいんだけども……wコンテストもまあこっから辿れるっぽいですね。

maker.wiznet.io