簡単に楽しくはじめよう!raspberry pi入門
DESCRIPTION
OSC2013 Hokkaidoにて発表.TRANSCRIPT
おはようございます
朝早くからお越しいただき ありがとうございます
( ◠‿◠ )
ねんのため
Ejectのセミナーでは ありません
Raspberry Piの セミナーです
EjectはLTまで おたのしみ
この・・・あとで・・・つk
(☝ ՞ਊ ՞)☝
☝ ՞ _人人人人人_ > ( ) < ☞  ̄Y^Y^YY^Y^Y ̄
՞ ਊ
簡単に楽しくはじめよう!Raspberry Pi入門 Japanese Raspberry Pi Users Group あっきぃ
2013/09/14 OSC2013 Hokkaido
自己紹介 • あっきぃ(25歳のおにいさん) • 北海道根室市出身 • OSC2005 Hokkaidoに17歳で参加したのがきっかけでびぎねっとに就職して今に至る
• Ejectコマンドユーザー会主宰 今日も展示ブースはEjectメイン
今日のアジェンダ • Raspberry Piってなに? • Japanese Raspberry Pi Users Groupに ついて
• Raspberry Piを使ってみよう • Raspberry Piをサーバーにしよう • Raspberry Piで電子工作に挑戦してみよう • Raspberry Pi Camera Moduleであそぼう • まとめ
Raspberry Piってなに?
Raspberry Piとは • 英国のラズベリーパイ財団が開発した ARMプロセッサ搭載の小型コンピュータ
• 各種ARM Linuxが動く • 電子工作用のポートが搭載されている • 25ドルor35ドルと、安価に購入できる • 現在、大きいお友達などを中心にブーム
Raspberry Pi
Raspberry Piでできることの例
• 簡易デスクトップ機 – Webとかワープロとかができるレベル – マイクラのサブセット版とかもまあ動く
• Linuxでちょっとしたサーバーの運用 – もしくはサーバー構築の練習
• 電子工作と組み合わせたシステムづくり – センサー類を搭載してデータ収集 – ロボットに組み込んでLinuxで制御
スペック • SoC: Broadcom BCM2835 – CPU: ARM1176JZF-S 700MHz – GPU: Broadcom VideoCore IV (30fps FullHD H.264サポート)
– メモリ: 512MB (ModelAは256MB) • Model B: USB2.0ポート×2+有線LAN • Model A: USB2.0ポート×1 • サイズ: 8.5cm×5.4cm≒クレジットカード
スペックをざっくり言うと • BCM2835→コストが重視されたスマホとか組み込み向けのチップ
• スマホの部品でARMパソコン作りました みたいな感じ
なぜRaspberry Piができたのか
• 子供や学生がコンピュータやプログラミングを学習するための教育用に作られた
• 環境がリッチになり、子供 たちがプログラミングに触 れる機会が減ってしまった
• HTMLとかJSとかではなく、 もっとちゃんとしたプログ ラミングを学んでほしい
RasPi作者のEben氏(右)と 奥さんのLiz氏(左)
Raspberry Piのこだわり • Raspberry Pi本体 – 小さくて頑丈なもの – 子どもたちがカバンに入れて持ち運びできる – とにかく安価にして教材として採用できるように考慮
• Raspberry Pi本体以外 – できるだけたくさんの言語でプログラミングができることを目標に環境を整備
ハードだけではない Raspberry Pi
• プログラミングを学習してもらうためのソフトウェア環境も考慮されている
• 推奨OSのRaspbianにバンドルされている物 – Pythonスクリプトのサンプル – GUIでプログラミングできるScratch
• Minecraft Pi Edition – Mojangが開発しているゲーム – マップ内をプログラムで動的にハックできる特別仕様になっている
Raspberry Piの名前の由来 • 果物の名前を社名に採り入れている(Appleなど)に敬意を表してRaspberryにした
• PiはPythonからとった
→Raspberry Piになって、パイ(Pie)っぽくなった(?)
Japanese Raspberry Pi Users Groupについて
Japanese Raspberry Pi Users Group
• OSC2012 Tokyo/FallでRaspberry Piを持ち込んでいたユーザーを中心にユルく結成
• Google Groups(ML)を開設し、情報交換を開始
• Raspberry Pi公式フォーラムに日本語フォーラム開設を働きかけ
• 2013年5月のBig Raspberry JAM TOKYO 2013を主催
活動内容 • 2ヶ月に1回くらいをめどに、Raspberry JAM(オフラインミーティング)を東京都内で開催中 – RasPiを使って作ったものなどを自慢する – 情報交換 – (本物の)ラズベリーパイをたべる
書籍執筆 • 初期メンバーを中心に技術評論社より 「Raspberry Pi [実用] 入門」を刊行
• それぞれ自分が活用している分野についての紹介や、その作り方を紹介
• ソフトからハードまで手広く カバー
• 私も参加(そしてEject!) • ブースで試し読みできます
ユーザー会の情報 • raspi.jp を参照 • Google Groupsに参加して情報を交換しよう – RasPiのこと、OSのこと、電子工作のこと、RasPiケースのこと……
• 公式サイトの日本語フォーラムももちろん可
私とRaspberry Pi
私とRaspberry Pi • はじめて見た瞬間「Ejectサーバーに使える」と直感する – バッテリー駆動が可能なのでモバイル化の可能性を感じた→続きはEJectの展示・LTで
• はじめはLinuxサーバーとして使用 • 今は少しずつ電子工作も絡めて、いろいろと遊んでいるところ
今日の展示(1) • エアコンリモート操作 • 1-Wire温度センサーを使用してWebで室内温度を確認
• Webからの操作に 加えてボタンでの 手動操作もできる
• Ejectソリュー ションの進化系
今日の展示(2) • キャラクタLCDとPaSoRiを組み合わせた交通系ICカードの残高表示
• 『Raspberry Pi[実用]入門』で紹介されているLCDを使用 (特に難しくない)
私のらずぱい経歴 • 2012年3月にEngadgetJapaneseで知る • 8月に1号機を入手、Ejectサーバーにする • OSC2013東京秋で持ち込みドヤリング • 冬から半年かけて書籍執筆 • 5月に東京で大規模なイベント開催、Eben氏とLiz氏にEjectがウケる
• RasPi公式サイトに載る←イマココ!
(☝ ՞ਊ ՞)☝ウイーン
Raspberry Piを使ってみよう
Raspberry Piをはじめるには • Raspberry Piを買う – RS Online( jp.rs-online.com ): 国内発送ですぐ届く
– ModMyPi(modmypi.com): 海外からケース付きで
• 周辺機器をそろえる – USBキーボード・マウス – HDMI出力対応モニターかテレビ、HDMIケーブル
– LANケーブル – 電源ケーブル(MicroUSB)
周辺機器を接続する • USBデバイスなどは電源を入れる前に接続 – 稼働中に抜き差しするとシステムがクラッシュすることがある
• HDMIが無い時の画面出力 – HDMIからDVIやVGAに変換するアダプタの利用 – RCA端子で車載用ディスプレイなどにつなぐ
• USB無線LANドングルも使える – 国内の安いドングルはだいたいそのまま動く
OSの用意 • ストレージはSDカードを使用 • NOOBSの場合 – 公式サイトからNOOBSのzipファイルを取得 – フォーマット済のSDカードにファイルコピー
• ディスクイメージの場合 – 公式サイトからOSのイメージファイルを取得 – SDカードにDDコマンドなどで書き込み
OSインストールの使い分け • NOOBSを利用すると良いケース – 色んなOSを試したいとき – 頻繁にOSを再インストールするとき
• ディスクイメージを利用すると良いケース – 用途が決まっていてOS入れ替えがないとき – SDカードの容量が小さいとき
起動と停止 • 電源ボタンは、ない
• 起動は電源ケーブルをさした瞬間に稼動 • 停止はOSからシャットダウンした後電源ケーブルを抜く
• リセットボタンはボードにパターンがあるので自分でつけられる
接続してみた様子
OSのインストール • NOOBSをSDカードに用意して起動すると、次のような画面が表示される
• 好みのOSを選ぶとインストールが始まる • 簡単!! ✌(‘ω’)✌
初期設定 • 初回起動時もしくはraspi-configコマンドを実行すると、セットアップ画面が表示される
• デスクトップの有効化、キーボード・ロケール設定、パスワード変更などが手軽に実行できる
• 設定が終わって、必要に応じて再起動を実行したら完了
Raspberry Piを デスクトップにしよう
Raspberry Piの デスクトップ環境
• 推奨OSのRaspbianや、FedoraベースのPidoraにはデスクトップ環境が用意されている
• RaspbanであればLXDE • Pidoraであればxfce
デスクトップのようす(Raspbian)
デスクトップのようす(Pidora)
どのくらい使えるの? • CPUとメモリがそれほど強くはないので快適に使えるかと言えば、正直No – 使う人の寛容さに左右される(??)
• 画面描画がもたつく
• 日本語入力関係はデフォルトでは入ってないため、自分でインストールする
WaylandとRaspberry Pi • 新しいデスクトップ環境としてWaylandがある
• Raspberry Pi向けのテスト版が用意されている
• 描画にGPUを使用するため、GPUが強いRaspberry Piでは快適に動作する – http://youtu.be/0UkUal_hHx8
• ただし、開発版なので動作はまだ不安定
GPUについて • VideoCore IVと言うGPUを搭載している • フルHD動画の再生も余裕 • 後で紹介するカメラもGPUを利用
• GPUプログラミングとかはこのへん参照 – http://elinux.org/Raspberry_Pi_VideoCore_APIs
Waylandを試す方法 • /etc/apt/sources.listに以下の行を追加 – deb http://raspberrypi.collabora.com wheezy rpi
• apt-getでインストール – $ sudo apt-get update; sudo apt-get install weston
• 起動 – $ weston-launch
• ( http://wayland.freedesktop.org/raspberrypi.html を参考)
Raspberry Piを サーバーにしよう
Raspberry Piでサーバー • OSがLinuxなので、Raspberry Piのスペックの範囲内で大抵のサーバーは動かせられる
• Webサーバー(Apache, Nginxなど) • DHCPサーバー(dhcpd, dnsmasqなど) • DNSサーバー(bind, dnsmasqなど) • VPNサーバー(OpenVPNなど) • NTPサーバー(ntpd) • Ejectサーバー(!?)
インストールも簡単 • 推奨OSのRaspbianはDebianベース • インストールはapt-get • DebianとかUbuntuとかを触ったことがある人なら、なんてことはない
• 詳しいサーバーの作り方などは割愛
複数台構成が試しやすい • 通常のPC・サーバーでは、価格やスペースや電力などの問題で出来なかった複数台構成の実験もできる – (仮想マシンでいいじゃん、とか言わない!><)
• Raspberry Piなら安くてコンパクトで省電力なので、手軽に実験できる
• こんなのはいかが? – クラスタリング – 複数台構成のOpenStack(パッケージはある)
Raspberry Piで 電子工作に挑戦しよう
Raspberry Piと電子工作 • Raspberry PiにはGPIOやI2Cと呼ばれるIO入出力機能が付いている
• これを利用して電子工作が学習できる • OSとの連携もLinuxなのでかんたん – 専用のOSとかアセンブラは不要 – シェルスクリプトやLightweight Languageで開発できる
• 入門にはうってつけ
用意するといいもの • ブレッドボード – 電子部品をボードに差して接続できるボード
• ジャンパーピン – Raspberry Piとブレッドボードと部品とを つなぐ線
• 購入場所 – 近くの電子工作屋さん – 通販 – dx.com(海外の通販。2週間かかるけど送料無料)
LEDチカチカをしてみる • LEDをLinuxから点灯させてみよう – 通称Lチカ。某コンビニのフライドチキンっぽい呼び方だな?
• 使うもの – LED(3.3Vのもの) – 270Ω~330Ωくらいの抵抗(ない時はもう少し値が大きくても良い。470Ωとか) • ※値が小さいとLEDが壊れるけれど、それもまた学習(?)
回路図 • 今回はGPIO4に接続(ピン番号では7)
※GNDはPin6が正しい (FritzingのRaspberry Piのデータが間違っている模様)
接続してみたようす
チカチカさせる • Rubyでチカチカさせてみよう • wiringpiを使用する (sudo gem install wiringpi)
• GPIOは7(ピン番号)を 指定
• ルート権限で実行 • (sudo ruby light.rb)
require 'wiringpi'
gpio = 7 io = WiringPi::GPIO.new io.mode(gpio, OUTPUT)
io.write(gpio, 1) sleep 3 io.write(gpio, 0)
light.rb
光った!!
他の例 • LEDチカチカに限らずいろんなことができる
• モーターの制御 • 温度センサーをつないで室温の計測 • 家電のリモート操作(ホームオートメーション)
Raspberry Pi Camera Moduleであそぼう
Raspberry Pi Camera Module
• 2013年5月頃に発売 – これも供給安定までに数ヶ月かかった(^^;
• Raspberry Piに接続して使うことができる
• 簡単なコマンドで写真や動画の撮影ができる
• $25(¥2,400)で販売中
特徴 • 安価 • 性能がいい – 5メガピクセル(500万画素) – フルHD動画を30fpsで出力 • RasPiのGPU性能が良いため
– H.264サポート • やはり元々はケータイ向けの部品
接続したようす • リボンケーブルをCSIポートに差し込む – Camera Serial Interfaceの略
• 違う長さのリボンケーブルや、固定用アクセサリは通販で買える – shop.pimoroni.com – modmypi.com
使えるようになるまでの手順 • 最新のNOOBS(1.2.1)でRaspbianを用意 • カメラを接続して起動 • 初回起動時もしくはraspi-configコマンドでカメラサポートを有効にする
• 再起動する
写真を撮影してみる • raspistill ‒o test.jpg
• 意外とキレイに写る
動画を撮影してみる • raspivid ‒o test.x264 ‒t 15000 – -tは撮影時間(上記は15秒) – 指定しない場合は5秒 – デフォルトではフルHD(1920x1080)で出力されるので、適宜-x,-yでサイズ変更可能
• mp4に変換するには、MP4Boxコマンドを使用(gpacパッケージをインストール) – MP4Box -fps 30 -add test.h264 test.mp4
ストリーミング • VLCを使った例 • vlcパッケージをインストールして、以下のコマンドを実行
• リモートのマシンの VLCからネットワーク 接続
$ raspivid -‐o -‐ -‐t 9999999 -‐w 320 -‐h 240 | cvlc -‐vvv stream:///dev/stdin -‐-‐sout '#standard{access=h\p,mux=ts,dst=:8080}' :demux=h264
他になにができる? • マクロレンズをつけてマクロ撮影 • OpenCVと組み合わせて顔認識など – http://youtu.be/CxFW7X_d9IM
• 気球につけて飛ばして空を撮る (先日Eben氏らがやっていた^^;) – http://www.raspberrypi.org/archives/4733
いろんなプロジェクト • RaPiRo: RasPiを搭載して操作できるロボット。カメラも搭載できる
• Pi-Pan: カメラをケースに固定して、RasPiからアングルを操作するツール
まとめ • Raspberry Piは安く買えるけれどなんでも遊べるし奥深い
• Linux機にしてもいいし、バリバリ工作してもいい
• 買ったけど寝かせている人も、実用性は無視して、他の人の例を参考に色んなものにチャレンジしてみて!
おしまい • 質問とかあればぜひどうぞ • セミナー後はEjectコマンドユーザー会ブースにいます