WP-34s は多機能関数電卓です。しかし、普通の店では販売されていません。なぜなら、オープンソースのファームウェアとして公開されていて、それを自分で書き換えて作るものだからです。
HPの電卓は逆ポーランド入力や独特のキータッチなどで人気がありますが、最近のものはファームウェアにバグがあったりして残念なことになっているようです。
そこで、WP 34s というプロジェクトが出てきます。これは HP 20b または HP 30b のハードウェアに最強の関数電卓のファームウェアを組み込もうというプロジェクトです。
(2.8.9追記)スタックと精度について追記しました。
(2.8.14追記)いくつかの項に追記しました。
(2.11.23追記)いくつかの項に追記しました。
(3.1.17追記)赤外線LEDを実装してみました。
海外通販か自作が必要
元となる HP 20b や HP 30b は日本でも販売されています。HP 30b は一言で言えば HP 20b の豪華版なので中身は同じです。
書き換えには専用ケーブルが必要ですが、これは海外通販しないと手に入らないので、私は一時的に半田付けをしてバスパワーで書き込みました。なお、専用ケーブルはRS-232Cなので、USB-シリアル変換ケーブルが必要です。私のようにケーブルを自作した場合は、FTDI チップ搭載のモジュールを使うと良いでしょう。
また、書き換えるとキーボードの配列も変わるので、キーボードオーバーレイが配布されており、私は自分で印刷しました。海外通販ができる人なら、完成品のオーバーレイを買うこともできます。
オプションとして、水晶発振子とコンデンサを実装することもできます。しかし、水晶はともかく、必要なコンデンサが1206サイズ(0603サイズともいう)というケシ粒のような大きさなので、それを実装するには細いハンダや電子工作用ピンセット(反転動作形)が必要です。ルーペなどもあったほうが良いでしょう(私はルーペ無しでなんとか実装できましたが)。水晶は 32.768kHz のもので、電子部品の店では「時計用の水晶」といえば通じます。
20bベースと30bベース
(この項2.11.23追加) 当方は当初 20b ベースで作ったのですが、この度 HP 30b が手に入ったので(並行輸入品)30b ベースで作り直してみました。オーバーレイは例によって自作ですが、今回は銀フィルムシールで作りました。本来は 20b に合うような(と言うより往年のHP電卓のような)黒地のものですが、今回は 30b の筐体表面が銀色なのに合わせてボタン以外を銀地(データ上は白地)で作ってみました。20b の時は黒が薄いことから普通紙ラベルシールで作ったのだと思います。貼り方や切り方はあまりうまくないですが……
ハードウェアの違いとしてよく言われるのが、ボタンの仕様の違いです。20b のボタンは押したときに手ごたえがなく評判の悪いものでした。一方で、30b のボタンは 15c LE に近い感じのタクタイルキーボードです。HPの電卓はタクタイルキーボードが特徴だったので 30b のほうが良いでしょう。完成品の販売も 30b ベースで行われていました。現在は 20b/30b ともに生産終了しています。
また、液晶のコントラストが 30b のほうが強いようで、20b ベースではコントラスト設定 8~9が、30b ベースでは 4~5 がちょうどいい感じです。
なお、30b には専用ケースが付属します。オーバーレイを貼った後も問題なく使用できます。
なんかものすごい高機能
様々な機能が揃っています。英文のマニュアルが公開されていますが、PDFで211ページもあります。HP 42s にあったような様々な機能――複素数計算機能、定数呼び出し、単位変換、統計演算機能、HP 15c のような行列計算機能、HP 16c のようなバイナリ演算機能、更にはハードウェアクロックやストップウォッチ機能(水晶を実装した場合)を搭載しています。プログラム機能があり、プログラムはバッテリーバックアップされます(なので、電池の交換は1個ずつ行ってください)。
マニュアルによると、HP 42s にあって WP 34s に無い機能は、グラフィック機能、ソフトキー、ビープ音です。後二者はハードウェアの都合によるものです。
スタックは4段または8段に設定できます。(以下2.8.7追記)複素数計算の場合、スタックが実部と虚部で共用なので8段に設定(SSIZE8=[h][MODE][S][S][▼][ENTER↑])した方が良いでしょう。
(2.8.7追記)関数電卓マニアにはお馴染みの tan(355/226) を計算すると、−7,497,258.19378と表示し、相対誤差は1.13×10−9です。しかし、倍精度モード(内部128ビット。WP34sの単精度は概ねIEEE754の倍精度相当)にする(DBLON=[h][MODE][D][▼][ENTER↑])と−7,497,258.18533となり、12桁精度で正しい結果が出ます。内部表現の相対誤差は−2.32×10−27となりました。これはFree42と同様です。
(2.8.14追記)倍精度モードは恐らくIEEE754のdecimal128で動いていると思われます(ソースコードを見たわけではないので推測)。DBLONすると非正規化数の最小で1×10−6176まで表せますが(正規化数は指数部が−6143~+6144)、指数部は3桁しか表示できないので指数部が4桁になる場合は「HIG」または「−HIG」(highのことか)と表示されます。[f][◀]を押すことで仮数部とともに確認できます。
(2.11.23追記)通常は上段のドットマトリクス部分に 「y.md」などの状態が表示されますが、HP 42S や 35s のようにスタックのYレジスタの内容が表示されるようにすると便利です。これには、YDON([h][MODE][Y][▼][ENTER↑])コマンドを使用します。
赤外線LEDを実装する
(この項3.1.17追加) 30bベースのほうだけ、赤外線LEDを付けてみました。赤外線LEDは、HP 82240B で印刷するときに使います。
実装の仕方は WP 34s の SourceForge プロジェクトページに「How to install crystal and IR diode.pdf」という文書があるので(但し英語)参照してください。
LEDは 3mm 径の砲弾型LEDを使用します。5mm径だと大きすぎると思われます。筐体に穴をあける必要がありますが、上の方にはLEDの配線を実装するだけのスペースが空いています。
電子工作をする人にとっては常識ですが、LEDには電流制限抵抗が必要です。これは赤外線LEDも例外ではなく、アノード(足が長いほう)に空中配線で抵抗器をはんだ付けする必要があります。上述の文書では390Ωとなっていましたが、部品箱に無かったので 330Ω で代用しました。
そして、基板上の所定の位置に銅線をはんだ付けするのですが、パッドが小さいので(たぶん1mm角くらい)やりづらいです。細かい作業に適した半田鏝を使用する必要があります。銅線も、細いものを使用する必要があります。私は AWG28(手持ちの2種類の中で細いほう)の撚線を使用しました。被覆電線を使用するため、両端の被覆を外す(そうしないとはんだ付けできない)ためにワイヤストリッパという工具が必要になります。
なお、後から実装した場合、ファームウェアの書き込みをし直すことになるので最初にやっておいた方が良いです。
機能が多い分操作が煩雑に
多くのHPの電卓がそうであるように、逆ポーランド入力を採用しています。
大量の機能があるので、ほとんどの関数が裏機能です。シフトキーも3つあり、更にメニューに隠れた関数まで結構あります。表にあるのは、「Σ+」「逆数」「冪乗」「開平」の4つくらいです。これらは裏関数にも配置されています。
操作が煩雑なのが気に入らなければ、姉妹プロジェクトとして機能を絞った WP 31s がありますので、そちらも検討しましょう。
メニューは「▲」「▼」キーの他に、キーボードのアルファベットで検索することもできます。
複素数は x + i y 形式で、スタックを2段単位で使います。このため、複素数を使う場合はスタックを8段に設定したほうが良いでしょう。極形式の複素数は直交形式に変換しないと計算できません。
16進入力の場合、「A」~「D」のキーはありますが、「E」「F」のキーはどこにあるかというと、素直に「D」の右、「➡」「CPX」でそれぞれEとFが入力できます。
セグメント・ドットマトリクス混成液晶
ハードウェアは HP 20b/30b と同じです。
表示は一般的な液晶ですが、下段には仮数部12桁・指数部3桁の7セグメント表示、上段には様々な表示が出るドットマトリクス表示、右上に幾つかのインジケータがあります。これがLEDやVFDだったら最強でしょうが、LEDは赤色でも電圧降下が2V程度あるのでコイン電池では難しいでしょう。VFDも電圧が必要ですしこれだけ薄くはならないでしょう。
(2.8.14追記)液晶の表示濃度は、[ON]を押しながら[+]または[−]で調節できます。
(2.11.23追記)どうやら液晶にクロストークが見られるようです。HP 30b に水晶を実装するときに気づき、最初は液晶を破損したと思いましたが、20b ベースの個体にもみられるようなので液晶周りの回路の都合なのかもしれません。
電池が消耗したときの挙動
(この項2.8.14追加)WP-34sは電池が消耗すると動作が不安定になるようです。FASTモードの場合ある種の処理をすると突然電源が切れ、設定が初期化されるようになります。これはSLOWモードにする([h][MODE][6][EEX])ことで回避できます。もう1つ、電池が消耗している場合に電源が入るのに時間がかかる場合があります。この場合、リアルタイムクロックがリセット(2007年1月1日になる)されます(水晶を実装した場合の話)。
BATTコマンド([h][X.FCN][B])を実行すると電源電圧が0.1V単位で分かります(スタックに置かれる)。しかし、異常が発生したときは2.9となっていました。電池が消耗するとインジケーターが表示されますが、2.5V以下にならないと表示されないので、積分など時間のかかる処理中にインジケータが表示されたら電池を交換したほうが良いと思われます。
-
購入金額
8,208円
-
購入日
2016年07月14日
-
購入場所
シリコンハウス共立(HP20bとして)
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。