折れ線グラフ


MPChartExample から  折れ線グラフline chart を取り出したもの

20171101_screenshot_line_chart

グラフ表示のライブラリ MPAndroidChar を使用するには、build.gradle に下記を追加する。

MPAndroidChart:v2.2.5 となっている記事もあるが、
MPAndroidChart:v3.0.2 でないとビルドできなかった。

dependencies {
repositories {
		maven { url "https://jitpack.io" }
	}  
	compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
     provided 'io.realm:realm-android:0.87.5'  

ソースコードはgithubで公開しました

参考
MPAndroidChart で簡単チャート表示


Python 時系列のデータのグラフ表示


グラフ描画ライブラリの matplotlib を使用します。
Python でグラフ表示

サンプルコード

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 時系列のデータのグラフ表示

import matplotlib.pyplot as pyplot
import matplotlib.dates as mdates
import datetime
import time
import math

#1分間隔で24時間分のデータを準備する
# 時間軸のデータは、datetime オブジェクトの配列
n = 24 * 60
d = 2* math.pi/n
now = datetime.datetime.now()
xx = now

x =[]
y =[]
for i in range(0,n):
	#1分間隔
	xx  += datetime.timedelta( minutes=1 )
	x.append(xx)
	yy = math.sin( i*d )
	y.append(yy)

# subplot を設定する
fig = pyplot.figure()
ax = fig.add_subplot( 111, title='Sin Graph', xlabel='datetime', ylabel='sin' )
ax.plot(x, y)

# 時間軸の目盛りを1時間間隔にする
loc      = mdates.HourLocator()
ax.xaxis.set_major_locator(loc)

# 時間の表記を時 分 にする
daysFmt = mdates.DateFormatter('%d %H')
ax.xaxis.set_major_formatter(daysFmt)

# 時間軸の目盛りの表記を90度 回転する
fig.autofmt_xdate( rotation=90 )

pyplot.show()

実行結果
20170901_line_chart_datetime

参考
時系列データのプロット


Android でグラフ表示


グラフ描画ライブラリの MPAndroidChart を使用します。

サンプルコード
Github から MPChartExample をダウンロードして、AndroidStudio にインポートしてビルドします。

Google Play でも配布されています。

実行結果
メニュー画面
20170911_mpchart_menu

折れ線グラフ Line Chart
20170911_mpchart_line_chart

棒グラフ Bar Chart
20170911_mpchart_bar_chart

円グラフ Pi Chart
20170911_mpchart_pi_chart

参考
MPAndroidChart で簡単チャート表示


さくら IoT β版 の 動作確認


2016年10月に さくら IoT のβ版の通信モジュール が発売された。
発売されて すぐに購入したので、同年10月にはモノは届いていたが、確認する時間が取れず 1年間 封印したままになっていた。
1年間 熟成したので、食べ頃になったと思い(笑)、動作確認してみました。
なお、α版の動作確認はこちらから

デバイス側

ハードの準備

用意するもの
(1)Arduino本体
2027_09_01_arduino

(2)さくら IoT のβ版の通信モジュール

Arduino本体と通信モジュールを合体する。

(1)通信モジュールを シールドに取り付ける。
シールドをArduino本体にピン穴が合致するように 差し込む。

(2)アンテナ固定具を シールドに取り付ける。
(3)棒アンテナアンテナ固定具に取り付ける。
(4)棒アンテナにアンテナケーブルを接続する。
(5) シールドのアンテナ用のコネクタに アンテナケーブルを接続する。

20170901_saura_iot_beta_arduino

プログラム開発環境の準備

(1)Arduino IDE をダウンロードする。
Arduino IDE20170901_arduino_ide

(2)さくら IoT のライブラリを取得する。
Arduino IDEにて、 [スケッチ]→[ライブラリをインクルード]→ [ライブラリを管理…]をクリックし、 右上検索窓から【sakuraio】を検索すると、
[SakuraIO by SAKURA Internet Inc.]がヒットします。 インストールをクリックすると自動的に該当ライブラリが格納され、[INSTALLED]が表示されます。
20170901_sakura_iot_bate_arduino_libraly_sakuraio

サンプルプログラムの実行

(1)Shell.ino
シリアルモニタから 下記のコマンド操作を実行します。
(1) version :現在 ファームウェアバージョンを表示する
(2) serial :通信モジュール シリアル番号を表示する
(3) status :通信モジュール 通信状態を確認する
(4) sqi :通信モジュール 電波強度を確認する
(5) unixtime :UTC形式 現在時刻を表示する

(2)FirmwareUpdate.ino
さくら 通信モジュール ファームウェアアップデートを実行します。

(3)AlphaCompat.ino
一定間隔でカウント値を0,1,2 チャンネルに書き込み、送信します。

さくら IoT Platform 側

(1)さくらインターネットの会員登録にて、さくらインターネットの会員アカウントを作成する。
20170901_sakura_id_register

(2)さくら IoTのコントロールパネル へ ログインする。
「約款および個人情報の取扱いについてのご確認」が表示されるので、 「同意する」をクリックする。

20170901_sakura_iot_platform_beta_confirm

(3)プロジェクトを作成する

さくら IoT Platformでは プロジェクトという単位で大枠を構成し、 プロジェクト内にさくら 通信モジュールや連携先サービスを設定します。
20170901_sakura_iot_platform_beta_project

(4) 通信モジュールを 登録する

通信モジュールに記載されているIDとパスワードを転記して、
[モジュール登録] ボタンをクリックします。

下記注意が表示されるが、β版では、通信モジュールの価格に含まれていて、無料のはず。
モジュール追加の際の注意点
モジュールを追加すると、月額60円のモジュール基本料金が課金されます。

20170901_sakura_iot_platform_beta_module

(4)連携サービスを 設定する
選択肢がいろいろあるが、「WebSocket」を選択する。
20170901_sakura_iot_platform_beta_service

(5)画面上で受信データが表示されていることを確認します。

WebSocket クライアント

α版の時に作ったものを再利用する。
WebSocket Client – SAKURA IoT Platform Alpha

今後の課題

(1)温度センサーを追加して、温度を測定する。
(2)データストア機能を試す。

参考
さくらのIoT Platform β版ハンズオン
sakura.io サービス約款


Arduino ライブラリ追加


これまでは、ライブラリを追加するには、
検索エンジンでライブラリを探してきて、
libraryディレクトリ配下にマニュルで配置していた。

Arduino.cc のArduino IDE 1.6.9 以降では、ライブラリ管理の機能が追加されて、ライブラリの追加が簡単になった。

(1)ネットから直接インストールする。
メニューの[スケッチ]-[Include Library]-[Manage Libraries]から、Library Managerを立ち上げます。
Library Managerのウィンドウが立ち上がったら、右上にキーワードを入力して自分が探しているライブラリを検索します。
20170901_arduino_libraly_manager
(2)Zipファイルからインストールする。
メニューの[スケッチ]-[Include Library]-[Add .Zip Library]からZipファイルを選択します。

参考
Arduinoライブラリの追加 – Make


さくら IoT β版の仕様


2017090_sakura_iot_bata_comm_module

2016年10月にさくら IoT のβ版の通信モジュールが発売された。
1年経って、ドキュメントが充実してきた。
さくら IoT のα版との違いに着目して β版の仕様を整理した。

通信モジュール

β版ではLTEモジュールが太陽誘電製 TE8668 になり、α版に比べ全体に一回り小さくなった

マイコンインターフェイスは、α版と同じくI2C、SPI、UARTの3つ。
入出力電圧は、α版では5Vだったが、β版では1.8Vになった。

コマンドは、α版ではデータの送受信だけだった。
通信モジュールには、4バイトのチャネルが128個あり、
チャネルごとに、整数、実数、バイト列などの型を指定して、値を設定する。
β版ではファイルの受信、ファームの更新、時刻の取得などが追加された。

β版ではデジタル IO と ADC 入 力も備えており,マイコン なしに本モジュールを単独で利用 することも可能になるようであるが、現在は未実装です。

Arduinoシールド
α版では、通信モジュールを固定する機構のみを備えていた。
β版には電圧レベル変換回路があり、5V系のArduino と接続できる。

β版にはアンテナ固定具が付属され、アンテナを基板に固定することができる。

ブレイクアウトボード
α版では、ブレイクアウトボード自体がなかった。
β版には電圧レベル変換回路があり、5V系のArduinoや、3.3V系のmbed、Raspberrypiと接続できる。

マイコンのサンプルプログラム

α版ではArduino 用だけだったが、
β版ではmbed用、Raspberrypi用のPython版が追加された。

Arduino 用では、下記のサンプルプログラムが用意されている。

(1)AlphaCompat.ino
(α版のSakuraAlpha_I2C.inoと同じく、
一定間隔でカウント値を0,1,2 チャンネルに書き込み、送信します

(2)FirmwareUpdate.ino
通信モジュールのファームウェアアップデートを実行します。

(3)Shell.ino
Arduino IDE のシリアルモニタから 下記のコマンド操作を提供します。
改行を[CR み]に設定する。

(1)version:現在のファームウェアバージョンを表示する
(2)serial :通信モジュールのシリアル番号を表示する
(3)status :通信モジュールの通信状態を確認する
(4)sqi :通信モジュールの電波強度を確認する
(5)unixtime :UTC形式の現在時刻を表示する
(6)update :ファームウェアのアップデートを実行する
(7)reset :通信モジュールのソフトウェアリセットを実行する
(8)enqueue :送信キューにデータを格納する
(9)send :送信キューに貯められたデータを送信する
(10)size :送信/受信キューに貯められたデータ数を確認する
(11)cleartx :送信キューに貯められたデータをすべて消去する
(12)clearrx :受信キューに貯められたデータをすべて消去する
(13)dequeue :受信キューに貯められたデータをすべて受信する
(14)peek :受信キューに貯められたデータを閲覧する

ゲートウェイ

β版では,データ保存 DataStore 機能が追加された。
APIは、チャネル単位のデータ取得できるチャネルchannelモードと、
関連する複数のチャネルのデータをまとめて取得できるるメッサージmessageモードの2つがある。

料金プランに応じて、3つの閲覧期間が選択できる。

フリー 40日間
スタンダード 2年間
プレミアム 無期限

ゲートウェイの API
α版ではhttpと websocket の2つだったが、
β版では MQTT が追加された。
さらに、サービス連携として AWS IoT とAzure IoT HUB が追加された。

注意
本年4月からβ版から正式サービスになっていました。
さくらインターネット、IoTプラットフォーム「sakura.io」正式サービス提供開始
気付いていなかった (^^:

文中で β版とあるのは 、β版及ぶ正式版と読み替えてください。

参考
さくら IoT 開発者向けドキュメント

さくらの通信モジュール(β版)利用マニュアル


ラズパイ Rainbow HAT


20170812raspi_hat

秋月で ラズパイ HAT が販売されていたので、3種類ほど買ってみました。
Rainbow HAT + Pibow Coupe Android Things

そのうちの1つ RainbowHAT について記述します。
20170701_rainbow_hat

RainbowHATの概要
14セグやフルカラーLEDが搭載されたラズパイの拡張ボードです。

国内の販売元
秋月の他に、
スイッチサイエンスアマゾン で販売しています。

設計 製造元 
PIMORONI Ltd 
英国でラズパイを販売している電子部品の代理店のようです。

主なハード諸元
回路図や実装図は公開されていませんが、githubに若干記述がありました。

(1) 14セグメントLED with HT16K33:x4
搭載位置は中央
GPIO接続は、I2C

(2) フルカラーLED APA102:x7
搭載位置は14セグメントLEDの上
GPIO接続は下記
Clock | BCM#11
Data | BCM#10
Chip-Sel | BCM#8

(3) タッチセンサー AT42QT1070 x3
搭載位置は14セグメントLEDの下で、ABCと表記されている
GPIO接続は下記
A | BCM#21
B | BCM#20
C | BCM#16

(4) 単色LED(赤Red、緑Green、青Blue) x各1
搭載位置はタッチセンサーABCの上にRGB
GPIO接続は下記
Red | BCM#6
Green | BCM#19
Blue | BCM#26

(5) 温度気圧センサ BMP280 x1
GPIO接続は、I2C
注意:搭載位置がCPUチップに近いために温度は高めの値が取得されるようです。

(6) 圧電ブザー:x1
GPIO接続は下記
BCM#13 / PWM1

サンプルコード
下記のサンプルコードが用意されています。
どういう動作をするのか説明がなかったので追記しておきます。

(1) demo.py
ビープ音を鳴らし、
14セグに”WJDK”を表示する。
ボタンAに触れると、14セグに”AHOY”を表示し、
赤LEDを点灯する。
ボタンBに触れると、14セグに”YARR”を表示し、
緑LEDを点灯する。
ボタンCに触れると、14セグに”GROG”を表示し、
青LEDを点灯する。

(2) temperature.py
14セグに温度を表示する。
ボタンAに触れると、終了する。

(3) pressure.py
14セグに気圧を表示する。
ボタンAに触れると、終了する。

(4) lamp-rgb.py
カラーLEDの3色RGBを制御する
ボタンAをタップすると、3色のいずれを選ぶ
ボタンBをタップすると、選ばれた色が明るくなる。
ボタンCをタップすると、選ばれた色が暗くなる。
します。

(5) rainbow.py
カラーLEDを左から右に点灯する
色の指定は、HSV色空間のH色相(Hue)で行っている。
虹のように連続的に色を変化させる意図だろうが、
実際は白色に近い。
britnessが0.1なので、明るすぎるのかも。

(6) touch.py
ボタンABCに触れると、下記のようにカラーLEDの色を変える。
指を離すと、無色になる。
A:赤RED
B:緑GREEN
C:青BLUE

Android Things 対応
HATに拡張できるようにI2C、SPI、UARTなど端子がある。
なお、Android Things のサンプルコードは用意されていない。