Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム

Post on 25-May-2015

7.435 views 6 download

description

PyCon JP 2014 days1 で発表した資料です

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

ソースコードとか

• Githubhttps://github.com/kironono/homepower

50

書籍とか

• 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