2013年09月

 
 
調子に乗って5個も作ってしまいました。
それぞれケーブルの長さが違ったりしていますが。
中の回路はみな同じです。
a704d5d1.jpg

 
8c433bd4.jpg

 
このUSB仕様の特徴、
1.当たり前ですが、パソコンにRS-232Cが無くても、USBがあれば使える。
2.RS-232C仕様よりも小型化した。でもケースの強度が少し不安。
  もし販売するときは、補強の為にエポキシ接着剤を充填して固めた方が良いかも。
3.ケーブルをUSBに接続して、正しく認識されていれば。
  PORT番号を自動で探すので、ユーザーはPORT番号を気にしないで使える。
4.回路の信号処理のタイミングは、RS-232C仕様よりもゆとりをもって動いている。
  RS-232C仕様は電源の都合で、かなりトリッキーな処理をしていた。
5.部品代はRS-232C仕様よりも安くなった。でも半田付けの工数は増えた。
  表面実装のICの半田付けが、私の眼ではとても大変。
7393d0c8.jpg

 
d75ffcea.jpg


 

FT232RLはFTDI社のMProg.exeを使うと、内部のSERIAL NUMBERとPROUCT DESCRIPTIONとVENDOR IDとPRODUCT IDを自由に書き換えできます。
これを自分のオリジナルの値に書き換えて。パソコン側からその値を認識すれば。
USBにFT232RLが繋がっているか識別できると考えました。
 
ちなみに私はDELPHIを使ってパソコンのプログラムを作っています。
DELPHIで、USBに繋がっているUSB-SERIAL変換の詳細を調べるのはなんとかできました。
正直なところ、このプログラムの細かい意味は解りません。
ネットで集めた情報をつぎはぎしたらなんとか動いたという感じです。
まずForm1上に、memo1とButton1を置いて、
下記のコードをUnit1.pasの中に書きます。
実行してButton1をクリックすると、memo1にUSBに繋がっているUSB-SERIAL変換の詳細を表示します。
 
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, rs232c, Grids, Clipbrd, MMSystem,
  ActiveX, Comobj  ;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;
var
  Form1: TForm1;
 
implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const   wbemFlagForwardOnly = $00000020;
var
    FSWbemLocator : OLEVariant;
    FWMIService   : OLEVariant;
    FWbemObjectSet: OLEVariant;
    FWbemObject   : OLEVariant;
    oEnum         : IEnumvariant;   //IEnumvariantを使うには ActiveX をuses宣言する必要有り
    iValue        : LongWord;
    ts, str       : String;
    Item,Item2    : Variant;
begin;
  Form1.memo1.clear;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');    //CreateOleObjectを使うには Comobj をuses宣言する必要有り
  FWMIService   := FSWbemLocator.ConnectServer('localhost', 'root\cimv2', '', '');
//This WMI service checks for plug and play devices
FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_PnPEntity','WQL',wbemFlagForwardOnly);

//This WMI service which I didn't use checks for serial ports and what is on them - currently not displaying sufficient information}
//FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM  Win32_SerialPort','WQL',wbemFlagForwardOnly);

  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
    begin
    if not VarIsNull(FWbemObject.name) then
    begin
      ts := String(FWbemObject.name);
      if (pos('(COM',ts) <> 0) AND (pos('USB',ts) <> 0) then
      begin
        Form1.memo1.lines.add('Caption      '+VarToStr(FWbemObject.Caption));
        Form1.memo1.lines.add('Name         '+VarToStr(FWbemObject.Name));
        Form1.memo1.lines.add('DeviceID     '+VarToStr(FWbemObject.DeviceID));
        Form1.memo1.lines.add('PNPDeviceID  '+VarToStr(FWbemObject.PNPDeviceID));
        Form1.memo1.lines.add('Manufacturer '+VarToStr(FWbemObject.Manufacturer));
        Form1.memo1.lines.add('Description  '+VarToStr(FWbemObject.Description));
        Form1.memo1.lines.add('Service      '+VarToStr(FWbemObject.Service));
        Form1.memo1.lines.add(' ');
      end;
    end;
    FWbemObject:=Unassigned;
  end;
end;
end.
 

前回までは「PL-2303内蔵のUSB-シリアル変換ケーブル」を外付けしていました。
それはUSB対応とはいえ、インチキな感じがするので、
 
USB-シリアル変換回路と 読み書き回路を 一体化して小さくした、
「PRC-68B,126,128 周波数読み書きケーブル USB対応 小型版」を作りました。
10年前に作った「RS-232C版」に比べると、
この「USB版」は、かなり小さくなりました。
10年間のICの進歩は凄いです。
 
私は運が良かったと思います。
USB-SERIAL変換のIC が使いやすかったので、ICメーカーに感謝です。
USB-SERIAL変換のIC が安く売っていたので販売店に感謝です。
小型のケースを安く売っていたので販売店に感謝です。
流用できる小さいPCBを安く売っていたので販売店に感謝です。
 
あとはパソコン側のプログラムの細かい改良をやるだけです。
DELPHIで、USB接続機器の詳細情報を得るのができなくて悩んでいます。
もし上手く詳細情報を検出できたら、
ユーザーはCOM PORT番号を気にしないで、ただUSBに差し込んで使える様にしたいと思っています。
 
完成したら、ヤフオクで売ろうかな。 でも需要がどれだけあるか疑問だな。
この写真は試作品なので仕上げが雑です。
もちろん売るとしたらもっときれいに作ります。
 
54214dfc.jpg

 
4a7bec01.jpg


 

PRC-68B,PRC-126,PRC-128 周波数読み書き ケーブル USB対応 を作りました。
PRC-68B,PRC-126,PRC-128用の、メモリ周波数を読み書きする自作のケーブルです。
55c0c6bf.jpg

 
PRC-68B,PRC-126,PRC-128の内部メモリー周波数を、パソコンから簡単に読み書きできます。
日本語版WIN95とWIN98とWIN2000とWIN XP SP3と、英語版のWIN98にて動作確認しました。
PL-2303内蔵のUSB-シリアル ケーブルを付けるあるで、パソコンのUSBコネクタに接続して直ぐに使えます。
USB-シリアル ケーブルは、なにかの拍子にCOM番号が変わることがあります。
従来は、COM番号が変わった時はCOM番号を設定し直す必要があり面倒でした。
今回はソフトをバージョンアップして、このケーブルが接続されているCOMポート番号を自動で探す機能を付けたので、
使いやすくなったと思います。
e8056c7a.jpg

 
設定情報はiniファイルに保存して、レジストリは使用してないので、アンインストールは簡単です。
これらの無線機の周波数入力を何回もやると、指先が痛くなり大変でしたが。このケーブルとソフトを使えば、とても楽々です。
無線機の周波数を変えながら、受信感度を測っていた時、入力作業が面倒になってこれを作りました。
受信と送信の周波数を変える設定も簡単にできます。
周波数設定のコメントを付けて、パソコンにデータファイルとして、保存したり読み出したりできるので。
これ1つあれば、クラブの各員の無線機の周波数を統一する事も楽々です。
手入力では、PRC-126は25kHzステップしか入力できません。ところがこのソフトを使うと、PRC-126でも12.5kHzステップが可能になります。
b9eb5831.jpg


PRC-68BとPRC-128の、それぞれのローバンドとハイバンドにも対応しています。
COMポートを直接制御しているので、常駐ソフトやCPU負荷によっては、エラーになることもあります。
WINAMPでMP3を再生しながら、書き込んでみたら、エラーになった事があります。

これは10年くらい前に私が開発した物です。
ハードウエアは昔と同じですが、パソコン上のソフトウエアは少し改良して使い易くしました。
数年前にこれを勝手にコピーして販売されて、不愉快になったので。私は製作を止めていましたが。
私は最近失恋したりして落ち込んだので、気分転換にヤフオクに出品してみました。
これは「USB-シリアル ケーブル」を使っているので、スマートではありません。
需要があったら「USB-シリアル ケーブル」を使わないで、PICマイコンで作ってみたいです。
 

↑このページのトップヘ