Raspberry Piで遊びつつ技術習得をするまとめ( Node.js, Socket.IO, Samba, カメラモジュール, Dropbox)

目的

Raspberry Piで遊びつつ技術習得をする!
買うならRaspberry Pi Type B 512MBの奴が使いやすくていいっすよ。


習得する技術

1. Node.jsでウェブサーバーを立てる
2. Socket.IOでローカルチャットサーバーを立てる
3. Sambaでファイル共有サーバーを立てる
4. カメラモジュールで監視システムを作る
5. デバイスのGPIO制御をブラウザから実行してみる



1. Node.jsでウェブサーバーを立てる

まずはNode.jsのインストール。
下記リンクにある方法でNodeをインストールします。
⇒ 【Node.js】nvmをインストールして設定するまでの方法

【注意】
 - Raspberry Piの貧弱CPUでビルドするので2h近く掛かる
 - nodeの設定をターミナル起動時に毎回読み込む必要があるため、
  以下を参考にして、 .bashrc等に設定スクリプトを入れる。
  http://d.hatena.ne.jp/white_chi/20111101/1320097898

インストールできているかは以下で確認。
$ node -v

NodeでのHello worldはこんな感じにサクッと書けます。



2. Socket.IOでローカルチャットサーバーを立てる

以下のコードを実行してSocket.IOをインストール
$ npm install socket.io

環境設定はこれで完了したので、あとはサンプルアプリを実装して動作確認したいところ。
少し知識が必要な部分なので、こちらはdotinstallのSocket.IO入門を参照。
あとはこっちも参考にしましたね。
http://lealog.hateblo.jp/entry/2012/10/04/005326
実装コードはこんな感じ。

<サーバーサイド>

<クライアントサイド>


動作方法の一例としては、raspberry piにsshで入って以下のコマンドで実行でサーバーを立てる
$ node app.js

raspberry piと同一のLANに接続されたPCからブラウザで以下のURLにアクセス
http://192.168.11.4:9999/

【注意】
IPアドレスは実行環境に合わせて変更する必要があります。
この辺自動取得しておくべきところですが面倒なのでハードコーディングしてしまっています。。

3. Sambaでファイル共有サーバーを立てる

Sambaのインストール
$ sudo apt-get install samba

Sambaの設定
sudo nano /etc/samba/smb.conf

以下の設定を追記
# 末尾に追加
[share]
path=/home/pi/share
read only=no1
browsable=yes
guest ok = yes
force user = pi 
共有ディレクトリを作成
$ mkdir /home/pi/share # 共有ディレクトリ作成

sambaが自動起動するように設定


$ sudo update-rc.d samba defaults; sudo update-rc.d ssh defaults

【 参考リンク 】
sambaのインストール:
  http://j-caw.co.jp/blog/?p=1046
共有ディレクトリへのアクセス:
  http://junkroom2cyberrobotics.blogspot.jp/2013/01/raspberry-pi-windows-samba.html


4. カメラモジュールで監視システムを作る

【カメラモジュールの設定】

監視システムの構成は以下のとおり。
- カメラモジュールをつかって画像を取得
Amazonで3000円やそこらで買えちゃいます。

買ったら以下の動画を参考にしてセットアップします。

ソフト側の設定も変更しなきゃいけないので以下を参考にして設定変更します。
http://www.rs-online.com/designspark/electronics/jpn/blog/jpn-raspberry-pi-camera-module-setup

ここまで設定できたら以下のコマンドで画像が撮れるか検証。

$ raspistill -o image.jpg

画像の確認方法として手っ取り早いのは、sambaで設定した共有ディレクトリ上に撮影した画像を置いて、ホストPCからエクスプローラ経由で画像を確認すると楽かも。

【cronで定期的にタスクを実行する】

cron編集:
$ crontab -e
cronの表示:

$ crontab -l
cronの設定:

*/10 * * * * hogehoge.sh # 10分に1回実行
00  * * * *  hogehoge.sh # 1時間に1回、毎時00分に実行
45 23 * * * hogehoge.sh  # 1日1回、毎日23時45分に実行

あとは、hogehoge.shにカメラ動作コマンドをぶち込んで実行すれば定期的に写真が取れるようになります。

【参考リンク】
http://www.limemo.net/blog/2013/07/%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A4%E3%81%AEcron%E3%81%A7%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99.html

【Dropboxにアップロード】

すっごくまとまっているし、手順通りやればDrobboxにアップロードできるようになったので以下のリンクを参照下さい。
 http://daisukeblog.com/?p=2067
 


5. デバイスのGPIO制御をブラウザから実行してみる

後で書きます。

コメント

このブログの人気の投稿

Callback関数を知らん人がまず理解すべきことのまとめ。

C言語でBluetoothスタックを叩きたい人のBluetooth開発入門その1

C++プログラミング入門(1) // 倉庫番プログラムの実装