工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

気づいたら、LINEの通話呼び出し(音またはバイブレーション)がされなくなっていたので直した

概要

LINEの通話呼び出しがされなくなっていたので直した。


背景と目的

最近、自分や周りの人のスマホで、LINEの通話がかかってきたときに音もバイブレーションもなく気づけないというトラブルが起きていた。メッセージよりも即時性が求められる通話の呼び出しがされないのは不便なので、ちゃんと呼び出しされるように直す。


詳細

1. 環境

f:id:dekuo-03:20200906214919p:plain


2. 調べる

Web上に何かしら情報はあるだろうと探してみた。以下を見てどうにかなりそうなので、参考にした。

appllio.com


3. 直す

結論から言うと、LINEアプリ内の通知に関する設定を直せばOKだった。 LINEのホーム > 設定 > 通知 と進むと、下の方に通話に関する通知設定がある。私の場合、以下のように音声なしとなっていた。

f:id:dekuo-03:20200906214938p:plain

なので、

  • "アラートを受け取る"を選ぶ
  • "ポップアップ"を有効にする

という2つを行った。

f:id:dekuo-03:20200906215125p:plain

試しに、通話呼び出しをしてみたところ、ちゃんと呼び出されるようになった。(私の場合、呼び出し音はなくしているのでバイブレーションのみ)AQUOSフォン(私のモデルとは違う)を使っている周りの人も同じ設定変更で、ちゃんと呼び出しされるようになった。


4. 呼び出しされなくなった原因

はっきり言って、よくわからない。とはいえ、自分でいじった記憶もないし、周りの人も同じ反応であることを考えると、機種固有機能やソフトウェアアップデートによって、何らかの影響を受けているのではないかという気がしてならない。2であげた参考サイトに、AQUOSフォンでは高度なマナーモードという機能があって、それの影響をほのめかす記述があるのも気になる。とはいえ、LINE内の設定自体が影響を受けるのも考えにくいので、こちらはLINEのアップデートのせいかも?いずれにしろ、原因ははっきりしない。


まとめと今後の課題

LINEの通話呼び出しがされるようになった。とはいえ、もともと設定を変えた記憶がないので、もし本当に勝手に変わっていたとすると、納得がいかないなあ。


ソーラー発電式自動水やり器を作る(5) --- 無動作時消費電力の低減 ---

概要

自動水やり器の無動作時消費電力を低減させるための回路の変更を行い、無駄な消費が減ったことを確認した。


背景と目的

前回完成した自動水やり器だが、陽が落ちてソーラー発電がなくなると、意外と電池の電圧が下がるのが速いことに気づいた。そこで、消費電力を低減させるための回路の変更を行う。


詳細

1. 現状

以下が、ある日の電池電圧の低下の様子。日中よく晴れていたにもかかわらず、明け方には、最大値から0.4V程度下がってしまう。これだと、天候不順が続くと心配だ。


2. 原因

現在の回路構成を調べたところ、

  • 土壌水分センサが無動作時も約5mA消費している
  • ポンプを駆動するリレーモジュールの一次側についているLEDが無動作時も点灯しており、約3mA消費している

ことがわかった。まあ、作っている最中からなんとなく気になっていはいたが、やっぱりそうだった。


3. 変更

3.1 土壌水分センサの電源供給をマイコンのGPIOでON/OFFする

以下が変更後の回路。トランジスタQ2,Q3によるスイッチを構成し、ESP32のIO12をHIGHにしたときだけ出力PWR_MOISTから土壌水分センサに電流が供給されるようにした。これにより、マイコンスリープ中は消費電力はほぼ0。ただ、マイコンでONしてから安定動作するまでのタイムラグを考慮して、ONから計測までの間に少しディレイを入れるように、マイコンのプログラムを変更しておいた。ちゃんと動作している。


3.2 LEDを削除する

LEDは箱に入れてしまえば見えないので、ついていても付いていなくても変わらない。そこで、物理的に削除することにした。


4. 動作確認

変更後は、明らかに夜間でも電池の電圧が下がりにくくなっている。効果は十分あったといえる。※2ポイントだけやけに低い電圧値があるが、これは変更前の日のデータが混ざってしまった編集ミス。


まとめと今後の課題

自動水やり器の無動作時消費電力を低減させることができた。これで悪天候が続いても安心だ。


ソーラー発電式自動水やり器を作る(4) --- マイコンソフトの製作、完成 ---

概要

前回に引き続き、マイコンソフトの製作を行い、システム全体が完成した。


背景と目的

前回に引き続き、マイコンソフトの製作を行い、完成させる。


詳細

1.主な仕様

やりたいことは以下。

  • 一定時間ごとに起動し、それ以外の時間はできるだけ消費電力を下げるためスリープする
  • 土壌水分センサ、BME280、水瓶の水位センサでそれぞれ計測を行う
  • 土壌水分センサの値が一定値を上回る=乾燥している場合、ポンプを動かす
  • ポンプを動かした場合には、IFTTTを使ってLINEに通知する
  • 水位センサで水瓶の水切れを検出した場合は、IFTTTを使って通知する
  • 起動ごとに、センサの計測値をIFTTTを使ってGoogleスプレッドシートに記録する


2.実装

具体的なコードは割愛するが、方法を大まかにメモ。

2.1 一定時間ごとに起動、動作完了後スリープ

この動きは、過去に作ったリモート水位センサと同じなのでそれに倣って、一定期間のディープスリープをすればOK。

dekuo-03.hatenablog.jp


2.2 土壌水分センサ、BME280、水位センサの計測

土壌水分センサはアナログ入力、BME280はI2C、水位センサはGPIOを読み取ればよい。BME280だけちょっと困ったのは、BME280があまりにもいろいろなところで使われているせいか、Arduino用のライブラリだけでやたらと数があること。何が決め手ということもないが、今回はスイッチサイエンスが公開しているものを使用した。

github.com

基本的に、サンプルコードと同じ流れなので特に変わった部分はないが、最初ちょっと違うサンプルを見ていてうまく動かず躓いた。I2Cをbeginして、bme280の初期設定をして、readTrimメソッドを呼ぶという手順を忘れない。

  // BME280初期化
  Wire.begin();
  bme280.setMode(
    BME280_ADDRESS, //I2C Address
    1, //Temperature oversampling x 1
    1, //Pressure oversampling x 1
    1, //Humidity oversampling x 1
    3, //Normal mode
    5, //Tstandby 1000ms
    0, //Filter off
    0  //3-wire SPI Disable
  );
  bme280.readTrim();


2.3 土壌水分センサの値が一定値を上回る=乾燥している場合、ポンプを動かす

アナログ入力の値を読み取って、基準よりも大きければ乾燥している。その基準をどこにするかだが、以下が販売元が公開している空気中と水中での値で校正する方法。まあ、とはいえ毎回校正できるわけではないので、生の値で適当に1つ基準を決めた。その値より大きい値であれば乾燥していると判断して、ポンプを動かす。ポンプは、GPIO出力を一定時間HIGHにするだけ。

wiki.dfrobot.com


2.4 ポンプを動かした場合には、IFTTTを使ってLINEに通知する

給水したら、LINEで通知を受ければちゃんと IFTTTを使ってLINEに通知するには、thisにWebhookチャンネルのRecieve a web requestトリガー、thatにLINEのsend a messageアクションを選択。ESP32からは、JSONボディを作ってWebhooksチャンネルのエンドポイントに投げればよい。WiFiだとか、HTTPSリクエストについては、Arduino-esp32のWiFiClientSecureライブラリのサンプルの通りやればよい。 通知内容は、


2.5 水位センサで水瓶の水切れを検出した場合は、IFTTTを使って通知する

水切れについても、同様に通知すれば水瓶自体に給水するタイミングを知ることができて便利。 やり方は、2.4と同じ。


2.6 起動ごとに、センサの計測値、電池電圧などをIFTTTを使ってGoogleスプレッドシートに記録する

電池電圧は、アナログ入力を読む。AD変換値と電圧の対応は回路構成から決まる。 これもIFTTTを使って、thisにWebhooksチャンネルのRecieve a web requestトリガー、thatにGoogleスプレッドシートチャンネルのAdd row to spreadsheetアクション。IFTTT連携の注意点として、Googleドライブ内のパスに日本語が入っているとうまくいかないので、日本語の入らないパスにシートを置く。シート名も日本語が入らないように。

以下のような感じで溜まっていく。センサ値がたくさんあるが、IFTTTのWebhooksチャンネルは一度に3種類までしか送れないので、センサ計測値、水やり実施有無、電池電圧に分けて記録。


ここまでで全体が完成した。ソーラー充電を含めてちゃんと動くか、しばらく試運転していこうと思う。


まとめと今後の課題

自動水やり器が完成した。