カテゴリー「電子工作」の214件の記事

2022年10月19日 (水)

生存証明2

 みなさま大変ご無沙汰しております。コロナ禍はいかがだったでしょうか。
この無料ブログの制約で、半年に一度記事を書かないと削除されるというので、例によって2回目の中身のない記事をUPしております。期待しておられた方には誠に申し訳ありません。

 ここ1年の近況は、みなさまご想像の通り、引きこもり同様の状態でした。電子工作はおろか、旅行にも出かけることがなく、ここにご紹介するようなものが本当にありません。しいてあげれば、軽量の電動アシスト自転車を新調(18キロ12段変速、高かった)し、ちょっと自己満足しているくらいでしょうか。

 電子工作は、日ごとに遠のくばかりです。再起を目指してこうして生存証明を書いていますが、きっかけがなかなか見いだせない状態が続いております。

 

 

| | コメント (0)

2022年1月23日 (日)

生存証明

ほぼ1年ぶりの書き込みとなります。ここのブログは1年以上書き込みがないと、自動的にReadOnlyのブログとなってしまい、有料会員にならない限り、一定期間後、削除されてしまうので、再起の可能性を残すための書き込みです。

 

| | コメント (0)

2021年2月16日 (火)

パソコン連動テーブルタップの修理を諦めて自作

 IPadとTVセットトップボックスの競合は、回線速度を上げることで解決したようだ。ちょうど良い機会なので、TVまわりの環境を整理することにした。去年買い替えたTVは、DASDをUSBでつなぐと録画できるようになっているが、これがうまく動いていない。

 使ったDASDはPCのディスクをSSD(半導体DASD)にしたときに余ったもので、アマゾンで買ったUSBアダプターにつないで、当初は動いていた。しかしそのうちエラーが頻発し始め、何度もDASDの初期化をやらされた。DASDそのものは壊れていない。Cdsc01884

 DASDの電源は、TVが稼働中の時だけ入るように、以前使っていたパソコン連動テーブルタップを使っており、これの誤動作の可能性が高かったのだが、TVでの録画にそれほど大きなニーズがなかったため、そのままになっている。せっかくなので、この原因究明をやることにした。

いじり防止のナットで締めてあって分解できない(1/30/2021)
 TV棚の裏から、件のパソコン連動テーブルタップを取り出した。このタップはPCへの差し込みプラグが甘くて、足で触ると瞬断が発生し、PCがおかしくなったために取り替えたものである。触らなければ症状が出なかったので、TVに持ち込んでいた。

 しかし動かしてみると、全く動かない。完全に壊れてしまっているようだ。修理するか、連動部分を自作するか、とりあえず分解してみようとタップを裏返した。おやあ、締めてあるビスが通常のビスではない。座金が6角形の、いじり、いたずら対策のための特殊ネジになっている。Cdsc01885

 こういうのを見ると目的はともかく、猛然と分解したくなるのが、物心ついて以来の所長の気質である。この種のネジ(トルクスネジ)については昔、Appleのコンピューターを分解するときに使った経験があり、いくつかドライバーも備えてある。工具箱を探る。おお、あった、あった。

 早速、このサンワサプライのテーブルタップのネジに当ててみた。残念、この手持ちのドライバーでは開かない全く別のものであることがわかった。6角形の溝の空き方が完全に逆だ。わからないときのGoogle頼みである。早速調べてみる。

 いやいや、昔に比べれば特殊ネジには沢山の種類があることがわかった。一番ポピュラーなのは、所長も一式持っているトルクスドライバーである。連動タップの特殊ネジは良くみるとオスメスが逆転している。Eタイプと呼ばれているようだ。

 ネットのおかげで、こういう買い物には全く苦労しなくなった。定番のアマゾンで簡単に品物が見つかり発注する。念のため3本買ったが、全部で¥3000程度。工具として残るので高い買い物とは感じない。Cdsc01886

 しかし何となく納得がいかない。まだ何か少し違うような気がする。さらに検索を続ける。すると、このサイトに詳しい「ラインヘッドネジLH」タイプのような気がしてきた。電子部品やファミコンなどに良く使われているという。

 そうだ、これに違いない。アマゾンに発注していたトルクスドライバーEタイプの注文を慌てて取り消し、こちらにする。あとは工具の到着を待つのみである。

無事空いた。思ったより丁寧なつくり(2/2/21)
 工具が届いた。いそいそと梱包をあけ、早速、テーブルタップのネジ穴ににドライバーを当てる。おお、ぴったりかみあう。簡単に4つの止めねじが開いた。このドライバーは恐らくもうこれ以上は殆ど使わないだろうし、これだけに¥1000以上かけたのも馬鹿々々しい限りだが、なぜか素直に嬉しい。Cdsc01887 パソコンで電源を連動させる基板は、タップの右端に、幅5センチ長さ4センチばかりの小さな基板である。特に一部が焼けたところもなく正常なように見える。基板の裏にはリレーも見える。この基板を使う気は今のところないので詳細に調べなかったが次のようなことがわかった。

  • 制御機器の電源:    100VACを何らかの抵抗かコンデンサーで降圧している。トランスやスイッチング素子はない。いわゆるトランスレス電源だ。素人がいじるのは結構難しい。
  • AC電源のon/off:  基板についた超小型の24V DCリレーで15Aを制御している。
  • 動作の検知:        シャント抵抗(R020 FS62と刻印、2つ直列)間の電位差をオペアンプ(LM358)で増幅してマイコンのコンパレーターか何かで比較しているようだ。
  • 制御IC:             8ビットマイコンだと思うが、刻印(C101)からは検索できず。このほか、HT241というレギュレーターっぽいICや、ブリッジダイオードらしいICが実装されているが詳細は不明。

思ったより、まじめに作ってあって感心する。Cdsc01888

 さて、修復である。100VACとの直接接続はやはり避けたい。となると電源はUSB用の絶縁5VACアダプターなどの流用が必要だ。電流のセンスはC/Tセンサーが魅力的だが、2つともこのスペースには入らないだろう。このタップのスペースに作りこむことは諦める。

本来の目的に戻って簡便なUSB利用のタップにする(2/5/21)
 考えてみたら、もともとはTVに外付けするDASDの電源制御だ。必ずしも電流のセンスは必要ではない。都合の良いことに最近のTVは必ずUSBポートがついていて、電源を切ればマスタースイッチが入っていても切れてくれる(検証済み)。

 以前に作ったUSBによる電源制御アダプターをもう一度作ることにした。SSRや、ACインレット、基板用のUSBコネクターDIP化キットなど手持ちは十分にある。ケースは昔、可愛いので用もないのに買ってあったタカチの小さめの金属ケース(MB-1)がお手ごろだ。

 何年ぶりかのケース加工である。ミニサーキュラソー(丸鋸)を取り出して汎用基板をケースに入れる作業を始める。何事もなく縦横数ミリづつの基板カットに成功した。次はコッピングソー(糸鋸盤)を使ってアルミケースに電源インレットなどの大きな穴を開ける工程である。

 コッピングソーの出番は、4~5年前のRaspberryPiのライブカメラ制作以来で、何かわくわくする。しかし、機械を作業棚の奥からとりだして埃を払い設置して見て、すぐ使えないことがわかった。Cdsc01889

 コッピングソーは作業面が平面でないとできないのだ。成形されているケースの一部に糸鋸を使うことは不可能である。据え付けるまでわからなかったとは、いかに作業から遠のいていたかを物語る。

 しかたがないので、今度はドリルスタンドを持ち出し、昔ながらの方法、3ミリ程度の穴を連続して空ける方法に切り替える。ははは、こっちの方がもっと簡単だった。この方法は、中学生時代の真空管ラジオのアルミシャーシー加工以来の手法で、ノウハウが蓄積されている。

判断ミスが多い。3回も部品をとりはずすも完成(2/10/21)
 ハンダ付けが楽しい。しかし、ちょっとケースが小さすぎて実装に苦労する。ほぼ1年半ぶりのハンダ付けだが、裸視ではもう汎用基板でも難しい。Aitendoで買った高画質映像の拡大鏡が頼りだ。ただ、この拡大鏡のレンズは焦点深度が浅く全体的に視るのは、ホーザンの立体顕微鏡の方が優るようだ。(面倒なので出していない)Cdsc01899

 それより、参ったのが、部品の取り付け時のつけ間違いである。事前にサインペンで印をつけて間違いようがないはずなのだが、実際につけてみると、何故かひとつずれている。今回の基板は小さいので1つピッチがずれただけで他の部品が入らなくなる。

 汎用基板からの部品とりはずしは、表面実装に比べるとはるかに難しい。両面基板で裏側にハンダが回るとハンダ線でハンダをいくら吸い取ってもなかなかはずせない。位置決めのつもりでハンダの量を出来るだけ少なくしてあってもとれない。部品が半導体のときは特に神経を遣う。

 虎の子のSSRの位置決めを2回も失敗し、泣く泣く例の低温ハンダを使って部品をはずす。結局、それ以外の部品で1回、通算3回も取り付け位置を修正して、やっとのことで小さいケースにつめこんだ。

 それでも、久しぶりの工作である。何となくうきうきする。AC部もターミナルブロックや、ファストン端子などの在庫を活用して、整備性の高いレイアウトを工夫する。うむ、うまく配線できた。暫く出来栄えを鑑賞する。Ws000018

 配線は秋月電子のキットカタログやデータシートを参照してトランジスターをひとつ使って、念のためUSBインターフェースとSSR一次側を分離した。ここで気になったのがSSRのデータシートに入っているSSR一次側のスイッチングダイオードD1である。

 ここはリレーのような誘導負荷ではなく、フォトカプラーの入力側なのでこうした逆電圧抑止のダイオードは不要のはずだが、秋月のSSRキットにも部品としてスイッチングダイオード(DAN202U)が実装されている。データシートにあるからには、何か目的があるのだろうが、どうも解せない。色々ウェブで探し回ったが答えは得られなかった。Cdsc01894

 まあ、ダイオードひとつの話なので、とりあえず組み込んでおいた。テストに入る。うむ、全く問題なくTVの始動とともにDASDの電源が入り、切れると間違いなくDASDの電源も切れた。出来上がったら棚の裏に隠れて見えなくなるのがさびしいが、とりあえずは実用的な工作がひとつ完成した。

| | コメント (2)

2019年9月19日 (木)

半年ぶりのブログ更新に漕ぎつけた


 しばらく休んでいた研究所の報告を半年(正確には7ヵ月)ぶりに再開する。休んでいた理由は、電子工作が低調で報告するようなものがなかったということにつきる。電子工作を始めて10年以上が経ち自分で出来そうな工作はあらかたやってしまった。いわゆるネタ切れである。

 まあそれは表向きで、低調な理由は、やはり所長の高年齢化、いわゆる加齢(今年から後期高齢者)によるということは残念ながら否定できない。年は取りたくないがこればっかりは皆に平等に訪れるので文句を言ってみても始まらない。

 実はそれだけではない。2月に記事をアップしたあと、いくつか事件があってブログへの意欲がさらに落ちた。それは、恒例のスキー合宿のことである。年と共に年間の滑降日数が減っているが、昨シーズンはたまたま一回も行けず、今年3月始めの八方尾根のスキーは2年ぶりだった。

 これが、もうシーズンの終わりに近く、しかもウイークデイだったため、コースの整地が行き届いておらず、こぶだらけのバーンの急坂(八方リーゼンスラロームコースの薄葉のカベ)で、疲労で足が言うことを聞かなくなってしまったのである。

 いつもシーズン最初の滑りでは足の疲労で激しい痛みに見舞われることがあったのだが、今回は2シーズンぶりで、しかも、このコースは途中から緩斜面の初心者コースに逃げることができない。コース上で立ち往生し、生まれて初めてスノーボートのお世話になった。これまでちょっとした足自慢だったのだが、すっかり自信を失った。
Img_0548

  • Img_0544 Img_0546

 悪いことは重なるもので、次の日、大雨でスキーをやめスキー場近くの秘境集落(青鬼集落)に遊びに行く途中の山道で、ころがってきたコブシ大の石を跳ね上げ、ミッションオイルのタンクからの油漏れで車が運転不能になった。結局、一行はバスで帰る羽目に陥った。

 直接、電子工作とは関係ないが、度重なる不運である。幸い、修理代やレッカー代、帰りの交通費などは保険が効いたので、経済的な損失はだいぶ免れたが、立て続けの災難に、気持ちの上ですっかり落ちこんでしまい、まとまったことをする気がなくなってしまった。

旧友からブログ再開の催促(2019/6/20)
 それがどうして再開する気になったか、スキーのあと、電子工作を全くやらなかったわけではない。何度か記事を書くために作業メモをワープロに残してはいたが、たいした成果も生まれず記事にまとめるところまで行かなかった。

 こういうものは、一旦、流れの方向を失うと立ち直りが難しくなる。時間が経てば経つほどそうだ。このブログも、もうこれでおしまいかと考えていた矢先、旧友からメールが入った。楽しみにしているのに音沙汰がないが、どうかしたのかという問い合わせである。読者から、しかも知人からの意外な消息の問い合わせは嬉しいものだ。

 これでやっとブログを再開する意欲がわいた。ちょうど、ジャイロセンサーを応用した倒立振り子のウェブの試作記事が面白くて、自分も作りたくなり、少しづつ倒立振り子を作り始めた。完成したらブログを書こうと思っていたのだが、これがまた難儀したのである。

 ただ、うまく行かないとなると、猛烈に何とかしてやろうという気分に陥るいつもの性格が幸いした。結局のところ自作の倒立振り子は、今日現在、まだ立たせることに成功していないのだが、ブログ再開には十分な作業記録もまとまった。記事にするまで、さらにまた2ヵ月ほどかかったことになるが、その間の試行錯誤の記録を公開する(9/15/2019)。
 
名古屋での大学同期の同窓会(3/25/2019)
 電子工作の話の前に、それ以外のことを、書き留めてきたメモを元に少しご紹介。このブログは日記の代わりを兼ねているので、記録の糸を切らさないために暫くご辛抱いただきたい。まずは、3月に名古屋で行われた大学の同期会の話である。

 名古屋は、家族の関係で、このところ行く機会が増えており、また名古屋かと少し迷ったが、名古屋は京浜地区と阪神地区の中間にあたり、関西の連中が久しぶりにたくさん来るというので出席する気になった。

 大学の同期会というのは、若いうちは苦手だった。大学の同窓生は、高校と違い同業者が多いので、現役の頃は、何かと緊張して遠慮することが多い。自分がどうということではない。まわりに気を遣うのである。

  Dsc01730
Dsc01699Dsc01728Dsc01709

 大きな会社だと同期が何人も就職している。何十年か経つとおのずと身分に大きな差が生じる。当人たちはさほど気にしているようには見えないが、同級生同士で余りに違いすぎると、かえってまわりが緊張する。

 かたや重役クラスと、研究所の主任研究員あたりとは、話す内容も全く違ってくるし、学生の頃はどちらかというと主任研究員の方が羽振りが良かっただけに、余計に気を遣ってしまう。

 しかし、最近は、卒業してもう50年近くが経ち、殆どの者は、すっかり引退しているので気が楽である。ホテルでの飲み会では、それぞれ近況報告があった。数十年ぶりの再会もあり、話がはずむ。仕事の話はもう殆どなく趣味などの個人的な話が多い。結構面白くて時間を忘れる。

 次の日は、名古屋観光である。熱田神宮と、名古屋城、トヨタ博物館などをみんなで貸し切りバスを利用して訪問した。幸い、始めて行くところが多く、飽きなかった。昼食は名物の「ひつまぶし」。昔から同じというが20年前に食べたものとは少し違うような。

 印象に残ったのは、名古屋城のボランティアのガイドさんたちだった。バスガイドのOGや、会社を息子に譲って引退した旅行代理店の白髪の元社長が、嬉々として案内してくれる。同年代の頑張りについ感動してしまった。やはり人のお役に立つのがいちばん嬉しい。

タッチボタン式ベッドスタンドの改修(5/2/2019)
 工作の話である。家族が使っていた、筐体を触るだけで点灯するスタンドが時々誤動作するようになった。暗闇でも点けられ便利なのだが、勝手に電源が入ってしまうのは危険である。捨てるというので引き取った。Dsc01745

 台座の部分を分解して中身を取り出した。円盤型の台座の中にはタッチ機能一式の入った小さなプラスティックケースが固定もされずに入っているだけの極く簡単な構造である。タッチ機能は、台座、フレキシケーブル、笠などの金属部分を触るたびに、クリプトン球の照明が、小、中、大、オフに切り替わるという仕掛けだ。Dsc01753 Dsc01754 Dsc01757

 簡単なロジックなので、作り直すなら静電センサーと、SSR(ソリッドステートリレー)にTiny13あたりの極く小さな8ビットマイコンの組み合わせで作れる。しかし、何となく気が進まない。これが電子工作低調の原因なのだが、今までに同じようなことを沢山やってきたので、いわゆる「わくわく」感がないのだ。

 もともとタッチ機能は便利なようで、ちょっと触っただけで、切れたり点いたりするのは自分ではあまり便利だとは思っていなかった。たまに、家人から借りて使って、触れるたびに明るさが変わるので煩わしかった記憶がある。

 どうしたものかと思案していると、塗装された台座の表部分に、タッチを確実にするための金属面のメクラ蓋がつけられているのに気が付いた。タッチセンサーはここをセンサー部の入力としている。この穴に単なるオルタネートのプッシュスイッチをつけて電源スイッチにすればどうだろうか。もっとも簡単な修理法だ。

 久しぶりに秋葉原にでかけ、スイッチの種類の多い千石通商で、良さそうなタクトスイッチ(径6.5ミリ)を見つけてきた。工作は、造作もない。めくら蓋の穴をリーマーで少し広げ、スイッチを取り付けて数か所のハンダ付けをするだけである。

 組み上げてみる。見映えも悪くない。スイッチの押し心地は、台座に重量があるので安定感があり安物のタクトスイッチでも感触は悪くない。現用のベッドスタンドにすることにした。

 リハビリの電子工作としては、全く物足らない作業量だったが、それでも何かを自分の手で解決したという満足感は十分味わえた。

囲碁ソフトに翻弄される。何とか2段(6/15/2019)
 久しぶりに「天頂の囲碁7」という囲碁ソフトを買った。所長は10年近く前に、北朝鮮製の「銀星5」というソフトを試したことがある。これはアマ2段という触れ込みだったが、精々が2級程度で、所長は最後は3目置かせて良い勝負だった。

 今度のソフトはそれとは比べ物にならないほど強そうだ。このソフトを買うきっかけとなった碁仲間によると、全く歯が立たないという。彼はアマ6段の高段者でプライドがあるので最強のままでランクを落としていないそうだが、それにしても市販クラスの囲碁ソフトがそんなに強くなったとは信じがたい。

 注文してほどなくアマゾンから品物が届いた。19路盤は時間がかかるので、13路盤でやってみる。これが強いのである。コンピューターのレベルを初段にしたのだが、何度やっても勝てない。こちらにもプライドがあるので、暫く挑戦したが諦めた。ランクを段々下げていくと2級程度で何とか互角になった。

 そのうち、この囲碁ソフトには検討モードといって、お勧めの次の手を教えてくれる機能があることを知った。これを使うと、これが実に簡単に勝てるのだ。自分がいかにまずい手を打っていたかということをいやというほど味合わされる。

 これを暫く繰り返すうち、次第にこの検討モードを使わなくても勝てるようになった。2級クラスでは、打ってくる手は素人で、切れるところはすべて切ってきて、大抵の試合はねじり合いの混戦になり、読みあいに負けてしまう。2級と言えど、手数の計算はコンピューターにかなわない。

 なるべく挑発に乗らずに、じっくり模様を作っていき、ここぞというところで勝負すると相手が投げてくれるようになった。このソフトは先行き15目以上の負けになりそうなときは投了するようだ(投了を拒否して続けて行くと無茶苦茶な手を打ってきて負ける時があるので注意)。

 次第に勝率が上がり、最近は相手が2段でも、ちょうど良い相手になった。所長は自称、初段と言っているので順当な所か。そんなこんなで電子工作の方はさっぱり進まなかった。

ジャイロセンサーの応用、倒立振り子をつくることにする(7/19/2019)
 電子工作再開のきっかけとなったのは倒立振り子を制作する以下のブログサイトである。

  半日で作る倒立振り子

 実験の経過の逐一を、ステップバイステップで丁寧に解説されており、とても面白い(最後はProcessingによるPCでの画像シミュレートまである)。読んでいるうち、段々自分もやりたくなってきた。

 ただ、この記事のジャイロセンサーはアナログのもので、所長はこれを持っておらず、CPUもAVRを使った正規のArduinoで、こちらは、例のESP8266である。この記事をそのまま作っていくことは出来ない。移植が必要である。

 しかし、ウェブで「倒立振り子 MPU6050 ESP8266」のキーワードで探すと、これらを使った倒立振り子の記事が山ほど見つかった。 今度は多すぎて、何を選んでよいか迷ってしまうほどだ。

 MPU6050は、6軸の加速度、ジャイロセンサーで、I2Cがインターフェースになっている。3年程前、Processingを使った飛行モデルの実験に使った。記事が残っている。

 このときは実際のハードの姿勢制御ではなく、PC画面上の飛行機モデルを動かすのが目的だった。ソースコードは、そっくりひとさまの物を拝借し、PC画面に飛行機をだそうとしたがうまく行かない。

 つながらないのは、現用のビデオカードが、Proscessingのビデオエンジンをサポートしていないことが原因とわかり、新しいビデオカードを購入したりして大騒ぎして、やっとのことで動かした。結局、ジャイロセンサーの動きを確認するだけに精力を使い果たし、実際の応用まで行かなかった。

 実物の姿勢制御にジャイロセンサーを使うのは、今回が初めてである。モーターなどのメカ部分と、センサーからのデータで如何にモーターを制御するか、ソフトのロジックだけでなく、メカトロニクスとしてはかなり高度な技術が要求される。

 先ほどのサイトの写真を見ていると、モータードライバーは以前、Xbeeを使ったラジコンカーと同じTA7291を使っており、とりあえず、これは、そのまま流用して先に進むことにした。

TA7291Pはやはり4.5V以上が必要か(7/29/2019)
 件のラジコンカーを制作品を積み上げた資料棚から取り出した。このラジコンカーは。タミヤのツインモーターキットを使って、前進と後進だけでなく左右の回転も出来るようになっている。

基板には、今になっては思い出せないトランジスターが6ケも実装されていた。情けないことに、これが何のためにつけられたのか思い出せない。解析の結果、モーター電圧(4.5V)とXbeeのVcc、3.3Vの間のバッファーと断定した(自分で作ったものなのに確信がない。まあ、8年も前のことだけど)。

ところがテストしてみると、TA7291は、リチウム電池の4.1V近辺では動かないのである。データシートを見るとロジック電圧は4.5V以上とある。しかし、ネットのなかでは、Arduinoの3.3Vでも動かしている例がある。どうもおかしい。もう一度やってみたら、今度はちゃんと動いた。Dsc01770

ちょっとパワーが足らないような気がするが、まずは動けば良い(このトラブルは、その後、PWM制御入力ピンのハンダ付け不良が発見されて無事解決した。つまりゲイン最小になっていた)。もし、これで動かなければ、こちらにはDRV8835という強力なモータードライバーがある。

あらためて新しいハードを作るのでなく、このラジコンカーを立てて使い、上にジャイロセンサーや、ESP8266をつけるサブシャーシーをつけることにした。あれこれ実装の方法を考える。

18650電池フォルダーをホットボンドでつけて倒立振り子のハード完成(7/30/2019)
 結局、既存のリモコンカーのシャーシー(といっても秋月C基板)に、フロッピーケースのコーナーを切り取ったL字アングルをつける。このフロッピーケースを応用する方法は、これまでいろいろな所で使っているので手慣れたものである。Dsc01769

 電池は容量の大きい、リチウム充電池18650を使い、Aitendoで手に入れた18650用の電池ケースをホットボンドでメインシャーシーにつける。重心が問題だ。倒立振り子の安定は、重心が上にあればあるほど安定するはずだが、そのことはどの記事にも明記されていない(昔、雨傘を立てて遊んだ記憶にもとづく)。よくわからないが、とりあえず、電池はサブシャーシーとモーターの中間に
つけた。
 
 やっつけだが、一応、定番の倒立振り子風の形が完成した。タイヤが他のウェブサイトの作品のように大型のものにするか迷っている。 テストのため、簡単なスケッチを書いて、TA7291Pモーター基板とESP8266でモーターをリモコンで回すところまで確認した。

ESP8266基板にMPU6050を実装した。出てくる数値がおかしい(8/3/2019)
 駆動部のハードの目途が立ったので、MPU6050の実装に取り掛かる。これは結局ESP8266基板の空き地に単にピンヘッダーを立てるだけでつけてしまった。ジャイロなので本当はもっとしっかりつける必要があると思うが、まずはこれでいこう。

 次はいよいよソフトだ。これが実はくだらないところで大はまりした。 長期間、開発から離れているとどうもカンが働かないからだろうか。横道に何度もはまり込んで、ウンウンうなっていた。まあ、これが面白いということもあるが、全部を書き出しているときりがないので、はまった落とし穴の主なものだけ、以下にまとめておく。

 まず(1)、Arduinoのintって、unsigned なの? 
 MPU6050の出力データをテストのためUARTに連続して数値を出力していた時である。ジャイロの角度の数値がマイナスに振れないのである。MPU6050の各データは、符号付き16ビットで、8ビットづつのレジスターから値をシフトしてintで定義した変数に収容している。

 これが、マイナスになっていない。8ビットデータ(上位データ)は、符号なし(uint8_t)でとっても、intに入れると符号付でマイナスになるはずなのだが、そうなっていない。ひとつひとつ、データをSerial.print()でしらみつぶしに出力させて確かめた。

 その結果、intタイプの変数に入れたとき、MSBビットをマイナスにみなしていないということがはっきりした。そんな馬鹿な。 Arduinoでもデータタイプのintは、符号付(signed )のはずなのにおかしい。

 半信半疑で、データタイプのintを int16_tにしてみたら、何とちゃんとマイナスが出た。えー、そんなー、信じられない。Arduinoでは、intは符号なし(unsigned)なのか。何かの具合で、データタイプがおかしくなっている。この真相究明に数日を無駄にした。何か間違っているのだろうか(どこかで#defineされている?)。

 次は(2)、ビルドしたプログラムがsoft WDTエラーで先に行かない
 ソースコードは、ここを参考にさせてもらった。ここは、MPU6050とTA7291を使っており、姿勢制御の部分がそのまま使えそうだったからである。ただし、CPUはPICなので、ESP8266のArduinoに書き換える必要がある。

 このあたりの移植は所長にとっては難しい仕事ではない(何十年もやってきた)。タイマーの部分や、割り込みの処理をかえる必要があるが、これらは、すべて調査済みである。(ESP8266のタイマー割り込みは、通常のArduinoの
MsTimer2::set(mill-sec, TimeProc);
MsTimer2::start();

ではなく、
#define MSEC2CLOCK(ms) (ms * 80000L) //ESP8266内部クロック換算。
timer0_isr_init(); // 割り込みルーチンの初期化
timer0_attachInterrupt(timer0_ISR); //割り込みベクトルに登録
timer0_write(ESP.getCycleCount() + MSEC2CLOCK( 100 )); // 100msごと
などを使う。)

 意気揚々と、ESP8266用のコードに書き換え、コンパイルした。順当にコンパイルは通った。モータードライバーはつけずに、出力をデバッグUARTに出させて、まずはテストである。

 ところが、これが全く動かないのである。ウェブで原因を探すが、ハードがおかしいとか、ユーザーループが長すぎるとか、不安定な電源だとか、どうもピントがずれている。PICからの移植だが、機種依存になるようなものは何もやっていない。

 ただ、floatなどの4バイトデータが非常に多いので、SRAMあたりのヒープデータを食ってしまっている感じだ。ユーザープログラムがスタートする前に、メモリ破壊が起きている感じである。

 さらに(3)実行時エラーで、新版のArduinoIDEを試すも、今度はファームが書き込めない
 というので、Arduino IDEそのものを新しい版に換えてみることにした。今使っているIDEは、数年前におとした1.6.12で、最近は1.8.21まで上がっている。

 ところが悪いことは重なるもので、こいつは、ファームを書き込むesptoolがUARTを認識せず、プログラムそのものを焼くことすらできない。なにか散々な目にあっている。やれやれ、このあたりで原因を究明する気力を失った。

 仕方がないので、IDEは1.6.12まで戻り、別のソースコードで作り直すことにした。

 ここは、MPU6050からのデータを取り出して、相補フィルターで出てきたデータの補正をしているところまであったのでこれを参考にすることにした。

 不思議なことに、最初のソースコードに、このコードを組み込んでみると、WDTのエラーは解消したのである。モーターにはつないでいないが、MPU6050の測定値がシリアルコンソールに派手に出始めたのである。いやいや、理屈はわからないが、プロジェクトは一歩前進した。このあと実際にESP8266の出力ピンからモーターをドライブする段階に入れる。Dsc01772

やっと動く所まで漕ぎつけたが、暴れるだけ(9/19/2019)
 倒立振り子が出来たら、ブログを半年ぶりに更新しようと目論んでいたが、いつまでたっても倒立がうまくいかないのであせっている。タイヤをかえたり、PID制御のパラメーターを変えても、細かいモーターの動きが実現せず、暴れるだけである。

 モーターが「ミー」と弱い音を立てるだけで動かないので、PWM値を上げて、モーターの出力を増やすと、今度は、回りすぎて車体が激しく振動し、倒立するどころではない。

 そのうち、頼まれた研修講師の期日がせまり、その準備でそれどころではなくなった。暫く、工作室に降りない日が続く。それでも日を置くと、物事を外から見ることになり、トラブルがわかってくることがある。それなりの解決法は何となく見えてきたが、ブログの記事もかなり多くなったのでこのあたりで一区切りつけることにする。

| | コメント (8)

2019年2月 8日 (金)

研究所活動は停滞したままでCCDカメラ顕微鏡導入など

 年が改まって気が付けばもう2月になっていた。がた老AVR研究所の活動はさらに低迷している。この前の更新からそろそろ2か月が経つのだが、地下の工作ルームにいる時間は減る一方で工作らしい工作は殆ど手が付いていない。

 あんなに熱中したCNCマシンも全く遊んでいる。レーザーカッターなど梱包も開けていない。要するに、工作のときの「わくわく」感が得られなくなったのだ。そう、数年前アメリカの雑誌「TIME」に世界で影響力のある100人に選ばれた片付けの名人、近藤麻理恵氏のいう「ときめき」がなくなったのである。

 電子工作は仕事ではない。気分が盛り上がらなければ何もしないで一向にかまわないのだが、貧乏性に生まれたと見えて何か落ち着かない。試験が近づいているのに勉強に手が付かないときと同じような妙な焦燥感に襲われる。それに、このブログは備忘録を兼ねているので、何か書いておかないとまずい。

 現在のところ、これしか生存証明がない。日記はメモ程度でも残すようにしているが(激しい物忘れ対策)、詳しい状況はこのブログが頼りである。というので量は少ないが、この2か月の行動記録(作業ではなく)で、記憶の糸をつないでいくことにした。Dsc01603

自作のループアンテナを曲げわっぱの工法でつくる(1/12/2019)

 年が明けた。もう大分前から仕事はしていないから毎日がお正月のようなもので、特に感慨は湧かない。年末は電子工作らしいものは何もしていなかった。例によって家族が大集合し、箱根駅伝を見て、近くの神社に初詣に行き、破魔矢を買ってくればおしまいである。

 でも何か工作をしようと思って、曲げやすいという杉の薄板をホームセンターで年末に買ってあった。中波用のループアンテナを自作するつもりである。厚さ2ミリ、幅5センチの1メートルばかりの薄板が2枚である。

 しかし、薄板を円弧に曲げる方法に迷ってそのままになっている。水に濡らせば良いのだが適当な方法が思いつかない。当初は、風呂場に持ち込むつもりだったが、熱湯の方が効率が良さそうだ。といって板を漬け込む熱湯容器を自宅で用意することは不可能である。

 そのうち、自宅にある竹製の蒸し器の外周がアンテナに近い大きさであることに気づいた。この蒸し器は我が家の最大の鍋に載せるもので、鍋に湯を沸かし、薄板を少しづつ浸して、これにあてていけば、全部を漬けなくても曲げられる気がしてきた。Dsc01600

 意を決して、家人が寝静まったある日の深夜、作業にとりかかる。ガスレンジに鍋をかけ板を焦がさないように斜めにしながら少しづつ沸騰する湯に一分ほど浸したあと、蒸し器の外周にあてて曲げて行く。温度が高いと思いのほか簡単に曲がることがわかった。何のことはない「案ずるより、産むがやすし」の諺通りである。直径およそ30センチの円形のフレームが簡単に作れた。

 円の固定は。凝らなければもっと楽にすんだ。単なる瞬間接着剤だけで完全に止まった。最近の接着剤は強力で、曲げわっぱのような織り込み加工は全く不要である。固定台は、自作の温調付きのアクリル曲げ器で、CDケースを簡単に曲げて作る。テスト用なので見映えはしないが実用的には十分だ。

Dsc01599  次は線材である。この前のデコパネのループアンテナは、被覆線を使ったが、どうも少しかさばる。今度はUEW線にしようと思ったが、手持ちがないので先に進めない。これは買ってこなければならない。

久しぶりの秋葉原。松屋で天ぷらそば。買い物はUEW線(1/14/2019)

 ちょうどそのころ、古い職場の友人から新年会を兼ねて久しぶりに会わないかというお誘いがきた。秋葉原に買い物に来るのでそのついでということである。渡りに船とはこのことであった。定番の須田町のソバ屋、「松屋」で待ち合わせることにする。

 昼時をはずして午後2時に集まったのだが、松屋はこの時間でも行列が出来ていて、大盛況であった。ビールと天ぷらそばを注文する。混んでいるので気が引けたが、一杯くらいなら良いだろう。ここはつきだしに「そばみそ」が出る。これが美味なのだ。

 すっかり満足して買い物にでかけた。電線と言えば、やはりオヤイデ電気である。太さ0.5ミリのUEW線を50mほど調達する。メーター¥15程度で、1000円でおつりが来た。このあとは、2人でなつかしの店の消息を渡り歩く。

 ラジオデパートは定休日ということもあって閑散としていて空きスペースが目立った。昔、結構はまっていた大通りの小さな中華そばや「松楽(しょうらく)」は、代が変わったそうで、店構えには全く昔の面影はないが、立派に営業していた。味は同じらしい。

 これも良く行っていたガード下のラジオセンター横の喫茶店「古炉奈(ころな)」はコスメ喫茶に様変わりしていた。中を覗く気分にはなれない。いわゆるDOS/V通りと言われた末広町にかけての通りに足を延ばすと、立ち並んでいたPCパーツショップの殆どが姿を消していて、2人で嘆く。

 一方、末広町から少し離れたAitendoの直営店には、友人が妙に感動したのが印象的だった。どういう基準で集められたのか判然としないのだが、なにしろ部品の種類が多いという。そして旧交通博物館の中央線の線路の見える喫茶店で一休みした。ここは、前から行きたかったところで、やっとのことでそれが実現できた。ご満悦である。

 自宅に帰って早速、UEW線をループアンテナのフレームに巻く。20回あたりで前の方形ループアンテナと同じインダクタンスが得られるはずだ。テストの結果は、方形のループとほぼ同じ290μHが得られた。しかし感度はわずかながら低い。これは断面積がこちらの方が少ないので順当な結果であろう。

恐るべし中華ラジオの実力(1/16/2019)
 このあいだの1000円台のラジオは家族に持って行かれたので、今度はDSPチューナーのオールバンドラジオを物色する(この前のはアナログ選局)。このあたりになると価格も¥5000台となり、日本製もちらほら良いものがあるが、やっぱり価格/機能比では中国には勝てない。 Kagawadou_2018080413314500080 TECSUNという中華大手のこれ(PL310ET)を選ぶ。中華の通販は¥1000以下の小さな部品は郵便物で来るのでアマゾン経由でもやたらと時間がかかるが、この程度になるとさすがに宅配便ルートなので到着は早い。数日で届いた。

 早速梱包を解いて中身を取り出す。前のラジオと同じくらいの大きさだ。電池は単3三つでニッケル水素充電池が使え、入れたままで充電できる。少し充電して試聴する。おおお、こいつは室内でもロッドアンテナだけで、在京FMが10何局、簡単に入感する。自作の意欲を奪ってしまう高感度だ。

 ただし選局方法は無茶苦茶難しい。FMや中波帯を自動スキャンする程度ならともかく、短波帯を探訪するには、説明書を熟読してもまだわからない。アンテナがないこともあるが、めぼしい局を殆ど受信することができない。これはまともなアンテナで心を入れ換えて(馬鹿にせず)、練習しないととても使いこなせそうにない。 

 もののはずみで中波用の既製品のループアンテナ(TECSUN AN-200)もついでにポチってしまってあった。テストのため地下に持ち込み、USBドングルのRFコンバーターの前段につないだ。しかし、感度は自作のものと大差がないというより、むしろ低い。ダイヤルを回しても感度に変わりがない。 Dsc01598

 小さいので仕方がないと言えばその通りだが、ちょっとがっかりである。RF(無線)は基本、アナログなので、びっくりするような成果は出てこない。まあ、期待する方が間違っていた。

とうとうAitendoのCCDカメラ顕微鏡を代引きで買った(1/18/2019)
 前からAitendoの直営店に行くたびに、気になっていたCCDカメラを付けた顕微鏡をとうとう買ってしまった。この顕微鏡、CCDカメラの画像を大型ディスプレイに映し出すもので、店の一角でデモをやっており、実際にプリント基板などを拡大して見ることができる。

 当研究所では数年前ホーザンの実体双眼顕微鏡を導入し、とりあえず不自由なく0.5ミリピッチまでのハンダ付けは可能になっているが、難点は視野が狭いために肉眼で相当周りを確認しながら使う必要があった。

 このCCDカメラの顕微鏡は、高解像度で大画面に映せるので飛躍的に視認範囲が広がる。しかも対物レンズと対象物の間のクリアランスは30センチ近くあるので、ハンダ付けなどの作業ははるかに楽になりそうである。Dsc01606 しかし、大型ディスプレイに手持ちがなかったのと、場所がかさばりそうなのでためらっていた(価格はスタンドなどをすべて合わせても3万前後でたいしたことはない)。それが正月に、娘に貸してあった液晶ディスプレイが戻ってきたのと、最近の電子工作へのやる気の回復のため、さらにこのあいだの直営店でのデモの印象が強かったため、思い切って買うことにした。

 ちょうど思い立った日が直営店の定休日なのでウェブサイトを見ていたら、なんとレンズキットが売り切れになっている。ところが暫くしたら1ケだけ在庫が戻っているではないか。これはもう買うしかない。あわてて通販で申し込む。

 ところが、Aitendoの通販は銀行振り込みが出来ない。カード支払いは、使える会社が限定されており、残る支払い方法は代引きしかない。手数料をとられるが、まあ、これが一番安全だろう。ぐずぐずしているうちにまた売り切れるかもしれないので、あせって画面に入力する。めでたくレンズキットはカートに入った(このあとだいぶん長い間、レンズキットは在庫切れになっていた)。

リモコン不調なれど、この解像度は凄い(1/20/2019)
 数日後、無事、レンズキット、CCDカメラ、スタンド一式が宅配便で届いた。早速組み立てる。最初、カメラの対物レンズに保護シートが貼ってあり、ぼけぼけ画像に頭を抱えていたが、それを外すと見事な映像が出てきた。 Dsc01604

 当研究所の手持ちのディスプレイのHDMI出力はやや不安定で、ひんぴんとリセットを繰り返し心配したが、DVI経由にすると安定した。DVIとHDMIはコネクターが違うだけで両方サポートしているようだ。

 試しに、ハンダ付けをやってみた。実体顕微鏡に比べると、圧倒的な視野の広さは比較にならないほど楽である。焦点深度が浅いのが少し不満だが、もっと困ったのが、ついてきたリモコンの一部の操作が動かないことだった。 Dsc01608  早速、店にクレームのメールを出したところ、すぐに返答があり、返送用の切手つき封筒と代品を送ってきた。しかし、このリモコンも同じ症状だ。電源の入り切りが、OFFは動くがONのとき動作しない。どうもこのCCDカメラの正規のリモコンではないようだ。リモコンはどうしても必要なものではないので、とりあえず2品とも店に送り返し、正しく動くリモコンを再送してくれるよう頼んだ。

閑話休題。下呂温泉と各務原の航空宇宙博物館(1/27/2019)

 工作以外の話題をひとつ。旅行の話である。家族が名古屋に転勤していて今年中に東京に戻りそうなので、今のうちに名古屋近辺に遊びに来ないかと誘いを受けた。ということで、下呂温泉と、近くの刃物で有名な関市に家族で行くことになった。

 この界隈には、平成が終わるというので人気になっている平成の「道の駅」がある。ここは元々の地名が平成(へなり)という町で、話のタネに立ち寄った。何の変哲もない道の駅だが、これが結構な人出で驚いた。よほど行くところにみんな困っているらしい(我々もその一員だったが)。 Dsc01655

 下呂温泉は、日本三大名湯(江戸時代の制定で草津と有馬と下呂)のひとつということだが、特に驚くようなところではなく、極く普通の山里に広がる中程度の温泉である。とても寒い日だったので、結局、温泉街へは出向かず、旅館の中でたっぷり温泉を楽しんだ。泉質はアルカリ性で肌にやさしい。 

 関市では、60年ぶりに切り出し小刀を買い替えた。左利き用もあったが(自分は左利き)、右利きの刃の使い方に長年慣れてしまっているので結局、右利き用を買った。学習用は¥1000前後だが、少し贅沢して¥3000クラスのものをもとめる。Dsc01635

 関市に隣接した「かがみはら航空宇宙博物館」にも立ち寄った。各務原は、旧日本軍の航空機開発のメッカであり、戦後も沢山の国産の飛行機がこの近辺で開発されたそ>うだ。ずらりと実機が並んだ博物館はなかなか見ごたえがあった。Dsc01652


究極の物欲。サーモグラフィックカメラの導入(1/29/2019)

 これも衝動買いである。だいぶ前から、自作を狙っていたのだが、ユニットだけでも3万以上するし、5万近く出せば完成品でそれより性能の良い商品が手に入る。どうしようかと考えているうちに日が経ってしまっていた。 Dsc01640

 それが、ネットで偶然、サーモグラフィックカメラのレポートを見つけ、これが3万円クラスの完成品でも十分実用的な解像度があることがわかった。しかも、簡単にスマホにつけるだけである。こういう使用記事はとても参考になる。 

 工作が手詰まり状態の時は、完成品が何かの起爆剤になるときもある。というより、何か心に「ときめく」ものを感じて、ついポチっとしてしまった。4万以上するPROを選ぶ。最近少し経済状況が好転した勢いもあるかもしれない(持ち株が持ち直した)。PROは少し高いが、3万円の普及品より解像度が4倍になっているというので少し無理をした。 Dsc01654

 これもアマゾンからの買い物で、順当に数日で自宅に届いた。実に便利な世の中になったものだ。予備知識はネット上に沢山ころがっているので接続に不安はなかった。ただし、スマホでの操作はやはり苦しい。カバーをつけているので安定して持つことができない。

 それでも操作性を除けば、性能は噂通り素晴らしいものだった。家庭内の電気機器の発熱状態が手に取るようにわかる。熱の差も、ちょっと絨毯に手を当てて(10秒前後で良い)離し、カメラで見ると温度差が出来て手の形がくっきり絨毯に残る。 Dsc01653

 あと問題は電池の減りがかなり早いことだろうか。それでもこれは色々な所で活躍できそうだ。 Jkws0136

| | コメント (2) | トラックバック (0)

2018年12月12日 (水)

ドングルのHFコンバーターでJJY標準電波は見えたか

 どういうはずみか、PCで長波の40Khz標準電波を見ることに熱中している。今となっては何のきっかけでこれを始めたのか、すぐに思い出せないくらい長い期間だ。ブログの更新間隔もいつのまにか一か月を越えてしまった。

 前回記事のとおり、PCでJJY標準電波を見るために、USBアダプターに接続したソフトウエアラジオドングルで画面上に受信した電波のスペクトルを出そうとしている。何十年ぶりかのRF(電波、高周波)の世界に完全に飲み込まれてしまったようだ。

 そもそものきっかけは、このサイトの記事のような気もするが、もっと前からJJYの電波強度を調べていた気もする。いずれにしても、この記事は、6年以上も前の記事で、今や、このほかにも長波のJJYを受信した話は沢山でてくる。ここにはドングルではなく、一般の普通の受信装置で聞いておられる例もある。

 アマチュア無線家の中には、このドングルを受信機(高級型がある)として実用に使っておられる例も数多くあるようで、技術の進歩の激しさに今更ながら驚くばかりである

 JJYの電波そのものは、当研究所ではAitendoの受信モジュールを使った電波時計の自作や、標準電波のリピーター制作などで既にお馴染みである。PCで受信することは目新しい話なので飛びついた。しかし、これが電波を見るとなると、そう簡単にはいかなかった。 Dsc01550 我ながら馬鹿なことにこだわっていると思う。そう、当研究所のモットー、「実用」ということでは、全く実用のあてのない(アマチュア無線をやらないなら)工作である。それでも、後述するように、ドングルとHFコンバーター、それに外付けRFアンプと手製のループアンテナで、40Khz近辺でそれらしい電波を捉えることに成功した。

 しかし、受信機のデコード機能の関係か、正確なパルスコードを見ることは出来ず、本当にこれがそうなのかの確証はない。とはいえ、近辺でそれらしい電波はこれしかなく、3Khzほどオフセットしているが、これはコンバーターのクリスタルの誤差の範囲(数十PPM)だと思われる。受信できたことにしておこう。ともあれ、以下は、この一か月の悪戦苦闘の記録である。

HFコンバーターの組み立て(11/2/2018)
 前回のブログ記事をUPしたあと、予定通りHFコンバーターの組み立てに入った。製作者のサイトには数多くの制作記が載っているが、みなさん例外なく部品の小ささに驚かれているようだ。しかし、こちらには例の実体顕微鏡という強い味方がいる。

 1608チップの実装も怖くない。それでもLEDひとつを飛ばして行方不明にしてしまった。このクラスのパーツは床に飛ばしてしまうと、まず発見は不可能である。しばらく床の絨毯をペンライト片手に文字通り手探りで探したが、早々に諦めた。 Dsc01562

 というのは、この大きさのLEDなら手持ちがあるからだ。昔々、ネットの記事(チップ部品の手ハンダ実装競争)に刺激されて手に入れてある。これを取り出して難なくハンダ付けし、とりあえず配線終了である。失くしたLEDは青色だったようで、取り替えたLEDは緑。こちらの方が所長の好みなので怪我の功名であった。

 プリント基板なので、誤配線の心配はない。オプションパーツのリレー(VHF帯へのバイパス)の実装を残し、テストを開始する。アンテナの準備が出来ていないので、まず、自作SG(シグナルジェネレーター)から40khzを出し、ドングルを100Mhz起点にして受信できるかどうかを試す(コンバーターは100Mhzへアップコンバートする。つまり40Khzなら100,040khzを受信)。

 PCのラジオソフトはこの前から使っているSDR#(SDRシャープ)である。よーし、受信しているようだ。それでは、これまでのLTC1799を使ったJJYリピーターではどうか。ふーむ、これは無理なようだ。直付けしていないこともあって受信できない。

 カップリングコンデンサーで直付けすれば、前のドングル直結のダイレクトサンプリングのときのように見えるのだろうが、先を急ぐのでアンテナを使った中波の受信テストに進む。

中波のAM放送が聞こえない。アンテナの原理を学ぶ(11/5/2018)
 中波の受信はJJY受信と直接関係がないが、どの程度の受信能力があるかは試しておきたい。最近のアマチュア無線は、このソフトウエアラジオによるバンドウォッチ(入感の監視)が当たり前になっているようなので、今後この世界に復帰するときのためにも調べておきたい(おいおい)。

 アンテナが問題だ。はじめループアンテナを作ろうと、ウェブサイトを漁ったが、作りたくなるようなものが見つからなかった。調べて行くうちにどんどん基本に戻り、アンテナとは何ぞやというところまで調べる羽目になった。

 ウェブで基本的なことを学ぼうとするが、なかなか良い資料にめぐまれない。どの世界でもそうだが、最初の初歩の部分の解説は山ほどあるが、ちょっと進んで、長波帯での有効なアンテナの考え方を分かりやすく書いたサイトは全く見当たらない。

 恐らく、書籍でもそうだろう。改めて探す気にならない。これまでに何度も失敗をしている。あきらめきれずネットサーフィンを続けるうち、不要電波の輻射をおさえるサイトの解説でふと面白いことを思いついた。要するにこの反対をやれば良いのだ。

 輻射を抑えるには、シールド線のように、行きと帰りのワイヤーを近づけて相殺させる。ぐるぐる巻きをさけて磁界と電界を交錯させないようにとある。そうだ、この逆をやれば、電波が出て行く勘定だ。

 つまり、ワイヤーのさしわたす範囲の面積を出来るだけ広げたり(一本線のアンテナでは地上接地面が対極)、繰り返しの流路をまとめて磁束と電界を交叉させたりすれば(コイル)、電波が輻射していくのだ。一波長が数キロメートルという長波電波でも、ループアンテナのようなものが有効だということが少しは理解できた。

続々とウエブで高周波部品を注文。圧着工具を2度買い(11/10/2018

 無線、高周波(RF)の世界は、これまでの、マイコンなどの電子工作とは少し毛色の違う部品を使う。同軸コネクターだけでも多種多様な規格があることを学ぶ。秋月電子の店頭で横目でみていたSMAコネクターが小さくて、とても工作心(ごころ)を刺激されていたのだが、これが大威張りで使える。 

 当面、当研究所の高周波コネクターは、SMAに統一することにしてSMA関係のコネクターやケーブルを次々に物色して、ネットで注文している。まるで新しい玩具に夢中になっている子供のようだ。Dsc01559 同軸などの通信ケーブルの配線では、コネクターかしめ用の圧着工具(ペンチ)が重要なキーディバイスである。圧着ペンチは昔から何故か気になる工具で、当研究所では、みな安物ばかりだがイーサネットや電話のRJ11,RJ45用から、ピンヘッダー用のオープンバレル型(これだけはまともなEngineer製)、AC配線の絶縁端子型用まで5つ近くが揃っている。

 圧着ペンチの価格はピンキリで業務用のものは軽く一万円近くするが、ここも最近は中華ものが幅を利かせているようで2千円しないで各種の工具が手に入る。同軸コネクターの圧着工具も中華製が安いので、気楽に他のSMAプラグなどと合わせて注文していたら、コネクターの規格とダイスのサイズの違うものが届いてしまった。

 どうもRG58や、RG174などのこれから使おうと思っているケーブルのサイズと微妙に違っている。いざとなればプラス側の細いピンの固定はハンダ付けで何とかなるが、千円ちょっとの工具なので、ウェブでもう一度、太さを確認し(インチとミリでややこしい)、2本目を発注した。Dsc01560 ところが、こういうときに限って、注文したものと全く違う型番のものが届いた。アマゾンは返品が簡単に出来るので、宅配業者に送料受取人払いで送り返し、同じものを注文しなおす。それにしても、肩の力が抜ける話だ。

 コネクターだけでなく、同軸ケーブルも種類が多すぎて何を選べば良いのかわからない。RG系列(米軍仕様)と、5C2V,3D2VなどのJIS系列は互換性があるところとないところがあり、コネクターそのものも、ケーブルによって種類が違い(太さが違うので)、もう何が何だかわからない状態である。

 既製品のアンテナも色々見つかった。マグネティックシールドループアンテナが良さそうだが、1万円以上してちょっと手が出せない。ケーブルを何メートル用意するのかも問題だ。最終的には、室内ではなく、せめて2階のベランダあたりまで伸ばすことを考えれば20メートル以上は買っておきたい。しかし、余り長いのを買ってしまうと損失がばかにならない。悩ましいところである。

 またケーブルの値段が店によって極端に違うのも気になる。秋葉原の有名なケーブルの専門店オヤイデ電気は結構高い。ネットの方が圧倒的に安いのだが、これもまちまちで迷ってしまう。ケーブルは規格品なのにどうしてこんなに値段が違うのか。中華パチものがあるのだろうか。

子供のラジカセからループアンテナをはずし実験。受信成功(11/13/2018)
 ちょうどそのころ、我が家の物置の奥に娘が捨てていったラジカセが見つかった。MDカセットという今では絶滅した電池式だ。手提げハンドルの脇にちょうど欲しかった巾10センチばかりの中波用のループアンテナがついていた。本体からはずれるようになっていて方向を選べる。

 早速これを利用することにする。たいしたループをしているわけではないが(7ターン)、テストしてみる価値はある。早速、SMAプラグにターミナルブロックをつけるブレーク基板を用意して、接続し、地下のPC横でテストしてみた。 Dsc01558

 おお、HFコンバーターで始めて中波AM放送を聞くことができた。地下では、せいぜいが、NHK第一とFEN、それに東京放送(TBS)くらいだが、同軸ケーブルで地上近くに持って行くと、5局以上が受信できた。

 ためしに、電話線でワイヤーを垂らして持ち出すと、家庭電力からの強烈な雑音で全く聞こえなくなった。同軸ケーブルはやっぱりノイズ抑制には欠かせないものであることを納得する。

アンテナを外に出しても感度改善せず(11/15/2018)
 圧着ペンチが届かないので、SMAプラグを、買い置きのRG174ケーブルに、だましだまし固定し、中継プラグで継ぎ足して(例のリバースSMAコードに変換プラグをかませたもの)、ラジカセアンテナを屋外に出した。

 我が家は家族の要望で防犯・防災用に網ガラスが入っている。電波事情としては良い環境とは言えない。これを避けるためである。屋外に固定するために作ったのが、写真のデコパネでつくった棚である。玄関の外壁に両面テープで固定した。 Dsc01555 デコパネ(ポリスチレン樹脂)は、近くのホームセンターでたまたま見つけた極めて軽くてしかも意外に丈夫な板素材である。ポリスチレンも接着できるという接着剤が、最近売り出されているのでそのテストの意味もあって買ってきた。

 デコパネをハサミや、カッターで簡単に切り離し、接着剤で固定する。考えていた構造をあっという間に作ることが出来た。重いものは載せられないが、ループアンテナくらいなら問題ない。ガムテ―プでアンテナを仮止めする。

 ケーブルは、ルーバー型の換気窓の下を通す。見映えはいまひとつだが、無事、地下の工作室から、玄関先の換気窓のところまでケーブルがつながった。勇躍、受信テストに入る。しかし、アンテナを外に出しても感度は殆ど改善されなかった。期待していただけにがっかりである。

4アマくらいならちょっと勉強したら合格できるかも?(11/17/2018)
 RFの世界を調べ始めて、どんどん深入りが止まらなくなっている。今まで避けて通っていたアマチュア無線の世界でもある。見ること聞くことが、とても新鮮で物珍しい。危険だ。ここもオーディオ同様、やりだすと止まらない趣味である。

 それでも誘惑に耐えられず、ウェブで昨今のアマチュア無線界を覗いてしまった。色々面白い。無線の資格が昔に比べると全く変わっている。4級というクラスまである。これが昔の電話級という初心者向けのライセンスのようだ。

 試験問題までウェブで見ることができる。試しに電波工学のところを全く復習せずにやってみた。10問くらいですべて選択問題である。解答を調べる。おお、70%くらいの正解率だ。これはやれるじゃないか。ちょっと楽しみになってきた。

 とはいえ、アマチュア無線を活発にやろうという気は何故か盛り上がってこない。電波の送信だけがやってみたいだけなので、これ以上の具体的なステップには進まなかった。

驚くべき中華ラジオの世界。オールバンドラジオがたったの1500円!(11/19/2018)
 我が家にはだいぶ前から携帯ラジオがない。リファレンス機器として一台買うことにした。災害への備えにもなる。

 適当なものを探すためウェブで調べ始めて驚いた。何とたったの¥1500台でオールバンドラジオが売り出されている。もちろん中華製だが、どうも日本のELPAのコピー品のようだ。だめもとで注文してみる。 Dsc01544 ほどなく到着し、早速試聴した。これがなんと、これまでのHFコンバーター付きのRTL-SDRドングルより感度が高い。地下のPC横の外部アンテナなしでNHK第一が楽々入感する。ニッポン放送などドングルでは入りにくいものまで聞こえる(ノイズが多いが)。すっかり肩の力が抜ける。

 あわててドングルの前段につけるHFアンプを発注する。ドングルといえども、もう少し感度を上げておきたい。HFアンプは、これまた多種多様のアンプが販売されて適当なものを見つけるのが大変だった。少しづつスペックが違う。Dsc01554 RFアンプはともかく、この¥1500台のラジオは家族に強奪された。手芸の時にラジオが一番落ち着くのだそうだ。

2万円以上するSDRドングルがあるそうな(11/28/2018)
 話は発散するばかりで止め処がない。ソフトウエアラジオ(SDR)には、別のオールバンドSDRがあるということを知る。RTL-SDRドングルは8ビットADCだが、これは12ビットサンプリングである。さらにLNA(ローノイズアンプ)が付いている。

 紛らわしいがSDRplay RSP2という名前で、イギリスの製品である。アマチュア無線家が本国から輸入して実際の局の運用に使っているレベルのようだ。ただし価格は 2万円以上する。いずれ中華パチものが出てくると思うが、今のところその情報はない。だいぶん迷ったが、結局、買うことは見合わせる。

デコパネのループアンテナが案外感度が良い。3D-2V同軸ケーブルと接続(12/2/2018)
 格安のモノタロウから50mで¥4000(メートルあたり¥80!オヤイデだと¥200以上)の3D-2Vケーブルが届いた。とりあえず30mで切って両端にSMAプラグを付ける。将来2階のベランダにアンテナを上げても届く長さにした。 Dsc01552 再発注して届いた圧着ペンチで本格的な、コネクターのかしめの仕事をする。この圧着ペンチはアマゾンで売られている格安のペンチ(¥1500 足らず)で、型番はTU-301Gである。秋月で買った、かしめ用のSMAプラグの各部のサイズとどうも0.1ミリほどの誤差があるのが気になったが問題なく圧着に成功した。

 アンテナは、棚で味を占めたデコパネで作る。30cm四方のループアンテナを作った。デコパネなのでフニャフニャだが、沢山巻かなければ大丈夫だ。Aitendoで手に入れたポリバリコンをミニブレッドボードに実装し、中波帯は同調アンテナにする。Dsc01553 秋月で買った精密級(?)のLCRメーター(LE5000)が大活躍である。14ターンで190μHで、4連のポリバリコンをすべて並列にして400pF足らず。これで中波帯が入るはずだ。念のためフランクリン発振回路に入れてみた。見事に、500KHzあたりの発振を確かめた。

遂にJJYを捉えたか(12/7/2018)
 このあいだのテストで外に出しても余り感度が変わらないことがわかったので、アンテナを1Fのサンルームの三脚(ライブカメラ用)に固定して、アンテナのテストに入る。ポリバリコンはつけたままで同調形の中波用になっている。

Dsc01556 アンテナ出力は、ピックアップコイル(3ターン)を同時巻きし、同軸ケーブルで受信機までつなぐ。結果は上々で沢山の放送局が聞こえる。ポリバリコンで感度の高い周波数帯域が移動することを確かめる。AGCをかけないと、大電力のNHK第一や、FENは出力が大きすぎ歪んでしまうほどだ。

 いよいよ、40Khz帯の探索だ。ポリバリコンにさらに並列に0.03μFのセラコンを加え、ドングルの前にHFアンプを加えて、ソフトウエアラジオのSDR#を100Mhz帯にセットする。

 左側に、局発の100Mhzの大きなピークが映り、右横の周波数帯をrangeバーで広げて、出現するピークを慎重に調べて行く。ヘテロダイン方式の受信機は、とにかく混変調を起こしやすく(自分で別の電波を作っているので)、至る所にあらわれるイメージ波に用心しないといけない。

Ws000014 すると、40Khzより少し低いが、数Khz手前の38.5Khz近辺に出力が間歇的に上下する電波を発見した。ラジオをCWモードにするが、JJY時報のようなパルスは捉えられない。暫く、周辺を探索する。HFコンバーターは中波でも数Khzの誤差が出ているので、これがどうもJJY臭い。

 JJYは毎時15分と45分にJJYのコールサインをモールスコードで発信している。何回かこのタイミングで耳をそばだてたが、聞き取ることは出来なかった。 Ws000017

 確かな証拠は見つけられなかったが、これがJJYの40Khzである可能性は高い。RFの世界の探索は今後も続けるとして、JJYを見るというテーマはこのへんで一段落して肩の荷を下ろすことにする。

| | コメント (0) | トラックバック (0)

2018年10月31日 (水)

JJY電波を見るため、RF(高周波)の世界に踏み込む

 当研究所で最後まで残った未踏のフロンティアはRF(高周波)である。実はRFには思い入れがあって、何となくこれまで避けていたのだが、ひょんなきっかけでどっぷり踏み込むことになった。

 前にも少し触れたと思うが、所長は60年以上昔の中学生の頃、アマチュア無線に熱中していた。電話級が出来る前の2アマの国家試験は一次が合格し、二次は修学旅行と重なったため(試験は受け直せても修学旅行は一度きり)受けずにそのままになっている(当時は一次試験合格有効期間が10年あった)。

 修学旅行で秋葉原に行き、ガード下の真空管屋さんで、807と5U4G(パワー出力管と整流管)を買い込み、後生大事に持ち帰った記憶がよみがえる。結局、電源トランスが高くて買えなくて、送信機を自作するところまで行かなかった。

 その代わり、6ZP1(いや懐かしい)という一般ラジオ用の出力管で、近くの悪友と勝手に電波を飛ばし遊んでいた(豆電球にループ線をつけ、出力コイルにかざすとマイクの音に合わせて明滅し楽しかった)。そんな今になっては時効になった様々な思い出がある。

 そのうち受験勉強が忙しくなって、結局、無線免許はとりそびれた。そんなトラウマがあるのか、電子工作を始めてもこの世界はあえて封印していたのだが、JJYの電波時計リピーターを開発しているうち、遂に、RFの世界に再び入り込む誘惑に耐え切れなくなってしまった。どんな状況になったか。詳しくは以下の作業記録で。Dsc01506

スペアナが欲しいが高い(10/1/2018)
  そもそもは、JJYの標準電波がどの程度、この研究所に来ているかを調べたかったのがきっかけである。軽い気持ちで作ったJJYリピーターは十分な出力があるはずなのに少し離れるとノイズっぽくなって受信が出来なくなる。このままではリピーターをかなり時計に近づける必要があり実用性が低い。

 受信出来なくなるのは、本家のJJY電波(40khz)と干渉しているからだと思われるが、本当に干渉しているかは単なる推測で確かめたわけではない。リピーターを60khzにすれば解決するのかも知れないが、そうなると受信側も対応が必要で面倒だ。

 こういうことを検証するには、何と言ってもスペクトルアナライザーが一番である。来ている電波を適当なアンテナなどで受けてスペアナで調べれば一発で解決する。しかし、スペアナは、オシロに比べると中華の安値革命がまだ起きていないと見えて、どれも高価である。いくら安くても10万円近くはする。

 参考書などを手に入れて、少しまともに調べ始めたのだが、長波帯までカバーするスペアナはやはり本格的なものでなくては無理で、そういうスペアナは50万円以上する。PCにUSB接続するハンディなものでも100万近くするのはざらで、とても手が出せるものではない。

 どうしたものかと考えていたら、そのうちウェブ上で恰好のものが見つかった。サウンドカードのアナログ入力を利用したPCで動くソフトウエアのスペアナである。実際に動かして、JJYの電波をとらえている記事も複数見つかった。

 Spectrum Labというのが定番のようだ。主な測定対象はオーディオ帯域のようだが、最近のサウンドカードはスーパーオーディオCD(SACD)の普及で、長波帯(40Khz)くらいは軽くカバーしているようだ。当研究所のメインPCのサウンドカードも48khzサンプリングで、何とか聞こえるのではないか。

Spectrorum LabでPCサウンドカードのスペアナを狙うも失敗(10/2/2018)
 早速、このPCのフリーのスペアナソフトSpectrum Labを使わせてもらうことにする。ドイツのアマ無線家(DL4YHF)の開発で、凝りに凝った機能がてんこもりである。いかにもドイツ人らしい緻密な構成だ。アマ無線家御用達のようで、多種多様な使い方の紹介があり、何から始めて良いのか全く見当がつかない。ただ、わずかだが日本語の解説ページがある。

 しかし、日本語でも専門用語が多く理解するのにひと苦労だ。幸い、このソフトでJJYを受信しているサイトがあったので、それを頼りに導入を進めた。ダウンロードは順調に終わり、動作させると画面上に一定の範囲の周波数帯域の受信スペクトルが出始めた。

 全体の電波の受信スペクトルが時系列で画面上を滝のように流れて行く(WaterFallと呼ばれる)。素晴らしい。しかし設定が難しくて、JJY電波の40khzあたりの受信帯域になかなかならず、エラーになることが多い。

 しかも、やっとのことで帯域の設定が出来ても、肝腎の電波が出てこない。念のため、埃を払って自作のSG(シグナルジェネレーター)を持ち出して、その出力をアナログ入力につなぐと20khz以上では出力が消える。Ws000010

 そのうち大変なことに気が付いた。現在のメインPCのサウンドカードは、古い、ゲームポートがまだついている48khzのCreativeのサウンドカードである。48khzサンプリングで見える周波数はその半分の24Khzであることに今更のように気が付いた(シャノンの定理)。

 道理でSpcetrum Labの画面では、24khz以上のホワイトノイズが綺麗に下がっているわけだ。やれやれ、ハードウエアがサポートしていないので、40khzの受信は、この手持ちのサウンドカードでは無理なのである。暫し呆然とする。

サウンドカードを新調するもこれも受信せず(10/7/2018)
 こういうところで簡単にやめてしまわないところが所長の取柄である。漱石の「坊ちゃん」ではないが、若いころから、これで苦労している。負けず嫌いとも言うが、この年になってこの性格が自分にとって良かったかどうか長期的に判断すれば、どうみても赤字決算だ。

 決して褒められる性格ではない。しかし精神衛生上は、間違いなくこちらの方がストレスは少ない。自分の気持ちに正直にこだわっている方が、色々なことを我慢して別の道にいやいや進むより、気分的にははるかに楽だからだ。

 ということで、懲りずにネットで最近のサウンドカードの動向を恐る恐るリサーチする。折角、ソフトを入れたのだから、サウンドカードそのものを取り替えてやろうという算段である。すると、96Khzや192Khzサンプリングのスーパーオーディオのサウンドカードが次々に見つかった。Ws000012

 価格も3000円程度であることがわかった。10万以上するスペアナのことを考えればただのような安さだ。喜び勇んでサウンドカードをウェブでポチッた。アマゾンで注文して3日で届いた。いそいそと、これまでのカードをはずして装填する。

 ところがどっこい、こいつがうまく行かない。帯域の設定は明らかに前のカードに比べれば楽になり、簡単に96Khzあたりに設定がエラーなしに出来るようになったが、受信しないのである。自作SGの出力をパスコン(0.1μF)経由で直接アナログ入力に接続しテストを進める。

 すると前のカード同様、24Khz以下では活発に波が出るのに、それ以上になると全くピークがでてこないことがわかった。その代わり、24khzより低い周波数を発生させていると、高調波の形で、派手に40Khz以上の波形が出始める。

 何ということだ。こいつもアナログ系はどうも24Khzを境にLPFをかけたように感度が極端に下がる。もしかすると本当に音声帯域のためのLPFが付いているのかもしれない。

ちゃんとLPFのカットオフ周波数は100Khzになっていた(10/10/2018)
 こうなると、もう止まらない。高額でないにしろ新しいカードを準備したのだ。このまま黙って引き下がるわけにはいかない。 

 サウンドカードをもういちどPCスロットからはずして、オーディオジャック近辺のプリント配線を、実体顕微鏡を使って調査する。もしかしたら、このアナログ部分にCRフィルターがかかっているのかもしれない。それなら、このLPFをバイパスしてやれば良い。

 プリント基板をいじろうという大それた目論見だが、乗り掛かった舟である。このあたりの表面実装部品は、1608程度の大きさなので、何とか手ハンダで修正が可能だと思う。

 20倍の実体顕微鏡で調べたところでは、確かに、オーディオジャックから音声チップに入る前に、それらしいアナログ回路がついている(写真の赤丸で囲ったところ)。Line もMicの入力もどれも、一段のRCフィルターがついているようだ。

 配線の済んだCRの定数は正しく測定することは出来ないはずだが、秋月の精密級LCRメーター(LE5000)は、2点間の合成LCRを出してくれるという触れ込みなので測ってみる。何かもっともらしいCR値が現れた。得た値をウェブの早見表ソフトに入れカットオフ周波数を調べる。Dsc01541

 測定できた定数は、LineもMicも違った値だったが、奇しくも2つともカットオフ周波数は100Khz近辺で、96khzサンプリングというスペックと符合する。ちゃんと通しているように見える。

 さてどうしよう。このCR部分が本当にLPFになっているかどうかの確証が得られないまま、このカードの配線をいじる勇気は生まれてこない。この方法は少し棚上げにするしかないか。

高周波増幅回路の横道に入る(10/12/2018)  
 ウェブには、電波時計の受信モジュールを使うのでなく、スクラッチからJJYの受信機を自作して受信に成功しておられる方の記事もいくつかある。その中には、FETを使った高周波リニアアンプの回路図も載っている。

 そうか、アナログ入力の前にアンプで増幅しておけば電波が見つかるかもしれない。アンプの回路はとても簡単である。しかも使用する高周波用のFETは、2SK241といって秋月でももう売っていない絶滅危惧種なのだそうだ。これは横道に入るのに十分な魅力的な話である。

 本来の目的に向かっているかどうかわからないが、急にアンプが作りたくなった。ウェブを探し回って、本来の定番2SK241(東芝製)の完全互換品、2SK439(日立製)が、あのAitendoで売っていることを発見し(¥120)、これだけのために、Aitendoに足を運んだ。

 高周波なので本当はハンダ付けで作るべきだろうが、とりあえずブレッドボードに配線を短くして組んでみる。回路はここを参考にさせていただいた。簡単な回路なのですぐ完成した。電源は、リチウム電池である。Dsc01508

 アンプそのものの増幅率は、SGで波を出し、オシロで入出力をモニターすれば実測可能だ。おお、これは簡単に測定できた。発振もしない。ただ中波帯(1Mhz以下)では増幅率は30倍近くあるが、1Mhzを超すと、どんどん増幅が頭打ちになる。

 まあ、中長波帯では数十倍あるので、早速、回路をサウンドカードの前段に接続しテストしてみる。残念。やはりこの程度の増幅では、リピーターの40khzも本来のJJYも受信不能であった。

さらに中華SDRドングルを買ってしまう(10/16/2018)
 八方塞がりである。何をやってもうまく動かない。しかし、ここまで無線に目覚めてしまったので、このまま引き下がるわけにはいかなくなった。あきらめきれず色々調べているうち、さらにJJYを受ける方法があることがわかった。ワンセグチューナーのドングルである。

 夢中になってウェブを探索する。これまで避けて通ってきた道なので、RFの世界は知らないことが多くて興味が尽きない。スペクトルアナライザーに関連したところでは、ワンセグのテレビを視聴できるUSBドングルが流行っているようだ。Dsc01507

 たったの20ドル近くで高性能のデジタルレシーバー(Software Digital Radio)が手に入る。本来は欧州仕様のTVワンセグチューナーのドングルだが、これも欧州のアマチュア無線家が開発したソフトを使うと、FM受信機や、航空無線の傍受用に早変わりし、VHFのスペアナにもなる。

 調べているうち、VHF帯だけでなく、長中波やHF(短波)も聞けるオールバンドラジオになることを知った。ふーむ、これならJJYもこれで聞けるかもしれない。

 このあいだのCNCマシン同様、同じような形をしたドングルが市場に出回っていて、やたらと種類が多い。代表的な、というよりオリジナルはRTL-SDRと呼ばれるドングルのようだ。色々調べた結果、ドングルではなくHF帯も受信できるソフトウエアラジオのセットを注文した。これもアマゾンで発注して3日で届いた。Ws000011

 アンテナを普段使っているTV/FM用の同軸ケーブルにつなぐと、FM放送などは簡単に受信が出来た。長波帯の受信を試みる。しかし、残念なことに、こいつも1000Khz以下は極端に感度が下がる。VHFは快調に受信するが、HF帯はまともなアンテナをつけなければ無理なようだ。

 スペック上は100khz以上ということで、受信方式はダイレクトサンプリングなので、少し感度が低いということをあとで知った。 

はてはHFコンバーターも発注(10/20/2018)
 もう際限がなくなってきた。前から秋月で気になっていた高周波用の同軸コネクター関連のパーツを手当たり次第にウェブでポチっている。まず、SMAコネクターまわりが気になって、ケーブルやコネクターを買い込む。Dsc01509

 安いので、知らずにリバースSMAのケーブルを買って、刺さらなくてあせって、あわてて変換プラグを注文したり、FケーブルからSMAの変換プラグ(厳密にはインピーダンスが合わないので国産にはない)を発注したり、はては、同軸ケーブルの圧着工具(安い中国製)まで注文したりして、もう錯乱状態である。

 そのうち、ダイレクトサンプリングではなく、スーパーヘテロダイン方式(だと思う)のHFコンバーターがアマゾンに出ているのを発見した。これなら長波帯までカバーしているので受信ができるかもしれない。

 完成品は少し高いが(¥6800)、キットでも頒布されていることがわかった(半額)。少し迷ったが、高周波基板の勉強のつもりでキットで手に入れることにした。日本の個人の方が開発されているというのも心強い。

 メールで申し込んだら、すぐ返事があり、お金を振り込むと3日も経たないうちに家に届いた。アマゾンに頼んだ諸々の部品や工具はまだ届いていないというのに、驚くべき速さだ。

 封筒を開けてみて、予想通りの細かい部品に、いささかたじろぎ、これまでのようにすぐ制作にとりかかる余裕が生まれてこない。そこで、このブログの記事を出した後、一度気分を落ち着かせてから着手することにする。

| | コメント (0) | トラックバック (0)

2018年10月 2日 (火)

ESP8266のJJY電波時計のスケッチ公開

 これまで作っていたESP8266を使ったJJY電波リピーターと電波時計受信機のうち、受信機の方が何とか安定して時刻を知らせるようになった。とりあえずこちらを先に、ソースコードと回路図を公開することにする。

 電波時計は長時間動かすものだから、本来はESP8266のような大喰いのWiFiモジュールで作るのは筋違いだが、WiFi環境が必要な電波リピーターにESP8266を使ったので、開発環境を共通にしたかったのと、気楽に始めたのにうまく動かず、止めるに止められなくなったせいでもある。

 前にも書いたが、JJYの受信パルスは1秒に一回の超低速通信(1bps)である。クロック80MHzのESP8266なら沢山のロジックを組み込んで、相当インテリジェントなエラー修正が出来ると意気込んで始めたのだが、これがとんでもなく難関で、ほんの少しでもノイズが出るような受信環境では全く正しくデコードができない。Dsc01493

 リピーターのコイルから数十センチも離すと、受信モジュールが正規の福島(おおたかどやま)からの電波も受け始めて干渉を起こすらしく、年月日などに目茶目茶な数字を出し始めて全く話にならない。出来ないとなると、むらむらと反抗心が出てきて何とかしてやろうと、いつもの悪い癖が出る。

 この3週間、半分泣きべそをかきながら、意地になってデバッグに熱中していた。その結果、何とか市販の電波時計程度の信頼性のある時計になったので、Arduinoのスケッチソースリストと、回路図を公開することにする。どれだけ迷走したか。詳しくはこれ以降の作業記録で。

やっぱり日本の女子は強い(9/9/2018)

 その前に、ちょっと電子工作とは違う話題を少し。プロテニスの話である。手が届きそうで届かなかったテニス4大大会(グランドスラム)の日本人の優勝は、天真爛漫なあの「大坂なおみ」があっさり全米で達成してしまった。

 4年前の錦織の全米準優勝も驚いたが、今度はもっとすごい。勝ち方が豪快である。彼女のことだったら、本当のグランドスラム(1年間に、全米、全豪、全仏、全英すべてに優勝)をやってのけるかもしれない。

 錦織のときにも同じことを書いたが、野球はアメリカと日本でしか騒がないのに対し、テニスは全世界が対象である。しかも、サッカーは庶民が中心だが、テニスはセレブのスポーツファンを巻き込む。ウィンブルドンの観客の平均年収は2000万円という話を聞いたこともある。世界に与える影響は、野球の比ではない。

 ちょっと気になるのが、彼女の出自の問題だ。今、世界は、水面下では色々あっても建前上は人種の区別をしないことに極度に神経質になっている。それなのに日本のマスコミが彼女の帰国会見で、実に無神経な質問をしたのには驚いた(あなたは何人?)。

 こういう話は、すぐに世界中にひろまる(マスコミの浅はかさは世界共通)。世界から日本が馬鹿にされるのは身から出た錆でしようがないけれど、大坂選手が日本に愛想をつかしてアメリカ国籍に換わってしまわないことを祈るばかりである。Dsc01485

I2C液晶を2台とも4本の結線だけで動かす(9/10/2018)
 電子工作の話に戻ろう。Aitendoで入手した2台のI2C液晶の始末である。このうち一台は電源を逆接してしまい、破損が心配されたが、幸運にも壊れていなかった。バックライト付きだから今のところACアダプターのついた電波時計に使う予定である。

 インターフェースはI2Cだが、液晶の本体は12本のピンが出ており、内部で使うコンデンサーや、I2C/SPIの識別をする制御線などの追加の配線が必要である。工作のついでに、2つの液晶がいつでも使えるようチップコンデンサーなどを使って整備しておくことにした。

 このままでは、ブレッドボードに配線を加える必要があり、特にひとつは動作テストを急いだため、ジャンパーコードやコンデンサーを空中でハンダ付けする完全なバラック状態になっている。なお、このコンデンサーは省略することが出来ない。はずすと簡単に動かなくなる。Dsc01494

 久しぶりに秋月にでかけ(このところはAitendoが多かった)、1μFのチップセラコンを入手した。相変わらず、ここはいつも賑わっている。帰って早速チップセラコン(2012)の空中配線を楽しむ。I2Cだけだとピンヘッダーは4 本ですむのだが、4本だとやや強度に不安が出る。

 課題が残った。液晶とバックライトの発光面との接着である。両面テープで貼るのは手軽で良いが、蛍光面にテープが見えて見栄えが悪い。それと時計の表示装置にするのならバックライトなしの液晶の方が消費電力が少なくて済む。また買いに行かなければ。

JJY電波リピーターのバグを解消した(9/14/2018)

 電波時計の前にやることが残っている。JJY電波リピーターの不具合である。リピーターはNTPから時刻を貰っているので正確無比のはずなのだが、長時間動かすと、何故か分単位で遅れることがある。

 NTPや、WiFiが原因であることは考えにくいので、すべてこちらが悪いのだが、原因が思い当たらない。NTPの正時(0秒)を待ってパルスシーケンスを始めるのだが、パルスシーケンスは59 秒間の最後がポジションマーカーパルスで0.2秒、この残りの0.8秒で次のNTP時刻が変わるのを待って同期させるロジックである。

 たとえ遅れたとしても、秒単位の遅れのはずなのにパルスシーケンスは、1分以上の時刻遅れを表示する。しかも、エラーは長時間のときにたまに発生するだけで、普通は全く問題ない。

 長時間(2時間以上)コンソールにメッセージを記録し続けてやっと原因がわかった。何と本来は59.2秒で終わるはずなのに、59秒より早く送り終えるところが見つかった。ロジックは59とか0などの絶対値ではなく、NTPで得た秒データの変化をトリガーにしている。

 このままだと59秒の時に、そのときの「分」データを得てそれを新しい時刻の「分」にするので結果として1分遅れることになる。なぜ早くなるのかの原因は全く見当がつかない。どうしようか。

 迷ったけれど、対症療法で、NTPの秒データが00になるまでべたに待つことにした。CPUは回りっぱなしで精神衛生上あまり愉快ではないが背に腹は代えられない。幸いなことにこの修正後は全く問題なく動いている。

焦電型人感センサーを更新(9/15/2018)
  さらに道草を食っている。階段の照明の入り切りに使っていた焦電型人感センサーが何となく感度が悪くなり、階段の前でパントマイムをやらされることが増えてきた(動きがあると反応する)。

 人感センサーについては、実は、一年前、秋月で偶然これを見つけて買ってある。以前、千石で買おうと思った赤外線センサーNapionの改良形のようだ、値段は半分以下の¥480だった。テストしただけで、部品箱に眠っている。Dsc01496

 階段の上での身振り手振りが、段々煩わしくなったきたので、これに更新することにした。久しぶりの汎用基板でのハンダ付けが楽しい。UEW線を持ち出さずに、すべてのパーツのリード線を活用し配線する。

 作り替えたのはセンサー部だけで、電源の入り切りなどの制御ユニットはこれまでのものを流用する。何事もなく完成した。ちょっと物足らなかったが、出来上がりには満足である。今度のセンサーはやたら高感度で、階段に近づくだけで反応する。

 考えてみたら、最初のセンサーを作ったのは、もう6年も前のことだった。まあ、6年も使ったのだがら減価償却はできているだろう。Dsc01495

エラー回復ロジックをつけた電波時計ロジックの工夫(9/20/2018)
 電波時計の開発にぐずぐずしているのは理由がある。今回のプロジェクトの本筋は、JJY電波リピーターで、電波時計は単なるテスト環境のつもりだった。我が家にある市販の電波時計は、腕時計、目覚まし、掛け時計とあらゆる種類が整い、今さら電波時計を自作する必要性はない。

 それなのに電波時計の方に夢中になっているのは一種の逃避である。電波リピーターはハードの要素が大きい。しかもハードと言っても電波という高周波の世界である。所長の高周波の知識は、60年近く昔の少年時代から一歩も進んでいない。大学時代の知識は超絶的な理論ベースで、実践には見事なほど役に立たない(自分であきれるばかり)。

 何となくハードを避け、自分の得意なソフトにこだわりたくなる潜在意識があるようだ。電波時計のハードは、いじるところがないが(受信モジュールには手が出せない)、ソフトには改良の大きな余地があるような期待がある。

 JJYの標準電波のロジックは簡単な構造である。一秒に一回の立ち上がりパルスのタイミングが、その時の正確な秒を示し、そのあとのパルス幅でコードが決定する(0.5秒が1、0.8秒が0)。10秒に一回、マーカーパルス(0.2秒)が出て、次のフレームへ進む。

 さらに1分に一回、このマーカーパルスが冒頭に出て正時(0秒)を定義する。6つのフレームは、時分、月日、西暦、曜日などに分かれ、時分については第4フレームにパリティビットがついて誤り検知が出来るようになっている。Dsc01488

 この連続マーカーパルスさえ正しく検知できれば、データが途中乱れても相当なエラー回復が可能である。いわゆるフレーム同期というやつで、月日、西暦などのデータは数多く重複するので、フレーム単位にデータを貯めておけば、大きな狂いを防ぐことも出来る。

 こうしたことを頭に入れて、オシロでJJY受信モジュールの出力波形をつぶさに観察すると、ノイズはパルスの立ち上がりや立下りでチャタリング風に出る短いパルスが多く、パルスの真ん中を分断することは少ない。チャタリング抑止のロジックを入れればだいぶエラーを減らせそうだ。

 さらに、パルス巾の認定にも工夫をした。参考にさせて貰ったソースリストでは、パルス巾の有効範囲がひどく狭く、それ以外をエラーにしている。このため、ちょっとノイズが出始めると、エラービットばかりになって話にならない。

 考えてみれば、パルス巾は、0.2、0.5、0.8秒以外はないので(15分、45分に出るモールス信号列を除けば)、中間値をすべてエラーにするのはおかしい。少々強引だが、ここではエラーの範囲をなくし、適当な区切りですべてを何らかの有効データとみなして後で調整することにした。

思いつくエラー修正を片っ端から盛り込むも迷走(9/23/2018)
 さらに、次のようなフレーム単位の修正ロジックを入れて、実験を開始した。測定では正式のJJY標準電波は、PCルームではノイズだらけで全くデコード不能になるので、主にNTPを使った電波リピーターの出力をソースにする。それでも正規のJJY電波と干渉するせいか少し離すとノイズが出る。

●正時(0秒)と正時の間のフレーム数が、6つ以外はエラーとしこの間のデータは捨てる
●マーカーとマーカーの間のパルス数が規定以外(9ビット)ではエラーとし、このフレームのデータを無効とする。

 しかし、この程度では少し波形がノイズっぽくなってくると、データが全く有効ではなくなり、表示は目茶目茶になる。特に致命的なのが、正時を判断する連続ポジションマーカーの取りこぼしで、たとえそのあとのフレームを正しく受信していても、西暦などもとんでもない数字に変わってしまう。

そこでさらに、
●キャッシュにデータを蓄えておいて、1分間正しくデータ(6フレーム、9ビット)を拾ったとき  にのみ始めて、そのときの時分、年月日を表示する。
●10秒ごとのフレーム単位に 有効/無効フラグを設定し、年月日のデータは使いまわしをする。

 などのデータ保全を狙った改善を行った。だいぶん精度が高くなった半面、正しい時刻に戻るのに時間がかかるうえ、時々、月日や西暦が出鱈目になる不具合は改善されない。エラーの程度を定量的に把握することが難しく何が効果があるのかわからないので泥沼状態である。

 試しに正式なJJYの受信できる場所で動かしてみる。電波が安定しているときは良いが、やっぱり、少しノイズが出始めてエラーになったら全くダメダメで、なかなか回復しない。既に正しく受信できているはずの西暦や、月日も目茶目茶になってしまう。

別の不具合が落着。やっと日にち違いの原因が究明された(9/25/2018)
 それでも受信エラーが僅かなうちは修正が効き、リピーターに近づけている限り、正しい時刻を表示するようになってきた。JJY標準電波の方も場所を選べば安定して受信できる。しかし、受信機にはまだもうひとつ大きな問題が残っている。 Dsc01482

 実際のJJY標準電波を受信すると受信機の日付が一日先になるのだ。リピーターから受信していれば合っているのに、標準で一日ずれるのは、要するにリピーターが出すパルスシーケンスがずれていることを示すが、リピーターが表示している日付とパルスシーケンスは全く同じリソースからとっており、ここで誤りが起きるのは不可思議としか言いようがない。

 例の辻褄合わせで直した「とがめ」が出ている感じがする。今度も閏年を疑って再度テストステートメントを挿入して確かめるが、問題はない。そこで少しづつ、printfを入れ込んで犯人を追跡していった。その結果、電波時計の方が帳尻合わせをしているようで、犯人はリピーター臭い。

 ビットの送り込みや、UNIX経過秒なども調べるが問題なし。さんざん調べまわった結果、やっと原因がわかった。NTPの通算日データが0オリジンだったというオチである(JJYは1オリジン)。NTPでは通算日と月日の両方のデータが独立して取れるようになっており、これが発見を遅らせた。

 奥歯に物がはさまったように気になっていたJJYリピーターと電波時計の一日の狂いが遂に究明された。最近は物忘れが激しく、つい10年も経たない職場の同僚の名前を思い出せなくて数日悩むことがあるが、それに匹敵する「もやもや感」が解消され、気分が良い。

もう一歩踏み込んでエラー補正。何とか及第か(9/27/2018)
 市販の電波時計が受信できるところでは、殆どエラーなしに受信ができるようになってきた。ただ、一分ごととフレーム毎のエラーチェックを厳密にしているはずなのに、まだ年月日が、ときどきインチキになるときがある。

 これがなぜ起きるのか、調べているうちに、この現象は偶にではなくしょっちゅう起こりうる現象であることがわかった。つまり誤ったポジションマーカーを途中で拾うと本来入るべきフレームではないところに別のデータが送り込まれる。

 当然、そのフレームはエラーになるが、次のフレームは0から始まるのでビット数が合ってそのフレームが有効になってしまうのだ。このフレームは所定の場所ではないので、データはでたらめになるというわけである。これを避けるには、正時から積算しているシステム内の秒数とフレーム数の照合をする必要がある。

 生の秒数と、フレーム番号を比較するのは少し抵抗があったのだが、この秒数は、連続したポジションマーカーの時、0に戻しているので信頼性は高い。やってみると、この効果は絶大で、年月日はまずどんなことがあっても変化しなくなった。やっと電波時計らしくなった。

 さらに、一度、正確に手に入れたデータはUNIX経過秒の形で残し、1分後のデータに不安がある時は、これを更新せず、前の経過秒に秒数を足す形で表示を守る。この秒数は、ArduinoIDEのタイムスタンプmillis()まで動員した。ちょっと禁じ手に近い技だが、理論上は、とりあえずは電波が受信できない状態でも時間は守れる。

JJY電波時計のESP8266用スケッチソースコードの公開(9/30/2018)
 居間に持ち込んでフィールドテストを続ける。本来のJJY電波の到達するところは殆どエラーなしで順調である。たまに数分遅れる時があるが、すぐに復帰する。これを避けるのは、電波時計の中にRTC(リアルタイマークロック)を入れれば完全に解決するが、元はと言えば、電波リピーターのテスト環境のつもりで開発してきたので、そこまでやる気はない。

 消費電流の多いESP8266とバックライト付きの液晶を使った電波時計だが、何かの参考になるかと思い。ここに回路図と一緒にスケッチソースコードを公開することにする。参考にさせていただいたソースコードはここである。復号のところは大いに参考にさせてもらった。あらためて御礼申し上げたい。Jjyclock

 回路について少し説明をしておくと、JJY受信モジュールはAitendoの古い40/60Khz受信モジュールで、もう販売しておらず、今は新しい受信モジュールになっているが、所定のところにつなげば(GPIOへは新しいモジュールのTNというネガティブ信号入力)、問題なく動くと思われる。

 受信モジュールとESP8266のGPIOとの間にトランジスター(2SA1015)が入っているが、これは、受信モジュールが負論理(0がデータ受信)の逆転をするためと、受信モジュールと直接ESP8266とつないだときの高周波ノイズを避けるためである(以前オシロにプローブをあてると誤動作した)。

 液晶の表示は、上段が年月日と時分、下段は、秒数とフレームの処理推移のプログレッシブバーもどき、さらに頭に正式なJJYからではなく推定の時には「X」マークが出る。

以下に、zipファイルでかためたスケッチソースファイルのフォルダーと、BSCH3Vの回路図ファイルを置きます。

「JJYradioClock.zip」をダウンロード


| | コメント (0) | トラックバック (0)

2018年9月 9日 (日)

ESP8266による電波時計リピーターの完成

 今年の8月は例年にない猛暑だった。観測史上初めてという猛暑日(35度以上)数の記録が各地で相次いだ。ここ東京も例外ではなく、月後半には猛烈な雷の夕立が連続したりして、何か日本が亜熱帯気候地帯に変わってしまったかのような不気味さを覚える。

 電子工作は相変わらずである。暑さでアスレチックジムのヨガを欠席することが増えて工作の時間はむしろ増えているのだが(何しろ老人は不要不急の外出はするなと脅されている)、集中が効かなくなっている。昔に比べれば間違いなく進行の速度が落ちている。

 ESP8266を使いまわして、AitendoのJJY標準電波受信モジュールを使った自作電波時計や、オシレーターチップ(LTC1799)を使ってJJY電波にNTP時刻を載せるリピーターを大分前から作っているのだが、どうも埒(らち)が明かない。記事の更新間隔もまた一か月を越えてしまった。

 まあそれでも、あれこれいじくりまわして、やっとそれらしい動きを双方がするようになってきたので、ここらでご報告することにする。このままずるずるブログの更新が出来ないでいると、電子工作に対する意欲そのものを失う心配があるからだ。

自前で作ったUNIX経過秒のお粗末(8/9/2018) 

 前回記事のコメント通り、自前のUNIX経過秒とNTP時刻との1日のずれは、Shuji009さんの指摘であっさり解決した。何と閏年の計算違い(バグとも言う)というお粗末である。Ws000008

 以前、JSTの指定をしたのにNTPからの時刻に9時間の差が出てしまい、面倒なので9時間足して辻褄あわせをしたことがあるが、今度も自前で計算した日時(1970年1月1日からの経過秒)とNTPの経過秒が合わない。時差のずれではないので少し気になったが、これも無精して1日足して帳尻を合わせた。

 それが記事をアップしたあと、Shuji009さんからコメントが入った。2000年は400で割り切れる年で閏年ですけど大丈夫ですかというご指摘である。閏年のロジックは、「4で割り切れる年は閏年。ただし、100で割り切れる時は平年。さらに400で割り切れると再び閏年」という結構ややこしいロジックである。

 はいはい、ちゃんと400で割り切れるロジックも入っていますよと、最初は自信満々だったが、何か胸騒ぎがした。待てよ、400で割り切れるときに、平年に戻していないかい。言葉にすると400で割り切れる時は、100でも割り切れるので、そんなことは考えられないが...

 あわててソースリストを出して見る。「がーん」、400で割り切れるときは平年にしている!こいつだ。せっかく400年のロジックを入れたのに逆さまでは何にもならない。これでは一日遅れるのは当然だ。 

 自作の閏年を決める関数、leapyear( )のロジックを修正する。勿論、簡単に解決した(添付画面は修正済み)。考えてみたら、UNIXの経過秒は、1970/1/1からの計算だから、時差とは関係ない。プログラムミスの疑いを持つべきだった。こういうことにあとから気づくのだから、どうしようもない。

パラレルキャラクタLCDもお粗末なトラブル(8/15/2018)
 気になっていたパラレルのキャラクターLCDが動くようになった。Arduinoの標準ライブラリ(LiguidCrystal.h)では動かず、ESP8266ではだめなのかも、と放置してあったのだが、その後ウェブ上で新しいライブラリーが見つかったのでこれを試すことにした。

 LCDのテストに使っていたNTP時刻をUARTに出力するプログラムに、前のライブラリを退避させて新しく組み込む。しかし、こいつも最初は動かなかった。このパラレルLCDは当初3.3V仕様であることを忘れ、不要なバックライトの負電圧回路を組み込んだり、バックライト配線が別にあることに気づくのが遅れたり散々苦労しているのだが、今度も駄目かとがっくり落ち込む。

 こういうときは腰を据えて、落ち着くことだ。基本に立ち返ってハードウエアの配線からチェックしなおした。おやあ、コントラストを決める端子が未配線だけれど、これに電圧をかけなくても良いの?いや、そりゃ駄目でしょう。

 そうか、こいつが原因に違いない。あわててブレークアウト基板に、半固定抵抗器を実装し、ピンに接続する。電源を入れ起動しなおすと見事LCD画面に「Hello ARDUINO」の初期表示がでた。やれやれ長かったな。コントラストの配線をしていないのでコントラスト最小のまま表示が見えていなかっただけというお粗末である。

Dsc01476

 もしかすると、元の(ArduinoIDEに最初から組み込まれている)LiguidCrystal.hでも動いていたのかも知れない。しかし、他にやらねばならないことが多いので、そこまでさかのぼって確認する気力がもう生まれてこない。さきに進もう。

 NTPの時刻を表示して暫く遊ぶ。書式付きの関数printfがlcdでも動くことを発見した(lcd.printf)。数字の表示位置が固定されるので「:」や「/」がずれず、格段に見やすくなる。ただし、ESP8266では多数の変数を表示しようとすると暴走する(3つまでOKであることは確認)。

較正の仕方がわかってエンコーダーの開発は順調に進む(8/22/2018)

 猛暑が続く。しかし地下室は温度が安定して涼しく、極楽だ。それなのに電子工作の進捗ははかばかしくない。今度のプロジェクトの最終目標は、ESP8266でNTP時刻を使いJJY電波をエンコードするリピーターである。Dsc01478 そのモニター用のこれもESP8266で作ったJJY電波時計の調整に手間取っている。このプログラムはUARTに盛大なテストメッセージが出るので、テストをやりやすくするため、時刻表示をLCDに出そうとしたのだが、LCDそのものの表示がなかなかうまくいかない。

 一方、オシレーターチップLTC1799を使ったリピーターの電波の強度は、もう十分だ。受信機と発信機双方をデスク上に置いた(1m以内)状態で、電波をON/OFFすると電波時計のモニターLEDがはっきり同期して点滅するのを確認している。ただ、送信を止めて暫くすると、受信機は本来のJJY電波を受信するのか乱れたパルスが出始める。

 受信モジュールにはAGC(自動感度制御)がついているようだ。ある程度以上の強度の電波をうけていれば微弱なJJY電波の方はマスクされるが、それが止まると弱い電波でも受信し始める感じだ。実用性を高めるためには、このあたりをもう少し調べておきたい。

 しかし、現在の電波時計プログラムの出力は、PCのコンソールしかなく移動できる場所が限られる。PCからは結構ノイズが出るのでここからも少し離したい。キャラクタLCDに手を付けたのも移動性を高めるためだった。

 とはいえ、こればっかりやっていても先に進まない。そこで、これまで放置していたリピーターのJJY電波エンコーダーの開発に注力することにした。干渉の方はこれが出来てからでも良い。リピーターの実装は、前回記事で紹介した通り、Pythonで書いたソースコードが手本にある。

 あらためてこれを読み込む。おお、これはとても自然なコーディングで好感が持てる。難しいことは全くやっていない、仕様通り、ポジションマーカーパルスで隔てられた10秒単位のデータを送り込んでいる。NTPとの較正のやり方がよくわからなかったのだが、ここでは平明な方法で実装している。

 あらかじめ、NTPで時刻を得たところをマイクロセカンドオーダーのタイムスタンプで記録し、次の正時(0秒)に見合う待ち時間を計算し、その待ち時間を使ってJJYのエンコードシーケンスの関数をスタートさせるというものだ。これで正確な同期が実現する。これはわかりやすい。

それらしい電波時計のシーケンスが出た(8/24/2018)

 同期ロジックがわかったので、急に先が拓けた気分になった。俄然コーディングする意欲が起きて移植に力が入る。Pythonから、Arduinoの言語(C++が基本)に戻すのは、そう難しくない。

 ただ、Pythonは構造化ブロックの識別がインデント(字下げ)だけなので、間違いやすいだろう。書くのは楽だがデバッグに苦労しそうだ(何を隠そう所長はbegin endで構造に厳密なpascal派だ)。

 しばらくコーディングに専念した。なにしろパルス一回当たりで数百msは待つロジックなので、少々のデバッグステートメントは入れ放題である。ArduinoのUART(Serial.printなど)はバッファリングしているらしく、一行出力では数十μsしか遅れないし、lcdでも2行出力が3msしかかからない。

 デバッグのためテンコ盛りにテストメッセージを入れたスケッチが完成した。まだLTC1799オシレーターの出力制御まで配線が済んでいないが、LEDをつけて動きを確かめる。電波時計のLEDブリンクは、このところいやというほどテストしているので、大体の動きは見ているだけでわかる。Dsc01481

 よーし、それらしい点滅が始まった。念のためオシロにもいれて動きを確認する。良いようだ。ブレッドボード上のLTC1799発生回路のロジックICに結線して実際の電波を発射する。ここまで来ると先を急ぎたくなる。ミニブレッドボード2つに組んだJJY電波時計を近くに寄せ、受信テストを開始する。

 良いぞ。電波時計のLEDがLTC1799オシレーターのLEDに合わせて点滅を始めた。問題ない。本来のJJY側の干渉もなく、順調に受信しているようだ。UARTコンソールをもう一台増設し、電波時計側のモニターも開始する。

 いやあ、長いことかかったが、電波時計側も、ノーエラーで時刻を表示し始めた。しかし、少し電波が弱い。1mも離すと、エラーが出始め、大元のJJY電波と干渉が始まってエラーの嵐になる。まだ安定したとは言えない。

 そうは言っても、とにかく目的は果たした。嬉しい。しばらく表示させて様子を見る。うーむ、まだ時間は正確ではないようだ。まず、分の更新が遅れている。それと1分遅い(これは想定済み)。それと、NTPとの同期ではどうも一秒程度遅いようだ。

秒の精度にこだわってみる(8/26/2018)

 ArduinoのNTPはSNTPがベースで、一時間に1回くらいの較正が入っているようである。クライアントのレベル(つまりWiFiの先のESP8266)でも、公式サイトによると0.5ms程度の誤差に止まるという話だが、どうもそれほど正確ではない(このほかここも参照)。

 自宅にある既存の電波時計を持ち込んだり、有線電話の117で調べるが、1秒近くずれている。もっとも市販の2万円以上するNTPリピーターでも誤差は1秒というのが多い。相手が人間である限り、こだわってみても余り意味はないのだが気にはなる。

 同期の方法を、待ち時間方式ではなく、一分単位に最終59秒まで来たら、NTPの時刻取得コマンド now = time(NULL); を10ms間隔で発行し、秒が59から00になるタイミングを待って同期させる方法に換えてみた。これでかなり正確になるはずだが、余り前と変わらない。それでも、分の更新の遅れの修正や(これは単なるコーディングミス)、コンソール出力メッセージの調整(多すぎるデバッグ用メッセージ削除)を進め、段々電波時計らしくなってきた。Dsc01482

 開発が一段落してきたので、昨日、これも久しぶりに御徒町のAitendoを訪れ、ESP8266の予備とアダプター基板、ついでにI2C液晶を数点買い込んだ。土曜ということもあって、いつもながら混雑している。ここのLCDのラインナップはすさまじく多い。I2C液晶のコントローラーチップは殆どが例のST7032のようで、制御ソフトについて神経を遣わないで済むのは嬉しい(Arduinoのライブラリで動く)。

AitendoのI2C液晶ディスプレイで遊ぶ、いや遊ばれている(8/28/2018)

 リピーターや受信機は、ブレッドボードでは動いたが、実装をどうするかで迷っている。すぐにはうまい方法が見当たらないので、とりあえずは、Aitendoで買い込んだI2C液晶のLCDの動作試験をすることにした。ところが、これがまた曲者だったのである。

 沢山のAitendoの液晶群の中から、あらかじめウェブで一番スマートそうな奴を選んで買ったのが、このLCDである。しかし買って帰って良く見ると、ピン幅が、1.8ミリという変態的な間隔で、しかもバックライトの端子が横に不作法に突き出ている。Ws000009

 例のピッチ変換テクニックの荒業を駆使してブレッドボードに装着する。空中配線は予想通りうまく行った。10ピンのハンダ付けはとても頑丈で、ハンダは僅かづつしか付いていないが12本もつけば少々力を入れてもビクともしない。ブレッドボードの抜き差しも全く心配ない。

 このLCDはI2CとSPI両方のインターフェースをサポートしているので、ジャンパー配線や、パスコンを2つも接続しなければならないが、とりあえずはピンだけにしてブレッドボードでこのあたりは配線する。Dsc01483  最終的には、受信機も、リピーターもLCD表示でスタンドアローン化したい。ただ。時計なので電池駆動は無理でACアダプターということになりそうだ。

ST7032のライブラリーが入らない(9/4/2018)
 I2C液晶に対するArduinoの対応は、多種多様な方法があるようで、ウェブ上には、沢山の方法、ライブラリーの紹介があり、何を選んでよいか迷ってしまう。このあたりは、ここのサイトが詳しく紹介されているのでお勧めである。

 今度の液晶のコントローラチップST7032のライブラリーだけでもいくつかあるが、当研究所では、一番簡単そうな、このサイトのライブラリーを選ばせてもらった。

 おや、こちらは標準のライブラリではなく、新たなライブラリST7032.hが必要なようだ。言われるままにリソースをダウンロードし、所定のディレクトリに収容してビルドに入った。しかし「ST7032.hなんて知らないよ」という素っ気ないエラーが返ってきた。

 ふーむ、ウェブの指定では、とってきたリソース(フォルダー)のリネームをすることになっている。そういえば、ArduinoIDEは立ち上げ直していない。一旦、終了して立ち上げ直す。よーし、ビルドのメッセージが先に進んだ。コンパイルしているようだ。

 いやだめだ。ソースリストの中でコンパイルエラーが出ている。ST7032.cppの中でavr/pgmspace.hがないと怒られる。なにー、avrじゃないとだめなのか。手近なところにavrのライブラリーはない。それにここはESP8266だ。暗雲が垂れ込める。

 困ったときのGoogle先生である。ウェブを漁ると出てきた出てきた。いつものエラーメッセージぶっこみ方式である。「ST7032.h avr/pgmspace.h no such file」で一発で、このGitHubがヒットした。ST7032.cppを探し出し、この通りにしたらコンパイルが通った。

 ソフトはOKである。意気揚々と、配線をしてテストを開始する。店が紹介するデータシートは中国語だが、不思議に殆どが理解可能だ。I2Cなので、ピン12本のうち必要なのは4本だけで(Vcc GND SCL SDA)配線が楽だ。それと、I2C/SPIの識別する制御ピンなどを適当につないで実験を開始した。

この液晶もコントラスト不足で最後までてこずる(9/5/2018)
 これがまた全く動かない。ライブラリーを使うのは楽で良いけれど、ソフトが悪いのかハードが悪いのか、このままでは全く見当がつかない。こういうときは処置なしである。そのうち、不具合箇所の切り分けに良い方法を見つけた。

 I2C液晶は、ストロベリーリナックスの昔のPCMプレーヤーに使った現物がブレッドボード上に残っている。これを流用して動かしてみればどちらが悪いかすぐわかる。早速試す。え、いやこれも動かない。何だと―、ソフトが悪いのか。

 ウェブ上で紹介されているソースリストをもう一度良く見る(これしか頼りにならない)。コンストラクターでlcdオブジェクトを作って(ST7032 lcd;など)、次のステップがいきなりlcd.clear()などのステートメントだ。これ何か足らないような。例えば、lcd.begin(16,2)なんて初期化はしないで良いのかい。半信半疑だったが、だめもとである。付け加えてみる。

 おーし、ストロベリーリナックスの超小型LCDにメッセージが出た。初期化ステートメントが抜けていただけだ。ソフトは問題ない。しかし新しいLCDでは動かない。何回目かのピン配置の確認をしているとき、とんでもないことを見つけて顔が青ざめた。

 何とピン番号のスタートが逆順だ。ICなどのストレートのピン番号は原則は反時計回りで下の段なら左側からだが、このLCDのピン番号は右から始まっている!データシートには明記されているので間違えたこちらが悪いが、それにしても。

 さらにVccとグランドの端子位置を確かめて愕然とする。電源2本は中間地点で対称についている。つまり逆にすると電源は逆差しになってしまう。いやあ、壊したか。折角、ピンヘッダーを芸術的に接続したというのに。逆接の時間は通算でも1分ないと思うが壊れた可能性は高い。

 泣く泣く、もう一台のLCDの実装にとりかかる。最初のLCDのピッチ変換のピンヘッダーをとりはずし、2台めにハンダ付けする。さあどうだ。あれー、まだ表示されない。しかし、表面がうっすら変わった感じがする。前の経験が生きている。

 今度もコントラストか。 I2C液晶のコントラストはソフトである。コードには中間の30にしてある。ストロベリーリナックスのLCDはこれで良かった。もしかしたら、こいつを変えると良いのかもしれない。コントラストを50にして再ビルドする。やったー、文字が出た。

Dsc01485  悔しいので、速攻でコンソールからのキー入力でコントラストを上下するロジックを組み込む。このLCDは0~63までのうち、50以上でないと鮮明に出ないことが分かった。

 壊れたと思った最初のLCDの方である。ピッチ変換ピンヘッダーをもう一度付け直すのは大変なのでジャンパーコードを無理やりハンダ付けし、付属のパスコンなどは空中配線でつけてテストした。良かった、壊れていなかった。正常に表示が出た。やれやれこれでブログに書くことができる。
(スケッチのコードはまだ未完成なので、次回以降に公開したいと思います。)

| | コメント (0) | トラックバック (0)

2018年8月 3日 (金)

また脱線。今度は電波時計リピーターでさらに迷走

 記事の間隔が今回も一か月を越えた。このあいだ電子工作をやっていなかったわけではない。毎日、PCルームにこもって、ごそごそやっているのだが、何しろやることが発散し、次々に興味が他に移るので記事にまとめるところまでいかない。

 赤外線リモコンウェブサーバーのプロジェクトはソースコードの公開で一段落し、そのあと、表面実装基板にするためkiCADの基板設計に取り組んでいた。しかしこれが、ひょんなことで別のテーマに興味が移った。電波時計のリピーターである。

 さらに、そのリピーターも部品の動作テストをやっただけで、関心は電波時計の制作の方に移り、それも、さらに別の枝葉の分野に手を伸ばして収拾がつかなくなってしまった。このあたりで戦線をまとめ直さないと、いつまでたっても記事が書けなくなる。

久しぶりのkiCADは進みが遅い(6/25/2018)
  ミニブレッドボードに作ったリチウム電池駆動の携帯型赤外線リモコンウェブサーバーは、とりあえず目的の機能を満足し(2階のエアコン、温風ヒーターの制御)、実用化の目途が立った。ただハードはまだ実験用のブレッドボード上だし、ソフト面でも残された課題が多い。

Dsc01462  まずは、覚えたリモコン命令を記録していくEEPROMエリアの拡張である。まともにやるなら、例のSPIFFSのファイルシステムにすれば良いのだけれど、そこまで大がかりにする気にはなれない。そう、ニーズがはっきりしていないので運用シナリオが描けないである。

 具体的な仕様が決まらない。今のところ考えているのが寝室の冷暖房の精密温度制御だが、どうしてもやりたいわけでもない(時限タイマーを使えばそれなりに間に合う)。もうひとつが洗面所の温風ヒーターだが、これは防水仕様(湯舟から動かしたい)をまとめる方が先で、ソフト面でこれ以上つけたすところはない。

 あらゆる機器開発でうまくいかない原因の最大級は、この「仕様が明確でない」ということである。実際の使い方が決まらなければ、結局、どれくらいの大きさのEEPROMが必要なのかも定まらない。困ったものだ。

 というので、赤外線サーバーのソフト開発はこのあたりにし、ハードの実装基板を作ることにした。もともとの制作動機は、この基板を表面実装で自前のCNCマシンで作ることだったのだ。何のことはない、本道に戻ったことになる。

 久しぶりにkiCADを立ち上げて表面実装基板の設計に入る。回路図エディターで、ミニブレッドボードに作ったESP8266のウェブサーバーの回路図を改めて書き下ろす。情けないことにkiCADの使い方をあらかたみな忘れている。 

 ESP8266のフットプリントデータをネットで探す。これが意外と見つからない。みんなブレークアウト基板で済ませているようだ。あちこち探し回ってやっと見つかった。しかし、これが回路図エディターに取り出すことができない。 Irserver

 原因はフットプリントデータと、ESP8266の回路図データは別物であることに暫く気が付かずに迷走していただけだった。やれやれ、年は取りたくないものである。見つけたフットプリントは、新しいバージョンのkiCADが必要だというので、kiCADのインストールをしなおす。殆ど泥縄状態である。

 ところが新バージョン(4.0.7)のkiCADは、変な所でループが始まって先に進まない。部品の諸元を変更するたびに、フリーズする。全く止まるわけではなく暫くすると復帰するが、ちょっとした定数の変更のたびに長時間待たされるのはたまらない。

 バージョンを元にもどそうかと考え始めたころ、解決法が見つかった。アノテーションと言ってパーツの番号付けをするルーチンがおかしくなっているようだ。強制的なアノテーションを部品の諸元を替えるたびに行うと、短時間で処理が終わることが分かった。なんやかんやで、回路図をつくるところでなかなか先に進まない。

電波時計リピーターは市販化されていて結構良い値段がする(7/8/2018)
 そんなころ、ESP8266の予備品を見つけるため部品箱を整理していたら、LCT1799というチップが目に入った。これは、去年の4月に面白がって買ったオシレーターチップで、これでNTP(Network Time Protocol)から得た正確な時刻を元に自前のJJYの標準電波(40kHz)を出して、電波時計を動かそうというものである。

 ウェブを検索してみて驚いた。NTPを使った電波時計リピーターは、最近は事務所などで沢山の掛け時計の時刻合わせに使われるらしく、市販品が多数出ており、しかも結構な価格で売り出されている。安いものでも2万円はする。

 電波時計のJJY信号は、もう6年も前、Aitendoで実際に受信モジュールを買ってきてテストしたことがある。値段を聞いて俄然、制作意欲が盛り上がった。赤外線サーバーそっちのけで、受信モジュールの実験の準備を始める。リピーターの実験には、こういう受信モジュールが必須だからだ。

 電波時計リピーターの方は、参考にさせて貰ったサイトではRaspberryPiでPythonを使ったソースコードが公開されている。電波時計は処理単位が一秒ごと、つまり1 bpsなので、NTPさえ動けば何もRaspiまで担ぎ出すことはない。ESP8266で十分動くはずだ。 

 NTPではなく、既存のJJYからのリピーターなら、当研究所の名前になっている8ビットのAVRでも十分可能だ。電子工作では著名なChaNさんは、10年以上も前にTiny2313クラスで電波時計を作られている。

 少し迷ったが、現在一番環境が揃っていて開発に慣れているESP8266で作ることにした。まずは正しい電波をデコードできる時計を完成させ、次に電波発生装置に行くことにする。アンテナが課題だ。

6年ぶりの電波時計モジュールは動いた(7/11/2018)
 部品箱から取り出したAitendoの受信モジュールは、ミニブレッドボードに刺さったままで、モニターのときPCなどからのノイズを避けるフォトカップラーもついていた。早速、通電して動作を確認する。電源を入れてすぐは動かないが、暫く(十数秒)すると、福島からの電波を受信し、LEDが点滅し始めた。

Dsc01475  うむ、動いているようだ。新しいオシロをつないでパルスを見る。前のオシロはじかに接続すると、ノイズが出て受信不能になったのだが、どうだろう。まずは直接つないでみる。おお、今度のオシロは直結でも全く問題なくJJYのパルスが表示された。

 ちゃんとした高周波ノイズ漏れ対策が出来ているのだろう。たいしたものだ。ただ、地下室の奥にあるPCのそばではやはりノイズが多い。オシロと受信モジュールをひとまとめにして、PCのそばから、地下室のオープンスペース(保安上の吹き抜け)へ持ち込むとJJY時報パルスは完全になる。

 蛍光灯の近くは全然だめだが、PC電源の影響は殆どないようだ。受信機はオシロがなくても、電波を受けるとLEDが点くようになっているので、部屋のあちこちに移動して受信状況を調べる。以前はPCの横でも正常に受信できたのだが、長波は季節的なものがあるのかもしれない。Dsc01468

 とはいえ、オシロで見ているとパルスが全くでたらめになることは少なく、パルスの立ち上がりと立下りでチャタリングが起きている程度である。頑張れば、ここでもデコードすることが出来るかもしれない。このあたりの受信強度でも時刻を得られることを今回の開発目標とする。

 ESP8266でのJJYデコードのソースコードはウェブにいくつかころがっていた。Arduino IDEを使ったそのうちの一つが簡単そうなので、これを利用させてもらうことにする。参考にさせて貰ったソースのブログは以下の通り。    
https://ameblo.jp/amano-jacky-nochio/entry-11824498383.html

 ソースが見つかったので安心して、その前に、まだやっていない40kHzの発振機能を確かめておくことにした。

電波送信は昔の真空管のC級増幅を真似る(7/14/2018)
 ブレッドボードにLTC1799モジュールを差し込み、ウェブで紹介された通りの回路を組み立てる。このサイトの記事は外見だけでアンテナの諸元の詳しい説明がない。これは電波法のからみで具体的な情報を避けておられると勝手に判断し、自分なりのアンテナを用意して長波の電波発振のテストを始めることにした。

 動作そのものは、モジュールなので電源を入れると簡単に動いた。オシロで波形を確かめる。矩形波の綺麗なパルスが出ているのを確認した。既に組み上げたJJY受信モジュールを近づけてみる。アンテナは適当なリード線(電話ケーブル4~5m)である。Dsc01473

 JJYのデコードは出来ていないが、受信だけならLEDの点滅でわかる。ブレッドボードの近くに受信モジュールを近づけると、LEDが点いたままになり、受信していることは明らかだ。少し離すと切れる。1m程度が限界だ。リード線はつないでも離しても変わらない。ほっておくとJJYからの電波を受信し始める。

 サイトの記事の外見はフェライトコアにUEW線を巻き付けたいわゆるバーアンテナである。長波なんて波長は何キロメートルもあるので、どんなアンテナで送信するのが良いか全くわからない。

 それでも、ふと思い出して部品箱を漁る。みつけたみつけた。以前Aitendoで買ったシングルバンド用の受信モジュールのアンテナ部分が見つかった。買ったころ断線していて苦労したやつである。

Dsc01466  これは受信用だが、送信アンテナの代わりになるはずだ。単にオシレーターの出力につなぐのではなく、サイトの記事通り、FET(2SJ377)をつけ、20Ω程度の抵抗負荷をつけてみた。

 少し電波は強くなったようだが、事務所内の電波掛け時計を一斉に同期させるほどの強さではない。よく考えてみたら、電源電圧が変わっていないのだから、FETで増幅してみても同じ負荷なら出力は増えない理屈だ。

 念のため、オシロで波形を見てみる。おやあ、鋭い下向けのパルス(数十V以上)が出ている。ふーむ。これはDC-DCコンバーターのスイッチング回路そのままだ。これをならせば正弦波になるのか。

 ここで閃いた。昔というより大昔、アマチュア無線の真似事でやった共振回路である。適当なコンデンサーをインダクタンス(バーアンテナ)に並列にして同調回路にする。真空管時代のC級増幅のタンク回路である。

 おお、正弦波まではいかないがそれらしい矩形波がでた。喜び勇んでJJY受信機の感度を確かめる。うん少しは良くなったようだ。LTC1799そのものよりは少し距離が伸びた。しかし、3mから4m少々までが受信限度である。

 バーアンテナの威力がわかったものの、すこし離れるとJJY電波の方が強くなる。福島からの電波に負けるのだから、LTC1799から発射されている電波強度は、いわゆる電波法に云う免許なしに出して良い微弱電波であることは間違いない。

 大きな部屋の多くの電波掛け時計を制御することは出来ないので実用品にはならないが、アマチュアで近くの電波時計を動かすには十分だろう。免許の必要もない(大体、許可されるはずもないが)

ESP8266によるNTPの受信は簡単に動いた(7/16/2018)
 JJY受信の目途はたったし(ソースを入手しただけだが)、電波の送信もOKになった。残りは、NTPの受信である。以前、RaspberryPiでNTPを受信したことがあるが、ESP8266では初めてである。またネットのお世話になる。

 調べると、簡単に、サンプルソースが見つかった。早速新規プロジェクトを立ち上げ、コピペ一発でソースをぶちこむ。幸いビルドはNO ERRORである。動かしてみるとシリアルコンソール上に、正確な年月日時分秒が出た。

Jjydecoder  同期をどうするかという問題は残るが、これで必要なリソースはすべて揃ったことになる。ただし正確さについては、NTPを使っている以上、余り厳密な追及は出来ない。

JJY受信機の表示に3.3V用のキャラクターLCDを使おうとして失敗(7/18/2018)
 JJYの受信デコードのプログラムのソフト開発に戻る。ネットから頂いたJJYデコードプログラムは、ESP8266ではなく、普通のAVRを使ったArduinoがベースで、表示装置はキャラクターLCDである。

 こちらのLCDの手持ちは、大分前に買ってあった定番中の定番、秋月の反転色の2行16文字のキャラクターLCD(SC1602BBWB-XA-LB-G)である。普通、こういうLCDは3.3Vでは動かない。ウェブを見ていても、ESP8266のLCDは最近はやりのI2Cインターフェースの3.3V版が殆どで、こうしたパラレルLCDの使用例は極めて少ない。 

 そのうち、5VのLCDを、LCDクロックのパルスを利用した負電圧発生回路を付加して使っているページを見つけて制作心が刺激され、これを入れてみることにした。久しぶりのハンダ付けを楽しむ。ところが、これが全く動かない。バックライトすらつかない。

 キャラクターLCDを使うのは、考えてみると久しぶりで、下手をするとガイガーカウンター以来で7年は経っている。色々調べるうち、お粗末な間違いというか勘違いをいくつも発見した。まず、このパラレルLCDはもともとが3.3V用で、負電圧回路は全く必要がなかった。お馬鹿な話である。

 さらに、バックライトの電源は別から供給しなければならないということにだいぶあとで気が付いた。いやいや、情けないの一言である。

Dsc01467  バックライトに電源を入れて、LCDはそれらしい表示が出てきたが、表示ドットはいわゆる豆腐状態で全く反応が見られない。オシロで制御信号を見ると、細かいパルスが出ているが、LCDのパルスにしては、細すぎる(数μs)。どうも、このソースはArduino用で、ESP8266では動かないようだ。

 ライブラリーのLiquidCrystal.hのソースを見た限りでは、クロック依存のところはなさそうなのだが、ここにあまりかかずらっているのも意味がなさそうな感じがしてきた。時計を作ることが最終目的ではない。潔くLCDをあきらめてシリアルコンソールにすることにする。

LCDを諦めて、シリアルコンソールに出力を換える(7/20/2018)
 猛暑である。週2回行っているヨガとプールのアスレチックジムもお休みである。LCDは開発の必須条件ではない。本筋でないところであちこち道草を食ってきたので、何が何だかわからなくなってきた。とりあえずはソースコードのLCD表示部分をシリアルコンソールに切り替える作業に没頭する。

 これは手数がかかっただけで、何も問題はなかった。シリアルコンソールに、それらしいメッセージが次々に表示された。しかし、エラーが多い。いつまでたっても正しいJJY時刻を手に入れることは出来なさそうである。

 このソースは、チャタリングなどの抑止機能は全くついていない。パルスを単純に受け入れて、パルス幅、0.2sec(マーカーパルス)、0.5sec(論理1)、0.8sec(論理0)をスペックどおり(±5ms)調べて、範囲を超えるところはすべてエラーにしている。

 これでは、オシロでみたような立ち上がりや立下りでチャタリングを起こせば、全くデコードできなくなる。そこで、スイッチ制御でおなじみのチャタリング防止ロジックを入れる。立ち上がりと立下りの双方に数十msの待ち時間を入れ、安定したパルスになるようにする。

 しかし、PC横の受信モジュールではどうやっても安定した時刻を得ることができない。前と違って、まれに(10回に一回くらいか)、時刻が出る時もあるが、これでは実用性にかける。

Dsc01471  こうなると意地である。受信機を地上近くのオープンスペースの階段に置いて、PCのところまで電話ケーブル(10m)で送電線のように引き回してテストを続ける。フォトカプラーを経由しているせいか、少々引き回しても結果が乱れることは全くなかった。

 地上近くでは、殆どエラーは起きない。この状態でやっとJJY電波のデコードに成功した。大体、JJY時計の開発が目的ではなく、リピーターが目的なのに全く無駄なことをやっていると思うが、やりだしてことを途中で止めることが出来ない性格である。自分でもあきれてしまう。

一分の遅れをどうするかでまた脱線(7/28/2018)
 実は、これも、NTPを使ったリピーターには関係のない話なのだが、ここでまた3日近く浪費した。それは、JJY標準電波の表示時間が、最初に正時パルスが来て、そのあとおよそ1分かけてその時刻(時分年月日)を伝えるパルスが送られてくるというロジックの問題である。

 つまり、パルスを受け取って、その時刻が何時何分の正時だったかがわかるのは、およそ1分後になるということだ。リピーターなら、NTPと同期させて正時パルスを伝え、その時刻データを送って行けばよい。しかし、時計の場合は、1分先の時刻を用意しないと、正確な時刻にならなくなる。

 これも、お馬鹿な話だが、リピーターでも、この1分先の時刻を用意しなければならないと思い、一生懸命ロジックを考えてテストしていた。たかが一分と侮ってはいけない。単に分を足すだけでは問題は解決しない。下手をすれば年をまたがるときは、すべての表示を変える必要がある。

 色々考えたが、UNIX経過時間を使うのが一番合理的だと判断した。UNIXは1970年1月1日午前0時から始めた秒数をタイマーとして持っている。これに関しては沢山の標準関数が用意されているのでこれを応用する。

 やりかたはこうだ。JJYから得られた時分年月日を一旦、この経過秒に変換し、これに60を足して、また時分年月日に戻せば良い理屈である。

 早速、先ほどのNTPプログラムにこのロジックを組み込んでテストする。ところがこれが一筋縄では行かなかったのである。

 悪戦苦闘、3日間。やっと解決した。しかし、この経過時間があちこちで違うので参った。つまり、JST(日本標準時)の扱い方が、サイトやNTPのオプションで違うのか、どうしても数が合わない。最終的な解決は、この前もやったと思うが、現場合わせである。つまり、NTPをJSTオプションで使ったタイマー値は、地道に計算した1970/1/1の経過秒より一日増やせば一致することがわかった。

 いかにも釈然としない解決だが、とりあえずは、一分遅らせることに成功である。やれやれ。このあたりでブログの原稿をまとめよう。

| | コメント (4) | トラックバック (0)

より以前の記事一覧