【IchigoJam BASIC × sakura.io】ではじめる、はじめてのIoT
株式会社jig.jpの福野 泰介と申します。
月額65円で使える4G通信モジュール「sakura.io」が、2017年6月より共立電子、Amazonに加え、秋月電子でも買えるようになりました! それを記念して、本記事ではsakura.ioとIchigoJamを使ったIoTづくりを実際に行い、その工程について簡単にご説明をします。工作時間の目安は30分ほどですので、これを機会にぜひIoTを始めてみましょう!
※この記事は2017年07月06日に公開された記事に、新たにデータ受信編を加筆した内容の記事となります
準備の電子工作&データ発信編
今回の作業で使用するものはこちらです。準備が出来たら、それでは、さっそく作っていきましょう!
- IchigoJam(バージョン1.2.2) 1,500円〜
- sakura.io 通信モジュール 8,640円
- sakura.io ブレイクアウトボード 2,700円
- I2C電圧変換 PCA9306 150円
- ジャンパーコード 220円
- はんだごて
- はんだ少々
- ニッパー
モジュールづくり
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向けに提供されています。
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円)