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に表示されるところを動画に撮ろうと
思ったんだけど、スマホ使ってるから撮れず。。。(当たり前)

2012年11月28日水曜日

Android Bluetooth テスト

スマホ(Android)からBluetooth経由でマイコンを制御したくなり、
Bluetoothモジュールを購入しました。

USBシリアル変換のようなお手軽な値段のものは少なくて、
モチベーションが下がりつつあると、、、格安モジュールがヒットしました!

SzParts.com SBT1-T-S 1950円(送料350円)


早速、USBシリアル変換モジュールをかまして、PCと接続。
仮想COMポートとして認識させて、スマホ(Android)からスキャンデバイス!

検出できました~。






次はスマホとTeraTermと通信テスト。

検出できたデバイス(BTCOM-SPPB)を選択すると、
パスワードを求められるので、初期パスワードを入力。
接続OK!

BTCOM-SPPBはスレーブですが、SPPの定義ではサーバとなるみたい。
通電すると、他デバイスから検出可能な状態で待機していて、
マスター(SPPではクライイアント)から接続されると通信可能状態になるらしい。
定義が逆の感じでややこしい。。
というわけで、スマホから入力した文字がPCにBluetoothで転送できました!


さて、接続して文字の転送をしたLogCatのログを追いかけよう。。

◆UUIDをSPPに変更前(接続失敗)

E/BluetoothChat(676): - ON PAUSE -                          // DeviceList画面に遷移
D/DeviceListActivity(676): doDiscovery()                    // デバイススキャン(サーバが存在するかをサーチ)
D/BluetoothChat(676): onActivityResult -1                   // Main画面に戻る(引数にMACアドレス)
D/BluetoothChatService(676): connect to: XX:XX:XX:XX:XX:XX  // BluetoothChatService#connect()呼び出し、ConnectThreadスレッド起動
D/BluetoothChatService(676): setState() 0 -> 2              // STATE_CONNECTINGに遷移
E/BluetoothChat(676): + ON RESUME +                         // Main画面に戻るとON RESUME
I/BluetoothChatService(676): BEGIN mConnectThread SocketType:Secure // ConnectThreadスレッド開始
I/BluetoothChat(676): MESSAGE_STATE_CHANGE: 2               // ActionBarにConnectingを表示
D/BluetoothChatService(676): start                          // おそらく、connectionFailed()が実行されている
D/BluetoothChatService(676): setState() 2 -> 1              // STATE_LISTENに遷移
I/BluetoothChat(676): MESSAGE_STATE_CHANGE: 1               // ActionBarにNotConnectedを表示
D/BluetoothChatService(676): Socket Type: SecureBEGIN mAcceptThreadThread[Thread-9961,5,main] // AcceptThreadスレッド(Secure)起動
D/BluetoothChatService(676): Socket Type: InsecureBEGIN mAcceptThreadThread[Thread-9962,5,main] // AcceptThreadスレッド(Insecure)起動
E/BluetoothChat(676): - ON PAUSE -                          // DeviceList画面に遷移(以降、繰り返し)



◆UUIDをSPPに変更後(接続成功)

E/BluetoothChat(3823): - ON PAUSE -                         // DeviceList画面に遷移
D/DeviceListActivity(3823): doDiscovery()                   // デバイススキャン(サーバが存在するかをサーチ)
D/BluetoothChat(3823): onActivityResult -1                  // Main画面に戻る(引数にMACアドレス)
D/BluetoothChatService(3823): connect to: XX:XX:XX:XX:XX:XX // BluetoothChatService#connect()呼び出し、ConnectThreadスレッド起動
D/BluetoothChatService(3823): setState() 0 -> 2             // STATE_CONNECTINGに遷移
I/BluetoothChatService(3823): BEGIN mConnectThread SocketType:Secure // ConnectThreadスレッド開始
E/BluetoothChat(3823): + ON RESUME +                        // Main画面に戻るとON RESUME
I/BluetoothChat(3823): MESSAGE_STATE_CHANGE: 2              // ActionBarにConnectingを表示
E/BluetoothChat(3823): - ON PAUSE -                         // パスワード入力画面表示?
E/BluetoothChat(3823): + ON RESUME +                        // Main画面に戻るとON RESUME
D/BluetoothChatService(3823): connected, Socket Type:Secure // 接続成功
D/BluetoothChatService(3823): create ConnectedThread: Secure // ConnectedThreadスレッド起動
I/BluetoothChatService(3823): BEGIN mConnectedThread        // ConnectedThreadスレッド開始、readブロックコール
D/BluetoothChatService(3823): setState() 2 -> 3             // STATE_CONNECTEDに遷移
I/BluetoothChat(3823): MESSAGE_STATE_CHANGE: 3              // ActionBarにConnectedとDevice名を表示、チャットクリア
                                                            // (以降、READ/WRITEでチャット可能)



ふぅ。。サンプルのBluetoothChatの動きは把握できたかな。。寝よ。。

2012年11月24日土曜日

Raspberry Pi 到着編

2012/11/21 到着!





3週間ぐらい、かかりました。

とりあえず、2012-10-28-wheezy-raspbian.zip をmicroSDカードに、
Win32DiskImager.exe を使って焼きこみ、Raspbian 起動しました!

pIO という microSDカードアダプタ も購入したので、出っ張りなくスッキリ。
あと、スマホ用モバイル電源で無事動作しました。
これでモバイルで遊べます。

ほとんど順調でしたが、一点、reboot した後、bluetoothキーボードが
認識しないようです。。

お家の50インチプラズマテレビVIERAしかHDMIがないのですが、
イチイチ接続するのが面倒なので、ほとんどはSSH経由の使い方になりそうです。

オーバークロックの設定を忘れてました。。あったかな?

2012年10月31日水曜日

Raspberry Pi 準備編

[購入]
  ・RSオンライン:届くまでに時間かかるらしい
  ・ModMyPi:ケース付きだがすぐに届くらしい

[準備物]
  ・Raspberry Pi本体
    - 2012/10/27(土):ModMyPiにて、4,677円(34.98ポンド)
      ⇒キャンセル
    - 2012/10/29(月)
      ・Raspberry Pi and ModMyPi Case (512MB RAM):29.99ポンド
       ※Case Top Colour:White、Case Bottom Colour:White
      ・pIO - Raspberry Pi microSD Card Adaptor:6.24ポンド
      ・送料:4.99ポンド
      ☆合計:41.22ポンド(5,503円)
  
  ・ACアダプタ:MicroUSB(スマホ用で代替可能?)、最大出力700mA推奨
    - スマホ用単三電池4本用アダプタにエネループを入れて動作した報告あり
    - スマホ用モバイル電源
     (Panasonic USBモバイル電源パック リチウムイオン 5,400mAh 黒 QE-QL201-K)
     で7.5時間動作報告あり
    ☆Panasonic 無接点対応USBモバイル電源 QE-PL202(3,487円)
  
  ・SDカード(Webで確認済みのもの):16GB(Class10)
    ☆microSDHCカード 8GB Class10 TS8GUSDC10 Transcend アダプタ無し(680円)
    ☆microSDHCカード 8GB Class10 TS8GUSDHC10 Transcend アダプタ付き(780円)
  
  ・USBキーボード&マウス:一体型を検討中
    - ELECOM:トラックボール付きワイヤレスキーボード
     2.4GHz ブラック TK-FDP021BK(3,436円)
      ⇒単4x2、Fnキーでチルト機能あり
       (フリーソフト WheelBell で、速度調整と左右スクロールが可能)
    ☆LOGICOOL ワイヤレスタッチキーボード unifying対応 K400(2,945円)
      ⇒単3x2
       (LOGICOOLのほうが押しにくそうだが壊れにくそう、あと単3)
   
  ・USBメモリ
    ☆8GB USB2.0 JetFlash530 TS8GJF530 Transcend(590円)
  
  準備物合計額:13,985円
  
[スペック(Model B)]
  ・プロセッサ:Broadcom BCM2835
   (ARM11(ARM1176JZF-S)/700MHzコア、FPU、GPU搭載)
  ・グラフィック:OpenGL ES 2.0、OpenVG 1080p30 H.264エンコーダ/デコーダ
  ・メモリ:256MB → 512MB(rev2)
  ・ストレージ:SDカード
  ・映像出力:HDMI(最大1920x1200)、コンポジットビデオ(RCA)
  ・オーディオ出力:HDMI、3.5mmステレオ
  ・USB×2
  ・Ethernet(RJ45):10/100BaseTイーサネット
  ・大きさ:86×54mm
  ・消費電力:3.5W
  ・OS:Debian、Fedora、Arch Linux
    
  ※Model Bは35ドル版と呼ばれ、Model AはRJ45省略、USB1ポートのみで25ドルの予定
  ※OSはDebianベースでRaspberry Pi用に最適化されたwheezyがリリースされている

[最初の起動]
  ・公式サイトからOSイメージをダウンロード
    - http://www.raspberrypi.org/downloads
    - SHA-1値を求める
     $ shasum XXX
   
  ・イメージ書込みツール
    - 公式サイトより:Win32DiskImager
  
[オーバークロック]
  ・簡単に1GHzにクロックアップできるらしい(2012-09-18-wheezy-raspbian以降)
  
  ・Raspi-configでオーバークロックを選択した場合にでも、
   Shiftキーを押しながら起動すると低クロックで起動する

2012年9月2日日曜日

ジョギング 11回目(2012/09/02)

万博前の上り坂はシンドイなぁ。。
7.5kmぐらい。徒歩込みで、9.7km。

2012年8月18日土曜日

ZigBee SH-2A XBee APIモード

SH-2AからUARTでXBeeをAPIモードでコントロールする。

UARTなので、電源、GND、TxD(toDIN)、RxD(toDOUT)の4本で接続。

X-CTUで予めAPIモードに設定しておく。





 
-----------------------------------------------------------------------
2012/08/18

APIモードで、以下のようなことが可能。
  • シリアル(UART)で接続しているXBee(以下、ローカルXBeeとする)の情報(64bitアドレス、16bitアドレス、ポート情報など)を取得、情報の変更、設定の書込みができる
  • シリアルで接続しているXBeeと同じネットワーク(同じPAN ID)に参加している他のXBee(以下、リモートXBeeとする)のローカルXBeeと同じ情報を取得、情報の変更、設定の書込みができる
  • リモートXBeeのポート(デジタル入力、デジタル出力、アナログ入力)を制御できる
  • ローカルXBeeと同じネットワークに参加している他のリモートXBeeの情報が取得できるが、リモートXBeeの位置情報(親の16bitアドレス取得可能、16bitアドレスから位置情報を抽出できる?)も取得可能?
  • データ(バイナリ?)の送受信が可能

以下、まだよく分かってないところ
  • APIモードで、"WR"や"FR"など非同期で時間のかかるAPIの終了を知るにはどうしたらいいか?
  • APIモードで、"FR"は長い時間待っても、モデムステータスが返ってくる、仕様?

2012年8月5日日曜日

ジョギング 8回目(2012/08/05)

今日は違う道から万博に向かった。

歩き始めたところの活動量計は、37分、4.7km
GoogleMapでは通れないところを通ったので計測不可。。。
大回りで6.0km、ズレは21.7%、14%のズレとすると、5.5km。

2012年7月29日日曜日

ジョギング 7回目(2012/07/29)

今日はヒサビサに万博一周コースに行ってきました。
万博までが遠い。。

歩き始めたところで活動量計を見ると、30分、4.2km
Googleマップで見ると、4.9km、ズレは14.3%
前回のズレも13.5%なので、ダイタイ一定してるかな。。

2012年7月27日金曜日

ZigBee 再立上げ

かなり放置してたXBeeですが、良い本を入手したので、再立上げ
まず、起動確認。

シリアルの設定忘れた。。いろいろやって、結局9600bps

とりあえず、メモ

2台あるうちのこいつはSerial Numberの下2桁がEA
以前のキャプチャ画像を見ると、もう1つの下2桁はFA



◆ユニバーサル基板のXBee(XB1とする)
  • タイプ:XBP24BZ7
  • firmware version:288C
  • ユニバーサル基板
  • Serial Number:13A200406F4BEA
  • シリアルのボーレート:9600bps
  • ZIGBEE END DEVICE AT


(XB1のModem Configuration)
PAN IDを0から7に変更した。Modem Configurationでは、変更した属性は青字になるらしい。
緑と黒は???




◆ブレッドボードのXBee(XB2とする)
  • タイプ:XBP24BZ7(同じ)
  • firmware version:208C
  • ブレッドボード
  • Seral Number:13A200406F4BFA
  • シリアルのボーレート:9600bps
  • 設定:ZIGBEE COORDINATOR AT

(以前)
(今回 ※バージョン下がった?)

(XB2のModem Configuration)


今日はココまで。。。


 -----------------------------------------------------------------------
2012/07/26

今日は Associated Indicator として、赤いLEDを接続しました。

・COODINATORの場合、1秒間隔で点滅
・ROOTERの場合、0.5秒間隔で点滅

らしいです。
確かに1秒間隔っぽかったです。

回路図アップ



2012年7月17日火曜日

RX62N/SH-2A RS232C通信

PCと通信(RS232C)したい。うちのPCにはシリアル(RS232C)が付いてないので、以下の部品を使用した。

USBシリアル変換モジュールのジャンパ設定が分かりにくかったので、メモ。
  • J1:1-2間ショートすると3.3V、2-3間をショートすると5V
  • J2:ショートするとUSBバスから電源供給、オープンだと外部から電源供給
RX62Nは3.3Vであり、外部(RX62Nとか)から電源供給してもいいけど、接続しているUSBバスから供給が楽チン。というわけで、J1は1-2間ショート、J2はショートの設定。

とりあえず、9600bpsの設定で動作確認。




送信は確認できました。受信はデバッガのレジスタに値がセットされているのが確認できました。

簡単そうに書いてるけど、実は意外に時間かかりました。RX62Nのシリアルの設定で、シリアル受信許可とシリアル送信許可のレジスタビットがあるんだけど、片方ずつセットすると後にセットしたほうが反映されない。ハードウェアマニュアルを見ると、注:とかって小さく書いてる。。。分かりにくい。。

動画が見えにくかったので再アップ。

回路図(というほどのものではない)を作ってみたのでアップ。


-----------------------------------------------------------------------
転送レートを、
  • 9600bps
  • 19200bps
  • 38400bps
  • 57600bps
  • 115200bps
  • 230400bps
  • 460800bps
  • 921600bps
と、順番にあげてみました。
すると、460800bps、921600bpsで文字化けするようになりました。


FT232RLのマニュアルには300kbps~460kbpsとあったので、まぁ妥当かな。
230400bps(230kbps)を使うようにしたいと思います。

-----------------------------------------------------------------------
2012/1/2
前々からターミナルの文字に色が付けれたらと思ってました。
Linuxで使うときは色が付けれるのだから、可能なはず、と思い、ググッてみると、ありました!


(1) エラーの場合は赤い背景色に白文字にしました。
(2) 時間計測の結果は青い背景色に白文字にしました。

ちなみに、画像のエラーはSDカードがVer2.00に対応してないため、CMD8でillegal commandが返ってくるので、問題があるわけではありません。また、時間計測については、初期化が59msだったことを示します。

さて、やり方ですが、
VT100仕様のエスケープシーケンスを文字列の先頭に加えるだけです。
(1)の場合は、"\x1b[44m\x1b[37m"を先頭に加えます。
(2)の場合は、"\x1b[41m\x1b[37m"を先頭に加えます。
それぞれ、デフォルトに戻すときは(改行の手前とかに)"\x1b[0m"を入れておきます。

詳しいエスケープシーケンスについてはググると出ます。
参考にさせてもらったサイト:http://www35.atwiki.jp/futoyama/m/pages/98.html?guid=on


-----------------------------------------------------------------------
2012/7/15

460800bpsで文字化けしてた件ですが、FTDI社のFT232Rや、FT232Hはボーレート変換を変更できるようです。
Windowsでは921600bpsが最高のボーレート設定ですが、そもそも、その設定(名)に対して自由にボーレートを割り当てることができます。
FTDI社提供のWindowsのドライバの中に、ftdiport.infというファイルがあり、その内容を改変することで、速いボーレートを設定することができるようになります。
そもそも、460800bpsで文字化けしていたのは460800bpsという設定と、マイコンのボーレートが合わないためでした。
とりあえず、1500000bps(1.5Mbps)、3000000bps(3Mbps)が設定として簡単なので、やってみました。
見事、1.5Mbpsでのシリアル通信に成功しました。USBのデバッグでフルでログ出力しても遅くなりません!
詳しくはFTDI社のHPでAN232B-05_BaudRates.pdfというファイルがダウンロードできるので、それを参照。。

2012年7月16日月曜日

SH-2A LAN

LANしたくなったので、モジュールを載せました。

  • ユニバーサルLANモジュールキット AX88796搭載(LF-A1-K) 2940円
  • スペーサー 50円ぐらい x2
  • ソケット 2列x7、2列x13 それぞれ50円ぐらい
外部バスの半田付けはまた来週。。

2012年7月15日日曜日

ジョギング 6回目(2012/07/15)

今日はイズミヤに向かって走りました。
Le Sucre-Coeur ル・シュクレ・クール 前まで行って、戻ってきました。
30分超えて走り続けるのは大変やなぁ。。。

歩き始めたところで見ると、32分、4.5km
Googleマップでルート検索すると、5.2km
結構ズレがあるなぁ。しかし、Googleマップはすごいなぁ。

2012年7月7日土曜日

ジョギング 5回目(2012/07/07)

今回は前回と逆周りで街をぐるっとまわりました。
ミリカヒルズの新しい道を走りました。
前に、イオンが出来るって言うてたなぁ。

2012年7月1日日曜日

SH-2A USB SDカード R/W

GWの成果、その2です。

RX62Nで実現してたUSB SDカード R/WをSH-2Aにも適用しました。エンディアンの違いの吸収など少し手こずりましたが、ワリとあっさりできました。

とりあえずドライブ認識、ファイルのリード/ライトなどはできてますが、いくつか残課題が残ってますので、列挙。

  • SH-2AはHighSpeedに対応してますが、現状はFullSpeedに設定(RX62NはFullSpeedのみ対応)
  • ドライブ認識はするのですが、Windows上でいつものバルーンが出ません。。理由不明。
  • 1回目は普通に動作するけど、デバッガ止めて、ビルドし直して、再スタートさせたとき、再認識しない。RX62Nでは再認識したような気が。。D+プルアップの解除のやり方が悪いかな。。
  • RX62Nでも実現してなかった機能だけど、SDカードの挿抜検出ができない。
  • 同じくRX62Nでも実現してなかったUSB FIFOのデータ転送のDMA化。
  • RX62Nで修正しきれなかった不具合の対策で、バルク転送中のコントロール転送の取り逃し不具合。SH-2Aではまだ発生してないけど修正してもない。
  • CrystalDiskMarkの計測と、速度改善。
少しずつ対応していきましょ。

-----------------------------------------------------------------------
2012/07/01

更新を怠ってましたが、USB R/Wの速度改善してました。

まず、USB R/Wは当然ですがUSBを使用します。
デバッガのI/FとしてUSBが使えないので、シリアル(UART/RS232C/SCIF)を使用したデバッガI/Fを使用しています。
また、SH-2Aは高速内蔵RAMを使わないと遅くなるのですが、SCIF版のデバッガでは高速内蔵RAMを使用すると暴走します。。
その解析をしてました。ある程度解決したので、ようやく速度改善できました。

CristalDiskMarkを使って計測したかったのですが、あまりにUSB R/Wが遅いため、完走までにめちゃめちゃ時間がかかる。。(10分くらい。。) ので、HDBENCHで実施とします。

  • 改善前 : R:155KB/s、W:111KB/s、C:126KB/s
  • USB HighSpeed対応 : R:312KB/s、W:249KB/s、C:231KB/s
  • USB FIFOサイズ64byte→512byte : R:542KB/s、W:382KB/s、C:313KB/s
  • ReadのみUSB側のDMA対応 : R:753KB/s、W:400KB/s、C:391KB/s
  • USB BUSWAIT最適化 : R:953KB/s、W:452KB/s、C:442KB/s
  • SDとUSB間の内部バッファ5KB→64KB : R:1089KB/s、W:669KB/s、C:534KB/s
  • 計測用のシリアルログ無効化 : R:1290KB/s、W:1167KB/s、C:797KB/s




USBのDMAはRead側のみ対応してます。Write側の対応はこれから。。。面倒。。
一応、CrystalDiskMarkの結果も貼り付け

2012年6月30日土曜日

ジョギング 4回目(2012/06/30)

今回は住んでる街を一周する感じで走りました。
確か40分ぐらいは走った気がします。
アップダウンがきつい。。

2012年6月23日土曜日

ジョギング 3回目(2012/06/23)

今回は最寄り駅の100均まで走り、買い物して、お家まで走りました。

『行き』


ちょっと頑張りが足らなかったので、

『帰り』


2012年6月16日土曜日

ジョギング 2回目(2012/06/16)

ジョギング2回目です。
今回からヴァームを投入です!
あと、オムロンの活動量計も購入です!

オムロン (OMRON) 活動量計 Jog style ファインイエロー HJA-300-Y
1380円です。

今回は万博の外周まで行き、、、




歩き、走り、歩き、で一周まわりました。
超シンドイ。。

2012年6月9日土曜日

ジョギング 1回目(2012/06/09)

運動不足のため、走ることにしました。
まずはお家の周りを。。
し、しんどい。。
30分もしないうちにバテバテです。100均行ってお菓子買って帰りました。

2012年5月5日土曜日

SH-2A MP3再生

GWの成果です。
Interfaceの記事とソースコードを参考に、FatFsベースに構築したファイルシステムと、オープンソースのMP3デコーダのlibmadを使って、SH-2AでMP3再生ができました。

MP3は1152サンプル(ステレオだと×2サンプル)を1フレームと扱ってますが、1フレーム毎にSDカードからFAT経由でデータを読み出し、大容量RAMに展開(DMA転送)。libmadに1フレーム単位でデータを入力し、libmadからの1サンプル(ステレオで×2)毎の出力をSH-2AのPWMのデューティに設定し、PWM出力(ステレオ2ch)をステレオミニジャックを通して、イヤホンでMP3の音楽を聞けました!

PWMのデューティ設定って結構アバウト(44.1KHzは1サンプルで22.7usだけど、8bit分解能だと10.7us)だし、ボヤッとした音かと思いましたが、めっちゃ普通に音出てます!普段通勤時に聞いてるMP3プレーヤとそんなに変わりはありませんでした!

久々にマイコン動かしてて達成感がありました。

 写真の上ちょっと右に写ってる半固定抵抗が左右のボリュームです。その下に見えるのが、秋月で購入したステレオミニジャックです。

 -----------------------------------------------------------------------
2012/05/5

イヤホンではイマイチ動いてる感じがしないので、スピーカーを繋いでみました。秋月で150円、250円で売ってるスピーカーなので小さいのかと思ったら、エライでかい。。常時接続は重いし、持ち運び不便なので、もう使うことないかも。。。
というわけで、記念に動画をアップです。

2012年5月4日金曜日

SH-2A 基板

RX62N基板に続き、SH-2Aの基板作成を進めています。
今回はRX62N基板の時に失敗したなと思ったところを改善したつもりでしたが、 新たな失敗も多いです。
そこで、次回の基板作成時に向けて、改善点をメモっていきます。

  • ユニバーサル基板の4隅にスペーサーを付けてますが、どっかのサイトで、スペーサーを逆に(半田面ではなく部品面)付けて半田作業するとやりやすい、って書いてあって、なるほど!と思ったんですが、今回はギリギリに配置していて、スペーサーとマイコン基板と干渉してスペーサーを逆に取り付けは不可でした。。4隅のスペーサーは逆向きにも付けれるように考慮すること!!
  • 今回はギリギリに配置しているのですが、回路図も書かずにどんどん半田付けしていると、部品を配置する空間が無くなったケースが多かったです。。ちゃんと回路図書いてから半田付けすること!!(今回の回路図を遅ればせながら書き始めました)
  • SDカードスロットの半田付けは今回で3回目。。いい加減、飽きてきました。再利用できるモジュールはフラットケーブルなどで接続して使いまわせるようにする!!
  • SH-2Aマイコン基板のコネクタCN1、CN2、CN3を全て半田付けして基板に接続するとナカナカ抜けない。。新しい部品つけるときにブレッドボードで簡単にテストしてから半田付けしたいのですが、ナカナカ抜けないので、半田付けしてみてテストという場当たり的なやり方に。。RX62N基板の時はそこを考慮して連結フレームを使用していたのですが、今回は普通のソケットを使用。やっぱり連結フレームにしておけばよかった。。しかし、2x20を2列並んでるところは連結フレームにすると真ん中2列の配線はどうすればいいのか。。
  • 今回はMP3再生を実現するので、3.5mmミニジャックDIP化キットを使用しているのですが、再利用するための丸ピンソケットを準備してなかったため、2ピンが浮いたままに、、おまけに予備の普通のソケットを使ったため、ユルユル。。安定しない。。3.5mmミニジャックDIP化キット用に丸ピンソケットを準備すること!!
  • MP3再生のボリュームを調整するのに半固定抵抗を使用したのですが、ボリュームを調整するのにマイナスドライバを使用するのが面倒。。ちゃんと手で回せるボリュームを使用すること!!
回路図をアップします。

2012年5月1日火曜日

SH-2A SDカード制御

久々の投稿です。

RX62NでMP3再生を試みたのですが、オープンソースのソフトデコーダではRAM64KBはキツイ。。
ROM化など、少し頑張ってみたものの、デバッグできないのもキツイ。。

というわけで、SH-2Aに乗り換えです!(同じくInterface付録 ※2010年6月号)
更新が滞ってた主要因は新しいマイコンの立上げです。

ようやくSDカードアクセスが動くようになりました。






マイコンのクロックはRX62Nの96MHzから144MHzに上がってるのに速度落ちました。。
SPIモード、SDクロック24MHzでRead1.6MB/sです。
SH-2Aはキャッシュが付いてるけど、オフになってるとかかな。。

-----------------------------------------------------------------------
2012/05/1

SH-2Aは高速内蔵RAM64KB(CPUアクセス144MHz1サイクル、DMA 48MHz2サイクル)と、大容量RAM(CPUアクセス、DMAアクセスともに48MHz1サイクル)があります。
キャッシュは144MHz1サイクルなので、うまく使うとパフォーマンスを上げることができます。
スタック、グローバル変数、SDカードR/Wプログラムコードを高速内蔵RAMに配置し、SDカードアクセス(SPI)と大容量RAM(非キャッシュ)間をDMAで転送すると、Read約2.2MB/sまで上がりました。

2012年3月22日木曜日

RX62N 100均ケース

毎回、100均のケースにしまうのも面倒で、かといって、出しっぱなしは小さな子供がいる家庭では無理だし、すぐホコリだらけに。。
(電子ではないけど)工作しました。 ※ただ切っただけ



ケースに入れたままデバッグ可能!!
人間というのは楽をするために進化した動物であることを実感しました。

2012年3月13日火曜日

RX62N USB SDカード R/W

2012/02/12

SDカードのアクセスができるようになったので、USBでR/Wを作ることにします。

RX62NでUSBのデバドラ作ってました。USBはポピュラーだけど、初めてだとなかなか難しい。。
USBのデバイス側(ファンクション、ターゲット)で、ようやくPCで認識され始めました。
まだ、MassStorageClassのコマンドが飛び始めたところ。

サポートが必要なSCSIコマンドは、、
  • Inquiry
  • Request Sense
  • Test Unit Ready
  • Read(10)
  • Read Capacity
  • Write(10)
らしい。 これなら、全部経験あるし、意外と簡単にできるかも。

 あとは、この6つのSCSIコマンドを、SDコマンドに変換してやればいいかな。

もし非対応のSCSIコマンドがとんできたら、そのコマンドのCSWでbCSWStatus=0x01(command failed)を返し、
直後のRequest SenseでILLEGAL_REQUEST(0x05) - ASC_INVALLID_COMMAND_OPERATION_CODE(0x20)のsense dataを返せばいいらしい。

HEWのリモートデバッガとして通常USBを使っていたのですが、今回RX62NのUSBポートを自分で使うために、シリアル(SCI)を使ったリモートデバッガに切り替えました。コマンドやログ出し用にシリアルを使っていたので、計2つのシリアルを使うことに。

USB-シリアル変換(FT232RL)を2つ使って、さらに通常のUSBポートで計3つのUSBを使用してます。
USBハブがいっぱいになりました。。

-----------------------------------------------------------------------
2012/02/18
進捗悪い。。
ひとまず、デバッグ用のツールをメモ。

USBDeview.exe:
  • Windowsに保存されてるUSBデバイスを全て表示してくれる
  • 各デバイスの詳細な情報(VenderID、ProductID、クラスID、サブクラスIDなど
  • 過去に接続されたUSBデバイスもWindowsは記憶していて、同じシリアルナンバーだとうまく認識してくれないが、その履歴を削除できる

Windows Driver Kit 7.1.0(USB device viewer)
  • Windowsのデバイスドライバ開発ツール
  • その中のToolsにUSB device viewer(UVCview.exe)で、Windowsがどう認識してるかを表示するツール
  •  Full Development Environmentの中のToolsにチェックを入れてインストール
  • 現状、LowSpeedと認識してるらしい。。。ことが分かりました。 ← 間違いでした。認識できないデバイスの場合、最後はWindowsがあきらめて、LowSpeed(デフォルト?)として記憶しているだけでした。認識中に更新かけるとFullSpeedと認識してました。


現状分かったことについてメモ
  • iSerialNumberが必要
  • LUNは0で返せばよい(Windowsは複数LUN未サポート)
  • Windows標準のドライバ(インボックス・ドライバ)で認識させるには、bInterfaceClass:0x08(Mass Storage Class)、bInterfaceSubClass:0x06(SCSI)、bInterfaceProtocol:0x50(BOT)とすればよい
  • USBデバイスを接続してからWindows標準ドライバ(C:\Windows\system32\usbstor.sys)がインストールされる過程が、C:\Windows\setupapi.logに記録される

-----------------------------------------------------------------------
2012/03/03
相変わらず、進捗悪いです。
なんとかWindowsに認識してもらえるようになりましたが、まだ正しく認識されません。。

-----------------------------------------------------------------------
2012/03/11
ようやく、WindowsXPに正しく認識されるようになりました!
このバルーンに「RX62N R/W」と出てますが、これはDescriptorのiProductに設定している文字列です。
いやぁ、SDカード制御に比べて、めちゃ長かったです。。
容量も正しく認識してる、と思います。

ちょっと容量の大きなファイル(PDF)をSDカードに書き込んで、
表示させてみました。正しくファイルが読めてます。
やはり、WindowsXPは最大128セクタ(64KB)を単位に読みにきます。
一部のログを公開。
あと、ハードウェアのプロパティを見てみると、「Micro RX62N SD R/W」と表示されてます。
これは、SCSIコマンドのInquiryで設定した文字列が使われるようです。


さて、連続Readは問題なくできたぽいので、次は連続ライト、フォーマットに挑戦です。

-----------------------------------------------------------------------
2012/05/1

しばらく更新を怠ってましたが、↑の後、ちょこっとバグ直したらあっさりライト、フォーマットも動きました。CristalDiskMarkも動かしてみましたが、一応動くのは動いたのですが、あまりに遅く。。。
速度改善でDMAを使ってみたりしましたが、RX62NはRAMが少なく、SH-2Aに乗り換えました。
USB R/Wは完成ということで。