sierによるsierのためのraspberry pi 入門4 (タイムラプス、lチカ)

33
x x Raspberry Pi BerryCam タイムラプス 電子工作(Lチカ、温度センサー) 監視サーバ(muninFablab レーザー加工機でケース作り x 2014/4 catmoney http://77sites.appspot.com/2/page1.html SIerによるSIerのためのRaspberry Pi 入門 4

Upload: catmoney

Post on 14-May-2015

2.616 views

Category:

Technology


4 download

DESCRIPTION

2014/04 勉強会資料 サイト http://77sites.appspot.com/2/page1.html

TRANSCRIPT

Page 1: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

xx

・Raspberry Pi BerryCam タイムラプス 電子工作(Lチカ、温度センサー)

監視サーバ(munin)

Fablab レーザー加工機でケース作り

x

2014/4

catmoney

http://77sites.appspot.com/2/page1.html

SIerによるSIerのためのRaspberry Pi 入門 4

Page 2: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

2

xx

BerryCamとは

BerryCamとは、iOSからPi Cameraをコントロールするアプリ

https://itunes.apple.com/gb/app/berrycam/id687071023

http://www.fotosyn.com/berrycam-support/

BerryCam(ベリーカム)は、iPhoneやiPadなどのiOS機器からPi Cameraの静止画をコントロールするアプリです。

機能- Pi Cameraのイメージ・プレビューや撮影、ファイル保存の直接コントロール- イメージフィルターによる写真エフェクト- イメージ品質や露出などのPi Camera設定

Page 3: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

3

xx

BerryCamのインストールと仕組み

インストール方法のサイト。この内容をそのままでやるだけでOK。

http://www.fotosyn.com/berrycam-support/

作りはすごくシンプル。サーバサイドは、PythonのコードでberryCam.py(約100L)のみで動作

・ソースのダウンロードcd /homesudo wget https://bitbucket.org/fotosyn/fotosynlabs/raw/9819edca892700e459b828517bba82b0984c82e4/BerryCam/berryCam.py・Pythonの実行sudo python /home/berryCam.py &・App Storeからアプリをインストールして、アプリを起動。IPアドレスを設定すると利用できる。

berryCam.py

ルータ192.168.0.Xhttp://192.168.0.X/8000/berrycam

getでカメラの設定値を渡す

iphoneからパラメータを受け取ってraspistillを実行し、/home/berrycam/YYYYMMDDに写真が保存される

BerryCam

Page 4: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

4

xx

Raspberry Piで タイムラプス

サービス内容:定位置で一定時間の間隔(秒単位~)で写真を撮影し、その写真を加工し、短時間での変化を表現する。

利用するハード

Raspberry Pi Type B SDHCカード Camera Module

アクセサリ一覧 http://77sites.appspot.com/2/page2.html

×

モバイルバッテリー

無線LAN USBアダプタ

モバイルルーター

Page 5: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

5

xx

Raspberry Piで タイムラプス

システム構成

持ち運びできるように下記の構成にした。

モバイルルータ

①起動時にipアドレス通知

②Cronで30秒ごとに写真を撮る

③ブラウザ経由で写真のアングルを確認。問題なければ、そのまま撮影継続

④撮影が終わったら、PCからtelnet経由で動画に変換。scp経由でファイル取得

Page 6: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

6

xx

Raspberry Piで タイムラプス①起動時にipアドレス通知

mutt メールクライアントのインストール

● sudo apt-get install mutt

● mkdir bin

● sudo vi /home/pi/bin/mutt.conf

メールクライアントのアカウント設定

無線LANの設定方法 http://d.hatena.ne.jp/catmoney/20131103/p1

set charset="utf-8"set send_charset="us-ascii:iso-2022-jp"set from = "アカウント@gmail.com"set realname = "catmoney"set smtp_url = "smtp://アカウント@smtp.gmail.com:587/"set smtp_pass = "メールアカウントのパスワード"

動作確認。メールが届けばOK。

● echo "Hello world" | mutt -F /home/pi/bin/mutt.conf -s "件名" 宛先@gmail.com

ifconfigからipアドレスを抽出するシェルの作成( インターフェースのwlan0、eth0を読む場合)

● sudo vi /home/pi/bin/ip.sh

#!/bin/bash

echo `sudo ifconfig wlan0 | grep 'inet addr:' | sed -e 's/ .*inet addr://' -e 's/ .*//'`;echo `sudo ifconfig eth0 | grep 'inet addr:' | sed -e 's/ .*inet addr://' -e 's/ .*//'`;

Page 7: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

7

xx

Raspberry Piで タイムラプス①起動時にipアドレス通知

無線LANの設定方法 http://d.hatena.ne.jp/catmoney/20131103/p1

実行権限を付与

● sudo chmod +x /home/pi/bin/ip.sh

メールを送信するシェル

● sudo vi /home/pi/bin/mail_ip.sh

#!/bin/bash

sleep 15echo `/home/pi/bin/ip.sh` | mutt -F /home/pi/bin/mutt.conf -s "ipアドレス" 宛先@gmail.com

実行権限を付与

● sudo chmod +x /home/pi/bin/mail_ip.sh

起動時に実行されるようにcronに追加

● crontab -e

@reboot /home/pi/bin/mail_ip.sh

Page 8: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

8

xx

Raspberry Piで タイムラプス②Cronで30秒ごとに写真を撮る

30秒ごとに写真を撮るシェルを作成

● mkdir /home/pi/timelapse

● sudo vi /home/pi/timelapse/timelapse.sh

#!/bin/bashwhile :dofilename=$(date '+%Y%m%d%H%M%S').jpgecho $filename# raspistill -o $filenameraspistill -w 1920 -h 1080 -n -o /home/pi/timelapse/$filenamesleep 30done

実行権限を付与

● sudo chmod +x /home/pi/timelapse/timelapse.sh

起動時に実行されるようにcronに追加

● crontab -e

@reboot /home/pi/timelapse/timelapse.sh

Page 9: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

9

xx

Raspberry Piで タイムラプス③ブラウザ経由で写真のアングルを確認するための設定

ブラウザ経由で写真を見るためWebサーバの起動シェルの作成

● mkdir /home/pi/bin

● sudo vi /home/pi/bin/starting.sh

#!/bin/bash

cd /home/pi/timelapsepython -m CGIHTTPServer 80

実行権限を付与

● sudo chmod +x /home/pi/bin/starting.sh

起動時に実行されるようにrc.localに追加

● sudo vi /etc/rc.local

/home/pi/bin/starting.sh

これで接続時にスマホのブラウザから写真が見れる

http://[メールで送られてきたIPアドレス]/

[注意]スマホは、モバイルルータに接続し、Raspberry Piと同じネットワーク内にいることが必要。

Page 10: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

10

xx

Raspberry Piで タイムラプス④写真を動画に変換する

写真を動画に変換する起動シェルの作成

● mkdir /home/pi/bin

● sudo vi /home/pi/timelapse/make_timelapse.sh

#!/bin/bashls *.jpg > stills.txtmencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=16000 -vf scale=1920:1080 -o \timelapse$(date '+%Y%m%d%H%M').avi -mf type=jpeg:fps=7 mf://@stills.txt

実行権限を付与

● sudo chmod +x /home/pi/timelapse/make_timelapse.sh

写真が取れた状態で、下記を実行するとaviファイルが作成される。

● sudo ./make_timelapse2.sh

PCからWinSCPなどでファイルを取得する。

https://www.youtube.com/watch?v=syWfuPHo6oU実際に作ったタイムラプス

Page 11: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

11

xx

Raspberry Piで タイムラプス

システム構成の理想系

Raspberry Piにbluetoothアダプタをつけて、スマホアプリで

すべて操作出来たら構成と使い勝手が一番良いような気がする。

私には、スマホアプリを作る時間も能力がないので、誰か作ってほしい。。。

スマホアプリ・写真の撮影設定・写真の確認・タイムラプスの作成・タイムラプスの取得

bluetoothで接続

Page 12: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

12

xx

Raspberry Pi 電子工作

電子工作ってなに????

細かいことは、気にせず

やってみるのが一番。

まずは、プログラムで言うと

「Hello world!」にあたる

LEDチカチカ(Lチカ)をやってみる。

お勧めslideshare「Raspberry Pi と GPIOお手軽 Physical Computing~ LED チカチカと温度センサー 」http://www.slideshare.net/azarashi55/big-raspberry-jam-tokyo-2013-hardwareRaspberry Piに何かつないて遊ほうhttp://www.slideshare.net/YasuhiroIshii/20130804-osc-raspberrypi

Page 13: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

13

xx

Raspberry Piで Lチカ

サービス内容:LEDをチカチカさせる

利用するハード

Raspberry Pi Type B SDHCカード ブレッドボード LEDジャンパー線

抵抗

×

Page 14: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

14

xx

Raspberry Pi Lチカ

GPIOを使います

GPIOとは、General Purpose Input/Output(汎用入出力)の略語入力・・・・電気回路のほかの部分からのデジタル信号を読み取る。出力・・・・他デバイスの制御や信号の通知を行う。Raspberry Piは、13ピン 2列の26ピン

GPIOで出来ることは、LED を点滅させたり,スイッチの状態を読み取ることなどが可能

GPIO Raspberry Leafhttp://www.doctormonk.com/2013/02/raspberry-pi-and-breadboard-raspberry.html

Page 15: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

15

xx

Raspberry Pi Lチカ

ブレッドボードとはハンダ付け不要で部品やリード線を差すだけで回路が組み立てられる回路基盤

部品エリア

電源エリア

中身は金属板が入っている

引用元ページhttps://www.sunhayato.co.jp/products/item_data/howto_breadboard.pdf

Page 16: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

16

xx

Raspberry Pi Lチカ

抵抗電気を流れにくくする部品。抵抗が大きいほど電気は流れにくい。抵抗のカラーは4本(5本)のカラーの輪が印刷してある。この帯で抵抗値と誤差がわかるようになっている。

カラー抵抗値の写真早読み表http://part.freelab.jp/s_regi_list.html

LED(発光ダイオード)電気が流れると光る部品。足が長い方 "アノード:電池の + 側につなげる"足が短い方  "カソード:電池の - 側につなげる"

Page 17: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

17

xx

Raspberry Pi Lチカ

GNDは、マイナスになります

回路図

カソード-極 アノード

+極

GPIO端子は18

● rootになる

sudo su

● GPIO18を認識させる

echo 18 > /sys/class/gpio/export

● ディレクトリ移動

cd /sys/class/gpio/gpio18

● GPIO18を出力に設定

echo out > direction

● LEDを点灯

echo 1 > value

● LEDを消灯

echo 0 > value

Page 18: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

18

xx

Raspberry Pi RubyでLチカ

● rubyの作成

sudo vi lchika.rb

● rubyの実行

sudo ruby lchika.rb

io = open("/sys/class/gpio/export", "w")io.write(18)io.close

dir = open("/sys/class/gpio/gpio18/direction", "w")dir.write("out")dir.close

out = 110.times do v = open("/sys/class/gpio/gpio18/value", "w") v.write(out) v.close out = out == 1 ? 0 : 1 sleep 0.5end

uexport = open("/sys/class/gpio/unexport", "w")uexport.write(18)uexport.close

引用元http://lchikaamazon.hatenablog.com/entry/2013/11/18/180435

lchika.rb

Page 19: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

19

xx

PWMでRaspberry PiのLEDの明るさ調整する

PWMとはパルス幅変調という意味。

このパルスの1周期のOn/Off比率を操作することによって、見かけ上の錯覚で明るさを制御する。

● ライブラリのインストール

sudo apt-get install ruby1.9.1-dev

sudo gem install wiringpi

● rubyの作成

sudo vi lchika2.rb

● rubyの実行

sudo ruby lchika2.rb

require "wiringpi.rb"LED = 1s = WiringPi::GPIO.news.mode(LED, PWM_OUTPUT)5.times do (0..1023).each do |x| s.pwmWrite(LED,(1023 -x)) puts "#{1023 - x }" sleep(0.001) end (0..1023).each do |x| s.pwmWrite(LED, x) puts x sleep(0.001) ends.pwmWrite(LED,0)end

引用元http://lchikaamazon.hatenablog.com/entry/2013/11/18/191031

lchika2.rb

Page 20: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

20

xx

Raspberry Piで温度センサー

サービス内容:温度センサーを使って温度取得

利用するハード

Raspberry Pi Type B SDHCカード ブレッドボード

ADコンバータMCP3002 ジャンパー線

×

セラミックコンデンサー 温度センサー

Page 21: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

21

xx

ADコンバータとはRaspberry Pi には、アナログ入力はないので、そのままでは、アナログ値を測ることはできません。そのためADコンバータ(アナログ-デジタル変換器)を使用して、アナログ値を取得します。

SPI(Serial Peripheral Interfac)を使いますシリアルバスの一種で、比較的低速なデータ転送を行うデバイスに利用される。

Raspberry Piで温度センサー

コンデンサとはコンデンサは電気を蓄えたり放出したりする電子部品。直流を通さないで絶縁するはたらきもあります。引用元http://www.murata.co.jp/elekids/ele/compo/capacitor/

Page 22: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

22

xx

Raspberry Piで温度センサー

MCP3002側 Raspberry Pi側

ピン番号 ピン名称 ピン名称1 CS CS0

2 CH0 温度センサー

3 CH1

4 Vss GND

5 Din SPI MOSI

6 Dout SPI MISO

7 CLK SPI SCLK

8 Vdd/Vref 3.3V

Page 23: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

23

xx

Raspberry Piで温度センサー

● シリアル通信を有効化

sudo vi /etc/modprobe.d/raspi-blacklist.con

#blacklist spi-bcm2708blacklist i2c-bcm2708

● 再起動

sudo reboot

● デバイスの確認

ls -la /dev/spi*

crw-rw---T 1 root spi 153, 0 Jan 1 1970 /dev/spidev0.0crw-rw---T 1 root spi 153, 1 Jan 1 1970 /dev/spidev0.1

● ライブラリのインストール

sudo gem install pi_piper

● ライブラリの確認(pi_piper(1.3.2)があればOK)

gem list

#!/usr/bin/ruby

require 'pi_piper' value = 0 PiPiper::Spi.begin do |spi| raw = spi.write [0b01101000,0] value = ((raw[0]<<8) + raw[1]) & 0x03FF end volt = (value * 3300.0)/1024.0 degree = (volt - 500.0)/10 puts degree.round(1)

● rubyの実行

sudo ruby tmp.rb

引用元http://lchikaamazon.hatenablog.com/entry/2013/11/30/232006

● sudo vi tmp.rb

Page 24: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

24

xx

監視サーバ(munin)

● Webサーバ”Nginx”をインストール

sudo apt-get update

sudo apt-get install nginx

● 公開ディレクトリの作成

cd ~

mkdir -p www

● Nginxの設定の変更

sudo vi /etc/nginx/sites-available/default

server {

root /home/pi/www; index index.html index.htm;  ・  ・}

引用元http://nofx2.txt-nifty.com/it/2013/07/raspberry-pi-ng.html

Page 25: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

25

xx

監視サーバ(munin)

● サイトを有効にするため、シンボリックリンクを張る。

sudo ln -s /etc/nginx/sites-available/pi /etc/nginx/sites-enabled/

● Nginxの設定ファイルに問題が無いかチェック

sudo nginx -t

● 設定再読み

sudo nginx -s reload

● Nginx再起動

sudo service nginx restart

● 自動起動設定

sudo update-rc.d nginx defaults

--ディフォルトのログファイル/var/log/nginx/access.log/var/log/nginx/error.log

Page 26: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

26

xx

監視サーバ(munin)

● muninのインストール

sudo apt-get install munin munin-node

● 出力フォルダの作成

mkdir -p /home/pi/www/munin

sudo chown -R munin:munin /home/pi/www/munin

● 出力フォルダの変更

sudo vi /etc/munin/munin.conf

● ブラウザから表示されることを確認

http://[IPアドレス]/munin

もっとMuninを知りたい場合は、こちらMuninではじめる実践★リソース監視 -俺のサーバがこんなに重いはずがない、を乗り切るために-http://www.slideshare.net/zembutsu/practical-resource-monitoring-with-munin

Muninは舞い降りた ~リソース監視を通して、運用現場を変える話~http://www.slideshare.net/zembutsu/munin-has-landed-infotalk50

htmldir /home/pi/www/munin

Page 27: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

27

xx

温度センサーの結果をmuninで表示

#!/bin/sh

#%# family=auto#%# capabilities=autoconf

GETNUM=`ruby /home/pi/tmp.rb`

if [ "$1" = "autoconf" ]; then if [ -n ${GETNUM} ] ; then echo yes exit 0 else echo no exit 0 fifi

if [ "$1" = "config" ]; then echo 'graph_title Temperature' echo 'graph_args --base 1000 -l 0 -u 50' echo 'graph_vlabel Temp(C)' echo 'graph_category Room' echo 'total.label temperature' echo 'total.type GAUGE' exit 0fi

echo "total.value $GETNUM";

● プラグインの作成

cd /usr/share/munin/plugins/

sudo vi FetchTemperature

● ライブラリーのインストール

sudo gem install munin-ruby

● 設定

sudo chmod +x FetchTemperature

sudo ln -s FetchTemperature /usr/share/munin/plugins/FetchTemperature

sudo vi /etc/munin/plugin-conf.d/munin-node

sudo munin-node restart

● 実行確認

sudo munin-run FetchTemperature

[FetchTemperature]user root

FetchTemperature

Page 28: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

28

xx

Raspberry Pi 電子工作

電子回路設計ツール

Fritzing はWindows/Mac/Linux で動作し、回路図の設計、シミュレーション等ができる。

【ダウンロードURL】http://fritzing.org/download/

【使い方】配置したいパーツを右上のパーツから選択してブレッドボードのウィンドウにドラッグ&ドロップするだけで配線できる。作成した回路図は各種ファイルに書き出すことも可能。

【Raspberry Pi パーツ】Adafruit の Fritzing Library を使うことで Raspberry Pi のパーツを利用することができる。以下の URL からファイルをダウンロードして Fritzing の [ファイル] -> [開く] から必要な .fzpz ファイルを開けばパーツウィンドウにパーツが追加される。https://github.com/adafruit/Fritzing-Library

Page 29: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

29

xx

紹介

ぼちぼちぼっち開発 with Raspberry Pi in 大阪

場所:Namba CoWorking

    http://namba.cc/price

費用:1000円(場所代)

必要な物:raspberry pi、PC

日時:Doorkeerperで通知予定

Page 30: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

30

xx

FabLab Kitakagaya レーザー加工機 report

3月14日にFabLab 北加賀屋でレーザー加工機の基礎講習に行って来ました。

Page 31: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

31

xx

FabLab とは

● 「ほぼあらゆるもの」をつくることを目標とした、3Dプリンタやカッティングマシンなど多様な工作機械を備えたワークショップ。

● 世界中に存在し、市民が自由に利用できる事が特徴。「ほぼあらゆるもの」の中には、大量生産・規模の経済といった市場原理に制約され、

● いままでつくり出されなかったものが含まれる。ファブラボは、個人が、自らの必要性や欲求に応じて、そうした「もの」を自分(たち)

● 自身で作り出せるようになるような社会をビジョンとして掲げており、それを「ものづくり革命 (第2次産業革命)」とも呼んでいる。

● 「ファブ」には、「Fabrication」(ものづくり)と「Fabulous」(楽しい・愉快な)の2つの単語がかけられている。

wikipediaより 引用

http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%83%96%E3%83%A9%E3%83%9C

Page 32: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

32

xx

FabLab Kitakagaya レーザー加工機 report

Venus 12Wを使って、レーザー加工機を初体験。

手順1.データの作成、もしくは素材のインポート2.カットは、極細線(0.1mm)。彫刻は、彫る強さを変えたい部分は、色分けする。3.印刷をして、レーザー加工機にデータを送ります。また印刷設定で、始点の設定や色によってパワー調整などをします。4.レーザー操作パネルで送ったファイルを選択し、ボタンを押して開始して、出来上がりを待つだけ。

レーザー加工機とはレーザービームでいろいろな素材にカット・彫刻をする工作機械です。利用したソフト、CorelDRAW(有料ソフト)です。

Page 33: SIerによるSIerのためのRaspberry Pi 入門4 (タイムラプス、Lチカ)

33

xx

FabLab Kitakagaya レーザー加工機 report

データは、Adafruit Pi Boxを利用、下記からダウンロードできる。

raspberry piのケースを作りました。

http://www.thingiverse.com/thing:24461

素材は、アクリル板 180×320ミリ 2ミリ

出来上がりはこれ。見た目は良いが、実は、データが3mm用だったため、立て付けが悪く、かつ一部、Audio Outの穴がずれました。。。とは、いえ初心者でもクオリティが高いものが出来ることを確認できました。

次回は、事前にInkscape、Jw_cadなどのフリーのソフトを使って、少しカスタマイズしてケース作りをしてみたい