2012年12月16日日曜日

Raspberry Pi インターネット接続編(無線LAN or LANクロスケーブル)

LANケーブル(クロス) と、無線LANアダプタ PLANEX:GW-USValue-EZ が届きました。

下の写真のようにシンプルな構成で動作できました。


いろいろ試行錯誤があったので、メモ。
あと出来てないのは、
スマホのテザリングを使って無線LANアダプタでインターネット接続。

  [LANクロスケーブル接続]
    ・スマホのテザリングを使ってインターネット接続
     インターネット - スマホ(テザリング) - ノートPC(WinXP) - LANクロスケーブル - Raspberry Pi
    
    ・固定IP設定
     $ sudo nano /etc/network/interfaces
     
     変更前
     > iface eth0 inet dhcp
     
     変更後
     > iface eth0 inet static
     > address 192.168.0.24
     > netmask 255.255.255.0
     > gateway 192.168.0.1
     > dns-nameservers 192.168.0.1
    
    ・設定反映
     $ sudo /etc/init.d/networking reload
      ⇒SSH接続OK
    
    ・WinXP側の設定
      - "ネットワーク接続"でテザリングの"ワイヤレスネットワーク接続"のプロパティで"詳細設定"
      - インターネット接続の共有で"ローカルエリア接続"を選択
      - "ネットワーク接続"で"ローカルエリア接続"のIP設定を以下のようにする
       > Ethernet adapter ローカル エリア接続:
       >
       >         Connection-specific DNS Suffix  . :
       >         Description . . . . . . . . . . . : Realtek RTL8139/810x Family Fast Ethernet NIC
       >         Physical Address. . . . . . . . . : XX-XX-XX-XX-XX-XX
       >         Dhcp Enabled. . . . . . . . . . . : No
       >         IP Address. . . . . . . . . . . . : 192.168.0.1
       >         Subnet Mask . . . . . . . . . . . : 255.255.255.0
       >         Default Gateway . . . . . . . . . :
    
    ・例としてetckeeperをインストールするまでの手順
      - SSHでRaspberryPiに接続
      - インストール
       $ sudo apt-get update
       $ sudo apt-get install etckeeper
       ※最初からgitが有効になっていて初期コミットも行われた
        /etc/network/interfaces だけは変更済み、バックアップは ~/backup_etc/interfaces に置いてある
  
  [無線LAN]
    ☆PLANEX:GW-USValue-EZ
    
    ・家のルーターで無線LANインターネット接続
     インターネット - ルーター(WHR-AMG54) - 無線LANアダプタ(GW-USValue-EZ) - Raspberry Pi
    
    ・ドライバがロードされているか確認する
     $ lsusb
     > Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
     > Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
     > Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
     > Bus 001 Device 004: ID 2019:ed17 PLANEX GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS]
    
    ・ネットワークを確認
     $ ifconfig
     > eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
     >           UP BROADCAST MULTICAST  MTU:1500  Metric:1
     >           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
     >           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
     >           collisions:0 txqueuelen:1000
     >           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
     >
     > lo        Link encap:Local Loopback
     >           inet addr:127.0.0.1  Mask:255.0.0.0
     >           UP LOOPBACK RUNNING  MTU:16436  Metric:1
     >           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
     >           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
     >           collisions:0 txqueuelen:0
     >           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
     >
     > wlan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
     >           UP BROADCAST MULTICAST  MTU:1500  Metric:1
     >           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
     >           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
     >           collisions:0 txqueuelen:1000
     >           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
    ・アクセスポイントを検索
     $ sudo iwlist wlan0 scanning
      ⇒ESSID:"XXXXXXXXX"発見
    
    ・普通に/etc/network/interfacesに設定を書く場合
      - エディタ起動
       $ sudo nano /etc/network/interfaces
       > allow-hotplug wlan0
       > auto wlan0
       > iface wlan0 inet dhcp
       >         wpa-ssid "XXXXXXXX"
       >         wpa-psk "XXXXXXXX"
       >         dns-nameservers 192.168.0.1
      
      - インタフェース再起動
       $ sudo ifup wlan0
      
      - 確認(家のルータの場合)
       $ sudo ifconfig
       > wlan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
       >           inet addr:192.168.0.17  Bcast:192.168.0.255  Mask:255.255.255.0
       >           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
       >           RX packets:183 errors:0 dropped:189 overruns:0 frame:0
       >           TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
       >           collisions:0 txqueuelen:1000
       >           RX bytes:27701 (27.0 KiB)  TX bytes:7081 (6.9 KiB)
        ⇒認識してインターネット接続もOK!
         SSH接続もOK!
         再起動して再SSH接続もOK!(やっとシリアル外せる。。)

2012年12月13日木曜日

Raspberry Pi シリアル接続編

いちいちHDMIで50インチテレビに繋ぐのも面倒なので、以下のものを注文。

    ・LANケーブル(クロス)
      - ☆LOAS LTC-6FR01W カテゴリ6クロス(ホワイト) 1m (417円)
    
    ・無線LANアダプタ
      - ☆PLANEX:GW-USValue-EZ (1,104円 11n/g/b対応、150Mbps)
    
    準備物合計額:13,985円 + 417円 + 1,104円 = 15,506円

届くまでは、シリアルで接続しておきましょ。




TeraTerm (115200bps)で接続した状態で電源オン。

ブートログが表示されたあと、ログイン待ちで、ID:pi、PASS:raspberry でログインOK。



普通に何でもできます。raspi-config もOK。

しかし、ネットワークが無いと何もインストールできん。。

ハブ出すのが面倒なので、無線LANアダプタ届くまではシリアルにしとこ。。

冬はコタツから出られませんね。。

Android インストールしたいなぁ。

2012年12月3日月曜日

Android USB(ホスト)シリアル to SH-2A

前回の
 AndroidのBluetooth → Bluetoothモジュール → UART → SH-2A → キャラクタLCD
のBluetoothのところを、

AndroidのUSBホスト機能を使ったUSBシリアルで、
 AndroidのUSB(ホスト)シリアル → USBシリアル変換モジュール(FTDI) → UART → SH-2A → キャラクタLCD
もできました。

◆家で使ってる無線マウスをUSBホストケーブルでスマホ(Android)に接続
 ※スマホで写真を撮ってるのでスマホは外してます(当たり前)
 ※MicroUSBの先にスマホを接続します



◆スマホ(Android)のUSBホスト機能を使って、マウスが使えました
  ⇒ スクロール機能も使えて、なかなか使える感じでした



◆スマホ(Android)にUSBホストケーブル経由でUSBシリアル変換モジュールを接続したときのキャプチャです(アプリのManifestでUSB接続を許可する必要があります)



◆BluetoothChatアプリにUSB(ホスト)シリアルのRead/Write機能を追加してSH-2AにASCIIコードを送ったところ
 ※こちらも同じくスマホで撮ってるのでスマホは外してます(当たり前)
 ※MicroUSBの先にスマホを接続します





Androidアプリの作り方は、以下な感じです。
BluetoothChatアプリにFTDriver(ライブラリ)をインポートしました。
あとはFTDriverに付属のサンプルアプリの一部を切り貼りでBluetoothChatアプリにポーティング。

かなり適当に実装しましたが、案外簡単に動きました。
Androidのすごいところは、適当に実装しても、それなりに動いてしまうところですね。。

では、動作確認も出来たことだし、まじめにJavaのクラス設計でもマタリしますか。。


Android Bluetooth to SH-2A

SH-2AにBluetoothモジュールを接続(UART)して、
受け取ったASCIIコードをキャラクタLCDに出力してみました。


◆AndroidのBluetoothChat(サンプルアプリ)の改造版



◆受け取ったSH-2A、Bluetoothモジュール、キャラクタLCD



キャラクタLCDは、RX62Nでは8bitモードで使ってたんだけど、
今回、半田付けが面倒ということで、4bitモードにしてみました。
初期化あたりが少し違ってて、意外と手間取りました。。

Android BluetoothChatアプリから文字列を打ってSendボタンを打つと、
Bluetooth経由でSH-2AのUARTで受信して、それを1行ずつキャラクタLCDに表示しているだけです。

これで、スマホからBluetooth経由でコマンド打てば、マイコンを操作できます。

本当はスマホで文字列打ってるところと、キャラクタLCDに表示されるところを動画に撮ろうと
思ったんだけど、スマホ使ってるから撮れず。。。(当たり前)