カテゴリー「Arduino, ESP32」の7件の記事

60歳過ぎてからのマイコンいじり。

2026年5月 9日 (土)

Si5351A 2ch Signal Generator



GWの暇にまかせてSi5351Aと1.8inch TFTを使って2ch出力のSGを作ってみました。SGなら多少スプリアスが有っても問題無し。
AIの力を借りつつも、10時間ぐらい費やしてようやくってところです。100kHz~150MHzまで出力可能です。


CHANNEL 1のみ、CHANNEL 2のみ、両方出力、両方OFFをオルタネートで切り替えできるようにしてみました。
周波数ステップは 10Hz ⇒ 100Hz ⇒ 1kHz ⇒ 10kHz ⇒ 100kHz ⇒ 1MHz をオルタネートで切り替え。

更に...

スイープモードを実装してみました。

CHANNEL 1 からCHANNEL 2 に向かってSTEP値で加算していき、到達すると減算してマイナス方向へ移動するを繰り返しするように。
選択はタクトスイッチ押すごとに CHANNEL 1のみ ⇒ CHANNEL 2のみ ⇒ 両方出力 ⇒ 両方OFF ⇒ SWEEP MODE とオルタネートするよう変更です。受信すると「走るビート音」となります。

20260503-180440

配線図は以下のような構成です。

動画ではブレッドボード上で回路を組み、3.3V動作のArduino Pro Mini(8MHz)で動かしています。そのため、1.8インチTFTとは直結しており、配線図にあるレベルコンバータは使わずに実験しています。

また、Si5351Aモジュールは秋月電子のものを使用しています。手元に26MHzのOCXOがあるため、中華製のSi5351Aモジュールに搭載されている25MHz水晶を取り外し、このOCXOを基準クロックとして使うことで、より高い周波数安定度を得られるよう改良する予定です。

ケースに収めて実用的な形に仕上げるのは、まだ少し先になりそうです。

| | コメント (0)

2026年4月29日 (水)

Si5351A VFO の近接スプリアス

Si5351A を使ってVFOを作る場合、使う周波数帯によっては近接スプリアスが問題となることがあります。

5351a_01

自作のスケッチだと55MHz帯付近でスプリアス発生が顕著となりました。

どのような動きをするのか、動画を撮ってみました。

マーカーのPeakが常にスペアナ画面の中心となるよう、設定してロータリーエンコーダーを回して周波数を可変しています。主となるスペクトラムの上下、またはよくわからないところに立つ柱がスプリアスで生成される周波数によって近づいたり離れたりするのがおわかりかと。

20260424-204424

0.5MHz~150MHz程度に渡ってこれが出ないよう、AI にいろいろと尋ねてはいるのですが、生成されるスケッチを試してもダメだったり、エラーが出るウソ付いてきたり、うまくいきません...

・PLLの周波数
・リファレンスとする水晶発振子の周波数(25~27MHz)だが実際は低い周波数や高い周波数でも動作する
・分周がインテジャーかフラクショナルか

このあたりがポイントなようですが、広帯域に渡って得る信号だと、いずれかで発生し、全帯域では無理なようです。
というか、これが安価なSi5351Aの宿命みたいなものという感触です。

<ではどうすれば良いか>

トランシーバーを作るに当たって(送信時は)広い帯域が必要なことは無いので、そのあたりをいろいろと変化させて送信範囲にスプリアスが出ないよう、スペアナを見ながらパラメータをいじるしかなさそうです。広帯域受信で使うなら目をつぶるってことで。

更にAI の回答を迫ってみると...

・低い周波数ではDDS、例えば AD9850 を使え。
・Si570 などの別のICを試してみよ。

って回答が帰ってきました。

| | コメント (3)

2025年2月27日 (木)

1.8inch TFTを使ったGPS時計

時計の製作はもういい...といいつつも1.8inch TFTを多数仕入れたので実用的なGPS時計を作ってみました。

配線図はこれです。

20250227-231407
処理が遅くぬるぬると動く感じですが、これはこれで味があります。Arduino NANOにすればもうすこし早く表示されるでしょうけど、TFT LCDとの間にレベルコンバータを入れる必要があります。

もし、作ってみたい方がいらっしゃるようでしたらArduino のスケッチ配布は可能なので連絡ください、バグはあるかもしれません。フォントを変えたり、色を変えたり、年や日時の位置を変えたり遊べると思います。

エラーが出たので対応方法をイチから教えて君が登場するのでスケッチの配布はやめます。Arduinoのインクルードの意味がわからない、エラーの内容が理解できない、自分で解決できない人はお断りです。

| | コメント (7)

2025年2月 9日 (日)

リベンジ: 1.8inch TFT液晶を用いたシンプルVFO

壊した1.8inch TFTがもう一枚あったのでリベンジがてら、以前に作ったOLED VFOを移植してみました。

スケッチの作成においては、当然Chat GPT センセのお世話に。TFTなのでカラーが使える分、色の使い方などはセンスを求められ、自作の特徴を出すことができますね。Arudino Pro Mini 3.3V (8MHz) を使っていますが、ロータリーエンコーダーを早く回してもちゃんと追従してくれます。

" By JF3DRI " のところに何を表示させるか画面が広いのでいろいろと楽しませてくれそうです。Sメータというのもありきたりだし、FFTしてスペクトラム表示なんて難しいし...

という訳でスケッチがある程度触ることができるようになったので、最近はこんなことばかりして遊んでいます。 

| | コメント (3)

2025年2月 5日 (水)

5Vか3.3Vか間違えないように!

マイコン関係をいじる際に注意することがあります...
それは動作電圧GPIO

         「5Vであるか3.3Vであるか」

やらかしてしまいました。

St7735

一瞬でこのように真っ白になってしまい、お亡くなりになりました。
1.8inch 128x160 ST7735を使ったTFT LCDモジュール、GPIOの電圧は3.3Vと承知していたものの、ネット では

St7735_03

※図のとおりにやると壊れました。

この図のとおり、Arduino (GPIO=5V) を直接加える記事が多く「5Vでも使えるだろう」と信じてしまったことが原因、これ罠のようです。これらの製作記事がなぜ正常に使えるのか?? 不思議でなりません... ST7735の仕様が変わったのでしょうかね??

各マイコンの仕様比較をChat GPTセンセに尋ねたところ...
20250205-202116

Arduinoのみ5V なので使うに当たっては注意が必要です。
(Arduino Pro Mini 8MHz (3.3V)は大丈夫)

よって5V <-> 3.3V レベル変換は必ずLCDとの間に入れる必要がありそうです。

・3.3Vしかダメなもの
・5Vしかダメなもの
・3.3V, 5VどちらでもOKなもの

接続するデバイスはこの3つがあるのでよく調べ確認することね。

レベル変換付き、無しのこれとかも。

Si5351a_module


| | コメント (0)

2025年1月29日 (水)

GPSモジュール NEO-7Mからの10MHz基準は使えるのか??

Gps_neo7m

時計としてのGPSモジュールは有用であることがわかりました。もう一つの用途として高精度なリファレンス周波数を出力できるのでスペアナとJTDXのWFを使って見てみました。今さら感があるかもしれません。

20250129-120551

GPSモジュール、NEO-6M, NEO-7M, NEO-8Mは u-blox 社が製造しており、Webからu-centerという設定ソフトが無料でダウンロードできます。そこから、デフオルトでは1pps出力端子に任意の周波数を取り出す設定があり、ここをいろいろと弄って出力される信号純度を調べてみようということです。

1.10MHzを出力してみた。

Gps_sp1mhz

スパンを1MHzにして見てみました。1MHzと広い幅で見る限りは近傍の大きなスプリアスであっても-50dB以上で、一見問題なさそうです。

Gps_sp20khz

スパン20kHzと狭くしてみると... あらら、近傍に何やらいろいろと連れていてキレイではありません。

Gps_sp5khz

更にスパン5kHzまで狭くすると...純度はかなり悪いですね。

Gps_jtdx

スペアナDSA815ではRBW=10Hzまでしか絞れないのでFT8 JTDXのWFで見てみました。近傍ノイズだらけです。受信音を耳で聞いても濁っていてNGなことがわかります。

10MHzを確かに出力できますが、超高精度だといってこれを無線機(例えばIC-9700)のリファレンスとして使ってはまず、ダメでしょう。

2. 6MHzを出力してみた。

20250129-6mhz

48で割り切れる周波数だとジッタの少ないものが出てくると先人様の記述があったので6MHzに設定してみたところ...耳で聞くとブチブチ音が酷くWFでもキレイではありません。

3. 4MHzを出力してみた。

20250129-4mhz

6MHzと同じ傾向で良くないです。

4. 5MHzを出力してみた。

20250129-5mhz

10MHzと同じ傾向、48で割り切れる/割り切れないは関係ありそうです。PLLには IntegerFractional があってどうやらその関係のようです。NEO-7Mの内部がどのような回路になっているかまでは調べていませんが。

5. 1MHzを出力してみた。

20250129-1mhz

1MHz Integer になるため6, 4MHzと同じ傾向です。低くした方が良くなるという訳ではなさそうです。


結論としてGPSモジュールからそのままの出力だと信号純度は良くなくOCXOをロックさせるGPS-DOとして使う必要がありそうです。設定する周波数はどこが良いかはよくわかりません。40kHzで行っているのもあれば、もっと高いところでやっている記事もありました。

| | コメント (0)

2025年1月27日 (月)

Chat GPTを使ってスケッチの作るのを覚えた

20241221-145619

Arduino なり ESP32 なりプログラム(スケッチ)を作ることが難関になっていましたが、完全に覚えなくともAI のChat GPTを使いこなすことでそれなりに突破できることがわかってきました。

時計が多いですが、Arduinoを使っていろいろと作ってみました。

1.デジットで安価に購入した4桁7セグメントLEDに時計を表示する。

4digit_pcb
7seg_clk

TB62709という聞き慣れないドライバーICが使われていたのですが、ネットで探すとありがたいことに先人さんが使えそうなライブラリーを作ってくれていました。Chat GPTにこのライブラリーとサンブルスケッチ、そして使うRTCモジュールを指定して時計として動作するスケッチを作って! と指示するとコードを作ってくれました。分や時間の表示位置が異なるなど間違ったスケッチも吐き出してきますが、都度その修正したいところを指示することで完璧なものとなりました。

これが出来た時は、これは使える!! と眼の前にあった大きな壁が取り除かれたような開放感を得ました。

2.240x240ドット1.3インチIPS液晶にアナログ時計を表示する。

Ips_clock01

Youtubeで検索すると簡単に見つかるスケッチです。Arduino Pro Mini とDS1307 RTCモジュールを背面に貼り付けています。これも、スンナリと動いた訳ではなく、液晶が3.3V系であることに気づかずハマりました。(Youtubeではそんな説明なかった) クロックが8MHzのArduino Pro Mini(3.3V) を使うことでばっちり動作。

3. GPSモジュールを使った時計

Ali_4

Aliexpressで液晶パネルとGPSモジュール NEO-6MとNEO-7Mを仕入れました。
時計合わせと10MHz リファレンスとして使えるかの検証用です。

IPS液晶と合わせて動画を撮ってみました。

GPS時計はChat GPT と2日間格闘してようやくできました。Chat GPTと言えど、エラー吐きまくるスケッチを提示したり、Arduinoなのに突然Pysonを使ってきたりでなかなか思い通りにはなりませんでした。参考となるスケッチを教えてあげると言う事聞いてくれるようで、使いこなしにテクニックがいるようです。

4.おまけ

面白そうなので、ネットで見つけたスケッチを書き込んで動かしてみただけです。ただしオリジナルはライブラリーSSD1306を使った0.96インチOLEDだったので1.3インチで使われているSH1106に変更しています。

| | コメント (2)