MixJuice Ver 1.0.4を使ったPanCakeへの高速データ転送の実験

MixJuice 1.0.4のプレリリース版のおかげで、IchigoJamからPanCakeへの高速ダイレクト転送が可能になりました。
通常は、MixJuice⇒IchigoJam⇒PanCakeの順にデータを転送します。今回は、MixJuice 1.0.4に高速転送モードが追加されたので、MixJuice⇒PanCakeのダイレクト転送を行いました。
IchigoJamは転送の制御を行います。転送中は、転送が終わるまでLEDを点滅させながら待ち続けます。

必要なものは、IchigoJam + MixJuice + PanCakeです。

MixJuiceとIchigoJamとの接続

MixJuiceは、IchigoJam用のシールドとして接続します。
上図のMixJuiceはブレッドボードで製作した互換品につき、重ねていませんが、純正品であれば下図のように、MixJuiceをIchigoJamに重ねて接続することができます。
写真= pcn.club

PanCakeのRXD-RXD接続

PanCakeは、シールドとして重ねずに、IchigoJamのRXD(CN3の一番手前)⇒PanCakeのRXD(CN2の手前から2番目)に接続します。受信信号同士を接続するのがポイントです。PanCakeをシールドとして使用する場合、PanCakeのCN2は、IchigoJamのCN3として作用するので、PanCakeのCN2用のシールには「TXD」と書かれています。しかし、このピンはPanCakeマイコンのRXD端子に接続されています。
シリアル以外に電源やGNDも接続します。
アクセス方法①:下記のメインメニューから [8]⇒[4]⇒[7]
?"MJ GET bokunimowakaru.github.io/MJ/
アクセス方法②:IchigoJamから下記の直リンクへアクセス
?"MJ GET bokunimowakaru.github.io/MJ/PC/700.txt
この仕組みは、MixJuiceのVer 1.0.4以降でしか動きません。古いバージョンを使用されている場合は、他のメニュー[8]⇒[4]⇒[3]などをお楽しみください。
なお、動画内のBASICプログラムのダウンロードの一部(約10秒くらい)をカット編集しています。PanCakeへの転送部分は、録画したままの状態です。

プログラム

プログラムは以下のようになります。始めにMixJuiceのバージョンをチェックし、バージョンの最後の数字が4であることを確認します。バージョン、1.0.1、1.0.2、1.0.3のときは、エラー表示とともにプログラムを終了します。バージョン1.0の場合も、Null入力となり、エラー条件に引っかかって終了します。今後、goto80に変更するかもしれません。
バージョンが適切だった場合、「MJ SPW 1」という命令で、高速転送モードに設定し、また「MJ GET」命令でデータの要求を行います。しかし、高速転送の応答をIchiogoJamは受けれませんので、すぐに「uart0,0」でIchigoJamのシリアル通信を止めます。そして、30秒後に、再び、シリアル通信を再開します。行番号60では、データが残っていた時に受信データを破棄する処理を行います。
new:cls:'
1 ?"コウソク テンソウ モード"
2 ?"MJ VER"
3 forI=1to19:wait3:V=inkey():?chr$(V);:next
4 ifV<ASC("4")?"ERROR":end
5 ?:wait30
10 ?"MJ SPW 1":wait30
20 ?"MJ GET bokunimowakaru.github.io/MJ/PC/701.txt"
30 uart0,0
40 forI=1to30:wait60:?"wait ";30-I:ledI%2:next
50 uart3,2
60 I=inkey():ifIgoto60
70 ?"MJ SPW 30"
80 ?"MJ GET bokunimowakaru.github.io/MJ/PC/0.txt"
run

通常のPanCakeへの画像転送

すでに、通常の方法も公開しているので、参考にしてください。
通常のPanCakeへの画像転送方法

Raspberry Pi を使った超高速転送

Raspbery Piをお持ちの方は、USBシリアルまたは拡張IOのUARTをPanCakeに接続し、以下を実行してください。
超高速転送が可能です。
git clone https://github.com/bokunimowakaru/petit15term.git
make
cd petit15term
./petitPanCake fuji.txt
Raspberry PiのRXDをPanCakeのCN2の一番手前に、TXDをCN2の下から2番目に接続します。3.3VとGNDも必要です。
富士山の画像はIchigoJam-FANグループの古籏さんの著作物です。
by ボクにもわかるIchigoJam用マイコンボード

XBee ZigBeeによる(ロボット用)無線Keypadコントローラ向けサンプル

先日、Arduinoを搭載したロボットを、XBee ZigBee機器からワイヤレス制御したいという要望をいただきました。
そういった用途に向け、ワイヤレス部分の基本サンプル・プログラムを作成しましたので紹介いたします。
ボタンが3つまでの場合のサンプルについては、当方のウェブサイトや書籍で紹介しています。今回の要望は、ボタン5つでした。
下図の左は、XBee子機です。無線リモコン側を模擬したものです。ボード上の3つのボタンがDIO 1~3に接続されています。
また、小さなブレッドボードには、 DIO 4(XBee_pin 11)と DIO 11(XBee_pin 7)に接続されています。
これら合計5つのボタンの情報を、瞬時に右側のArduino搭載の親機に送信します。
左:XBee子機(リモコン側を模擬)
  ZigBee RouterまたはEnd Device
右:Arduinoを搭載したXBee親機(ロボット側を模擬)
Arduino + LCD + ZigBee Coordinator

サンプルスケッチ

サンプル・プログラムは以下の通りです。
緑文字の部分は、ライブラリ関数xbee_gpio_initに相当します。これだと3つまでしか対応できませんでした。
赤文字の部分が今回のポート4とポート11の対応部分です。
紫文字の部分は状態変化通知のための自動送信の設定です。
#include <xbee.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
byte dev[8];
void setup() {
    lcd.begin(16, 2);
    lcd.clear();
    lcd.print("Example 38 SW_R'");
    xbee_init( 0 );
    lcd.setCursor(0, 1);
    lcd.print("Waiting for XBee");
    lcd.setCursor(0, 1);
    if(xbee_atnj(30) != 0){
        lcd.print("Found a Device  ");
        xbee_from( dev );
        xbee_ratnj(dev,0);

        xbee_ratd_myaddress( dev );
        xbee_rat(dev,"ATD103");
        xbee_rat(dev,"ATD203");
        xbee_rat(dev,"ATD303");

        xbee_rat(dev,"ATD403");
        xbee_rat(dev,"ATP103");

        xbee_rat(dev,"ATIC081E");
    }else lcd.print("no Devices      ");
}
void loop() {
    XBEE_RESULT xbee_result;
    xbee_rx_call( &xbee_result );
    if( xbee_result.MODE == MODE_GPIN){
        lcd.clear();
        lcd.print(xbee_result.GPI.PORT.D1);     // 子機XBeeのポート1の状態を表示する
        lcd.print(xbee_result.GPI.PORT.D2);     // 子機XBeeのポート2の状態を表示する
        lcd.print(xbee_result.GPI.PORT.D3);     // 子機XBeeのポート3の状態を表示する
        lcd.print(xbee_result.GPI.PORT.D4);     // 子機XBeeのポート4の状態を表示する
        lcd.print(xbee_result.GPI.PORT.D11);    // 子機XBeeのポート11の状態を表示する
    }
}
左側の子機のボタンを押すと、「xbee_result.GPI.PORT.D1~4と11」に0または1が代入されます。それぞれの値に応じてモータを動かせば、Arduino搭載のワイヤレスロボットを手軽に製作することが出来ます。書籍をお持ちの方は、P.194のExapmle 38と合わせて、ご覧ください。
なお、上記の色つきの部分を一つのライブラリ関数またはパラメータ入力での対応の要望がありましたら、検討いたしますが、当面は、本サンプルのようにATコマンドで実現してください。

標準回路図(一部、読み替えが必要)

下図は、子機の回路図です。ADC Port1~3や、LED Port 4、11は不要です。
DIO4と、DIO11には、スイッチを接続してください。

乾電池で、何か月、数年といった年月にわたって動作させたい場合

子機の消費電力を抑えて、長期間にわたって動作させたい場合は、下記を参考にしてください。

通信エラー対策

(各種のノイズなどの影響により)、子機のボタン状態と、親機側の状態とが、まれに一致しなくなることがあります。それを防ぐには、定期的に親機から子機へ状態を問い合わせます。以下は、書籍P.197のExample 39と組み合わせたサンプルです。本書と合わせてお読みいただければ理解が深まるでしょう。
#include <xbee.h>
#include <LiquidCrystal.h>
#define FORCE_INTERVAL  100
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
byte dev[8];
byte trig=0xFF;
void setup() {
    lcd.begin(16, 2);
    lcd.clear();
    lcd.print("Example 38 SW_R'");
    xbee_init( 0 );
    lcd.setCursor(0, 1);
    lcd.print("Waiting for XBee");
    lcd.setCursor(0, 1);
    if(xbee_atnj(30) != 0){
        lcd.print("Found a Device  ");
        xbee_from( dev );
        xbee_ratnj(dev,0);
        xbee_ratd_myaddress( dev );
        xbee_rat(dev,"ATD103");
        xbee_rat(dev,"ATD203");
        xbee_rat(dev,"ATD303");
        xbee_rat(dev,"ATD403");
        xbee_rat(dev,"ATP103&quot
;);
        xbee_rat(dev,"ATIC081E");
    }else lcd.print("no Devices      ");
}
void loop() {
    XBEE_RESULT xbee_result;
    if( trig == 0){
        xbee_force( dev );
        trig = FORCE_INTERVAL;
    }
    trig–;
    xbee_rx_call( &xbee_result );
    if( xbee_result.MODE == MODE_GPIN || xbee_result.MODE == MODE_RESP){
        lcd.clear();
        lcd.print(xbee_result.GPI.PORT.D1);     // 子機XBeeのポート1の状態を表示する
        lcd.print(xbee_result.GPI.PORT.D2);     // 子機XBeeのポート2の状態を表示する
        lcd.print(xbee_result.GPI.PORT.D3);     // 子機XBeeのポート3の状態を表示する
        lcd.print(xbee_result.GPI.PORT.D4);     // 子機XBeeのポート4の状態を表示する
        lcd.print(xbee_result.GPI.PORT.D11);    // 子機XBeeのポート11の状態を表示する
    }
}

XBee用ライブラリ

なお、初めて利用される場合は、xbee用の管理ライブラリのインストールが必要です。ライブラリのインストール方法については、当方の書籍、もしくは、下記を参照してください。

by ボクにもわかるXBee用センサネットワーク

ボクにもわかるブレッドボードによるMixJuice互換ボードの製作方法

IchigoJam+MixJuiceボードをブレッドボードで製作し、ボクにもわかる for MixJuiceにアクセスしてみましょう。
本ページでは、ブレッドボード上にIoTモジュールESP-WROOM-02を実装し、MixJuiceのファームウェアを書き込み、ネットワークボードMixJuiceの互換ボードを製作する方法について説明します。
本ページで使用する用語

マイコンボードの互換機の製作

まずは、マイコンボードを製作します。ブレッドボードを使ったIchigoJamマイコンボードの互換ボードの作り方は、下記を参照してください。
ブレッドボード版IchigoJamマイコンボードの互換ボード
(ご注意)マイコンボードの互換ボードです。互換マイコンではありません。
IchigoJamはjig.jpの登録商標です。ここでは同社製品を示しています。
ただし、MixJuiceの互換ボードと通信を通信を行うには12MHzの水晶振動子が必要です(上図には含まれていません)。IchigoJamマイコンの19番ピンと20番ピン(IchigoJam by jig.jpと書かれたピン。ブレッドボードに書かれている数字も、たままた18番と19番)へ水晶振動子を実装してください。
なお、マイコンボードのほかに、表示用のテレビ、PS2端子付きのキーボード、micro USBコネクタに対応したACアダプタ、無線LANアクセスポイントなどの周辺機器や、インターネット回線が必要です。
電源をパソコンのUSBから供給した場合、パソコンの能力によっては、IchigoJamを搭載したマイコンの動作が不安定になる場合があります。
(参考情報) もしくは、純正IchigoJam U マイコンボードと接続することも可能
本ページで製作するMixJuice互換ボードを、純正のIchigoJam U マイコンボードに接続して動作させることもできます。その場合は、IchigoJam Uのシリアル(CN3のRXDとTXD)と、電源(CN5の1番ピンと5番ピン)をMixJuice互換ボードに接続します。

MixJuice互換ボード用の部品リスト

部品を集めます。IoTモジュールには秋月電子通商で売られているESP-WROOM-02 DIP化キットを使用します。他の部品についても、秋月電子通商で揃えれることができるでしょう。
  • ESP-WROOM-02 DIP化キット(650円)
  • USBシリアル変換アダプタ AE-FT234X(600円)
  • レギュレータ 3.3V500mA TA48M033F(100円)
  • 電解コンデンサ 1000μF (耐圧6.3V以上。製作例では16V品を使用)
  • 電解コンデンサ 470μF または OS-CON 470μF
  • 積層セラミックコンデンサ 0.1μF
  • タクト・スイッチ  2個
  • 抵抗器(1/4W) 1kΩ 3個 LED用
  • 抵抗器(1/4W) 10kΩ 2個 ESPモジュールの信号プルアップ用
  • LED、赤、黄、緑、各1個
  • ブレッドボード E-CALL EIC-801
  • ブレッドボード用ジャンパ EIC-J-L
  • ピン端子(オス)付きのブレッドボード用ワイヤー 4本(赤、黒、青、緑)

ブレッドボードに配線する

次にブレッドボードへモジュール以外の部品の実装と配線を行います。下図を参照しながら製作してください。
ジャンパ線の色は長さによって色分けされています。図の色に合わせて選びましょう。が不明確ですが、長いものは見た目で区別できると思います。約5mmの短いいジャンパーは、 h 列の2本だけです。その他は色の約7.5mmのジャンパー線です。
左下の電解コンデンサは1000uFです。側面にある帯状のマーカーをブレッドボードのマイナス線に接続してください。上側の電解コンデンサについてもマーカーがマイナス側です。ただし、マーキングが部品の天面のみに表示されている場合は、マーカー側がプラスです。少し、紛らわしいので、ご注意ください。
レギュレータは金属面がボードの内側を向くようにします。LEDは、リード線の長い方がアノードです。色と色のLEDのアノードをボードの f 列に、のアノードを e 列に接続してください。これらLEDに接続する抵抗は1kΩです。抵抗の片側をLEDのカソードへ、反対側をブレッドボードのマイナスライン(GND)へ接続します。
ESPモジュールに接続するプルアップ抵抗は10kΩです。ESPモジュールの8番ピンと15番ピンに接続します。15番ピン側はタクトスイッチの配線を渡って写真のボード上方 a 列11番の抵抗に接続されています。これら10kの抵抗はプルアップ抵抗です。反対側の抵抗のリード線を、電源ラインに接続します。写真の場合、上側の電源(3.3V)に接続してください。(下側の電源ラインは5V)
製作後は、必ず配線をチェックしてください。慣れている人でも、配線ミスをします。
問題が無ければ、ESPモジュールを実装します。これで、ハ
ドウェアの完成です。

ファームウェアを書き込もう

ファームウェアを書き込むためにUSBシリアル変換アダプタをi列の14~17番に接続します。16番に「RX」のシールを貼ってありますが、これはESPモジュール側のRXです。ここに、USBシリアル側のTX端子がきます。
USBシリアル変換アダプタをWindows 7~10を搭載したパソコンに接続すると、自動的にドライバのインストールが開始されます。インストールには、5分くらいの時間を要する場合があります。インストール中に警告マークなどが表示されたとしても、辛抱強く待てば、適切にインストールされるでしょう。
無事にドライバのインストールが完了したら、Windows のデバイスマネージャを開き、一覧の中から「ポート(COMとLPT)」の「+」をクリックしてください。下図のようにCOMポート番号が表示されます。
もし、警告マークが表示された場合は、ドライバのインストール中です。5分以上、待ってください。途中でUSB端子を外すとインストールに失敗します。
複数のCOMポートが表示された場合は、USBシリアル変換アダプタをUSB端子から抜き、その時にデバイスマネージャから消えたCOMポート番号を確認します。
ファームウェアは、MixJuiceのウェブサイトからダウンロードすることができます。また、書き込みソフトウェアは、Espressifのホームページから「ESP8266 Flash Download Tools v2.3」または「v2.4」をダウンロードします。本ESP-WROOM-02は、バージョン v3以降には対応していません。ダウンロードするバージョンを間違わないようにしてください。
MixJuiceホームページ
(ご注意)MixJuiceファームウェアの無断配布は禁止されています。詳細は
開発元(NaturalStyle Co. Ltd. http://na-s.jp/)にご確認ください。
Espressifダウンロードページ
FLASH_DOWNLOAD_TOOLSをダウンロードしたら、デスクトップなどにZIPを展開し、「ESP_DOWNLOAD_TOOL_V2.3.exe」(または ESP_DOWNLOAD_TOOL_V2.4.exe)を起動します。起動するとコンソール画面(CLI画面)と以下のようなGUI画面が開きます。
ウィンドウの一番上の欄へ、MixJuiceのホームページからダウンロードしたファームウェアの保存場所を入力し、その他の欄を空欄にしてください。また、ADDRは「0x00000」を入力してください。
画面左下のCOM PORTにはUSBシリアル変換アダプタのCOMポート番号を入力します。
その他の設定については、秋月電子通商から購入したESP-WROOM-02の場合は、今のところデフォルトのままで大丈夫です。秋月電子通商以外から購入した場合は、設定を変更する必要があるかもしれません。適切に動作しない場合は、販売店などに購入した商品の仕様を問い合わせるか、色々と試してください。
(購入したモジュールに内蔵されているFLASHメモリの仕様に合わせて、SPI SPEED、SPI MODE、FLASH SIZEなどを変更する)。
ファームウェアを書き込むには、ブレッドボード上のタクトスイッチの操作が必要です。以下の手順でファームウェア書き込みモードへ設定してください。慣れるまでは少し難しいかもしれません。
  1. IO0ボタン(黄色)を押した状態のまま
  2. RSTボタン(茶色)を押し、
  3. RSTボタンのみを離します。
  4. その後、IO0ボタン(黄色)を離します。
ファームウエア書き込みモードに設定したら、ESP FLASH DOWNLOAD TOOLの「START」ボタンをクリックしてください。ステータスバーが進行し、書き込みに成功したら、その旨が表示されます。
「START」ボタンのすぐ横のインジケータが「赤色」になった場合は書き込み失敗です。電源を切り、始めからやり直してください。
その他のファームウェア書き込みツールについては、イチゴジャム レシピに詳しく紹介されていますので、そちらを参照してください。
その他のファームウェア書き込みツール
http://15jamrecipe.jimdo.com/mixjuice/ (イチゴジャム レシピ)

IchigoJamとの接続

ファームウェアの書き込みが完了したら、IchigoJamとの接続を行います。
シリアル信号については、IchigoJamマイコンのTXDをESPモジュールのRXDへ、IchigoJamマイコンのRXDをESPモジュールのTXDへ、互いに信号名が交差するように接続します。上図では、色の線が左側、色の線が右側に接続されています。
IchigoJam TXD(図の左側) ⇒ ESP RXD (図の左側)
IchigoJam RXD(図の右側) ⇒ ESP TXD (図の右側)
電源はUSBから供給します。MixJuiceに大きな電流が必要なので、なるべくMicoro USBコネクタ変換キット (AE-USB-MICRO-B-D 200円)の近くから引き出してください。また、ポリスイッチの働きで適切に起動しない場合があります。一度、USBを抜き、一息ついてから差し
すと起動すると思います。
図中の黒色のジャンパー線はGNDです。接続を忘れないようにしてください。

ボクにもわかる for MixJuice へのアクセス方法

それぞれの機器を接続し、電源を入れ、IchigoJamに接続したキーボードの[F1]キーを押して画面を消去してから、以下のコマンドを入力してください。<SSID>と<PASS>の部分には、お使いの無線LANアクセスポイントのSSIDとパスワードを入力します。
?"MJ APC <SSID> <PASS>⏎
正しく接続されるとIPアドレスが表示されます。以上の作業は、次回からは不要です(自動的に接続される)。
次に、「ボクにもわかる for MixJuice」のページへアクセスしてみましょう。以下を入力してください。
?"MJ GET bokunimowakaru.github.io/MJ/⏎
ボクにもわかる for MixJuiceでは、メニュー番号の数字を押して、「⏎」を押すと指定したページにアクセスすることが出来ます。番号を間違えてエラーが出た場合は、「INPUT」と書かれている行までカーソルを戻して、「⏎」を押し、数字を修正してから、再度、「⏎」を押してください。
最初のページ「ホーム」で「1」「0」「⏎」を押して「ボータル トウロク」を選択すると、IchigoJamマイコンのファイル番号0に、「ボクにもわかる for MixJuice」へのアクセス用のプログラムを保存することが出来ます。
また、IchigoJamマイコンの「BTN」信号(13番ピン)を、ジャンパー線でGND(マイナスライン)に接続しておくと、電源を入れた時に自動的に、「ボクにもわかる for MixJuice」へアクセスできるようになります。

コンテンツを配信してみよう

ひととおり、楽しんだら、こんどはコンテンツの配信にも挑戦してみましょう。下記のブログの後半に、GitHubを使用した配信方法の概略を記載しています。

おわりに

このページは、長期間、公開を保留にしていました。今日、ちょっとしたきっかけがあったので、内容の補足や、一部の写真の撮り直しなどを行い、公開することにしました。
なお、ここで製作した回路には、若干のハードウェア設計不良があることを確認していますが、その一方で、十分な検証を行ったうえで、公開しています。
異常が発生したり、万が一、部品が壊れたとしても、一切、責任は負いません。公開情報については改善いたします。何かありましたら、お知らせください。
不具合の多くは、起動時に発生します。起動時の問題は、再起動で直ります。その点はご容赦ください。
USBコネクタを取り外し、電源を切り、何秒か息をついてから、再び電源を入れてください。電源電圧の降下に余裕がありません。なるべく、USB出力のACアダプタで電源を供給してください。

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

まるでカラーFAX!? IchigoJam+MixJuice+PanCakeで画像データ受信

まるでカラーFAX!? IchigoJam+MixJuice+PanCakeで画像データ受信

Espressif製Wi-FiモジュールESP-WROOM-02を搭載したMixJuiceを、IchigoJamに接続し、画像データを受信する実験です。受信した結果はPanCakeに表示します。データ量が多い(8KB以上の)場合の表示方法に、苦労しました(後述)。
写真=Facebook IchigoJam FANグループの松永さんによる受信結果

準備するもの

  • IchigoJam (jig.jp社が開発した、BASICが動作する「こどもパソコン」)
  • MixJuice (Natural Style社が開発したIchigoJam用ネットワークボード)
  • PanCake (Natural Style社が開発したIchigoJam用グラフィック&サウンドボード)

アクセス方法

それぞれの機器を接続し、電源を入れ、[F1]キーで画面を消去してから以下のコマンドを入力してください。<SSID>と<PASS>の部分には無線LANアクセスポイントのSSIDとパスワードを入力します。
?"MJ APC <SSID> <PASS> ⏎
正しく接続されるとIPアドレスが表示されます。以上の作業は、次回からは不要です(自動的に接続される)。
次に、「ボクにもわかる for MixJuice」のページへアクセスし、メニュー番号を選択します。もしくは、コンテンツへの直アクセスのアドレスを入力してください。
メニューからアクセス [8][⏎]⇒[4][⏎]⇒[3][⏎]  IchigoPi パロディ ロゴ
?"MJ GET bokunimowakaru.github.io/MJ/ ⏎
コンテンツへの直アクセス
?"MJ GET bokunimowakaru.github.io/MJ/PC/300.txt ⏎
うまく受信することが出来れば、下図のような画像がPanCakeに表示されます。
ダウンロードには時間がかかります。ダウンロード中に音楽を流すことも簡単に出来るので、PanCakeの説明書を見ながら挑戦してみてはいかがでしょう。

大事なポイント

この仕組みには、ひとつ、大事なこだわりポイントがあります。それは、全てIchigoJam、MixJuice、PanCake、そしてウェブ配信サービスといった仕組みを「そのまま」使用していることです。(ただし、コンテンツを作成するための画像変換には専用ウェブページを利用)
特別な仕組みや、高度なプログラミングは、一切、必要ありません。
そう、あなたにも配信できるのです。

ここからが本題

ボクが、皆様に配信したいのは、このコンテンツではありません。
こういった仕組みを配信する人を増やし、かつての「パソコン通信」や「ネットサーフィン」のようなことがしたいと思っています。ボクのサイトは、その実験台です。
以下、その方法について、説明します。

まず、配信したい画像を準備します。

ボクは絵を描くのが苦手です。かつて似たような仕組を使って、初めてアップロードしたコンテンツは、7色(厳密には6色)のリンゴの絵でした。その時のことを思い出しつつ、今回はイチゴを選びました。
イチゴの葉が、ちょっと違うように思うかもしれません。その他、もろもろ権利的には難しい部類に入ります。このあたりについては、「パロディ」の扱いで公開しています。ご理解とご容赦をいただきたく、お願いします。
絵の準備が出来たら、画像データをPanCake用に変換します。以下のソフトを使用しました。
画像変換スクリプト(IchigoJam FANグループの古籏さんが作成)

GitHubの使い方

スクリプトを実行し、PanCake用のコンテンツが作成出来たら、それをホームページ公開サービスにアップロードします。私は、下記のGitHubというサービスを利用しています。GitHubにユーザ登録して、テキストファイルをアップロードすれば、ページを公開することが出来ます。
GitHub内のMixJuice用レポジトリ
コンテンツは以下の形式で保存します。
MixJuiceで読める形式(テキストエディタで選択しておく)
フォント:シフトJIS
改行コード:CR+LF
アップロードしたコンテンツをMixJuiceからアクセスするURL(インターネットアドレス)を知るには、コンテンツのファイルを表示して、右上の「Raw」ボタンを押します。これで、コンテンツそのもののアドレスが得られます。
上記のコンテンツの場合、以下が得られます。
上記のページへ、MixJuiceでアクセスするには、以下を実行します。
?"MJ GET raw.githubusercontent.com/bokunimowakaru/MJ/gh-pages/
0.txt⏎
また、「gh-pages」というブランチを作成すれば、より短いURLでアクセスすることができるようになります。ブランチについては、サルが目印のウェブサイトで学んでから設定すれば良いでしょう(ややこしいです)。
?"MJ GET bokunimowakaru.github.io/MJ/0txt

8KB以上のコンテンツを転送するには

PanCake用のコンテンツの話に戻ります。
実は、ダウンロードが途中で中断してしまう問題がありました。8KB以上のコンテンツを配信しようとすると、中断してしまいます。
その解決方法を探し、ようやく見つかりました。
    1. ダウンロード用のファイルを分割する
      (8KB未満に抑える)。
    2. ダウンロードの最後に5秒のウェイトを入れる
    3. 改行を出力する
    4. 1秒のウェイトを入れる
    5. 次のダウンロード用のページへアクセスする
具体的には、以下のようなコードを最後に入れます。
uart0:forA=0to5:beep:?"wait ";5-A:wait60:next:uart3:?:wait60:?"MJ GET (ここに続きのコンテンツのURLを書く)"

動画

IchigoJam FANグループの松永さんが撮影した動画があります。ダウンロードの途中で停止してしまう、作成途中のものですが、合わせてご覧ください。
受信の様子(撮影:IchigoJam FABグループの松永さん)

他にも今回の内容に類似したPanCakeの応用を以前から検討しています。お伝えできるような状態になるまでに、まだまだ時間がかかりそうです。気長にお待ちください。

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

(進捗)ESP8266がダイソーの電池で何か月、動き続けるかを実験中

ESP8266のディープスリープモードを利用すれば、ワイヤレスセンサを、長期間にわたって、乾電池で動かすことが出来ます。写真は、ESP-WROOM-02と、温湿度センサを搭載した実験機の様子です。ダイソーの単3アルカリ電池×3本で、室内の温湿度を測定しています。
実験を始めて、40日間が経過しましたので、その様子を見てみました。
データの収集には、手軽にIoTセンサを接続できるAmbientというサービスを利用させてもらっています。
Ambientサービスに関する記事:
下図は、乾電池3本分の電池電圧の推移です。開始時に4.9Vほどあった電圧が、4.6Vを切っています。ここまでは、おおむね想定の動きですが、昨年に別の電池を使って実験したとき(Ambient不使用)に比べると、少し減衰が早いです。
また、まれに発生している電圧降下も気になります。すでに、過去8回も発生しています。このような5日に1回しか現れない現象を、実験で確認するには手間がかかります。Ambientを利用すれば、こういった様子を手軽に見ることが出来ます。
実際に電圧降下が発生しているかどうかは分かりませんが、もし、発生していた場合、電池切れは、この電圧降下の影響を受けます。また、AD変換器への電圧入力には、抵抗分圧した電池電圧を入力しているので、AD変換器の変換完了時間などが影響している可能性もあります。
詳細は、目標期間(3か月~6か月)の達成が不十分だったときに検討することにします。
ボクにもわかるIoTモジュールESP-WROOM-02
https://bokunimo.net/blog/category/esp/
by ボクにもわかる電子工作
https://bokunimo.net/

超簡単IoT! 誰でも簡単にRaspberry Pi で測定した温度をクラウドサーバへ

IoTは誰にでも簡単に始めれます。

Raspberry PiへUSBタイプのLTEモデムを接続したら、IoT端末の出来上がりです。

LANまたはWi-FiからクラウドサーバAmbientへデータを送信する

Raspberry Pi内蔵の温度センサを使って、温度データをクラウドに送信する実験を行ってみましょう。
MVNOのSIM契約やモデムの手配、モデムの設定などの手間を考えると、Raspberry Piに内蔵されている有線LANまたは、Wi-Fiを使って、固定インターネット回線から接続するのが最も簡単です。
ここでは、Ambientというサービスを利用します。詳しくは下記をご覧ください。
手軽に収集したデータをクラウドでグラフ化できるサービス

プログラムも簡単です。

今回は、簡単さをアピールするために、シェルスクリプトで作成してみました。
ダウンロードはこちらから:

もう接続できました。

LTEや3G通信のモバイルインターネット回線に契約する

並行して、モバイルインターネット回線についても検討しておきましょう。
IoT向けMVNOの料金を比較
IoTならLTEではなく、3Gでも十分です。なんと、5980円で手に入る3GモデムとSIMのセット
売られています。
こちらのほうは、まだあまり使っていませんが、写真のdocomo L-02Cよりも、接続が安定しているような印象があります。
Amazonで販売されている3Gモデムとのセット
この機会に、Raspberry PiとAmbientでIoTを始めてみませんか?

IchigoJam + MixJuice

本当は、IchigoJam + MixJuiceでやりたかったのですが、POSTする時のContent-Typeが変更できないので、無理でした。下記の提案が通ると嬉しいです。
Ambient仕様の変更について提案(閲覧制限あり):
引き続き、ESP8266、IchigoJam、Raspberry Pi、Ambientを活用してゆきます。

ボクにもわかるESP8266(まだ無い)
ボクにもわかるRaspberry Pi
ボクにもわかるIchigoJam用マイコンボード

IoT向けMVNOの料金を比較してみました

Raspberry PiへUSB接続のLTEモデムを接続して、IoTデバイスとして使用したいと考え、MVNO通信事業者のIoT向けサービスを比較してみました。
下図はNTT docomoのL-02CをRaspberry Piに接続し、通常のSIMカードで実験してみた時の様子です。
IoTに向いてそうなプランとして、以下の3つを選びました。
月額は、100MB、300MB、1GBの3種類の通信データ量について計算した結果です。
SORACOMは、IoT向けに特化したサービスで、従量課金制となっています。パケット代は、0.2円/MBからです。速度や時間帯、上り/下りなどで異なります。最大の特長は、契約手数料と解約手数料がほとんどかからないことです。とくに、1年以下で解約しても、一切、解約手数料がかからないので、紛失や盗難に合い易いIoT機器にやさしいプランです。月額の上限が青天井なのが気になりますが、通信速度を控えることで実質の上限を設定することが出来ます。また、たくさんのSIMを扱うことを前提に、各SIMをクラウドで管理するシステムが構築されているのも嬉しいポイントです。IoTの実運用向けサービスと言えるでしょう。
So-netの0 SIMは、500MBまで月額無料のプランです。データ量が少ない場合に、月々の支払いを最も抑えることが出来ます。使わない月の存在も考えると、結果的に最安になる可能性があります。通信速度が速い点も特長です。ただし、早いゆえに、誤って大量のデータ通信が発生してしまいやすい心配もあります。とくに、実験中の操作ミスや開発途中のソフトによる大量のログ出力などによって、一気に1600円に達してしまう懸念もあります。その一方で、複数枚のSIMカードを契約できない縛りがあり、複数のIoTデバイスに使用できない点で実験的な運用にしか使えないという矛盾を感じさせられます。他の通信手段が確保できている場合のIoT開発用のサービスとしては最適でしょう。
DMM mobileライトは、データ容量と無関係に、常に一定価格な点が特長です。不具合や大量のログが発生しても、料金が上がらないので、実験や開発の段階に適していると思います。最大の課題は解約手数料です。半年で解約した場合、月に1500円の積み立てが必要です。1年以上にわたって、継続的に開発を行う場合に、適したサービスでしょう。
by ボクにもわかるRaspberry Pi

ウェブサイト「ボクにもわかるIchigoJam用マイコンボード」の更新

「MixJuice」関連の情報と、「ブレッドボードを使った互換機」を下記のMain MENUに追加しました。
約2か月半ぶりの更新ですが、公開した情報だけを振り返ってみると、IchigoJam用ブレッドボードの互換ボードを作ったことと、MixJuice用ホームページを作成したことくらいでした。
引き続き、コツコツと進めることにします。
by ボクにもわかるIchigoJam用マイコンボード
追伸:
工作もたくさんしたし、プログラムもたくさん作ったはずなのですが、公開に至らないものが増えてきました。
役に立ちそうにもない「ボツ作品」が大半ですが、逆に無料で公開するのは惜しいような傑作もあります。
長時間かけて実験中のものも、いくつかあるので、そのうち公開できるようにしたいと思います。