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

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

部品が足りなくて追加注文して待っていたのですが、GW挟んだせいで届くのが遅くなってしまいました。
5月4日になってようやく届いたので再開です。

足りなかった部品はUSB TypeCを2.54mmピッチに変換する基盤くらいです。
リレーも必要かと思って注文したのですが、これは不要でした。

手持ちのリレーだと上手く動作しなかったので注文したのですが、そもそも回路が間違っていました。
リレーはトランジスタのコレクタ側に繋がないといけないんですねw
エミッタ側だとベースとコレクタが合流するからおかしくなっちゃうのかな?

トランジスタもS9018を使う予定でしたが、S9014に変更しました。
コレクタ電流(リレーのコイル電流)が40mAなので、その倍の定格じゃないといけないようです。
S9018は50mAまで、S9014は100mAまでです。
電圧はどっちも50Vくらいまでいけるので全く問題なし。

ベース抵抗も適当に10kΩ使っていましたが、以下のページを参考に正確に計算してみました。

トランジスタのスイッチ回路で適切なベース抵抗は何Ω? | CQ出版社 オンライン・サポート・サイト CQ connect (cqpub.co.jp)

そうしたら11kΩくらいでした。
だったら10kΩでもいいかな?
上記ページを見ると、抵抗が小さすぎると「電流の無駄」、抵抗が大きすぎると「スイッチ動作しない」と記載されているので、動きさえすればあんまり厳密に考える必要はなさそうです。

そんな感じで、↓のように動作確認が取れました。

上の黒いケーブルがマイコンの電源。
下の白いケーブルが充電器。
下の灰色のUSB Aのケーブルがスマホにつながっています。

制御開始ボタンで充電開始、もう1回押すと充電終了です。
今は手動で動いていますが、スマホアプリの上部に表示されているバッテリー残量(Level)を監視して、規定の残量を下回ったら充電開始、規定の残量を上回ったら充電停止。
という感じで良いかなと思います。

マイコン(ESP-WROOM-02)のコードは以下のページを参考にして作りました。

ESP-WROOM-02 TCPソケット通信 – B’Micom (dmsk.com)

LEDの代わりにトランジスタを使っている感じです。
電池残量等の情報はマイコン側では一切関与せず、あくまでも命令に従って信号を出すのみです。

スマホのコードは前回紹介したページに加えて、以下のページを参考にしています。

TCPクライアント・サーバープログラムを作成する – .NET Tips (VB.NET,C#…) (dobon.net)

フォアグラウンド サービス – Xamarin | Microsoft Docs

Androidアプリ特有の考え方になると思うのですが、バックグランドで止まらずに動かし続けるにはフォアグラウンドサービスというものを使う必要があるようです。
名前がややこしいですが、つまり”バックグラウンド”ではなく、目には見えないけど前面で動き続けるもののようです。
フォアグラウンドサービスを使わない場合、電池残量監視のループが止まってしまうので目的を果たせません。
電池残量が30%を切ったら充電開始(信号をマイコンへ投げる)、電池残量が90%を超えたら充電停止(信号をマイコンへ投げる)、という動きになります。
付随機能として、電池の温度に応じて冷却ファンを動かします。

回路的には、マイコン・リレー・冷却ファンを動かすための電源回路が1つ。
スマホ充電用の電源回路が1つ。(リレーを噛ませて上記の回路とは完全に分離しています)
という感じです。
マイコンの消費電流は80mA、リレーが40mA、冷却ファンは300mAくらいです。
1AのACアダプターで余裕ですね。
2Aあればスマホの充電まで賄えそうですが、確かスマホの規格で急速充電に2A必要だった気がします。
急速充電無しだと
充電量 < 消費電力
になりかねないのと、単純に安全を考慮して自作の回路とは分離しておきたい、という理由があるので別々にしました。

まだ完成はしていませんが、実現はできそうですね。
完成したら色々と公開するかもしれません。
しないかもしれません。