Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
-
Upload
junichi-kakisako -
Category
Technology
-
view
7.435 -
download
6
description
Transcript of Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, Raspberry Pi, Arduinoで作る消費電力モニタリングシステム
Junichi Kakisako a.k.a. kironono 2014/09/13 (PyCon JP 2014)
自己紹介
• @kironono (きろのの) ✦ http://kironono.com/
•きろ字のなかの人 ✦ $ sudo apt-get install ttf-kiloji
•好きなたべもの ✦ いちご
2
自己紹介•普段はWebアプリの受託開発してます
•電子回路は趣味でやってます
•今日しない話
✦ 回路設計
✦ 電気特性
✦ 半田ごての妙技
•これからハードウェア方面にも手をだしてみようかな、という方々の参考になれば幸いです
3
1. はじめに(仮)
4
ちょっと聞いてくださいよ、奥さん
5
ハードウェアとか
6
流行ってるらしいじゃないの。
7
フィジカル・コンピューティングとか
8
モノのインターネッツ(IoT)とか
9
オープンソースハードウェア とか
10
PythonでWeb開発やってきたけど、ハードウェアも手を出したいな。 という方に。
11
2. Raspberry PiとArduino
12
まぁ、よくある組み合わせだと思います。
13
「あ、また?」 「ですよね (^_^;)」
みたいな。
14
どちらか一つくらいは お手元にありますよね!?
15
Raspberry Pi
16
• Raspberry Pi Foundationが教育用として開発
• ARMプロセッサが乗ったカードサイズのコンピュータ
• ARM11 700MHz, 256MBのメモリ
• HDMI、オーディオ、USB、LAN端子などひと通りのインターフェイス搭載
• ディスプレイ、キーボード、マウス、ネットワークにすぐ繋げられる
• GPIO、CSI、DSI等の入出力端子
Raspberry Pi でできること
17
• 普通のLinuxが動く
✦ Raspbian (Debian)
✦ Pidora (Fedora)
✦ Arch Linux
•もちろんPythonも動く
• PiGRRL(ゲームボーイ)
• Automated Home Brewing(ビール醸造)
• RAPIRO(組立式ロボット)
でも、お高いんでしょう?
18
そんなことないんです!
19
• 現在3モデルが販売中
✦ Raspberry Pi Model A
✦ Raspberry Pi Model B
✦ Raspberry Pi Model B+
• $25~$35 (3,940円)
• ライバル達
✦ HummingBoard ($45)
✦ BeagleBone Black ($45)
必要な周辺機器
20
• USBケーブル(A-microB)
• USB電源 (700mA以上供給できること)
• SDカード (4GB以上)
•マウス、キーボード
•ディスプレイ
•シリアルケーブル(あると嬉しい)
Arduino
21
•オープンソースハードウェア
•開発環境、ハードウェア、言語、合わせてArduino
•設計図(Eagleファイル)も公開されているので、自分で作れる
•もちろんハードウェアを購入できる
•マイコン: ATMega328-P
•フラッシュメモリ: 32KB
•デジタルIO: 14本
•アナログInput: 6本
• 5Vで駆動
Arduino IDE
22
•クロスプラットフォーム (Java)
✦ Windows
✦ Mac OS
✦ Linux
•エディタ、コンパイラー、スケッチ転送、シリアルモニタ
•豊富なサンプル付き
Lチカ (HelloWorld)
23
int led = 13; !void setup() { pinMode(led, OUTPUT); } !void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); }
でも、お高いんでしょう?
24
そんなことないんです!
• Arduinoにはファミリーがいっぱいいる
✦ Arduino Uno (3,024円)
✦ Arduino Leonardo(2,916円)
• …とは言ったもののあまり安くないような
•自分で作ることができます!( ー`дー´)キリッ
25
Arduino互換回路
26
•いらないものを取っ払って…
✦ 電源安定化回路
✦ USBシリアル変換
✦ 拡張用の各種回路
•必要最小限にする
ワンチップArduinoもどき
27
• ATMega328-P: 250円
•積層セラミック・コンデンサ: 3×15円
•セラロック: 40円
•抵抗: 4×1円
• LED: 25円
364円
Arduinoできないこと
• Python 動かない
•メモリをたくさん使う処理
•高負荷な処理(画像処理とか)
28
3. Arduinoとおしゃべりする
29
シリアル通信
30
•ここではRS-232C
•簡素なものは、TX, RX, GND があればよい
Firmata
• Firmata (ふぁるまーた)
✦ Arduinoに書き込む
• python-firmata (Pythonライブラリ)
•これを使えば、自分で書くコードはPythonで完結できる
•が、基本的な操作(例えば入出力ピンのON/OFF)しかできない
•もちろん拡張することは可能だが、それだとPython以外を書くことになる
31
pySerial
• Pythonからシリアル通信をおこなうためのモジュール
• PyPIから取得可能
•ファイル操作ライクなAPIで操作可能read, write, readline
32
pySerial
33
import serial !# シリアルポートを開く
s = serial.Serial(‘/dev/ttyusbserial’, 19200) !# シリアルポートから改行まで読み込み
line = s.readline() !# シリアルポートに書き込み
s.write(“hello”) !# シリアルポートを閉じる
s.close()
4. 電力を見える化しよう
34
電力モニタを作る
35
使うもの•電流センサー
✦ 流れている電流を測る
• Arduino (自作Arduino互換)
✦ センサーを制御する
• Raspberry Pi (Model: B)
✦ Arduinoと通信する
✦ Webアプリケーションをサーブする
✦ データを蓄積する
• USB接続の無線アダプタ
✦ Raspberry Piを無線LANに接続する
36
電流センサ
37
•クランプ型の電流センサ CTL-10-CLS
•最大80Aまで測定可能
•センサを貫通する電流の大きさに合わせて、出力電圧が変化
Raspberry Pi (Raspbian)
構成図
38
Arduino Sensor
Browser Redis
Serial port / Client
Pyramid MySQLWebSocket
PublishSubscribe
USB - Serial Adapter
制作手順•センサーの値を読む回路を考える
•ブレッドボードに実装する
• Arduinoのスケッチを書いて、Arduinoに書き込む
•シリアル通信できる端末でテスト
•ユニバーサル基板に実装する
•シリアル通信するPythonコードを書く
• Webアプリを書く
•テスト
• Raspberry Pi にデプロイ
•テスト39
ハードウェア
ソフトウェア
Arduino側の処理
•センサーの電圧をA/D変換 -> 電流がわかる
•検出した電流から電力を計算
• 1秒間 (W = ジュール毎秒毎秒) の平均をとる
•シリアルポートを通してRaspberry Piに送信
40
Raspberry Pi側の処理• Arduino連携部分
✦ シリアルポートを開いて、データが到着するのを待つ
✦ 電力値を受け取ったら、RedisのPubSubにPublish
✦ MySQLにも書き込む
• Webサーバー部分
✦ WebSocketのsubscribe待ち受け
✦ RedisのPubSubをSubscribe、データを受け取ったら、WebSocketにemit
✦ Pyramid + gevent_socketio
41
42
43
Webアプリ
44
分電盤に設置してみる
45
•クランプで挟むだけなので、既存の設備を切断したりする必要はない
•第二種電気工事士の資格は持ってます
デモ
46
5. まとめ
47
まとめ
•入門に適しているツール群
✦ Python
✦ Arduino
✦ Raspberry Pi
•現実世界とインタラクションを始めるためのツールが出揃っている
48
まとめ
•オープンソースハードウェアの普及
•プロトタイピング環境の充実
49
書籍とか
• Raspberry Piクックブック (Make:PROJECTS) オライリージャパン - Simon Monk
• Arduinoをはじめよう (Make:PROJECTS) オライリージャパン - Massimo Banzi
• Arduinoをはじめようキットスイッチサイエンス
51
パーツとか
•スイッチサイエンスhttp://www.switch-science.com/
•秋月電子通商http://akizukidenshi.com/
•マルツパーツ館http://www.marutsu.co.jp/
52