バーチャルハムフェス特設サイトを作ろう!

 ホームページ作りなんて簡単だ!

 ニフティもホームページを持つのになんだかいろいろ面倒な手続きがあったり課金の問題があったりして、なかなかすぐにできなさそうだということが分かっていました。しかし、ここで勇気づけられたのが「google サイト」という簡単にホームページが編集・公開できるサイトがあったのです。何もわからないままでも、直感的に編集ができる。さっと書きたいことを書きなぐってスピーディに公開できる。そんなサービスがありました。もちろんそれが永久に続いてくれなくても全く問題なし。

 かといってネタが何も決まっていないのに即席ホームページなんて作れるわけがないのです。なのでとりあえずページだけ作ってリンクを公開しておきます。

https://sites.google.com/view/bemagalab4virtualhamfes2021/%E3%83%9B%E3%83%BC%E3%83%A0

 さて徐々に中身を作っていこうと思いますが、11月13日までに完成できるのでしょうかねぇ…。

バーチャルハムフェス2021に参加します

ブログも久しぶりだけど

 アマチュア無線家になって2年ちょっと経ちまして、いろいろなイベントに出展したりするようになりました。QSOはそんなにたくさんやらないけれど、電子工作の幅がぐっと広がったような気がします。なんたって高周波回路の代表格ですからね!

 そんなわけで、秋葉原無線部のダイスケさんの無茶ぶりにさらりと乗っかってバーチャルハムフェス2021に参加することにしました。何か特別なことをするわけではないんですけど、これまでの活動についてとかまとめてみようかなと思っています。「ベーマガ投稿研究会」なんてサークルを一人で作ってみたり、電子工作マガジンに何度かゲームプログラムが掲載されたり IchigoJam を楽しむための情報を集めてみたりしています。

 バーチャルハムフェスの前に「おもしろ同人誌バザール11」にもベーマガ投稿研究会として参加しています。以下二つのコピー本を頒布する予定です。

  1. IchigoJamで楽しむ電子工作&プログラミング
  2. ベーマガ投稿入門

 それぞれどんな内容なのかは「おもしろ同人誌バザール」で見本を展示しているので見に来てください!どうぞよろしく!

Python のソースコード貼り付け

 試し書きしてみた

 ココログでソースコードを表示するやり方について調べてみたらやっぱりあった

import numpy as np
sample_rate = 8000
signal_freq = 1000
x = np.arange(0, 1, 1/sample_rate ) # x座標を-10 から 10 まで 0.1 きざみで取得
y = np.sin(2 * np.pi * signal_freq * x) # 正弦関数の式を記述
print( 'sample_rate: ', sample_rate )
for target_freq in [ 641, 701, 1000, 1191 ]:
N = 200
k = int( 0.5 + N * target_freq / sample_rate )
w = ( 2 * np.pi / N ) * k
cosine = np.cos( w )
sine = np.sin( w )
coeff = 2 * cosine
  print('----')
print( 'target_freq: ', target_freq )
print( 'N: ', N )
print( 'k: ', k )
print( 'coeff: ', coeff )
  q2 = 0
q1 = 0
for i in range( N ):
q0 = coeff * q1 - q2 + y[i]
q2 = q1
q1 = q0
real = ( q1 - q2 * cosine )
imag = ( q2 * sine )
mag = np.sqrt( real * real + imag * imag )
  print( 'real: ', real )
print( 'imag: ', imag )
print( 'mag: ', mag )

ソースコードを上記のように張り付けてみたがどう見えるだろうか。ちょっと実験してみた。

 この Python のスクリプトは Goertzel アルゴリズムといって、ターゲットにした周波数だけの FFT を簡略化して求める計算方法なのです。大量にメモリにデータを格納しなくて済むので、小さなマイコン向きの実装になります。Python では固定少数点化できないのですが、今度は C 言語で書いて Visual Studio でデバッグする予定です。

 C 言語で書いたら Arduino で実装して、生の DTMF トーンを ADC から入力して demodulate できるかどうか実験してみたいと思っています。これがうまくいったら FSK モデムの実装が Arduino みたいなマイコンでもできることを証明できます。そこまでブログでは記事にしていきます。

議論のコスパ

 コスパって言い方は好きではないですが

 最近「9月入学」制度が国会の議論のテーマになっているようですが、どうしても今それを話し合うタイミングなのかよくわかりません。新型コロナによる学校の休校がきっかけになっているというのがどうも腑に落ちないんですね。というのも、ものすごく複雑なことに立ち入ってしまいそうで簡単に決められる見通しもないからなんです。

 新聞で読んだ記事には、高等教育の国際化がメリットになるとよく書いてあるのですが、実際に9月入学を取り入れている国ってそんなに多くもないんですよね。特にアメリカ、中国といった学術的に先進国の大学が含まれているから、9月入学イコール国際化というメリットが掲げられているのでしょう。

 それにしても9月入学について議論するためには、制度改革の影響がどこまで及ぶのか皆目見当がつかない状態ではないかと思うのです。しかも、9月入学を導入したからと言って即座に休校長期化に対応できるのかというと全くそうではない事実にだれもが気が付くことでしょう。そこに一石二鳥的なニンジンをぶら下げて議論を吹っ掛けようとする人々のセンスが IYN は共感できないのです。

 新型コロナ対策として起こっている問題はほかにもあります。パチンコ店が休業要請に従わない問題なんか、実は結構深刻ですが強権政治的に解決するか補償で保護するかなどのせめぎあいで、議論の構造はわりかし単純です。しかし、9月入学を議論のテーマに持ち出した人は一体どういう見通しを持っているのか IYN は不思議でならないです。

 どう考えても、議論の深さ広さに対する決定事項のメリットのバランスが取れていないと感じているのです。議論のコスパという観点から話し合いの優先順位を決めることがなされていないのはなぜなのでしょうか。

 国会の仕組みについてはよくわかっていないことが多いのですが、議論の優先順位を決めているのはいったい誰なんでしょうか?まさか新型コロナの専門家会議の提言から「9月入学導入」という言葉は出てこないでしょう。導入するメリットの理屈はわかりますが、ほかの課題より優先していま議論することではないのではないでしょうか。

社会の利益か?個人の利益か?

 新型コロナって治せないの?

 社会的な対策の議論を進める専門家はたくさんテレビに出てきますが、有効な治療法がないことについては有名すぎて話題にもならないのです。しかし新型コロナウィルスの治療方法は地球上の誰もがその答えを望んでいるはずです。特効薬やワクチンの開発の進捗についてあまりにも情報が手に入らないことから、改めて考えてみるととても不安になります。しかしIYNみたいに漠然と不安がっていたくない人向けに、山中教授が個人的に情報公開しているホームページというものもあります。

 新型コロナ感染者の治療法についてメディアから情報が得られない理由として、山中教授が言うように研究の知見が特許戦争や開発競争のために隠されていることが原因だとすると、かなり問題が難しいように思います。

 この際、WHOなどが音頭を取って国際協力機構みたいなものを作って、世界中から新型コロナウィルス対策のリソースを集結させて研究に打ち込んでみるというのは果たして名案なのでしょうか。それなのになぜ国際機関が動いていないのでしょうか。

 新型に限らずコロナウィルスは変異の速さのためワクチンを開発するのが難しいとされているらしいのです。それが今までの研究による知見の蓄積を無償でオープンにしてしまうことが、研究者にとって有益なことになるのでしょうか。それまでの研究にかかった投資をどうやって回収すればいいのでしょうか?

 国際協力かそれとも研究者個々の利益か、そんなジレンマに悩まされている研究者も多くいるはずです。これは研究者を評価する側にも課題として当てはまると思います。IYNはちょっとだけ研究者みたいなことをやっていたのでわかるのですが、研究者は個人的にどういう評価や見返りがあるかで研究の成果は大きく変わってきます。だからたぶん国際的なリーダーを務める人がやるべき仕事は、効果的に協力した人が正当に評価される社会の仕組みを作ってあげることではないでしょうか

決断のスピード

 新型コロナの給付金の話題に触れて

 新聞の社説を読んで思ったけど、ドイツの給付金制度はどうしてそんなに素早く援助が必要な人の所にお金が届くのだろうと疑問に思った。何より疑問なのは日本政府の給付金制度の整備が遅いことについてなのです。

 お金に困っている人を見分ける術が書類ベースの申請と審査でしかないことは確かなのでしょうけど、その審査項目と審査基準とを決めるのにいくつもアイデアが必要だとは思えないのですが、なかなかここに結論が出ない。自民党の中でも議論かいろいろあるのでしょうが、決める人が決められないでいるのはなにか理由があるのでしょう。

 それは単純に官僚の数が足りなくて審査基準が作れないでいるのだからとか、審査基準が複雑になり過ぎて事務作業するひとの負担が尋常でないことに問題視されているのだとか事情があるのかもしれない。その事情があまり報道の場に出てこないので、給付金制度なんかが当てにならないと騒ぎ立てる人がツイッターとかで沢山出てくるんでしょうな。

 新型コロナとかの危機に対して海外の有効な制度についてはメディアに取り上げられることはあっても、日本政府のここが素晴らしいとかいう話は全然聞いたことがないです。素晴らしい点について自画自賛するネタはメディアとしては美味しくないのかもしれないけど、政治不信をあおられているだけのおいらとしては、何か導いてくれる光がちょっとでも欲しいなと思います。

 ドイツの施策が素晴らしいといっても、なにかほかの点でドイツは劣っているかもしれないしあまり政府は好かれていないところもあるかもしれない。それでも政策のスピード感については、いっつもいっつも日本は出遅れているだとか決断力がないだとか叩かれている話題ばかり多すぎやしないかという昨今、たまには迅速で丁寧な対応ができる日本人という褒められ方をされたいなぁと思うのです。

布マスクの製作

 これからマスクがないと困るでしょ。

 IYNは朝からドラッグストアに並んでマスクを配給制度のようにして売ってもらうのはだるいので、布マスクを手縫いで作ることにしました。ちょうど、オカダヤという手芸店のホームページから立体マスクの作り方について資料が公開されているのを見つけたのでした。うちにある手拭いや端切れなどの生地を使って製作費0円で済まそうというのが今回の方針です。作り方そのものについては、リンク先を見てもらった方がわかりやすいので、IYNは解説はしないことにします。

Img_20200404_100444Img_20200404_102047

 まず布切れ を裁断します。ハサミで布を切るなんて、何十年ぶりかの体験です。ビリビリ、と破くような音がしていちいち裁断の手ごたえが両腕に伝わってきます。ホタテ貝みたいな布を4枚切り取って重ね合わせてみるとうまいこと重なり合いました。IYNみたいな手芸初心者には手拭いの生地はとても切りやすいです。伸び縮みがあまりないので、形がゆがんでしまうことが少ないのです。

Img_20200404_103429

 そして久しぶりの手縫い。木綿の太い糸がたどたどしく転戦を描いているのがわかるでしょうか。この程度の手縫いでも裏返してしまえば縫い目が全く分からないので問題ないのです。このホタテ貝を貼り合わせたものを一組作ることで、マスクのような形をした布が出来上がります。広げて貼り合わせてさらに縫い進めてみると筒状のマスクが出来上がります。しかし…

Img_20200404_111757

 なんと表と裏を間違えて縫い合わせてしまったため、裏返してみると縫いしろのある裏面が出てきてしまいました!うわー、形はうまくいっるのに縫いしろが丸出しじゃないか!ああ、なんかヤンキーがよくやるトサカ付きの衣装みたい。でも糸をほどいて縫い直しする気力もわかず、表裏がわかりづらい生地だから遠目には気にならないってことでこれで耳のゴムを付けちゃいたいと思います。

Img_20200404_113644 ほうら、こんなに立派な姿に立体マスクが仕上がりました。トサカがついてるけど。実際装着してみると、手拭い生地はなかなか肌触りが良くて装着感があります。見本のサイズだとぎりぎり顎と鼻先が隠れるくらいなので、できる人は型紙をもう1cmくらい大きく拡大して作ってみるとよいです。使った糸は手縫いでやりやすいように木綿の太めのものが使いやすいでしょう。

 ここまでつくるのに2時間弱くらい。どうせ自宅で暇なんだからみんなも立体布マスクを作ってみたらいいんじゃないかというのがIYNの考えです。アベノマスクx2枚についても、きっと自作できるならやってみようという呼びかけにつながっているのかもしれません。

九段下の合同庁舎でゴハン

 初めて行ってみた場所です。

20200124_lunch 九段第三合同庁舎という建物に入ったのは、関東総合通信局に用事があったからです。その話題はまたにして、今回は庁舎の人々がどんなお昼ご飯を食べているのかというレポートをしたいと思います。

 まず庁舎の入り口をくぐると一階には「さくらベーカリー」という小さなパン屋さんがありました。ここは手作り感がすごくあるパンが並んでいて、都心にしては値段がリーズナブルです。とても香ばしい香りをフロアに振りまいていました。IYN はここでは飲食禁止だったのもあって、先に進みました。

 エレベーターホールには、千代田区役所になっている10階までの低層階エレベーターと10階から上にいく高層階エレベーターと二つのホールに分かれていました。高層階エレベーター側は守衛さんに「何階に御用ですか?」と聞かれるみたいなのですが、低層階には守衛さんはいませんでした。で、10階に上がると売店と食堂とが隣り合わせにありました。

 食堂には、飲食物の持ち込みは禁止と書かれていたので、売店やパン屋さんで買ったものはここでは食べられないのでしょう。張り紙の注意書きを守っていない人もいなかったので、IYN は食堂でご飯にしようと心に決めたのでした。売店は普通のコンビニの、お弁当とお菓子の棚をコピペしたような品ぞろえでした。値段もコンビニ並み。昼過ぎだったのでおにぎりやお弁当はほぼ完売状態でした。

 さて食堂の狭いドアの前にはメニューが並んでいました。定食が三種類と麺類が二種類くらいで、定番がカレーライス、そばうどん。すべて食品サンプルで飾られているくらいなのである程度のローテーションでメニューが決まっているのでしょう。そして壁紙には食事をした後に会計、下げ膳と書いてあって、順番がちょっと変わってるなぁと思いました。

 IYN は意を決してお盆を取って定食のところに進みました。八宝菜に手を伸ばすと、係のお兄さんが優しく「定食はおかずとごはん、お味噌汁、小鉢をお取りください」と案内してくださったのでその通りに取りました。ご飯は普通と少なめと二種類ありましたが、普通サイズが牛丼のごはんくらいの量に見えたので少なめの方を選びました。

 普通においしくて IYN の会社の食堂と変わりないくらいだと思いました。お味噌汁は具が少ないのと出汁が化調っぽいかなと感じましたけど、八宝菜はお肉が多めでごはん一杯分にちょうど良いバランスでした。小鉢はインゲンマメのお浸しを選び、これはシャキシャキしておいしかったです。

 食べ終わったお膳を会計のところにもっていくとおばちゃんが「定食は500円ですー」と言ってくれるのでそのまま現金で支払いました。結論を言うと、一般的な食堂と大差ないおいしさで接客は丁寧だなぁという印象です。お料理は全体的にヘルシー志向で、300~500円で食べられるならこれは安いでしょう!

Ichigojam の WS.LED コマンド

 夏休みの自由研究的な電子工作

 以前にPCN秋葉原でLEDを虹色に光らせる研究がなされていたので、教えを乞うことにしました。

 9月といえばそろそろ十五夜お月様のじきかな、ということでウサギさんとお団子を光らせることにしてみました。え、月は光らないの?というツッコみはなしでお願いします。例によってアイロンビーズでウサギさんを作ってみると以下の写真のようになりました。



 光らせる場所はウサギさんの目とおなかのあたりとお団子の中心に1球ずつフルカラーLEDを裏から張り付ける作戦です。WS2812Bのミニ基板モジュールと PL9823 という砲弾型の5mmのLEDを連結させてみました。これらを連結して光るかどうかはまだ誰も確かめたことがなさそうだったのでやってみました。

 配線を隠しながら LED をアイロンビーズの裏側に接着するために、グルーガンを使いました。IYN はこの透明な樹脂を熱で溶かして LED を張り付けるというのがそんなに有効なのか知らなかったので、ちょっと感激してしまいました。ええっ、こんな簡単に、LED が思うように固定できてしまうなんて!



 適当に配列に数値を入れて WS.LED 3 とコマンドを実行するとうまいこと光ってくれました。ただし、配列の[0]~[5]はWS2812Bの2球に対応しているのでカラーデータの並びはGRBGRB、配列の[6]~[8]はPL9823(ウサギさんの眼球)なのでカラーデータの並びはRGBとなります。127くらいで光量としてはサチっているみたいなのでこのくらいの出力値にしておくのが良いでしょう。なぜなら、消費電力のわりに見た目の輝度が変わりませんし、Ichigojamからドライブさせる電力としても抑え気味にした方が賢いからです。





 さて、WS.LEDコマンドが思ったように動かせることが分かったら虹色出力です。虹色というと起点となる7色をRGBで表現したり、それを連続的に変化させるようなプログラムを書こうと思うとちょっとめんどくさいな、と感じました。それで PCN秋葉原 のお店の人に相談したところ以下のような数式1行で表現できると教えていただいたのです。

[ I % 3 ] = ABS( I % 2 * 100 - H )



   この式の説明をします。色相環では360度で一周する虹色を6つのステージに分割すると、I = 0 ~ 5 となります。I % 3 は配列の要素数で、I=0, 1, 2, ... とステージが進むたびに [0] [1] [2] [0] [1] [2] と配列の添え字が変化します。つまり、G R B G R B の順番に出力するカラー情報が変化するということです。ABS の方はもう少し複雑で、ステージが I=0, 1, 2, ... と進むとABS( ... ) の数式の評価結果は

I=0: H (=Gが0→100と変化)

I=1: 100-H (=Rが100→0)

I=2: H (=Bが0→100)

I=3: 100-H (Gが100→H)

I=4: H (Rが0→100)

I=5: 100-H (Bが100→0)


というようになり、各ステージの中でHを0~100とカウントアップさせることで色相環の六角形(輝度はまちまちだけど)の中をたどることができるという優れモノなのです。上記をきちんと理解したうえで Ichigojam BASIC でプログラムを書くと以下のようになりました。

 プログラムでやっていることは、ウサギさんのおなかのあたりを虹色に変化させていることに加えてウサギさんの目は赤固定でお団子はぼんやり点滅しています。



 お彼岸が近付くにつれ、寝苦しい夜も少なくなってきました。Ichigojam を使った電子工作もゲーム開発もこれからが身に入るころですね!

Ichigojam マシン語デバッグ術

 コードレビューが一番効果的なんだけど…。

 たった数十バイトのマシン語でも暴走した時は一瞬途方にくれますね…。特に Ichigojam のようなデバッグ環境がほとんど存在しないような場合にどうしたらいいのか、頭をひねります。自己流を持ってる人は確認の意味でも IYN のやり方と比較してみてください。

 デバッグで必要なのはとにかくレジスタの値を見ることです。暴走するのは、とにかくレジスタの初期設定がおかしい時が多いのです。ループさせるコードは IYN は経験上ほとんど間違えずにループしています。アセンブラを書いていてループさせること自体にミスを含む要素はかなり少ないと考えています。

 レジスタの値を見るためには、Ichigojam の場合は R0 に目的の値を代入して BASIC に制御を返す必要があります。つまりループが始まる前に各レジスタの初期値を R0 に入れて RET するコードを書いて、それぞれのレジスタが設計意図通りなのかすべて見回しておくことです。具体的にはマシン語のループのコードにアポストロフィ(')を入れてコメントアウトしてからアセンブラ asm15 にかけて ?HEX$(USR(#700,0)) などと一発実行するわけです。

 Ichigojam の USR 関数は R1 の値を最初にベースアドレスとして用いることが多いので、このレジスタを別用途に流用するときは十分注意が必要です。IYN は R2 に VRAM の先頭アドレス #900 を作っておいて、R2 = R2 + R1 として実VRAM先頭アドレスにしていたのに、R1 を VRAM の最後アドレスにしようとしたときに R1 = R2 + R1 などともう一度ベースアドレスを加算してしまうというミスをしていたのでした。

 自分も Ichigojam のプログラミングを習得してゲーム開発をしてみたいとお考えのあなた、ベーマガ投稿研究会のメンバーになってPCN秋葉原で私と一緒に活動しましょう!

«Ichigojam 用逆アセンブラ 印刷機能付き

2021年10月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
無料ブログはココログ