果報は寝て待て: 1月 2018

2018年1月7日日曜日

Bluetoothモジュール HC-05 HC-06で遊ぶ

格安のbluetoothモジュールHC-05とHC-06を使い、シリアル通信を無線化してみる。
よく考えずに購入したため、このような組み合わせになった。
中国からの直送で「書留でーす」と届きます。ちょっと怪しげです。


まずHC-06の設定。
  USBシリアル変換モジュールAE-UM232RのRXDとHC-06のTXDを、 AE-UM232RのTXDとHC-06のRXDをつなぎ、GNDとGND、AE-UM232RのUSBとHC-06のVCCをつなぐ。USBケーブルをパソコンにつなぐとHC-06モジュールの赤いLEDが点滅する。
  ペアリングしてないときはATコマンドを受け付ける状態になります。
 次にパソコンのTERATERMを立ち上げ、COMを選択し、接続する。セットアップはローカルエコーをオンにし、改行を「CR+LF」にし、あとはデフォルトのまま。
    9600baud 8bit ストップビット1bit パリティなし ハンドシェイクなし

正常に接続できてれば、 AT(改行なし)と素早く打ち込めば、OKと帰ってきます。これで、モジュールが正常に動作することがわかりました。
1秒以内に打ち込む必要があり、コピーしたコマンドをTERATERMの右クリックで張り付けるとやりやすいです。
使えるATコマンドはかなり少ないです。

 AT+NAME 名前の変更ができます。使いたい名前をスペースなしで書き込みます。メモ帳からコピペします。
他に使えるATコマンドです。
 AT+BAUD  ボーレートの変更です。デフォルトは9600になってます。
 AT+PIN   デフォルトは1234です。パスワードのようなもの?
 AT+VERSION バージョン表示
 AT+P   パリティを変更する ODD:AT+PO EVEN:AT+PE NONE:AT+PN
 



ATコマンドはこれだけしかなく、設定内容の確認もできません。
そのため、ペアリングに必要な、このモジュールのアドレスも単体で表示できないためHC-05から読み出す必要があります。

設定後は
9600baud 8bit ストップビット1bit パリティODD ハンドシェイクなし
となります。

HC-05の方です。
もう一方のパソコンでHC-06と同じように接続します。
 USBシリアル変換モジュールAE-UM232RのRXDとHC-06のTXDを、 AE-UM232RのTXDとHC-06のRXDをつなぎ、GNDとGND、AE-UM232RのUSBとHC-05のVCCをつなぐ。
  HC-05の基板上の34ピンに銅線の切れ端をはんだ付けして10Kの抵抗をかまして3.3vにつなぎ、プルアップします。

 基板上のスイッチを押しながらUSBケーブルをパソコンにつなぐとHC-06モジュールの赤いLEDがゆっくり点滅する。
 これで全てのATコマンドを受け付ける状態となります。
 34ピンをプルアップしないと一部のATコマンドしか受け付けません。
 次にパソコンのTERATERMを立ち上げ、COMを選択し、接続する。セットアップはローカルエコーをオンにし、改行を「CR+LF」にし、38400baudにする。
    38400baud 8bit ストップビット1bit パリティなし ハンドシェイクなし
で通信を始めます。
 
この状態でATエンターと押してOKと帰ってきたら、HC-05のモジュールは正常に動いてます。
  次にスレーブとなるHC-06のアドレスを調べる操作に入ります。
   >AT
         OK
         >AT+ORGL  (工場出荷状態に戻す)
     OK
         >AT+RMAAD (以前のペアリング情報をクリア)
         OK
     >AT+ROLE=1 (マスターモードにする)
         OK
     >AT+CMODE=0   (どのデバイスにでも接続できる)
         OK
     >AT+INQM=0,5,9 (デバイス5台が見つかるか、又は9秒間探す)
         OK
     >AT+INIT   (プロファイルを初期化する?)
         OK
     >AT+INQ  (他のbluetoothデバイスを検索する)

         +INQ:8073:9F:CDF4B7,5A020C,7FFF
         OK
           (携帯やスマホなど周りにあるデバイスが表示されますが、どれがどれかはわかりません。)
    ここでHC-06の電源を入れて起動させます。
    再度 bluetoothデバイスを検索します。
     >AT+INQ  (他のbluetoothデバイスを検索する)

         +INQ:98D3:31:FBA23B,1F00,7FFF
          +INQ:8073:9F:CDF4B7,5A020C,7FFF
           OK

これでHC-06のアドレスが 「98D3:31:FBA23B」であるとわかりました。「,」より後ろはデバイスのモード、信号の強さとなります。  アドレスをメモします。

アドレスが判明したら1対1の通信状態にします。
   

    >AT+UART=9600,0,1  (9600baud、 0=1bit、1=ODDパリティ)
           OK


        >AT+PAIR=98D3,31,FBA23B,9  (9秒以内にペアリングできないとエラーメッセージが出る)
           OK

        >AT+BIND=98D3,31,FBA23B
           OK

        >AT+CMODE=1   (特定の1台のみペアリングする)
           OK
        >AT+LINK=98D3,31,FBA23B
           OK
これで完成です。電源を入れるだけで自動的につながってくれ、それぞれにAE-UM232Rを接続しTERATERMを起動すれば、双方向から通信できます。
HC-05の画面
HC-06の画面

 

 これも有効に活用できるよう自分なりに勉強していきます。

こんなものが送料込みで1台500円で中国から買えるというのは、すごいと思います。
日本では到底マネできないでしょう。恐るべしです。

2018年1月5日金曜日

ESP-8266で遊ぶ その3

続きです。
  では、次に両端のTERATERMをGXdeveloperと三菱A1SCPUシーケンサにつなぎ変えます。
元はこれです。

           TERATERM  (COM9 115200baud  CR+LF)

             ⇅     (COM9)

        仮想COMポート hw-vsp3

             ⇅     

                         BUFFALO WLI-UC-GNM2無線lanアダプタ

             ⇅   (WIFI)

            ESP8266

             ⇅  (UART)

           AE-UM232R  

             ⇅  (COM3)

           TERATERM  (COM3 115200baud  CR+LF)

これを以下のように変えます。
         GXdeveloper  (COM9 9600baud  8 ODD 1)

             ⇅     (COM9)

        仮想COMポート hw-vsp3

             ⇅     

                         BUFFALO WLI-UC-GNM2無線lanアダプタ

             ⇅   (WIFI)

            ESP8266

             ⇅  (UART)

          LTC485(RS422ドライバー)  

             ⇅  (RS422)

           三菱A1SCPUシーケンサ

まずGXdeveloperの設定です。
 COM9と9600baudを選択します。

仮想COMポート hw-vsp3は設定変更はなしと思います。

 BUFFALO WLI-UC-GNM2無線lanアダプタも変更不要と思います。

 ESP8266の設定書き換えです。
telnetで接続します。

115200baud 8bit パリティなし ストップビット1bitとなってるのを
9600baud 8bit パリティODD ストップビット1bitに変更します。
まず9600baudに変更です。
次にパリティをODDに変更です。

ESP8266から三菱A1SCPUシーケンサまでの回路図です。
 もともとハードウエァフロー制御するためLTC485が4個ある回路の流用ですのでCTSとRTSはショートさせてます。これのDSUB25ピンコネクタを三菱A1SCPUシーケンサにつなぎます。
 そして、PLCとESPとLTCの電源を入れ、ESPをパソコンが 認識してるのを確認し、
GXdeveloperの通信テストを実行します。
  しかし何度やっても以下のメッセージです。  
 ではどこまでが期待通りに動いてるのかです。
   ESP8266の12ピン(TXD)からは GXdeveloperの通信テストを実行毎に信号が出てます。1山100μsecくらいの信号です。9600baudのGXdeveloperの信号と思われます。しかし11ピン(RXD)からは何も応答ありません。

 1mSEC/DIVの12ピンの信号です。
DSUBの2ピンと15ピンには位相が逆になる信号が正常に出てますのでPLCまでは期待通りに振舞っているようです。

ではおかしいところです。
 PLCからのスイッチングノイズはかなりひどいです。そのせいかもしれません。PLCにDsubをつなぐとESPの電源に±0.7V位のノイズがのります。

 また、ESP8266の12ピン(TXD)から120Kbaudくらいの不可解な信号が時々出ます。(2段目)60㎳くらいの間120Kbaudくらいの信号を出した後80㎳くらいの間0.5Vくらい下がります。何度捕まえても同じ形です。
先の波形の拡大です。

50μsec/DIVです。2段目です。115200baudのようです。
ESPから勝手に何か出してるようです。
 その内にESPが黙り込みました。 パソコンから消えました。時々あります。何度か電源を入れなおして復活させます。通信テストを繰り返しますがESP8266の12ピン(TXD)から1山100μsecくらいの信号が出てますが、11ピン(RXD)からは依然何も応答ありません。
 ここでいったんテストを打ち切ります。
 ESP8266を使用してのGXdeveloper無線化は私にはまだ無理のようでした。
自分の知識と技能がアップしたときに再挑戦します。



ESP-8266で遊ぶ その2

ESP8266で遊んでます
 beckdac/ESP8266-TRANSPRENT-BRIDGE
というファームウェアを書き込んで 2台のパソコンで通信させます。
  準備
   ESP8266 
   ファームウェア beckdac/ESP8266-TRANSPRENT-BRIDGE
    AE-UM232R(USBシリアル変換モジュール)
   パソコン2台 (内1台は無線lanが使えるもの)
    仮想comポートソフト hw-vsp3

ファームウェアはしたの場所からダウンロードしてきます。
 この2つのバイナリファイルを書き込みます。

このあと一度電源を切ってからflashbootモードにして電源を立ち上げたところまたもや問題発生。パソコンのワイヤレスネットワークの選択画面で一瞬表示されて消えてしまいます。
 結局、電源の問題でした。
 1Aクラスの3.3vのレギュレータをもう1台並列にいれて正常に表示されるようになりました。それでも2.9vくらいまで低下します。 ブレッドボードの接触不良のせいかもしれませんが。

無線lanパソコンで認識している様子です。
 無線で接続した後
TERATERMを使いtelnetで192.168.4.1でポート23で接続します。
下のコマンドでokが返ってくれば接続は正常にできてます。

   +++AT MODE 3
   +++AT STA ssid password の2行を書き換えます。
ssid passwordには、無線lanのアダプタのssidとパスワードをかっこなしで書きます。

次に無線lan側のパソコンに仮想comポートを作ります。
   hw-group.comから  hw-vsp3-single_3-1-2.exeというソフトをダウンロードしてきて無線lan側のパソコンに解凍します。
   hw-vsp3の設定です。

    SETTING   チェックを全てはずす

    ポートネーム COM9
           IPアドレス  192.168.4.1(ESPのアドレス)
    ポート    23
 設定の後CREATE COMを押すと動作します。


 全体でこのようになってます。
           TERATERM  (COM9 115200baud  CR+LF)

             ⇅     (COM9)

        仮想COMポート hw-vsp3

             ⇅     

                         BUFFALO WLI-UC-GNM2無線lanアダプタ

             ⇅   (WIFI)

            ESP8266

             ⇅  (UART)

           AE-UM232R  

             ⇅  (COM3)

           TERATERM  (COM3 115200baud  CR+LF)







 無線lan側のパソコンでのTERATERMです。

 ESPをつないだ方のパソコンです。
これで双方向からのシリアル信号を相手に送れます。つまり、UARTを無線化できた事になります。
     続く。