pco版TriBand uSDX 受信と送信 [pico uSDX]
pco版TriBand uSDX 受信部分のプログラムは、TriBandの二つのプッシュスイッチにVFOの可変ステップと、音量をセット。画面では小さくて見にくいですが、右上のSメーターの下にボリューム表示。
再生できない場合、ダウンロードは🎥こちら
再生できない場合、ダウンロードは🎥こちら
ひとまず受信部分はここまでとして送信プログラムをまとめていきます。
TinySAで送信時の波形を確認。
波形は意外ときれいですが、音質が非常に悪い!
SSBの生成にあるのか、PWMの問題なのかこれから詰めていきます。なんとか正月休みの間に目星をつけて、年明けにはバンドスコープ・ウォーターフォール表示のuSDXモノバンドトランシーバーとして公開できればいいなと思っていますが、初めてのSDRプログラムなので予測がつきません。
ハードはuSDXのTriBando基板をもとに、若干のCR数値と配線の変更で動作します。
再生できない場合、ダウンロードは🎥こちら
再生できない場合、ダウンロードは🎥こちら
ひとまず受信部分はここまでとして送信プログラムをまとめていきます。
TinySAで送信時の波形を確認。
波形は意外ときれいですが、音質が非常に悪い!
SSBの生成にあるのか、PWMの問題なのかこれから詰めていきます。なんとか正月休みの間に目星をつけて、年明けにはバンドスコープ・ウォーターフォール表示のuSDXモノバンドトランシーバーとして公開できればいいなと思っていますが、初めてのSDRプログラムなので予測がつきません。
ハードはuSDXのTriBando基板をもとに、若干のCR数値と配線の変更で動作します。
pico版 uSDX 変換ボード [pico uSDX]
Atmega328をpicoに変換するボードを作りました。といってもユニバーサル基板ですが。いま、KiCadを勉強中なので一番最初のプリント基板に挑戦してみようと思っています。
これは7MHzのテスト中です。OLEDの画面を上下反対にしたので、ロータリーエンコーダが左にきています。変換ボードの背が高すぎるので仕方がないです。基板化すればケース内に収まるようにできるでしょう。
再生できない場合、ダウンロードは🎥こちら
これは14MHz版です。USBを受信できるようにしたのとVFOの変更です。
再生できない場合、ダウンロードは🎥こちら
スケッチなどはGitHubにアップします。
https://github.com/JR3XNW/pico-SDR
これは7MHzのテスト中です。OLEDの画面を上下反対にしたので、ロータリーエンコーダが左にきています。変換ボードの背が高すぎるので仕方がないです。基板化すればケース内に収まるようにできるでしょう。
再生できない場合、ダウンロードは🎥こちら
これは14MHz版です。USBを受信できるようにしたのとVFOの変更です。
再生できない場合、ダウンロードは🎥こちら
スケッチなどはGitHubにアップします。
https://github.com/JR3XNW/pico-SDR
pico版uSDXの実験 [pico uSDX]
一ヶ月ぶりの更新です。GitHubを作り替えたり、送信部のプログラムに悩んで時間が経ってしまいました。
uSDX TriBandの基板も少し変更して、pico版uSDXとして受信はできるようになりました。
picoのスケッチや回路図(配線図)などは私のGitHubにアップしているので興味を持たれた方は見てください。
https://github.com/JR3XNW/pico-SDR
再生できない場合、ダウンロードは🎥こちら
SDRのプログラムは初めてなので、試行錯誤しながら進めています。整理されていないところもあるかもしれませんので、あくまで参考に見ていただければと思います。
今は送信部のスケッチをテストしています。マイク入力の代わりにpicoの内部で1kHzのサイン波を作って、SSB変調してE級アンプで出力させる予定です。
uSDX TriBandの基板も少し変更して、pico版uSDXとして受信はできるようになりました。
picoのスケッチや回路図(配線図)などは私のGitHubにアップしているので興味を持たれた方は見てください。
https://github.com/JR3XNW/pico-SDR
再生できない場合、ダウンロードは🎥こちら
SDRのプログラムは初めてなので、試行錯誤しながら進めています。整理されていないところもあるかもしれませんので、あくまで参考に見ていただければと思います。
今は送信部のスケッチをテストしています。マイク入力の代わりにpicoの内部で1kHzのサイン波を作って、SSB変調してE級アンプで出力させる予定です。
SSB復調プログラムを追加 [pico uSDX]
uSDX用バンドスコープ、ウォーターフォールにSSB復調プログラムを追加しました。
これまで個別にテストしながらプログラムしていたのですが、一つにまとめてみました。
これは、uSDX TriBandoからIQデータを取り出して使用していますが、uSDXの性能がいいので副量は帯域が狭いのでいいもですが、中心周波数あたりしか見えていません。
再生できない場合、ダウンロードは🎥こちら
そこで、4月20日の記事で書いた帯域を広げる改造(変更)をしたuSDXに繋いでみました。
バンドスコープ、ウォーターフォールらしくなりました。しかし復調プログラムはまだ未完成で、強い電波では音が割れてしまうし、ゲインのコントロールもできません。AGCも簡単なもので誤魔化しているのでまだまだ改良の余地があります。
再生できない場合、ダウンロードは🎥こちら
再生できない場合、ダウンロードは🎥こちら
あと、位相制御のVFOプログラムも一応できているので、この後VFOを組み合わせます。これで最小限の受信機になります。まず最初の目的はpicoを使ったモノバンドのQRPトランシーバーですが、初めてのSDRプログラムで、試行錯誤、実験を繰り返しながら進んでいるので完成はいつになるやら。
興味を持たれた方は気長にお付き合いください。
これまで個別にテストしながらプログラムしていたのですが、一つにまとめてみました。
これは、uSDX TriBandoからIQデータを取り出して使用していますが、uSDXの性能がいいので副量は帯域が狭いのでいいもですが、中心周波数あたりしか見えていません。
再生できない場合、ダウンロードは🎥こちら
そこで、4月20日の記事で書いた帯域を広げる改造(変更)をしたuSDXに繋いでみました。
バンドスコープ、ウォーターフォールらしくなりました。しかし復調プログラムはまだ未完成で、強い電波では音が割れてしまうし、ゲインのコントロールもできません。AGCも簡単なもので誤魔化しているのでまだまだ改良の余地があります。
再生できない場合、ダウンロードは🎥こちら
再生できない場合、ダウンロードは🎥こちら
あと、位相制御のVFOプログラムも一応できているので、この後VFOを組み合わせます。これで最小限の受信機になります。まず最初の目的はpicoを使ったモノバンドのQRPトランシーバーですが、初めてのSDRプログラムで、試行錯誤、実験を繰り返しながら進んでいるので完成はいつになるやら。
興味を持たれた方は気長にお付き合いください。
pico版 uSDX 復調プログラム [pico uSDX]
なんとか復調している。ヒンベルトフィルターを使った位相方式に各モード(LSB、USB、CW、AM)ごとにローパスフィルターを設定してる。
しかし、受信音質がいまいち。100匀のアンプとスピーカーのせいだけではないだろうな。
フィルターのテストをしながらVFO、バンドスコープのスケッチに組み込んで、pico版SDRの受信部ができる予定。
なかなか進みが遅い。初めてのSDRプログラムなので試行錯誤の繰り返し。
再生できない場合、ダウンロードは🎥こちら
しかし、受信音質がいまいち。100匀のアンプとスピーカーのせいだけではないだろうな。
フィルターのテストをしながらVFO、バンドスコープのスケッチに組み込んで、pico版SDRの受信部ができる予定。
なかなか進みが遅い。初めてのSDRプログラムなので試行錯誤の繰り返し。
再生できない場合、ダウンロードは🎥こちら
uSDXとpicoバンドスコープ [pico uSDX]
picoバンドスコープをuSDXにつないでテストしていますが、uSDXのオペアンプの周波数特性がすごくよくて、入力周波数の+-5KHz離れると減衰してしまいバンドスコープの意味を成しません。
それで、フロントの回路を作り替えようとテストしています。特にオペアンプの周波数特性です。
入力抵抗を50Ωにして、Rは52kΩ(uSDXでは82k)、Cは20pF(uSDXでは1n)に変更してテスト中です。結果はまた報告します。増幅度がどの程度悪くなるのか、ノイズは… など疑問があります。
秋月電子通商のpico互換ボードを購入しました。ピン入れるがわかりやすくピン種類が表面に印刷されています。値段も本家より少し安いので、これを使っていこうかな。
受信部のプログラムを進めていますが、なかなかうまくいきません。まだまだ先は長いようです。
現状動作しているところは
VFO(位相制御)可変ステップの切り替え
バンドスコープ(+-30KHz)
Sメータ
OLED表示(0.96インチ)
ここまで!
いま、奮闘中!
CW、LSB、USBの復調とスピーカー再生
それで、フロントの回路を作り替えようとテストしています。特にオペアンプの周波数特性です。
入力抵抗を50Ωにして、Rは52kΩ(uSDXでは82k)、Cは20pF(uSDXでは1n)に変更してテスト中です。結果はまた報告します。増幅度がどの程度悪くなるのか、ノイズは… など疑問があります。
秋月電子通商のpico互換ボードを購入しました。ピン入れるがわかりやすくピン種類が表面に印刷されています。値段も本家より少し安いので、これを使っていこうかな。
受信部のプログラムを進めていますが、なかなかうまくいきません。まだまだ先は長いようです。
現状動作しているところは
VFO(位相制御)可変ステップの切り替え
バンドスコープ(+-30KHz)
Sメータ
OLED表示(0.96インチ)
ここまで!
いま、奮闘中!
CW、LSB、USBの復調とスピーカー再生
pico uSDX VFO [pico uSDX]
やっと位相制御のVFOまでプログラムできました。インターネットで情報を検索してSi5351のライブラリーを使って、JA2GQP OMの記事も参考にさせてもらってなんとか動作するようになりました。
次は復調です。これで受信機としての動作はできるようになります。
picoのコア0にバンドスコープをコア1にVFOのプログラムで進めていたのですが、問題が多々発生して結局コア0にまとめてしまいました。今後の課題です。
もう少しわかりやすいプログラムにして公開したいと思います。現状はつぎはぎだらけで本人でも??になります。
再生できない場合、ダウンロードは🎥こちら
次は復調です。これで受信機としての動作はできるようになります。
picoのコア0にバンドスコープをコア1にVFOのプログラムで進めていたのですが、問題が多々発生して結局コア0にまとめてしまいました。今後の課題です。
もう少しわかりやすいプログラムにして公開したいと思います。現状はつぎはぎだらけで本人でも??になります。
再生できない場合、ダウンロードは🎥こちら
pico uSDX FFT その25 回路再考 [pico uSDX]
pico uSDX FFT その24 ファームウエアのアップデート [pico uSDX]
pico uSDX FFTのファームウエアがアップデータしました。
https://github.com/kaefe64/Arduino_uSDX_Pico_FFT_Proj/tree/master/Arduino_uSDX_Pico_FFT
コンパイルには_kiss_fft_guts.hが必要です。
https://github.com/xiph/rnnoise/blob/master/src/_kiss_fft_guts.h
より、ダウンロドしてフォルダに入れてください。
TX部が変更されたようです。これから確認しようと思います!
https://github.com/kaefe64/Arduino_uSDX_Pico_FFT_Proj/tree/master/Arduino_uSDX_Pico_FFT
TX部が変更されたようです。これから確認しようと思います!
pico uSDX FFT その23 Arduino IDEの設定 [pico uSDX]
pico uSDX FFTのグループメールを見ていても、ファームウエアの書き込みでエラーになるという記述があります。
スケッチのコメントにも書かれていることですが、私も最初は少し手間取ったり、先日はボードをバージョンアプして慌てたりしたので、忘備録として手順を残しておきます。
Arduino IDEのバージョンは、Arduino1.8.19
ボードの追加:
ツールメニューのボード>ボードマネージャを選択。検索フィルターにpicoと入れる。
「Arduino Mbed OS RP2040 Boards」をインストールする。
コンパイル書込みにはこのボードを使う。
ライブラリーのインストールは以下の4つ:
ADC-master
https://github.com/pedvide/ADC
kissfft-master
https://github.com/mborgerding/kissfft
TFT_eSPI-master
https://github.com/Bodmer/TFT_eSPI
PWM-master
https://github.com/terryjmyers/PWM
ヘッダーファイルの書き換え:
ライブラリーファイルの場所は、Windowsの場合は「ファイル」メニューの「環境設定」スケッチブックの保存場所:にあります。
MacOSは、Arduinoのメニュー、Preferencesのスケッチブックの保存場所:にあります。
直接ワイル名で検索してもいいです!
----------------------------------------------------
TFT_eSPI LIBRARY:
Arduino/libraries/TFT_eSPI/User_Setup_Select.h
コメントにする:
//#include <User_Setup.h> // Default setup is root library folder
コメントは外す:
#include <User_Setups/Setup60_RP2040_ILI9341.h> // Setup file for RP2040 with SPI ILI9341
----------------------------------------------------
User_Setups/Setup60_RP2040_ILI9341.h
コメントを外す:
#define ILI9341_DRIVER
#define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue
PI pins (SPI1)の選択:
// For the Pico use these #define lines
#define TFT_SPI_PORT 1 // 0=SPI 1=SPI1
#define TFT_MISO 12 //0 RX
#define TFT_MOSI 11 //3 TX
#define TFT_SCLK 10 //2
#define TFT_CS 13 //20 // Chip select control pin
#define TFT_DC 4 //18 // Data Command control pin
#define TFT_RST 5 //19 // Reset pin (could connect to Arduino RESET pin)
//#define TFT_BL // LED back-light
//#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen
フォントを使用可能にする:
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loade
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT
--------------------------------------------------------------
ILI9341の画面を90度回転する:
ILI9341 + RP2040の場合変更する:
TFT_eSPI/TFT_Drivers/ILI9341_Defines.h
#define TFT_WIDTH 320 //240
#define TFT_HEIGHT 240 //320
--------------------------------------------------------------
pins_arduino.h の変更:
.arduino15/packages/arduino/hardware/mbed_rp2040/3.0.1/variants/RASPBERRY_PI_PICO
I2C0用のピンを変更し、I2C1用のピンを含める:
// Wire
#define PIN_WIRE_SDA (16u) //I2C0
#define PIN_WIRE_SCL (17u) //I2C0
#define PIN_WIRE_SDA1 (18u) //included I2C1
#define PIN_WIRE_SCL1 (19u) //included I2C1
#define WIRE_HOWMANY (2) //included I2C1 default was 1
#define I2C_SDA (digitalPinToPinName(PIN_WIRE_SDA)) //I2C0
#define I2C_SCL (digitalPinToPinName(PIN_WIRE_SCL)) //I2C0
#define I2C_SDA1 (digitalPinToPinName(PIN_WIRE_SDA1)) //included I2C1
#define I2C_SCL1 (digitalPinToPinName(PIN_WIRE_SCL1)) //included I2C1
--------------------------------------------------------------
pins_arduino.hの場所が分かりにくいのでもう少し詳しく:
Windowsの場合は以下のところに
C:\Users\user_name\AppData\Local\Arduino15\packages\arduino\hardware\mbed_rp2040
\3.0.1\variants\RASPBERRY_PI_PICO
MacOSの場合は
Finderのメニューで「移動」をクリック。「option」キーを押したままにする。メニューにライブラリの行が表示されるので、それをクリックする。
ライブラリフォルダ内で、ArduinoArduino15を開き、そこからarduino >hardware >mbed_rp2040 >3.1.1 >variants >RASPBERRY_PI_PICOにあります!
階層がとても深い!!
長くなってしまいましたが、参考になれば!
スケッチのコメントにも書かれていることですが、私も最初は少し手間取ったり、先日はボードをバージョンアプして慌てたりしたので、忘備録として手順を残しておきます。
Arduino IDEのバージョンは、Arduino1.8.19
ボードの追加:
ツールメニューのボード>ボードマネージャを選択。検索フィルターにpicoと入れる。
「Arduino Mbed OS RP2040 Boards」をインストールする。
コンパイル書込みにはこのボードを使う。
ライブラリーのインストールは以下の4つ:
ADC-master
https://github.com/pedvide/ADC
kissfft-master
https://github.com/mborgerding/kissfft
TFT_eSPI-master
https://github.com/Bodmer/TFT_eSPI
PWM-master
https://github.com/terryjmyers/PWM
ヘッダーファイルの書き換え:
ライブラリーファイルの場所は、Windowsの場合は「ファイル」メニューの「環境設定」スケッチブックの保存場所:にあります。
MacOSは、Arduinoのメニュー、Preferencesのスケッチブックの保存場所:にあります。
直接ワイル名で検索してもいいです!
----------------------------------------------------
TFT_eSPI LIBRARY:
Arduino/libraries/TFT_eSPI/User_Setup_Select.h
コメントにする:
//#include <User_Setup.h> // Default setup is root library folder
コメントは外す:
#include <User_Setups/Setup60_RP2040_ILI9341.h> // Setup file for RP2040 with SPI ILI9341
----------------------------------------------------
User_Setups/Setup60_RP2040_ILI9341.h
コメントを外す:
#define ILI9341_DRIVER
#define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue
PI pins (SPI1)の選択:
// For the Pico use these #define lines
#define TFT_SPI_PORT 1 // 0=SPI 1=SPI1
#define TFT_MISO 12 //0 RX
#define TFT_MOSI 11 //3 TX
#define TFT_SCLK 10 //2
#define TFT_CS 13 //20 // Chip select control pin
#define TFT_DC 4 //18 // Data Command control pin
#define TFT_RST 5 //19 // Reset pin (could connect to Arduino RESET pin)
//#define TFT_BL // LED back-light
//#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen
フォントを使用可能にする:
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loade
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT
--------------------------------------------------------------
ILI9341の画面を90度回転する:
ILI9341 + RP2040の場合変更する:
TFT_eSPI/TFT_Drivers/ILI9341_Defines.h
#define TFT_WIDTH 320 //240
#define TFT_HEIGHT 240 //320
--------------------------------------------------------------
pins_arduino.h の変更:
.arduino15/packages/arduino/hardware/mbed_rp2040/3.0.1/variants/RASPBERRY_PI_PICO
I2C0用のピンを変更し、I2C1用のピンを含める:
// Wire
#define PIN_WIRE_SDA (16u) //I2C0
#define PIN_WIRE_SCL (17u) //I2C0
#define PIN_WIRE_SDA1 (18u) //included I2C1
#define PIN_WIRE_SCL1 (19u) //included I2C1
#define WIRE_HOWMANY (2) //included I2C1 default was 1
#define I2C_SDA (digitalPinToPinName(PIN_WIRE_SDA)) //I2C0
#define I2C_SCL (digitalPinToPinName(PIN_WIRE_SCL)) //I2C0
#define I2C_SDA1 (digitalPinToPinName(PIN_WIRE_SDA1)) //included I2C1
#define I2C_SCL1 (digitalPinToPinName(PIN_WIRE_SCL1)) //included I2C1
--------------------------------------------------------------
pins_arduino.hの場所が分かりにくいのでもう少し詳しく:
Windowsの場合は以下のところに
C:\Users\user_name\AppData\Local\Arduino15\packages\arduino\hardware\mbed_rp2040
\3.0.1\variants\RASPBERRY_PI_PICO
MacOSの場合は
Finderのメニューで「移動」をクリック。「option」キーを押したままにする。メニューにライブラリの行が表示されるので、それをクリックする。
ライブラリフォルダ内で、ArduinoArduino15を開き、そこからarduino >hardware >mbed_rp2040 >3.1.1 >variants >RASPBERRY_PI_PICOにあります!
階層がとても深い!!
長くなってしまいましたが、参考になれば!