ボクにもわかる電子工作

Raspberry Pi、IchigoJam、Wi-Fi、BLE、XBee、RN-42、ESP-WROOM-02、ESP32
Wi-FiモジュールESP-WROOM-02をブレッドボード基板に実装し、様々なIoT機器を製作するための書籍「超特急Web接続!ESPマイコン・プログラム全集」が、CQ出版社から発売になりました。

一つ一つのIoT機器は、比較的、簡単に製作できるものです。
特長はサンプルの多さです。また、基本的な動作確認から、作成した複数の機器を連携するまでの一連の方法についても説明しています。

先日まで、Amazonでの在庫が無く、注文後納期がかかってしまっていましたが、在庫していただき、すぐにお買い求めいただけるようになりました。

ラズベリーパイ&IchigoJam対応
LED/スイッチからカメラ/LCDまで
なんでも3分Wi-Fi接続
超特急Web接続!
ESPマイコン・プログラム全集
[CD-ROM付き]

イメージ 1

出版社: CQ出版 (2019/1/22)
ISBN-10: 4789847047
ISBN-13: 978-4789847049
発売日: 2019/1/22

下記の情報も参考にしていただければと思います。


サポートページ:

この記事に

aitendoで販売されているai.robot.Jamの裏面にMixJuiceを接続し、ランドセルを背負うロボットのように見えるIchigoJam用マイコンボードを作ってみました。

イメージ 1
MixJuiceを背負ったairobot.jamで、インターネットサイト「ボクニモワカル for MixJuice」へアクセスしたときの様子。

ai.robot.Jamは、ロボット形状の基板(上部)で作成するIchigoJam互換ボードです。別売りの発射台基板(下部)との2枚で構成します。今回、ロボット基板の裏側にピンヘッダ(足の長いタイプ)を接続し、IchigoJam用ネットワークボードMixJuiceをロボット基板に背負わせてみました。
こどもパソコン「ai.robot.Jam」キット [K-airobotjam]

この写真の接続は誤り(aitendoサイトの写真)
下図はMixJuiceを背負っている様子です。

イメージ 2

MixJuiceの電源は、発射台基板(別売り・下部)のPS/2端子の近くにある5VからMixJuiceのCN5の5V端子へ入力し、MixJuiceのCN6にジャンパピンを差し込みました。
ロボット基板のTXDとRXDのピンは、発射台基板ではGNDになっているので接続しないようにします(ピンを切る)。また、PS/2端子側がロボット基板の正面に来る方向に接続します(aitendoのホームページの写真が誤っているので注意する)。

画面の「ボクニモワカル for MixJuice」はIchigoJam+MixJuice用のコンテンツを提供しているインターネットサイトです。アクセス方法は下記をご覧ください。
IchigoJam + MixJuice用ボクニモワカル for MixJuice:
by ボクにもわかるIchigoJam用マイコンボード

この記事に

開く コメント(0)

2019年
あけましておめでとうございます

イメージ 1
昨年、Yahoo!ジオシティーズのサービス終了が決まりました。2004年から14年以上、活動の中心に使用してきたサービスであり、残念でしたが昨年10月にホームページの移転を行いました。
ホームページ移転後のアクセス件数は、3か月で約4000件でした。旧ホームページへのアクセス件数が14年で260万件(平均18.5万件)だったことを考えると大幅に落ち込んでいる状況です。

ホームページやブログをお持ちの方は、当方の新サイト(https://bokunimo.net/)へのリンク修正やリンク展開に、ご協力をいただけるよう、お願いいたします。
2019年3月中旬までは、旧ページから新サイトの該当ページへ自動遷移しますが、3月末には、新サイトのトップページへの遷移に切り替わります。

落ち込みの原因は、移転だけではありません。14年前に主流だったテキスト文字中心の情報の時代から、イラストやイメージ図を活用したコンテンツが主体の時代となりました。また、1ページのボリュームも少ないものや、要約したまとめサイトなどが主流になってきました。
ボクのサイトを書籍に置き換えた場合、「章ごと」のページ構成となっています。しかし、現在の主流は「節ごと」のページ構成になっているようです。
以上のように、ネット社会の変化に追従できていない点も課題であると分析しています。

さて、ボクは、これまで課題を分析し、それを解決するための情報を提供してきました。しかし、残念ながら、14年にもわたって積み上げてきた情報を整理しなおすことは困難です。
もちろん、新たなコンテンツ作成時には配慮し、時代に合った方法で情報を提供してゆきたいと思います。

移転後のホームページ

この記事に

開く コメント(0)

MicroPythonの実行が可能なXBee3 ZigBeeモジュールでワイヤレス通信の実験を行ってみました。
XBee 3 ZigBee子機(下図・右側)の内蔵温度センサで測定した温度値をZigBee送信し、Raspberry Piに接続したXBee親機(下図・左側)で受信します。

イメージ 1
親機(左側):Raspberry PiへXBeeを接続して製作する。子機で測定した温度情報を受信する。
子機(右側):XBee3内蔵マイコン上で動作するMicroPythonスクリプトで温度を測定し、親機へ送信する。

子機・XBee3 ZigBee の構成・MicroPythonスクリプトの書き込み方法

子機にはXBee3 ZigBeeモジュールを使用します。
MicroPythonのスクリプトを書き込むには、XBee USBエクスプローラとPCなどが必要です。スクリプト書き込み後は、電源を供給するだけで動かすことが出来ます(工作が得意な人であれば、XBee USBエクスプローラは1台だけでよい)。
使用可能なXBeeモジュール:XBee3 シリーズ
必要な機器:XBee USBエクスプローラ (スクリプト書き込み時に必要)、PC(DiGi X-CTUに必要)
必要なソフト:DiGi X-CTU(スクリプト書き込み時に必要)
サンプルスクリプトは、下記に公開しました。
XBee3 ZB用MicroPythonサンプル集

温度送信用サンプル bas04_tx_temp.py
以下に、設定方法、書き込み方法を示します。
Digi MicroPython 設定方法
1. DIGI XCTU (最新版)の「Radio Modules」のアイコン[+](Add a radio Module)で使用するシリアルCOMポートを選択する。 
2. シリアル接続したXBeeモジュールが画面左側のフレームに表示されるので、それを選択する。 
3. 右フレーム「Radio Configuration」にXBee 設定画面が表示されるので、スクロールして、「AP APIEnabe」で[MicroPython REPL [4]]を選択する。 
  [Radio Configuration]
  ▼ UART Interface
   AP APIEnabe
    MicroPython REPL [4]
4. 右フレームの上部の鉛筆アイコン(Write)をクリックする。 
5. XCTUの「Tool」メニューから[MicroPython Terminal]を選択し、接続アイコン(Open)をクリックする。
(Tera Termを使用する場合は、通信設定=9600-8-N-1・フロー制御なし、改行コード=CR、ローカルエコー=無しなどを設定する。) 
サンプル・スクリプトの書き込み方法
1.サンプルスクリプトをメモ帳や秀丸エディタで開き、[Ctrl]+[A]の操作で全選択し、[Ctrl]+[C]でクリップボードにコピーします。
2.XCTU の MicroPython Terminal または TeraTermなどで、[Ctrl]+[F]を操作し、プログラムをXBee3 ZigBeeモジュールへ書き込むモードに設定します。
3.右クリック操作でペーストを行い、クリップボードに保持したサンプルスクリプトを転送します。
4.[Ctrl]+[D]を操作し、コンパイルを実行します。
5.「Automatically run」に対して[Y]を入力すると、起動時やリセット操作時に、自動起動させることが出来ます。
6.[Ctrl]+[R]でフラッシュメモリ内のプログラムを実行します。Automatically runを設定していた場合は、リセット操作[Ctrl]+[D]で実行することも出来ます。

親機 XBee ZigBee Coordinator の構成

親機は、Raspberry PiへXBee USBエクスプローラ経由でXBeeモジュールを接続して製作します。
XBeeモジュールには、最新のXBee3 ZigBeeシリーズ、従来のXBee ZB S2Cシリーズ、S2シリーズが利用できます。
使用可能なXBeeモジュール:XBee3 シリーズ、XBee ZB S2Cシリーズ、S2シリーズ
必要な機器:Raspberry Piとその周辺機器、XBee USBエクスプローラ
必要なソフト:後述(ダウンロード)

構成: [Raspberry Pi]----[XBee USB エクスプローラ]----[親機XBee]-  -  -  -[子機XBee3]
XBee3とS2Cシリーズの場合は、後述のZigBeeモード設定ツール「xbee_zb_mode」を使って、Coordinator APIモードに設定します。S2シリーズの場合は、X-CTUを使ってCoordinator API用のファームウェアを書き込みます。
また、筆者が作成したXBee テスト用ツール「xbee_test」を使って、子機が送信した温度情報を受信する実験を行います。

Raspberry Pi用のプログラムを下記のコマンドでダウンロードし、コンパイルしてください。
Raspberry Pi用プログラムのダウンロード
pi@raspberrypi:~ $ git clone -b raspi https://github.com/bokunimowakaru/xbeeCoord.git
pi@raspberrypi:~ $ cd xbeeCoord/tools/
pi@raspberrypi:~/xbeeCoord/tools $ make
ZigBeeモード設定ツール「xbee_zb_mode」を起動し、XBee Coordinator APIモードに設定して下さい。下記の実行例の引数「B0」は、XBee USBエクスプローラのUSBシリアルポートです。ポートが「/dev/ttyUSB0」の場合は「B0」、「ttyUSB1」の場合は「B1」といった具合に指定してください。(ttyUSBポートが不明な場合は、マウスやキーボード以外のUSB機器を外し、Raspberry Piを再起動してから、「~/xbeeCoord/tools/xbee_zb_mode」を入力してください。)
実行後、「10」と「Enter」を入力すれば、設定できます。設定時にエラーが出た場合は、やり直してください。
ZigBeeモード設定ツールxbee_zb_mode
pi@raspberrypi:~/xbeeCoord/tools $ ./xbee_zb_mode B0
CONNECTED 0(0x00):176(0xB0)
ZIGBEE Device Type Switcher for XBee ZB S2C / XBee3 Series
00:Coordinator AT,  01:Router AT,  02:End Device AT
10:Coordinator API, 11:Router API, 12:End Device API
Mode =10
設定が完了したら、XBee テスト用ツール「xbee_test」を起動してください。末尾の「B0」は「ttyUSB0」の場合です。
XBee テスト用ツールxbee_testを起動する
pi@raspberrypi:~ $ cd ~/xbeeCoord/tools
pi@raspberrypi:~/xbeeCoord/tools $ ./xbee_test B0
ここで重要な作業「ペアリング」を行います。
xbee_testは、XBeeモジュールを常時ペアリングが可能なモードに設定します。このため、通常は自動的にペアリングが行われ、xbee_testに「recieved IDNT」が表示されます。しかし、周囲に他のZigBeeが動作していた場合、他のネットワークに参加してしまうことがあります。この場合、子機のコミッショニングボタンを4回、押して、初期化して再実行する、または親機と同じPAN IDを子機に設定するなどが必要になることがあります。

ペアリング後に、子機XBee3から温度情報が送られてくると、「recieved UART」に続き、温度値と電源電圧値が表示されます。下記の例では、温度19.0℃、電源電圧3.302Vが得られました。
--------------------
recieved UART
--------------------
from   :0013A200 xxxxxxxx
status :02 broadcast packet
length :10 (0x0A)
data   : 19.0, 3.302
AT>

XBee3 MicroPythonで受信する

受信用のMicroPythonサンプル・スクリプトも準備しました。
(受信の確認には、子機XBee3をX-CTUのMicroPython Terminalに接続しておく必要があります。)
データ受信用サンプル bas05_rx.py
デバイス検索用サンプル bas06_rx_disc.py
親機となるRaspberry Piから送信を行うにはXBee テスト用ツール「xbee_test」から「tx=HELLO」のように「tx=」に続いて文字列を入力してください。

by
ボクにもわかるRaspberry Pi
https://bokunimo.net/raspi/
ボクにもわかるXbee
https://bokunimo.net/xbee/

この記事に

開く コメント(0)

Digi XBee3 ZBが、スイッチサイエンスより販売されましたので、公開中のXBee制御用ライブラリxbeeCoordのRaspberry Pi 版のXBee3対応を行いました。

イメージ 1
スイッチサイエンスでの国内販売が開始されたXBee3 ZBモジュール。

ツールxbee_zb_modeのXBee3 対応

従来のXBee シリーズ2では、ZigBeeデバイスタイプを変更する際に、ファームウェアの書き換えが必要でした。
XBee ZB S2Cモジュールからは、XCTUや当方が作成したツールxbee_zb_mode(書籍「Wi-Fi/Bluetooth/ZigBee無線用Raspberry Piプログラム全集」付属のCD-ROMに収録)を使うことで、ファームウェアの書き換えなしに変更できるようになりました。

今回のXBee3シリーズについても、xbee_zb_modeを使ってデバイスタイプの変更が可能です。

書籍を買っていただいた方は、P.89の「新しいXBee ZB シリーズS2Cについて」に記載している方法で、XBee3シリーズのデバイスタイプを変更することが出来ます。

書籍をお持ちでない方は、後述の「XBee3対応・最新版xbeeCoord一式のダウンロード」の方法で、GitHubからダウンロードください。

イメージ 2
XBee3を使った実験の様子。従来の開発ボードで問題なく動作した

XBeeライブラリ xbee.cのXBee3 対応

XBeeライブラリについては、XBee3対応版へ更新が必要です。GitHub上のxbee.cをダウンロードして入れ換える、もしくは一式をダウンロードしてください。

XBee3対応・最新版XBee.cのダウンロード方法

下記はXBee用ライブラリxbee.cのみをダウンロードする方法です。

pi@raspberrypi:~ $ cd ~/xbeeCoord/libs
pi@raspberrypi:~/xbeeCoord/libs $ mv xbee.c xbee_old.c
pi@raspberrypi:~/xbeeCoord/libs $ wget https://raw.githubusercontent.com/bokunimowakaru/xbeeCoord/raspi/libs/xbee.c

XBee3対応・最新版xbeeCoord一式のダウンロード方法

下記はRaspberry Pi用XBeeライブラリxbeeCoord一式をダウンロードする方法です。
pi@raspberrypi:~ $ mv xbeeCoord xbeeCoord_old
pi@raspberrypi:~ $ git clone -b raspi https://github.com/bokunimowakaru/xbeeCoord.git
pi@raspberrypi:~ $ cd xbeeCoord/tools
pi@raspberrypi:~/xbeeCoord/tools $ make clean; make
pi@raspberrypi:~/xbeeCoord/tools $ ./xbee_zb_mode B0
Running ./xbee_zb_mode
Serial port = USB0 (/dev/ttyUSB0,0xB0)
CONNECTED 176(0xB0):176(0xB0)
ZIGBEE Device Type Switcher for XBee ZB S2C Series
00:Coordinator AT,  01:Router AT,  02:End Device AT
10:Coordinator API, 11:Router API, 12:End Device API
Mode = 12
End Device API
Sending AT commands in AT mode
AT command (AT) :OK
AT command (ATAP01) :OK
AT command (ATCE00) :OK
AT command (ATSM04) :OK
AT command (ATWR) :OK
AT command (ATFR) :OK
> ~
SUCCESS
by
ボクにもわかるRaspberry Pi
ボクにもわかるXbee

この記事に

開く コメント(0)

IchigoSoda(モバイル通信4G LTEに対応したIchigoJam互換機・さくらインターネット製)の節電動作の実験を行い、単4アルカリ乾電池4本で20日間(2018/10/28〜2018/11/17)の動作が確認できました。
  • 単4アルカリ乾電池4本で20日間の動作を確認
  • 累計の送信回数は82回。(1日当たり約4回の送信が行える)
  • 単2に換算すると4.4か月・送信回数550回に相当
Wi-Fiの届かない郵便受けに届いた荷物の確認や、遠方に駐車している乗用車の電源検知、野獣捕獲機の状態監視など、さまざまな用途に使えそうです。

以下は、各種の乾電池での換算結果です。
単4アルカリ乾電池  19.4 日間(実験結果) 送信回数82回
単3アルカリ乾電池  49日間(試算値) 送信回数200回(試算値)
単2アルカリ乾電池 134日間(試算値) 送信回数550回(試算値)
単1アルカリ乾電池 317日間(試算値) 送信回数1300回(試算値)
イメージ 1
単4アルカリ乾電池4本で、20日間、節電動作し続けたIchigoSoda。初回の実験につき、プログラムを見直しながら実験したので、実験開始直後の測定値は不正確。

製作方法

製作方法は、下記を参照ください。一部、ハードウェアの改造を伴います。

考察と今後

送信が出来なくなったときの、電池電圧は5.0V(1本あたり平均1.25V)でした。
単4電池は電池の内部インピーダンスが高いので、sakura.ioモジュールが動作しはじめると、電圧降下が生じてしまいます。このため、電池残量が残ったまま、sakura.ioモジュールが送信できない状態となりました。
ちなみに、送信が出来なくなっても、IchigoJamマイコンは動作し続けました。

今回は、実験開始時に、何度かプログラムを修正しました。修正が無ければ、あと数日程度、長く動いた可能性があります。

1日の送信回数は、電池の持ち時間に影響します。仮に2倍の1日8回、累計164回の場合、同じ条件で17日程度、動作する試算になります。1日2回〜8回くらいまでの間で加減すれば良いでしょう。

得られたデータや知見を整理してから、条件を変えて再挑戦してみようと思います。

by ボクにもわかるIchigoJam用マイコンボード


この記事に

開く コメント(0)

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
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 修正
IchigoJam BASIC Ver. 1.2.3で動作確認済み

むすび

以上の製作およびプログラムでは、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)

[ すべて表示 ]


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事