より電池寿命を延ばすには、スリープ時間を長くします。ここではスリープ時間を20分にしてみました。MixJuice側は最大約60分まで設定することが出来ます。一方、IchigoJam側のwaitコマンドは最大9分までしか指定できません。そこで、複数回に分けて実行する必要があります。ここではIchigoJamを1秒ごとに起動し、MixJuiceが動作していなければ、すぐにスリープするようにしました。
プログラムの行番号7の変数Wに測定間隔を「分」の単位で入力してください。行番号8で「秒」に変換して処理を行います。
サンプルプログラム(3)乾電池駆動:約20分毎に起動
new
1 cls:?"Ambient":uart1
2 'MJ PCT application/json
3 'MJ POST START ambidata.io/api/v2/channels/ここにチャネルIDを書く/data
4 '{"writeKey":"ここにライトキーを書く","d1":"#"}
5 'MJ POST END
6 ?"アナログ ニュウリョク A=IN2
7 W=20:?"ソクテイ カンカク W=";W;" min."
8 V=W*60/63*60:video0
9 ' CC BY Wataru Kunino
rem https://bokunimo.net/bokunimowakaru/cq/15
100 'MAIN
110 P=#C1A
120 A=0:forI=1to10:A=A+ana(2):next:?"ana(2)=";A
130 gosub600:gosub600:gosub600:gosub600
200 'MJ SLP
210 ifinkey()goto210
220 ?"MJ SLEEP ";W*60:wait30:I=0
230 ifinkey()goto230
240 ?"MJ VER":wait30
250 ifinkey()=asc("'")goto200
300 '15 SLP
310 ifinkey()goto310
320 led0:wait57,0:led1:I=I+1
330 ifI<Vgoto310
340 ifinkey()goto340
350 ?"MJ APS":wait33
360 ifinkey()<>asc("1")goto300
370 goto100
600 'TX
610 ifpeek(P)<>asc("'")letP,P+1:goto610
620 P=P+1:ifpeek(P)=asc("#")?A;:goto620
630 ifpeek(P)<>0?chr$(peek(P));:goto620
640 ?:return
主な修正部の解説:
行番号7:測定間隔を「分」の単位で入力するように修正(1分から60分)まで設定可能。
行番号8:IchigoJamのスリープ時間Vを設定。MixJuiceよりも5%だけ短くする。TV出力OFF。
行番号120:IN2端子から10回入力。変数Aは、その合計値。
行番号220:MixJuiceをスリープに移行する。変数Iを0にセットする。
行番号300:ここからがIchigoJamのスリープ処理。
行番号320:約1秒間だけIchigoJamのスリープを実行する。変数Iに1(秒)を加算する。
行番号330:変数Iのスリープ時間が、V(秒)以上になるまで行番号310に戻る。
行番号350:ネットワークに接続されているかどうかを確認する。
さらに電池寿命を延ばすには、送信間隔やIchigoJamの待機間隔を長くします。低消費電力のレギュレータへ交換します。レギュレータによってはスタンバイ電流が0.1mA以下のものもあり、待機電力を大幅に削減することができるでしょう。