無線ブログ集
メイン | 簡易ヘッドライン |
リンク 単体表示
JJ1LFO ~線無きことかな~ (2024/11/23 6:36:07)
現在データベースには 22 件のデータが登録されています。
たまたまデンマークの OZ1JHM Hjalmar Skovholm Hansen さんの、Arduino CW Decoder
Arduino Uno互換ボードへの移植
- Beginner Kit 搭載の Grove - OLED Display 0.96" (SSD1315)
- I2C 接続の Grove - I2C 16x2 RGB Backlight LCD
- 入力のADCのサンプリング周波数を起動時に自動計測
- マイク Grove - Sound Sensor
- LED Grove - Red LED
M5Core2 への移植
改造点
表示
- スクロール・テキスト領域に、デコードした文字を表示。
- 下記の強度表示領域の左側に、WPM を表示。
- トーン信号強度を GREEN 、検出閾値の強度を DARKGRAY、検出したと判断したら YELLOW で描画する領域。これは追加してみると無線機音量や無線機との距離の目安や、パラメータ調整にもかなり便利でした。
"This program is a modified version of "OZ1JHM CW Decoder VER 1.01”,
originally developed by Hjalmar Skovholm Hansen."
という文章を表示する起動時 Splash も追加。
Goertzel Algorithm
Mic 入力
動作動画
所感
ToDo
- 和文モールス符号に対応。 ホレ 、 ラタ で英文/和文自動切換え?
- 検出 Tone 周波数の自動追従を追加したい。
- Mic AGC の最大ゲイン調整機能を追加した方がいいかな?
David Clark Model H10-13.4 について
マイク
ヘッドフォーン
装着感
製作
変換ボックス
IC-705 無線機用変換ケーブル
PC SP/MIC 用変換ケーブル
加工・組立
使ってみて
知りたいポイント
- 一体、どの程度の挿入損失があるのか?
- 周波数帯により得手、不得手があるのか?
- 同じ周波数ならインダクタンスが少ない方でマッチングする方が損失が少ないと想定されるが、本当か?
測定
方法
結果
考察
つい先日までは、Windows x64 Arduino IDE 2.2.1 で M5Core2 に正常に Sketch を Upload 出来ていたのだが。
症状
: :
Writing at 0x00171e3d... (100 %)
Wrote 1453808 bytes (871259 compressed) at 0x00010000 in 13.7 seconds (effective 848.0 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
と正常に書き込めたように表示されるのだが。
M5Core2 が正常に起動しない。
Arduino IDE のシリアルモニターを確認すると。
M5Core2 initializing...axp: vbus limit off
axp: gpio1 init
axp: gpio2 init
axp: rtc battery charging enabled
axp: esp32 power voltage was set to 3.35v
axp: lcd backlight voltage was set to 2.80v
axp: lcd logic and sdcard voltage preset to 3.3v
axp: vibrator voltage preset to 2v
touch: FT6336 ready (fw id 0x11 rel 1, lib 0x3008)
のような起動時のログメッセージが延々と繰り返し出力されている。
再起動を繰り返して立ち上がれないようである。
ググってみても、私の場合に該当するような情報は見当たらず。
Arduino IDE のアンインストールと再インストールを繰り返してみるなど、
いろいろやってみるが症状は改善せず。
原因
- 2.0.7 正常
- 2.0.8 再起動を繰り返す
- M5Stack-Core2
- M5Core2
必ず M5Stack-Core2 を選択しないといけない。
無線
- APRS I-Gate を開設したら YAAC 作者の KA2DDO Andrew さんから APRS Message が来た
- GPS による基準周波数(時間)発生器をつくってみた
- QRP ANTENNA TUNER タカチのケース加工サービスを利用してみた
- IC-705 外部キーバッドをフリスクケースで作ってみた
- IC-705 TUNER 一定キャリア送信プラグの作成
- QRP SWRインジケータの製作
-
アンテナ・チューナーのコイルの未使用タップをショートするとQが下がって損失が増えるのか?
-
IC-705 をPCとケーブル接続無しで FT8 する。
- IC-705 亀井堂総本店 瓦煎餅缶 アンテナ・チューナー
Antenna
-
移動用マルチバンド EFHW アンテナをつくってみた
-
7/21MHz帯ベランダ・ワイヤー・アンテナに3.5MHz帯延長エレメント追加してみた
-
21MHz帯ベランダ・ワイヤー・アンテナに7MHz帯延長エレメント追加してみた
アクセサリー
Raspberry Pi
APRS I-Gate を開設
2 エリアに居たときには、APRS が余り盛んではなかった浜松市南区で UIView32 を使って APRS I-Gate を開設して、近くの国道1号を通る移動局や市内南部にサービスしていた。RTL-SDR + Direwolf
C500 + TNC-22 + YAAC
YAAC 作者から APRS Message が来た
移動運用向けに、長いカウンターポイズ/ラジアル線不要でコンパクトにまとまり、複数バンドにオンエアー可能なEFHW アンテナを作る。
動機
ダイポールアンテナ
- グランドが不要なのは大きなメリット。
- ただし、ポールなどでワイヤーの中央を吊り上げて長い同軸ケーブルで給電する必要がある。
1/4波長垂直系アンテナ
COMET HFJ-350M
- オプションの拡張コイルとノンラジアル周波数拡張コイルを使えば1.8 MHz帯から 145 MHz帯まで使える。
- バンド切替は短縮コイルのバンド毎に固定のタップをショート。
- SWR 調整はロッド・エレメントの長さを調節しないといけない。調節時は感電しないように送信停止しないといけないのが少し面倒。
DIAMOND RMH8B
- 7 MHz帯から 50 MHz帯まで使える。
- 短縮コイル部の調整が無段階なので、調整が楽そう。
- アンテナ・エレメントを電線で延長して短縮コイルを緩めて短縮率を軽減する事も出来る。
- アンテナ接栓が BNC で機構的に弱いという評価もあるが、かなり便利そう。
1/4 波長のロングワイヤー
- 7/21 MHz帯で約 10/3.6 m の電線さえあれば作れる。
カーボン釣り竿アンテナ
近頃巷で流行しているカーボン釣り竿そのものをエレメントとして使う方法。
EFHW アンテナ
ツェップ(ライク)・アンテナ
- Steve Yates - AA5TB さんの The End Fed Half Wave Antenna
- Explaining End Fed Half Wave Antennas & Experimentation - Ham Radio DX
Multi-Band EFHW アンテナ
- Steve Dick, K1RF さんによる The End-Fed Half-Wave Antenna
予備実験
インピーダンス変換トランス
ワイヤーの長さ
製作
構成
インピーダンス変換トランス
- インピーダンス比 1:49 (巻き数比 1:7)
- インピーダンス比 1:64 (巻き数比 1:8)
給電部
- 無線機と接続する BNC ジャック。
- インピーダンス変換トランス。
- アンテナ(赤)とカウンターポイズ(黒)の接続ターミナル。
- トランスの1次側と2次側の接続/非接続を試せるトグルスイッチ。(これはどちらにしても、余り影響がありませんでした。接続したままにしてスイッチは不要でしたね。)
アンテナ・ワイヤー
展開方法
測定
7 MHz帯
21 MHz帯
28 MHz帯
14 MHz帯
5~30 MHz
試用
動機
実験
- VCC : 電源 2.7V - 3.6V
- GND : グランド
- TXD : シリアル送信(最大電圧 3.6V)
- RXD : シリアル受信(最大電圧 3.6V)
- PPS : 秒パルス出力(LED カソードとも接続されている)
PPS Time Pulse 出力周波数
- 割り切れない周波数を設定すると、長区間の平均周波数は正確であってもジッタが発生する。
製作
回路
- GPS の電源は USB からの VBUS 5 V をシリーズレギュレータで 3.3 V にして使用。
- GPS で 50 Ohm 負荷を直接駆動するのは厳しいので。インバータ 74HC04 でバッファ。
- 74HC04 の一個当たりの出力電流は 3.3V 電源では +- 3 mA 程度なので、2個パラ出力にすると共にアッテネータで負荷を軽くしてやる。
- アッテネータで電圧が小さくなるので、バルストランスを使用したBTL駆動にして電圧をかせぐと共に GND に流れ込む電流(ノイズ)を減らす。
- BNC出力に 50 Ohm 負荷ではなく高インピーダンス負荷を同軸ケーブルで接続した時も、50 Ohm 付近の負荷インピーダンスにする為に、50 Ohm Load ON/OFF スイッチを追加。
- パルストランスを使用した BNC 出力では、出力周波数が低くなるとインダクタンスが不足して矩形波が大きくサグるので。シングルエンド出力でバラ線を簡単に接続するため 2P のターミナルブロックも用意。
- (クリックで拡大)
部品その他
- パルストランス
- BNCジャックと2Pターミナルブロック
実装・組立
使用法
周波数設定について
- Frequency Locked [Hz]
- Duty Locked [%]
基本周波数近傍スペクトル
Spectrum Analyzer Settings
- Vertical 10 dB/Div. Max. 130 dB
- Horizontal 0.5 MHz/Div.
にして周波数設定による差を比較。
TP5(Timepulse 5) Settings
- Frequency Locked: 4,000,000 Hz
- Duty Locked: 50%
の時の 4 MHz 近傍スペクトル。
48 MHz /4 MHz は整数で割り切れるので綺麗な線スペクトルになっている。
TP5(Timepulse 5)
Settings
- Frequency Locked: 4,040,000 Hz
- Duty Locked: 50%
にすると、48 MHz を整数で割り切れないので出力波形にジッタが発生するため、スプリアスが盛大に発生。
波形としてはジッタが発生するが、長区間のカウント値は正確なのでカウンタの校正などの用途には使えるかも。
高調波スペクトル
Spectrum Analyzer Settings
- Vertical 10 dB/Div. Max. 130 dB
- Horizontal 10 MHz/Div.
にして出力 Duty による違いを観測。
TP5(Timepulse 5) Settings
- Frequency Locked: 8,000,000 Hz
- Duty Locked: 50 %
TP5(Timepulse 5) Settings
- Frequency Locked: 8,000,000 Hz
- Duty Locked: 20 %
出力周波数設定を記憶
GPS 非ロックの LED 表示
- LED の点灯 Duty = 100% - Duty Cycle 設定
IC-705 の受信周波数精度を確認してみる
おわりに
温湿度センサーが上手く動かない?
- Temp: 0.00C <-> nanCC の繰り返し
- Humidity: 0.00%
搭載されている温湿度センサーが DHT20
Some upgraded kit has been euqipped with DHT20. If your Humidity and Temperature Detector on the kit is black then the detector is DHT20 and the example code of it is after DHT11.
と書いてあった。
よくよく自分の Kit を確認すると、
やはり、カバーの色が黒の DHT20 だった。
DHT11 はカバーが青色らしい。
さっそく、 Seed の Wiki の DHT20 用 の
Lesson 8: Detecting Surrounding Temperature & Humidity
コード
//Temperature and Humidity Sensor
#include "DHT.h"
#include <Arduino.h>
#include <U8x8lib.h>
#include "Wire.h"
#define DHTTYPE DHT20 // DHT 20
DHT dht(DHTTYPE);
#if defined(ARDUINO_ARCH_AVR)
#define debug Serial
#elif defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_SAM)
#define debug SerialUSB
#else
#define debug Serial
#endif
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
void setup(void) {
debug.begin(115200);
debug.println("DHTxx test!");
Wire.begin();
/*if using WIO link,must pull up the power pin.*/
// pinMode(PIN_GROVE_POWER, OUTPUT);
// digitalWrite(PIN_GROVE_POWER, 1);
dht.begin();
dht.begin();
u8x8.begin();
u8x8.setPowerSave(0);
u8x8.setFlipMode(1);
}
void loop(void) {
float temp, humi;
temp = dht.readTemperature();
humi = dht.readHumidity();
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0, 33);
u8x8.print("Temp:");
u8x8.print(temp);
u8x8.print("C");
u8x8.setCursor(0,50);
u8x8.print("Humidity:");
u8x8.print(humi);
u8x8.print("%");
u8x8.refreshDisplay();
delay(200);
}