電子工作」カテゴリーアーカイブ

Raspberry Pi Zero WHでUSBハブを使う

室温記録用に使っているRaspberry Pi Zero WHは普段はネットワーク経由でリモートメンテをしています。今回ローカル環境で画面を見てみたくなったので、ミニHDMIケーブルとUSBハブを接続してみました。

しかしこの状態では電源は投入できたのですが正常にOSが起動するところまで進めませんでした。

調べてみたところRaspberry Pi Zero WHのUSBポートは電力供給がとても少なく、簡単なUSB機器1個をつなぐと容量がギリギリになってしまうようです。そのため、バスパワーのUSBハブを使用すると電力不足で正常に動作しなくなってしまうようです。

あいにく手持ちにセルフパワー式のUSBハブがなかったので今回はローカル環境でのメンテナンスは断念することになりましたが、電力事情がかなりタイトというのは覚えておきたいと思います。

Raspberry PiのHDMI出力が信号無しになってしまう問題

暑いのでサブPC的にRaspberry Pi(4・8GB)を引っ張り出してきましたが、起動させてみたところ画面に何も出力されずに少々あわてました。

長らく使っていなかったので故障したかとも思いましたが、調べてみると”Raspberry Piは起動時にディスプレイを接続していない場合、HDMI出力をしない場合がある”ようです。

こちらの情報が参考になりました。

HDMI monitors says NO SIGNAL [SOLVED]

[Raspberry Pi Forum]

ストレージにあるconfig.txtを開き、hdmi_force_hotplug=1 という記述を探します。デフォルトではコメントアウトされているので、#を削除してコメント状態を解除します。

hdmi_force_hotplug=1 が無い場合は新規に追加すれば良いようです。

hdmi_force_hotplug=1 を追加することで、Raspberry Piが本体にHDMI接続のディスプレイが必ず接続されているものと認識し、信号を出してくれるそうです。

この問題の原因としてはそもそもRaspberry PiがHDMI機器を接続されていないまま起動するとHDMI信号を出してくれないことと、本体からのHDMI信号が弱く、接続に失敗しやすいからという2つがあるようです。

信号の強制発信方法は上に書いたとおりですが、信号が弱いことが疑われる場合はRaspberry Piに十分な電力(1A)を供給してあげることと、config.txtに config_hdmi_boost=4 を書き込むことでも信号が増強できるそうです。数字の4の部分は最大9まで上げられるそうなので、様子を見ながら調整すれば問題が解決できる可能性があります。

Raspberry PiでPythonスクリプトを自動起動する

Raspberry Piで特定のスクリプトを動かすだけの場合、本体に電源が入った際にスクリプトが自動的に実行されると便利です。Windowsではスタートアップという方法がありますが、Raspberry PiのOSはLinux系なので今回勉強のために調べてみました。

systemd のユニットファイルの作成および変更

[Red Hat documentation]

systemdを使用したシステム・サービスの管理

[Oracle]

大ざっぱに言えば、/etc/systemd/system 内にスクリプトをサービスとして登録するためのユニットファイルというファイルを作成します。実行するスクリプトや実行ルールはこのファイル内に定義するようです。

そうするとファイルがサービスとして実行可能になるので起動時に実行されるように設定すれば良いようです。さっそくやってみました。

ユニットファイルの作成

ユニットファイルはそもそも存在していないので、新しく作成します。今回はhoge.serviceというファイルを新規に作成します。

<ターミナル>
cd /etc/systemd/system/
sudo vim hoge.service

Vimが入っていない場合は以下のコマンドでインストールできます。

<ターミナル>
sudo apt-get install vim

そうすると空の状態のhoge.serviceがエディタで開くので以下の内容を入力していきます。

[Unit]
Description=hoge

[Service]
ExecStart=/usr/bin/python3 /home/pi/hoge.py
Restart=Always

[Install]
WantedBy=multi-user.target

それぞれの項目の説明です。

Unit部については単なる説明書きです。

Service部でユニット開始時に実行するスクリプトの場所を指定します。今回はスクリプトがPythonなのでPythonのパスとスクリプトのパスをあわせて記述しています。Restart=Alwaysを記述しておくことでスクリプトが終了してしまったときに自動的にスクリプトを再起動することができます。

最後のInstall部がちょっと分かりにくいところです。”multi-user.target”にすることで ネットワーキングを使用するが、ディスプレイマネージャーは使用しない という設定になるそうです。画面表示のない電子工作用のスクリプトであればこれで問題ないと思います。

入力ができたら保存してエディタを閉じます。

起動時に実行する設定

サービスが登録できたので後は起動時に実行されるように設定をします。

<ターミナル>
sudo systemctl enable hoge.service

これで起動時にhoge.serviceが実行されるようになります。

RemapでQuick7のファームウェアを書き込む

自作キーボードのファームウェアをブラウザ経由で書き込めるRemapQuick7が対応していたのでファームウェアを書き換えてみました。

Remapを使えなかった時はQMKというツールでのファームウェア書き込みが必要で、キーマッピング自体もコンフィグファイルをテキストエディタで開いて編集するという少々手間のかかるものでした。Remapを使うとGUIで分かりやすくキーマッピングができ、書き込みもワンボタンで終わるのでとても簡単です。

惜しいことに今現在ではロータリーエンコーダーに対するマッピングがRemapだとできないようです。そのため我が家のQuick7は右上のロータリーエンコーダーについてはカスタマイズせず、デフォルトの”LED色変更”のまま使っています。

Raspberry Pi 5が日本国内発売

昨年リリースとなったRaspberry Pi 5が日本代理店のスイッチサイエンスさんから発売になったそうです。

ラズパイに関しては我が家でもPi 4とPi Zero WHが運用中なので昨年から少々気になっていました。

Raspberry Pi 5レビュー

[スイッチサイエンスマガジン]

グローバルの発売と国内発売にラグがあるのは、Raspberry PiがWi-Fi機能を内蔵しており、日本国内で使用するためには技適マークの表示が必要なためということらしいです。我が家にあるRaspberry Pi 4は基板に白字で技適マークがプリントされています。

スペック的にはかなり向上しているということなので、デスクトップ用の小型Linux機としてもまあまあ実用に耐えうるのではないかと期待しています。発熱量が大きいというのが少々心配なので、もし購入するとなればファン付きのケースを用意した方が良さそうに感じます。

価格も4の1.5倍くらいになっていますが、性能向上と様々な原材料の高騰を考えると仕方ないところかなと思います。

Remapで1キー2役のキーを作る

自作キーボードのキーマッピングの面白いポイントとして、1キーで2役のキーを設定できるという点が挙げられます。キーを短く押した時と長く押し続けた時で違うキーコードを出せるように設定が可能です。

最近キーマッピングでよく使っているRemapを使うと簡単に設定が可能です。Remapでキーボードを認識させて設定したいキーを指定すると3つタブ状に切り替えられる設定項目があります。中央の”HOLD/TAP”という項目を選択します。

HOLDが長押しした時に使うキーコードで、TAPが短く押した時に使うキーコードになります。例えば、短く押した時はEnter、長く押した時はレイヤー2に切り替えと設定したい場合は以下のような設定になります。

2つ割り当てをすると誤入力が起きるのではないかと心配しましたが、実際に使ってみる限りではトラブルもなくとても便利です。自作キーボードならではの面白いポイントなので、とてもおすすめの設定です。

RemapがQMK0.22.2以降に対応

自作キーボードのファームウェア書き換えに利用できるRemapというサービスがあります。今年組み立てた7sPlusの作成でも使わせてもらいました。

このサービスは従来QMKの0.18.17までしかサポートしていなかったのですが、この2023年9月に0.22.2以降にも対応できるようにリニューアルされました。

これに伴い従来のRemapは旧版用として分離され、最終的には閉鎖になるとのことです。

Remap supports QMK Firmware 0.22.2 or higher

[Remap]

7sPlusのファームウェアを0.22系統に書き換える

私の7sPlusに入っているファームウェアは0.18系統なので、そのうちRemapでキーマッピングのカスタマイズができなくなってしまいます。そんなわけでファームウェアを書き換えてみることにしました。

0.22系統のファームウェアがあるかどうかを確認する

そもそものところでキーボードに対応した0.22系統のファームウェアがないと書き換えることはできません。Remapの”Keyboard Catalog”でファームウェアがあるかどうかを検索してみました。

7sPlusに関してはデザイナーの方が登録されているものと、販売店の遊舎工房さんが登録されているデータが出てきます。このうちデザイナーの方が登録されているものには新旧のファームウェアが登録されていたので、書き換え可能であることが確認できました。

ファームウェアを書き換える

自作キーボードのファームウェア書き換えは、手順としてはアップグレードと言うよりは新しいもので完全に上書きするような形になります。そのため手順としては新規にキーボードを組み立てする時と同じです。

キーボードをPCに接続し、RemapでFlashを選択します。その後キーボードのリセットスイッチを押すとRemapの方で書き換えを行ってくれます。ちょっと緊張しますが、手続きとしては非常に簡単です。

トラブル(LEDが片方だけカスタマイズできなくなる問題)

無事に書き換えも完了して新しいRemapでキーマッピングをカスタマイズできることも確認できたのですが、1点だけ問題が発生しました。右手側のキーボードに入っているLEDがなぜかRemap経由でカスタマイズできなくなってしまったのです。

手順としては新規組み立てと同じということを再度思い出してビルドガイドや製作記録を見直してみたところ、右手側にもPromicro(マイコンボード)が入っていることを思い出しました。新規組み立ての時はキーボードに組み付ける前に、それぞれのマイコンボードにファームウェアを書き込んでいました。

左手側だけファームウェアが新しくなってしまっているようだったので、以下の手順で右手側のファームウェアも書き換えました。

手順

  1. キーボードをPCから外す
  2. 左右のキーボードをつないでいるTRRSケーブルを外す
  3. 右手側のキーボードのみをPCにつなぐ
  4. Remapでファームウェアを書き換える

これで右手側も左手側に連動してRemapでLEDのカスタマイズができるようになりました。

Remapを使うと非常に簡単にキーマッピングのカスタマイズができるのでとてもおすすめです。LEDもGUI上で設定を変えるとリアルタイムで光り加減が変わるので、従来のファームウェアを読み込ませて初めて光り加減が分かる方式に比べて圧倒的に便利になっています。

7sPlusのキー付け替え

組み立てて以来楽しく使っている自作キーボードの7sPlusなのですが、使っていて1点だけ悩みがありました。それは、最下段のキーのうち親指で押すキーについて、押しているうちに親指の側面が痛くなってくるというものです。

縁の鋭いキーキャップ

これはキーボードそのものの設計に問題があるわけではなく、私が選択したキーキャップに問題があるように思います。私が選択したキーキャップはOSAプロファイルというもので、このプロファイルは最下段のキーの縁が結構鋭くなっています。意味なく鋭いわけではなく、これはキーボード表面に角度を付けるためにそうなっているようです。

最下段のキーの角は結構鋭角です。

しかしながらこの縁の尖ったキーを親指の側面でたくさん押した結果、長時間の利用で痛みを感じるようになってしまいました。キーキャップの残りは処分していなかったので、残っているキーの中から何か使えそうなものはないか探してみました。

探してみたところ、右側の親指キー用にスペースバー的なキーを1つ見つけました。これはキーがカマボコ状になっていて縁を指で押しても痛くありません。右の長いキーはこれでいくことにしました。

中央の2つのキーについては、手持ちのDSAプロファイルのキーでどうにかならないか試してみました。装着してみるとタッチ自体は良かったですが、さすがに高さに違いがありすぎて違和感がありました。この案はお蔵入りとなりました。

何かちょうどいいキーを別途買わなければいけないのかと思っていましたが、ふとデザイナーの方の作例に変わった点があることを思い出しました。今回私が悩んでいた最下段の親指で押すキーの刻印が上下逆だったのです。

これはもしかすると同じトラブルに対処するために逆向きに装着しているのではないかと思い、真似して同じように逆向きに取り付けをしてみたところ、嘘のように違和感のない打鍵感が得られるようになりました。パッと見では隣のキーと表面に食い違いがあるのでおかしな感じもしますが、実際に打ってみるとこの設定がベストに感じました。

見た感じは奇妙ですが、これが非常に押しやすいです。
正しい向きでついているキーと比較するとかなり違和感があります。

というわけで右側のスペースキー的なキーはキーキャップセットに入っていたものを、そのほかの親指で押すキー3つについては上下逆に取り付けてしばらく使ってみることにしました。こうやって試行錯誤しながら使い勝手を良くしていけるのも自作キーボードの楽しさだと思います。

Remapによる自作キーボードのキーマッピング

自作キーボードはハードウェア面に凝れるところが魅力ですが、ハードウェアと並んでソフトウェア面でもこだわれる部分があります。それがキーマッピングです。ゲームで言うところのキーコンフィグです。

自作キーボードの場合キーにどの入力を割り当てるかは原則自由に行えます。そのため、自分が打ちやすいと思う配置であればどんな配置でも実現可能です。

従来はQMKというソフトで書き換えが必要でこれはPC上に環境の構築が必要な点が大変でしたが、現在はWebブラウザ経由で書き換えができるRemapというサービスがあるので、これを使うと簡単です。

Remap

使い方については7sPlusのデザイナーの方が詳細な解説記事を書いてくださっているので、それを参照させていただきました。

(初心者編)Remapを使ってキーマップを書き換えよう

[自作キーボード温泉街の歩き方]

実際にマッピングを試してみると面白く感じるのはレイヤーの存在です。自作キーボードのキー数が少ない機種では、レイヤーキーという特定のキーを押すことでキー配置を通常の配置とは違うものに切り替えて使うことが良く行われています。

7sPlusは85キーあるのでデフォルトの状態でキーが足りないということはないですが、私は手が小さいので普通のキーボードの一部キーが押しにくく、我流タイピングになる原因にもなっています。

このことがレイヤーキーをうまく使うことで改善できそうなので7sPlus完成以降キーマップをあれこれ試してみています。

試行錯誤が必要なプロセスなので、Remapのように気軽に書き換えができるととても作業効率が良くて助かります。ちょっと思いついたキー配置もすぐに試せて、ダメならすぐに元に戻せるのでとても重宝しています。

遊舎工房 2-in-1 キープラー

今回作ったばかりのキーボードのスイッチをいきなり全部取り替えるという作業が発生してしまいましたが、その際にこの工具が役立ちました。

遊舎工房さんで販売されているキー引き抜き工具兼キースイッチ引き抜き工具です。

キースイッチはスイッチパネルに対してはめ込むと爪で固定されるようになっています。この爪は非常に小さいので、指で押さえながら引き抜くのは困難です。かといってマイナスドライバーなどで押さえると先端が曲がるなどのトラブルが心配です。

この工具を使うことで、ストレスなく安全な作業が可能です。