ラベル raspberrypi の投稿を表示しています。 すべての投稿を表示
ラベル raspberrypi の投稿を表示しています。 すべての投稿を表示

2014/05/24

PidoraでCLIからBluetooth SPP接続しようとしたらbluez-simple-agentがない件

Raspberry PiのPidoraでコマンドラインからBluetooth SPPで接続しようとしたところ、bluezパッケージ(bluez4)をインストールしてあるにもかかわらず、
bluez-simple-agentなどのコマンドがないということで引っかかってしまいました。
私のRPiのPidoraはFedora18ベースのバージョンなのですが、どうもリポジトリにある bluez4 のパッケージに、これらのコマンドが含まれていないようです。(たぶん。)

Bluezのソースコードからビルドすれば良いのですが、
今ビルドするだけのために必要なパッケージをRaspberry PiのSDカードにインストールするのもあれですし、単なるPythonスクリプトですので、他から持ってくることにしました。

私のRPiのPidoraにあるbluezは Bluez-4.101-5 です。
従って、bluez-4.101 のソースコードから持ってくれば良いということになります。
http://www.bluez.org/download/ から bluez-4.101.tar.xz をダウンロードし、
アーカイブを解凍したところ、"test"ディレクトリ以下に"simple-agent"、"test-device"などのファイルがありました。
# ls test/
agent.c     l2test.c            service-spp.xml   test-nap
attest.c    list-devices        simple-agent      test-network
avtest.c    lmptest.c           simple-endpoint   test-oob
bdaddr.8    monitor-bluetooth   simple-player     test-proximity
bdaddr.c    mpris-player.c      simple-service    test-sap-server
btiotest.c  rctest.1            test-adapter      test-serial
dbusdef.py  rctest.c            test-attrib       test-serial-proxy
gaptest.c   sap-client          test-audio        test-service
hciemu.1    scotest.c           test-device       test-telephony
hciemu.c    sdptest.c           test-discovery    test-textfile.c
hsmicro     service-did.xml     test-health       test-thermometer
hsplay      service-ftp.xml     test-health-sink  uuidtest.c
hstest.c    service-opp.xml     test-input
ipctest.c   service-record.dtd  test-manager
この中からを必要なスクリプト(simple-agent, test-device)をリネームして/usr/local/bin あたりにコピーすればOKです。
# cp test/simple-agent /usr/local/bin/bluez-simple-agent
# cp test/test-device /usr/local/bin/bluez-test-device

あとは接続を試してみます...。
# hciconfig hci0 up
# hcitool scan
Scanning ...
    XX:XX:XX:XX:XX:XX    xxxxx

# bluez-simple-agent hci0 XX:XX:XX:XX:XX:XX
# RequestPinCode (/org/bluez/xxx/hci0/dev_xx_xx_xx_xx_xx_xx)
Enter PIN Code: XXXX

# bluez-test-device trusted XX:XX:XX:XX:XX:XX
# rfcomm bind 0  XX:XX:XX:XX:XX:XX
# rfcomm
rfcomm0: XX:XX:XX:XX:XX:XX channel 1 closed

/dev/rfcomm*にバインドされましたので、minicom などのターミナルから接続できるはずです。
# minicom -D /dev/rfcomm0

2013/05/29

Arduino Leonardoを買ってみた

Arduino Leonardoというボードを買ってみました。
ちなみに....Arduinoシリーズは、Arduino言語という開発言語でプログラムを組んで、簡単に入出力制御などが行える、一種のAVRマイコン(を手軽に扱えるボード)です。
本格的なマイコンボードとはまた一味違う楽しみ方ができます。
以前から欲しかったのですが、安かったのでつい!これで私もArduinoデビューですw
(Arduino自体がオープンプラットフォームのため、色んな会社から互換ボードや拡張ボードが発売されていたりします。)

今回購入したArduino Leonardoとその他モジュール類など...
Arduino Leonardoのパッケージを開封したところ。
実際にはかなり小さくて、ある意味かわいい感じですw
パッケージもかわいいデザインですね。
今回は、この Arduino Leonardo と、Bluetoothモジュール、
LEDやセンサーなども一緒に買いました。(ついでに追加のブレッドボードなんかも...w)

ところで。以前に購入した Raspberry Pi(名刺サイズのLinuxボード) は、
搭載されたGPIOポートを用いて、センサなどのモジュール類を接続できます。
しかし、そのポートはデジタル専用であり、アナログ制御は基本的にできません。
そこでArduinoを組み合わせると、アナログ制御も比較的容易に行えるようになります。

もちろん、Raspberry Pi単体や、Arduino単体だけでも色々と遊べるのですが、
そのような感じで、Raspberry PiとArduinoを組み合わせることで、
さらに楽しさが広がるわけです。

...ということで何かやってみたいと思います。
実はつい先日、Raspberry Pi (Model B)をもう一台購入したのですが、
その前に3G回線に接続できるようにしたあの一台は今、大学の研究室に置いてあったりします。そこにArduinoを組み合わせて...遊んでみたいと思いますww

それでは♪

2013/04/28

Raspberry Pi + L-02A + ServersMan SIM (490円SIM) で3G接続

Raspberry Pi(ModelB, Raspbian)を3G回線に接続してみることにしました。

回線は、ServersMan SIM 3G 100 (月額490円SIM)を使います。

通信端末は、RPi界隈においては D02HWがよく使われるようですが、
今回は、docomoのFOMA-USBデータ通信カード L-02Aを使います。安く入手できたので。
(※ 尚、ServersMan SIMは、docomo FOMAのMVNO回線ですので、最近よく売っている Xi端末では利用できません。L-02AはFOMA端末です
【2013/08/08 追記】9月より、ServersMan SIMもXiのMVNO回線 (即ち、LTE)へ移行となるようです。Xi用のデータ通信カードが利用可能となります。)

Raspberry Pi (Model B) + L-02A
加えて今回は、Raspberry Pi上でnginxを起動させ、Webサーバにしてみます。
実用的なサーバを求めているわけではなく、あくまで遊びです(笑)
速度/レイテンシはともかく、動的グローバルIPアドレスが割り当てられるので、一応サーバにも使えます。
(※ DTIはそのような利用目的を推奨していませんし、私もあくまで実験であり推奨しません。自己責任でお願いします。)

【2013/08/08 追記, 2014/04/05 編集】
ServersMan SIM 100がLTEに対応し、ServersMan SIM LTE 100へ移行されることとなりました。
これに伴い、グローバルIPアドレスの提供がなくなり、
プライベートIPアドレスのみとなりましたので基本的にWebサーバなどとしては使えなくなります。
(ngrokなどを使う方法はありますが。)




まずは、WindowsのPCに、SIMカードを取り付けた状態のL-02Aを接続して、一旦設定を行なっておきます。

docomoの接続ツールをインストールします。
接続設定は、Serversman SIMのものを使い、実際に一旦接続してください。
尚、このように一旦設定を行なっておかないと、後から Linux上に接続してponする際、問答無用に"NO CARRIER"でエラーになってしまいました。

次に、Raspberry Piを起動して...
コンソールで apt-getを用いて、"pppconfig"と"eject"をインストールします。
$ sudo apt-get install pppconfig eject

続いて、L-02Aを、Raspberry PiのUSBポートに接続します。

ここで、lsusb コマンドを実行...。
$ lsusb
~~~
Bus 001 Device 007: ID 1004:610c LG Electronics, Inc.
というように、認識されていることがわかります。

ところで、L-02Aは、ゼロインストール機能があるので・・・
接続直後はCD-ROMドライブとして認識される仕様になっています.
$ ls /dev/sr* -la
brw--rw---T+ 1 root cdrom 11, 0 xxx xx xx:xx /dev/sr0
これですね。CD-ROMになっています。

これをEjectすることで、本来のデータカードとして認識されるはず...。
が!しかし...このままejectしても、実際にはうまく行きません。

モデムを/dev/ttyUSB*として認識してほしいところなのですが、
/dev/ttyACM*として認識されてしまいます。

こちらのページによると...。
Ejectを行ったあと、cdc_acmドライバの読み込みが行われるらしいのですが、L-02Aは情報がないため、その読み込みに失敗するそうです。


ですから、対策としてcdc_acmドライバが読み込まれないように設定しておきます。
$ sudo vi /etc/modprobe.d/cdc_acm-blacklist.conf
blacklist cdc_acm

さらに、udevでttyUSB*として認識してもらうための設定をします。
(引用元http://slashdot.jp/journal/491733/ubuntu-9.04-%E3%81%A7-docomo-L-02A-%E3%82%92%E4%BD%BF%E3%81%86 (ありがとうございます!))
$ sudo vi /etc/udev/rules.d/99-foma_l-02a.rules
# for FOMA L-02A
# USB Storage (Zero Installation)
KERNEL=="sr[0-9]*", ENV{ID_VENDOR_ID}=="1004", ENV{ID_MODEL_ID}=="610c", RUN+="/usr/bin/eject /dev/$kernel"

# USB Modem (ttyUSB)
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", ATTR{idProduct}=="6109", RUN+="/sbin/modprobe usbserial vendor=0x$attr{idVendor} product=0x$attr{idProduct}"</del>
これでL-02Aを接続しなおしてみると...。
$ ls /dev/ttyUSB* -la
crw-rw---T 1 root dialout 188, 0 xxx  xx  xxxx /dev/ttyUSB0
crw-rw---T 1 root dialout 188, 1 xxx  xx  xxxx /dev/ttyUSB1
crw-rw---T 1 root dialout 188, 2 xxx  xx  xxxx /dev/ttyUSB2
認識されましたね( ´∀`)b!

続いて、接続設定をします。

pppconfigを実行すると、テキストベースのGUIが表示されます。
$ sudo pppconfig
まずは、[Create]を選択。
尚、都合によりスクリーンショットはターミナルからSSH接続したものですw
  • Provider name:
    ponするときの名前になりますので、適当に入力します。
    ここでは、"serversman_sim100"としました。
  • Number: "*99***1#"
  • Authentication Method: "CHAP"
  • User: "user@3gd.ynmbl.net" → "user@dream.jp" (LTEへの移行にともない変更)
  • Password: "3gd" → "dti"
  • Speed: "115200"
  • Com: "/dev/ttyUSB0"
  • DNS:"Static"を選び、適当にGoogle Public DNSでも登録しておきますw
    ("Dynamic"を選んでも良いはずなのですが、何故かうまくいかなかったので・・・。)
    • Primary: 8.8.8.8
    • Secondary: 8.8.4.4
最後に "Finished"を選択して、接続設定は完了です。

あとは、ponコマンドで接続するだけです。 (ちなみに切断するときは、poffコマンド。)
$ sudo pon serversman_sim100
これで接続されます。
尚、接続中は、L-02Aのランプ(下側)が青色に点灯します。

接続できているか、確認してみましょう。
$ ifconfig -a
ppp0 Link encap:Point-to-Point Protocol
    inet addr:xx.xx.xx.xx  P-t-P:10.64.64.64  Mask:255.255.255.255
    UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
    RX packets:xxxxx errors:x dropped:0 overruns:0 frame:0
    TX packets:xxxxx errors:x dropped:0 overruns:0 carrier:0
    collisions:x txqueuelen:x 
    RX bytes:xxxxxx (xxx.x KiB)  TX bytes:xxxxxx (xxx.x KiB)
グローバルIPアドレスが割り当てられている事が確認できます。

pingも通るようならOKですね。
$ ping google.com
さらに、自動接続できるようにしておきます。
$ sudo gpasswd -a pi dip
$ vi /etc/local.d
~~~~
pon serversman_sim100

exit 0;
接続は以上です。

...おっとw サーバにしてみよう!ということでしたね ( ゚д゚)!

とりあえず、ファイアウォールの設定を。
いつも通りにiptableを直接使ってもいいのですが、Raspbianですし、手軽にufwで。
$ sudo ufw default DENY
$ sudo ufw allow 80/tcp
$ sudo ufw enable
あとは、nginxをインストールしてお茶を濁しておきます(笑)
$ sudo apt-get install nginx
$ sudo service nginx start

これで、他のPCのブラウザから、L-02Aに割り当てられたグローバルIPアドレスにアクセスすることで、Raspberry Pi上のHTTPサーバにアクセスができます!
歴としたWebサーバの完成です∩( ・ω・)∩!w

もちろん...このIPアドレスは変動しますので、一般的な自宅サーバなどと同様に、DDNS (MyDNS.jpなど)のお世話になると良いかと思います。
また、DDNSへのIPアドレス登録には、DiCEを使わせてもらってもいいのですが、今回はもっと簡単に、”数分ごとにIPアドレスの変動をチェックしてDDNSにIPアドレス登録を行う”ようなスクリプトを書きました。

あとは切断された時に自動接続するスクリプトを書いてcrontabに入れておくとか...。
perlでゴリゴリしてみるとか、Webカメラをつないでネットワークカメラ代わりにしてみるとか、何かおもしろいセンサーをつけてみるとか...
(Raspberry Piは普通にLinuxですので大概何でもできてしまいます。夢が膨らみますね(>ω<)♪ww)

※ 最後になりましたが、前もって当然のことながら、SSH等は別途必要に応じて適切に設定しておいてください。(パスワードログインを無効化して公開鍵認証にするとか、ポート変更をするとか....その他諸々。)

2013/01/09

Raspberry Pi+ModMyPi Caseが届いた

Raspberry Pi (Model B 512MB)+ ModMyPi Caseのセットを
ModMyPiで新年早々に注文しておいたのですが、今日届きました。

ケース色はブラック&オレンジのツートーンにしてみました(笑)

Raspberry Pi (Model B 512MB RAM)+ ModMyPi Case (Black / Orange)
 ModMyPi CaseにRaspberry Piをセットしてみたところ。
ぴったりです。基本的に端子類は外に出ます。(スキマも結構あります。)
天面のGPIO端子部分はカバーされていますが、取り除いてしまうことができます。
ちなみに実は、Raspberry Piが発売される前からRSコンポーネンツで仮予約だけしてあったのですが、
いざ発売が開始されたとき、ちょうどその時の懐具合でポチることができずw
みるみる納期が増えていき...気づけば数ヶ月待ちとかになっていましたねw

そんななかでMobileHackersさんのブログ記事で紹介されていたのがきっかけで知ったのが、RSコンポーネンツ以外の製造元からはもっと早く手に入れることが出来るということ。

それもあって...やっと今回入手に至ることができました(笑)
たしかにModMyPiでケースセットとして注文すると、日本でも納期ちょうど1週間で届きましたよ。

使い道は色々思いついているのですが、またぼちぼち弄って行きたいと思います。