JH1LHVの雑記帳

和文電信好きなアマチュア無線家の雑記帳

ARDUINO CW KEYER を試してみた ~その33~

今、Fusion PCB では基板3枚が1$ なんだって。

f:id:JH1LHV:20180917123222j:plain

こんな安いなら何か発注しておこうかと・・・思いついたのが Arduino CW Keyer のシールド基板。

で、急ぎガーバーデータを作って発注作業を進めたところ、送料が 1700円 って。。。
トータルでこんなに高くなるんだったら、いつもの5枚 $7.9 の方が送料込だし、絶対お得でしょう!
このサービス?・・・いったい誰が利用するんでしょうか。

■ ■

それで今回発注した基板のハード構成ですが、

  • Arduino Uno で使えるシールドとする(mega も使えるように)
  • メモリ4個
  • 半固定 VR でスピード調整
  • PS/2 キーボード
  • 無線機2台
  • LCD 表示
  • CW Decoder

と、まぁザックリこんな感じ。

f:id:JH1LHV:20180917124812j:plain

基板上に LCD(1602)が付けられるようにしたので、8cm×8cm と少し大きめになりました。
(9/17 発注済み)  

■ ■

PS/2 で使えないキーボードがあったので、USB ホストシールドだったら上手く動作するんじゃないかと、手持ちの4種類のシールドで試してみましたが、残念ながら PS/2 キーボードと同じ状況でした。

PS/2 で使えるものは USB でも大丈夫。
PS/2 でダメなものは USB でもダメということです。

ということで、今回はこれまで通り PS/2 端子だけを実装することに。

f:id:JH1LHV:20180907211658j:plainf:id:JH1LHV:20180907211811j:plain

で、キーボードの出力ってどうなってるのか気になったので・・・波形観測。

ちゃんと動くやつはキーが押されるたびにクロックとデータが出力されるんだけど、ダメなやつだと何も出力されませんでした。

最初の接続確立ができないとその後ダンマリになってしまうキーボードでは無反応になるようで、今回のような PS/2 で使うにはキーを押したタイミングで信号が一方的に流れないとダメなようです。

USB → USB to PS/2 信号変換 → PS/2
のような、「キーを押したら信号が出力する」というアダプタでも作って経由させれば上手くいくかな。


■ ■

自分で PCB を発注する時。
私が「一番面倒だなぁ」と感じているのが、フットプリントに関すること。

回路図もでき上り、「これからパターンでも繋ごうか」という時になって・・・手持ちのパーツのフットプリントがないことに気づく。

特に、インターフェースで使うパーツの類ね。

C や R、IC チップなんかはこれでもかというくらいに登録されてるけど、ジャックやコネクタの類はまぁ少なくて、手持ちのパーツがヒットしないのは普通のこと。

もちろん、徹底的にググりますが・・・まぁ、見つからない。

「トランジスタ技術 SPECIAL No.142」の付録 DVD に、秋月電子のパーツが 800 も登録されているというので期待したのですが、今回使う PS/2(mini Din6)やイヤフォンジャックはありませんでした。 

 

 

何か作ろうと思ったら、そういったインターフェースのパーツは必ず使うんだけどね。

それにパーツを調達する時って、「まず、秋月電子から」っていう人も多いと思うんですよ。
なので売れ筋のパーツのフットプリントくらいはダウンロードできるようにサービスしてくれるとありがたいんだけど・・・なんとかなりませんかねぇ。

もしそうなったら、使うパーツは秋月電子で売ってるものだけで考えるんだけど。 

KiCad をインストールするだけで・・・
ライブラリのことなんてまったく気にしない、そんな環境に早くなってくれないかな。

ということで、今回は何点かのフットプリントを作りました。

f:id:JH1LHV:20180917133045j:plain

f:id:JH1LHV:20180917133055j:plain

データシート片手に実際のパーツとにらめっこしながら、絶対に寸法を間違えないように。
ホント、この作業は面倒で神経も使うし、できれば避けたいくらい。

それこそ、ちょっとでも間違ったりしたら・・・届いた基板はゴミ箱行きですからね。。。

あとは、今回の基板がそうならないことを願うだけです。


 

にほんブログ村 その他趣味ブログ アマチュア無線へ
にほんブログ村 

 


アマチュア無線 ブログランキングへ 

 

昭和の時代にヒットした歌の歌詞を和文で聞く

懐かしい昭和歌謡の歌詞を和文にしてみました。

曲名、歌詞は(著作権的なこともあり)掲載することは控えました。


まぁ、なんの曲なのか、聞き当てるのも楽しいかも・・・です。

 

〇 1曲目(20wpm)

 

〇 2曲目(25wpm) 

 

昭和時代の歌謡曲の歌詞は、口ずさめるほどに単純なフレーズが多いので、

和文電信でも絶対に聞きやすいと思います。 

 

 

にほんブログ村 その他趣味ブログ アマチュア無線へ
にほんブログ村 

 


アマチュア無線 ブログランキングへ 

 

Learning Morse で苦手な符号を練習する

CQ とか 自分のコールサインってどんなに速い符号でも分かりますよね。
「あっ、CQ が聞こえる・・・」
「あっ、自分のコールが呼ばれた・・・」
なんてね。

これって、他の符号に比べて、”聞いたり、唱えたり” している時間が長いからで、
・・・もう勝手に頭が反応しちゃう。

ということで、
今日はこの理屈を利用して、苦手な符号だけを徹底的に聞きまくる・・・
そんな練習を Learning Morse を使ってやってみます。

 

〇 苦手な文字だけを聞きまくる 

f:id:JH1LHV:20180908115003j:plain

数字の4が苦手な符号なら、この4だけをひたすら聞き続ける。
そう、嫌というほどです。 

速度を、遅くしたり、速くしたり・・・とにかく聞き続けます。

 

〇 似たような、間違えやすい符号を連続で聞きまくる

f:id:JH1LHV:20180908115734j:plain

f:id:JH1LHV:20180908122409j:plain

続いて間違えやすい符号2文字の連続とか。
この練習では同じバリエーションの符号をひたすら繰り返して聞くというのが、ミソです。 

f:id:JH1LHV:20180908122706j:plain

連続文字はメモ帳で作成してから貼り付けると簡単です。


苦手な符号って人それぞれだと思うけど、
受信中に苦手符号で、「ん?」って、微妙につまずいたりすると、
その先何文字かわからなくなってしまい、和文だと会話がつながらなくなってしまいます。 

逆に言えば、この「ん?」という感覚がまったくない速度が、今の適切な受信速度ということですね。


ということで、
こんな練習・・・具合悪くなりそうですが。。。
自分の体調に合わせながら、短時間でいいので、やってみるのも上達への一歩かもしれません。

 

なお、Vector に登録中のソフトを最新のものに差し替えておきました。 

LearningMorseの詳細情報 : Vector ソフトを探す!

CW MANIAの詳細情報 : Vector ソフトを探す!

 

 

にほんブログ村 その他趣味ブログ アマチュア無線へ
にほんブログ村 

 


アマチュア無線 ブログランキングへ 

 

9Key(ナインキー)を作ってみた

とってもシンプルな、9key を作ってみました。

なにやら最近の電子工作界隈では、
自分でキーボードを作ることが流行ってるみたいです。

流行りものが大好きなわたしとしては、そんなブームを素通りすることはできずに、
Arduino ベースの、とってもシンプルな 9key(3×3)を作ってみました。

f:id:JH1LHV:20180829220658j:plain

こんなやつです。
フルキーボードだと1台作るのに1万円以上掛かってしまうので・・・今回は、キー9個だけです。

マイコン

Arduino のようなマイコンを入力デバイスにしてパソコンに接続するには、マイコン自身が HID(ヒューマン・インターフェース・デバイス )として認識できるものでなければなりません。

Arduino では、Mega32U4 というチップが載ってる Leonard や、Pro Micro などの限られたものだけがこれに該当します。

一番なじみ深い Uno は対象外で、これをムリに HID にするにはファームウェアを書き換えたり、特別な作業が必要になるので・・・止めといた方が無難です。

で、今回はこの手の自作キーボードで最も使われているだろう、Pro Micro を選択しました。

f:id:JH1LHV:20180829225941j:plain

Pro Micro には幾つかの種類(red、blue、black)があります。
そして、それぞれが微妙に大きさやピンの配置が違ってたりするので購入に際し注意が必要です。
ちなみに、わたしは上の写真の Black Pro Micro を使いました。
中華で @400 程度で購入できます。

回路図

入出力ピンにキースイッチを9個接続するだけ。
回路図はとってもシンプル。

先月 KiCad がバージョンアップしたので、新たな機能でも試してみようかと思ったのですが、あまりにも回路が簡単すぎて、バージョンアップの恩恵にあずかることはありませんでした。

f:id:JH1LHV:20180829223506j:plain

9個のキー入力を判別するだけ。

Pro Micro の IO ピンは全部で 18 本。
今回の9key では IO ピンとスイッチは1対1で対応できます。

これがフルキーボードだとそう簡単じゃなくて、IO ピンの関係からキーボード・マトリクスで処理する必要があるので、多少複雑になります。


左右分離したフルキーボードでは Pro Micro を2つ使ってキーボード・マトリクスを構成するのが一般的なようです。

まぁ、私がやろうとしているのは、そんな大げさなキーボードじゃないので。
ハードもソフトもとっても簡単。

ホントのところは、大枚はたいてまでフルキーボードまでは必要ないし。。。
むしろ、9キーなら持っててもいいかなぁ~って。

  • KiCad のホットキー(ショートカット)を割り当てたり
  • 3D モデリングツール Fusion360 のショートカットを割り当てたり
  • ハムなら Winkey とかのメモリを割り当てるとか

・・・用途別に、いくつか持っていてもいいかなぁ~って。

基礎チェック

本格的な作業に入る前に、まずやっておくこと!
それは、必要最小限の構成でホントに期待通り動くか・・・チェックすることです。

ミニブレッドボードに Pro Micro とタクトスイッチを1個取り付けた最小構成で HID として振舞ってくれるのか確かめておきます。

f:id:JH1LHV:20180808140324j:plain

スケッチは Arduino IDE のサンプルを少し修正して使います。
基本的には keyboard.h を include して、Keyboard.press() と Keyboard.releaseAll() を使うだけです。

IDE のボード設定は Leonard して、Pro Micro へスケッチを書き込みます。

#include "Keyboard.h"

#define Button1 2

void setup() {
  Keyboard.begin();
  pinMode(Button1, INPUT_PULLUP);
}
void loop() {

  if(digitalRead(Button1) == LOW){
    Keyboard.press(KEY_LEFT_CTRL); // クリップボードのデータを貼り付け
    Keyboard.press('v');
    delay(100);
    Keyboard.releaseAll();
    while(digitalRead(Button1) == LOW);
  }

  delay(100);
}

テストスケッチは、タクトスイッチに <ctrl> + V (貼り付け)を割り当てただけ。

メモ帳に書いた文字をコピーしてタクトスイッチを押したら、ちゃんと文字をペーストしてくれました。
基礎チェックは成功です。
 

PCB

最小構成で HID の確認ができたので、ガーバデータを作って Fusion PCB へ発注しました。
できるだけ小さく・・・作ったつもり。。。

f:id:JH1LHV:20180827214256j:plain 

f:id:JH1LHV:20180826202426j:plain

8/8 注文 → 8/22 到着。

製作

パーツさえ揃ってしまえば、キーボード作りは超簡単。
ハンダ付けするだけの単純作業です。


f:id:JH1LHV:20180826202616j:plain

キースイッチは、青軸。(私はこの感触が一番好きなので。)
打鍵時の感触は軸の色で違います。
幾つかの種類の中から、自分が心地よいと感じるものが選択できます。

f:id:JH1LHV:20180901110149j:plain

打鍵時の感触が確かめられる、こういったものも市販されています。(AliExpress で購入)
メカニカルキー Cherry mx の各軸の違いが確かめられるので、本格的にキーボード作りにチャレンジするなら持っていてもいいかもです。

 

f:id:JH1LHV:20180827151043j:plain

必要なパーツはこれだけ。

 

f:id:JH1LHV:20180827153639j:plain

表面です。3×3の構成です。

 

f:id:JH1LHV:20180827153713j:plain

裏面です。
Pro Micro は基板に直付けです。

 

f:id:JH1LHV:20180827154231j:plain

キートップを取り付けた状態です。

 

f:id:JH1LHV:20180829220658j:plain

完成です。
一応、足はスペーサを使いましたが・・・これ、専用のケースっているかなぁ~。
まぁ余計なことしないで、このままでいいような気がします。

で、スケッチサンプルとして、KiCad でよく使うホットキーを割り当ててみました。

(KiCad)

X軸で反転

Y軸で反転

配線の開始

アイテム移動

アイテム回転

  r 

アイテム編集

e

 コピー

 Ctrl + c

 貼り付け

 Ctrl + v

 元に戻す

 Ctrl + z


同じようなコードをスイッチ分の9回、繰り返すだけです。  

#include "Keyboard.h"

#define Button1 2
#define Button2 3
#define Button3 4
#define Button4 5
#define Button5 6
#define Button6 7
#define Button7 8
#define Button8 9
#define Button9 10

void setup() {
  Keyboard.begin();
  pinMode(Button1, INPUT_PULLUP);
  pinMode(Button2, INPUT_PULLUP);
  pinMode(Button3, INPUT_PULLUP);
  pinMode(Button4, INPUT_PULLUP);
  pinMode(Button5, INPUT_PULLUP);
  pinMode(Button6, INPUT_PULLUP);
  pinMode(Button7, INPUT_PULLUP);
  pinMode(Button8, INPUT_PULLUP);
  pinMode(Button9, INPUT_PULLUP);
}
void loop() {

  if(digitalRead(Button1) == LOW){
    Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('c');
delay(100); Keyboard.releaseAll(); while(digitalRead(Button1) == LOW); } if(digitalRead(Button2) == LOW){ Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('v');
delay(100); Keyboard.releaseAll(); while(digitalRead(Button2) == LOW); } if(digitalRead(Button3) == LOW){ Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press('z');
delay(100); Keyboard.releaseAll(); while(digitalRead(Button3) == LOW); } if(digitalRead(Button4) == LOW){ Keyboard.press('m'); delay(100); Keyboard.releaseAll(); while(digitalRead(Button4) == LOW); } if(digitalRead(Button5) == LOW){ Keyboard.press('r'); delay(100); Keyboard.releaseAll(); while(digitalRead(Button5) == LOW); } if(digitalRead(Button6) == LOW){ Keyboard.press('e'); delay(100); Keyboard.releaseAll(); while(digitalRead(Button6) == LOW); } if(digitalRead(Button7) == LOW){ Keyboard.press('x'); delay(100); Keyboard.releaseAll(); while(digitalRead(Button7) == LOW); } if(digitalRead(Button8) == LOW){ Keyboard.press('y'); delay(100); Keyboard.releaseAll(); while(digitalRead(Button8) == LOW); } if(digitalRead(Button9) == LOW){ Keyboard.press('w'); delay(100); Keyboard.releaseAll(); while(digitalRead(Button9) == LOW); } delay(100); }

 

製作費

  • 基板 @200
  • Pro Micro ATmega32U4 @400
  • キーボードスイッチ Cherry mx 3pin @40 × 9 = 360
  • キートップ @50 × 9 = 450

ザックリ、1,500円

キーボードのパーツって案外高いってことに驚きましたが、Cherry スイッチの押し心地ときたら、もう最高です。 

・・・フルキーボード、作りたくなっちゃいました。。。

 

番外編(セキュリティ)

この HID で遊んでいて、ふと、「これって結構危ないかも・・・」って。

USB デバイスが HID として認識できるということは・・・
使い方によっては、他人の PC を勝手に操作することができちゃうということ。

以前、BadUSB のことを書きましたが、これも使い方間違えると同じように危ないなぁ。

例えば、Windows + R の後、CMD で データフォルダを丸ごと削除したり・・・
FTP を使ってファイルを送信したり・・・

f:id:JH1LHV:20180827213802j:plain

USB ケースに QFP パッケージの ATmega32U4 を組み込んだりしたら、もうわからないし。。。

USB マスストレージ(外付け HDD、USB メモリなど)なら、セキュリティツールで全面的に使用禁止にできるけど、HID な入力デバイス(キーボードやマウス)まで禁止にすることはできないからね。

なんか・・・キケン。

これ以上のことは言及しませんが、
第三者がいるところでは絶対に PC から目は離さない、っていう、自衛は必要かも!

得体のしれない USB 接続の送風機や LED ライト、などなど・・・とっても、アヤシイ。

こういうものを PC の USB に接続するのはもう止めて、
AC 接続のアダプタで電源は供給した方が、セキュリティ的には安全だと・・・思いますよ。

 

 

にほんブログ村 その他趣味ブログ アマチュア無線へ
にほんブログ村 

 


アマチュア無線 ブログランキングへ 

 

最新ニュースを和文電信で bot する ~その16~

前回途中で中断していたアクリル板を取り付けました。

f:id:JH1LHV:20180826161958j:plain

f:id:JH1LHV:20180826162133j:plain

使用した接着剤はアクリル板専用の「アクリサンデー」です。

f:id:JH1LHV:20180826161634j:plain

アクリル板の接合部にこの液体を流し込むと、接合部分が化学変化を起こして溶けてつながります。

で、この液体。
しっかりつながれば、それはもう1枚のアクリル板と同じになるらしく。
たとえ力をかけて割ろうとしても、むしろ違うところが割れてしまうんだとか。(ウェブ調べ)

見た目は、水道水のような液体です。
なので、細心の注意を払わないと作業中に関係ないところに、「ポタリ」と垂らしちゃいます。

まぁ速攻で拭き取ればなんとかなりそうだけど
気がつかないでそのままにしてると、汚い跡となって残ってしまいます。

かくゆう私も今回の作業中に何滴か垂らしてしまい、うっすらと変な跡が残ってしまいました。
(光の反射加減でうっすら見えてしまいます。。。)

もし、保護シートが付いてるなら、絶対に最後に剥がした方がいいですよ。
(シートがないならメンディングテープなどで全面を保護してから作業するのがベスト。)

どうしたって、ものが液体なだけに付属してきた貧弱なスポイト状の容器じゃ、傾けただけで「ポタリ」と液が垂れちゃうので・・・ホント注意が必要です。

で、医療用の注射器使ったらいいかもって。
傾けただけで液漏れするようなことはないと思うし・・・今度、入手してみようかな。

■ ■

 

それで接着後の接合部分ですが。
確かにアクリル板同士が溶けあって接合しているので、ガッチリつながっています。
多少乱暴に扱っても大丈夫なくらいです。

そして最後に、側面に電源ジャック、底面にゴム足を取り付けて完了です。
一旦、これでできあがり。

 

■ ■


これからの予定としては、このハード構成のままでプログラムだけを改良していかこうかと。

簡単なところで、英語ニュースが聞けるように欧文モードを追加するとか。
・・・けど、わたしは聞くことないと思うけどね。

でも、ホントはやりたいことは違ってて。

今の Raspberry Pi から M5Stack のような小さなマイコンに変更したいのです。
装置全体をもっとコンパクトにまとめたい。
できればポケットタイプに。

今の Raspberry Pi の仕様じゃ、電源周りのこととかで余計なハードが必要なので・・・。

ただねぇ~。
Raspberry Pi だとプログラムの実装が楽なんですよね。
WiFi 接続は OS 任せでいいし、開発言語の Python も MicroPython じゃないので、
どんなライブラリでも自由に使える。(これが最大のメリット!)

日本語の解析に使っている形態素解析や文字コードの変換も、
MicroPython じゃライブラリがないから。
それに比べたら普通の Python だと使えるライブラリも多いから・・・実装は絶対、楽。

Raspberry Pi は、さすが OS を内蔵した小さなパソコンって感じ。
何をするにもやっぱり強力で、将来的な拡張性だってマイコンより優れていることは確か。
・・・手放せないでいるのが、今のわたしの現状です。

WiFi が標準で使えて、普通の Python が使える、そんな小さなマイコンってないかな。
そんなのあれば、もう速攻で買っちゃうんだけど。

ということで、そんな都合のいいマイコンが現れるまで、
もうちょっとだけこのセットのままで手を入れてみようかと考えてる・・・今日この頃です。

 

 

にほんブログ村 その他趣味ブログ アマチュア無線へ

にほんブログ村 

 


アマチュア無線 ブログランキングへ 

 

ハムフェア 2018

土曜日、ハムフェアという名の、ジャンク市に行ってきました。

f:id:JH1LHV:20180825130040j:plain

持ち帰ったものは、何もなし。
ノーフレンドなので、立ち話もなし・・・寂しすぎ。。。

帰りはアキバ経由で帰宅しました。

Twitter のハッシュタグだけ載せておきます。

#ハムフェア2018
#ハムフェア


皆様・・・お疲れさまでした。 

 

Learnig Morse v.0.74 メール要望対応

メールで頂いたご要望に対する修正です。

 

<ご要望>

BT の前に HR HR を加えてほしい。
昔の国家試験の実技で流れていた、HR HR があれば一呼吸おけて慌てずに済むし、
気持ちも引き締まり心の準備が整う、とのことです。


確かに、そうかもです。
もう、すっかりその感覚・・・忘れてました。

昔は、モールスの練習といえば、必ず HR HR から始まったもので、
この符号が流れると、「ヨシ、これから集中して聞くぞ!」って身構えましたからね。

HR は Hear のことなので、この後の本文を取りこぼさずに、「聞け!、聞け!」ってね。

ということで、早速修正しました。
 

 f:id:JH1LHV:20180822202124j:plain

チェックボックスで、「開始・終了符号」を ON / OFF できます。(デフォルト ON)

<チェック時>
欧文タブでは、 HR HR BT <本文> AR
和文タブでは、 HR HR ホレ <本文> ラタ

 

download: LearningMorse_v.0.74.zip

 

JH8△△△さん、メールありがとうございます。
 

 

にほんブログ村 その他趣味ブログ アマチュア無線へ
にほんブログ村 

 


アマチュア無線 ブログランキングへ