DENKIグループ★電子工作ブログ★

趣味でガラクタ工作をやっています。作ったものについてまとめていきます。

【たまごっち自作】PICで発見!たまごっち(ハードウェア編)

PICマイコンとOLEDモジュールで「たまごっち」を自作するという酔狂な試み。


以前、初代たまごっちを分解した記事を書きました。
denkigroup.hatenablog.com

この分解調査で、初代たまごっちは非常に簡素な回路で構成されていることが分かっています。また、漏れ聞くところによれば初代たまごっちは4ビットマイコンで実装されているとか。20年以上経ち、マイコンや液晶のスペックも大きく向上した令和においては、アマチュアでも自作ができるのではないでしょうか。

というわけで、おなじみのPICマイコンと、アマゾンで2個1000円で入手したOLEDモジュールで、たまごっちの自作に挑戦してみました。
今回の記事では、自作たまごっちのハードウェア周りを中心に紹介します。ソフトウェア周り、すなわち自作たまごっちのゲームとしての仕様については、次回記事にて紹介します。

回路設計

使用マイコンとOLEDモジュール

まずマイコンですが、PIC16F1705を使います。14pinのミッドレンジPICです。大量のドット絵データを扱うため、8KワードというミッドレンジPICでは大きめのコードフラッシュ容量があるこの型番を選択しています。
次にOLEDモジュールですが、先に書いた通りアマゾンで2個1000円だった、こちらのOLEDです。

趣味で電子工作をやる方にはおなじみのモジュールではないでしょうか。アマゾンには販売元が違うものが何種類かありましたが、おそらくどれも(ほぼ)同じものだと思います。
Arduinoではライブラリがあり、簡単に扱えるようです。

回路図


OLEDとスイッチ3つ、デバッグ用LEDがつながっているだけの簡潔な回路です。

電源について

大元の電源(回路図のbattery)は単4の乾電池3本ですが、これだと安定化されていない約4.5Vとなります。OLEDモジュールとのI2C通信ラインは3.3Vとしなければならないので、この4.5Vを直接PICに入力してしまうと、通信ラインの電圧レベルが合いません。
ここで、OLEDモジュールには3.3Vレギュレータが載っていますので、そこで生成された3.3Vをマイコンの電源としても使うことにしました。

上記に示したランドからリード線を出し、VDD (3.3V)としてPICの電源に利用しています。

消費電流について

上記の通り電源は乾電池かつ、本家のたまごっちと同じで主電源スイッチなどはありませんので、常に電源は供給されっぱなしです。制御についてはソフトウェアの記事で述べますが、今回スリープモードを導入し、非使用時の消費電流の低減を図っています。
具体的には、OLEDが表示されマイコンも動作している通常時は2~4mA程度の消費電流ですが、ずっとこのままでは電池がすぐに切れてしまいますので、マイコンをスリープ状態にしてOLEDモジュールの電源も落とします(OLEDモジュールにはパワーオフのコマンドがあるので、それを利用)。この状態にすると、消費電流を13uAまで落とすことができました。しばらく操作しなかった場合などにスリープモードに入るようなプログラムにしています。

OLEDモジュールの制御

OLEDモジュールは、マイコンとI2Cインターフェースで通信します。先に書いた通りArduinoではライブラリがあるようですが、PICでは自分で組まなくてはいけません。
ネットで調べたところ、PICでこのモジュールの制御を試みている方が何人かいらっしゃいました。その中で非常にわかりやすく解説されている下記サイト様を参考にさせていただきました。
https://jr3tgs-homebrew.net/contents/oled_test/oled_test.html

また、このOLEDは128×64ドットの解像度なんですが、たまごっちは32×16でちょうど4分の1の解像度です。そのため4×4の16ドット分をまとめて制御することで、32×16の表示を行っています。

実装

ユニバーサル基板に実装し、3Dプリンタで作成したケースに収めました。

本家に比べてケースがクソデカ&クソダサすぎる。 それはご愛嬌ということで。

以上、自作たまごっちのハードウェア周りの紹介でした。ハードウェア周りは特に何か頑張ったわけでもないので、あっさりな内容です。
今回苦労したのはやはりソフトウェア、それもゲームとして成り立たせるためのアプリケーション層のソフトウェアです。それについては次回で紹介します。