にゃん太郎とアマチュア無線

メインクーンのにゃん太郎と趣味のアマチュア無線と電子工作の記録です。

Wemos D1 MINIでKT0915 DSPラジオ

とにかく安いNodemcu D1MiniがWemosから出てきました。ESP8266関連でこれはいいです。
なにしろショップのAliexpressで4$です。この値段でピンヘッタはオスとメスの2種類ついているし、すごいとしか言いようがないです。また対応のシールドも結構出てるようで、今後のの成り行きではこれがNodemcuも主流になるような気がします。
今回私はAliexpressはPaypalが使えないので、敬遠してるのでEbayで購入しました。HKの業者に頼むと1週間ほどで入手できます。
ということで試しにKT0915を使ったDSPラジオを作ってみました。3Vで動作するので電源が楽です。
電源は3Vのコンバータモジュール 5個で2.35$です。
KT0195はAitendoのモジュールに変換基盤をつけてます。水晶はクロックモジュールから流用しました


DSC03403

これは上部に日時を表示させていますが、WifiでNTPに接続して時間を較正してから、表示させています。一応RTCモジュールを載せていますが、これにすると内部の時計だけで、RTCモジュールは必要ないかもしれません。この辺は先人のmacsbugさんのBLOGに感謝です。このBLOGにはD1Miniの情報も大変参考になります。実は私ここに書かれていたのでD1Miniの存在を知りここに買ってしまいました。
またここのコードはものすごくきれいで大変参考になります。私が書いたものとえらい違いです。

動作ですが、ロータリエンコーダで周波数を変更したかったんですが、ESP8266の割り込み処理がいまいちよくわからず、とりあえず、放送局をタクトSWでダイレクトに指定するようにしています。もう一つのタクトSWは音量調整用です。

Si5351Aその2

少し放置していたSi5351Aですが、ネットで使用例が多いライブラリsi5351.hを使ったんですが、ところがこのライブラリを使ってK6BEZのスケッチを動かすと、ArudinoNanoとかUNOだと大きすぎて書き込めません。それでしばらく放置してましたが、最近ESP8266を使うのが多く、8266はIDE1.6ででないと使えません。それで試しにIDE1.6でスケッチをコンパイルすると、Nanoに書き込みできることがわかりました。UNOとかNanoなんかの旧世代のArudinoを使うときは、安定度抜群の1.06がベストと思ってたんですが、いろいろ問題のある1.6を少し見直しました。ライブラリによっては、こんなにスケッチが小さくなるとは驚きです。

それでちょっと試してみました。家のクリエイト730V(50MHZオプション付き)の50MZのSWRを測定してみました。ほんとはちゃんとフィルターを入れないとダメなんだろうけど、とりあえずスケッチをSi5351Aに変更して、回路はそのまま出力も変更しただけです。
スケッチのDDSの部分は例文にある
si5351.set_freq(current_freq_MHz *100000000ULL, SI5351_PLL_FIXED, SI5351_CLK0);
にしました。

DSC03372

6m5351

ちなみに7Mhzです。
7M

うーん それなりにちゃんと表示できているみたいですね。SWRの値はあまり信用できませんが、、、
ちょっと出力のゲインが高いみたいで、もう少し調整が必要なみたいです。145MHZは今ちゃんとしたアンテナがないので、また用意できれば調べてみます。
本当は比較したいちゃんとしたいアナライザがほしくなります。MINI60のSWRもあまりあてにならないし、、
なお出力はK6BEZオリジナルと同じで1μのコンデンサを入れています。

NodeMcu WIFI Development Board


NodeMcu WIFI Development Board買ってみました。別にESP8266のDEV-KITを買ってもよかったんですが、これはESP8266Eに中華お得意のCH340USBがついています。もっとも値段自体はArudinoUNO互換機よりも少し高いですが、1000円以内で買えます。これはもともと最初に入っているファームはNODEMCUが入っていて、LUAで使うようになっていますが、やはり使い慣れたArudino IDEで使いたいということでちょっと使ってみました。
Arudino IDEではNodemcu1.0(ESP-12E)でちゃんとこのボードが選択できるようになっています。そしてこのボードを選択すると、面倒な書き込みモードにする必要がありません。これは便利です。Arudinoと同じ感覚で使えます。
試しに1.8TFT 128X160のモジュールを表示させてみました。
ESP8266用のライブラリは、Adafruit-ST7735-LibraryをESP8200用にForkしていて問題なくすぐに動きました。
スケッチのPINは
RST 05
CS   15
D/C    04
に変更してあります。
DSC03369

ただ最初に少しはまったのが、GPIOのPINの表記が違っています。
NODEMCU_DEVKIT_V1_0_PINMAP


こんなふうになっていて読み替えてつながないとダメです。

電子はんだごて TS-100

電子工作にかかせないものといえばはんだこてですが、いままでずっと定番のHAKKOのFX-600を使っていました。セラミックヒータなのですぐに使えて便利なんですが、なんといっても電源の切り忘れがしよっちゅうあります。まあ温度調節できるんで、火事の心配はないんですが、ちょっと気になります。
それでお得いのBanggoodでTS-100がセールで58.58$になってたんで購入してしまいました。これははっきりって高いだけあってすごいです。最高温度は400度までなんですが、HAKKOと比べると温度の表示がちょっと高いかもしれません。私よくポリウレタン線の被覆はがしに使うんですが、HAKKOの場合ダイヤルを420度に設定しないとうまく被覆が溶けてくれませんが、これは350度設定で十分溶けてくれます。普段のはんだでは270度くらいで十分使えます。
ボタンを2つ長押し もしくは3分間使わないと自動Sleepに入りますし、(これはUSBにつないで時間は設定できます。)
温度調整もボタン長押しで簡単にできるし操作性も抜群です。また写真を見てもわかるようにすごく小型で軽いです。


DSC03366

これちょっと難点は電源が12Vから24VのACアダプタなんです。またDCジャックのコネクタがセンターが2.5mmのジャックになっているので注意が必要です。
ヒートアップ時間は ACアダプタが12Vで17W 40秒 16Vで30W 20秒 19V 40W 15秒 24V 65W 11秒といった仕様なんですが、ほとんど待たずにすぐに使える感覚です。
このACアダプタはちょうどノートPCのACアダプタが使えます。私はハードオフで500円の19V富士通製ACアダプタを買って使っています。最近のノート用ACアダプタは内径が小さくて外径が大きいものが多いので注意が必要です。旧式のノートPC用で標準のジャックだとピッタリです。
また消耗品のこて先が専用なのでちょっと高いです。

DSC03368

なおUSBにつなぐとCONFIG.TXTというファイルが1個あるだけで中身は

T_Standby=200   #(100~400)
T_Work=300      #(100~400)
Wait_Time=180   #(60~9999)
Idle_Time=360   #(300~9999)
T_Step=10       #(5~25)
Turn_Off_v=10   #(9~12)
TempShowFlag=0  #(0,1)
ZeroP_Ad=262    #ReadOnly

になっています。これで最初のデフォルト値を設定するようです。
なおいろいろファームがでていますが、このファームアップはものすごく簡単で両方のボタンを押しながら電源を接続するとDFUモードに入るのでその状態で、USBに接続すると普通にUSBドライブとして認識されますので、そこへファームのBINファイルをコピーするだけです。DFUモードにしないと容量が少なくてコピーできません。
いまままでいろんな機器のファームをUPしてきましたが、こんなのは初めてです。こうでなくちゃね。

K6BEZ DG7EAO アンテナアナライザにバンド選択を追加 その4

もうこれで最後にするだったんですが、ようやく格安Banggood液晶 2.4 Inch TFT LCD Shield Touch で動きました。これは前にも紹介したBanggoodで販売されている2.4 Inch TFT LCD Shield Touchです。なんと送料込みで6.49$です。前に作ったAdadruitのものと比較するとなんと1/10です。
これは表示速度もAdafruitとほとんど同じですごく早いです。ただ難点はこのShildはアナログポートのA0からA4までを使っていて、普通のUnoを使うとアナログポートは1個足らなくなることです。ではA0からA7があるNanoを使うと、せっかくのShildの意味がなくなってしまいます。
それで前回紹介した、Uno互換機を使いA6とA7を使うことによって完成させました。
タッチシールドの感度は若干鈍いようですが十分動きます。

R0010310

R0010311

ドライバは
#include <SPI.h>
#include <Wire.h>    
#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>

ピンの設定は
#define YP A3 
#define XM A2 
#define YM 9 
#define XP 8 

#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0

#define LCD_RESET A4

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
ad9850のピン設定は
const int RESET=12;
const int SDAT=10;
const int FQ_UD=11;
const int SCLK=7;
にしました。
なおAdafruitのTFTLCDに表示する特殊文字はCP437で表示されるのがわかりました。
tft.println(char(16));のようにすると表示されます。
それとオリジナルのsetup()にあるanalogReference(INTERNAL);をコメントアウトしないとタッチパネルが動作しないようです。これコメントアウトしたらアナログの入力が変化するみたいですが、今のとこ影響ないみたいです。

なおこのアナライザの部品で苦労するのは50Ωと5KΩの抵抗ですが、Bispaというところで買えます。そのほかは649Ωは680Ωでいけます。ゲルマニュームダイオードはAA143ですが、1N60では使えなくはないですが、出力が低いです。ヤクオクで売られている日立の1N34AならばAA143とほとんど変わらないです。オペアンプMCP6002はLM358Nあたりで代用できます。もともとSWRの値自体は市販のアナライザに比較してあまり正確ではないので、最低のSWRを見つける目的で使用するのがいいでしょうね。なんといっても最大の利点は安いことです。

K6BEZアナライザ用のArudinoとTFTシールド

前にBangoodで購入した安い2.4TFTシールドですが、これがかなり難物でした。以前AdafruitのTFTシールドの記事を書いたんですが、6000円近くもしていかんせん高い。しかしこのBangoodのは送料込みでタッチペンまでついて6.49$です。これ安いだけあっていろんなロットのものがあるみたいです。まず最初に購入したものは、IDが0xC505というもので満足に動くライブラリがない。やっとPP_TFTというのを見つけてなんとか動いたのですが、タッチパネルがまったく使い物にならない。最近タッチペンが付属するようになって、AdafruitのTFTLCDで動くとのレポートがありましたので、また購入してみました。これはちゃんとAdafruitのTFTLCDのライブラリで動き、またタッチパネルも正常に動作します。そしていざアナライザ用にと、、、しかし私の考慮不足で、なんとA0からA5までこのシールドは使ってます。ArudinoUNOはAtmega328PUを使っているので、アナログピンはA5までしかありません。K6BEZアナライザでは2つのアナログ入力がいるので足りません。困った。もともと、Nanoなんかに使われてるAtmega328AUではA6,A7が使えるようです。また最近の互換機で電源がMicroUSBを使っているタイプではAtmega328AUを使っているものが多いようです。
それでGoogle先生に尋ねるとSIGH様のBLOGを発見。この互換ArudinoUNOって前にBangoodで買ってなかったけ、。。ありました、A6,A7のランドがちゃんと出ています。さっそくソケットを埋め込んで
ました。使ってみました。上記のBlog通りにAurdinoIDEを設定してやると、問題なく使えました。

DSC03363


これでなんとか安いタッチスクリーンでのアナライザを作ることができそうです。バンド周波数を入れられるようにしてみました。
DSC03360

< を押すと周波数UP > を押すと周波数Downです。、、、▲▼を表示させるコードがわからないので逃げました。(笑)とりあえずスケッチ上での表示はできたんですが、、
とりあえずここまで最近ちょっと忙しくて触る暇が取れません。完成は正月休みかな、、、

DDSジェネレータ Si5351A到着

前に注文していたAdafruitのSI5351が届きました。ここに直接注文するのは初めてなんですが、なにしろ国内ではどこも販売していない。と思ったら11月15日にストロベリーリナックスで発売されていたようですね。1個900円。同じくらいですね。しかしSi5351単体と水晶のみの基板です。
それに引き換え同程度の値段Adafruitの基板では、I2Cのプルアップ抵抗、レベルシフト用のバッファアンプついている。また5Vでも使えるのでまあいいかと思っています。送料と時間は余分にかかりますが、、、
このSi5351Aの仕様は8Khzから最高160MhzまでDDSで発振できることです。Si5351の仕様では220Mhzぐらいまで出せるようです。またインターフェイスがI2Cで制御できますので楽ですね。Adafruitではライブラリも出ていますのでArudinoで制御するのは楽ですね。

注文したのが、12月7日で12月24日に届きました。U.S. Postal Service First Class Mail なんでこんなもんでしょう。一応トラッキングNoはあるんですけど、USA国内向けなのでまったく役に断ちません。送料が$9.75かかるので、ちょっと3個大人買いをしてみました。といっても1個7.95$ですが、、AD9850のモジュールと値段は同じくらいですね。
しかしかなり梱包はいい加減です。A4サイスの薄いナイロン製に封筒で届きました。

DSC03357


ととりあえずピンを植えてコネクタをつけてみました。
DSC03358

K6NEZアナライザのDDS AD9850からら楽に移行できそうです。これでちょっと前に作ったTFTのアナライザの周波数を1Mhzから145Mhz帯まで拡張できるかどうか試してみます。これがうまく動いたらAD9850は卒業です。

ESP8266でセンサをつなぐ

まえにArduinoでセンサをつないで、1602の液晶に時計とか湿度を表示したりしましたが、そういえば前にOLED液晶を買っていたのを思い出しこちらで試してみました。このOLEDは画面が0.96インチで画面はちょっと小さいのですが、1602タイプの液晶と違い、ものすごく画面鮮明です。また省エネです。このOLED液晶はAdadruitのSSD_1306ライブラリで動くのですが、てっきりカラー液晶だと思っていて、ライブラリからテストを書き込むと黄色と青の表示が2分割されていておかしいなと思っていました。今回試してみて初めてわかったのですが、なんとこのOLEDはもともとモノクロタイプで上部に黄色、下部にブルー表示させるようになっているものと分かりました。ライブラリはESP8266で使うにはESP_Adafruit_SSD1306.hを使います。

どうせ省エネをめざすならば、Arduinoでなくいま話題のESP8266をを使ってみました。しかし今回初めて使ってみて、すごいデバイスですね。Wifiで接続できて、しかも安い。同じような目的のXbeeならば10倍ちかくしますもんね。アナログ入力が1つしかないのが残念ですが、まあこれからすこしするともっと多機能なものがでてくるような気がします。

もうすでに国内でも話題になっていて先人たちがいろんな情報を上げてくれています。そんなに苦労せずに、ArudinoのIDEで自分の慣れている環境が作れました。またいろんなスケッチを上げてくれているので、下記の写真のような表示は製作に2日、スケッチの方は、先人たちが上げてくれているスケッチの切り貼りだけで1日足らずでできました。
DHT11モジュールとRTCはDS3231を使っています。このDS3231はAmazonで205円で、中国からなので10日ほどかかかります。

ESP8266は電源の3.3Vがシビアで特にWifi通信をすると、電源が弱いと不安定になります。100円ショップの9Vアルカリ電池から秋月のTA48M033Fで3.3Vを作っています。単3 4本でも十分動くのですが、省スペースなのでこちらにしました。上部のコネクタはUSBシリアル用のコネクタです、ATMEGA328と違いDTRが必要ないので、PL2303の安いコンバータが使えます。ただし、このUSBコンバータの3.3Vは動くことは動くのですがすごく不安定です。最近の安い互換Arduino-UNOでは3.3VのコンバータでもAMS1117を使ったりしてますので、電源だけこれからとれば、十分動作するでしょう。純正UNOでは動かないそうです。

ESP8266はアップロードするのにGPIO0をGNDに落としたりするのが面倒ですが、まあ動けば書き換えることもないわけで、これが正解かもしれません。
なお温度の℃の表示は1602では
  lcd.print((char)223);
  lcd.print("C ");

SSD1306では
  display.print((char)247);
     display.print("C ");

です。SSD1306はちょっと変な感じがしますけど、、。

DSC03356


ESP8266を購入するときこのESP-07とESP-05を買ったんだけど、ESP-05の方の使い道がわかりません。なにしろスケッチをかくのにGPIOの端子が全くないので、書き込めない。もしかしてこれはATコマンドモードのみでいろいろ設定してWifiの通信モジュールとして使うものなんかな? ファームを最新のものにしたいんだけど、できないです。

Arudinoで温度 湿度 大気圧 センサーをつなぐ


結構arduinoではいろんなセンサがあります。今回日時、温度、湿度、大気圧を2004A液晶で表示してみました。
最初1602の液晶でで表示させてみたんですが、温度 湿度 時間だけならいいんですが、大気圧もあるので1604の液晶(2004A)を使いました。

まずセンサですが、温度 湿度は定番のDHT11 大気圧はGY-68を使いました。でいずれも500円ちょいで買えます。時間のRTCはDS3231でなんとリチウム電池付きで150円くらいで買えました。
I2C接続のために、GY-68がGNDとVCCのピンアサインが違っていましたので、接続にちょっと細工をしています。これ3.3Vの3端子レギュレータが搭載されているので便利ですね。

DSC03351

Arudinnoはこれを使いました。これ今回の実験ではのような用途にはめちゃくちゃ便利です。
DSC03352

表示させた場合
DSC03350

ライブラリは
#include <dht.h>
#include <Adafruit_BMP085.h>
#include <LiquidCrystal_I2C.h>
これとtime.hが必要です。
しかしなにも考えずにライブラリだけを入れてあとはスケッチの例で動作するのを確かめてから、その例にならいあとは、呼び出すだけでそのまま使えるというのはすごいですね。
またArudinoのリアルタイム処理のすごいとこには関心します。

あとRTCの時間設定が結構めんどくさかったりします。ESP8266のWifiモジュールも手に入れましたので、Wifi経由でNTP時間をとってきてセットしてみます。しかしこのモジュールは3.3Vなんでどうするか悩み中。UNOでは電流容量が小さすぎて動かないようだし、、、

この最終目的は前にRaspberry-PIでaprsサーバを立ち上げましたので、(今も稼働中です。)それと連携して気象ステーションをあげようかなと思っています。気象ステーションはAmazonあたりで売っているんですが、結構いいい値段がします。Piとの連携はメドがたったのですがArduinoの方がまだだったので実験がてら、、、
まあこれで風力とか雨のセンサを追加すると結構な値段になるような気もします。途中で挫折するかも、、、
まあ いつになるかわかんないですけど、、、、

K6BEZ DG7EAO アンテナアナライザにバンド選択を追加 その3


すっかりArduinoのプログラミングにはまってしまい、今度はロータリエンコーダを使って周波数を設定できるようにしてみました。前にタクトスイッチで周波数を選択できるようにしたのですが、短押しで周波数+ 長押しで桁移動、とさらにスタート周波数とストップ周波数を入力するには使えなくはないんですが、操作性にかなり問題がありました。
それでロータリエンコーダを使い、周波数設定を簡単にできるようにしてみました。できればスイッチ付きのエンコーダを使えば、もっとスムーズになるかも、
エンコーダの制御にはrotary.hの割り込み制御を使わさせていただきました。その関係でロータリエンコーダのピンは2と3の固定になります。
タクトSWはアナログピンのA2に配線しました。


DSC03334

DSC03335

まずエンコーダを回すとStart周波数が設定できます。そしてタクトSWを押すとStop周波数を設定できます。
SW長押しでリセットです。

動作は下記になります。



上記の改良版です。Youtubeのリンク先にスケッチを置いてあります。





しかしDG7EAOのアラライザにこんなにはまると思わなかった。このタイプのアナラザは精度はいまいちなんですけど、とにかくArudinoのプログラミングがとても楽しいです。



K6BEZ DG7EAO TFT アンテナアナライザにバンド選択を追加 その2


前にタッチスクリーンでバンドセレクト機能を追加しましたが、まあコストの点で安い2.2TFTを使ってタクトスィッチでバンドセレクト機能を追加したののですが、これで最終形態です。TFTのライブラリはオリジナルではUcglibを使っていたのですが、AdafluitのILI9341に移植しました。

タクトSWはD2とD3に増設します。回路図はDG7EAOのサイトにあります。TFTは22 inch 2.2" SPI TFT LCD Display module 240x320です。3.3Vの液晶なんでちょっと抵抗等の配線が面倒ですが、ebayで送料込みで600円ちょいで買えるのが魅力です。

なおarudinoはnanoではなくUno互換機で作りました。
移植にあたっては上記回路図ならば、下記のスケッチで動くはずです。

#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"

//ILI9341 2.2 TFT 240x320 SPI Adafault driver
#define TFT_DC 6        //Wiring
#define TFT_RST 4         
#define TFT_CS 5
#define TFT_MOSI 11    //Wiring
#define TFT_MISO 13   
#define TFT_CLK 10     //Wiring

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST,TFT_MISO);

//Wiringと書いてあるところは実際に配線してください。他はDUMMYです。
  
今回2種類作ってみました。
まずは開始周波数と終了数は数を任意でセットできるようにしてみました。
この応用で簡単に周波数指定のDDSが作れそうです。

SW2 周波数指定 長押しで桁移動
SW3 周波数スキャン 長押しでリセット

DSC03314

そして上記をちょっと使ってみたのですが、任意で周波数のセットができるのはいいのですが、短押しで数字指定 長押しで桁移動と操作がすこし面倒です。やはり周波数指定はロータリーエンコーダを使ったほうがいいですね。あまり部品を増やしたくなかったので今回は見送りました。

それでバンド選択をすこし簡単にしてみました。こちらのほうが操作性がいいですね。
SW2 バンドスキャン 長押し リセット
SW3 バンドセレクト 押すたびに 3.5 7 10 14 21 28が選択できます。

DSC03313

DSC03312

動作は下記のようになります。


これでどうやら最終形態で落ち着きそうです。SWRの絶対値が信用できないとか、連続でScanすると波形が乱れる問題が残っていますがいものところ原因不明です。スケッチですがあまりにも汚いので公開は遠慮しておきます。どうしてもというのでしたらメールをください。

それからおまけで下記のArudinoUNO互換機をBangooで見つけました。なんとUSBがスマホと同じMicro-B端子になっています。いままでどうしてもシールドを重ねたとき、でかいUSB端子が接触して気を使っていたのですが、その心配がないです。値段も送料込み4.52$です。
いままでAitendoのびんぼうでいいのを使っていたのですが、値段もこちらのほうが安いのでこれにします。
MINIUSB端子よりMICROUSB端子のほうが耐久性もいいようなので、、

DSC03315






K6BEZアンテナアナライザにタッチスクリーンその2

いろいろ試行錯誤してタッチパネル使用のスタンドアロン型K6BEZアンテナアナライザの最終形態?を完成しました。なにしろArudinoは全くに素人なんでいろいろライブラリ関係で苦労しましたが、なんとか動きましたので公開します。
うちの3.5 7 14 21 28バンドのバーチカルアンテナ ダイヤモンドKV-5の1から30MHZのスキャン表示

DSC03280

3.5Mhzのスキャン表示
DSC03281

なお最低Swrの値は結構甘いみたいですが、アンテナ調整には十分使えるでしょう。

今回は前回と違いUcglibではなくAdafruit純正?のILI9341とAdafruit_GFX.hに移植しました。フォントはあまりきれいではないんですけど、、
各バンドはALLを選ぶと1から30Mhzまでスキャンして全体のSWRカーブを表示します。Clrはグラフ表示のクリアでScanを押すとSweepします。
残念なことは今回使ったAdafruit 2.8インチ TFTタッチシールド v2の値段が5000円ぐらいで、少し高いことです。Bangooあたりで売っている1000円以下のタッチシールドで動かないか、いま試しています。これがかなりの難物でバージョンによってドライバのICが違うみたいで、苦労しています。またA0からA5までは使っているのでDDSがDDSの制御ができないので無理かもしれませんね。

動画はこんな感じです。中華なんちゃってLCDより相当早いですね。さすがは高いだけあります。



youtubeのリンクに初心者の書いたスケッチで恥かしいのですが公開しています。
今後ですが、タッチシールドを使わずにタクトSWを使って周波数選択するようにするスケッチも書いてみます。

TFTアンテナアナライザにタッチスクリーン


タッチパネルでバンド選択をするようにしてみました。
使ったパネルはAdafruit 2.8インチ TFTタッチシールド です。


DSC03277

DSC03275


動作は下記のようになります。


タッチシールドはいろいろ探してみましたが、できるだけ安いものということで、単に以前にに購入したTFTにタッチシールドがついたものを購入してみましたが、タッチパネル用に5つもピンが必要なようです。
それでやむなく少し高いのですが Adafruit 2.8インチ TFTタッチシールド v2を使いました。これだったら3から9ピンまで自由に使えます。そして、これでしたらUgclibはそのまま使えますので、移植も楽です。
UgclibはadafuiltのAdafruit_ILI9341に比べるとすこし遅いのですが、文字のフォントがきれいです。
これでようやく一段落つきました。タッチシールドのチャタリングにえらく苦労しましたがいろいろArduinoの勉強になってなかなか楽しく遊べました。
まあコストを考えると、前に書いたタッチパネルなしのTFTを使ってSWでバンド選択できるのが一番です。

AD9850とAD9851DDSモジュール

このアナライザの原理は、DDSでアンテナに発振し、その周波数の進行波と反射波をArduinoで計算してシリアルポートに出力するというものです。原理的にはどのアナライザもおなじようなものみたいですが、いままで高い周波数が発振できるDDSが高価だったり、制御が難しくて、アンテナアナライザは結構高価でした。そしてK6BEZがこの安価な中華製DDSモジュールを使って安いアナライザを開発しました。この特徴は、部品点数が少なく、またArduinoで開発されているので、改造や移植も簡単で、特にグラフ化してPCで見られるようになり、アンテナ調整時には、連続Sweepにより、簡単に最低共振点を見つけられるようになりました。今では他にはスタンドアロンで使えるように1602タイプの液晶やDG7GAOの開発したグラフィック液晶をつけられるようにしたものがあります。

AD9850と9851ですが、チップ単体はピン互換です。チップ単体で使うよりフィルター類や水晶が実装されたモジュールで使うほうがはるかに使いやすいです。
そのモジュールですが、下記の写真のように中華製では、2種類のタイプが存在します。ピン互換のため、どちらもモジュールの乗っているチップがどちらかになっているようです。

DSC03272


モジュールの左のタイプの詳細はここにあります。右のタイプの詳細はここにあります。
右のタイプは古いタイプらしく、左のほうがシリアルのピンが一方に集められています。また右のタイプの回路図が間違っていてJ7のGNDと出力のD7に位置が上下逆になっています。
AD9850はクリスタルが125MHZになっていて9851は6逓倍モードがあるため30MHZになっています。
ピンをどちらかのモジュールで統一すると簡単に9850と9851が入れ替えできて便利ですね。

このモジュールは
W_CLK      クロック この立ち上がりのタイミングで下記のデータを更新
FQ_UD      周波数更新
SDAT(D7)    シリアル通信用での周波数データ入力 
RESET      DDSリセット
IOUT        出力ピン
の5つを使います。

AD9850はSine Frequency range: 0-40 MHz AD9851は Sine Frequency range: 0-70 MHz になっていて値段も1000円くらい高くなっています。
AD9851をArduinoで使う場合のスケッチの例はここにあります。
なおK6BEZのスケッチではサブルーチンのSetDDSFreq(double Freq_Hz)でDDSの周波数を制御しているんですが、この部分のint32_t f = Freq_Hz * 4294967295/125000000;をDDSの制御部分を単に周波数をAD9851用に180000000に書き換えただけではうまく動作しませんでした。

それで上記の例を参考にして


#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }


void tfr_byte(byte data)
{
  for (int i=0; i<8; i++, data>>=1) {
    digitalWrite(SDAT, data & 00000001);
    pulseHigh(SCLK);
  }
}


void SetDDSFreq(double freq_Hz) {
  int32_t freq = freq_Hz * 4294967296.0 / 180.0e6;
  for (int b=0; b<4; b++, freq>>=8) {
    tfr_byte(freq & 0xFF);
  }
  tfr_byte(0x001);
  pulseHigh(FQ_UD);
}

に変更したらうまく動いているようです。

DG7EAOのVNAも50Mhzに対応するようにコンパイルしました。大したことはしていないですが、、、
なおバンド選択でSweepした場合 Zoom inかZoom outを一回しないと表示されないようです。
ここにあります

DG7EAO TFT アンテナアナライザにバンド選択を追加

DG7EAOのアナライザにタクトスッチを増設してバンド選択をできるようにしてみました。この回路図どおりですが、ArduinoのみNanoではなくMicroを使っています。またダイオードを実験的に1N60に変更しています。
私 Arudinoは全くの素人なんですが、なんとかGoogle先生のおかげでできました。
もとこのアナライザはPin2とPin3にタクトSWが2つつけるようになっていて、1つは全体のSWR 1つは全体の最低SWRの周波数±1Mhzの値(詳細)を表示するようになっています。スケッチを描きかえれば任意の周波数を表示できますが、マルチバンドアンテナの調整の場合、それでは少し不便なので、タクトスイッチを1つ追加してました。

SW1 PD2 
アンテナ全体SWR表示

SW2 PD3
そのアンテナの最低SWR±1Mhzを詳細表示 または下記のバンドセレクトで表示したバンドの±1Mhzを詳細表示

SW3 PD4
 バンドセレクト 押すたびにバンドが選択されます。

DSC03273


動画はこちらです。なおこの動画は、試験的にダイオードをAA143から1N60に変更して実験を行っています。少し最低SWRが甘いようですが、手に入りにくいAA143の代わりで安価な1N60でも十分使えます。なおオペアンプはLM358 648Ω抵抗は680Ω 50Ωは100Ωの抵抗を並列に使っています。
これでしたらTFTディスプレイとAD9850以外はすべて秋月でそろうでしょう。




すばらしいスケッチを作ってくれたDG7EAO感謝です。


Very Tnx DG7EAO DK2JK and K6BEZ

DSO138 オシロスコープキット

中華製のオシロスコープキットを作ってみました。オシロは持ってるんですが、うん10年前のもので性能もいまいち、それでUSBオシロを検討してたんですが、結構な値段がします。bangood.comで下記のものを見つけました。
す。ここはなんでも今流行のドローン関係が充実してるらしく人気のようです。まあPAYPALが使えるのでそれが一番ですけど、、、
このサイトはキットが充実していて見ていても結構楽しいです。

http://www.banggood.com/DSO138-DIY-Digital-Oscilloscope-Kit-SMD-Soldered-13803K-Version-p-984002.html
8月10日に注文して19日に届きました。中国としては異例に早いです。スペックは

Maximum real-time sampling rate: 1Msps
Accuracy: 12Bit
Sampling buffer depth: 1024 bytes
Analog bandwidth: 0 - 200KHz
Vertical Sensitivity: 10mV / Div - 5V / Div (1-2-5 progressive manner)
Adjustable vertical displacement, and with instructions
Input impedance: 1MΩ
Maximum input voltage: 50Vpp (1: 1 probe), 400Vpp (10: 1 probe)
Coupling modes: DC / AC / GND
The horizontal time base range: 10μs / Div - 50s / Div (1-2-5 progressive manner)
With automatic, regular and one-shot mode, easy to capture the moment waveform
Available rising or falling edge trigger
Adjustable trigger level position, and with instructions
Observable previous trigger waveform (negative delay)
Can freeze at any time waveform display (HOLD function)
Comes 1Hz /3.3V square wave test signal source

性能もこの値段$23.99(送料込)だと200kまで測定できるので、まあまあではないでしょうか。
このキットはチップ部品をあらかじめ取り付けてあるものと、ないものがあってないものは、$20.99と少しお安くなっています。1608サイズのチップ部品は取り付けられなくはないんですが、なんといっても老眼できつい。さらにピンセットでよく飛ばしてしまいます。飛ばしたらまず見つけるのは絶望的です。でこの手のキットはチップ部品の予備がないと怖くて組立できません。それで4$ぐらいにはかえられないのでチップ部品取り付け済のキットを購入してみました。

もうちょっと高級品ならば
http://www.banggood.com/DSO068-DIY-Oscilloscope-Kit-With-Digital-Storage-Frequency-Meter-ATmega64-AVR-Microcontrol-p-981017.html

があります。これはまあキットといよりほとんど完成品ですね。

このキットはなんと中華製品には珍しくカラー印刷の組立説明書と操作説明書が付属しています。結構詳しくて回路図はもちろん製作後のtruble shootingまでついています。
製作途中の様子です。

s-DSC03242

チップ部品がないおかげで、製作は容易で不器用な私でも4時間ほどで組立完了しました。部品も過不足がなくパ-フェクトでした。

s-DSC03244

でもって完成後

s-DSC03246



s-DSC03249
カラー液晶も結構きれいです。

s-DSC03256
周波数カウンタとか電圧計とか 機能的にも十分ですね。

昔 秋月で発売されていたオシロより数倍いいですね。しかしこれが3000円足らずで買えるのはすばらしいです。しかし日本だとLCDだけで2000円以上するので無理な話かな。
このままでもいい気はするけど、ケースはどうしようかな?


k6bezアナライザににDG7AEOのLCD


ようやく注文していたLCDがEBAYから到着したので取り付けてみました。2.2 inch 2.2" SPI TFT LCD Display module 240x320 ILI9341 650円(送料込み)です。これでスタンドアロンで動作するようになります。
電池で動かせばタワーの上でも使えるようになりました。ただし電圧は少なくとも9V以上でないと安定動作しないようです。スケッチはDG7EAOのものを使いました。このままで動作しますが、SW1とSW2とスイッチを2つを追加 それと液晶用のソケットをつけて配線しました。

とりあえずPC用のVNA.EXEで表示 うーん 14Mhzを調整したいんですが、730-V1なんでどうやって調整したらいいんだろう。まあ地上高6mなんで仕方ないかな。

VNA


まず全体 SW1を押すと表示されます。SW2を押すと最低SWR周波数±1Mhzの周波数を拡大して表示します。今回ブレッドボードに組んでる関係上dk2jkのアナライザ上で設置したんですが、SWRの高いほうがやっぱり少し甘いですね。

s-DSC03258

結構きれいに表示されます。SWを増設して周波数の範囲指定できるように思ってスケッチを見たんですが、SWの判定にattachInterrupt関数を使っているため、このスケッチでは2つしか設定できないようです。(ATMEGA328ではattachInterrupt関数は2つまでしか使えない)
SW2の測定範囲の変更はスケッチのdouble SwrFreq = 14;となっているところを書き換えれば変更できます。でもいちいち書き換えるのは面倒です。そこでSWを押すと、バンド変更になるようスケッチを修正してみようかなと思ってます。
とりあえずわかりやすい7Mhzあたりを表示してみました。

s-DSC03261

しかしこの機能で液晶を入れてもEbayあたりで集めると5000円以内で作れます。一番高いものはDDSモジュールで1000円足らずです。AurdinoNanoならば500円くらい。
まあアンテナアナライザなんてあまり需要はないと思いますけど、液晶がついてこの機能であれば10,000円出しても購入しようとする人はたくさんいると思います。同じような機能のアナライザだったら30,000から50,000円くらしいはしますから。精度のほうもdk2jkタイプは若干SWRの高い時の値が低くでる傾向ではあるようですが、そもそも、SWRを厳密に測定する目的ではなく、最大の共振点を見つけるものですから、あまり関係ないと思います。またオリジナルのk6bezのものならば海外のサイトで市販のアナライザとの比較がでてましたが、ほとんど差がないようです。

さて これからですか、DDSモジュールのAD9850の上位AD9851に変更してSARK100 MINIと同様50Mhzまで拡張したいと考えています。

mini60 Sark100のPCソフトバージョンアップ

ちょっと見ない間にmini60のPC用ソフトWinPCC-Sark100 v0.8から0.9にバージョンアップされてスミスチャートがみられるようになったみたいです。

mini60v9

うちの730Vの7Mのチャートです。こんなふうにPCに見られて分析できるのはいいですね。
どうもこのソフトの作者は台湾?みたいですね.

ということでダウンドードはこちらからです。

そしてMR100のさらに安い製品をEbayで見つけました。
http://www.ebay.com/itm/Digital-LED-MR100-Shortwave-Antenna-Analyzer-Meter-Tester-For-Ham-Radio-DC-12V-/171857675959?pt=LH_DefaultDomain_0&hash=item28038406b7

これだったら送料込みで8000円ちょいで買えるみたいです。12vの外部電源が必要でBluetoothは使えないみたいですが、正確かどうかは別にして、これで上記のアンテナの情報が得られるとすれば大したものです。

なおオリジナルのsark100作者のEA4FRBののアーカイブはこちらです。

K6BEZ SARK100 アンテナアナライザ比較


最近Aurdinoにはまってまして、K6BEZのアンテナアナライザ を作りました。この中華AD9850のDDSを使ったantenna-analyserはいろいろ派生のものがあって今回2つ同時に作りました。AD9850は最近Amazonでも売ってますが、業者さんによってずいぶん値段が違いますね。私はEBAYで500円ほどで入手しました。
このアンテナアナライザの難点はパーツが集めにくいことです。パーツ単品は安いので少し多めに買ってみて2つ作って比較してみようというわけです。
注意するところはDDSのAD9850の接続がアナライザによってばらばらでスケッチをそれに合わせて書き換える必要があるところです。具体的にはAD9850からの接続の

const int SCLK  =12;
const int FQ_UD =11;
const int SDAT  =10;
const int RESET =9;
この部分を自分のArduinoの配線に合わせます。

パーツで特にゲルマニュウムダイオードAA143 こればっかりはEBAYで購入しました。5本で509円で送料込みです。なんとギリシャの電気店みたいですが、この業者さんはすごく早くて国際郵便で10日ほどで届きました。普通の中国の業者より早い。あと648Ωの抵抗はどうしても手に入らず、やむなく649Ωで妥協しました。オペンプのMCP6002や5KΩ 50Ωの抵抗なんかはDEGIKEY.JPで送料込みで2000円足らずで買えました。ここは日本語が使えるので安心です。なんと4回に分けてわざわざ佐川さんが持ってきてくれました。5KΩの抵抗が一番遅くて10日ほどかかりました。 また50Ωの抵抗ですが、1/2W型であれば、いつもお世話になっている高松市の電化センターにあるようです。このお店は結構古いお店で、昔の珍しい部品が結構残っていたりします。webでは出ていないので問い合わせてみてください。私が20個ほど買い占めたので在庫はすくないかも、、(笑)

まずはKN5UTEのアナライザ なぜこれかというとこの解析ソフトがすばらしいです。この解析ソフトはprocessingを使っていてAurdinoのIDE系統ですので、環境作りがわりと厄介ですが、中心周波数やスキャン幅の変更など、マウスでドラッグするだけでできます。
これはK6BEZのオリジナル回路の部品で、648Ωの抵抗だけ649Ωに変更しています。またArudinoは本来はMicroを使っているようなんですが、高いのでUNO互換のAitendoの貧乏でいいの を使いました。これだと500円+部品250円+Atmega328 230円でそろいます。まあAmazonあたりで互換機のほうが同じくらいの値段で手に入るのでそちらのほうがお手軽かも、、、ただしシリアルチップが中華製のCH340というチップなんでドライバーのインストールが必要です。AD9850 DDSを載せる関係で少し広めのArduino-Megaのシールドで組んでみました。


s-DSC03234

s-DSC03237

それで家のクリエイトの730V-1のアンテナを測定した結果です。地上高が5Mほどしかないんであまりよくないんですけど、、、

vrsrg

これ全バンドスキャンで5秒かかりません。下のブルーの部分はスキャンする帯域でマウスでドラッグして幅を自由に変更できます。実は このスケッチで for(int j=0; j<numports; j++) { ports.addItem(comList[j],j); } のエラーが不明で悩みましたが、PC内で仮想COMポートを立ち上げていたためと判明。これを停止すると起動して左上のUSBポートが選択できます。
7Mhz付近です。

kn5ute7



つぎはドイツのDK2JKのアナライザ しかし最近はドイツ語でもGoogleの翻訳が使えるので助かります。

s-DSC03235

これはわりと汎用部品を使っていて、オペアンプはLM358 オリジナルの抵抗は50Ωの代わりに100Ω並列接続 648Ωの代わりに680Ω を使ってあります。ゲルマニュウムダイオードAA143と5KΩの抵抗 AD9850 DDS 以外は秋月電子でそろいます。ArduinoはMicroではなくて安いNanoを使っています。これだと互換機ならばUSBシリアルコンバータを買うより安いですね。Microのほうがアナログポートが多いなど利点がありますが、注意すべきはMicroはAtmega32u2を使っていますが、NanoはAtmega328を使っています。したがってPINの配置やAurdinoIDEのマイコンボードの選択にも注意が必要です。
私実はMicroと同じかと思ってMicroで配線してしまいどうも動きがおかしく気がついて、やり直しました。

vwsw

若干こちらのほうがSWRの絶対値が甘くでています。特に真ん中の10MhzあたりSWRの値が甘いようです。特に正確なSWRが必要なら、オリジナルのk6bezに近いkn5uteの方がいいですが、アンテナの調整をする場合はあまり絶対値よりも、全体で最低のSWRを見て調整するので、その値の位置は同じなんで、まあ使えそうですね。
7Mhz付近です。

vk7

これ液晶をつけたりAndroidでBluetooth対応なんかいろいろこれから楽しめそうです。私もとりあえずグラフィックの液晶をつけてみてスタンドアロンで動かそうかなと思っています。ただオリジナルの液晶は解像度がちょっと荒いので、もう少し高解像の液晶を探して試してみます。
これのいいところは安いことです。Aurdinoは互換機ならば1000円ちょいで買えますし、全部で5000円でおつりがくると思います。

最後にSARK100 mini60です。
mini607

みるソフトの差でしょうか?時間がかかりますが、こちらのほうが見やすいですね。でもちょっと値が悪いような、、、まあ校正を一回もやってないので、わりと不正確かも、、これのいいとこは50Mhzまで測定できるのが利点です。しかしバンド全体を見るのはものすごく時間がかかり実用的ではないです。

k3ng cwkeyer

JH1LHV OMのこの記事に刺激されて作ってみみました。たいへん詳しく解説されており、私AURDINOは素人なんですがなんとか完成することができました。

s-DSC03232

OMの記事とおりに作れば動くんですが、ちょっとaitendoの激安I2CキャラクタSTN液晶(16文字x2行) [1602A-4]モジュールで苦労したのでちょっと忘備録代わりに、、、上記液晶は1602系統のi2c接続では最安だと思うんですが、あまりAURDINOでの資料がなく、すこし苦労しました。

まずI2C接続なんでそれ用に半固定VRとジャンパーしてピンで本体と接続。動作するライブラリ探しに苦労しました。いろいろ試しましたが、結局オレ工房さんのST7032のライブラリで動作しました。
まず上記のgithubからダウンロードして解凍したらフォルダをST7032にリネームしてAURDINOのlibralyフォルダに入れます。そしてK3NGのスケッチを変更します。optinon.fの#define FEATURE_LCD_YDv1を有効にします。そして本体のLiquidCrystal_I2C.hをST7032.hにリネ-ムしします。
そして下記の部分を

#if defined(FEATURE_LCD_YDv1)
  ST7032 lcd(0x3c);
// LiquidCrystal_I2C lcd(0x3c);
//I2CLiquidCrystal lcd(0x3c, (uint8_t)127);
//  LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // for FEATURE_LCD_YDv1; set the LCD I2C address needed for LCM1602 IC V1
#endif

にします。スレーブアドレスは0x3cです。これで動くと思います。
プロフィール

nyantaroblog

記事検索
ギャラリー
  • aprsをxastirからYAACに変えてみた
  • RTL-SDR V3 FTDX3000 cwskimmer
  • RTL-SDR V3 FTDX3000 cwskimmer
  • RTL-SDR V3 FTDX3000 cwskimmer
  • direwolfでRA-35+xastir
  • direwolfでRA-35+xastir
QRコード
QRコード
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

HamLife.jp
  • ライブドアブログ