ATS-20plusのファームアップv3.0.7Fに続き、v3.0.7Fを元に若干のカスタマイズをしてみた。
カスタマイズした点。
※カスタマイズとカスタマイズファームのアップは、各自の責任でお願いします。
※ファームの変更点抜粋を載せてありますが、あくまでも参考としてください。
①バントの最適化
②・SWの周波数単位をMHzに変更:void showFrequency() { … }: へif文追加
③FMの小数点表示を”,”から”.”に変更:void showFrequency() { … }: のテキスト変更
④ボリューム初期値変更:DEFAULT_VOLUME=40
⑤BFO初期周波数追加:DEFAULT_BFO_FRQ=450...int currentBFO=DEFAULT_BFO_FRQ
⑥バッテリー表示追加:showBatt()を旧バージョンからコピーして使用
⓻初期画面追加:Splash部分に新規追加
1)Arduino IDEの準備
ファームアップ終了後、Arduino IDEを閉じた時点の設定と読込まれていたファームが自動で
読込まれてArduino IDEが起動する。PCと本体(ATS-20)を接続して(本体電源ON不要)、
ツール>ボード情報を取得 クリックして、情報取得。
ファームアップの際と同様に
BN: 不明なボード
VID: 1A86
PID: 7523
SN: 取得するには任意のスケッチをアップロードしてください
が表示さればOK。
2)ファーム(プログラム)変更点抜粋
①バントの最適化
Band band[] = {
//{LW_BAND_TYPE, 100, 510, 300, 0, 4},
{LW_BAND_TYPE, 100, 510, 472, 0, 4}, // ham:472-479kHz
//{MW_BAND_TYPE, 520, 1720, 810, 3, 4}, // AM/MW from 520 to 1720kHz; default 810kHz; default step frequency index is 3 (10kHz); default bandwidth index is 4 (3kHz)
//{MW_BAND_TYPE, 531, 1701, 783, 2, 4}, // MW for Europe, Africa and Asia
{MW_BAND_TYPE, 520, 1700, 1242, 2, 4}, // AM/MW from 520 to 1700kHz; default 1242kHz; default step frequency index is 2 (9kHz); default bandwidth index is 4 (3kHz)
{SW_BAND_TYPE, 1700, 3500, 1800, 0, 4}, // 160 meters
{SW_BAND_TYPE, 3500, 4500, 3500, 0, 4}, // 80 meters
{SW_BAND_TYPE, 4500, 7000, 4850, 1, 4},
//{SW_BAND_TYPE, 5600, 6800, 6000, 1, 4},
{SW_BAND_TYPE, 7000, 7200, 7030, 0, 4}, // 40 meters
//{SW_BAND_TYPE, 7200, 8500, 7200, 1, 4}, // 41 meters
{SW_BAND_TYPE, 7200, 10000, 9600, 1, 4},
{SW_BAND_TYPE, 10000, 10200, 10000, 0, 4}, // 30 meters
{SW_BAND_TYPE, 10200, 14000, 10200, 1, 4},
//{SW_BAND_TYPE, 13400, 13900, 13600, 1, 4},
{SW_BAND_TYPE, 14000, 14500, 14000, 0, 4}, // 20 meters
{SW_BAND_TYPE, 14500, 18000, 14500, 1, 4},
//{SW_BAND_TYPE, 17200, 17900, 17600, 1, 4},
{SW_BAND_TYPE, 18000, 18200, 18000, 0, 4}, // 17 meters
{SW_BAND_TYPE, 21000, 21500, 21200, 0, 4}, // 15 mters
//{SW_BAND_TYPE, 21400, 21900, 21500, 1, 4}, // 13 mters
{SW_BAND_TYPE, 24890, 25000, 24890, 0, 4}, // 12 meters
{SW_BAND_TYPE, 26100, 28000, 27500, 3, 4}, // CB band (11 meters)
{SW_BAND_TYPE, 28000, 30000, 28400, 0, 4}, // 10 meters
//{FM_BAND_TYPE, 6400, 8400, 7000, 3, 0}, // FM from 64 to 84MHz; default 70MHz; default step frequency index is 3; default bandwidth index AUTO
//{FM_BAND_TYPE, 8400, 10800, 10570, 3, 0}
{FM_BAND_TYPE, 7600, 10800, 8000, 3, 0}
};
②・SWの周波数単位をMHzに変更:void showFrequency() { … }: へif文追加
③FMの小数点表示を”,”から”.”に変更:void showFrequency() { … }: のテキスト変更
void showFrequency()
{
char *unit;
char freqDisplay[10];
if (band[bandIdx].bandType == FM_BAND_TYPE)
{
convertToChar(currentFrequency, freqDisplay, 5, 3, ‘.’); // 2022.12 v01
unit = (char *)”MHz”;
}
else
{
unit = (char *)”kHz”;
if (band[bandIdx].bandType == MW_BAND_TYPE || band[bandIdx].bandType == LW_BAND_TYPE)
convertToChar(currentFrequency, freqDisplay, 5, 0, ‘.’);
else
unit = (char *)”MHz”; // 2022.12 v01 SW-BAND Unit MHz
convertToChar(currentFrequency, freqDisplay, 5, 2, ‘.’);
}
④ボリューム初期値変更:DEFAULT_VOLUME=40
⑤BFO初期周波数追加:DEFAULT_BFO_FRQ=450...int currentBFO=DEFAULT_BFO_FRQ
define DEFAULT_VOLUME 40 // 2022.12 v01 change it for your favorite sound volume
define DEFAULT_BFO_FRQ 450 // 2022.12 v01 change it for your favorite BFO FRQ (USB carrea FRQ = 450kHz).
.
.
//int currentBFO = 0;
int currentBFO = DEFAULT_BFO_FRQ; // 2022.12 v01 Set DEFAULT_BFO_FRQ
uint8_t volume = DEFAULT_VOLUME;
⑥バッテリー表示追加:showBatt()を旧バージョンからコピーして使用
void showBatt()
{
int sensorValue = analogRead(A1); //read the A2 pin value. change to A1
//float voltage = sensorValue * (3.30 / 1023.00 * 2); //convert the value to a true voltage.
float perc = map(sensorValue, 500, 645, 0, 100);
perc=constrain(perc,0,100);
oled.setCursor(74,3);
oled.print(“BATT”);
//oled.setCursor(98,3);
//oled.print(” “);
oled.setCursor(98,3);
//oled.print(voltage, 0); //Display battery true voltage
oled.print(perc, 0); //Display battery percentage
oled.print(“%”);
}
⓻初期画面追加:Splash部分に新規追加
// Splash – Change orit for your introduction text or remove the splash code.
oled.setCursor(40, 0);
oled.print(“SI473X”);
oled.setCursor(20, 1);
oled.print(“Arduino Library”);
delay(500);
oled.setCursor(15, 2);
oled.print(“All in One Radio”);
delay(500);
oled.setCursor(10, 3);
oled.print(“V3.0.7F-By PU2CLR”);
//delay(2000);
delay(1500);
// 2022.12 v01
oled.clear();
oled.setCursor(15, 1);
oled.print(“iedetoraccha.com”);
delay(500);
oled.setCursor(30, 2);
oled.print(“2022 v01”);
showBatt();
//delay(500);
delay(1000);
// end Splash
※バッテリー表示は初期画面(Splash)のみに実行するようにした。Arduinoのアナロ
グ入力ポートを利用して電圧をAD変換・計算して表示いるようだ。アナログ入力ポート
がA1pinなのかA2pinなのか不明。ファームと回路図が一致していないような気がする。
気長に使ってみて、だめなら変更するくらいの気持ちで。
※2022.01追加
内臓のArduinoNanoのアナログピンの電圧を測定した結果 A1(PC1)=1.65Vで、これはバッテ
リー電圧を直接測定した結果の1/2である。A0(PC0),A2(PC2),A3(PC3)=0Vであった。回路図上、
A1(PC1)は抵抗分圧されバッテリー電圧の1/2がかかる回路になっている。A0(PC0),A2(PC2),
A3(PC3)はオープンである。したがって、測定結果は確からしい。
%表示より、実表示が好みなので、バッテリー情報表示のスケッチを変更した。
void showBatt()
{
int sensorValue = analogRead(A1); //read the A1 pin value.
float voltage = sensorValue * (3.30 / 1023.00 * 2); //convert the value to a true voltage.
//float perc = map(sensorValue, 500, 645, 0, 100);
//perc=constrain(perc,0,100);
oled.setCursor(85,3);
oled.print(“Batt “);
oled.setCursor(90,3);
oled.print(voltage, 2); //Display battery true voltage, point=2
//oled.print(perc, 0); //Display battery percentage
oled.print(“v”);
//delay(1500);
//oled.clear();
}
バッテリー電圧のディスプレイ表示が変であるが、電圧値は表示されている。バッテリー電圧と
表示値は校正するまでは必要ないのでOK(だいたい分かればOK)とした。
以前の写真のバッテリー48%は偽です。今回の更新では3.34vと表示されています。
一通りの変更ができたら、ファイル名を変えて保存しておく。
スケッチ>検証・コンパイルを実行 :エラーがなければファームは文法上はOK
スケッチ>マイコンボードに書き込み :これで書き込み、「ボードへの書き込みが完了しました」
が表示されれば書き込み終了。
PCとの接続を外して、
本体のノブを押しながら電源ONする。これでカスタマイズファームが実行される。
これで、ATS-20のファーム関連は一旦終了。