SlideShare a Scribd company logo
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 
Browser Redis 
Pyramid MySQL 
Serial port / Client 
Arduino Sensor 
WebSocket 
Subscribe Publish 
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
ソースコードとか 
• Github 
https://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

More Related Content

PDF
オンラインゲームのRails複数db戦略
PDF
運用してわかったLookerの本質的メリット : Data Engineering Study #8
PDF
純肉:細胞培養による食料生産(2021版)
 
PDF
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
PPTX
Ltの作成と実践~入門編~
PDF
SES2020 IoTアーキテクチャ・デザインパターン
PDF
『自走プログラマー』 が我々に必要だった理由
PDF
SSI DIDs VCs 入門資料
オンラインゲームのRails複数db戦略
運用してわかったLookerの本質的メリット : Data Engineering Study #8
純肉:細胞培養による食料生産(2021版)
 
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
Ltの作成と実践~入門編~
SES2020 IoTアーキテクチャ・デザインパターン
『自走プログラマー』 が我々に必要だった理由
SSI DIDs VCs 入門資料

What's hot (20)

PDF
STMとROSをシリアル通信させて移動ロボットを作る
PDF
グッドパッチ_会社紹介資料.pdf
PDF
H07_オンライン会議もウェビナーもブロードキャストも、すべて Teams で! [Microsoft Japan Digital Days]
PDF
データ活用をするための組織
PDF
研究の呪い
PDF
東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」(一部文字が欠けてます)
PDF
先端技術とメディア表現1 #FTMA15
PDF
階層的決定性ウォレットを理解しよう
PDF
Synapse lakedatabase
PDF
RDFチェックツール「rdflint」のご紹介
PDF
Djangoのエントリポイントとアプリケーションの仕組み
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
PDF
Data-Centric AI開発における データ生成の取り組み
PDF
AbemaTVにおける推薦システム
PDF
Edge AI ソリューションを支える Azure IoT サービス
PPTX
データ収集の基本と「JapanTaxi」アプリにおける実践例
PDF
Rdf入門handout
PPTX
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
PDF
マルチコアを用いた画像処理
PDF
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
STMとROSをシリアル通信させて移動ロボットを作る
グッドパッチ_会社紹介資料.pdf
H07_オンライン会議もウェビナーもブロードキャストも、すべて Teams で! [Microsoft Japan Digital Days]
データ活用をするための組織
研究の呪い
東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」(一部文字が欠けてます)
先端技術とメディア表現1 #FTMA15
階層的決定性ウォレットを理解しよう
Synapse lakedatabase
RDFチェックツール「rdflint」のご紹介
Djangoのエントリポイントとアプリケーションの仕組み
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Data-Centric AI開発における データ生成の取り組み
AbemaTVにおける推薦システム
Edge AI ソリューションを支える Azure IoT サービス
データ収集の基本と「JapanTaxi」アプリにおける実践例
Rdf入門handout
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
マルチコアを用いた画像処理
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
Ad

Viewers also liked (20)

PDF
Micro Python で組み込み Python
PDF
"Continuous Publication" with Python: Another Approach
PDF
PyConJP Keynote Speech (Japanese version)
PPTX
Arduino 入門
PPTX
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成
PDF
Pycon2014 django performance
PDF
Deep Learning for Image Recognition in Python
PDF
Arduino を PHP で制御する
PDF
Oktavia Search Engine - pyconjp2014
PDF
PyConJP Keynote Speech (English version)
PDF
デブコミュ#20150312
PDF
XML-RPC : Pythonが「電池付属」と呼ばれる理由
PDF
PyCon JP 2014 plone terada
PDF
Pyconjp2014_implementations
PPTX
CEDEC2014 不正コピーとチートの攻防戦 上原使用スライド
PDF
簡単に楽しくはじめよう!Raspberry Pi入門
PDF
Pyramid入門
PDF
Manage Myself
PDF
[RubyMotion LT] nitronに見るiosアプリ開発の未来
PDF
M2M製品開発におけるmrubyの効果160726
Micro Python で組み込み Python
"Continuous Publication" with Python: Another Approach
PyConJP Keynote Speech (Japanese version)
Arduino 入門
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成
Pycon2014 django performance
Deep Learning for Image Recognition in Python
Arduino を PHP で制御する
Oktavia Search Engine - pyconjp2014
PyConJP Keynote Speech (English version)
デブコミュ#20150312
XML-RPC : Pythonが「電池付属」と呼ばれる理由
PyCon JP 2014 plone terada
Pyconjp2014_implementations
CEDEC2014 不正コピーとチートの攻防戦 上原使用スライド
簡単に楽しくはじめよう!Raspberry Pi入門
Pyramid入門
Manage Myself
[RubyMotion LT] nitronに見るiosアプリ開発の未来
M2M製品開発におけるmrubyの効果160726
Ad

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

PDF
OSC Tokyo 2013 Spring JRPUG
PDF
2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」
PDF
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
PDF
機械学習 (AI/ML) 勉強会 #2 IoT編
PDF
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
PPTX
2015/05/23 シニア技術者プログラム第3弾 「第二回IoT勉強会&交流会」 15:00~15:20 Arduinoで簡単回路作成実演
PDF
Big Raspberry JAM TOKYO 2013 Hardware
ODP
Start physical computing with Ruby + Arduino
PDF
20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう
PPTX
レベルを上げて物理で殴る 16x9
PPTX
Raspberry pi+mono を使ってlegoを制御
ODP
20090530熊本プログラミングフリークス
PDF
KOGEI & KAIT Funnel WS
PPT
Raspberry Jam #1 20121229
PDF
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019
PDF
Arduino + rcs620sで遊ぼう
PDF
20110724 WIZDOM:知識ゼロからのArduino(1)
PDF
SIerによるSIerのためのRaspberry Pi 入門
PDF
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
PDF
20140910 Arduino for beginners
OSC Tokyo 2013 Spring JRPUG
2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
機械学習 (AI/ML) 勉強会 #2 IoT編
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
2015/05/23 シニア技術者プログラム第3弾 「第二回IoT勉強会&交流会」 15:00~15:20 Arduinoで簡単回路作成実演
Big Raspberry JAM TOKYO 2013 Hardware
Start physical computing with Ruby + Arduino
20130713 オープンハードセミナー raspberry_piに何かつないで遊ぼう
レベルを上げて物理で殴る 16x9
Raspberry pi+mono を使ってlegoを制御
20090530熊本プログラミングフリークス
KOGEI & KAIT Funnel WS
Raspberry Jam #1 20121229
ぼちぼちぼっち開発 With raspberry pi アイデアソン 20141019
Arduino + rcs620sで遊ぼう
20110724 WIZDOM:知識ゼロからのArduino(1)
SIerによるSIerのためのRaspberry Pi 入門
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
20140910 Arduino for beginners

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