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

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 キープラー

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

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

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

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

7sPlusビルドログ(組み立て編)

先日作成した7splusという自作キーボードのビルドログです。この7sPlusというキットは自作キットながら組み立てがしやすい構成になっています。

自作キーボードというとスイッチごとにダイオードやスイッチソケットの半田付け作業があり、途中に「これを90ヶ所行います」というような大変な工程が出てくるイメージがありました。

このキットは基盤にスイッチ関係の部品が既に実装されており、スイッチについては差し込むだけでOKという設計になっています。一方でTRRSジャックやPromicroについては半田付けが必要になっています。

この「ほどほどに半田付けも要るが、基本的に組み立てやすい」というのが非常にバランス良く感じます。

公式ビルドガイド

設計者の方がていねいなビルドガイドを公開してくださっているので、基本的にはこれに従って組み立てていけばOKです。

自作キーボードキット『7sPlus』ビルドガイド

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

製作でつまづく部分はありませんでしたが、ちょっと気になった部分について触れてみます。

スタビライザーの潤滑

ビルドガイドでおすすめのオプション工程としてスタビライザーの潤滑が紹介されています。私も今回実施してみましたが、慣れていないとスタビライザーバーの取り外しが難しく感じました。

スタビライザーのルブの話

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

スタビライザーバーは図のようにスタビライザー本体にはめ込んであり、そのままでは取り外せません。力をこめれば引き抜ける可能性もありますが、その際にスタビライザー本体が割れてしまう恐れがあります。

図の通りにスタビライザーの端を下方向に押し、スタビライザーバーの入っている隙間を広げてあげることで、強い力を入れなくてもスタビライザーバーを引き抜くことができます。

工程全体を振り返ってみると、このスタビライザーバーを引き抜くところが一番緊張したかもしれません。

スイッチのはめ込み

基盤とスイッチプレートを重ねてスイッチをはめていく作業でも注意したいポイントがあります。それはスイッチの足がはめ込みの際に曲がってしまうことがあることです。

これを防ぐためにはスイッチをはめ込む前にスイッチの足が曲がっていないかを事前に確認することと、はめ込む際に極力垂直に力を入れて押し込むことに注意するとよいように思いました。

はめ込み時に上辺→下辺のように片方の辺から先にはめ込んでしまうと足が折れる確率が高くなるように感じました。

こんな感じでスイッチの足が折れてしまうことがあります。

はめ込んだ後に基盤の裏面から足が見えているかを確認するのも重要だと思います。正しく設置できていればソケットの穴からスイッチの足を目視で確認することができます。足が折れてしまうとソケットに足が見えないので、スイッチは設置しているのに足が見えていない場所があった場合はスイッチを外して別のものに交換します。

画像の青丸部分はOKですが、赤丸部分のように足が見えていない場所は足が折れている可能性が高いです。

スペーサーとボトムプレートの取り付け

Promicroの取り付けもできたら最後にスペーサーを取り付けてボトムプレートを取り付けます。ここは基本的にビルドガイド通りで問題ない工程ですが、長い6mmのスペーサーが1個余ります。これは予備用ではなくて右手側キーボードの中段に使用するものです。

私はうっかり取り付け忘れをするところだったので、部品が余らないかご注意下さい。

長さ6mmのスペーサーはボトムプレート取り付け前に差し込んでおきます。
ボトムプレートを設置すると矢印の位置にネジ穴ができます。

組み立ててみて

初の文字が打てるキーボードの製作でしたが、作る工程に苦しい部分はなく、楽しんで組み立てることができました。特にスイッチを取り付けた後に各スイッチの導通確認をするところを無事にクリアすると結構な達成感があります。

選んで楽しい、組み立てて楽しい、使って楽しい、と自作キーボードの楽しさを十分に感じられる体験になりました。

7sPlusビルドログ(部品選定編)

先日組み立てた自作キーボード、7sPlusの部品選定についてのエントリです。自作キーボードは多くの場合、本体キットにキースイッチとキーキャップが含まれていません。このキースイッチ選びとキーキャップ選びもまた自作キーボードの醍醐味と言えるポイントです。

なので一般的に自作キーボードを作る場合は本体、キースイッチ、キーキャップの3つを選択する必要があります。

本体(7sPlus)

本体は今回85キーを使う7sPlusというキットを選択しました。別のエントリでも触れましたが、せっかく自作キーボードを作るのでちょっと変わったものを作ってみたいと思っていました。

しかしながらあまりに変わった配置のものは結局使わなくなってしまう可能性もあります。間を取ってではないですが、おおよそUS配置でなおかつ分離式・一体式のどちらの特徴も有する7sPlusを選択しました。

スイッチごとに半田付けを必要としないキットなので、自作キーボードの製作経験のない私にはちょうど良いくらいの工作難易度でした。

また、次の項で触れますがスイッチがソケット式なので、交換が必要な場合はすぐにスイッチを取り替えられるのが便利です。今回はこの機能に救われました。

本体キットは基盤類とPromicroくらいなので、意外にコンパクトです。

キースイッチ(Kailh Box V2 Switch(brown)→Input Club Hako(violet))

今回キースイッチについてはタクタイルタッチのものを選ぼうと思っていました。タクタイルというのは押し込む時に必要な力が一定ではなく、途中に抵抗のあるタイプのスイッチです。

メインで使っていたFILCOのMajestouchがCherry社製の茶軸と呼ばれるタクタイルスイッチを採用しており、タッチが気に入っているので同じタイプのスイッチにしてみました。

Kalihのスイッチは非常に明瞭な打鍵感があって動作テストをする限りではとても良かったのですが、いざ実際に文章のタイピングをしてみると5分くらいで指の股が疲れてくるという現象が発生しました。

後からよく調べてみるとKalihのスイッチは抵抗の”山”に相当する部分に75gの力が必要ということでした。対する元々使っていたCherry茶軸はおおよそ55gで動作するということでした。要するに今回購入したKalihのスイッチの方が動作が重たいスイッチだったということになります。

そのままでは常用が難しそうな感じがしたのでさっそくスイッチを取り替えることにしました。取り替えたのは同じくKalih製らしいのですがInput clubというブランドのスイッチです。Kalih Box茶軸と同様にタクタイルタッチですが、動作に必要な力は約40gとかなり軽く設定されています。スイッチを変えてみたところ、おおよそイメージした通りのキータッチになりました。

Kalih Box茶軸はほぼ使われずに在庫になってしまいましたが、動作も滑らかで決して悪い製品ではないように感じました。今回は私の下調べとデータシートを読む力が不足していたというところだと思います。

スイッチのみで押し比べてみるとそんなに差は感じなかったのですが、実際の利用ではかなり差を感じました。

キーキャップ(Akko Herb Garden Keycap Set)

結構悩んだのがキーキャップです。キーキャップはキーボードの見た目を決めるほか、打ちやすさにも大きく影響します。また、キーボードキットによっては特殊なサイズのキャップが必要な場合があり、それをキットでまかなえるかどうかというのも重要なポイントになります。

今回購入した7sPlusは一般的なUS配置に近いレイアウトになっていますが、1.75Uという特殊なキーキャップが必要ということでした。そのためキット内に1.75Uのキーキャップがあることが必須要件となりました。

また、キーのプロファイル(形状)も重要な要素です。プロファイルにはいくつか種類があるそうですが、私は手が小さいのでできれば高さが低いキーキャップを使いたいと思っていました。調べてみたところCherryプロファイル、OEMプロファイル、そしてOSAプロファイルというプロファイルについてはキーの高さがそれほど高くないらしいことが分かりました。

キット内に1.75Uを含んでおり、なおかつ背が低く、見た目が好みで入手も可能なもの、という条件で探してみたところ、Akkoのキーキャップセットがちょうど良さそうでした。

商品として体積があって迫力を感じるのはキーキャップセットです。

プロファイルはOSAというものだそうで、高さは低いながらもキーの上面は指先に沿うような形で浅い球状にえぐれており、キーボードを横から見るとキー同士が緩い弧を描くような形になっているのが特徴です。他のプロファイルの特徴を複数備えているのが特徴というちょっと変わったプロファイルになっています。

キーが並んでいる様は壮観です。

キーの印字はダブルショット(2色成形)になっており、文字部分と本体部分が違う素材で成形されています。そのため、使っていく過程で表面がこすれても文字が決して消えないという特徴があります。

このキーの場合生地の色は緑で、白色で刻印を表現しています。裏から見ると2色になっていることが分かります。

自作キーボード用のキーキャップセットは多くの場合こういった2色成形や、樹脂そのものに染料を染みこませて文字を消えにくくしたものがほとんどのようです。キーキャップだけでも結構高コストではあるのですが、一般的なキーボードとはひと味違う工夫が施されているものが多いようです。

自作キーボードを作る(7sPlus)

自作キーボードに興味があり、以前練習用としてマクロパッドである”Quick7”を作成しました。いよいよ本格的な文字が打てるキーボードを作ってみたくなったので、遊舎工房さんで取り扱いのある7sPlusというキットを購入しました。

写真には写っていませんが左右をTRRSケーブルで接続して使用します。

この7sPlusは一般的なUS配列のキーボードに似ていますが、キー数は85キーとなっています。分割型というのもあってスペースキーが4分割されています。また、通常のUS配列では文字キーの右側に配置されるカーソルキーやHomeキー・Endキーなどが右端に寄せられ、きれいな長方形に配置されています。

分割式としても一体式としてもどちらでも組み立てることができます。分割式として組み立てても左右がぴったり合うように設計されており、置き方次第で分割式でありながら実質一体式の配置で使うこともできます。

せっかくの自作キーボードなので分割型に挑戦したかった一方で、いきなり特殊な配列のキーボードはちょっと自信がなかった私にとってはちょうどいいキットでした。

とりあえず無事に組み立てることはできたので、ビルドログ的なものをそのうち書いてみたいと思っています。

Raspberry Piで部屋の温度を長期間記録する(グラフ描画編)

前回まででデータベースに時刻と室温が蓄積されるようになったので、たまったデータをグラフで可視化していきます。

最初データベースの中身からグラフ描画する方法を考えた時にCSVあたりに出力してExcelなりGoogleスプレッドシートなりでグラフにすることを考えました。

ところがその後調べてみたところPythonのライブラリで操作可能なグラフを描画できるライブラリがあることが分かったので、勉強がてら試してみることにしました。

グラフ描画ライブラリ Bokeh

今回使用したのはBokehというグラフ描画を目的としたライブラリです。

Bokeh documentation

[docs.bokeh.org]

このライブラリは非常に高機能で、今回のようなデータベースからグラフを描画するといった要件には適しているということでした。例によって公式のドキュメントが良くできていて、サンプルを動かしつつ今回の環境に合わせていくことで、期待通りに動作するプログラムができました。

<Python>
import sqlite3
import datetime
from bokeh.plotting import figure, output_file, show, save

#◆データベースからデータを取り出す◆

#データベースのパス
dbpath = '/home/pi/Documents/roomtemp_db.sqlite'
#コネクション生成
connection = sqlite3.connect(dbpath)

#カーソル生成
cursor = connection.cursor()

#室温テーブルのレコードを日時で降順ソートし、新しい日時データ96レコード分を取り出す
cursor.execute('SELECT datetime FROM roomtemptable order by datetime desc limit 96')
#変数xを宣言
global x
#変数xを配列とし先ほど取り出した日時データ96レコード分を格納
x = [(x[0]) for x in cursor.fetchall()]

#室温テーブルのレコードを日時で降順ソートし、新しい室温データ96レコード分を取り出す
cursor.execute('SELECT temp FROM roomtemptable order by datetime desc limit 96')
#変数yを宣言
global y
#変数yを配列とし先ほど取り出した室温データ96レコード分を格納
y = [(y[0]) for y in cursor.fetchall()]

connection.close()

#◆グラフ描画◆

#配列の中身は新しい順になっているので、古い順に並べ替え
x.reverse()
y.reverse()

#結果を書き出すファイルを指定
output_file("/home/pi/Documents/graph.html")

# グラフのサイズ設定・ラベル設定
p = figure(title="temperature", plot_width=1200, plot_height=500, x_axis_label='datetime(yyyymmdd-hh:mm:ss)', y_axis_label='temperature(celsius)', x_range=x, y_range=(10,25))
p.y_range.start = 10
p.xaxis.major_label_orientation = 1
#グラフの種類設定・書式設定
p.line(x, y, line_width=5,legend_label="temperature:value", color="limegreen")

#ファイル出力・保存
save(p)

できあがったグラフはこんな感じの見た目になります。

HTMLファイルになっていて、ユーザの操作で拡大や縮小などが自由にできるのが優れていると思います。それほど難しい設定も必要とせずに凝ったグラフが作れるのでとても便利です。

まとめ

比較的安価な機材と簡単なプログラミングで室温のモニタリングと可視化ができることが分かりました。

秋月電子通商などの電子部品屋さんでは他にも様々なセンサー類が販売されています。センサーとプログラムの組み合わせ次第では他にも色々なものを作れそうです。また何かアイデアを思いついたら試してみたいと思います。