土曜日に台湾から帰ってきて多少疲れていたが、半日ほどCQ WW DX CONTESTのCW部門に参加した。21MHzと7MHzにQRV。合わせて22局と交信した。先月のSSBのときほどには開けていないようで、オーストラリアとかグアムとかばかりだったが、一局モンゴル(JT)の局と交信できたのはラッキーだった。夕方になって21MHzがあまり聞こえなくなって7MHzに下りてみたが、数局交信できただけ。アメリカ本土の局が良く聞こえるが、なかなかとってもらえない。現在のリグのパワーとアンテナでは、なかなかつらい。リグは5Wで当面は変える気はないので、なんとかアンテナの方をどうにかしたいと思う。といってもケーブルを太い奴に変えるとか、アンテナをもう少し高くするくらいしかないかなあ。DXに強いといわれているバーチカルアンテナを試してみたい気もするが、フルサイズダイポールに勝てるかどうかは?
出張で一週間台北に行っていた。ちょっと風邪気味になったが、まあ大きなトラブルもなく無事帰国。週末の選挙で町の中は、選挙カーや爆竹、そしてのぼりがたくさんあった。親日というか、台湾人の気質というか、とても皆さんフレンドリーで快適だった。ただ、中国語はサッパリわからずシェシェニー(ありがとう)とシャオチュウ(領収書)、あとは乾杯しても全部飲まないイーテンテンくらいしかボキャブラリがない。それでも何となく生きていけるから楽しい。ハッセルを持って有名な屋台村に行った。多少写真も撮ったので、いいのがあればプリントイクスチェンジについないたいと思っている。ちょっと食べ過ぎ、また太っちゃったかなア。
なんとか受信もできるようになった。FT-817のダイアルを回すとArduinoの液晶の数字も同じように変化した。なかなかいい感じ。受信データにジョグダイアルに応じた数値を足して周波数を変化できるようにしたいところだが、残念ながら時間切れ。長くモニターを見ていると目が疲れる。残りは出張から帰ってきてから。明日から台湾に。
ここまでに作成したソースコード。
//Receive and dispaly frequency while potvalue is non zero value
// FreqDisp 2010/11/20
//
#include <LiquidCrystal.h>
//Constants for variable-register
#define POTENTIO 2 // ANALOG input for variable-register
#define POTVALUE_NUL 500 //variable-register center value
#define POTVALUE_NUL_ZONE 50 //variabe-register nul zone width
#define FACTOR 1 //variable-register conversion factor
#define SET_FREQ 01 //Command for sending frequency to FT-817
//Masks or BCDto BIN conversion
#define HighMask B11110000
#define LowMask B00001111
LiquidCrystal lcd(7,8,9,10,11,12,13);
// static
int incomingByte=0;
int i;
float potvalue; //return value of variable regisiter
int potentio_in; //AD data from the variable regisiter
int sensorPin = 2; // select the input pin for the potentiometer
byte Bcdvalue; //1 byte BCD value from FT-817
int Binvalue; //1 byte converted frequency data
int Up_Freq; //Upper frequency data
int Mega_Freq; //Mega heltz conponent
int Freq100k; //100kHz conponent
int Low_Freq; //Lower frequency data
long Freq; //Frequency (8 digits)
byte ftype; //Transmission type
char lcd_buff[7]; //LCD display buffer
int P[4]; //FT-817に送られるパラメータ群
void setup(){
Serial.begin(4800);
lcd.begin(2,16);
for(int i=0;i<=6;i++){
pinMode(i,OUTPUT);
}
lcd.clear();
}
void loop(){
get_pod();//read variable register
//lcd.setCursor(1,0);
//lcd.print(potvalue);
lcd.setCursor(9,1);
lcd.print("MHz");
// read data only when potvalue > 0
if(abs(potvalue) > 0){
//send receive fequency data command
Serial.print(0,BYTE); //dummy data
Serial.print(0,BYTE); //dummy data
Serial.print(0,BYTE); //dummy data
Serial.print(0,BYTE); //dummy data
Serial.print(3,BYTE); //reade frequency command
// send data only when you receive data:
while (Serial.available() > 0) {
// read upper frequency data:
Up_Freq=0;
for(i=0;i<2;i++){
Bcdvalue = Serial.read();//read data from the radio
bcdtobin();//1 byte bcd to bin conversion
Up_Freq=Up_Freq*100+Binvalue;//Upper 4 digits
}
// read lower frequency data
Low_Freq=0;
for(i=0;i<2;i++){//transform 4 byte bcd to bin
Bcdvalue = Serial.read();//read data from the radio
bcdtobin();//1 byte bcd to bin conversion
Low_Freq=Low_Freq*100+Binvalue;//Lower 4 digits
}
//display MHz digits
lcd.setCursor(0,1);
Mega_Freq=Up_Freq/10;
sprintf(lcd_buff,"%3d.",Mega_Freq);
lcd.print(lcd_buff);
//display 100kHz digit
Freq100k=Up_Freq-Mega_Freq*10;
lcd.print(Freq100k);
//display Lower frequency components
sprintf(lcd_buff,"%04d",Low_Freq);
lcd.print(lcd_buff);
//read frequency type
ftype=Serial.read();
lcd.setCursor(13,1);
switch(ftype){//display transmission mode
case 0: lcd.print("LSB");
break;
case 1: lcd.print("USB");
break;
case 2: lcd.print("CW");
break;
case 3: lcd.print("CWR");
break;
case 4: lcd.print("AM ");
break;
case 6: lcd.print("WFM");
break;
case 8: lcd.print("FM ");
break;
case 10: lcd.print("DIG");
break;
case 12: lcd.print("PKT");
break;
}
}
}
Freq=Up_Freq*10000L;
Freq=Freq+Low_Freq+potvalue;//Frequency 8digits
lcd.setCursor(0,0);
lcd.print(Freq);
bintobcd();
delay(50); //wait for sending next command
}
int get_pod(){
// KEYPAD input
potentio_in = analogRead(POTENTIO);
// Serial.println(potentio_in);
potvalue=(potentio_in -POTVALUE_NUL);
// Serial.println(potvalue);
if (abs(potvalue) < POTVALUE_NUL_ZONE)potvalue=0; //ポテンショが中央付近なら数値をゼロに。
potvalue= FACTOR*potvalue; //係数をかける。
}
// transforn 1 byte bcd(Bcdvalue) to bin(Binvalue)
int bcdtobin(){
int highvalue;
int lowvalue;
highvalue=(Bcdvalue & HighMask) >> 4; //Mask lower bists and shift 4 bits
lowvalue= Bcdvalue & LowMask; //Mask higher 4 bits
Binvalue=highvalue*10+lowvalue; //calculate binary value
}
//Transform Freq(long binary frequency) to BCD(P[1]-P[4])
int bintobcd(){
int bcd[8];
long Tfreq;
Tfreq=Freq;
//generate 8 BCD digits
for(i=0;i<8;i++){
bcd[i]=Tfreq % 10; //modulo 10
Tfreq=Tfreq/10;//shift 1 digit
}
//generate 4 sets of 2 BCD digits
for(i=0;i<4;i++){
P[i]=(bcd[i*2]<<4)+bcd[i*2+1];
}
}
int SendFreq(){
int k;
for(k =0 ; k < 4 ; k++) Serial.print(P[k],BYTE); //周波数の送出
Serial.print(SET_FREQ,BYTE);
}
ここまでに作成したソースコード。
//Receive and dispaly frequency while potvalue is non zero value
// FreqDisp 2010/11/20
//
#include <LiquidCrystal.h>
//Constants for variable-register
#define POTENTIO 2 // ANALOG input for variable-register
#define POTVALUE_NUL 500 //variable-register center value
#define POTVALUE_NUL_ZONE 50 //variabe-register nul zone width
#define FACTOR 1 //variable-register conversion factor
#define SET_FREQ 01 //Command for sending frequency to FT-817
//Masks or BCDto BIN conversion
#define HighMask B11110000
#define LowMask B00001111
LiquidCrystal lcd(7,8,9,10,11,12,13);
// static
int incomingByte=0;
int i;
float potvalue; //return value of variable regisiter
int potentio_in; //AD data from the variable regisiter
int sensorPin = 2; // select the input pin for the potentiometer
byte Bcdvalue; //1 byte BCD value from FT-817
int Binvalue; //1 byte converted frequency data
int Up_Freq; //Upper frequency data
int Mega_Freq; //Mega heltz conponent
int Freq100k; //100kHz conponent
int Low_Freq; //Lower frequency data
long Freq; //Frequency (8 digits)
byte ftype; //Transmission type
char lcd_buff[7]; //LCD display buffer
int P[4]; //FT-817に送られるパラメータ群
void setup(){
Serial.begin(4800);
lcd.begin(2,16);
for(int i=0;i<=6;i++){
pinMode(i,OUTPUT);
}
lcd.clear();
}
void loop(){
get_pod();//read variable register
//lcd.setCursor(1,0);
//lcd.print(potvalue);
lcd.setCursor(9,1);
lcd.print("MHz");
// read data only when potvalue > 0
if(abs(potvalue) > 0){
//send receive fequency data command
Serial.print(0,BYTE); //dummy data
Serial.print(0,BYTE); //dummy data
Serial.print(0,BYTE); //dummy data
Serial.print(0,BYTE); //dummy data
Serial.print(3,BYTE); //reade frequency command
// send data only when you receive data:
while (Serial.available() > 0) {
// read upper frequency data:
Up_Freq=0;
for(i=0;i<2;i++){
Bcdvalue = Serial.read();//read data from the radio
bcdtobin();//1 byte bcd to bin conversion
Up_Freq=Up_Freq*100+Binvalue;//Upper 4 digits
}
// read lower frequency data
Low_Freq=0;
for(i=0;i<2;i++){//transform 4 byte bcd to bin
Bcdvalue = Serial.read();//read data from the radio
bcdtobin();//1 byte bcd to bin conversion
Low_Freq=Low_Freq*100+Binvalue;//Lower 4 digits
}
//display MHz digits
lcd.setCursor(0,1);
Mega_Freq=Up_Freq/10;
sprintf(lcd_buff,"%3d.",Mega_Freq);
lcd.print(lcd_buff);
//display 100kHz digit
Freq100k=Up_Freq-Mega_Freq*10;
lcd.print(Freq100k);
//display Lower frequency components
sprintf(lcd_buff,"%04d",Low_Freq);
lcd.print(lcd_buff);
//read frequency type
ftype=Serial.read();
lcd.setCursor(13,1);
switch(ftype){//display transmission mode
case 0: lcd.print("LSB");
break;
case 1: lcd.print("USB");
break;
case 2: lcd.print("CW");
break;
case 3: lcd.print("CWR");
break;
case 4: lcd.print("AM ");
break;
case 6: lcd.print("WFM");
break;
case 8: lcd.print("FM ");
break;
case 10: lcd.print("DIG");
break;
case 12: lcd.print("PKT");
break;
}
}
}
Freq=Up_Freq*10000L;
Freq=Freq+Low_Freq+potvalue;//Frequency 8digits
lcd.setCursor(0,0);
lcd.print(Freq);
bintobcd();
delay(50); //wait for sending next command
}
int get_pod(){
// KEYPAD input
potentio_in = analogRead(POTENTIO);
// Serial.println(potentio_in);
potvalue=(potentio_in -POTVALUE_NUL);
// Serial.println(potvalue);
if (abs(potvalue) < POTVALUE_NUL_ZONE)potvalue=0; //ポテンショが中央付近なら数値をゼロに。
potvalue= FACTOR*potvalue; //係数をかける。
}
// transforn 1 byte bcd(Bcdvalue) to bin(Binvalue)
int bcdtobin(){
int highvalue;
int lowvalue;
highvalue=(Bcdvalue & HighMask) >> 4; //Mask lower bists and shift 4 bits
lowvalue= Bcdvalue & LowMask; //Mask higher 4 bits
Binvalue=highvalue*10+lowvalue; //calculate binary value
}
//Transform Freq(long binary frequency) to BCD(P[1]-P[4])
int bintobcd(){
int bcd[8];
long Tfreq;
Tfreq=Freq;
//generate 8 BCD digits
for(i=0;i<8;i++){
bcd[i]=Tfreq % 10; //modulo 10
Tfreq=Tfreq/10;//shift 1 digit
}
//generate 4 sets of 2 BCD digits
for(i=0;i<4;i++){
P[i]=(bcd[i*2]<<4)+bcd[i*2+1];
}
}
int SendFreq(){
int k;
for(k =0 ; k < 4 ; k++) Serial.print(P[k],BYTE); //周波数の送出
Serial.print(SET_FREQ,BYTE);
}
昨日半日ほどかけてFT-817のコントローラーを製作した。テンキーと液晶表示に周波数変更用の可変抵抗をつけた。一応それぞれのパーツはコンピュータと接続して動作していることを確認した。でも全体のプログラムはこれから。将来的にはCWのチューニングモニターなどもつなげたいと思っている。
ドリルややすりでものつくりをしていると時間を忘れられる。僕にとってはストレス解消だね。
ドリルややすりでものつくりをしていると時間を忘れられる。僕にとってはストレス解消だね。
仕事で22日から台湾に行くことになった。多少は時間もとれそうなのでハッセル持って行って写真を撮ろうかと思っている。プリントイクスチェンジ用にアジアンテイストのいい写真がとれたらいいなあ。楽しみ。
ちょっと遅れて先月分のカードを書いた。コンテストで海外局ばかり50局ほど。全部海外だ。QRZ.comでQSL情報を入手してカードを書いた。WとかVKは大体BUROだが、中にはDirectというところもある。宛名入り返信用の封筒とGREEN STAMP2枚とうのが大体の相場の様だ。家にあったGREEN STAMPは6枚ほどしかなかったので、後はどこかでゲットしないといけない。IRC(国際返信用切手)という手もあるが、結構高いので円安の恩恵にあずかる意味でもGREEN STAMPの方がいい。アルゼンチンやガラパゴスのカードが来るのはいつのことになるんだろう。まあ、それも楽しみの一部ということにしておこう。
インターフェースがうまく動いたので、HamRadioDeluxeで817をリモートで動かしてみた。なんかデジタルで周波数を変えるのは感触がつかめない。やっぱりノブをくるくる回す方がいいなあ。
それからDXLabTurboというソフトを入れるとTurboHamLogにも周波数とモードが直接書き込めるようになった。これらのソフトを走らせながら817の操作をすると、いい感じでオペレーションができるようになった。Ctestwinとの連携もできたし、コンテストで威力を発揮しそうだ。
ただ、ソフトを終わろうとしたらDXLabTurboがうまく止められなかったりして、なんだか気持の悪いことも起きている。この手のソフトはシステムの安定性という意味ではあんまり良くないのかもしれしれない。まあ、みんなタダだし文句は言えないが。
SSBのコンテストなどに出ていてこの数週間CWをやっていなかった。リハビリも兼ねて7MHzで数局交信した。ちょっと耳が悪くなっているような気がした。また練習しよう。
それからDXLabTurboというソフトを入れるとTurboHamLogにも周波数とモードが直接書き込めるようになった。これらのソフトを走らせながら817の操作をすると、いい感じでオペレーションができるようになった。Ctestwinとの連携もできたし、コンテストで威力を発揮しそうだ。
ただ、ソフトを終わろうとしたらDXLabTurboがうまく止められなかったりして、なんだか気持の悪いことも起きている。この手のソフトはシステムの安定性という意味ではあんまり良くないのかもしれしれない。まあ、みんなタダだし文句は言えないが。
SSBのコンテストなどに出ていてこの数週間CWをやっていなかった。リハビリも兼ねて7MHzで数局交信した。ちょっと耳が悪くなっているような気がした。また練習しよう。
FT-817のシリアルポートはTTL出力なので、そのままパソコンのシリアルポートにはつなげない。ということでネットを探してトランジスタを使ったインターフェース回路を作成した。
http://www.ko4bb.com/ham_radio/FT-817/
トランジスタは千石電商で買ってきた10こ100円の2SC1815。懐かしい番号だなあ。子供のころは2SC372とか2SC945とか良く使ったけど、さすがにそれはもうなさそう。
パソコンにはシリアポートがついていないので、こちらも信号の変換が必要になる。こちらは秋月のUSB-serial変換ケーブル(延長ケーブル付きで1100円)を買ってきテ、ドライバをインストールして使った。
パソコンのソフトは有名なHam Radio Deluxeを使った。とりあえず動作はOK。果たして実際のQSOに使うとどうんな感じになんるんでしょうね。コンテストで自動的に周波数が入るといいなあ。Ctestwinにもつながるんだろうか。
http://www.ko4bb.com/ham_radio/FT-817/
トランジスタは千石電商で買ってきた10こ100円の2SC1815。懐かしい番号だなあ。子供のころは2SC372とか2SC945とか良く使ったけど、さすがにそれはもうなさそう。
パソコンにはシリアポートがついていないので、こちらも信号の変換が必要になる。こちらは秋月のUSB-serial変換ケーブル(延長ケーブル付きで1100円)を買ってきテ、ドライバをインストールして使った。
パソコンのソフトは有名なHam Radio Deluxeを使った。とりあえず動作はOK。果たして実際のQSOに使うとどうんな感じになんるんでしょうね。コンテストで自動的に周波数が入るといいなあ。Ctestwinにもつながるんだろうか。