【IchigoJam BASIC × sakura.io】ではじめる、はじめてのIoT

株式会社jig.jpの福野 泰介と申します。

月額65円で使える4G通信モジュール「sakura.io」が、2017年6月より共立電子Amazonに加え、秋月電子でも買えるようになりました! それを記念して、本記事ではsakura.ioとIchigoJamを使ったIoTづくりを実際に行い、その工程について簡単にご説明をします。工作時間の目安は30分ほどですので、これを機会にぜひIoTを始めてみましょう!

※この記事は2017年07月06日に公開された記事に、新たにデータ受信編を加筆した内容の記事となります

準備の電子工作&データ発信編

スマホやPC、WebサーバーなどとIchigoJam、相互にお手軽IoT通信を始めましょう!

今回の作業で使用するものはこちらです。準備が出来たら、それでは、さっそく作っていきましょう!

モジュールづくり

IchigoJamと通信モジュールをつなぐボードをブレイクアウトボードを使って、電子工作します。

ブレイクアウトボード左 J1 ブレイクアウトボード右 J2
1 I RESET H:通常, L:リセット - 20 P VIN 電源(3V-5.5V) 5V(IchigoJam)
2 P GND - 19 P GND GND(PCA9306/IchigoJam)
3 I MODE_IN H:SPI(def), L:GPIO - 18 IO I2C_SCL SDA2(PCA9306)
4 O LED_OUT status LED - 17 IO I2C_SDA SCL2(PCA9306)
5 O WAKE_OUT H:データあり IN1(IchigoJam) 未接続でもOK 16 I SPI_CS -
6 I WAKE_IN H:RUN/SLEEP, L:DEEPSLEEP OUT1(IchigoJam) 15 I SPI_SCK (or GPIO) -
7 IA ADC_IN2 - 14 O SPI_MISO (or GPIO) -
8 IA ADC_IN1 - 13 I SPI_MOSI (or GPIO) -
9 O LDO_OUT(1.8V) VREF2(PCA9306) 12 I UART_RX -
10 P 3.9V - 11 O UART_TX -

* SCLとSDAを逆に使用

ブレイクアウトボード右側、電圧変換PCA9306を上下逆にするとGND/SCL/SDAが対応していて都合がいいです。

PCA9306のピンヘッダーを2ピンだけに分割し、SCL/SDAにはんだづけを行います。GNDはブレイクアウトボードとPCA9306両方にはんだづけ。VREF2はブレイクアウトボードの16ピンに触れないようはんだづけします。

ブレイクアウトボード左側、 PCA9306のVREF2から9番ピンをジャンパーでつなぎはんだづけ。スリープ制御用のWAKE_INに白、データ取得検知用のWAKE_OUTにオレンジの長めのジャンパーをはんだづけします。

次に、ブレイクアウトボード左上20番ピンに黄色のジャンパーをはんだづけします。最後にPC9306AのVREF1に赤、SCL1に青、SDA1に緑のジャンパーをはんだづけして、できあがり!

WAKE_IN / WAKE_OUTが必要ない場合は、WAKE_INをLDO_OUT(1.8V)にプルアップ(10kΩ)だけしておきましょう。

IchigoJamに接続する
CN5
黄:5V *ACアダプターや充電式モバイルバッテリーなど電流が多めに流せること
青:SDA (or IN3)
緑:SCL (or EX1)
赤:3.3V
黒:GND
CN4
オレンジ:IN1 (受信状態検知、未接続でもOK)
白:OUT1 (モジュール省電力制御、使わない場合VCCへ)

モジュールとサービスの登録

モジュールの作成が終わったら、続いてsakura.ioへの登録を行います。まず、はじめにsakura.ioのページを開き、メニュー「開発者向け」から登録しログインを行います。

プロジェクト追加を選択してプロジェクトを作成します。

今回使用するモジュールを登録します。

通信モジュールのシール下に書かれた(IDとPASS)を転記。QRコードを読み取ってコピペもできます!

プロジェクトのサービス「WebSocket」を追加(名前、test)し、WebSocketサービスを開いておきます。

IchigoJamからデータ送信

通信モジュールを動かします。

OUT1,1

通信モジュールの点滅がはじまり、1分ほど待つと、1回点滅になります(3回は回線接続中、2回はサービス接続中)

次のプログラムを書いて、データを送信!

N=15
OK
POKE#800,#21,10,1,76,N,N>>8,0,0,0,0,0,0,N>>8^N^102,36,0,36:?I2CR(79,#800,13,#820,3)
0

WebSocketの画面でデータが到着する様子がリアルタイムに見られます! これでアナログセンサーに温度計や水位計、距離計などをつないで、モニターするデバイスが創れますね。GPSと接続すれば、リアルタイムに位置情報を送ることも可能です。

myThings利用&データ受信編

前半のデータ発信編で、IchigoJamからのデータ送信が確認できたら、受信側も実験してみましょう。
今回はYahoo! JAPANの便利なサービス「myThings」を使います。

myThingsとは?4>

myThingsは、一般ユーザー向けに提供されるサービスで、自分が使用しているIoT製品やWebサービスを組み合わせて、新しく便利な使い方ができるようにします。IoT製品やWebサービス、スマートフォンの機能などがmyThingsに対応していれば利用できます。myThingsのアプリは、iOS、Android向けに提供されています。

引用:第719回:myThings とは - ケータイ Watch Watch より

myThingsのLED1ボタンを押したら、IchigoJamのLEDがつく!コマンド増やし放題!音がなったり、ゲームが始まったり、サーボで何かを叩いたり!?

「ボタンを押したら」でボタンを作って、アクションから「sakura.io」を選択。(初回は認証のためsakura.ioへのログインが必要)モジュールIDを書いて、値を1、名前を「LED1」として作成。同様に、値を0、名前を「LED0」としてもうひとつボタンを作成。

次はIchigoJamのプログラムです。モジュール準備で、データを受信したときに1になる信号が、IN(1)に接続したので、この値を見て、1になったら値を読み、その値によって動作するようにプログラムします。

10 OUT1,1
20 IF IN(1)=0 CONT
30 POKE#800,#30,0,#30:IF I2CR(79,#800,3,#820,22) STOP
40 N=[18]:?N
50 IF N=1 LED1
60 IF N=0 LED0
70 GOTO20

簡単ですね!(40行、N=PEEK(#824)|PEEK(#825)<<8 としても同様です) sakura.ioの起動にしばらく時間がかかるので、1回点滅になるまでまって、myThingsのボタンを押しましょう。 前回のデータ発信も myThings に接続すると、簡単にスマホへ通知、Twitter/LINE/Facebookへ連携もできますよ!ネコIoTなども、簡単に実現できますね!

まとめ

いかがでしたでしょうか。IchigoJam BASICとsakura.ioを利用すれば、ここまで手軽にIoTを始められます。

私が運営するブログ「create every day - 福野泰介の一日一創」では、「IchigoJam BASIC x sakura.io」を利用した「鯖江市営のつつじバス乗降センサー」や、子供向けワークショップ「こどもIoTハッカソン」など、IoTの応用編をご紹介しています。

IoTにご興味のある方、この機会にぜひ、ご挑戦ください!

Links

- sakura.io β版時点での解説
- 応用例、バスIIoT 送受信方法解説
- 応用例、めがね会館ビルチカ
- IchigoJam meets GPS receiver 'u-blox NEO-7M'
- さくらインターネットが提供するIoTプラットフォームサービス、sakura.io
- myThings - あなたの毎日が、組み合わせで便利になる
- こどもパソコン IchigoJam - はじめてのプログラミングパソコン(1500円)