ボクにもわかる電子工作

Raspberry Pi、IchigoJam、Wi-Fi、BLE、XBee、RN-42、ESP-WROOM-02、ESP32
Espressif製Wi-FiモジュールESP32-WROOM-32を使い、シンプルな超簡易的周辺回路で動作する「IoTセンサの実験」を行ったところ、295日間(9.7か月)の動作が確認できました。

イメージ 1
超シンプルな回路で、単3アルカリ乾電池2本で、295日間(9.7か月)の長期間動作を実現した。

実証結果

下図は、モノタロウ製の単3アルカリ乾電池2本をESP32-WROOM-32モジュールへ直結し、送信間隔60分で動かしたときの、乾電池2本分の電圧の推移です。295日(9.7か月)にわたって動作し続けました。

イメージ 2
単3アルカリ乾電池2本をESP32モジュールへ直結することで、295日(9.7か月)の動作(送信間隔60分)が行えた。縦軸が電池電圧、横軸が経過月数。

上図の横軸の先頭「12/29」は、実験の開始日2017年12月29日を示します。横軸の主目盛の間隔は1か月、補助目盛は1週間です。
3月末までは徐々に電圧が下がり、4〜5月は2.8V付近を維持します。その後、ふたたび徐々に下がり、2.65Vで停止しました。
3月末の1週間ほどの期間には、2.8V前後を約0.03Vの変動を繰り返しています。この期間は、ESP32-WROOM-32モジュール内のレギュレータが2つの動作状態をもっており、そのどちらかをとっていたため考えられます。

超シンプル回路の背景

この実験を行った背景を説明します。
(興味の無い方は、次節の「実験方法」へ進んでください)

ESP32-WROOM-32モジュールのディープスリープ時の待機電力は、旧モデルESP-WROOM-02の60μAに対して20μAと低い点、プロセッサの高速化により処理時間を短く出来る点などから、旧モデルと同等以上の動作期間が実現できると言われています。

しかし、実使用状態では、起動時の突入電流の大きさから、旧モデルの半分以下の期間しか動作しないことが多くありました。突入電流が生じている状態で適切に起動させるには、500mA以上の供給能力がある電源レギュレータと、大容量の低ESRコンデンサが必要ですが、こういった部品の多くは、待機電流が大きく、また電圧降下により電池の終止電圧を高めてしまいます。(失敗例=https://t.co/8LAyYYyoEv
待機電流は、製作段階で確認することができます。しかし、電池の消耗とともにESP32モジュールが起動しなくなり、電池を使い切ることなく停止してしまうので、製作段階で確認した待機電流から電池寿命を試算しても、期待通りの結果が得られません。

そこで、「どうせ電池を使いきれないのであれば」と、
割り切った回路が、「直列2本の乾電池を直結するシンプル回路」です。

ところで、かつて(2016年12月時点)のESP32-WROOM-32のデータシートには、乾電池2本直結による動作の可能性が示されていました(電源電圧の入力範囲が2.2V〜3.6Vとなっていた)。
しかし、実測では2.7Vを下回ると動作しなくなるので、実際に乾電池2本直結で動かした例は見当たりませんでした。
さらに、2017年9月には、データシート上の動作電圧も2.7V〜3.6Vに訂正され、乾電池2本の直結動作が難しいことが明らかになりました。多くの乾電池駆動の機器は、乾電池1本あたり1V前後まで動作します。1本あたり1.35Vまでしか動作しないESP32-WROOM-32は、電池を使い切らない状態で停止してしまいます。

始めから無駄だと分かっている実験
それを行うのは、良いアイデアが思いつかないボクだけかも

イメージ 4
電池の開放電圧が2.9Vのときは起動するが、2.7V以下だと起動に失敗し、リセット処理が繰り返される様子

このような背景で実験に着手しました。
電源回路を省略することで、待機電力の大幅な削減と、電圧降下の抑制効果が図れます。

その結果として、一般的なレギュレータ(秋月などで手軽に手に入るレギュレータ)を使用するよりも、長寿命化することができました。

実験方法

実験に使用したESP32-WROOM-32は、秋月電子通商製のDIP化キットAE-ESP-WROOM-32です。
単3乾電池2本用の電池ボックスの電源コード(赤)をESP32-WROOM-32の3V3へ、電源コード(黒)をGNDへ接続し、低ESRのコンデンサ1000μFをこれらの端子へ並列に挿入しました。
また、電圧モニタ用に、電源端子を150kΩの抵抗2個で1/2に分圧して、IO34へ入力しました。

製作したプログラムは下記からダウンロード出来ます。
製作したプログラム:
プログラム12行目〜15行目を①手持ちのWi-Fiアクセスポイント、②Ambientで得たIDとライトキーへ変更し、③19行目の「#define SLEEP_P」を60分(60*60*1000000)に書き換えてから、ESP32-WROOM-32へ書き込んでください。分圧比は考慮されていませんので、考慮したい場合は、変数adcに2を乗算してください。

実験中の電圧の推移は、Ambientへ送信して蓄積することにより、下図のようなグラフで確認することが出来ます。外出中もスマホで確認が出来て、便利です。

イメージ 3

また、UDPのパケットをモニターすることで、電池切れを速やかに検出することも出来ます。
下記のスクリプトの「DEVS=」内にある「adcnv_1」の数字は、電池切れの判定時間(分)です。180を設定しておけば、電池が切れてから約3時間以内に検出することが出来ます。
また、メールで通知を行うために、muttをインストールし、「MAILTO=」にメールアドレスを入力してください。
電池切れを検出し、メールを送信するスクリプト:

GMailで送信するためのインストール・設定用スクリプト:

ESP-WROOM-02なみの電池寿命を達成

旧モデルのESP-WROOM-02では、単3アルカリ乾電池3本(送信間隔30分)で、1年間の動作が可能であることが分かっていました。
ESP-WROOM-02・単3アルカリ乾電池3本で1年間
https://t.co/GHN0yf5jIC
今回は、単3アルカリ乾電池2本なので、8か月(12か月×2本÷3本)以上の動作が出来れば、ESP-WROOM-02なみと言えるでしょう。ただし、ESP-WROOM-02の実験に比べて、送信間隔を2倍の60分にしています。
そこで、これまでの実験の結果を試算式の係数へフィードバックし、送信間隔が30分のESP32-WROOM-32を単3アルカリ乾電池2本で動作させた場合の動作期間を試算してみたところ、約9か月(3本で13か月相当)となることが分かりました。
以上から、ESP-WROOM-02なみの長時間動作を達成したとみなしました。
(引き続き、検証を行ってゆく予定です。)

実験を行うときの注意点(実験を行うときは必ずご覧ください)

今回の回路には、電源の保護回路が入っていません。例えば、ブレッドボード上やモジュール内で電源がショートしてしまった場合、発熱や発火の恐れがあります。少なくとも、以下の点に注意してください。
  1. ポリカーボネート製のケースなどに入れること
    ※燃えやすいプラスチックやレンジ用の耐熱容器は危険なので使用しない
  2. 周囲に燃えやすいものが無く、安定した場所に設置すること
  3. 部品やコードが外れないように耐熱テープ(ポリイミド)などで固定すること
  4. ブレッドボードや電池ボックスを両面テープやネジでケースへ固定すること
    ※機器が落下したときなどに外れないように
  5. 動作(送信)しなくなったら、すぐに電池を外すこと
    ※電池が減って、送信できなくなると、回路に電流が流れ続け、発熱します
    電池には残量が残っているので、発熱量が大きい点に注意してください
  6. 突入電流によってコンデンサの上面が破裂する場合があることを想定しておくこと
    ※ケースに開口穴を設ける、許容電流の高いコンデンサを選定するなど
  7. 異常が発覚したときに、速やかに電池を外せる状態にしておくこと
機器が発火した場合を想定し、発火しても燃え広がらない対策を、必ず、行ってください。

なお、製品として販売するような場合は、保護回路が必要です。
少なくともリセッタブル・ヒューズを使用し、内部発熱や発火を防止してください。

by ボクにもわかる電子工作
https://bokunimo.net/

この記事に

開く コメント(0)

IchigoSoda(さくらインターネット製)をプラスチック製のケースへ組み込み、乾電池駆動の実験を開始しましたので製作方法について説明します。
IchigoSoda=Softbankのモバイル通信4G LTE対応のIchigoJam互換機(さくらインターネット製)
Ambient=IoTセンサ用クラウドサービス(https://ambidata.io
モバイル通信を行うには2本のアンテナが必要ですが、実験のときは想定以上に邪魔になります。ケースへ組み込むことで、アンテナやアンテナケーブルの煩わしい存在を気にしなくて済むようになります。

イメージ 1
秋月で販売されている蝶番開閉式のABS樹脂ケース112-TS(ABS)へIchigoSodaを組み込んだ。アンテナをケースに取り付けることで、実験のときのアンテナやアンテナケーブルの煩わしさから解放された。

乾電池でモバイルインターネット回線を活用

モバイル通信機能を有効に活用したかったので、持ち出して使えるように電池ボックスを取り付けました。乾電池3本の直列接続では電源電圧が約4.5Vとなり、IchigoSodaの動作が不安定となるので、単4のアルカリ乾電池4本をIchigoSodaへ接続しました。

イメージ 2
ケースには、IchigoSodaと、単4電池ボックス(4本・直列・6V仕様)、2本のアンテナを取り付けた。モバイルでの利用を想定。

なお、モバイル環境で、長期間の動作を行うには、省エネ動作が欠かせません。IchigoJam BASICには省エネ機能が標準搭載されているので、モバイルIoTセンサを簡単に製作することが出来ます。

IchigoSodaの裏面の電源入力用テストパッドへ電池を接続

IchigoSodaや電池ボックスはプラスチック製のビスでケースに固定します。本例ではM3(3ミリ)のネジを使用しました。電池ボックスは、多くの場合、皿ネジが必要です。また、M2.6の場合もあります。入手しにくいネジは、モノタロウ(通販)や西川電子部品(秋葉原)、ナニワねじ(大阪・日本橋)などで購入します。

イメージ 3
IchigoSodaの基板背面にある5.0Vへ電池ボックスの赤色の電線を、GNDへ黒色の電線を接続する。IchigoSodaや電池ボックスはプラスチック製のビスでケースへ固定した。電池ボックスには皿ネジが必要。

ビスやコネクタ用の開口部のうち、丸穴加工はドリルで空けて、リーマで広げるだけなので、数分で綺麗に作成することが出来ます。
今回は、キーボード用USBコネクタの開口部に、四角形の角穴加工を行いました。ボクは角穴加工が苦手なのですが、1時間以上かけて、ヤスリで仕上げました。

イメージ 4
苦手なうえに、時間がかかる角穴加工(右)をしてみた。自分なりに満足できる仕上がりだったので、紹介させていただいた。

乾電池を入れずに、マイクロUSB端子から電源を供給する(キーボード使用時)

新品のアルカリ乾電池の電圧は1本あたり約2V程度で、4本だと7〜8Vになることがあります。IchigoSodaは、安定した動作が可能ですが、キーボードが故障する場合があります。キーボードを使用するときは、電池を取り外し、マイクロUSB端子からDC 5Vの電源を供給してください。

イメージ 5
キーボードを接続するときは、必ず、乾電池を取り外し、マイクロUSB端子からDC 5Vを供給する。

IoT向けクラウドサービスAmbientへ電池電圧を送信する

製作した機器へ、単4アルカリ乾電池を取り付け、分圧した電池電圧をIchigoJamのIN2へ入力し、IN2の値をIoT向けクラウドサービスAmbientへ送信します。

イメージ 6
単4アルカリ乾電池4本を取り付け、電池電圧をIchigoJamのIN2へ入力した。

IchigoSodaで省エネ動作を行うには、ハードウェアの改造が必要です。以下の改造を行うことで、より長期間の動作が可能になります(試算で1か月の動作が可能になる)。

より省エネ動作を行うためのIchigoSodaのハードウェア改造
  • 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)
省エネ動作については、下記のブログ記事も参考になるでしょう。
IchigoSodaを乾電池で省エネ駆動させる方法(2018/9/1):
IchigoSoda基板上のWAKE信号設定スイッチは下の写真のように、上側を左(EN側)に、下側を右(DIS側)にスライドしておきます(上記のブログとは異なる)。

イメージ 7
WAKE信号設定スイッチSW3(上側を左、下側を右に設定する)

また、多回転可変抵抗器を用い、電池電圧を分圧して、IchigoSodaのIN2端子へ入力します。可変抵抗器は、1VでAD変換値100が得られるように調整します。IN2端子に入力された電圧は、BASICプログラムで10回のサンプルの合計値を計算し、1Vあたり送信値1000となるようにして、sakura.ioのクラウドへ送信します。
sakura.ioのクラウドからAmbientへ転送する方法は、下記のブログを参照ください。
sakura.ioからAmbientへデータ転送(2018/5/19)

イメージ 8
送信の様子を、いつでも確認できるように、クラウドサービスAmbientへ送信した。

IchigoJam BASICを使ったIoTセンサ用プログラム

使用した送信用のプログラムを以下に示します。行番号5のT=10は、送信間隔です。T=10は約10時間ごとに送信します。行番号110では、IN2端子に入力されたAD変換値を10回、取得し、変数Aにその総和が保持されます。また、行番号120では、前回送信したときの値との差を求め、200mV以上の変化があったときに送信を行います。
new
new
1 cls:?"SAKURA IoT TX ANA 44 3
2 ?"CC BY Wataru Kunino
3 ?"ボタン/センサ ニュウリョク BTN
4 S=1:?"ショウデンリョク S=";S
5 T=10:?"ソウシン カンカク T=";T;"ジカン"
10 'ショキカ
20 T=T*720:C=0

100 @MAIN
110 A=0:forI=1to10:A=A+ana(2):next
120 ?" A=";A:if abs(B-A)>200 goto @ON
130 gsb @SLP:C=C+1:if C<T goto @MAIN
140 C=0:goto @ON

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 X=A>>8:Y=A%256
320 poke #880,#21,#A,1,73,Y,X,0
330 poke #887,0,0,0,0,0,X^Y^#63
340 ?"LTE_Send= ";hex$(X);" ";hex$(Y);" ";
350 I=i2cw(#4F,#880,13)
360 if I ?"ERR" else B=A:?"OK"
370 gsb @SLP:out 8,0:gsb @SLP
380 goto @MAIN

500 @SLP
510 if inkey() cont
520 led 0:wait 300,!S:led 1
530 rtn
2018/10/29 修正

むすび

以上の製作およびプログラムでは、IN2端子へ分圧した電池電圧を入力することを想定していますが、温度センサや照度センサに変更することで、IoTセンサへの応用が可能です。

IchigoSodaのモバイル通信機能を使うことで、無線LANの届かない場所や、親族の家といった遠隔地や、車や外出時の鞄といったモバイル環境で利用可能なIoTセンサを簡単に実現することが出来そうです。
sakura.io製品:

IchigoSoda/IchigoJam for sakura.io (Amazonでの販売ページ)

sakura.io さくらの通信モジュール LTE (Amazonでの販売ページ)

by ボクにもわかるIchigoJam用マイコンボード
(アドレスが変わりました)

この記事に

開く コメント(0)

ESP32シリーズを使用して、8か月のIoTセンサ動作が確認できましたので、報告いたします。

電源には、単3アルカリ乾電池4本と、村田製LXDC55を搭載した秋月電子通商製のAE-LXDC55-3.3Vを使用し、60分に1度、IoT用クラウドサービスAmbientへ送信しました。

ESP32-WROOM-32モジュールの起動時の突入電流と、Wi-Fi動作時の消費電流が大きいので、手軽な電源回路を実現するのに苦労しました。
写真右側の黒色の基板には、もともとDCDCコンバータや、リチウムイオン電池を搭載可能な電池ボックス(基板裏面)が搭載されていました。しかし、これらの消費電力が大きかったので、電源パターンを切断し、左側の赤色の基板に実装された村田製DCDCコンバータを使用しました。

イメージ 1
ESP32-WROOM-32を単3アルカリ乾電池4本で動作させる実験の様子

村田製DCDCコンバータを使用したときの本システム全体の消費電力は約2mW、単3アルカリ乾電池で247日(約8か月・送信間隔=60分)、動作しました。

IoT用クラウドサービスAmbientを使ったので、動作の様子を確認しながら実証検証を行うことができました。
また意外と手間やコストのかかる取得データの保管もAmbient(無料で利用可能)なら手軽です。


動作期間8か月の電池電圧の推移

下図は、8か月間の電池電圧の推移です。

イメージ 2
ESP32-WROOM-32+村田製作所製LXDC55の組み合わせで、2017年12月29日から2018年9月2日までの247日(8.1か月)の動作が行えた

グラフをみると、7月に4.7Vから4.5Vへ落ち込む様子が見られます。下図は、その拡大図です。2日間かけて、電圧が激しく変動していたことが分かります。
これは、村田LXDC55のDCDCコンバータが4.75V以上の入力で動作し、それを下回ると、LDOの動作に切り替わった様子だと思います。
また、LDOの変換効率がDCDCよりも悪く、約0.2Vの電圧降下をまねいたということも分かります。

イメージ 3
4.75V以下でDCDCコンバータがLDOに切り替わった。また、変換効率の低下によって0.2Vの電圧降下も生じた。

試算通りの動作を達成させるための工夫

ESP32-WROOM-32の電池の持ち時間を、試算通りに達成させることは難しいです。前回は、試算120日の構成にも関わらず、70日しか持ちませんでした。それ以前の実験では、半分以下しか達成できないこともありました。
試算120日にも関わらず、70日しか動作しなかった例:

今回: 試算248日 実証実績247日 (達成率 100%)
前回: 試算118日 実証実績70日 (達成率 59%)
今回、試算通りの動作を確認するために、以下の2点について、考慮しました。
  1. 降圧型DCDCコンバータを使用(消費電力150μA)
  2. 1000μFの低ESRコンデンサ×2個(計2000μF)を追加
降圧型にしたのは、電池電圧が下がったときの消費電流増大に伴う起動不具合を防止するためです。
ESP32-WROOM-32の起動時は、1Aもの突入電流が数十μ秒発生し、その後、電流200mAが10ms、さらに約1秒後に電流200mAが100ms、流れます。とくに、最後の200mA×100msの電流量の負担により、電池の終止電圧を高めてしまう(電池寿命を短くしてしまう)ということが分かりました。そこで、電池を4本直列にして、電圧を引き上げておき、降圧型で使用することで、終止電圧の高まりを抑えました。
大容量のコンデンサも、突入電流によるESP32マイコンへの供給電圧の低下を下げるためです。

なお、1000μFのコンデンサは、リーク電流が発生する場合があります。リーク電流は個体差があるので、少し、多めに買って、リーク電流の少ないコンデンサを使用すると良いでしょう。
本製作例での平均動作電力は約2mWです。もし仮に、1mAのリーク電流が発生したとすると、電池寿命は2か月程度まで落ち込むことになります。

CQ出版のIoT Express基板を使って製作してみても良いでしょう。
IoT Express基板へ村田製LXDC55を実装した例:

課題

課題も残っています。旧モデルESP-WROOM-02を使った場合、単3アルカリ電池3本で1年間の動作実績があり、電池の数が少ないにも関わらず、4か月も本機が負けていました。
この課題については、全く異なる方法で対策し、すでに良好な結果を得ています。
ESP32-WROOM-32・単3アルカリ乾電池2本で9.7か月

ESP-WROOM-02・単3アルカリ乾電池3本で1年間
https://t.co/GHN0yf5jIC

by ボクにもわかる電子工作

この記事に

開く コメント(0)

IchigoJam+MixJuiceで100日間、動作し続けるかもしれない、IoT温湿度センサを製作してみました。

前回は、単3電池3本で55日の実証に成功しました。
前回の結果:
このときの結果から、設計上、約2倍の長寿命化を図る改造を施して、再挑戦します。

試算上、4か月の動作期間が見込ます。
しかし、その一方で、ESP-WROOM-02単体では11か月の動作の実績があります。

このまま実証しても、探求心も実証の意義も少ないのです。

そこで、下の写真のように、乾電池を1本、減らして、2本にしてみました。しかも、秋から冬にかけての実験は、夏季よりも電池が早く消耗します。
この条件で100日を超えたら、達成感が得られるのではと考えました。

イメージ 1
こんどは、単3電池2本で100日に挑戦する。懸念点は多いが、あとは待つだけ。

ビニールテープで覆われている部分は、まだ内緒です。成功したら、公開します。


by ボクにもわかるIchigoJam用マイコンボード
(ホームページのアドレスが変わりました)


この記事に

開く コメント(0)

乾電池で長期間動作が可能なIchigoJamとMixJuiceを使って、IoT温湿度センサを製作してみました。

IchigoJam BASICには3種類の省エネ動作機能が標準装備されています。本ブログでは、下記のページで紹介した[3]Single Shot動作により、IchigoJamを低消費電力で動かします。
IchigoJam スリープ方法:
温湿度センサには、SiliconLabsのSi7021を使いました。Amazonで400円程度、AliExpressだと$2程度で販売されています。接続方法については、下記をご覧ください。
温湿度センサの接続方法:
https://blogs.yahoo.co.jp/bokunimowakaru/56159806.html
下図はIchigoJam、ネットワーク拡張ボードMixJuice、温湿度センサSi7021、アルカリ乾電池をケースへ収容したときの様子です。

イメージ 1
IchigoJam SまたはTへMixJuiceを接続し、単3アルカリ乾電池×3本で電源供給する。温湿度センサには、安価で高性能なSi7021を使用した。

SingleShot動作を行うための製作のポイント

IoT温湿度センサを、どのようなタイミングで動かしましょうか?

多くの場合、予め決めた一定の間隔で周期的に動作すれば問題ないでしょう。また、測定する時以外はIchigoJamは何もせずに、ただ次の周期を待つだけです。

そこで、IchigoJamを低消費電力動作するための方法[3]SigleShotを用いて、20分間隔で周期的に動作させてみます。
具体的には、IchigoJamのSLEEPコマンドを使って、IchigoJamの動作を停止させ、20分後にBTN信号を入力して起動するようにしました。
下図は、MixJuiceのIO16端子をIchigoJamのBTN端子へ接続し、また、IchigoJamのIN4端子をMixJuiceのRST端子へ接続したときの様子です。

イメージ 2
①MixJuiceのIO16端子をIchigoJamのBTN端子へ接続し、また、②IchigoJamのIN4端子をMixJuiceのRST端子へ接続する。
 
MixJuiceは、予め設定した時間が経過するとIO16からリセット信号を出力します。この信号をIchigoJamのBTN端子へ入力することで、IchigoJamをスリープ状態から復帰させます。

    ① MixJuiceに設定した時間が経過するとスリープ中のIchigoJamを起動する
    ② IchigoJamが起動したら、IchigoJam BASICからMixJuiceのリセットをかける
    ③ 温度と湿度を測定し、送信を行う
    ④ 次に起動するタイミングをMixJuiceへ設定する
    ⑤ IchigoJamをスリープへ移行させる
       20分間、おやすみなさい。。。

IoT用クラウドサービスAmbientへ送信する

IoT温湿度センサが測定した温度情報と湿度情報は、IoT用クラウドサービスAmbientへ送信することで、簡単にデータの蓄積と蓄積したデータのグラフ化が可能です。
製作したIoT温湿度センサをAmbientでグラフ化したときの様子を下図に示します。

イメージ 3
製作したIoT温湿度センサからAmbientへ温度と湿度を送信し、Ambientへ蓄積したときの様子。

IchigoJam用 IoT温湿度センサのBASICプログラム

下記は、プログラムの一例です。IchigoJamのファームウェアは、Ver 1.2.3で動作確認しました。古いファームウェアでは動作しない場合があります。
プログラム2行目のxxxxにはAmbientのチャネル番号、3行目のxxxxxxxxxxxxxxxxにはAmbientのライトキーを入力してください。
入力を終えたら、必ず「save 0」でファイル番号0へ保存してください。IchigoJamはスリープ時にプログラムが消えてしまいます。スリープ復帰後にファイル番号0のプログラムが自動的に読み込まれ、プログラムの先頭から実行します。
new
1 cls:?"IoT Envセンサ PS2
2 C=xxxx
3 K="xxxxxxxxxxxxxxxx"
4 T=1200:S=1

100 @CNF
110 out 11,0:out 11,1:wait 300
120 uart 1:clk:clt
130 if inkey() cont
140 if tick()>1800 goto @SP

150 ?"MJ APS":wait 40
160 if inkey()<>49 goto 120
170 clk
180 ?"MJ PCT application/json"
190 gsb @RX

200 @I2
210 let[0],#3ae6,#f3,#f5
220 ?i2cw(64,#802,1);:wait 2
230 ?i2cr(64,#806,2);
240 A=([3]>>8+[3]<<8)/37-474
250 ?i2cw(64,#804,1);:wait 2
260 ?i2cr(64,#806,2)
270 B=([3]>>9+[3]<<7)/26-65

300 @TX
310 uart 1:clk
320 ?"MJ POST START ambidata.";
330 ?"io/api/v2/channels/";C;
340 ?"/data"
350 gsb @RX:uart 1
360 ?"{";chr$(34);"writeKey";
370 ? chr$(34);":";chr$(34);
380 ? str$(K);chr$(34);",";
390 ? chr$(34);"d1";chr$(34);
400 ?":";A/10;".";A%10;",";
410 ? chr$(34);"d2";chr$(34);
420 ?":";B/10;".";B%10;"}"
430 ?"MJ POST END"
440 gsb @RX
450 if !S wait T*60:goto @I2

500 @SP
510 uart 1:?"MJ SLEEP ";T
520 wait 40,0
530 if inkey() cont
540 sleep

700 @RX
710 uart 0:clt
720 I=inkey()
730 if I clt:? chr$(I);
740 if tick()<40 goto 720
750 rtn

気になる電池の持ち時間は、なんと!55日間(一例)

この回路構成とプログラムを用いて、実際に何か月間の動作が可能なのかを確認してみました。下図は、Ambientで測定しつづけた実測値です。本例では55日間の動作が確認できました。

イメージ 4
55日間(8週間)の室温と、電池電圧を測った。温度が30℃を超えている日は、エアコンを入れていた様子が分かる。電圧は徐々に下がるが、途中から上昇しているように見える。

この測定では、湿度の替わりに電池電圧を送信してみました。ところが、途中から電圧が上がってゆく様子が見られます。これは、IchigoJamマイコンのAD変換器が電源電圧を基準にしているためで、電池電圧の低下とともにAD変換を行うための基準電圧も低下してしまったためです。

そこで、IchigoJamの入力電圧とAD変換値との関係を求めて補正してみました。入力電圧とAD変換値の関係については、別途、実測で求めました。得られた関係式を用いて、正しい電圧値へ補正した結果を下図に示します。

イメージ 5
55日間(8週間)の電池電圧の推移。補正を行うことで、電圧が下がってゆく様子が良く分かるようになった。

無線LANアクセスポイント停止による影響

期間中のデータを確認したところ、無線LANアクセスポイントが累計2時間にわたって停止していたことが分かりました。この停止中に電池の消耗を10%ほど縮めてしまっていたようです。
とくに、2回目の1.5時間におよぶ停止は、下図からも電池の消耗が明らかです。
例えば、30秒、経過しても接続できなかったときにスリープへ移行するような対策が必要だということが分かり、プログラムを修正しました(プログラムの赤文字部分)。

イメージ 6

むすび

乾電池で IchigoJamを動かし、IoT温湿度センサとして実用的な動作期間(55日)を達成することが出来ました。より長期間、動かしたいときは、単2や単1型に変更すると良いでしょう。
また、動作間隔を長くしたり、MixJuice上のレギュレータを低消費電力のタイプに交換したりすることで、より長い期間の動作も出来るようになるでしょう。

by ボクにもわかるIchigoJam
https://bokunimo.net/ichigojam/ (ホームページのアドレスが変わりました)

この記事に

開く コメント(0)

Yahoo!ジオシティーズが2019年3月31日にサービスを終了する予定です。
これにともない、ボクのウェブサイトの移転の作業を開始しました。

2004年から14年にもわたって利用してきたので、とても残念でなりませんが、266万ものアクセスをいただけたことを励みに、引き続き、新サイトでも努力してゆきたいと思います。

現在、下記の新サイトへの移行作業中で、段階的に、転送を設定してゆく予定です。
ご利用いただいている方々には、ご迷惑をおかけいたします。

 ボクにもわかる地上デジタル
(新)https://bokunimo.net/bokunimowakaru/


ボクにもわかる XBee
(新)https://bokunimo.net/xbee/

ボクにもわかる  IchigoJam
(新)https://bokunimo.net/ichigojam/

Yahoo!ジオシティーズのウェブサイトにリンクしていただいている方へ
(Yahoo!ブログ、GitHubを除く)

折角のリンクしていただいたにも関わらず、大変、申し訳ありません。
お手数をおかけいたしますが、リンク先の変更をしていただきたく、お願いいたします。

新サイトには、独自ドメインを設定し、今後、同じような事態を発生させないようにいたしました。
以下に、主要ページの移動先を案内させていただきます。

地デジ:    (旧)http://www.geocities.jp/bokunimowakaru/
        (新)https://bokunimo.net/bokunimowakaru/

XBee:     (旧)http://www.geocities.jp/bokunimowakaru/diy/xbee/
        (新)https://bokunimo.net/xbee/

 IchigoJam: (旧)http://www.geocities.jp/bokunimowakaru/diy/ichigojam/
        (新)https://bokunimo.net/ichigojam/

なお、ブログについては2019年3月以降も、継続します。
ご理解ならびに、ご協力をくださいますよう、何卒、よろしくお願い申し上げます。

2018/10/12
サイト管理人 国野 亘

サイト略歴・サイト移転日記

1995年        ウェブサイト開設
2003年10月     地上デジタル放送の技術情報ページを開設
2004年10月14日  Yahoo! カテゴリ検索に登録される
2004年11月01日  Yahoo!ジオシティーズへ移転・旧サイトの閉鎖
2005年12月29日  累積アクセス件数10万件
2008年01月19日  累積アクセス件数100万件
2018年10月01日  Yahoo!ジオシティーズのサービス終了の案内を受ける
2018年10月09日  ホームページの移転準備を始める
2018年10月12日  移転日記をつけ始める(このブログ)

2018年10月12日
Yahoo! ジオシティーズからサイトの移転をするときの最大の課題が、Google検索でのウェブサイトの新旧の関連付けです。
Googleで関連付けが可能なのは、ドメイン名の移転なので、ジオシティーズのドメインからの移転を関連付けることが出来ませんでした。
そこで、いくつかの実験を行いながら、段階的に移行することにしました。

まずは、IchigoJamのサイトから移転することにします。
IchigoJamをご利用の方々とはFacebookでのやりとりがあることや、公開してからの年数が、比較的、短いことなどから選択しました。

IchigoJamのサイトで行った方法は、以下の通りです。
  • <LINK REL="canonical" href="新サイトのURL">を移転元、移転先に設定
  • <META http-equiv="refresh" content="12; URL=新サイトのURL">を移転元に設定
  • 10秒後に新サイトへ遷移するスクリプトを移転元に設定
    参考にした情報:http://xirasaya.com/?m=detail&hid=370
  • 移転の案内表示を移転元に設定
  • Sitemapを空に設定(→エラーになるので、戻した)
これが上手くゆけば、他のページへも展開する予定です。

ただし、この方法だと元ページのコンテンツを消してしまうことになり、新サイトへ移行する前にGoogle側で検索ページが削除されてしまう懸念があります。
他のページについては、IchigoJamページの様子を見ながら、より安全な方法を見つけたいと思います。

反省点:
ボクは有料のYahoo!ジオシティーズに加入していたので、独自ドメイン設定が無料だったにも関わらず、設定していませんでした。Yahoo!の独自ドメインサービスへの移転であっても、今回と同様にGoogle検索の問題が生じるからです。とはいえ、移行の期限が十分にあれば、じっくりと検索エンジン側の移行を待てばよいのでリスクは無かったはずです。サービス終了を想定できなかった点が残念です。

移転のお知らせに置き換えるときに使用したスクリプト:
(理解せずに使用すると危険です!)
find ./ -name "*.html" |grep -v "trbat_index.html" > trbat_sitemap_.txt
cat trbat_sitemap_.txt | cut -d'/' -f2- | while read path; do
 url_old="${URL_OLD}${path}"
 url_new="${URL_NEW}${path}"
 echo $url_old "->" $url_new
 cp -i ./${path} ./${path}_tr.BAK
 cat trbat_index.html \
  | sed -e 's|{URL_OLD}|'${url_old}'|g' \
  | sed -e 's|{URL_NEW}|'${url_new}'|g' \
  > ./${path}
done
2018年10月13日
色々と調べてみましたが、昨日の方法でしか、Google検索のページ移動が出来ないことが分かりました。
また、Yahoo!からの転送(HTTP 301によるリダイレクト転送)についても、旧サイトの全てのページが同じURLへ転送されるという単純なものでした。

Yahoo!に対して、感謝の気持ちも残っているものの、腹立たしい気持ちも徐々に拡大中です。
少しだけ、抵抗の気持ちをこめて、利用料の登録を解除しました。
  • 全てのページに、新サイトへの転送設定(メタタグとJavaScript)を行いました。
  • Yahoo!ジオシティーズの無料サービスへ切り替えました。
  • 無料サービスでは100MB以下に抑える必要があったので画像や配布データを削除しました。
  • 無料サービスでは広告が表示されますが、10秒後に新サイトへ転送されると消えます。
引き続き、ご不便をおかけします。



by ボクにもわかるホームページ

この記事に

開く コメント(0)

硬貨を選別することで、投入金額や貯金箱内の総額を自動集計することが出来るようになります。本ブログではトイボックス製コインルーム SELECTOR BANKにセンサーを取り付け、マイコンボードIchigoJam Sで自動集計する方法について説明します。
無人店舗などで、領収書の自動発行や、売り上げ金額の把握などにも応用できるかもしれません。

イメージ 1
トイボックス製コインルームにセンサを取り付け、投入金額をIchigoJamで自動集計するシステムの構成例。コインルームは、縦6階建ての構造。コインの大きさに応じて、硬貨を自動選別し、各階へ振り分けて蓄える。

下図は、50円硬貨1枚、10円硬貨1枚、5円硬貨1枚を投入したときの様子です。投入金額65円の入金により、貯金箱内の合計金額は125円になりました(予め60円が入金されていた)。

イメージ 2
投入したコインの枚数を計測し、投入金額を集計する。また、過去の投入金額の合計も表示する。

製作に必要な機器

  • コインルーム 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として使用することにしました。

イメージ 3
左図:フォトリフレクタ TPR-105の発光・受光面側のようす。右上の切り欠きが1番ピンを表す。
右図:裏側のようす。LEDのカソード側とフォトトランジスタのエミッタをショートした。1番ピンは左上。

上図の加工を行ったフォトリフレクタへ、3本の電線をハンダ付けします。下図の灰色の線がセンサ出力(フォトトランジスタのコレクタ)、白色がLED入力(LEDのアノード)、黒がGND(LEDのカソードとフォトトランジスタのエミッタ)です。

イメージ 4
左図:センサ発光・受光面側から見た配線のようす。1番ピンは右上(配線=白)。
右図:背面から見た配線のようす。1番ピンは左上(配線=白)。

作成した電線つきセンサを、コインルームに取り付ける方法を説明します。
コインルームの筐体(ブルー又はグレーの半透明)中には、コイン識別用の仕切り板6枚(透明)が挿入されており、その仕切り板には、それぞれ異なる形状のコイン通過用のスロットが仕切り板の上面と下面に成形されています。

センサを取り付ける場所は、仕切り板の下面側の奥です。仕切り板の上面にセンサを取り付けると、蓄積されたコインの邪魔になり、コインが正しく選別されなくなります。
下面側のスロットには、円弧上の切り欠きがあります。下図は仕切り板を裏返したときのようすです。切り欠きの向かい側にセンサを、ポリイミドテープなどで固定してください。

イメージ 5
動作確認・感度調整を行うために、センサをコインが落下する下側のスロット部へ、ポリイミドテープで固定したときのようす。写真は仕切り板を裏返したときのようす(コインは写真の下側から上側に向かって通過する)。

センサの取り付け位置の調整も必要です。
中央にセンサを取り付けると、穴のある50円硬貨や5円硬貨を投入したときに、2枚とカウントしてしまうことがありました。また、コインを連続投入したときに2枚のコインのうち1枚しかカウントできない懸念もあります。かといって、あまり端に寄せると、直径の小さな1円硬貨が検出できないことがありました。正しく検出できるまで、貼り替えてながら調整してください。

調整が終わったら、ホットメルトなどで接着します。実際に接着する作業の順序は、プログラムを入力して、動作確認と位置などの調整後に行ってください。

イメージ 6
センサを接着剤(ホットメルト)で固定したときのようす。動作確認や感度調整後に接着する(いまは、未だ接着しないこと)

下図は、コイン選別用の仕切り板を筐体に戻したときのようすです。仕切り板6段中の上位5段までを取り付けました。仕切り板の下面側にセンサやセンサの配線が取り付けられているので、硬貨の邪魔になりません。

なお、センサからは赤外線が照射されています。電源を入れた状態では、センサを覗き込まないでください。目を傷める場合があります。
赤外線は目には見えないうえ、目に入っても瞳孔が閉じないので、可視光よりも慎重に取り扱いましょう。

イメージ 7
センサを取り付けたコイン選別用の仕切り版を筐体に戻した。写真は接着後の様子だが、接着前に、一度、組み立てて動作確認を行う必要がある。

1円硬貨用の最下段の仕切り板には、透過型のフォトインタラプタCNZ1023を取り付けます。
下図は、最下段の仕切り板の下面側です。中央のスリット上の穴がコインの通路です。左側の黒色の部分がフォトインタラプタです。
コインが通過するときに、フォトインタラプタのスリット部をコインがさえぎることで、コインを検出します。CNZ1023には、ビス止め用の耳が付いていますが、切り落として使用します。

イメージ 8
最下段の1円硬貨用の仕切り版へ、透過型フォトインタラプタ CNZ1023を取り付けたときのようす。配線は、フォトリフレクタと同様に引き出す。リフレクタと論理が反対になるが、プログラム側で対応する。

センサをIchigoJamへ接続する

センサが完成したら、センサをブレッドボード経由でIchigoJam Sへ接続します。センサ6個×3本の計18本の配線を、下図のようにブレッドボードへ接続し、各センサのセンサ出力(フォトトランジスタのコレクタ端子)を、IchigoJamのIN1〜4と、OUT1〜2へ接続しました。

イメージ 9
各センサのセンサ出力(フォトトランジスタのコレクタ)をブレッドボード経由で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以上のレギュレータをブレッドボードへ実装してください。

イメージ 10
ブレッドボードのようす。抵抗値は、各センサの感度や反応速度、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用マイコンボード

この記事に

開く コメント(0)

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

イメージ 1
「¥」を入力したいので、キーボードの[¥]を押してみよう。

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

まずは、キーボードの[¥]を押してみて下さい。「\」が表示されれば正常です。一体、どういうことでしょう。

¥マークは、コンピュータで使用することも多い文字なので、パソコンが8ビットだった時代から、キーボードやコンピュータ用の文字として国内のJIS規格で定められていました。しかし、これは日本円を示す日本特有の記号です。日本以外の多くの国では、後述するASCII(アスキー)規格が使われています。

例えば、日本語版のWindowsでは、ファイル・パスを表示するときに「C:¥Users¥wataru¥Documents」のように¥マークで区切られますが、海外では「C:\Users\wataru\Documents」のように表示されます。「\」の方が読みやすいだけでなく、木の根元から枝分かれしてゆく木構造の様子が表現されています。

イメージ 2
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用マイコンボード

この記事に

開く コメント(0)

Softbank 4G LTE回線に対応したIchigoSoda(基板裏面に要sakura.io LTEモジュール・別売り)を乾電池で動かす方法について説明します。

電源やWi-Fiの確保が難しい場所に設置することが出来るので、ポスト内の郵便物検知やガレージのシャッター開閉状態検知、納屋の人感センサ検知、屋外公衆トイレの使用状態検知、イノシシ捕獲機の扉の状態検知などに応用できるでしょう。
とくに本記事のポイントとなる節電制御は、乾電池駆動や、太陽電池と鉛蓄電池などを使ったシステムに欠かせない方法です。IchigoJam BASICであれば、節電制御が標準サポートされているので、簡単に実現することが出来ます。

イメージ 1
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 
イメージ 2
WAKEスイッチを左側にスライドすることで、IchigoJam BASICからLTE電源の制御が行える。

しかし、現行バージョン(SCO-ICG-02-A)のIchigoSodaの回路には、不具合があり、少し、改造が必要です。(※この改造を行うと、OUT 8,1を実行しなければ、sakura.io LTEの電源が入らなくなります。)
次節のサイクリック節電は、改造しなくても動かせるので、改造したくない人は、後半へ、進んでください。

改造方法は、WAKEスイッチのすぐ下にある抵抗器R4を取り外すだけです。ただし、部品が小さいので、ハンダ付けに慣れていない人には、少し難しいです。
はじめに抵抗の両端子へハンダを盛ってから、こて先の細い2本の半田ごてで両端子を挟み込んで持ち上げると、比較的、簡単に取り外すことが出来ます。利き手で無い方の手のコントロールが意外と難しいかもしれません。ハンダ付けに慣れている方であれば、こて先が2mm以上の半田ごてを使って、両端子を同時に熱したり、手早く両端子を交互に熱したりして、取り外すことも出来るでしょう。

イメージ 3
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用マイコンボード

この記事に

開く コメント(0)

Espressiff 製 Wi-FiモジュールESP-WROOM-32(以下ESP32)を使い、アルカリ乾電池による長時間動作の実験を行っています。
今回は、TI製の昇圧DCDCコンバータ TPS61020を使って実験してみました。

昇圧DCDCコンバータ TI製TPS61020

TPS61020はわずか25μA(Typ)で動作可能な昇圧型DCDCコンバータです。入力電圧0.9V〜6Vに対して定電圧(3.3V)で最大800mA(最小電圧時200mA)の出力を行うことができます。降圧時はレギュレータとして動作します。

30分ごとに温湿度を送信するESP32搭載Wi-Fiセンサを用い、単4電池2本で何か月の動作が可能かを実験してみました。

想定した条件で試算すると、単4電池2本で4か月(単3電池2本だと10か月間)の動作が可能です。
しかし、実際には70日(2.3か月)しか持ちませんでした。

ESP-WROOM-32に単4アルカリ乾電池2本を接続

イメージ 1
単4アルカリ乾電池2本で4か月の動作を見込んで製作したWi-Fi温湿度センサ(センシリオン製SHT31使用)だが、実験の結果、2.3か月しか持たなかった。DCDC出力には1000μF+330μFのコンデンサを実装した。

ハードウェアの構成は以下の通りです。
Wi-Fiモジュール:Espresiff製 ESP-WROOM-32
昇圧DCDC電源:TI製 TPS61020
温湿度センサ:センシリオンSHT-31
電源用コンデンサ:330μF+1000μF
アルカリ乾電池:モノタロウ製 単4乾電池 2本
使用した昇圧DCDC電源TPS61020のモジュールはストロベリー・リナックス製です。
モバイルパワーXBee変換モジュール 「MB-X」
https://strawberry-linux.com/catalog/items?code=12041
測定データは、IoTセンサのグラフ表示が可能なクラウドサービスAmbientへ送信しました。
Ambient (チャネル141)

測定結果の詳細:レギュレータからDCDC動作へ変わるようす

測定完了後にダウンロードした電池電圧の測定結果を以下に示します。縦軸は電池電圧、横軸は1目盛1週間の経過時間です。
最初の1週間から10日ほどは、レギュレータとして動作し、その後、数日から1週間ほどで、DCDC動作へ切り替わる様子が分かります。

イメージ 2
電池電圧の変化の様子(縦軸=電圧V)
2018年6〜8月(図・上段)と、2018年4〜6月(図・下段)に実験を行った。横軸の目盛は7日毎で、最初の1.5週間ほどは電源ICがレギュレータとして作用し、その後、DCDCへ徐々に切り替わり、2週間目からDCDC動作となったことが分かる。電池末期の終止電圧は1.3〜1.4Vだった。

レギュレータ動作時は、電池の内部抵抗による電圧の下がり具合が大きいことから、電源ICの効率が悪いことが覗えます。しかし、その後、電圧が上昇していることから、徐々にDCDC動作が主体となりました。

電池寿命の末期となる終止電圧は1.3〜1.4Vでした。ESP32の起動時の突入電流の影響で、電源IC仕様の0.9V動作までは引き出せませんでした。終止付近でのグラフの変化が急襲なので、もし、0.9Vまで動いたとしても、あまり変わらないと思います。

単3電池2本で目標 6〜8 か月間

試算値と実験結果とでは、たいてい齟齬が発生します。とくにESP32では、その齟齬が大きく、これまでも苦戦しています。その原因は、起動時の突入電流です。突入電流によるエネルギーは電池容量に比べて十分に小さいものの、大電流が流れることによる電池への負担や電源回路への影響が出ているものと考えています。

今回は単4アルカリ乾電池を使用しましたが、容量が2倍となるの単3アルカリ乾電池へ変更した場合、以下のとおり、6か月以上の動作時間が期待できます。また、単4に比べると、電池の内部抵抗も半分になるので、試算の齟齬は少なくなると予想しています。
単4アルカリ乾電池2本 試算値 4か月  → 実測2.3か月(今回の実験結果)
単3アルカリ乾電池2本 試算値 10か月 → 推測5.8か月(これからの実験予定)
経験上、電池寿命の末期が冬季になると、推測値を下回ることが多くありますが、春に差し掛かれば伸びる傾向があります。このため、ちょうど今から開始すれば、8〜9か月間くらいの動作が出来る可能性もあります。

以上から、最小目標6か月、最長8か月を目指し、単3アルカリ乾電池での実証に着手しようと思います。

また、すでに2年に渡り、様々な形態で実験を行っており、条件は異なりますが、単3アルカリ乾電池2本で2017年12月から8か月以上の動作しつづけているサンプルもあります。こちらについても、終了した時点で、報告したいと思います。

ボクにもわかるESP-WROOM-32

by ボクにもわかる電子工作
https://bokunimo.net/

この記事に

開く コメント(0)

[ すべて表示 ]


.


みんなの更新記事