日記メインのゲームブログです。

スマホの充電をコントロールしたい

スマホゲーにプチハマり中です。
・・・ぷちどころじゃないか。
自動周回可能なゲームなので、寝てる間もひたすら動かしたいんですよね。
そうなると充電器繋ぎっぱなしじゃないといけないのですが、端末へのダメージは計り知れません。
久しぶりに電子工作をやるときが来た!

電子工作ネタは別のブログでやろうかなーと思っていたのですが、このブログの更新頻度を保てないのでこっちでやることにしました。

それはともかく。
やりたいことは以下の通り!

1、バッテリー残量に応じて自動的に充電ON-OFF切り替える

2、端末の温度に応じてUSBファン回す

過充電さえしなければいいのかなーと思っていましたが、熱持つ方がやばいらしいです。
過充電(というか充電)しなければ発熱も減らせると思うので、上記1と2は両方とも発熱対策と言っていいですね。

これを実現するためにやらないといけないことが、

1-1、バッテリー残量を取得する(スマホアプリ)
1-2、リレー使って充電ON-OFF切り替えできるようにする(マイコン)
1-3、スマホアプリからリレー制御マイコンに信号送って制御する(ソケット通信)

2-1、端末の温度を取得する(スマホアプリ)
2-2、リレー使ってUSBファンON-OFF切り替える(マイコン)
2-3、スマホアプリから制御する

こんな感じ。
バッテリー残量と端末温度(バッテリー温度)の取得は以下のページのコードで実現できました。

http://wpfthoughts.blogspot.com/2020/06/xamarin-converting-receiver-to-reusable.html

確か書いてある通りにやってそのまま動いた気がします。
もしかしたら若干手直し必要だったかも・・・うろ覚えです。
あとはここに適当にソケット通信のコード追加して、マイコン側も適当に実装してやれば完成です!(

電子回路についてですが、リレーは必要無いかもしれません。
リレーってそもそも制御回路と動力回路を切り離したいとき(動作電圧違うときとか)に使うものだと思うのですが、今回はマイコンの動作電圧もスマホの充電もUSBファンも全部5V駆動だと思うので、深いこと考えずにトランジスタ使っておけば良いような気がします。
ただリレー使えば自己保持回路が組めるので、充電中に信号出しっぱなしにする必要がなくなります。
充電はともかくUSBファンは制御回路から切り離したい気もするので、今回は勉強も兼ねてリレー使ってみようと思います。
万が一にも火事や事故は避けたいですし、安全そうな手を取ろうと思います。

とりあえず今回はそういう計画を建てています、というだけの話です。
大したプログラムじゃないのですぐ作れると思いますが、仕事でプログラミングしてると家でもプログラミングってしたくなくなるんですよねw
だから超暇で且つやる気に満ちているときくらいしか進められないですw
でもスマホのことを考えると早めに完成させたいところです・・・
お古の半分壊れたようなスマホなので最悪どうなってもいいんですけどね。

余談ですが、仕事でずっとWPFをやっていたのでスマホアプリはXamarin(XAML、C#)で作りたいと思ったんですよ。
でもAndroidの開発陣的にはJavaを推奨してるっぽくて、Xamarinで作ろうと思うとちょっとめんどくさそうでした。
今回のバッテリー関連の情報取得ですが、Xamarinだとバッテリーの残量、充電状況、充電元しか取得できないんですよ。
なんかJavaのオブジェクトを引っ張り出すみたいなやり方をすると温度とかその他の情報も取れるようになるみたいで、C#向けには単純に提供されているわけではないようでした。
Javaなんかなくとも何でも作れるからJavaの勉強はしない!と高を括っていたのですが、こういうことがあるとやっぱりやらないといけないのかなぁ・・・と思ってしまいます。