2016年1月30日土曜日

大昔に書いた記事 HJ#18 1979

最近土壌水分を測定するのにPLLを使った実験をしようと74HC4046AMなるICを買ってきました。 この4046が何か気になって、大昔にHJに書いたPLLシンセサイザーの記事を読み返してみましたら、ありました。MotorolaのMC14046BというICのコンパレータだけを使用していました。 このころからVCOなどが含まれていたようですが、たぶん発信周波数の為でしょうが、VCOはアナログで組んでいました。 しかし、今から考えてみるとこれじゃ使えないだろーなー。 ICの型番って機能を踏襲するのかな?

で、「最後に」に コヒーレント通信への可能性とか、マイクロコンピューターによる周波数制御が可能になり、会社の端末からモデム経由で自宅のマシンにアクセスして珍局をゲットなんて可能では? 最も、会社で電話に向かって”ジャパーン、アメリカ、、、、”は具合が悪い、、、。 なんて書いています。  其の頃から、会社にいてもDXで頭がいっぱいだったのだろうか?それとも、会社の仕事が面白くなかったのだろうか? 今となっては思い出せませんが、40年近く前からリモート運用を夢見ていた自分が居たことを知り(?)「何にも変わってないジャーン」です。 ついでに、仕事できるだけしたくない自分も、、、。

VP8SGI QRV

VP8STIが弱くて出来なかったので、ちょっと諦め気味でしたが、今朝は00Z位からJA指定で14MhzCWに出ていますねー。 当然取れませんで、しばらくしたらUSに持って行かれるようになったので、ワッチー録画。  -98dBm位かな?北極回りがここでは一番強かった。 例によって20Khz程もスプリットしていて、苦手ですねー。 SNがこのまま持ってくれれば平日にはできるかな?

FacebookのDX-WorldにアップロードされていたIK0FUXの録音聞くと、何かEUからとではこんなに違いがあるのかと愕然とするくらい強力な信号ですねー、、、。

> 01Z位からスピーカで聞き流していたら、暫くしてJAとやっているのに気が付き、慌ててかなり暫く呼んでみたら返ってきました。 私の処では信号はそれほど強くはありませんでしたが、NEで一番強く19KhzUpでした。 0430Zの時点ではQRT? よかった、、、。
1週間位ありそうなので、今度はほかのバンドも期待です。

>1/31 取りあえずcfm.


10m12m15m17m20m30m40m80m
CW        
RTTY        
PH        

2016年1月29日金曜日

アクティビティが低いですねー、SNの割に。

VP8SGIは明日くらいから始まりそうですが、DXSpot見ていても殆ど何も無く、アクティビティが低いですねー。 暇なのでFlex6500で一度にどの範囲が見れるのかやってみました。
 もっと下の方へ移動することもできますが、今回は14Mhzから下へ、と上へをやってみました。
上は1400Khz - 15000Khz位までカバーできていますね。 中波の高い方の放送や日本短波の放送が聞こえます。
下は 15000Khz - 29000Khz 位までカバーできています。 21Mhzのバンド内に-70dBmの強いSSBが見えていますが、DUかどこかの局のようでした(多分タガログ語のラグチューでした)。

ま、実用的な意味はありませんが、ちょっとお遊び、、。

2016年1月28日木曜日

トラブル php56 / FreeBSD10.0R / PostgreSQL9.4

久しぶりにPostgreSQLを使おうとセットアップしてみたが、php56でのapache2.4からのアクセスが出来なくて、今日は半日もがいている状態、、、、。 

1) ブラウザでinfo.phpにアクセスすれば、phpの定番の表が表示されるのでphp56やapache24の設定にはは問題無い、と思われる。

2)pgAdminで別のPCからアクセスできるのでpostgresqlはlocal以外からもアクセスできる状態。

3)php56をcliで実行するとpostgresqlとの接続が出来ることは下のプログラムで確認。
  # php pgtest.php
    connect success
  # cat pgtest.php
            $con=pg_connect("dbname=postgres user=pgsql") or die("connect failed");
        print "connect success";
        pg_close($con);
    ?>


4)でも、ブラウザから上のファイル pgtest.phpにアクセスすると/var/log/httpd-error.logに

[Thu Jan 28 21:35:12.177672 2016] [:error] [pir 990] [client 127.0.0.1:16916] PHP Fatal error:  Call to undefined function pg_connect() in /usr/local/www/apache24/data/pgtest.php on line 2

と出て、pgsql.soがロードされていない!! 

cli ではpgsql.soを読み込んでいるのに、apacheから呼ばれるとpgsql.soが読み込まれない!って何故だろう? 特にphp.iniやextension.iniにCLIの時とApacheからのアクセス(module?)で別々の設定があるわけではないと思うのですが、、、。

PHPはもう10年近く弄っていないし、apacheも4-5年は真面に触っていないので、つまらない処で躓いているのかもしれませんが、、、。 参ったな~。





 

BME280に変えてみる 

DHT11でモニターが走ってサーバーにもデータを送ってくるようになったが、手元にBME280があったのでこれも試してみることにする。 これも”Todotaniのはやり物Log”のESP-WROOM-02でI2Cセンサーを使用するを参考にさせていただき、Embedded Adventureのコードを利用してみた。 単にArduinoでBME280からデータを引っ張り出して、シリアルモニターに出すプログラムなので、不必要なところをコメントアウトして、DHT11用のコードのESP-WROOM-02の部分をコピペで作ってみました。
当然かもしれませんが、問題なく動きますので、気圧データもとれる此方を、折角なので、基板に収めて室内に暫く侍らしてみることにします。
ソースを見れば分かるように、BME280からデータを引っぱり出すまでに少し時間が掛かる(終わるまてループで待っている)ので、リポートする時間がぴったり1時間毎になりません。 15時から21時までの6時間で13秒程遅れているので、常に遅れる方向にズレるのであれば、delayの時間を調整して、出来るだけ正確に一時間毎にリポートするようにする必要があります。 deep sleepにすれば解決するのかな?
 
BME280はちょっとコストが高いのと、裸の基板の上に載っているので、実際にどんな形状の筐体に収めるのか、ちょっと工夫が要ると思う。

もう少しコストが抑えられないかなー、、。

======================== WeatherMonitorBME280.ino ==============================
/*
All rights reserved.

Contact us at source [at] embeddedadventures.com
www.embeddedadventures.com

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice,
  this list of conditions and the following disclaimer.

- Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.

- Neither the name of Embedded Adventures nor the names of its contributors
  may be used to endorse or promote products derived from this software
  without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.

*/

// BME280 MOD-1022 weather multi-sensor Arduino demo
// Written originally by Embedded Adventures

#include
#include
extern "C" {
  #include "user_interface.h"
}

#include

// ESP8266 related codes added by t.Yamada
const char* ssid = "Buffalo-G-4CC0"; // SSID to access network
const char* password = "65rhwrit3nnee"; // password to connect to the network
const char* host = "192.168.1.3"; // host address
const char* Identifier = "MyRoom";  // Identifier to locate the monitor
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);


// Arduino needs this to pring pretty numbers
void printFormattedFloat(float x, uint8_t precision) {
char buffer[10];

  dtostrf(x, 7, precision, buffer);
  Serial.print(buffer);

}

// Global declaration to use for WiFi
float t;
float h;
float p;

//print out the measurements
//and set the most accurete values to global variables - added by T.Yamada
void printCompensatedMeasurements(void) {

float temp, humidity,  pressure, pressureMoreAccurate;
double tempMostAccurate, humidityMostAccurate, pressureMostAccurate;
char buffer[80];

  temp      = BME280.getTemperature();
  humidity  = BME280.getHumidity();
  pressure  = BME280.getPressure();
 
  pressureMoreAccurate = BME280.getPressureMoreAccurate();  // t_fine already calculated from getTemperaure() above
 
  t = tempMostAccurate     = BME280.getTemperatureMostAccurate();
  h = humidityMostAccurate = BME280.getHumidityMostAccurate();
  p = pressureMostAccurate = BME280.getPressureMostAccurate();
  Serial.println("                Good  Better    Best");
  Serial.print("Temperature  ");
  printFormattedFloat(temp, 2);
  Serial.print("         ");
  printFormattedFloat(tempMostAccurate,2);
  Serial.println();
 
  Serial.print("Humidity     ");
  printFormattedFloat(humidity, 2);
  Serial.print("         ");
  printFormattedFloat(humidityMostAccurate,2);
  Serial.println();

  Serial.print("Pressure     ");
  printFormattedFloat(pressure, 2);
  Serial.print(" ");
  printFormattedFloat(pressureMoreAccurate,2);
  Serial.print(" ");
  printFormattedFloat(pressureMostAccurate,2);
  Serial.println();
}


// setup wire and serial

void setup()
{
  Wire.begin();
  Serial.begin(115200);

  wifi_set_sleep_type(LIGHT_SLEEP_T);  // couldn't use deep sleep....
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid); 
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
 
}

// main loop

void loop()
{

  uint8_t chipID;
 
  Serial.println("Welcome to the BME280 MOD-1022 weather multi-sensor test sketch!");
  Serial.println("Embedded Adventures (www.embeddedadventures.com)");
  chipID = BME280.readChipId();
 
  // find the chip ID out just for fun
  Serial.print("ChipID = 0x");
  Serial.print(chipID, HEX);
 

  // need to read the NVM compensation parameters
  BME280.readCompensationParams();
 
  // Need to turn on 1x oversampling, default is os_skipped, which means it doesn't measure anything
  BME280.writeOversamplingPressure(os1x);  // 1x over sampling (ie, just one sample)
  BME280.writeOversamplingTemperature(os1x);
  BME280.writeOversamplingHumidity(os1x);
  /*
  // example of a forced sample.  After taking the measurement the chip goes back to sleep
  BME280.writeMode(smForced);
  while (BME280.isMeasuring()) {
    Serial.println("Measuring...");
    delay(50);
  }
  Serial.println("Done!");
 
  // read out the data - must do this before calling the getxxxxx routines
  BME280.readMeasurements();
  Serial.print("Temp=");
  Serial.println(BME280.getTemperature());  // must get temp first
  Serial.print("Humidity=");
  Serial.println(BME280.getHumidity());
  Serial.print("Pressure=");
  Serial.println(BME280.getPressure());
  Serial.print("PressureMoreAccurate=");
  Serial.println(BME280.getPressureMoreAccurate());  // use int64 calculcations
  Serial.print("TempMostAccurate=");
  Serial.println(BME280.getTemperatureMostAccurate());  // use double calculations
  Serial.print("HumidityMostAccurate=");
  Serial.println(BME280.getHumidityMostAccurate()); // use double calculations
  Serial.print("PressureMostAccurate=");
  Serial.println(BME280.getPressureMostAccurate()); // use double calculations
  */
  // Example for "indoor navigation"
  // We'll switch into normal mode for regular automatic samples
 
  BME280.writeStandbyTime(tsb_0p5ms);        // tsb = 0.5ms
  BME280.writeFilterCoefficient(fc_16);      // IIR Filter coefficient 16
  BME280.writeOversamplingPressure(os16x);    // pressure x16
  BME280.writeOversamplingTemperature(os2x);  // temperature x2
  BME280.writeOversamplingHumidity(os1x);     // humidity x1
 
  BME280.writeMode(smNormal);
  char temp[80];
  while (1) {
    while (BME280.isMeasuring()) {
      delay(50);
    }
   
    // read out the data - must do this before calling the getxxxxx routines
    BME280.readMeasurements();
    printCompensatedMeasurements();

    // Use WiFiClient class to create TCP connection
    Serial.print("connecting to ");
    Serial.println(host);
    WiFiClient client;
    const int httpPort = 80;
    if (!client.connect(host, httpPort)){
      Serial.println("connection failed");
      return;
    }
    String url = "/weather/weather_log.php";
           url += "?location=" + String(Identifier); // ID to identify location
           url += "&temperature="+String(t);
           url += "&humidity=" +String(h);
           url += "&pressure=" +String(p);
    Serial.print("Requesting URL: ");
    Serial.println("GET "+url);

    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                  "Host: " + host + "\r\n" +
                  "Connection: close\r\n\r\n");
    delay(50);
   
    // Read all the lines of the reply from server and print them to Serial
    Serial.println("Returned message from server: ");
    while(client.available()){
      String line = client.readStringUntil('\r');
      Serial.print(line);
    }
 
    Serial.println();
    Serial.println("closing connection");

    //ESP8266 Deep Sleap mode
    //1:μ秒での復帰までのタイマー時間設定 (60分)  2:復帰するきっかけの設定(モード設定)
    //ESP.deepSleep(1 * 60 * 1000 * 1000 , WAKE_RF_DEFAULT); 

    //deepsleepモード移行までのダミー命令
    // delay(1000);
    delay (60*60*1000-800);  // 60 min delay
  }
}

2016年1月26日火曜日

K5P, VP8STI

K5Pは今日は暇そうにCQの連呼です。 18MhzのCWでCQを盛んに出していましたが、皮肉なことに今日はいつもより強かったです。 そして、午後には24MhzのSSBでまたCQ。 On FreqでQSOしていたので最後(?)のQSO。
VP8STIは結局、弱くてQSO出来ませんでしたが、ストームで船長からの緊急避難命令でQRVは打ち切りに、、、。 アンテナなどの被害が出ているようなのでSouth Georgiaの運用は?? との事。
まー、コンディションも良くないのでQRVしても同じような状態でストレスの塊が一つ増えるだけかな、、、。


ESP-WROOM-02を使ってみるー気温、湿度モニター

思い通りに動くので気をよくして、温度湿度モニターまで進めることに、、、。
手元に秋月で買ったDHT11があったので早速動かしてみることにした。 DHT11を使ったモニタはArduinoIDEのスケッチのサンプルにDHTtesterというのがあるので、それを使いました。 全く問題なく動くことを確認したので、これにWiFiClient機能を追加しました。  サーバーにLoggerを立てていないので、実際に接続しての動作は確認していませんが、文字列として確かに送信されているので、動作しているようです。 deep sleepを60分にして、シリアルモニターで動作確認を実施中。 これがうまくゆけば、取りあえず庭で使う温湿度計として筐体を含めて検討することにします。 (サーバープログラムはphpでもデータを取得時間とともにファイルに書き込むだけなので省略)

あれ、deep sleepがこれでは動きません?! メッセージが文字化けしているので、どうなっているのか、見当がつかない。
参考文献3を見て、簡単なプログラムで確認したのですが、何故か立ち上がらない(PG startが出てこない!)。  使ったボードの内部でRSTがどっかに接続されているとか、、、。 SwitchScienceのfull set versionでもう一度確認する必要がありますが、少なくともこのボードではdeep sleepが使えないのかもしれません。(要確認)



次は土壌水分のセンサーの検討を始めなくては、、、。


参考にした記事:
  WROOM から温度湿度センサー値を スマホ ストリーミング 表示
  ESP-WROOM-02 を使った リモート温度・湿度・気圧計の製作
   ESP8266の真骨頂Deep-Sleepモードの使い方 
   ESP-WROOM-02プログラミング:スリープのテスト


20160127 追記 > apahce24/php55をFreeBSDサーバに立ち上げて、取りあえずデータ送信の確認。 phpは10年近く前に弄ったことがありましたが大きなプログラムを書くのには適さないのとデバグが面倒で捨てましたが、今回もちっちゃなプログラムの癖して . (ピリオド)が一個抜けていて手こずりました。 その上に、スケッチも”Connection: close\r\:n\r\n"のコロンがセミコロンになっていたのに気が付くのに半日掛かってしまいました。 目が悪いkとを言い訳にしよう!!
 取りあえず、これでサーバにデータの蓄積は出来るようになりましたので、csvでなくてPostgreSQLに蓄積させてゆくようにしよう! ave/min/max等便利な関数があるので、データを取り出すときの処理が簡単になる可能性がありますし、データの安全性も向上させることが出来ますので、、、。 何故PostgreSQLって? 慣れているから。


================== WeatherMonitorUsing DHT11.ino ====================
// Example testing sketch for various DHT humidity/temperature sensors

#include "DHT.h"
#include

#define DHTPIN 5     // Use IO5

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11

// Initialize DHT sensor.
DHT dht(DHTPIN, DHTTYPE);

const char* ssid = "Buffalo-G-4CC0"; // SSID to access network
const char* password = "65rhwrit3nnee"; // password to connect to the network
const char* host = "192.168.1.3"; // host address
const char* Identifier = "A";  // Identifier to locate the monitor

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

unsigned long number = 0;
 
void setup() {
  Serial.begin(115200);
  Serial.println("DHTxx test!");
   
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  // DHT11 to start.
  dht.begin();
}
int value = 0;

void loop() {
  // Wait a few seconds between measurements.
  delay(5000);
  ++value;

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C\t");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("; Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");

  // Use WiFiClient class to create TCP connection
  Serial.print("connecting to ");
  Serial.println(host);
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)){
    Serial.println("connection failed");
    //return;
  }
  String url = "/temperature/tempera_log.php";
        url = url + "?ID"= Identifier; // ID to identify location
        url = url + "&temperature="+String(t);
        url = url + "&humidity=" +String(h);
  Serial.print("Requesting URL: ");
  Serial.println(url);

  client.print(String("Get ")+url+" HTTP/1.1\r\n"
                + "Host: " + host + "\r\n"
                + "Connection; close\r\n\r\n");   <--- connection="" span="">
  delay(10);
   
  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
 
  Serial.println();
  Serial.println("closing connection");

 //ESP8266 Deep Sleap mode
 //1:μ秒での復帰までのタイマー時間設定 (60分)  2:復帰するきっかけの設定(モード設定)
  ESP.deepSleep(60 * 60 * 1000 * 1000 , WAKE_RF_DEFAULT); 

  //deepsleepモード移行までのダミー命令
  delay(1000);
}

=================================================================


  

ESP-WROOM-02を弄ってみる

ESP-WROOM-02にはArduinoが内蔵されているしWifiの技適も通っているので、これを使ってサーバ上のデータロガーにデータを送ることを考えてみる。 というわけで、ESP-WROOM-02でググってみると、同じようなことを既に実現されている方が数多居られる事がわかったので、取りあえず、ここの記事を手本として利用させていただき、まずは実験。
USB2.0の供給電源では不安がありそうなので、別途5V電源を用意して、5V->3.3Vとして取り敢えず動くことを確認する。
使用したESP-...はマイクロテクニカの物


1)ATコマンドで動くか?
  実行モードで動かしてみると、ATコマンドの一部は受け付けるが、肝心のAT+CWLAPなどを入れるとErrorと返ってきてWiFiの動作が確認できません。 (原因は不明)

2)Arduinoとして動くのか? 
「おい、おい、Wifi出来ないの?」ということで、Arduinoとして動くのか恐る恐る確認。 Arduinoの定石(?)pinMode(13,OUTPUT)でLEDをつけたり消したり。 プログラムモードに切り替え、リセットスイッチを一旦押してプログラムをロードしてやると「動くジャーン!」 どうもモジュールは問題なさそう。

3)ではWifiとして使える? 
 ATコマンドがうまく行かなかったがプログラムは動きそうなので、WiFiサーバを実験してみる。

ソー スはサンプルスケッチから持ってきて、ピンを2から13に変更して2)で試験した状態のままプログラムをロード。動かしてみる。  「お、接続できるじゃん!」 で、Firefoxから 192.168.1.21/gpio/1にアクセスすると、「やったね。LED点灯した。」
ということで、 一応使えそうです。



今度は、温度湿度センサーから、サーバのデータロガーに定期的にデータを送る実験をして、うまく行けば、庭の温度湿度を定期的に観測するステーションを作ることにします。 これも、制作例が興味本位の Trial 安堵 Errorにありましたので、参考(丸写し?)にさせていただく予定。 deep sleep モードで1時間に一回程度のアップロードで、単3電池でどの位持つのか興味がありますねー。 屋外での使用になると、電子回路の動作だけでなく、耐候性とか別の要素も必要になってきますし、WiFiですので、密封した缶に入れるわけにもいきませんし、、、。

と、取りあえず「WiFiが動く」ことを確認したので、センサーとのインターフェースを考えて、、、。


2016年1月22日金曜日

Flexが初めてDXpeditionに

K5PのDXpeditionにFlex6700?とMaestroが使われている?みたいです。 Elecraftがスポンサーなのに、、、。
K9CTはFlexにコンサルしているし、個人的に持ち込んだのかもしれませんが、、、。 communityの書き込みでは「俺にも使わせろ!」と順番待ちの行列が出来ているとか、、、。  頭に氷枕みたいなものがついているヘッドセットはFlexが取り扱いしているヘッドセット(RadioSportHeadset) 。
Flexの下にSPEのリニアが見えますねー。
朝、18MhzのRTTYで見つけましたが、QRMでどっかに行ってしまって、その後21MhzのRTTYに出ていましたがNA/SAでJAはお呼びでなかった。 暫くすると21MhzCWに出てきました、、、。 Digiが欲しいのですが、、、。
VP8STIはJAからは40m,30m,17mなどで出来ているみたいですが、ここでは全然橋棒、、、。 JR2KDNが30mでQSOしたのがDXSpotに出ていましたが、、、。 Propagation Forecastでは22-01Z位に開けていると思うのですが、この時間帯には30mや低いバンドに出ているので、ちょっと期待薄。 週末にはSNが上がって少しは可能性が開けるかな?

ワッチしながら、全豪の3回戦を観戦、、、。


2016年1月21日木曜日

拡大鏡

流石にハーフピッチのICのはんだ付けは拡大鏡のお世話にならないと、、、。
というわけで、LED照明付きの大塚の天眼鏡?を購入。
あと、HAKKOのはんだコテFX601にS4(R0.125)というこて先くっ付けてハーフピッチSOPの74HC4046AMを基板につけてみました。 「うーん、あまり上手くはないけど、まあまあかな?」 流石に友人から練習用にと貰ったQFPのはんだ付け練習は基板が無いので練習していませんが、何とかなるかも、、、、。
世の中の進化(変化)は凄いですねー。 拡大鏡とかビノキュラで見ながらはんだ付けするなんて!!

やっぱり、携帯ではピントが甘くてダメですねー。 接写レンズつけて撮影するほどのこともないので、ピンボケで失礼、、、










VP8STI毎日ワッチしていますが、全然カスリもしません。 ご近所の太陽電池の所為かノイズレベルが-105dBm(S4)位あるので、当然弱い信号はダメです。 JA6,JA8等(JA1管内も)が時々呼んでいるのは分かりますが、QSO出来ているのかも確認できません。 アンテナの向きも??だし、、、。  SFIが100切っている状態で、ビームアンテナの高さも写真からは低そうなので、20m以上のバンドでJAからは難しいのかもしれませんね。 こっちの装備の大した事無いし、とあきらめムードが漂っています。  40,80,160mに力を入れているみたいなので、そっちの方が可能性あるのかもしれませんが、残念ながらここからはQRV出来ませんし、、、。

替りにと言っては何ですが、K5Pが10mのCWでJAサービスしていて、JAが群がっています。 今日は結構強く聞こえています(-96dBm位)。





2016年1月20日水曜日

VP8STI .... Sigh,,,,

昨日からQRVしているようですが、聞こえませんねー。 
コンディションの所為か、QRPなのか、、、。 WやEU、VKなどがリポートしていますが、、、。 SSBとかRTTYでなくて、CWでJAサービスしてくれませんかね!
160mtrとか80mtrのアンテナ上げるとか、DX-newsにでていますが、、、。 個人的には「そんなのいいから、もう少しJAにサービスしてーなー」です。

SFIが低迷しているし、上陸の時に発電機を一つ落としたみたいなので、ちょっと諦め気味。

2016年1月18日月曜日

K5P 10m

コンディションの所為かCWを中心に出ていますね。
28Mhzで弱いながら聞こえていたので、なんとかQSO出来ました。 これで、後は適当な時にどこかでRTTYが出来れば、、、。

 
BandCWPhoneData
2011 
171  
151  
121  
101  

2016年1月15日金曜日

K5P 15日

今朝は28MhzのCWで出ているのが聞こえましたが、NA指定でおまけにNO JAと打っている。 止む無く2時間ほど忍の一文字で聞いていましたが、そのうち消えてしまいました。 その間、無知か、阿保か、勇敢かしりませんが、何局かJAから呼んでいましたが、心証悪いですよね。 公平性を欠く(ご近所さんが中心になる)のでコールサインは敢えて書きませんが、止めて欲しいものです。

結局02Z位まで28Mhz聞いていましたが、現れて来なかったので、Bridge of Spiesを見に行きました。 
冷戦華やかりし頃(50年代後半から60年代初頭)の世の中雰囲気を思い出させてくれました。 映画の中で「サンセット77」をテレビがやっていたのが、とっても時代を感じさせる。 この頃の英語は別に神経集中しなくても十分理解できますが、最近のやたら情緒的な表現の多いガキ英語は苦手ですねー。 
U2が一人乗りの飛行機だったのは知りませんでした。 今じゃgoogleだって自前のスパイ衛星で世界中覗き見出来るのに、この当時は大変だったんですねー。



2016年1月14日木曜日

K5P 14日

今日は、朝から21MhzのCWで聞こえているが、Wを中心にやっている(JAも混じって拾ってくれている)ようなので、朝飯食べて犬も散歩をしてから、呼んでみる。  流石にスプリットが広くてなかなかできませんが1時間以上粘って何とかQSO。 24MhzのCWでもQRVsているようなので、覗いてみると「こっちのほうが強い」。 で、呼んでみるが、小平はダメ。 BK,やACAがやったのは確認したがその後QRTしてしまったので、そのまま待つことに。  今度は0230Z位に、周波数変えて出てましたーバンドスコープがガサガサとうるさいのでスポット見ると、少し上の方で出ていました。 これもスプリットが広くて、右往左往しましたが30分ほどで何とかQSO。  後は28MhzのCW。 SN=29ですが、週末から来週には上がってくることを期待。
昨日のQSOはClubLogで確認できていますが、流石に今日の分はまだのようです。

24MhzCWの03Zくらいの様子(信号は少し弱くなって-90dBm位)。


おー、ClubLogのupdateは早いですね。
0418Zの時点で "10,923 QSOs logged between 2016-01-12 08:06Z and 2016-01-14 04:05Z"とありました。


BandCWPhoneData
20 1 
171  
151  
121  

P5/3Z9DXはfake!!

まー、よくわからないけど、QSOしてないし関係ないけど、、、。
http://qrznow.com/is-p53z9dx-a-fake/

2016年1月13日水曜日

K5P Update

今日は、朝から21Mhz Phで出ていますねー。 21220Khz.
でもNorth/South Americaだけ。 JAの不心得者が割り込もうとして、「ちょっと待ってよ!今はNorth/South America」と言われていますね。 2週間あるので、この強さで聞こえていれば、そんなに難しいことはないと思いますが、何波同時に出せるのかが問題かな?
Challengeを稼ぐだけなのでCWで14から28までやれればそれでOKなのですが、、、。

> NA/SA中心で、JAにも回ってくる頃には信号が弱くなっちゃってちょっとしんどいですね~。 スプリットの幅も広いし、もう少しほとぼりが冷めてから狙うことにして今日は(少なくとも)お休みにします。 それと、結構頻繁にQRXとなるので、まだセットアップが万全ではないようです。

>06Zに18MhzCWでやっとこ出来た!4.6Kz upだった。 SNが落ちてきているので、28,24は難しいかな? 2週間あるので残りを期待!
ついでに、0630z位の状況の動画を、、、  この動画のちょっと前にJA2BY西野さんがQSOしたのを聞きました。  信号強度はほぼ-90dBmでした。 14MhzのPhでEUとやっていましたが、JAもやってくれているみたいなので、呼んだら出来ました。Lucky! こちらは近所のノイズに埋まって、聞き取り難い。信号の -100dBm程度でQSBが大きいです。


VP8は船が出発しましたねー。 こっちはNewなのでQRVの頃にコンディションが上がってくれることを期待しています。

2016年1月12日火曜日

K5P Palmyra

10Mhz, 7Mhzで出てきましたねー。 アンテナは何を使っているのでしょう? こんなに早くセットアップできるなんて、、、。

HighBandは明日ですねー。
0815Z


SmartSDR v1.6.17 released

もうそろそろかな?と思っていましたが今朝communityを見るとreleaseされていましたので、さっそくインストール(K5Pが遅れているので、Palmyraの前にアップデートできました)。 v.1.5.1のCATを止めてからいきなりインストールしてみましたが、全く問題なくインストールでき、動作も問題ありませんでした。 ただ、CATの部分の仕様が変わったので、Fldigiやwsjt-xのcom portの設定を変えなけ
ればなりません。 PTTの分のcom portの設定がいらなくなったので、かなり簡単になりました。
基本的にはDAXやCATの部分の改善はContesterのSO2R要求に応えるための改善のようです。
NBとか他の部分の改善は?? (今の処感じない)。結果、com portの設定が左のように変更になりました。  

 PortProtocolにCAT,OTRSP,PTT,Winkeyerが設定できるようになって、特にOTRSPにはRadio1,Radio2と設 定が出来たりするみたいですが、Loggingソフトとの兼ね合いもあるので、おいおい弄ってみることにして、まずは今まで通り運用できることを優先。


TimがSmartSDR CAT Software User's Guideなるものを出してくれましたが、OTRSP、PTT、Winkeyerについての説明が今一よく理解できていない状態なので、今後のコミュニティの書き込みを見ながら、おいおい弄ることにします。

また、市販のLoggerとの円滑な連携を推進してゆくとN5ACが言っていますので将来に期待したいと思いますが、今の処N1MM+やDXLabs等が中心なので、Logger32にはいつ頃回ってくるのやら? Logger付属のVoice KeyerにDAX TX Audioからのストリーム(EQやcompressionの設定が実際の生送信の状態のままのAudio)から取り込めるようになったみたいです。 
早速やってみましたが、ちょっと記述と実際に違いがあるような気がします。 もう少し弄ってみないと、、、、。
 
SmartSDR v1.6.17 Release Note



2016年1月11日月曜日

簡易土壌水分測定 3

006Pのバッテリーがようやく到着したので、さっそく右のようなプローブを作って、水の中につけて水分100%の時の容量を測ってみました。 プローブ表面はサランラップで包み、直接水に接触しない様に、また両プローブの間隔は5-6mmとして。  

   結果は、空気中で0.3pF、水につけた状態で15-20pFでした。 
従って実際に土壌中に突っ込むと、数pFから10pFくらいの間で変化するのではないかと予想されます。 表面の絶縁と擦過耐性をどうするか考えなければなりませんが、取りあえず、一度土壌に突っ込んで確認する必要があります。
いずれにせよ、小容量なので、充放電時間ではちょっと無理かな? LC回路の発信周波数変化か、位相差による誘電率の変化の測定の方がシンプルな回路にできるかもしれません。
PLLのICが安価に手に入りますので、この二つのアイデアは平行して実験してみようと思います。 (マルツで見ていたらCD74HC4046AMというのがありましたが、この4046って番号、昔のMotorolaのPLLICの番号と同じような気がします。 うろ覚えですが、調べるのも面倒なので、、、)。



2016年1月7日木曜日

簡易土壌水分測定 2

おっと、不覚で006Pなんていう9Vの乾電池は近頃近隣の電気屋では売っていないんですね。 止む無くAmazonに注文して、今日はお休み、、、。

で、お勉強に誘電率についてググっていましたら、
Vp = C / sqrt(εs)
  Vp.... 電磁波の位相速度(m/s)
  C .... 2.99792458e8 真空中の光速(m/s)
    εs .. 誘電体の比誘電率(εs > 1)
というのを見つけました。 あれ、周波数関係ないんだ? 鹿児島大学の特許は何故2周波数で計測しているのかな?

大昔PLLを一生懸命弄っていましたが、誘電率の違いが位相の違いで測れるのならコンパレータ使えば簡単にできるだろうし、いきなり電圧で測れるのでは? とこれもググっていると、最も簡単に方形波をEXORで比較するコンパレータが出ていました。 同軸以前の話で、昔は蝋に浸した割りばしの平行給電線など色々作っていましたが、伝送路の周りの誘電率の違いはどの程度検出できるのでしょうかね?
こっちも実験してみたくなったので、AnalogDiscoveryとWaveFormsを引っ張り出してきました。 うーん、これってまともに使ったことなかったので、使い方からお勉強、、、、。  
実験はWaveFormsのWaveGenとScopeで気軽にできるはずなんですけどね、、、。  大昔、生物系に移住して、その後も、長いこと営業畑で「どうやったらもっと売れるか?儲かるか?」が習い性の頭のトレーニングにはちょうど良い課題ですが、思ったように動かせないのはちょっとストレスが溜まります。

ま、気楽に気長にやろう、、、。

しかし、コンディション悪いですねー。 14や21でZL9Aが出ていました(らしい?)が、弱くてとってもやる気にはなりませんでした。  今のうちに早くSmartSDR v1.6リリースしてくれませんかね? 今週末位かな?って期待してますけど、、、。

世の中、抑えが効かなくて、其処ら中でやりたい放題ですね。 どっかで、大きな戦争が起こりそうだな? 人間って実体験がなくなっちゃう(世代交代する)と、凝りもせず戦争しようとする性を持っているのですかねー。  取りあえず株価もどうしようもないし、、、、。




2016年1月6日水曜日

簡易土壌水分測定 1

植物の世話は結構面倒ですが、中でも水やりは、小まめに見ていても失敗したりします。
「常に土壌水分量を教えてくれる自動ステーションが在ったらいいなー」ということでWEBで色々検索してみました。
まず、どうやって測定するのか?
 古いところでは;
  採土法:
  テンシオメーター法:
  電気抵抗法:
 これらは、ちょっと連続的に自動で調査するのには適しません。 (電気抵抗法は可能性はありますが、水分量だけでなくて塩分量とかにも影響を受けるので、ちょっと信頼性に不安があります。 Groveで売っている水分センサーは電気抵抗を測っているみたいですが、耐候性はないようですし、今回の想定条件には適合しないようでしたので、対象から外しました)

 新しい方法として、TDR法とキャパシタンス法があるようで、何れも土壌の誘電率から水分量を求める方法のようです。 (水の誘電率が、土粒子、空気などに比べると数十倍大きいため、水分含量により誘電率が大きく変化するのが根拠のようです)

 TDR法で測定する装置は幾つか販売されていますが、一台数万円以上して、ちょっと庭の水やりに気軽に、とか圃場の複数地点に設置してモニタリング、といった用途には向いていないように思います。 この方法で気に入った製品は、鹿児島大学の特許を利用した (株)A.R.Pの水分センサーWD-3です。 U字の伝送路の一方から二つの周波数の信号を流し、もう一方で受けた信号との位相差から伝送路の周りの誘電率を計算させる、方法のようで、とってもスマートな方法だと思います。 製品も「カッコいい」、でも高い!
  キャパシタンス法というのもありますね。 誘電率だから、当然土壌の容量(キャパシタンス)を測れば分かりますよね。 これだったら出来るかも? で、またまたキャパシタンスを測る方法をググってみましたが、中々簡単に安くできる方法、というのは難しい。  
 誘電率の絶対値が必要なわけではなく、相対的に乾燥状態、適切な水分状態、過剰な水分状態、過度の(根腐れしそうな)水分状態、あるいはもう少し細かい程度で分かればよい、というレベルで考えることにして、コストも考え、コンデンサに直流を流した時に充電に掛かる時間を測ってキャパシタンスを測る方法が利用できないか検討することにしました。  これだと、Arduinoにプローブをつけて出来るかもしれません。

実験1) Arduinoでコンデンサの容量を測ることはできるのか?

 ArduinoUnoに左のような配線をして、簡単なスケッチを書いて実験してみました。
 TRは被測定Cを放電させるためのスイッチ。 VccからのRは被測定Cの値によって数メガから十メガ位? ベースにあるRは、1KΩにしていますが、UnoのHigh(5V)でコレクタ、エミッタが出来るだけショートされるように、、、。 
 取りあえず実験なので、手元のTR,R等で作ってますので値には何の根拠もありません。

結果:
  Vcc+からの抵抗を10MΩにすると左のような結果が得られたので、大凡の容量は簡単に測定できる(数値化できる)事がわかりました。 10μF以上の容量だと、測定に時間が掛かるのと、小容量は測れません。
  また放電させる時間は数秒あった方がよさそうです。
  
ところで、土壌ってどの位の容量を持っているのでしょうか? プローブの間隔とか形状でも違うでしょうが、Pocket L/C Meter Ver. 2で明日以降測ってみることにします。  大きいのか、小さいのか???


=====スケッチ=====
long t0, start;
long v0;
boolean flag=true, display=true;
const int SW = 12;

void close1sec(){
  digitalWrite(SW, HIGH);
  delay(1000);
  digitalWrite(SW,LOW);
}
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(SW, OUTPUT);
  close1sec();
  analogReference(INTERNAL);

}

void loop() {
  // put your main code here, to run repeatedly:
  v0 = analogRead(0);
  t0 = millis();
  //Serial.print(t0);
  //Serial.print(":");
  //Serial.println(v0);
  if (flag && (v0 >= 100 && v0 <= 150)) {
      Serial.print("Started at ");
      Serial.print( t0 );
      Serial.print(" milli sec " );
      Serial.println(v0);
    start = t0;
    flag = false;
  } else if (v0 >= 700 && !flag ){
    flag = true;
      Serial.print( "Ended at" );
      Serial.print(t0);
      Serial.print( "  ");
      Serial.print ("Value = ");
      Serial.print( t0 );
      Serial.print( "-");
      Serial.print(start);
      Serial.print("=");
      Serial.println(t0 - start);
      delay(30000);
      close1sec();
  }
}

あれ、P5が、、、、

あー、やはり12月に少し粘ってやっておけばよかった!
なんで今頃水爆?実験何だろう? これで、当分はQRVは期待できそうもないですね。
こうなりゃ、消滅カントリーになって貰ったほうが世界平和の為に良いかな。

SmartSDR 1.6はまだ?

年末くらいから、「もうそろそろ、、、」と言われていたSmartSDR v1.6がいよいよリリースされそうです。 DAX関連のところの仕様が大きく変わるとか、コンテスト対応の操作性の向上(機能の向上?)等、ちょっと移行に時間がかかりそうな予感。 ま、コンディションも良くないしPalmyraまでにリリースされてくれればOKですが、、、。
Youtubeにビデオが公開されているので、覗いてみましたが、スライス8つも開いて全部使うなんてちょっと信じられない使い方をしていますね、K6OZYって。 頭がこんがらがっちゃいそう、、、。

php のインストールの確認

phpって最初のfacebook書くときに使われたみたいで、それなりに歴史のある言語で、私も2006年位から使っていますが、CLIで使う事はあまり無いので、apacheとの連携のトラブル(mod_phpのバージョンの齟齬)などは気になりますが、拡張モジュールのインストールの問題に...