IchigoJam BASIC RPiでもパソコン通信的ボクニモワカルMixJuice

IchigoJam + MixJuice向けのホームページ「ボクニモワカル for MixJuice」を、IchigoJam BASIC RPi(Raspberry Piで動作するIchigoJam)で表示してみました。
写真は、Raspberry Pi Zero(2枚目の写真を参照)に、OLED(有機ELディスプレイ)とESP-WROOM-02(Wi-Fiモジュール)を搭載したArduinoシールド用の拡張ボードを接続し、ボクニモワカル for MixJuiceへアクセスした時の様子です。
OLED(有機ELディスプレイ)に表示されている画像は、本メニューの[8]ダウンロード⇒[21]OLEDプログラム集⇒[7]クマモンを選択して表示しました。
IchigoJam BASIC RPi(Raspberry Piで動作するIchigoJam)でIchigoJam + MixJuice向けのホームページ「ボクニモワカル for MixJuice」を表示してみた時の様子。OLED(有機ELディプレイ)のクマモンをダウンロードしてみた。くまモンの権利表示:©2010熊本県くまモン
ボクニモワカル for MixJuiceへのアクセス方法は、以下のコマンドをキーボードから入力するだけです。
?"MJ GET bokunimowakaru.github.io/MJ/
詳しくは、下記を参照してください。
ボクニモワカル for MixJuice:
ハードウェアは、下図のように3枚の基板+OLEDモジュールとWi-Fiモジュールになっています。一番下のRaspberry Pi Zeroの拡張端子を、下から2枚目の赤色の基板でArduino用に変換し、3枚目のArduinoシールド用拡張ボードへ接続しています。無線通信モジュールESP-WROOM-02には、MixJuiceのファームウェアを書き込んでいます。また、Raspbery Pi ZeroにはIchigoJam BASIC RPiを書き込んだSDカードを接続しています。
ハードウェアは3層構造。一番下のRaspberry Pi ZeroのUARTシリアル信号をMixJuiceへ、I2C信号をOLEDへ接続した。
一番上の基板=Arduino用のXBee互換シールドへOLEDモジュールとWi-Fiモジュールを搭載
下から2番目の基板=Raspberry Piの拡張ポートをArduino用に変換する基板
一番下の基板=Raspberry Pi Zero
あらかじめ用意されたメニューを進み、文字がパラパラと表示される様子は、まるでかつてのパソコン通信のように感じられるでしょう。
by ボクにもわかるIchigoJam用マイコンボード

冷凍庫に入れた温度センサを常温に戻す方法

温度センサの値を取り扱うプログラムにおいて、氷点下を下回ったときに、不具合や誤作動が発生してしまったことはありませんか?
 動作確認には手間がかかるし、実際のところ室内限定であれば、マイナス値になることは滅多にないので、氷点下を考慮せずに運用してしまっていることも多いでしょう。
 例えば、動作確認を簡単に行う方法として、急冷剤が販売されており、温度センサに噴射すると-55℃以下まで冷却することが可能です。手軽に使えますが、噴射した周囲の空気も冷却され、結露が発生してしまうので、例えば温湿度センサなどのデバイスを傷めてしまうこともあります。
 そんななか、IoT用クラウドサービスAmbientの運営者である下島さんより、「冷凍庫に入れてマイナス値の動作確認を行った」との情報をいただき、早速試してみました。
 以下のグラフのように、ぐんぐんと温度が下がり、マイナス20℃近くにまで達しました。
 「こういった実験でのグラフによる可視化は、とても便利ですね。」
 などと感じながら、ふと、デバイスを取り出すときの方法を考えていなかったことに気づきます。普通に取り出してしまうと、センサが結露し、(おそらく)湿度が100%近くに達してしまうでしょう。
 下図は15:30くらいに、デバイスを冷凍庫から、取り出したときの様子です。あれっ!? 湿度の上昇が、抑えられていることが分かりますね。また、気圧が、低くくなっていることにも、気づいたでしょうか?
 いったい、どのように取り出したのでしょう。
 ボクの行った方法は、下図のように、冷凍庫から取り出したデバイスをすぐに真空保存用の専用ビニール袋に入れて、中の空気をポンプで吸い出す方法です。気圧を下げることで露点を下げ、結露しにくくしたのです。
温度センサの実験には、台所用品がかかせないですね。
使用したもの:
  • ワイヤレス環境センサ(自作品)
  • 通常の冷蔵庫(冷凍庫を利用)
  • 食品保存用の真空ビニール袋
  • IoT用クラウドサービスAmbient
なお、冷蔵庫の冷媒に引火性のガスが使われている場合があります。冷媒が漏れて庫内に溜まっている状態で電子機器が動作すると、火災など、人命に関わる事故が発生する恐れがあります。また、急冷剤についても、可燃ガスが使われている場合があります。実験を行う場合は、これらのガスへ引火する可能性を十分に認識したうえで、安全に配慮してください。当方は、一切の責任を負いません。
ボクにもわかるESP8266+ESP32
by ボクにもわかる電子工作
https://bokunimo.net/

Wi-Fiセンサ for IchigoJam スマホ接近検出で「おかえりなさい」

予め登録したMACアドレスの電波を待ち受けるIchigoJam用Wi-Fiセンサを製作してみました。
スマートフォンのWi-Fi電波が自宅のWi-Fiアクセスポイントへ接続するときの電波をキャッチすることで、外出先から帰宅したことを検出することが出来ます。あるいは、教室や研究室に先生が接近してきたことを検出することも出来るでしょう(ただし、先生のスマートフォンのMACアドレスの登録と、教室に無線LANアクセスポイントの設置が必要)。
ESP-WROOM-02(写真・左下)を搭載したWi-Fiセンサが、Wi-Fi電波をキャッチして、IchigoJam(左上)へ通知し、テレビへ検出結果を表示します。 ※配線については、本図ではなく、次の写真を参照
 Wi-Fiセンサの無線LANアクセスポイントへの接続は不要です。指定したWi-Fiチャンネルで全てのデータを監視するプロミスキャスモードで動作します。

必要なハードウェアとソフトウェアの構成

必要なハードウェアとソフトウェア構成を下記に示します。
ハードウェアとソフトウェア構成:
    • IchigoJam マイコンボード(IchigoJam U、IchigoJam Tなど)
      • IchigoJam BASIC ファームウェア:Ver 1.2.1以上
      • BASICプログラム:uart_mon_dash.bas
        ⇒ 本ブログで紹介
    • ESP-WROOM-02ボード(MixJuice、AE_ESP-WROOM-02など)
      • Wi-Fiセンサ専用ファームウェア:adash.binまたはexample29u_dash
        ⇒ 本ブログで紹介

Wi-Fiセンサの製作

 Wi-Fiセンサには、Espressif社のESP-WROOM-02(ESP8266)を用いました。IchigoJam用ネットワークボードMixJuiceのファームウェアを書き換えて製作することも出来ます。
 ハードウェアは、Wi-FiセンサのTXDをIchigoJamのRXDへ、RXDをTXDへ接続し、相互のGNDを接続し、各機器へ電源を接続して製作します。
 Wi-Fiセンサ側のソフトウェアは、Espressif製のFLASH_DOWNLOAD_TOOLS(https://www.espressif.com/en/support/download/overview)などを使って、下記の1.バイナリ+ソース内のadash.binをESP-WROOM-02へ書き込みます。
1. バイナリ+ソース(2018年2月11日版・save機能なし):
https://goo.gl/rhtvKv
2. ソースコードのみ(最新版・GitHub):
https://goo.gl/McJuV5
 Arduino IDEをつかったESP8266用の開発環境をお持ちの方は「2.ソースコードのみ(最新版・GitHub)」から最新版をダウンロードしてください。
Wi-FiセンサのTXDをIchigoJamのRXDへ、RXDをTXDへ接続する。電源はUSBの5Vから供給したが、動作が不安定になる場合は、ESP-WROOM-02用に別電源を用意する。製作例ではESP-WROOM-02側へ1000μFのコンデンサを使ってポリスイッチによる電流供給不足を解消した。MixJuiceを使用すれば、こういったハードウェアの製作が不要になる。
 MixJuiceへファームウェアを書き込む方法については、下記のサイトに説明があります。
イチゴジャムレシピ MixJuice ファームウェアの更新:
https://15jamrecipe.jimdo.com/mixjuice/ファームウェアの更新/
 当方のブログ「ボクにもわかるブレッドボードによるMixJuice互換ボードの製作方法(https://bokunimo.net/blog/ichigojam/123/)」の 「ファームウェアを書き込もう」で、ブレッドボードで製作したMixJuiceへFLASH_DOWNLOAD_TOOLSを使ってファームウェアを書き込む方法を紹介しているので合わせてごらんください。
 最新のESP-WROOM-02のフラッシュメモリのサイズは16MBit(2MB)なので、「FLASH SIZE」の部分で16MBitを選択してください。
Espressif製FLASH_DOWNLOAD_TOOLS設定例
(使用方法=https://bokunimo.net/blog/ichigojam/123/

1枚のミニブレッドボードで製作する場合(参考)

トランジスタ技術2017年3月号に掲載した「Wi-Fiコンシェルジェ・マイコン担当」で製作した回路に、ESP-WROOM-02のファームウェアと、IchigoJam BASICのプログラムを変更して動かしてみた。1枚のブレッドボードで手軽に実験を行うことが出来る(2018/2/12)
 上の写真は、1枚のミニブレッドボードで製作した場合の一例です。参考回路図およびブレッドボードへの実装方法は、下記の「スピード実習パーツセット説明書」のP.15の「実習13) Wi-Fi テレビ出力(コンシェルジェ・マイコン担当) 」でCQ出版社から公開されています。ソフトウェアについては、このブログにしたがって、ESP-WROOM-02のファームウェアと、IchigoJamマイコン用BASICプログラムを変更する必要があります。
回路図の参考資料(CQ出版社の資料より・縮小表示)
権利の都合上、下記からダウンロードして閲覧ください。
回路図の参考資料(P.15・CQ出版社):

IchigoJam用プログラム(uart
_mon_dash.bas)

 Wi-Fiセンサに対応したIchigoJam用プログラムを以下に示します。行番号2のM=0のまま起動すると、Wi-Fiセンサが検知したMACアドレスを次々に表示します。M=3に変更すると、行番号140~190に記述したMACアドレスのデバイスだけを検出するようになります。
 行番号140~160のphoneは外出先から帰宅したときになどに検出したいデバイス用です。「=」に続いて、デバイス番号(1~5)と、「,」、MACアドレスを記述します。一度、検出すると、約4時間以内には再検出しません。
 行番号170~190のadashは、頻繁に検出したいデバイス用です。教室に先生が頻繁に接近するのを検出したり、Amazon Dashボタンの操作を検出したいときなどに使用します。こちらは、再検出までの保留時間を10秒におさえました。
IchigoJam用プログラム「Wi-Fiセンサ for IchigoJam」 uart_mon_dash.bas (IchigoJam 1.2.1以降用)

new:uart3,0
' IchigoJam ヨウ BASIC プログラム
1 ?"WiFi センサ for IchigoJam"
2 M=0:'0:MAC, 3:デバイス メイ
3 W=1:'WiFiチャンネル
100 'init
110 uart 3
120 ?"mode=";M
130 ?"channel=1"
140 ?"phone=1,F4:37:B7:00:00:00
150 ?"phone=2,1C:91:48:00:00:00
160 ?"phone=3,2C:20:0B:00:00:00

170 ?"adash=1,18:74:2E:00:00:00
180 ?"adash=2,B4:7C:9C:00:00:00
190 ?"adash=3,B4:7C:9C:4D:00:00

200 cls
300 'det
310 if inkey() goto 310
320 if inkey()<>asc("'") goto 320
330 if inkey()<>asc(" ") goto 300
340 I=0:C=0:N=0
500 'get
510 K=inkey()
520 if M=0 ? chr$(K);
530 if I=0 then C=K
540 if I=6 then N=K
550 I=I+1
560 if K<>10 goto 500
570 if M=0 goto 300
800 'print
810 if C=asc("a") ?"adash ";
820 if C=asc("p") ?"phone ";
830 ? chr$(N);" ヲ ケンシュツシマシタ
840 goto 300

 phoneと、adashは、それぞれ5台まで登録することが出来ます。Arduino IDEで書き込んだ場合は、次回からの再設定が不要になる save機能 が利用できます。?"save!"(saveは小文字)を実行すれば、現在の設定内容がESP-WROOM-02へ保持されるので、以降は、BASICプログラムの行番号120~190を省略することが出来ます。
 設定内容は、コマンドの「=」を「?」に変更して確認します。現在のチャンネル番号を知りたいときは?"channel?"のように入力します。登録したMACアドレスは、?"phone?"や、?"adash?"で確認することが出来ます。

Tips:
プログラム入力時に、Wi-Fiセンサからの通知が邪魔になることがあります。
回避するには、UART 3,0でIchigoJamの受信機能をOFFにしてください。

応用

 家族のスマートフォンのMACアドレスを登録しておけば、テレビに家族の名前とともに「ワタル、オカエリ」と表示することが出来るでしょう。さらに、お父さんが帰ってきたら書斎のエアコンと照明の電源を入れるとか、在宅者に合わせて音楽のジャンルを変えるといったことも考えられます。
 イベント会場では、スタッフがブースに戻ってきたときに検出結果を関係者へメール通知することによって、スタッフ交代状況を把握することもできるでしょう。
Wi-Fiセンサのソースコードおよび説明(GitHub):
バイナリファイル(MixJuiceへの書き込み用):
MixJuiceのファームウェア書き換え方法:
本製作で使用したライブラリ・参考文献:
※配布中のWi-Fiセンサ用ソフトウェア(adash.zipやexample29u_dashディレクトリ)に含まれるライブラリpromiscuous.inoおよびpromiscuous.hには、原作者kat-kaiの著作物を元に改変したものを使用しています。ソフトウェアは使用者の自己責任で自由に使用することが出来ますが、再配布する場合は権利表示に配慮してください。

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