Tag Archives: Raspberry Pi

Raspberry Piで無線ルーターを作る

Raspberry Piを買ってから、いろいろ試した。

Google+でたまたま、Setting up a Raspberry Pi as a WiFi access point記事を目にした。制作にかかった。家にはすでに常時2台無線ルーターが稼働しているので、ただの無線ルーターじゃ面白くないので、そのうえ同じサイトのOnion Pi の記事を参考しながらTor Proxyサーバを立てた。

Proxyサーバが匿名アクセスなどいろいろメリットがあるが、サーバのプロとしての用途もいろいろ、たとえば外から自宅サーバのアクセス性をテストするとか、自宅限定テストサイトが本当に限定されたかとか、自宅からのみアクセスを制限した管理ツールが本当に制限されたとか、自宅以外のIPからのアクセスのテストが時々必要になる。今までわざわざVNCで外にあるサーバの画面を開いてから覗くなり、スマートフォンのWiFiをOFFして、モバイルネットから覗くなりなど対応してた。

既にRaspbianのインストール、USB-WiFiの接続が済んたので、上記のページを参考に進めると、順調に無線ルーターとして機能し、Tor Proxyサーバも立てた。

試しに、iPhoneから立てたRaspberry Pi無線ルーターに接続すると、確かに自宅サーバ以外のIPでウェイブサイトにアクセスすることができた。

詳しい製作過程は、気が向いたらWIKIへ(http://linux.uc4.net//xoops/modules/xpwiki/)まとめる予定。

Raspberry Pi ネットワークカメラを作る

RaspberryPiに に Webカメラを接続して動画を配信してみる 定番のストリーミングアプリとして、

  • mjpg-streamer
  • motion
  • ffmpeg

があるらしい。ここはmotionを試す。 使った機材:

  • RaspberryPi 本体
  • 内蔵マイクタイプ130万素Webカメラ:UCAM-C0113FBPN[ELECOM(エレコム)]
  • マイク内蔵/FullHD対応オートフォーカス搭載200万画素Webカメラ:UCAM-DLD200BASV[ELECOM(エレコム)]

Webカメラどちらも直結でmotionできた! UCAM-DLD200BASVの方が、内蔵マイクも認識されるので、そのうち音声ストリーミングも試す予定なので、こちらを使って実験を進める。 FireShot Screen Capture #006 - '(JPEG 画像, 320x240 px)' - 192_168_0_201_8081

詳しい製作過程は、WIKIへ(http://linux.uc4.net//xoops/modules/xpwiki/)どうぞ。

My works

  • lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0c45:7401 Microdia
Bus 001 Device 005: ID 056e:7009 Elecom Co., Ltd   <--- Elecom UVC Webカメラ
  • ls /dev/video0
  • apt-get install motion
  • vi /etc/motion/motion.conf
control_localhost off 
webcam_localhost off
  • motion -n

ブラウザで以下のアドレスにアクセスすると、配信されている画像を確認することができる。 (ご自分のRaspberry PiのIPアドレスに書き換えて)

Add info anchor.png

Raspberry Pi wireless 温度計の制作

RaspberryPiの検索で、たまたまUSB温度計を使ってLinuxから室温を計測する を発見

それから、matoken’s wiki. Linux/Device/サンコーレアモノショップ_USB温度計_AKIBA58で、eBay 日本で買うより安いという情報を頂いたので、買ってみた。

同じの品物ないが、類似したものを一個$6.49で買った。送料無料!(しかし安いものがいっぱいあるからついつい、84ドル超える買い物になった。)

P2190091

届いたら、早速RaspberryPiに刺してみたら、

[702457.972061] usb 1-1.2: new low-speed USB device number 5 using dwc_otg
[702458.078478] usb 1-1.2: New USB device found, idVendor=0c45, idProduct=7401
[702458.078511] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[702458.078528] usb 1-1.2: Product: TEMPerV1.4
[702458.078543] usb 1-1.2: Manufacturer: RDing
[702458.093433] input: RDing TEMPerV1.4 as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input0
[702458.094931] hid-generic 0003:0C45:7401.0001: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPerV1.4] on usb-bcm2708_usb-1.2/input0
[702458.104938] hid-generic 0003:0C45:7401.0002: hiddev0,hidraw1: USB HID v1.10 Device [RDing TEMPerV1.4] on usb-bcm2708_usb-1.2/input1

認識された。

こちら(http://hpv.cc/~maty/pukiwiki1/index.php?Linux/Device/サンコーレアモノショップ_USB温度計_AKIBA58)を参考に、ソースコードを取得し、カスタマイズする。

詳しい製作過程は、WIKIへ(http://linux.uc4.net//xoops/modules/xpwiki/)どうぞ。

# apt-get install build-essential libusb-0.1-4 libusb-dev git

一部パッケージが見つからない、失敗に終わった。パッケージ更新する。

# apt-get update

# apt-get install build-essential libusb-0.1-4 libusb-dev git

今度上手く完成した。

temper ソースをgit から。

# git clone git://github.com/bitplane/temper.git

# ls temper

60-temper.rules  log.sh  Makefile  pcsensor.c  pcsensor.h  README  temper.c

# cp -p temper.c temper.c.org

# vi temper.c

# diff temper.c.org temper.c

44c44
<               utc = gmtime(&t);
---
>               utc = localtime(&t);
47c47
<               strftime(dt, 80, "%d-%b-%Y %H:%M", utc);
---
>               strftime(dt, 80, "%Y-%m-%d %H:%M:%S", utc);

# make

# mv temper /usr/local/bin/

# chmod u+s /usr/local/bin/temper

# temper

2013-02-16 03:48:08,30.396763

ちゃんと温度の表示ができた。しかし30度は高いね!USB延長ケーブルを付けて再度計測。

$ temper

2013-02-16 03:55:17,23.710213

23度くらい、室温に近いかも。

運用 anchor.png

PHPでWEBに表示するため、UNIX通算時間の表示、ログの生成、cron に登録、ログの解析が必要。

# vi temper.c

# diff temper.c.org temper.c

44c44
<               utc = gmtime(&t);
---
>               utc = localtime(&t);
47c47
<               strftime(dt, 80, "%d-%b-%Y %H:%M", utc);
---
>               strftime(dt, 80, "%Y-%m-%d %H:%M:%S", utc);
49c49
<               printf("%s,%fn", dt, tempc);
---
>               printf("%ld,%s,%fn", t, dt, tempc);

5分置きに、/var/log/temper.logにログを吐き

*/5 * * * * /usr/local/bin/temper >> /var/log/temper.log

最後は、PHPでWEBに表示する

オーダーした、Webカメラもそろそろ届くので、無線で画像、音声、温度、湿度を送るフィールドサーバみたいなものを作りたいね!

Ref anchor.png

参考:

  1. http://model.job.affrc.go.jp/FieldServer/フィールドサーバ

Raspberry Pi 二台目始動

Raspberry Pi一台目Webサーバとして16GのSDカードを積んで遠方で稼働し始めた。

Raspberry Pi 二台目もそろそろ始動。

P1300012

今回はクリアケースで、8GのSDカード(左側青いもの), USB-WiFi無線通信モジュール(右側白いもの)を装備、ワイアレスの何かを試したいともう。

手元にある http://www.amazon.cn/MERCURY-水星网络-MW150US-超小型150M无线USB网卡/dp/B008FK96QG/ で購入した。 USB-WiFi無線通信モジュール(右側白いもの)を装備した様子

# lsusb — 認識されたことを確認。

Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter <--- これです!
Bus 001 Device 008: ID 0c45:7401 Microdia

ここの Wifiアダプタ(チップセットがRTL8188CUSのもの)のドライバはカーネルにすでに組み込まれているので、非常に簡単なセットアップだ。

# lsmod — カーネルモジュールの読み込み状態で確認

Module                  Size  Used by
snd_bcm2835            10636  0
snd_pcm                60411  1 snd_bcm2835
snd_seq                44988  0
snd_timer              16257  2 snd_pcm,snd_seq
snd_seq_device          4265  1 snd_seq
snd                    41809  5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device
snd_page_alloc          3176  1 snd_pcm
8192cu                457513  0  <--- これです!
leds_gpio               1920  0
led_class               2329  1 leds_gpio

# iwconfig — ワイヤレス設定から確認

wlan0     unassociated  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency=2.412 GHz  Access Point: Not-Associated
          Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
lo        no wireless extensions.
eth0      no wireless extensions.
Page Top

設定 anchor.png

# vi /etc/network/interfaces

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

# vi /etc/wpa_supplicant/wpa_supplicant.conf

network={
 ssid="_SSID_"
 proto=RSN
 key_mgmt=WPA-PSK
 pairwise=CCMP TKIP
 group=CCMP TKIP
 psk="_WPA_SHARED_KEY_"

}

# ifdown wlan0

# ifup wlan0

ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument

# ifconfig wlan0

wlan0     Link encap:Ethernet  HWaddr 14:cf:92:0b:91:84
         inet addr:192.168.0.123  Bcast:192.168.0.255  Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:2573 errors:0 dropped:4062 overruns:0 frame:0
         TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:307880 (300.6 KiB)  TX bytes:1871 (1.8 KiB)

運用 anchor.png

サーバとして運用するつもりなので、固定IPの設定を行う

また、eth0はケーブルが抜けると、wlan0も切れてしまうので、いろいろと調べて、ifmetric 導入にした。

# apt-get install resolvconf — chen 2013-02-19 (火) 01:30:55

# apt-get install ifmetric — chen 2013-02-19 (火) 01:31:14

# vi /etc/network/interfaces

auto lo
iface lo inet loopback
# Primary wired network interface [eth0]
auto eth0
iface eth0 inet static
       metric 1
       address 192.168.0.201
       netmask 255.255.255.0
       gateway 192.168.0.1
# DHCP
#iface eth0 inet dhcp
# Wireless interface [wlan0]
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
       metric 0
       address 192.168.0.207
       netmask 255.255.255.0
       gateway 192.168.0.1
       wpa-ssid _SSID_
       wpa-psk _WPA_SHARED_KEY_
       # wpa_roam /etc/wpa_supplicant/wpa_supplicant.conf

# ifdown wlan0

# ifup wlan0

これてeth0はケーブルが抜けでも、wlan0ちゃんと繋ぐ。

Ref anchor.png

Raspberry Pi power on first time

Raspberry Piのケースもそろい、新しい4G容量のSDカードも購入、いよいよ電源を投入。

その前、まずインストール方法を調べた。インターネット接続されてるなら、berrybootが一番楽らしい。小さいファイルを解凍してsd cardに入れるだけ、しかも複数OS入れられる。

P1160876

Piとテレビの間、HDMIケーブルで繋ぎ、LANケーブルでハブにも繋ぎ、手元にある無線マウス、無線キーボードもそれぞれUSBでつなぎ、用意したSDカード挿入、最後5V電源つなった様子。

インストール手順をまとめる:

  1. http://www.berryterminal.com/doku.php/berryboot サイトを開く。
  2. berryboot-20120904.zip をダウンロードする。
  3. カラのsd cardのルートににすべてファイルunzip
  4. sd cardを PIに挿入
  5. ルータと PI にケーブルをつなぐ
  6. PI 電源を入れる
  7. PI 起動、sd cardのフォーマット
  8. OSを選んでインストール (とりあえずDebian)
注意:フォーマットする際、デフォルトの ‘ext4 (no discard)’  ではなく、 ‘ext4’を選ぶ。

P1160879

Raspberry Pi 注文

Raspberry Pi(ラズベリーパイ)は、名刺サイズの価格35ドルの「単板機」(single-board computer)。

http://ja.wikipedia.org/wiki/Raspberry_Pi

多分3月こと、Fecebookで情報を知り、予約したが、今日やっと注文できるの知らせが来た。

本体は35ドル、送料は8.02ドル、総額43.02ドルで注文した。届くまで5週間かかるから、とりあえず楽しみに。

用途として、HDMIでTVに接続し、10/100 Mbps で無線ルータ(USB電源出力付き)に繋いで、AirPlayを作ってみたいと思う。

 

(液晶TV)---HDMI---(ラズベリーパイ)---LAN---(無線ルータ)---WIFI---(WIFIルータ)
                   (    電源入力 )---USB---(5V電源出力)

 

iPhone, Androidから、ビデオ見るなり、プレゼンなりできるといいね。