忍者ブログ



JO3GBD
JO3GBD HomeJO3GBD - ブログ >[カテゴリ別]

JO3GBDアマチュア無線局長のブログ。無線、UD、IT、家電、電子工作、IchigoJam、IchigoHam、その他もろもろ。

カレンダー

09 2019/10 11
1 3 4 5
8 9 11 12
13 15 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

ブログ&サイト内検索

最近の記事

最近の動画

hamlife.jp

リンク

にほんブログ村

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

人気ブログランキング


楽天で探す
楽天市場

結線2本、プログラム一行でここまで動きました。


Analog meter driven by IchigoJam

いろいろと遊べそうです。

#IchigoJam #IchigoHam #Sメーター #自作室
PR
    



アマチュア無線仲間の方々がIchigoJamに興味を持ってくれたらいいな、と思いながら書いているシリーズ記事。今回はちょっとお話が脱線します。
次回は、前回の記事に続いて、キーボードキーヤーを作る予定ですが、せっかくなので、先に基板に表示を付けてしまおうと、構想通りに0.96インチOLEDを実装して、試しに表示をさせてみたのですが・・・




なかなかくっきりきれいな表示ではあるのですが・・・

ん~ン、文字が小さすぎて読めない! (って何かのCMですね。)

ソフトを工夫して倍角のフォントで表示するようにするか、あっさり予定を変更して、文字の大きな2行表示の液晶に付け替えるか、ちょっと悩んでいます。

機能も増えてきてそろそろプログラムのサイズも気にしないといけないし、どうしようかと。

ー・・・ー 

 IchigoJamでCWキーヤーの総目次 へ
 

#IchigoJam #IchigoHam #自作室
    



アマチュア無線仲間の方々がIchigoJamに興味を持ってくれたらいいな。
そんなことを思いながら、自分流のエレクトリックキーヤーを作り上げていく記事を連載風に書いています。今回がその第3回目になります。

前回は、パドルとリグをつなぐインターフェス回路と、キーヤーのプログラムをご紹介しました。
今回は、固定メッセージ(自局のコールサインなど)の送出する機能を追加します。

◆基板(今回実装分)
固定メッセージを送出するタクトスイッチを追加しました。
折角なので4つのスイッチを追加し、前回のキー速度UP/DOWNスイッチと併せて6つのスイッチになりました。

表(部品)面

左から、UP:緑のスイッチ:キー速度を早く、DOWN:青:遅く、メッセージ1(茶)、2(赤)、3(橙),4(黄)

裏(半田)面


IchigoJam S に挿入した写真

左側の木製の当局愛用の「どこでもパドルMINI Wood 」by のむさんローテク工房 です。


◆回路図
赤線で囲んだ部分が今回実装追加した回路です。

(クリックすると拡大します)

◆回路の説明
前回のUP/DOWNスイッチと同様にIN2の1ポートでアナログ分圧方式を採用し、(今回4つのスイッチが増えて)計6つスイッチを抵抗で分圧された電圧をプログラムで判定します。この回路は、アマチュア無線家らしくICOM社の無線機用外部キーパッドの回路定数に倣いました。
(参考:IchigoJamに無線機用外部キーパッドをつないでみました(Part 1)

◆部品リスト(今回追加した部品のみ)
部品番号 名称 型番 備考
SW_1~4 タクトスイッチ (6x6mm) 2.54mmピッチに挿入できるもの
R6 1/6W カーボン抵抗 1.5kΩ
R7 1/6W カーボン抵抗 1.5kΩ
R8 1/6W カーボン抵抗 2.2kΩ
R9 1/6W カーボン抵抗 4.7kΩ

◆プログラム
10 '190828 CW KEYER(4)
20 GOSUB @INIT
30 IF !IN(1) OUT 1,1:LED 1:BEEP 13,T:WAIT T:OUT 1,0:LED 0:WAIT T
40 IF !IN(4) OUT 1,1:LED 1:BEEP 13,T*3:WAIT T*3:OUT 1,0:LED 0:WAIT T
50 GOSUB @SW:IF S=0 GOTO 30
60 IF S<5 GOTO @MORSE
70 IF S=6 T=T-1 ELSE T=T+1
80 IF T<2 T=2
90 IF T>18 T=18
100 IF IN(1) AND IN(4) BEEP 50,T:WAIT 2*T:GOTO 30
110 @MORSE:C=S*10
120 N=[C]:IF N=0 GOTO 30
130 B=10000:FOR I=0 TO 4:M=N/B%10:IF M<0 M=M+6:N=N+35536
140 IF M OUT 1,1:LED 1:BEEP 13,T*M:WAIT T*M:OUT 1,0:LED 0:WAIT T
150 B=B/10:NEXT
160 WAIT T*3:C=C+1:GOTO 120
170 @SW:V=ANA(2)
180 IF V>933 S=0:RTN
190 IF V<932 S=4
200 IF V<784 S=3
210 IF V<663 S=2
220 IF V<511 S=1
230 IF V<303 S=5
240 IF V<92 S=6
250 RTN
260 @INIT:T=5:LET[10],1333,333,11133,331,3111,311,0
270 LET[20],113,131,11111,31,31,3111,313,0
280 LET[30],3313,111,1311,0
290 LET[40],3,113,0
300 RTN

◆プログラムの説明
・30行から100行:前回のキーヤー部分です。これにメッセージキーヤーを追加していきました。

・170行の@SWサブルーチンは、IN2のアナログ電圧を判別してどのスイッチも押されていない時は変数Sに0を、押されているときは押されたスイッチの番号(1~6)をSに 返します。なお、便宜上UPスイッチは5、DOWNスイッチには6を割り当てています。

・20行と260行~300行:
 固定文字列(メッセージ)のモールスコードを定義しています。今回は、短点(・)を1、長点(-)を3として、”JO3”の場合は、1333=・---=”J”  333=---=”O” 11133=・・・--=”3”といったわかりやすい方式(※1)を採用しました。おしまいには0を入れます。
260行で配列の[10]からにはSW_1が押されたときに送出する文字列を、270行に[20]からはSW_2の文字列といった具合に入れていきます。今回のプログラムでは、次のようにしていますが、好きなメッセージに変更できます。
配列 文字列 おしまい
260 [10]~ 1333(J), 333(O),11133(3),331(G),3111(B),311(D) 0
270 [20]~ 113(U),131(R),11111(5),31(N),31(N),3111(B),313(K) 0
280 [30]~ 3313(Q),111(S),1311(L) 0
290 [40]~ 3(T),113(U) 0

・110行から160行:
 前述のエンコードした数字をモールス符号化するプログラムです。
このわかりやすい単点1、長点3の方式とプログラムはIchigoJam開発者の福野さんのブログ記事:音声読み上げで自学する和文モールス信号 on IchigoJamから頂きました。
IchigoJamのBASICに慣れ親しんでいただく目的でこのわかりやすい方式を紹介させていただきました。

一方で、実践面で必要な”?”や”/”といった6要素のモールス符号には対応していないので、次回以降ではとてもわかりにくい方式?への変更を予定していますので悪しからずご了承ください。

次回は、キーボードで入力した文字でモールス信号を送出してみたいと思います。

ー・・・ー 

 IchigoJamでCWキーヤーの総目次 へ
 


#IchigoJam #IchigoHam #自作室
    



アマチュア無線仲間の方々に、IchigoJamに興味を持ってもらいたい!
そんなことを思いながら、自分流のエレクトリックキーヤーを作り上げる連載記事の第3弾です。

前回、インターフェースの全回路構想をご紹介しました。(下の写真)


前回は基板の上に部品を並べてみただけでした。(上の写真)今回は、そのうちのキーヤーと無線機を接続する回路と、キーヤーの速度調整ができるスイッチの部分を 自作したIchigoJamに上乗せできるユニバーサル基板 に実装をして、実際に無線機のキー入力につないでテストをしました。(今後、この基板に回路/機能を順次増やしていく予定です。)

◆基板(今回実装分)

表(部品)面


裏(半田)面


IchigoJamに挿入した写真
左のジャックがパドル入力(パドルへ)、右がキー出力(無線機のキー入力へ) 
緑のスイッチがキー速度を早く(UP)、青が遅く(DOWN)


無線機(IC-7100)のキージャックにつないでキーイング中


◆回路図
今回実装分の回路です。

(クリックで拡大します)


◆回路の説明
パドル入力は(1):初めの第一歩 - 3行のプログラムと同じくIN1とIN4端子ですが、今回は3ピンのフォーンジャックも取付けて、念のためでプルアップ(R1,R2の22kΩの抵抗)しています。
(IN1とIN4はチップ内でプルアップされているので抵抗が無くても動作しますが、ノイズマージン向上のおまじないと思ってください。)

キー出力は、同じ3ピンジャックを2ピンで使用し、手持ちのフォトカプラ―で無線機とIchigoJamをアイソレートして高周波回り込みへの配慮をしました。(出力回路はこちらのようなトランジスタ回路でも動作はします。)
なお、今回実装した部品ではキー出力のオン抵抗が100Ω台になっており、無線機の種類や結線構成(例:マイク端子からのキー入力)によっては不具合の恐れもあるので、フォトカプラと抵抗はICソケットを介しての実装し、後から交換ができるようにしました。
(今回使用したIC-7100は数十kΩまで反応しますので、オン抵抗は全く問題が無いのですが。)
無線機のキー入力したときは、無線機からもモニター音がでるので、IchigoJamのブザー音を消せるようにスイッチ(SW_SOUND)を設けました。

キーイング速度変更はUPとDOWNのタクトスイッチ方式にしました。速度変更はボリューム(半固定抵抗)を使う方法もありますが、今回はさらに多くのスイッチをつける予定があるのでIN2のアナログ入力の1ポートでアナログ分圧方式でスイッチの判定をします。(参考:IchigoJamに無線機用外部キーパッドをつないでみました(Part 1)


◆部品リスト
部品番号 名称 型番 備考
J1,J2 3.5mm小型ステレオミニジャック
基板取付用
ST-005-G 基板の穴をドリルで大きくする
J3 ピンソケット 4ピン
R1,R2 1/6W カーボン抵抗 22kΩ
R3 1/6W カーボン抵抗 330Ω (無線機によっては要変更)
U1 フォトカプラ TLP785

手持ちのものでランク不明
(無線機によっては要変更)

SW_UP,
SW_DOWN
タクトスイッチ (6x6mm) 2.54mmピッチに挿入できるもの
R4 1/6W カーボン抵抗 2.2kΩ
R5 1/6W カーボン抵抗 470Ω
SW_SOUND スライドスイッチ ( 3P) 2.54mmピッチ
BZ1 圧電サウンダ    
  ユニバーサル基板   IchigoJam用(自作品)


◆プログラム

・3行プログラム
10 IF !IN(1) OUT 1,1:BEEP 9,5:WAIT 5:OUT 1,0:WAIT 5
20 IF !IN(4) OUT 1,1:BEEP 9,15:WAIT 15:OUT 1,0:WAIT 5
30 GOTO 10

初めの第一歩 - 3行のプログラムを少し変更しました。OUT1,1でキー出力 ON(電鍵を押した状態)、OUT1,0 でOFF(電鍵を離した状態)になります。
このプログラムだけでも、無線機を接続したらIchigoJamのキーヤー操作で実際に電波が出ていきます。

・キーイング速度調節の追加
10 T=5
20 IF !IN(1) OUT 1,1:LED 1:BEEP 13,T:WAIT T:OUT 1,0:LED 0:WAIT T
30 IF !IN(4) OUT 1,1:LED 1:BEEP 13,T*3:WAIT T*3:OUT 1,0:LED 0:WAIT T
40 S=ANA(2):IF S>200 GOTO 20
50 IF S<50 T=T+1 ELSE T=T-1
60 IF T<2 T=2
70 IF T>18 T=18
80 IF IN(1) AND IN(4) BEEP 50,T:WAIT 2*T
90 GOTO 20

キーヤーの送出速度をスイッチ操作で変更できるようにしました。
? ANA(2)で確認したら、UPスイッチを押した時はANA(2)は0、DOWNスイッチを押した時は178か179、どちらも押していない時は1023になりましたので、おおざっぱに50と200で判定してスイッチを判定しています。速度調節の上限と下限に制限(2と18)も設けました。
ついでにキー出力に合わせてLEDが点滅するようにしました。

欲を言えば、速度調節の加減(スイッチ押した時の速度変化量)に違和感がありますが、さほど細かに調整はしないので、良しとしています。

次は、固定メッセージ(自局のコールサインなど)の送出機能を追加する予定です。

ー・・・ー 

 IchigoJamでCWキーヤーの総目次 へ
 


#IchigoJam #IchigoHam #自作室
    



アマチュア無線仲間の方々に、IchigoJamに興味を持ってもらいたい!
そんなことを思いながら、自分流のエレクトリックキーヤーを作り上げる連載記事の第2弾です。

IchigoJamとはもともと小学生のプログラミング学習用の小型のマイコンですが、お手軽で簡単にプログラミングが出来て、性能も結構良いので、無線関係の自作用にはもってこいだと思っています。
(IchigoJamについては⇒こちらのコラムをご参照)

前回のIchigoJamでCWキーヤー(1)では、たった3行のお手軽プログラムでスクイズ付エレクトロニックキーヤーが実現できました。
しかし、ただブザー音が鳴るだけではつまらないので、実際に無線機つないで運用してみたいし、であれば、キーイングスピードも変えられるようにしたい、メモリーキーヤー、キーボードキーヤーも、と話が膨らんでいきます。

そのためのハードウェア(インターフェース回路)は、順次作り上げていくのですが、まずは全体の回路の構想を作りました。
回路は、以前ご紹介した自作したIchigoJamに上乗せできるユニバーサル基板の上に作りこんでいきます。いわゆる、プロトタイピングですね。



最終的には、だいたい次のようなメージの基板の部品配置と構成になる予定です。


端子をご覧いただいて、かなり欲張った仕様になっているのがお分かりかと思いますが、いずれもIchigoJamで実現が可能な範疇だと考えています。

実は、全回路図を作成をしておりますが、公開は、実配線をして動作検証を行ってからプログラムと共に順次公開することにします。

果たして挫折せずに最後まで作っていけるかどうか、一抹の不安もありますが、いつものように、ぼちぼちとやっていきますので末永く見守ってくださいね。

#IchigoJam #IchigoHam #自作室
    



先日、出図した「組み込み用IchigoJam基板の第三弾」が到着しました。

部品の実装、ファーム書き込み、各機能の確認を一通り終え(詳細は→組み込み用IchigoJam基板を確認中!(1) (2) (3) をご参照く)ましたので、あらためまして、この基板についてご紹介をします。

・組み込み用IchigoJam基板(第3弾)とは
 □ IchigoJamを何か用途のモノに組み込むときに便利な基板です。
 □ 基本的にはIchigoJamと同じ回路構成です。
 □ 基板実装は手半田付けを前提にしています。
 □ 外周パッドは2.54mmピッチで、ユニバーサル基板の上にも基板ごと実装ができます。
 □ 三端子レギュレーター(IC2)を実装しなければ3.3Vで駆動可能です。(VCC端子より給電)

・表面写真と端子配列

端子名を印刷した紙の上に基板を置いて撮影しています。
部品実装はすべて手半田付けしました。
LED(手前の中央のチップ)も搭載しています。


・裏面写真

裏面には3端子レキュレータICとコンデンサが4つ。
表裏で基本的にはIchigoJamと同等の回路を実装。
白色の帯はメモ書きスペースのつもり。

・サイズ比較

2.3㎝角の大きさです。
切手サイズとは言えませんが、ペットボトルキャップサイズならば?・・・


・質量

たったの2gです。(手持ちの秤を使って量りました。)


・結線例(動作確認時の結線)

右側はビデオ(RCAメス)、電源(USB Aオス)、キーボード(USB Aメス)を接続。
ブザーはリード付を使いました。

基板を拡大します

右上のケーブル:キーボード、ビデオ、5V電源へ
右下の白いソケット:I2C(IchigoJamのCN5相当)
左上のタクトスイッチ:ボタン
 その下の2ピンヘッダー:BTN-GNDショートジャンパー
左下の3ピンソケット:シリアル接続用(RXD、TXD、GND)


・部品配置図

上側の表面図でのBTN GNDの手前の四角いパッドを半田ブリッジでショートすると自動起動ができます。( 電源投入でLRUN0を自動実行させれます。)
IchigoJamでプログラミングして、動作確認・完成をしてから、この基板に書き込んでなにかに組み込んでも良いかも知れません。

さて、なにに使いましょうか?

#IchigoJam #IchigoHam #自作室
    



「組み込み用IchigoJam基板の第三弾」の確認報告 その3です。

これまでの、
ターミナルエミュレータからLチカ、BEEP
ビデオモニター、キーボード
に引き続きまして、

・I2C(IchigoJamのCN5相当)は、5ピンソケットを付けて自作の外付けEEPRROMを接続して確認しました。


・全IOポートも確認済です。(OUT/PWMはサーボモーター、テスターを使用)
・実行専用のジャンパー(BTNとGND)もOKです。

で、確認用にいろんな端子をつけたらこうなりました。


左下の3pinはシリアル接続用ソケット(TXD、RXD、GND)、ボタンの下の青いものは実行専用モード(電源投入でLRUN0)のショートジャンパー(BTN、GND)です。

実は、先日の記事「8ビットエンコード方式のモールス符号変換」では」この基板を使って作成しています。さりげなくブログの写真にも写っています。



さあ、この基板を使って最初に何を作りましょう。只今考え中です。


#IchigoJam #IchigoHam #自作室
    



FacebookのIchigoJam-FANグループで、モールス符号変換プログラムの符号変換データについて、一符号を1バイト(8ビット)以内であらわす方式があったとか、昔のZ80のCWトレーナーでは・・・とかの書込みを拝見して、「あ、それ知ってる!! 昔にやったことがある。」と・・・

という訳で、FacebookのIchigoJam-FANグループでSHIROさんが公開されいてたSHIROのIchigoJam日記 モールス符号変換のプログラムをベースにさせていただいて、8ビットコードの変換方式をご紹介します。

・記憶を辿って

四十数年前、8ビットマイコンのハンドアセンブルの時代のこと、TK-80の16進キーでASCIIコードで打った文字がモールス符号に変換されて、脇に置いたAMラジオから決して澄んだ音ではないツートツートを聞こえて喜んだ時の記憶が甦りました。
確かTK-80にはブザーが無かったので、マシン語ループ作ったノイズ音をブザー代わりにAMラジオで聞いていたのです。
更に、ふと「"bit"という雑誌があったなあ」を思い出したので、プログラムはそれを参考にしたのかもそれませんが、さすがにこれは定かではありません。
TK-80でしたのでZ-80より以前の8080。8Bit演算しかないので、モールス符号変換は8ビットで処理をしていました。

・符号変換データー

前置きが長くなりましたが、当時を思い出しつつご説明します。
(この方式は私のオリジナルではありません、出典は四十数年前の当時の雑誌か書籍の記事だったと記憶しています。)

まず、モールス符号は 単点(ドット)と長点(ダッシュ)の組み合わせで構成されていて、最小1要素から最大6要素で構成されます。(※1一部の例外があります。)、
従い、単点を0、長点を1とビット単位で構成すれば最大6ビットであらわすことができますが、モールス符号は可変長なので、はじめと終わりがわかるようにしなければばりません。そこで1バイトの変換データーの(頭=MSB=から0で埋めて)符号データの前にスタートビット1を付加し、その後が符号データ(1~6ビット)としてあらわします。 

例えば、
 ”A”は・ー(単点と長点) なので”01”。それに頭にスタートビットの”1”を付加して”101”(二進数)。”101”を十進数表記して"5"になります。

 ”?”は・・--・・なので”001100”、頭に”1”を付加して”1001100”で十進数で”76”
といった具合です。

参考)符号変換表(抜粋)
文字 モールス符号 2進数 10進数
E 00000010 2
M 00000011 3
A ・ー 00000101 5
1 ・ーーーー 00101111 47
9 ーーーー・ 00111110 62
? ・・ーー・・ 01001100 76
: ーーー・・・ 01111000 120

訂正符号(HH(--------)

・・・・・・・・ 100000000 256 ※1

※1)訂正符号(HH(--------))の”・・・・・・・・”は例外で8要素あり、データー9ビット長になります。

・符号化プログラム

目的文字のデータからモールス符号に変換するには、まず、データーを左にビットシフトしてスタートビットの1が来るまでシフトを続けます。

その次から左シフトして0が出れば単点、1が出れば長点、所定の回数(ビット数)になればおしまいとします。

ここでちょっと問題が。8ビットデータを左シフト(RAL)してキャリー(あふれたビット)で判定(JC)とイメージしていたのですが、IchigoJam BASICのデータは16ビットですしキャリー有無の条件判断がありません。(左シフトは”<<"の演算子があります。)

代わりに、左シフト後に十進数の256(二進数では0000000100000000)でビット論理積(&)を取って(マスクして)ビット8(下=LSB=から9ビット目)が1か0かの判断をしています。
(ビット8で判断することで、訂正符号(HH(--------))の符号化も対応ができます。)

参考)符号化プログラムの例:キー入力した文字データをモールス符号に変換して表示する
40 INPUT "MOJI DATA?=",M
60 L=9
80 IF!(M&256):M=M<<1:L=L-1:CONT
90 M=M<<1:L=L-1
100 IF !L ?:GOTO 40
120 IF !(M&256) ?"・";ELSE ?"-";
130 GOTO 90


・IchigoJamのプログラム

FacebookのIchigoJam-FANグループでも公開されてたSHIROのIchigoJam日記 モールス符号変換のIchigoJamプログラムをベースにさせていただいて、8ビットコード方式にしてみましした。

また、変換データの定義が減った分プログラムサイズに余裕ができたので、下記の追加をしました。
 - モールス符号をブザー音で鳴るようにした
 - 訂正符号(HH(--------) も個別対応し、バックスペースとDELキーに割り当てた
なお、(バックスペースを対応した結果論ではありますが)カタカナの変換時の振る舞いが(正しくはないが)モールス符号的に間違いではない動きになりました。

以降にSHIROのIchigoJam日記 モールス符号変換にならった符号変換表と、IchigoJamプログラムを記します。

・符号変換表

文字 文字
コード
内部
コード
モールス符号 2進数 10
進数
アド
レス
! 33 0 ー・ー・ーー 1101011 107 700
" 34 1 ・ー・・ー・ 1010010 82 701
# 35 2 (N/A) 0 0 702
$ 36 3 (N/A) 0 0 703
% 37 4 (N/A) 0 0 704
& 38 5 ・ー・・・ 101000 40 705
' 39 6 ・ーーーー・ 1011110 94 706
( 40 7 ー・ーー・ 110110 54 707
) 41 8 ー・ーー・ー 1101101 109 708
* 42 9 ・・・ー・ 100010 34 709
+ 43 10 ・ー・ー・ 101010 42 70A
, 44 11 ーー・・ーー 1110011 115 70B
- 45 12 ー・・・・ー 1100001 97 70C
. 46 13 ・ー・ー・ー 1010101 85 70D
/ 47 14 ー・・ー・ 110010 50 70E
0 48 15 ーーーーー 111111 63 70F
1 49 16 ・ーーーー 101111 47 710
2 50 17 ・・ーーー 100111 39 711
3 51 18 ・・・ーー 100011 35 712
4 52 19 ・・・・ー 100001 33 713
5 53 20 ・・・・・ 100000 32 714
6 54 21 ー・・・・ 110000 48 715
7 55 22 ーー・・・ 111000 56 716
8 56 23 ーーー・・ 111100 60 717
9 57 24 ーーーー・ 111110 62 718
: 58 25 ーーー・・・ 1111000 120 719
; 59 26 (N/A) 0 0 71A
< 60 27 (N/A) 0 0 71B
= 61 28 ー・・・ー 110001 49 71C
> 62 29 (N/A) 0 0 71D
? 63 30 ・・ーー・・ 1001100 76 71E
@ 64 31 ・ーー・ー・ 1011010 90 71F
A 65 32 ・ー 101 5 720
B 66 33 ー・・・ 11000 24 721
C 67 34 ー・ー・ 11010 26 722
D 68 35 ー・・ 1100 12 723
E 69 36 10 2 724
F 70 37 ・・ー・ 10010 18 725
G 71 38 ーー・ 1110 14 726
H 72 39 ・・・・ 10000 16 727
I 73 40 ・・ 100 4 728
J 74 41 ・ーーー 10111 23 729
K 75 42 ー・ー 1101 13 72A
L 76 43 ・ー・・ 10100 20 72B
M 77 44 ーー 111 7 72C
N 78 45 ー・ 110 6 72D
O 79 46 ーーー 1111 15 72E
P 80 47 ・ーー・ 10110 22 72F
Q 81 48 ーー・ー 11101 29 730
R 82 49 ・ー・ 1010 10 731
S 83 50 ・・・ 1000 8 732
T 84 51 11 3 733
U 85 52 ・・ー 1001 9 734
V 86 53 ・・・ー 10001 17 735
W 87 54 ・ーー 1011 11 736
X 88 55 ー・・ー 11001 25 737
Y 89 56 ー・ーー 11011 27 738
Z 90 57 ーー・・ 11100 28 739
163 58 ・ー・ー・・ 1010100 84 73A
164 59 ・ー・ー・ー 1010101 85 73B
165 60 (N/A) 0 0 73C
166 61 ・ーーー 10111 23 73D
167 62 ーー・ーー 111011 59 73E
168 63 ・ー 101 5 73F
169 64 ・・ー 1001 9 740
170 65 ー・ーーー 110111 55 741
171 66 ・ー・・・ 101000 40 742
172 67 ・ーー 1011 11 743
173 68 ー・・ーー 110011 51 744
174 69 ーー 111 7 745
175 70 ・ーー・ 10110 22 746
176 71 ・ーー・ー 101101 45 747
177 72 ーー・ーー 111011 59 748
178 73 ・ー 101 5 749
179 74 ・・ー 1001 9 74A
180 75 ー・ーーー 110111 55 74B
181 76 ・ー・・・ 101000 40 74C
182 77 ・ー・・ 10100 20 74D
183 78 ー・ー・・ 110100 52 74E
184 79 ・・・ー 10001 17 74F
185 80 ー・ーー 11011 27 750
186 81 ーーーー 11111 31 751
187 82 ー・ー・ー 110101 53 752
188 83 ーー・ー・ 111010 58 753
189 84 ーーー・ー 111101 61 754
190 85 ・ーーー・ 101110 46 755
ソ 191 86 ーーー・ 11110 30 756
192 87 ー・ 110 6 757
193 88 ・・ー・ 10010 18 758
194 89 ・ーー・ 10110 22 759
195 90 ・ー・ーー 101011 43 75A
196 91 ・・ー・・ 100100 36 75B
197 92 ・ー・ 1010 10 75C
198 93 ー・ー・ 11010 26 75D
199 94 ・・・・ 10000 16 75E
200 95 ーー・ー 11101 29 75F
201 96 ・・ーー 10011 19 760
202 97 ー・・・ 11000 24 761
203 98 ーー・・ー 111001 57 762
204 99 ーー・・ 11100 28 763
205 100 10 2 764
206 101 ー・・ 1100 12 765
207 102 ー・・ー 11001 25 766
208 103 ・・ー・ー 100101 37 767
209 104 11 3 768
210 105 ー・・・ー 110001 49 769
211 106 ー・・ー・ 110010 50 76A
212 107 ・ーー 1011 11 76B
213 108 ー・・ーー 110011 51 76C
214 109 ーー 111 7 76D
215 110 ・・・ 1000 8 76E
216 111 ーー・ 1110 14 76F
217 112 ー・ーー・ 110110 54 770
218 113 ーーー 1111 15 771
219 114 ・ー・ー 10101 21 772
220 115 ー・ー 1101 13 773
221 116 ・ー・ー・ 101010 42 774
222 117 ・・ 100 4 775
223 118 ・・ーー・ 100110 38 776

・プログラム

10 '190427 Morse Encode 3
20 CLS:?"*Morse Encode 3"
30 CLV:S=5:POKE#700,107,82,0,0,0,40,94,54,109,34,42,115,97,85,50,63,47,39,35,33,32,48,56,60,62,120,0,0,49,0,76,90,5,24,26,12,2,18,14,16,4,23,13,20,7,6,15,22,29,10,8,3,9,17,11,25,27,28
40 POKE#73A,84,85,0,23,59,5,9,55,40,11,51,7,22,45,59,5,9,55,40,20,52,17,27,31,53,58,61,46,30,6,18,22,43,36,10,26,16,29,19,24,57,28,2,12,25,37,3,49,50,11,51,7,8,14,54,15,21,13,42,4,38
50 ?"CHR?=";
60 K=INKEY():IF !(K=8 OR (K>32 AND K<91) OR K=127 OR (K>162 AND K<224)) CONT
70 L=9
80 IF K=8 OR K=127 M=256:? "xx";:GOTO 140
90 IF K>161 A=K-105 ELSE A=K-33
100 M=PEEK(#700+A)
110 IF !M GOTO 60
120 ? CHR$(K);" ";
130 IF!(M&256) M=M<<1:L=L-1:CONT
140 M=M<<1:L=L-1
150 IF !L ?:WAIT 2*S:GOTO 50
160 BEEP 13,99:LED 1
170 IF !(M&256) ?"・";:WAIT S:ELSE?"-";:WAIT S*3
180 BEEP 0:LED 0:WAIT S:GOTO 140

プログラムの残りバイトは200バイトあり、更に機能アップができます。

なお、今回使用したIchigoJamのファームウェアはVer. 1.3.1です。


-・・・-


IchigoJamでモールスの記事の目次を こちら にまとめましたのでご覧ください。

「IchigoJamってなに?」って方は、こちらのコラムをご参照ください。


なお、IchigoJamは(株)jig.jpの登録商標です。

#IchigoHam #IchigoJam #IchigoJamでモールス #CW #自作室

    



「組み込み用IchigoJam基板の第三弾」の確認経過報告です。

昨日のターミナルエミュレータからLチカ、BEEPに引き続き、ビデオモニター、キーボードも仮接続して動作確認をしました。


仮付けしたボタンも確認、


OKでした。

今日はここまで。次はI/OポートとI2Cの確認をします。


#IchigoJam #IchigoHam #自作室
    



この記事は、先日の「IchigoJamでモールス (2):赤外線ワイヤレス通信ごっこ」のIchigioJamプログラムの説明編です。

直接この記事におこしになられた方は、先に こちらの記事と動画 をご覧されればと思います。

◆送信側のIchigoJam
・プログラム
10 IF !BTN() CONT ELSE BEEP 9,999:LED 1
20 PWM 2,421,-1263:WAIT -10:OUT 2,0:WAIT -10
30 IF BTN() GOTO 20
40 BEEP 0:LED 0:GOTO 10

・説明
ボタンを押している間は、OUT2番端子に、38KHzの周波数の断続信号を出力します。
補足:
 - OUT2番端子:赤外線発光素子=赤外線LEDの駆動回路がつながれている
 - 38KHz:受信側の回路に実装した赤外線受光モジュールの中心周波数に合わせた(キャリア信号)
 - 断続信号:距離が離れると、38KHzを連続では、途中で信号が途切れる現象がになり、断続パルスにした方が安定して通信できる。

10行 ボタンが押されるまで待ち、ボタンが押されたら、ブザーを鳴らし始めてLEDも点灯させ
ます。
20行 (ボタンが押されたので)赤外線発光素子(小基板上のLED)の駆動を行います。
「PWM 2,421,-1236」
使用した赤外線受信モジュールの中心周波数が38KHzなので、38KHzの波形を2番の出力端子(赤外線発光素子回路がつながっている)に出力します。パルス幅は1/3duty(※1)になるようにしています。
 パラメーター:
  -1263: ここがマイナスなのでPWMコマンドの周期とパルス幅が通常(0.01msec)の1/480になります。なので、
  2:出力端子は2番
  421:パルス幅が、0.01msec x (1/480) x 421 = 0.0088ms
  1236:周期が、0.01msec x (1/480) x 1263 = 0.02631ms
の波形が出力されます。
(周波数は1/0.02631msec=38KHz、の周波数で、duty比は0.0088/0.02631=1/3)
「WAIT -10」「OUT 2,0」
その出力状態を (1sec/60/261) x10 = 0.639msec 続けた後に、2番端子を0(LOWレベル)にして、38KHzを一旦止める(休ませる)ます。(※2)
「WAIT -10」※2
その休んだ状態を (1sec/60/261) x10 = 0.639msec 続けます。
30行 ボタンが押されて(押され続けて)いたら、前の20行に戻り、繰り返します。
40行 ボタンが押されていなかったら、ブザーを止めて、LEDを消灯させて、元の10行へ戻ります。

※1:パルス比は421の数値を変更していろんなパルス比で実験できます。1/3の設定は(回路の遅延の影響もあり)最適かどうかは分かりませんが、1/2よりも安定しています。1/3や421にこだわる必要はありません。

※2:「WAIT -10」は正直言って気休め的に入れています。(無くても良いです。)IchigoJamのコマンドの実行速度で制限されますのでPWM 2,421,-1263:OUT 2,0でもさほど変わりませんが、そのタイミングで少し待つ気持をプログラムに入れ込みました。

・OUT2端子の実測波形(ボタンを押した時)





◆受信側のIchigoJam
・プログラム
10 IF IN(1) CONT
20 BEEP 13,999:LED 1:C=0
30 IF !IN(1) C=0:WAIT -20:CONT
40 C=C+IN(1):WAIT -10
50 IF C<10 GOTO 30
60 BEEP 0:LED 0:GOTO 10

・説明
赤外線受光モジュール(IN1端子につないている)は、赤外線が来たら出力が0(Low)にしますので、IN1が0になったら、送信側でボタンが押されたと判断し、ブザー音を鳴らし始めてLEDを点灯させます。
そして、IN1がベタ1になったら、送信側のボタンが離されたと判断してブザーとLED を止めます。ここで、送信側は赤外線は断続的に送信しますので、断の時(IN1が1)には反応しないよう、一定間隔(※3)おいてIN1=1を複数回(※4)検出したら、送信側のボタンがOFFされたと判定をしています。

※3:一定間隔はWAIT -10としていますが、送信側同様にこれもいい加減な値ですし、実際には狙い通りの時間間隔にはなっていません。
※4:複数回数は10で判定しています(変数Cに加算して、Cが10なったら判定)が、これもカットアンドトライ的な値です。あまり多くし過ぎると、反応が遅れてきます。(信号が長めになる=キレが悪くなる。)

なお、今回使用したIchigoJamのファームウェアはVer. 1.3.1です。


最後に、前回の記事と同じ実験動画をここにも掲載します。


動画の実験では、6.5m離しても大丈夫でしたが、今回のブログラムは※1~4は暫定値でまだまだ調整ができますし、プログラムを工夫をしたり、回路や受光・発光素子に工夫を加えたりして、もっと遠い距離まで届くようになるでしょう。 チャレンジされてはいかがでしょうか?

-・・・-

IchigoJamでモールスの記事の目次を こちら にまとめましたのでご覧ください。



ここまで読んでいただいて、「IchigoJamってなに?」って方は、こちらのコラムをご参照ください。


なお、IchigoJamは(株)jig.jpの登録商標です。

#IchigoHam #IchigoJam #IchigoJamでモールス #CW #自作室


    





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

このブログのTopへ


------こちらもよろしく!------

ハム川柳.詠み人知らず.com
ハム川柳.
詠み人知らず.com

カムバック・ハム・
ハンドブック

JO3GBD
ホームページ


最近の記事


  • 本ページに掲載されている全てのコンテンツの無断転載を禁止します。
  • 本ページの内容を予告なく変更する場合があります。
  • 本ページに掲載されている内容のご利用に関してはご自身の判断と自己責任でお願い致します。
  • このホームページはリンクフリーです。
  • Copyright (C) 2005-2018 JO3GBD.  All rights reserved.

トピックス

新刊:CQ ham radio カムバックハム全集

便利な検索窓集

Yahoo! JAPAN

  • ウェブ全体を検索
  • このブログを検索


無線局等
情報検索


Callsign lookup:

Provided by QRZ.com

楽天で探す
楽天市場





















  • 本ページに掲載されている全てのコンテンツの無断転載を禁止します。
  • 本ページの内容を予告なく変更する場合があります。
  • 本ページに掲載されている内容のご利用に関してはご自身の判断と自己責任でお願い致します。
  • このホームページはリンクフリーです。
  • Copyright (C) 2005-2019 JO3GBD.  All rights reserved.
  • 忍者ブログ
  • [PR]
  • CQ ハム アマチュア無線