sierによるsierのためのraspberry pi 入門4 (タイムラプス、lチカ)
DESCRIPTION
2014/04 勉強会資料 サイト http://77sites.appspot.com/2/page1.htmlTRANSCRIPT
xx
・Raspberry Pi BerryCam タイムラプス 電子工作(Lチカ、温度センサー)
監視サーバ(munin)
Fablab レーザー加工機でケース作り
x
2014/4
catmoney
http://77sites.appspot.com/2/page1.html
SIerによるSIerのためのRaspberry Pi 入門 4
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設定
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
4
xx
Raspberry Piで タイムラプス
サービス内容:定位置で一定時間の間隔(秒単位~)で写真を撮影し、その写真を加工し、短時間での変化を表現する。
利用するハード
Raspberry Pi Type B SDHCカード Camera Module
アクセサリ一覧 http://77sites.appspot.com/2/page2.html
×
モバイルバッテリー
無線LAN USBアダプタ
モバイルルーター
5
xx
Raspberry Piで タイムラプス
システム構成
持ち運びできるように下記の構成にした。
モバイルルータ
①起動時にipアドレス通知
②Cronで30秒ごとに写真を撮る
③ブラウザ経由で写真のアングルを確認。問題なければ、そのまま撮影継続
④撮影が終わったら、PCからtelnet経由で動画に変換。scp経由でファイル取得
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/ .*//'`;
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
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
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と同じネットワーク内にいることが必要。
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実際に作ったタイムラプス
11
xx
Raspberry Piで タイムラプス
システム構成の理想系
Raspberry Piにbluetoothアダプタをつけて、スマホアプリで
すべて操作出来たら構成と使い勝手が一番良いような気がする。
私には、スマホアプリを作る時間も能力がないので、誰か作ってほしい。。。
スマホアプリ・写真の撮影設定・写真の確認・タイムラプスの作成・タイムラプスの取得
bluetoothで接続
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
13
xx
Raspberry Piで Lチカ
サービス内容:LEDをチカチカさせる
利用するハード
Raspberry Pi Type B SDHCカード ブレッドボード LEDジャンパー線
抵抗
×
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
15
xx
Raspberry Pi Lチカ
ブレッドボードとはハンダ付け不要で部品やリード線を差すだけで回路が組み立てられる回路基盤
部品エリア
電源エリア
中身は金属板が入っている
引用元ページhttps://www.sunhayato.co.jp/products/item_data/howto_breadboard.pdf
16
xx
Raspberry Pi Lチカ
抵抗電気を流れにくくする部品。抵抗が大きいほど電気は流れにくい。抵抗のカラーは4本(5本)のカラーの輪が印刷してある。この帯で抵抗値と誤差がわかるようになっている。
カラー抵抗値の写真早読み表http://part.freelab.jp/s_regi_list.html
LED(発光ダイオード)電気が流れると光る部品。足が長い方 "アノード:電池の + 側につなげる"足が短い方 "カソード:電池の - 側につなげる"
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
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
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
20
xx
Raspberry Piで温度センサー
サービス内容:温度センサーを使って温度取得
利用するハード
Raspberry Pi Type B SDHCカード ブレッドボード
ADコンバータMCP3002 ジャンパー線
×
セラミックコンデンサー 温度センサー
21
xx
ADコンバータとはRaspberry Pi には、アナログ入力はないので、そのままでは、アナログ値を測ることはできません。そのためADコンバータ(アナログ-デジタル変換器)を使用して、アナログ値を取得します。
SPI(Serial Peripheral Interfac)を使いますシリアルバスの一種で、比較的低速なデータ転送を行うデバイスに利用される。
Raspberry Piで温度センサー
コンデンサとはコンデンサは電気を蓄えたり放出したりする電子部品。直流を通さないで絶縁するはたらきもあります。引用元http://www.murata.co.jp/elekids/ele/compo/capacitor/
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
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
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
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
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
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
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
29
xx
紹介
ぼちぼちぼっち開発 with Raspberry Pi in 大阪
場所:Namba CoWorking
http://namba.cc/price
費用:1000円(場所代)
必要な物:raspberry pi、PC
日時:Doorkeerperで通知予定
30
xx
FabLab Kitakagaya レーザー加工機 report
3月14日にFabLab 北加賀屋でレーザー加工機の基礎講習に行って来ました。
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
32
xx
FabLab Kitakagaya レーザー加工機 report
Venus 12Wを使って、レーザー加工機を初体験。
手順1.データの作成、もしくは素材のインポート2.カットは、極細線(0.1mm)。彫刻は、彫る強さを変えたい部分は、色分けする。3.印刷をして、レーザー加工機にデータを送ります。また印刷設定で、始点の設定や色によってパワー調整などをします。4.レーザー操作パネルで送ったファイルを選択し、ボタンを押して開始して、出来上がりを待つだけ。
レーザー加工機とはレーザービームでいろいろな素材にカット・彫刻をする工作機械です。利用したソフト、CorelDRAW(有料ソフト)です。
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などのフリーのソフトを使って、少しカスタマイズしてケース作りをしてみたい