IchigoJamでコイン自動選別貯金箱・無人店舗の領収書自動発行にも

硬貨を選別することで、投入金額や貯金箱内の総額を自動集計することが出来るようになります。本ブログではトイボックス製コインルーム SELECTOR BANKにセンサーを取り付け、マイコンボードIchigoJam Sで自動集計する方法について説明します。
無人店舗などで、領収書の自動発行や、売り上げ金額の把握などにも応用できるかもしれません。
トイボックス製コインルームにセンサを取り付け、投入金額をIchigoJamで自動集計するシステムの構成例。コインルームは、縦6階建ての構造。コインの大きさに応じて、硬貨を自動選別し、各階へ振り分けて蓄える。
下図は、50円硬貨1枚、10円硬貨1枚、5円硬貨1枚を投入したときの様子です。投入金額65円の入金により、貯金箱内の合計金額は125円になりました(予め60円が入金されていた)。
投入したコインの枚数を計測し、投入金額を集計する。また、過去の投入金額の合計も表示する。

製作に必要な機器

  • コインルーム SELECTOR BANK (トイボックス製)
    https://amzn.to/2MVrUP3
  • IchigoJam S(またはIchigoJam T)
  • センサ(フォトリフレクタ TPR-105×5個、フォトインタラプタ CNZ1023×1個)
  • 抵抗器(一例:100Ω×1個、220Ω×2個、470Ω×3個、10kΩ×2個、22kΩ×1個)
  • ブレッドボード、ピンヘッダ、配線
  • その他、周辺機器(テレビ、キーボード、ACアダプタなど)

センサ部の製作

本製作の中で重要となるのがセンサ部です。コインルーム内のコインが通過するスロット部は、透明なパーツで出来ています。そこで、スロット部へ、反射型のフォトリフレクタ TPR-105を取り付けることにしました。
フォトリフレクタには赤外線LEDとフォトトランジスタが内蔵されており、コインが近接すると、赤外線の反射によってフォトトランジスタに電流が流れます。
ただし、1円硬貨が通過する最下段については、形状が異なったため、透過型のフォトインタラプタ CNZ1023を取り付けました。
反射型のフォトリフレクタ TPR-105には、4本のリード線が取り付けられています。ここでは、配線を3本に減らすために、LEDのカソード側とフォトトランジスタのエミッタをショートし、共通のGNDとして使用することにしました。
左図:フォトリフレクタ TPR-105の発光・受光面側のようす。右上の切り欠きが1番ピンを表す。
右図:裏側のようす。LEDのカソード側とフォトトランジスタのエミッタをショートした。1番ピンは左上。
上図の加工を行ったフォトリフレクタへ、3本の電線をハンダ付けします。下図の灰色の線がセンサ出力(フォトトランジスタのコレクタ)、白色がLED入力(LEDのアノード)、黒がGND(LEDのカソードとフォトトランジスタのエミッタ)です。
左図:センサ発光・受光面側から見た配線のようす。1番ピンは右上(配線=白)。
右図:背面から見た配線のようす。1番ピンは左上(配線=白)。
作成した電線つきセンサを、コインルームに取り付ける方法を説明します。
コインルームの筐体(ブルー又はグレーの半透明)中には、コイン識別用の仕切り板6枚(透明)が挿入されており、その仕切り板には、それぞれ異なる形状のコイン通過用のスロットが仕切り板の上面と下面に成形されています。
センサを取り付ける場所は、仕切り板の下面側の奥です。仕切り板の上面にセンサを取り付けると、蓄積されたコインの邪魔になり、コインが正しく選別されなくなります。
下面側のスロットには、円弧上の切り欠きがあります。下図は仕切り板を裏返したときのようすです。切り欠きの向かい側にセンサを、ポリイミドテープなどで固定してください。
動作確認・感度調整を行うために、センサをコインが落下する下側のスロット部へ、ポリイミドテープで固定したときのようす。写真は仕切り板を裏返したときのようす(コインは写真の下側から上側に向かって通過する)。
センサの取り付け位置の調整も必要です。
中央にセンサを取り付けると、穴のある50円硬貨や5円硬貨を投入したときに、2枚とカウントしてしまうことがありました。また、コインを連続投入したときに2枚のコインのうち1枚しかカウントできない懸念もあります。かといって、あまり端に寄せると、直径の小さな1円硬貨が検出できないことがありました。正しく検出できるまで、貼り替えてながら調整してください。
調整が終わったら、ホットメルトなどで接着します。実際に接着する作業の順序は、プログラムを入力して、動作確認と位置などの調整後に行ってください。
センサを接着剤(ホットメルト)で固定したときのようす。動作確認や感度調整後に接着する(いまは、未だ接着しないこと)
下図は、コイン選別用の仕切り板を筐体に戻したときのようすです。仕切り板6段中の上位
5段までを取り付けました。仕切り板の下面側にセンサやセンサの配線が取り付けられているので、硬貨の邪魔になりません。
なお、センサからは赤外線が照射されています。電源を入れた状態では、センサを覗き込まないでください。目を傷める場合があります。
赤外線は目には見えないうえ、目に入っても瞳孔が閉じないので、可視光よりも慎重に取り扱いましょう。
センサを取り付けたコイン選別用の仕切り版を筐体に戻した。写真は接着後の様子だが、接着前に、一度、組み立てて動作確認を行う必要がある。
1円硬貨用の最下段の仕切り板には、透過型のフォトインタラプタCNZ1023を取り付けます。
下図は、最下段の仕切り板の下面側です。中央のスリット上の穴がコインの通路です。左側の黒色の部分がフォトインタラプタです。
コインが通過するときに、フォトインタラプタのスリット部をコインがさえぎることで、コインを検出します。CNZ1023には、ビス止め用の耳が付いていますが、切り落として使用します。
最下段の1円硬貨用の仕切り版へ、透過型フォトインタラプタ CNZ1023を取り付けたときのようす。配線は、フォトリフレクタと同様に引き出す。リフレクタと論理が反対になるが、プログラム側で対応する。

センサをIchigoJamへ接続する

センサが完成したら、センサをブレッドボード経由でIchigoJam Sへ接続します。センサ6個×3本の計18本の配線を、下図のようにブレッドボードへ接続し、各センサのセンサ出力(フォトトランジスタのコレクタ端子)を、IchigoJamのIN1~4と、OUT1~2へ接続しました。
各センサのセンサ出力(フォトトランジスタのコレクタ)をブレッドボード経由でIchigoJamへ接続した。ブレッドボードには、各センサのLED用の電流制限抵抗と、コレクタ電流用抵抗を実装した。
ブレッドボード上には、各センサのLED用の電流制限抵抗と、各センサのコレクタへ電源を供給するためのバイアス抵抗を取り付けました。
コインルームからの配線(ピンヘッダ付き配線・奥)は、下の写真の左側から順に、3本ごとに、コインルームの最上段から最下段まで接続しました。抵抗値は各センサの感度や、IchigoJam側の内部プルアップ状態などに応じて調整しました。
IchigoJamへの配線(ブレッドボード用ジャンパ線・手前)は、写真の左側から順に、IN1、IN2、IN3、IN4、OUT1、OUT2へ接続しました。IN1、IN4、OUT6については、IchigoJamマイコン内のプルアップ抵抗からセンサ内のフォトトランジスタへ電流を流すようにしました。
電源についてはIchigoJam Sの3.3Vへ接続しました。IchigoJam Uでは供給能力不足になります。3.3V 100mA以上のレギュレータをブレッドボードへ実装してください。
ブレッドボードのようす。抵抗値は、各センサの感度や反応速度、IchigoJamの内部抵抗の有無などに応じて変更した。

感度はフォトトランジスタの抵抗を高くする、もしくはLEDの抵抗を低くすることで高まりますが、高すぎると常に検知状態となってしまいます。
また、フォトトランジスタの抵抗が高いと応答速度が低下し、硬貨の落下の加速によって、検出しにくくなることがありました。50円硬貨の検出部にはLEDを100Ωの抵抗で高輝度に点灯させたうえで、フォトトランジスタを10kΩの抵抗で感度を下げつつ、応答速度を高めました。
以下に、本製作例での調整結果を示します。なお、センサの取り付け方によっても変化するので、再調整が必要な場合があります。
各センサごとのIchigoJam接続先と抵抗器(調整後)
センサ1(500円硬貨)→IchigoJam IN1 TR用 なし  LED用 470Ω
センサ2( 10円硬貨)→IchigoJam IN2 TR用 22kΩ  LED用 220Ω
センサ3(100円硬貨)→IchigoJam IN3 TR用 10kΩ  LED用 220Ω
センサ4(  5円硬貨)→IchigoJam IN4 TR用 なし  LED用 470Ω
センサ5( 50円硬貨)→IchigoJam OUT1 TR用 10kΩ  LED用 100Ω
センサ6(  1円硬貨)→IchigoJam OUT2 TR用 なし  LED用 470Ω

連続投入にも対応 IchigoJam BASIC用プログラム

コインを、ゆっくり1枚づつ投入するのであれば、プログラムは簡単です。しかし、コインの落下中にも次々にコインが投入されることが考えられます。
そこで、センサの変化状態を配列変数へ代入し続け、3秒以上、変化が無くなった段階で投入金額を集計するプログラムを作成しました。また、センサの変化を検出する部分(行番号140~160)については、なるべく処理を軽減し、検知漏れを防止しました。
1 cls:?"Coin Room for IchigoJam
2 clv:out 1,-1:out 2,-1
3 T=180:?"ソクテイ ジカン T=";T
4 Y=0:?"キンガク Y=";Y
100 @IN
110 I=6:B=#3F
120 if in(1) cont
130 clt:led1
140 C=in()&#3F
150 if tick()>T goto @PULSE
160 if C=B goto 140
170 clt:B=C:[I]=C^32:I=I+1
180 '? bin$([I])
190 if I<70 goto 140
200 @PULSE:led 0
210 for J=0 to 5
220   [J]=0:B=1
230   for K=6 to I-1
240     C=[K]>>J&1
250     if C<>B B=C:[J]=[J]+1
260   next
270   [J]=[J]/2
280 next
300 @COIN
310 for J=0 to 4
320   [J]=[J]-[J+1]
330 next
340 gsb @PRINT
350 goto @IN
500 @PRINT
510 ?" \500:";[0]:C=500*[0]
520 ?" \100:";[2]:C=C+100*[2]
530 ?"  \50:";[4]:C=C+50*[4]
540 ?"  \10:";[1]:C=C+10*[1]
550 ?"   \5:";[3]:C=C+5*[3]
560
?"   \1:";[5]:C=C+[5]
570 ?"ニュウキン: \";C:Y=Y+C
580 ?"ゴウケイ: \";Y:?
590 rtn

ご注意

誤検知を減らすための工夫や調整を行うことで、コインルーム製品そのものの誤選別率と同等の安定した検出精度を得ることが出来るようになりました。
しかし、市販品のような精度はありません。誤検出によって、金額が異なったとしても支障のない範囲で、ご利用ください。いかなる損害が発生したとしても、当方は、一切の責任を負いません。
なお、製作のばらつきや、周囲の輝度、コインの状態などの影響で、誤検出率が高まることもあります。
by ボクにもわかるIchigoJam用マイコンボード

IchigoJamでキーボードから「¥マーク」を入力する方法

IchigoJamの文字のうち、文字コード番号#20(16進数)以降は、全てキーボードから入力することが出来ます。
それでは、「¥」マークは、どのようにして入力するのでしょうか?
「¥」を入力したいので、キーボードの[¥]を押してみよう。

逆スラッシュが表示されれば正常

まずは、キーボードの[¥]を押してみて下さい。「\」が表示されれば正常です。一体、どういうことでしょう。
¥マークは、コンピュータで使用することも多い文字なので、パソコンが8ビットだった時代から、キーボードやコンピュータ用の文字として国内のJIS規格で定められていました。しかし、これは日本円を示す日本特有の記号です。日本以外の多くの国では、後述するASCII(アスキー)規格が使われています。
例えば、日本語版のWindowsでは、ファイル・パスを表示するときに「C:¥Users¥wataru¥Documents」のように¥マークで区切られますが、海外では「C:\Users\wataru\Documents」のように表示されます。「\」の方が読みやすいだけでなく、木の根元から枝分かれしてゆく木構造の様子が表現されています。
IchigoJamの文字コード表(CC BY 斎藤史郎  http://comich.net/ichigojam/chrtable16n.pdf)の上2列以外はキーボードから入力することが出来る。
では、「¥」マークはどうやって入力するのか?

文字コードについて

コンピュータ内で文字を扱う方法として、最も一般的な方法が、ASCII(アスキー)コードやUTF-8コードなどの文字コードを利用する方法です。これらは、各文字ごとに数値が定められており、コンピュータ内では、文字を文字コードという数値で取り扱います。
IchigoJamでも、#00~#FF(16進数:10進数で0~255に相当)の数値の一つ一つに文字が割り当てられています。
文字「A」のコードを知りたいときは、「? hex$(asc("A"))」のように入力すると16進数の文字コードが表示されます。その反対に、文字コード#B1の文字を表示するには、「? chr$(#B1)」と入力します。
実行例を以下に示します。文字「A」のコードが#41、文字「ア」が#B1であることが分かるでしょう。
? hex$(asc("A"))
41
OK
? chr$(#B1)

OK
さて、¥記号はJIS規格のJISコードでは#5Cです。しかし、ASCII(アスキー)文字コードの#5Cには「\」が定められています。このため、IchigoJamではASCIIコードを優先し、「\」を表示します。
ややこしいですが、同じ¥記号を使う中国に比べれば、問題の少ない方法です。中国で¥(人民元)マークを示すときは、ASCIIコード#24の「$」を「¥」と表示する場合があります。このため、値札などに「$20」と書かれていても、¥20元であることもあります。誤解したときの齟齬は大きく、混乱を招く原因になることは明らかです。
以上の通り、日本を除く、多くの国のコンピュータ機器で、#5Cが「\」を意味することが分かりました。例外もあります。多くのキャラクタ液晶ディスプレイでは、#5Cで「¥」が表示されます。日本が世界中へ液晶ディスプレイ用の制御ICを広め、現在でも多くの互換ICが使われているためです。もし、日本も中国のように、$を\に置き換えていたら、どうなっていたでしょうか。

キーボードから文字を入力する方法

当然かもしれませんが、IchigoJamに接続したキーボードの[A]キーを押すと文字「A」を入力することができます。
小文字を入力するときは[Shift]キーを押しながら入力します。カタカナを入力するときは、[カタカナひらがなローマ字]キーを押してからローマ字で入力します。キーボードに表示されている、カナの小書き文字(小文字)や濁点、半濁点は使用できません。これらはローマ字入力で対応します。英数字に戻すには、再度、[カタカナひらがなローマ字]キーを押します。
文字コード#E0~FFは、[Alt]キーを押しながら[0]~[9]、[A]~[V]のキーを押します。例えば、[Alt]+[V]でイチゴマークが表示されます。また、文字コード#80~9Fは、[Alt]と[Shift]を押しながら[0]~[9]、[A]~[V]のキーを押して入力します。
アルファベット大文字:そのまま入力
数字:そのまま入力
カタカナ:[カタカナひらがなローマ字]を押してからローマ字入力

「¥」マークの入力方法

このブログへアクセスしていただいた方の多くが、知りたかった結果について、説明します。ここまでの前置きが長いのは、わざとです。
インターネットが普及し、多くの疑問がネット検索で簡単に解決できるようになりました。しかし、ネット検索で簡単に得られる情報というのは、多くの人が疑問に思った内容に限られます。
例えば、¥マークの入力方法を様々なキーワードで探してみてください。検索では上手く見つけられないかもしれませんが、実は、以下に記載されています。
イチゴジャムレシピ(キーの割り当て)
https://15jamrecipe.jimdo.com/basic/はじめの一歩#cc-m-10946748992
将来、世間に新しい価値を創出してゆこうと思ったときにも、もちろんネット検索が役立ちます。しかし、これまで世の中に無かったものや、あまり知られていない専門的な情報については、論文や書籍といった文献から、必要な情報を探し出したり、類似の情報から考える必要があります。そこで、この記事は少し意地悪な書き方をしてみました。
欲しかった情報以外にも、興味のある情報や、ボクの考え方などが少しでも伝わればと、思います。
最後なりましたが、[カタカナひらがなローマ字]キーを押してから[¥]キーを押すと、キーボードから¥マークを入力することが出来ます。
by ボクにもわかるIchigoJam用マイコンボード

モバイルLTE対応 IchigoSoda を節電して乾電池による長時間稼働

Softbank 4G LTE回線に対応したIchigoSoda(基板裏面に要sakura.io LTEモジュール・別売り)を乾電池で動かす方法について説明します。
電源やWi-Fiの確保が難しい場所に設置することが出来るので、ポスト内の郵便物検知やガレージのシャッター開閉状態検知、納屋の人感センサ検知、屋外公衆トイレの使用状態検知、イノシシ捕獲機の扉の状態検知などに応用できるでしょう。
とくに本記事のポイントとなる節電制御は、乾電池駆動や、太陽電池と鉛蓄電池などを使ったシステムに欠かせない方法です。IchigoJam BASICであれば、節電制御が標準サポートされているので、簡単に実現することが出来ます。
IchigoSoda + sakura.io LTEモジュール(基板裏面に装着)を乾電池で動かしてみた。タクトスイッチの状態が変化したときに、スイッチ状態をLTE送信することが出来る。

実現には節電制御が必要

モバイルインターネット回線を利用した通信モジュールは、消費電力が大きいので、乾電池で長時間稼働させることが難しいという課題があります。このため、動作が不要なときに機能を停止(スリープ)制御することで、節電を行う方法が、一般的に用いられています。
本ブログでは、以下の2つの節電方式を実現する方法について、紹介します。
  1. ワンショット節電駆動方式(プログラム名:SAKURA IoT TX Ino 44 1)
    IchigoSoda上のタクトスイッチSW2を押す(BTN信号をLレベルにする)ことで、IchigoJam BASICを起動し、sakura.ioモジュールからLTE送信する。状態が変化しても、すぐに戻る利用形態に適しており、IoT押しボタンや、IoT人感センサなどへの応用が可能。節電効果は高い。
  2. サイクリック節電駆動方式(プログラム名:SAKURA IoT TX Ino 44 2)
    5秒ごとにタクトスイッチSW2の状態を確認し、状態が変化したときに、sakura.ioモジュールからLTE送信する。状態が5秒以上継続する利用形態に適しており、IoTドア状態センサ、窓状態センサ、トイレ使用状態センサ、イノシシ捕獲センサなどへの応用が可能。節電効果は方式1よりも数割劣る。
なお、sakura.ioモジュールの電源を切るので、送信を行うたびに、モジュール起動と回線接続を行う必要があります。起動には約1分を要するので、センサによる検出後LTE送信を行うまでに、約1分の遅延時間が生じます。

1. ワンショット節電駆動方式

IchigoSoda上のタクトスイッチSW2を押すと、LTE送信を行い、送信後にsakura.io LTEモジュールの電源を切る節電制御に対応したIoT機器を製作します。以下に、節電手順を示します。
予めプログラムをIchigoJam BASICのファイル番号0に保存しておき、IchigoSodaのタクトスイッチSW2を押下したまま、電源スイッチSW1をONにして、プログラムを自動起動します。
自動起動したプログラムは、sakura.io LTEモジュールを起動してからLTE送信を行います。LTEモジュールを起動するには約1分の時間を要します。
送信後、LTEモジュールの電源を切り、IchigoJamをSLEEPコマンドで停止させ、BTN信号を待ち受ける節電状態にします。
1-1. IchigoSoda によるsakura.io LTEモジュールの電源制御
IchigoSodaには、LTEモジュールの電源を制御するための回路が搭載されています。基板上のWAKEスイッチ(下図)を左側にスライドしておくこと、IchigoJam BASICコマンドの「OUT 8,0」でLTEの電源をOFF、「OUT 8,1」で電源をONにすることができます。
OUT 8,0    :' LTE OFF
OUT 8,1    :' LTE ON 
WAKEスイッチを左側にスライドすることで、IchigoJam BASICからLTE電源の制御が行える。
しかし、現行バージョン(SCO-ICG-02-A)のIchigoSodaの回路には、不具合があり、少し、改造が必要です。(※この改造を行うと、OUT 8,1を実行しなければ、sakura.io LTEの電源が入らなくなります。)
次節のサイクリック節電は、改造しなくても動かせるので、改造したくない人は、後半へ、進んでください。
改造方法は、WAKEスイッチのすぐ下にある抵抗器R4を取り外すだけです。ただし、部品が小さいので、ハンダ付けに慣れていない人には、少し難しいです。
はじめに抵抗の両端子へハンダを盛ってから、こて先の細い2本の半田ごてで両端子を挟み込んで持ち上げると、比較的、簡単に取り外すことが出来ます。利き手で無い方の手のコントロールが意外と難しいかもしれません。ハンダ付けに慣れている方であれば、こて先が2mm以上の半田ごてを使って、両端子を同時に熱したり、手早く両端子を交互に熱したりして、取り外すことも出来るでしょう。
IchigoSoda上の抵抗器R4を取り外したときの様子。部品が小さいので、作業に注意する。
他にも、電源表示用のPower LED (LED 2)でも8mWほどの電力を消費しています。抵抗R19を取り外すことで、節電することが出来ます。ただし、電源をONにしたときに、Power LEDが点灯しなくなります。
省エネ用のハードウェア改造まとめ
  • WAKE信号の電圧変換回路部・プルアップ抵抗(R4・1kΩ)の取り外し
    取り外す理由:IchigoJamがSLEEPしたときにsakura.ioモジュールがONしてしまう(不具合)
    省エネ効果:17 mW (3.3mA×5V) + sakura.ioモジュールの消費電力
  • Power LED部の電流制限抵抗(R19・1kΩ)の取り外し
    取り外す理由:LED動作による消費電力の削減
    省エネ効果:8 mW (2mA×3.8V)
1-2. IchigoJam BASIC用プログラム SAKURA IoT TX Ino 44 1
キーボードを接続する場合は、必ず、アルカリ電池を取り外し、電源用USB端子から5Vの電源を供給してください。新
の単3アルカリ乾電池の初期電圧は1本あたり約2V程度あり、直列4本だと7V以上になります。IchigoSodaは7Vでも動作しますが、キーボードが故障する場合があります。
方式1のワンショット節電駆動方式のプログラムを以下に示します。プログラムを入力または転送後、「SAVE 0」でファイル番号0へ保存してください。行番号4のS=1は、節電動作の設定です。S=0で節電しない動作になります。
節電動作時はテレビ表示が消えます。プログラムを停止させるときはESCキーを押したまま、タクトスイッチSW2(BTN)を押し、タクトスイッチだけを離します。ESCキーは停止が確認できるまで押したままにしてください。
new
1 cls:?"SAKURA IoT TX Ino 44 1
2 ?"CC BY Wataru Kunino
3 ?"ボタン/センサ ニュウリョク BTN
4 S=1:?"ショウデンリョク S=";S
100 @MAIN
110 B=btn()
120 if inkey() cont
200 @ON
210 out 8,1
220 poke #880,1,0,1,0,0,0,0
230 I=!i2cr(#4F,#880,3,#884,3)
240 ?"Status I2C=";I;
250 if I I=(peek(#886)=#80)
260 ?" LTE=";I
270 if I goto @TX
280 gsb @SLP
290 goto @ON
300 @TX
310 poke #880,#21,#A,1,73,B,0,0
320 poke #887,0,0,0,0,0,B^#63
330 ?"LTE_Send=";B;" ";
340 I=i2cw(#4F,#880,13)
350 if I ?"ERR":goto @MAIN
360 ?"OK":gsb @SLP
400 @OFF
410 out 8,0
420 if btn() gsb @SLP:cont
430 if S sleep
440 end
500 @SLP
510 led 0:wait 300,!S:led 1
520 rtn
動作確認が完了したら、電源スイッチSW1をOFFにし、キーボードを外してから、直列4本の単3アルカリ乾電池を接続します。IchigoSodaのCN5のGND端子に乾電池のマイナス側を、5.0V端子に乾電池のプラス側を接続してください。

2.サイクリック節電駆動方式

こんどは、5秒間隔でBTN信号を確認し、変化があれば、LTE送信を行うサイクリック節電駆動方式です。BTN信号の状態を5秒ごとにしか確認しないので、タクトスイッチSW2を、5秒以上、押し続ける必要があります。例えば、ドアセンサ(リードスイッチ)のように、変化後の状態が、一定時間、継続する用途向けです。
2-1. サイクリック節電駆動方式のハードウェア
サイクリック節電のプログラムは、前述のハードウェアの改造をしなくても動作します。しかし、IchigoSodaの回路の不具合で消費電力が3倍くらいに増えます。一方、ハードウェアの改造を行った場合は、ワンショット駆動に比べて、2割程度の消費電力増にとどまります。
送信頻度や条件に左右されますが、未改造で1週間程度、改造品で1か月程度の動作が期待できるでしょう(執筆時は未確認・試算値)。
改造なし:ワンショット駆動に比べて、消費電力が約3倍(1週間程度の動作)
改造あり:ワンショット駆動に比べて、消費電力が約1.2倍(1か月程度の動作)
2-1. IchigoJam BASIC用プログラム SAKURA IoT TX Ino 44 2
プログラムを以下に示します。キーボード接続時は、乾電池ではなく、USBから5Vを供給してください。
5行目のT=24は、変化時の送信に加えて、定期送信を行うための設定です。この設定は、Kunio Sakurai様からの提案で追加しました。T=24だと24時間ごとに、センサの値とは無関係に、送信を行います。最大値はT=45の45時間です。T=6のように小さくすると、送信頻度が増し、電池の持ち時間が短くなります。なお、時間は正確ではありません。
new
1 cls:?"SAKURA IoT TX Ino 44 2
2 ?"CC BY Wataru Kunino
3 ?"ボタン/センサ ニュウリョク BTN
4 S=1:?"ショウデンリョク S=";S
5 T=24:?"ソウシン カンカク T=";T;"ジカン"
10 'ショキカ
20 T=T*720:C=0
100 @MAIN
110 B=btn()
120 if inkey() cont
130 if A<>B goto @ON
140 gsb @SLP
150 out 8,0
160 C=C+1:if C>T C=0:goto @ON
170 goto @MAIN
200 @ON
210 out 8,1
220 poke #880,1,0,1,0,0,0,0
230 I=!i2cr(#4F,#880,3,#884,3)
240 ?"Status I2C=";I;
250 if I I=(peek(#886)=#80)
260 ?" LTE=";I
270 if I goto @TX
280 gsb @SLP
290 goto @ON
300 @TX
310 poke #880,#21,#A,1,73,B,0,0
320 poke #887,0,0,0,0,0,B^#63
330 ?"LTE_Send=";B;" ";
340 I=i2cw(#4F,#880,13)
350 if I ?"ERR":goto @MAIN
360 A=B:?"OK":gsb @SLP
370 goto @MAIN
500 @SLP
510 led 0:wait 300,!S:led 1
520 rtn

関連情報

以下で、IchigoSodaの接続方法に関する詳しい解説を行っています。本記事で不明な部分や、sakura.io側での動作確認方法については、下記のウェブページと確認ツールをご参照・ご利用ください。
IchigoSoda / sakura.io の接続方法:
Websocket 確認ツール Message IoT:
Websocket 確認ツール Message IoT Token保存機能つき:

考察

sakura.io LTEモジュールを停止することによる有効性は、確認するまでもなく明らかです。しかし、紹介した2つのプログラムでは、sakura.io LTEモジュールの起動待ち中の約1分間に、IchigoJam側をサイクリック節電駆動させています。この部分の有効性は、動作条件によって変化するので、本製作条件における試算を行い、確認しました。
sakura.io LTEモジュールの起動待ち中、サイクリック節電により、約15mAの消費電流を削減することが出来ます。これは、900mA秒のエネルギー削減に相当します。
一方で、5秒間隔で確認を行うため、実際にsakura.io LTEモジュールの起動が完了してから最大5秒間、平均2.5秒の検出遅延が発生します。平均遅延時のエネルギーは約150mA秒です。
以上から、これらの差の750mA秒のエネルギー削減が可能であり、LTEモジュールの起動待ち時間のサイクリック節電動作が有効であることが分かりました。
参考(IchigoJam スリープ方法・省電力動作・消費電流)

むすび

IoTセンサに欠かせな
節電駆動機能が標準サポートされている IchigoJam BASICを使うことで、乾電池による長時間駆動を簡単に実現できることが分かりました。
実現性を示した本記事が、IchigoJam×sakura.ioの発展に少しでも貢献できれば、幸いです。
本記事は、Kunio Sakurai様からのご意見をもとに、作成しました。状況を詳しく説明していただいたおかげで、実現場での使用状況を知ることが出来ました。パソコンに不慣れなご様子だったので、ご意見の入力や確認にも多くの時間を割いていただきました。厚く御礼申し上げます。
by ボクにもわかるIchigoJam用マイコンボード