ラベル Arduino DDS WSPR QRSS の投稿を表示しています。 すべての投稿を表示
ラベル Arduino DDS WSPR QRSS の投稿を表示しています。 すべての投稿を表示

2012年3月19日月曜日

Arduino Mega 2560 & DDS WSPR/QRSS Controller

以前作った”W3PM WSPR Projects”のArduino Mega 2560版を作り直しました。
ケースが大きすぎたのと、配線がごちゃごちゃし過ぎていたので・・・・・
Mega用シールドを使ってスッキリさせてみました。

以前より小型のケース、ArduinoのUSBコネクターに絶縁用にビニール・テープを
貼ってあります。




















これも使いまわしのケース、ラベルシートを貼ってごまかしてあります。




















13Vから一旦9VにしてArduino本体へ、さらに5VにしてDDS/GPS周りに供給。



















2012年3月16日金曜日

"W3PM WSPR Projects" Arduino版修正

Arduino Uno版は断念したが、色々やった中で・・・・
オリジナルが間違っているなと思われたところを、忘れる前に記録。

Uno/Mega2560 共通の修正場所
DDSのキャリブレーション値をEEPROMに保存しますが、書き込み/読み出しが
正しく行われていません。
*************************************************************************
void setup() の中の以下の部分を修正
// Get calfactor data
  //for(j=0; j<3; j++) {  // Step through 4 bytes to make 32 bit word
for(j=0; j<4; j++) {  // 3 を 4 に修正
    temp = EEPROM.read(50+j); // Get bytes 50 through 53
    for (i=0; i<8; i++){ // Set through 8 bit to make 1 byte
      //bitWrite(CalFactor,i*j+i,(bitRead(temp,i))); // Assemble bits to make 32 bit word
      bitWrite(CalFactor,j*8+i,(bitRead(temp,i))); //左のように修正
    }
  }
*************************************************************************
void calibrate() の中の以下の部分を修正
  // Writes CalFactor to address 50 + 3 bytes of EEprom
  //for (j=0; j<3; j++)  { // Step through 4 bytes to make 32 bit word
  for (j=0; j<4; j++)  { // 3 を 4 に修正
  for (i=0; i<8; i++) { // Step through 8 bit to make 1 byte
      //bitWrite(temp,i,(bitRead(CalFactor,j*i+i))); // Assemble bits to make 1 byte
      bitWrite(temp,i,(bitRead(CalFactor,j*8+i))); // 左のように修正
    }
    EEPROM.write(50+j,temp); // Write byte to EEprom
  }
*************************************************************************
Mega2560 の修正場所
これは、WSPRのPOWERの設定がおかしかった。  2012/03/19 追加
void setup() の中の以下の部分を修正
  // Set power level to default timeslot
  //power = timeslot_array [timeslot] [3]; //
  power = timeslot_array [timeslot] [2]; // 3 を 2 に修正
*************************************************************************

2012年1月28日土曜日

Arduino Uno & DDS WSPR/QRSS Controller ギブアップ

その後、チマチマと修正に挑戦してきたが・・・・・
私の能力では、ギブアップと言う事で終わりにします。

スケッチの中で下のものが色々改良版とか新しい物が出ているので
差し替えたりしてみましたが結果は同じ。
#include <LiquidCrystal.h>
#include <MsTimer2.h>
#include <StopWatch.h>

強制的に、WSPR送信タイムスロットの最後の部分にLCD初期化を
入れて文字化けを回避するようには出来ましたが。。。。。。
今度はDDSにコマンドを正しく送れなくなるのか、一見送信状態になっているのに
出力無し状態になっているのが判明!(数時間は問題ない)

DDSモジュールは交換しても同じだった。
(DDSモジュールは、ATMega版では3日ほどロングラン・テスト問題なし)

Arduino1.0に対応したStopWatch.hも発表されていたので、こっちで
コンパイルしてもみたが結果は同じだった。

タイミング関係がクリチカルで・・・こうなっていると予想しています。

今回はこれで断念します。

ちなみに文字化けとは

2011年12月8日木曜日

Arduino Uno & DDS WSPR/QRSS Controller その後

LCD文字化け、その後。

”W3PM WSPR Projects”サイトを覗いたら、スケッチがVer1.1にアップデート
されていました。
これは!と思い、早速ダウンロードして内容を見てみたが・・・   残念!
Ver1.0で回路図とスケッチの記述が異なっていた部分の修正だけだった。
(DDS接続部分、LOADとDATAが逆になっていた)

また、ArduinoもVer1.0がリリースされていたのでトライしてみました。
大幅に改良されたのか、使っているライブラリーで動かないのが出てきて
コンパイル・エラーになります。
どうもライブラリーStopWatchの”StopWatch.cpp”の中で呼んでいる”wiring.h”
がVer1.0から無くなっている様子。
今まで、\arduinoフォルダの \hardware\arduino\cores\arduino に有りました。
wiring.c だけ存在しているので、 正しい方法か私には判断出来ませんが、
StopWatch.cppを書き換えて wiring.c を呼び出すように変更。
wiring.c で呼び出している Arduino.h を新たにスケッチに追加。
(#include "Arduino.h"を追加)
これで、やっとコンパイルがNOエラーになりました。
スケッチの拡張子も、pde から ino に変更されています。

で結論から言えば、LCD文字化けは直らず!!!
それ以外はVer1.0でコンパイルしたスケッチでも正しく動作しているようです。

4~5時間文字化けせずにいたので、てっきり直ったと思ったのですが・・・・
人をあざ笑うかのように再発しました。
表示不良だけで、ビーコン・コントローラーとしては動作しているから
良しとするか・・・・でも折角のUTC表示のGPS時計が使えないし・・・・・

まだまだ続きそう

2011年12月3日土曜日

Arduino Mega 2560 & DDS60 WSPR/QRSS Signal Source v2.0

W3PM WSPR Projects ですが
実は、Arduino Uno版を組立てる前にコッチをテストしていました。
これもDDSは”DDS-60"ではなく、これ(AD9850-M)を使って組み立て。
こっちは、特に問題無く動作している様子ですね・・・・
”Arduino Mega 2560”は、以前他の商品を購入した事のあるSeeed Studioから購入。
PayPalを使えて送料も無料、香港から1週間程度で到着です。
郵便局のホームページからトラッキングできるので、気休めですが安心!

Unoより少し大きい

2011年11月28日月曜日

Arduino Uno & DDS WSPR/QRSS Controller つづき

色々ヘルプ検索したが、このBloggerはファイルのアップロード出来ないようだ。
別サイトにファイルを置いて、リンクするか・・・・?
そんなこんなで、スケッチのアップロードはペンディング。。。。
11/29追記:サイトを作って置いてみました。ここ

本題。
肝心のGPSは、何年か前APRSに興味を持っていた時にOpenTrackerと共に
ここから購入したもの。
RS232C仕様のものなら他製品でも使えると思います。
TTL仕様ならGPS接続部分のトランジスターを省略して直結すれば良い。

Arduino Uno & DDS WSPR/QRSS Controller

タイトルの物が・・・・
以前から”LCD文字化け”で、お手上げになっている工作物です。
オリジナルは、"W3PM WSPR Project"のサイト。
"W3PM"で検索すればすぐに見つかります。
オリジナルは”DDS-60”を使っていますが、今回は以前紹介した
AD9850-Mを使ってみました。
使用想定親送信機が135kHz帯デジタル・アンプ構成なので、
矩形波出力の無い”DDS-60”ではなく、簡単に矩形波を取り出せる
AD9850-Mの検証も兼ねてということで・・・。


スイッチサイエンスから購入したUno本体と汎用シールド
右下のものは一部をDDSモジュール用として使います。