フォト
無料ブログはココログ

MyList

Yoshiのよしなしごと

「よしなしごと」は、「Yoshiのよしなしごと 」にあります。

新着 

Yoshiのよしなしごと】【Yoshiのブログ

 

2025年5月22日 (木)

DAC搭載Type-Cイヤホン

近所のDAISOが閉店して不便になると思っていたら、Can★Doに変わって開店した。
ふらりと寄ったらDACチップ搭載Type-Cイヤホンを400円で売っていた。
安価なイヤホンで楽しむマニアとしては買わざるをえない。

Candodac_eearphone1

DAC搭載と言っても、ヘッドセット用の安価なADCのようで、DAISOでType-Cとミニジャックの変換ケーブルにも同じDACが使われているらしい。
DAC搭載イヤホンが400円で、変換ケーブルは300円だから、イヤホンチップは100円ということか。
Candodac_eearphone_20250517114901

このイヤホンはのレビューは多いのだが、良い評価は少ない。
100円イヤホンと同じくらいの音なのだろう。

100円イヤホンはイヤホンマイクと考えるとコスパは良い。
同じように、ミニジャックがついていないスマホで使える安いイヤホンマイクと考えればコスパは良いと思う。

古いiPhoneを使っているので、ミニジャックはついているし、Type-Cではなく、Lightningだ。
Type-C→Lightningの変換アダプタを探したら見つかった。
1個買うともう1個サービスだけど、2個いらないよなと思いながらポチったら、
Typeclightning_20250517114901  
1パック2個入りだった。4個も使わない。
しかも、古いiPhoneでは使えなかった。 orz

閑話休題

DACのデータシートを探してみた。
DAISOの変換ケーブルの回路図
https://note.com/tomorrow56/n/n46d03cedf565

AB136Dの簡易データシートが見つかった。
https://www.bluetrum.com/product/ab136d.html

このチップは
・RISC-V 125MHz RAM60KB Flash2MB
・SNR 95dBの高性能ステレオDAC
・SNR 90dBの高性能モノラルADC
・Samplerate 8、11.025、12、16、22.05、32、44.1、48KHz
・5チャンネル 10ビットSARADC
らしい。

AB136Dを使ったモジュールがaitendoにある。
350円だって


このDACのデータシートは見つけにくいのだけど、Gemini先生にお願いすると探してくれた。
今後はググるではなくジェみるになるのか?


最近の投稿】【最近のイヤホン】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2025年4月26日 (土)

SDR

Japan IT Week に行ってきた。

マリモ電子工業株式会社のブースでSDRの展示があった。
マリモ電子工業はハードウェア・ソフトウェア設計開発専門企業らしい。

「最新RFトランシーバーを用いた動画伝送用無線機」
Sdr
アナデバのADRV9104が使用されている。
ADRV9104はRFトランシーバに200MHzで動くCortex M4が入っているから、ソフトはFPGAを使用しなくてもCPUで実装できる。
FPGAは電力消費量が多くなるけれど、このチップを使うと電池駆動できるのではないだろうか。

ソフトウェア無線(SDR)開発向けRFシステムオンモジュール

アナデバのRFトランシーバーはADRV9002 デジタル処理は CyclonV ソフトウェアはGnu Radioで設計し、詳細は GitHubで公開されている。

未だにSDRという文字が目に入ると引き付けられてしまう。
確実に小さくなっているし、電池で運用できる無線機が作れる時代が来たようだ。

年配の営業さんに「20年前にこれが欲しかったんですよ」と言ったら、昔話で盛り上がってしまった。


最近の投稿】【最近の展示会 】【最近のRF】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2025年4月 7日 (月)

慌てた

最近のこと、くつろいでYotubeをを聞いていたら、突然モールス信号が聞こえてきて慌てた。
EGOISTさんのPlanetesという楽曲(https://www.youtube.com/watch?v=q2dbhaEEpiw)

###
若い時のこと、船舶通信士になりたくて、資格をとるために学校に行った。
毎日、モールス信号を受信する授業が毎日あって、下宿でも練習して、夢に出るくらい聞いていた。
船舶通信士にはなれず、陸で無線関係の仕事に就いたのだが、就職しても時々夢を見た。

突然、モールス信号が聞こえてくるのだが、鉛筆と受信用紙を持っていなくて焦っていると目が覚める。
悪夢だ。

悪夢を見なくなって40年も経っても、突然モールス信号が聞こえると、つい慌ててしまう。
###
Planetesの中で聞こえるモールス信号はインスト音源で確認した。


最近の投稿】【最近の展示会 】【最近のRF】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2025年2月 9日 (日)

CH559picoでTOYOSHIKI-BASIC (2)

CH559picoをCH55xduinoで豊四季BASICを実装したら何か変なので調べてみた。
実行したプログラムは、8Qeen問題を解くプログラム↓
豊四季BASICはtiny-basicだから WHILE が無いので IF と GOTO でループしている。
昔はこんな書き方だったよなぁ...


1  REM 8Qreen
10 T=(1=1); F=(1=2)
20 D=F
30 N=1
40 FOR I=1 TO 8; @(I)=0; NEXT I
50 X=1;Y=2;@(1)=1
100 REM
100 GOSUB 2000; REM Check
110 REM if C=T then
110 IF C=F GOTO 140
120   @(Y)=X; Y=Y+1; X=1
130   REM if Y=9 goub PrintTable
130   IF Y=9 GOSUB 3000
140   REM if C#F endif
140   IF C#F GOTO 190
150   X=X+1
160   IF X=9 Y=Y-1; X=@(Y)+1; @(Y)=0
170   IF X=9 Y=Y-1; X=@(Y)+1; @(Y)=0
180   IF Y=0 GOTO 210; REM End
190   REM EndIf
190   IF D GOSUB 3000
200 GOTO 100
210 REM END
210 STOP

2000 REM
2010 IF Y=9 C=F; RETURN
2020 C=T
2030 FOR L=1 TO Y-1
2040   IF @(L)=X C=F
2050   IF @(L)-X=Y-L C=F
2060   IF X-@(L)=Y-L C=F
2070   IF D PRINT "X=",X," Y=",Y," @(",L,")=",@(L)," C=",C
2080   IF C=F L=Y-1
2090   NEXT L
2100   IF D PRINT "< ",X,",",Y,":",C
2110 RETURN

3000 REM
3010 PRINT "--- ",N," ---",
3020 IF D PRINT X,",",Y,
3030 PRINT
3040 FOR L=1 TO 8
3050   FOR M=1 TO 8
3060     REM IF Y#L then
3060     IF Y=L GOTO 3090
3070       IF @(L)=M PRINT "|Q",
3080       IF @(L)#M PRINT "| ",
3090     REM else
3090       IF Y#L GOTO 3120
3100       IF X=M PRINT "|-",
3110       IF X#M PRINT "| ",
3120     REM EndIf
3120   NEXT M
3130   PRINT "|"
3140 NEXT L
3150 PRINT
3160 IF D INPUT A
3170 N=N+1
3180 RETURN


2060 IF X-@(L)=Y-L C=F

この行は必ず Flaseになる?
豊四季BASIC linux版で↑のソースを動かすと正常に動く。

PEEK() 関数を実装して中間言語バッファをダンプしたら中間言語は正しく変化されているようだった。

1 PRINT REM ABC
2 PRINT I-@(J)

00 0B 01 00 08 05 22 41 42 43 22 2A 0D 02 00 0B
28 08 14 20 18 28 09 19 2A 17 28 00 0A 29 0E 53


bacic.cppのipuluse()の戻り値 value の値がおかしいことが判った。
5行目の imul(),20行目の imul()の戻り値は正しいが、25行目で 0を返してしまう?

 1: // add or subtract calculation
 2: short iplus() {
 3: short value, tmp; //値と演算値
 4:
 5: 
value = imul(); //値を取得
 6: if (err) //もしエラーが生じたら
 7:   return -1; //終了
 8:
 9: while (1) //無限に繰り返す
10:  switch(*cip){ //中間コードで分岐
11: 
12:   case I_PLUS: //足し算の場合
13:     cip++; //中間コードポインタを次へ進める
14:     tmp = imul(); //演算値を取得
15:     value += tmp; //足し算を実行
16:     break; //ここで打ち切る
17: 
18:  case I_MINUS: //引き算の場合
19:    cip++; //中間コードポインタを次へ進める
20:    tmp = imul(); //演算値を取得
21:    value -= tmp; //引き算を実行
22:    break; //ここで打ち切る
23:    
24:  default: //以上のいずれにも該当しなかった場合
25:     return value; //値を持ち帰る
26:  } //中間コードで分岐の末尾
27: }


↓ -@(L)+X のように書くと正しい答えになる?

2060 IF -@(L)+X=Y-L C=F

1週間くらい悩んでいたのだが、このページにヒントがあった。
8Qenn(2011/09/15)←自分のページかいっ!!

SDCCは関数を呼ぶときの引数はレジスタ渡しにしたり、関数内のローカル変数をレジスタに割付けたりする。
このような関数に再入すると変数を上書きしてしまう。
スタックを使用するにはコンパイル・オプション --satck-auto を指定する必要があるが、ライブラリも --stack-autoでコンパイルされている必要がある。
CH55xduinoのコンパイルオプションに --satck-auto を追加したら、CH55x用ライブラリがコンパイルできなかった。

関数を __reentrant 修飾すると、その関数は再入可能な関数になる。
ttbasic.cpp内の iexpから呼び出される関数を __reentrant 修飾したら、期待した結果になった。

20250125-143220

CH55xduinoのライブラリは --int-long-reent, --float-reentでコンパイルさてているらしいのが、--stack-autoではないらしいのでどこかで不具合が出るかもしれない。



最近の投稿】【最近のCPUボード】【最近のプログラミング】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2025年1月26日 (日)

CH559picoでTOYOSHIKI-BASIC

今年の目標の一つ
積んCPUを使ってみることにした。

2020年に買ったCH559pico を使ってみることにした。
CH559picoボード↓
Ch559pico

CH559はざっくり8051core+USB I/F+Flash 60KB+RAM 6KBだ。

単体でBASIC 52が動きそうだ。
USB I/FがあるのでCDCクラスを実装すると、USBコネクタに刺すだけでお手軽BASIC マイコンになりそうだ。
昔、EZ-USBで遊んでいたときに、思いついたのだが、EZ-USBはメモリが少なくて実現出来なかった。

CH55xシリーズはarduinoIDEで開発できることがわかった。
しかも、CDCクラスのシリアルデバイスとして認識する。
何とお手軽

ここを参考にCH55xduinoをインストールし、blinkを書き込むとあっけなく動いた。
先達に感謝

arduinoでシリアルの入出力は、aerial.begin()で初期化してaerial.Read、Serial.write()でデータを送受信する。
USBSerialでは関数に先頭にUSBをつけてUSBSerial_Read()
Serial.Begin()での初期化は必要ない。

こんなスケッチを書いUSBシリアルのループバックテストをやってみた。

void setup() {
  while (!USBSerial());
}


// the loop function runs over and over again forever
void loop() {
  uint8_t c;

  if (USBSerial_available()) {
    c=USBSerial_read();
    USBSerial_write('[');
    USBSerial_write(c);
    USBSerial_write(']');
  }
}

1字づつ送受信出来ることが分かった。
大量のデータを転送するなら、パケットサイズを大きくして一度の転送で多くのデータを送受信した方が効率が良い。
今回は、BASICのコンソールに使うので、速度よりリアルタイム性が重要だ。BASIC52を実装する前に、
鈴木哲也氏の著書「タイニーBASICをCで書く」で、豊四季BASICがarduinoに実装されているのを思い出したので、これを動かしてみることにした。

arduino用の豊四季BASICはこのページ(https://vintagechips.wordpress.com/2015/12/06/豊四季タイニー BCbasic確定版 /)のリンクからダウンロードできる。

豊四季BASICは、c_getch, c_putch, c_kbhit, rand, を環境に合わせて実装すれば動くようになっている。
書籍では、Serial.read(), Serial.write(), Serial.available()を使う方法が説明されている。

今回は、USBシリアルを使用するので、

#define c_getch(c) USBSerial_read(c)
#define c_putch() USBSerial_write()
#define c_kbhit()  USBSerial_available()

rand() はCH55xduinoのコンパイラsdccにもあるのでそのまま使える。
rand()に使用するシードの初期化は、randomseed()になるべくランダムな値を使用しする。
組み込み用のCPUではアナログポートから読み取った値を使う方法が紹介されている。
今回は、USBシリアルの初期化が終了した時刻を取得してシードとした。

randomseed(moicros());

arduinoIDEのシリアルの設定をCOMx(CH559picoが認識されているポート)にすると、シリアルモニタが使える。
arduino用豊四季BASICは、ttbasic.ino 内のloop() から、ttbasic.ccpのbasic() 関数を呼び出している。 
arduinoIDEで検証(Check)すると、キャストのwarningが出るが、コンパイルできて、USB経由で書き込むことができる。
書き込むと自動的にリセットされて、バナーが表示されるはずだが、いくら待っても表示されない。

ENTERを連打すると、バナーが表示され、> OK がたくさん表示される。
コマンドを入力してもエコーバックされず、一定数キー入力するとまとめて入力されているようだ。

テストプログラムを書いて調べたら、
loop()の外でUSBSerial_read()を呼ぶと1文字づつ取得できないことが判った。

豊四季BASICはbasic()関数内の無限ループで、c_gets()で1行取得し、処理するようになっている。
c_gets()関数も、関数内のwhileループでENTERまで文字をバッファに格納するようになっている。

loop()関数の中なら1文字づつ取得できるので、basic()を初期化部、1行取得部、処理部に分けて、初期化部をsetup()に書いて、loop()内で1行取得して、BASICの処理部を呼ぶようにしたら、動くようになった。

ところが、INPUT A を実行しようとすると、1文字づつ取得できない。
調べてみると、INPUTコマンドで入力する数字を数値に変化する関数 getnum()のwhileループ内で文字入力していることが分かった。

c_gets(),getnum()で使用する文字入力でloop()を呼ぶようにすればよさそうだが、loop()関数内でarduinoの内部関数を呼んでいると良くないことが起こりそうだ、と考えソースを見てみたら、

main()関数の中の無限ループがloop()を呼ぶシンプル構成だった。
CH55xduinoの main()の部分

void main(void) {
  init();

  //!!!initVariant();

  setup();

  for (;;) {
    loop();
    if (1) {
#ifndef USER_USB_RAM
      USBSerial_flush();
#endif
      // serialEvent();
    }
  }

  //    return 0;
}
 

よく見ると、無限ループの中でUSBSerial_refresh()
を実行していることを発見した。
どうやらこれが解決方法のようだ。

ということで、
c_gets(), getnum()の中のループから、USBSerial_flush()を実行するように書き換えたら動いた。

BASICが動くようになったらお約束の8queen問題を解くプログラムを書てみたら挙動がおかしい。
同じプログラムを豊四季BASIC linux版で動かしたら正常だった。
A=5, B=2, @(2)=3 のとき、A-@(B)の結果が 0 になっている。

つづく...



最近の投稿】【最近のCPUボード】【最近のプログラミング】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2024年11月12日 (火)

電波使用料 <督促状が来た>

電波利用料の督促状が来た!

Photo_20241112224901

電波利用料は年間300円で、免許の有効期間5年分を免許時に一括納付できる。
電波利用料制度が始まった時から一括前納している。

督促されても慌てる額ではないが、何かの間違いではないかと思った。
そういえば、ちょっと前に電波使用料の納付書が来たのだが、前納しているから何かの間違いだろうとスルーしていた。

領収書を保管しているはずだと探してみたが、領収書が見つからない。
免許証を見たら、免許の年月日がR6.8.25だ。
あれれ、昨年再免許申請したはずだ...と考えたところで、思い出した。

昨年、再免許の申請期間が1年から半年に短縮されるというので、有効期間終了の1年前に再免許申請して、その時に、前納のを申し出ていた。
電波利用料は免許の日から1月以内に納付する決まりだから、免許の日頃に送られてきた納付書をスルーしたので、督促されたようだ。

昔は、金融機関の窓口でしか納付できなかったが、ペイジーが使えるようになってATMが使えるようになり、最近はネットバンキングで納付することができる。

問題は、電波使用料は払っているけど電波を発射していないことだったりする。


最近の投稿】【最近の展示会 】【最近のRF】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2024年10月24日 (木)

Can★Do Dual Driverイヤホン <安いイヤホンで楽しむ>

Can★Doに寄ったら、330円でDual Driverのイヤホンを見つけた。
「330円でDual Driver!!!」ということで買ってきた。
Candodualdriver

プラグは金メッキで。スケルトンなのでドライバーが2個あるのが見える。
Dual Driverは存在感がある。
Candodualdriver2

一日聞いてみた。

--- 全て主観です ---
低域が低く高域が強い。
女性ボーカールを聞くと高音の特定の周波数で歪むようだ。
最初エッジボイスかと思ったが違うようだ。
バンドのように音が多い曲はすべての音が混ざり合って騒がしい感じがする。

結論
音は、ダイソー500円ハイレゾイヤホンの方が良い。
良い点は音量ボリュームが付いているところ。
Candodualdrivercont
安いイヤホンはスマホの音量調節ができないけれど、このイヤホンはボリュームが付いているので、簡単に音量調節できる。

###
エージングするとよくなるかもしれない、もう少し鳴らしてみよう。

聞き比べてみたら、ダイソー500円ハイレゾイヤホンの方が良かった。
昔の投稿を読み返すと、ダイソー500円ハイレゾイヤホンの評価が低い。


最近の投稿】【最近のイヤホン】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

 

2023年10月16日 (月)

ダイソー500円ハイレゾイヤホン <安いイヤホンで楽しむ>

ダイソーの500円イヤホンが話題になっていた。
「安いイヤホンで楽しむ」マニアとしては聞いてみないと! ということで買ってきた。
Hireso1 Hireso2

ミニプラグは金メッキだし、ボディも100円イヤホンのような安っぽさはない。
500円でなんとハイレゾ対応だって。
スペックは

https://jp.daisonet.com/products/45504802773017

型式: ダイナミック型
ドライバー: φ10mm
出力音圧レベル: 100±3dB/mW
再生周波数帯域: 20Hz〜40000Hz
インピーダンス: 18Ω±15%
プラグ: φ3.5mm 4極ステレオミニプラグ
マイク周波数特性: 100Hz〜10000Hz
指向特性: 全指向
感度: -42±3dB
ケーブル長さ: 約1.2m(Y型)

再生周波数帯域は 20Hz~40kHzらしい。
しかし、耳が8KHzから上は聞こえなくなっているので関係ない。

女性ボーカルでを聞いてみた。
成底ゆう子さんのダイナミック琉球

https://m.media-amazon.com/images/I/51zQugJJ6KL._AC_.jpg

--- 全て主観です ---
低域が低く高域が強い。
音圧レベルが低いのと相まって静かな感じに聞こえる。
肝心の高域も、高いところで歪むようだ。
音量を上げると、わからなくなるのだが、軽難聴の耳でちょうどよいレベルだと耳が良い人には大きすぎるのではないだろうか?
マイクも付いているけれど、300円イヤホンにも100円イヤホンにもマイクは付いているので、ビデオ会議用にするなら100円イヤホンで良い。

結論:軽難聴で8kHzから上が聞こえない人には向かない

---- ----

それでも、昔秋葉で売っていたearPodsそっくりさん500円とは雲泥の差だ。

Earpodsmodoki

 

ところで、普段使っているのは、JVCのHA-FX33XM。
Hafx33xm2

https://www3.jvckenwood.com/accessory/headphone/inner/ha-fx33xm/

再生周波数帯域 5Hz~25,000 Hz
出力音圧レベル 104 dB/1 mW
最大許容入力 200mW(IEC※)
インピーダンス 16Ω
コード OFC約1.2 m(Y型)、
φ3.5mm 24金メッキ4極ステレオミニプラグ付

実売4,000円くらいのイヤホン。
「安いイヤホンで楽しむ」マニアには結構高価だ。

音は500円と比べたらかわいそう。


最近の投稿】【最近のイヤホン】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2023年10月 4日 (水)

無線局再免許

アマチュア無線局の再免許のお知らせが来ていたのを思い出したので申請した。
2023/9/25から再免許の申請の期間が1年間~1月前から6月前~1月前に変わるらしいのでその前に申請した。

9/16受付、10/2審査終了して、届いた免許状を見たら、周波数帯が書いてない!!

R5
一括表記記号になったのだそうだ。

5年前の免許状
H30 

一括表記記号にはアマチュアバンドで全ての電波形式と 4,630kHz/A1Aが含まれているのだが、
包括免許ではないので、工事設計書に記載された無線設備が発射可能な周波数以外は使用できないらしい。

しかし、適合表示無線設備は届出だけで使えるらしい。電子申請で届出ることができるので、包括免許のように運用しているということか。


最近の投稿】【最近の展示会 】【最近のRF】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2023年7月 2日 (日)

SAQ アレクサンダーソンデイ運用 2023

スウェーデンにある世界遺産のグリムトン無線局(SAQ)が2023/07/02にメッセージを送信したので聞いてみた。
1時間前に気が付いたので、オランダのTwente大学のWebSDR経由で聞いた。Internetを使うと日本まで電波が届かなくても聞ける。

周波数は17.2kHz(若者なら耳で聞こえる)なので、日本で直接聞いた人はいないようだ。
使っている無線機は、簡単に言うと発動発電機に数Kmあるアンテナに接続したような構成。

インフォメーションを見たらYoutubeでリアル配信していたので送信が始まるまで見ていた。
時間が間違っていないことが確認できるので安心できる。
↓アンテナの説明
Saq_20230702_antena

今年はメッセージは手打ちで、信号も弱くノイズも多く取れないところがあった。

後で、Youtubeの配信で送信している場面とメッセージが公開されていた。
Saq_20230702_message

なんだ、おじさん、間違ってもHH出さないんだ。 (^^;



最近の投稿】【最近の展示会 】【最近のRF】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

«GMC-4で動く3連ナイトライダー