電源コントローラ2号機のソース・回路図公開と電波時計ユニット
MACアドレスとIPアドレスを設定できるようにする(7/25/2012)
娘の結婚祝いにするつもりのLANによるAC電源コントローラーの2号機は、特に大きな問題もなく動いた。ただ、ソフトウエアはまだ前の1号機のままである。1号機ではMACアドレスとIPアドレスがソースコードにハードコーディングされており、これを自由に変更できるように改修しなければならない。
LANにおけるMACアドレスは本来ソフトウエアで自由に換えるものではなく、ちゃんとした認定機関(IEEE)から、ユニークなアドレスを入手して固定しておくのが筋だ。一号機では昔使っていたPCのNIC基板に保存されていたEEPROMからMACアドレスを取り出し、それを使っている。
しかし、最近は、MACアドレスについては、こうしたユニーク性はあまり問題にならないようだ。調べてみたらルーターですらMACアドレスを自由に換えられる。Window2000/XPでも自分のLANカードのMACアドレスを勝手に変更できる。保守上の要請らしいが、重複しても、そう大きな問題でなくなったのかもしれない。
今度のコントローラーは、外に出て行くインターフェースでもなく、商用にするわけでもなく、自宅LANで使うだけなので、特にこだわることはない。ドイツのサイトは、自分のところのWebサイトの頭文字を使ってMACアドレスにしている。
とはいえ、2号機は別のネットワークで動くことを想定しているので、コンパイルしなおさないとMACアドレスや、IPアドレスを変えることが出来ないのは不便だ。特にIPアドレスの変更は必須である。(なお、会社や学校など自分の管理下にないネットワークで、このコントローラーを勝手に使うことは厳禁である。どんなことが起きても当研究所は責任をとらないので、そのつもりで)
ソースプログラムを改修し始めた。アドレスの変更は、UARTのコンソールを介して行うことにしている。両方のアドレスとも一旦決めたらめったに変更することはないので、当初つけるつもりだったUSB-TTLアダプターははずし、3ピンのソケットピンで接続した。
1号機にもUARTはついているが、デバッグ用でたいした機能は入っていない。そこへ、以前作ったXbeeのリモートAPIモニターにある文字入力からバイナリーに変換するコードを追加する。フラッシュサイズは、まだ8KB程度で、全く問題ない。CPUチップは、Mega328を使う必要もない。Mega168でも十分余裕がある。
UART入力データのサイズを勘違いして、最初、頻々と暴走し、頭を抱えていたが、それを直したら、あっさりデータ入力ができるようになった。このあたりは、printfで過程をすべて把握できるのでデバッグは簡単だ。いざとなったら盛大にデータを吐き出して調べれば良い。時間要素がないので気が楽である。
MACアドレスは、16進表示、IPアドレスは、10進表示で入力できるようにする。いちおう16進文字以外のキャラクターや、IPアドレスでは255以上の数字はエラーとしてはねるようにする。入力したデータは、EEPROMに入れ、一旦入れたデータは電源を切っても保存されるようにした。
回路図とソースコードを公開する。仕様の解説もしておく(7/29/2012)
ソースコードが完成したので、お約束の回路図も公開するため、Bsch3で回路図を描き始めた。描いてみると、けっこう複雑なことをしているなと、ちょっと感心する。ACのモニターTTL出力は、CPUのピン(PB1)に入力としてつながっている(実装もした)が、結局、ソースではこれを使っていないことがわかった(つまり、この線はなくても動く)。
回路図の中で、もうひとつ気になるところは、LANの終端抵抗の47Ωである。ここは、ネットワークのインピーダンス50Ωに揃えるべきで、47Ωでは規格の1%以内を越える。もしかすると反射が起きて、他のネットワーク(同一ハブ内だけだと思うが)に影響が出るかもしれない(回路図では50にしてある)。ただ、50Ωちょうどという抵抗値は、標準系列にはないので注意が必要である(せめてE24系列の51Ω)。
この電源コントローラーの仕様と操作法を、ひとわたり説明して、これから同じものを作られる方の参考にしてもらおうと思う。
仕様と機能:
- ネットワーク..... LAN 10Base/T(IEEE802.3)
- 制御する回路..... AC100V 15A 1回路 on/off
- コントローラー電源... AC入力電源から供給される
- AC通電モニター...... 通電のときパネル上の赤LEDが点灯
- MAC、IPアドレス.... 付属UARTより設定
- 対応プロトコル.... ICMP(pingコマンド可能)、TCP/IP、UDP、HTTP
- 手動制御 .... 可能(付属タクトスイッチによる)
- パスワード制御..... URLにパスワードを含める(但し、プレーンテキスト)
操作法:
・所定のパスワードつきURLにHTMLブラウザーでアクセ スすると 入出力設定画面が表示される。(例http://192.168.0.24/gataro)
・パスワードが違ったり入っていないと、エラーメッセージが出る。
・現在の電源状況はrefresh statusアイコンをクリックするとON/OFF表示が変わる。
・ Switch onまたはSwitch offを押すことで、遠隔地のAC電源を入り切りできる。
・ パネル上面のタクトスイッチを押すことで、手動でも入り切りできる。
・MACアドレス、IPアドレスの入力は、TTL-UARTにより(ビットレート38.4kbps 8 bitノンパリティ、1ストップビット フロー制御なし)、以下のコマンド入力で行う。
>ma↓ (↓はリターンキー)
*****MAC address as follows******
Enter MAC adr in HEX, if change
11 22 33 44 55 66 (16進文字) (現在のMACアドレス)
$_ (_はカーソル)
$のところへ設定したいMACアドレスをブランクを空けて入力する
$AA BB CC DD EE FF↓
MAC adr will be...AA BB CC DD EE FF
Are you sure?(Y or y) -> がでて、Yかyを入力すると
Changed...
Effective after reset
>
ma↓で、$プロンプトに、何も入力せず↓だけキーインすると、表示だけされて>のプロンプトに戻る。
0~9、A(a)~F(f)以外の文字を入れるとエラーとなり最初から入れなおす。
Yやyでない文字、単なるリターンキーでは入力したデータは反映されない。
IPアドレスは、16進ではなく、10進1~3桁の数字をブランクをあけて入れる。
>ip↓ (↓はリターンキー)
*****IP address as follows******
Enter IP adr in DEC, if change
192.168.000.025
$_
となるので、
$192 168 0 23↓ (000は0で良い。左側の0は不要。ピリオドは入れない)
により、IPアドレスが設定できる。あとは、maのときと同じ。
数字以外、255を超えるアドレスはエラーではじかれる。
大事なことを書くのを忘れていた。この設定は、動作中には変更されない。必ず一旦電源を切ってリセットしないと有効にならない。また、変更したデータは電源を切っても保存される。
またパスワードは、ソースコードからしか変更は出来ない(gataro固定)。変更には再コンパイルが必要である(メインルーチンeth_rem_dev.cのステートメント73 行付近の文字列を変更する)。
ここに、例によってAVRStudioのプロジェクトになったソース一式をzipファイルの形で置きます。回路図ファイルも中に入っています。AVRStudioでそのまま開いてコンパイル可能です。
eNastyさんの指摘により回路図に誤りがあることがわかりました。本文とダウンロードファイル群の図形ファイルを修正してあります(8/13/2012 14:00)。それ以前にダウンロードされた方はご注意下さい。
Aitendoの電波時計のユニットの東日本版への改造失敗(7/11/2012)
実は、コントローラー2号機の開発をしながら、別の電子工作で遊んでいた。Aitendoの電波時計ユニットである。ある日何気なく開いたAitendoのウェブサイトのトップに電波時計モジュールが出ており、いくつかのサイト(ここや、ここ)がこれを話題にしているのを見つけた。
電波時計のユニットは、いくら安くても¥1500近くするが、このユニットは¥750という安さである。それに小さくて工作心を刺激する。ムーブメントもついていないし今のところ何に使えるか見当もつかないが、何となく欲しくなると気持ちを抑えることができなくなった。
7月のはじめ、仕事の帰り、いつもは事務所から秋葉原には徒歩(20分)で行くのだが、直営店までは遠いので珍しく日本橋から末広町まで地下鉄を利用して、店に立ち寄った。このモジュールは西日本用の60Khzにしか対応しないシングルバンド用ということは既に聞いていたので、その足で、秋月に戻り東日本用の40Khzのクリスタルも手に入れた。
帰ってすぐクリスタルを換装したが、いくつかのサイトの報告どおり、こちらでもやっぱり動かなかった。スペックを良く読むと、40.003Khzの石を用意しろとある。秋月の石は、40Khzちょうどで、こんな半端な周波数の石は特注でもしない限り手に入らない。
ただ、3Hzの違いで受信できなくなるというのも納得しにくい。元の60Khzだって、スペックによれば60Khz用は、60.003Khzを指定しているのに、ユニットについている石は、60Khzちょっきりの刻印のついた石だ。
60Khzに戻して、自作のファンクションジェネレーター(秋月キット利用)で60Khzを供給して受信を確認しようとしたが、全く音沙汰がない。受信が出来ているようには見えない。出力パルスにトランジスターを追加してLEDを点けているのだが、点かない。どうも良くわからない。情報が少ないのでこれ以上の追求はあきらめた。
電波時計ユニットのバーアンテナコイルが断線していた!(7/25/2012)
久しぶりの研修講師の仕事を前にして準備の調べ物をしているときだ。先だってのAitendo電波時計ユニットを40Khz用にする新しい情報が手に入った。バーアンテナの同調周波数が合っていなかったようだ。JJYシミュレーターだが40Khz受信に成功したという。
成功した人は、何と、このサイトにもよくコメントをよせてくれる、そら。さんだ。何々、フランクリン発振回路でバーアンテナの共振周波数を前もって調整せよとある。仕事先でこの情報を見つけ、帰宅後、すぐ工作ルームにこもり実験を開始した。
フランクリン発振回路というのは、こういうときの工作の定番と見えて、沢山の回路例がある。インバーター74HC04を使って、ミニブレッドボードにさくっと作る。こういうときのブレッドボードは実に便利だ。
簡単に出来たので、まず手持ちのインダクタンスやコンデンサーを入れて、オシロで波形を見る。面白い。この回路には上限のコンデンサー容量があると見えて、一定の容量以上のCではうまく発振できないが、色々な部品を入れて、暫くアナログ回路を楽しむ。ブレッドボードでは結構ノイズというか寄生発振が(リンギング)多くて、綺麗な方形波にはならないことを学ぶ。
いよいよ、問題の電波時計ユニットの同調周波数の測定である。バーアンテナを、チップコンデンサーごと基板から外し、汎用基板の切れ端にアンテナを固定し、それぞれハンダ付けする。これで色々なコンデンサーを試すことが出来る。何しろバーアンテナのリード線は細くて頼りない。下手な取り扱いをして断線させては元も子もない(まあ¥750だけど)。
ところが、これが全く発振しない。ふーむ、どうしてだろう。まさかとは思ったが、テスターでコイルの導通を確認する。何と何と、どうやっても無限大だ。始めリード線の接触不良を疑ったが、問題ない。えー、断線?そんなー。細いリード線だが、見たところ、どこにも断線らしいところは見当たらない。
しかし、断線していることは間違いなさそうだ。2本に撚り合わさっているリード線を少しづつ慎重にはがしていく。2本のリード線はロウ付けされてまとまっている。2本のまま、さらにコイルからロウ付けをはがし、リード線を出していった。そのうち2本が1本づつに分かれた。
すると、1本のリード線がコイルの巻き始めの方へ斜めに走ったあと、そこでポロリと線がはずれた。ここだ!断線部分が判明した。巻き始めと巻き終わりの線を2本にまとめるもっと前の部分で見事に切れていた。うはあ、最初から切れていたのだ。
怒ってみても仕方がない。¥750のジャンク品だ。取り替える足代だけでそれくらいかかる。第一、問題のコイルをハンダ付けで本体からはずしてしまっている。交換は無理だ。切れたところは、巻き線の最初の部分で、断線部分はコイルの付け根のところだ。簡単な修復はできない。
しかし、こういうときに猛然と何とかしてやろうと熱中するのが所長の特徴である。難しそうであればあるほど血が騒ぐ。例のLED照明付きヘッドルーペを頭につけて、ピンセットで切れたところを探る。
下手をすると、もっと根元で切ってさらに修復不能になるので慎重にロウをピンセットでかきとる。よーし、良いぞ。だんだんリード線が顔を出してきた。3ミリほど出たところで掘り出しを中止。
UEW線なのでハンダごてで被覆をはがし、元の断線したリード線とハンダ付けする。ふむ、上手くいったようだ。少々引っ張ったくらいでははずれない。
カプトンテープで固定し、指定の定数のコンデンサーをパラって、もういちどフランクリン発振回路でテストした。よし、45Khzを指した。少し高いが、実際にテストしてみよう。
Aitendoの電波時計ユニットが40KhzのJJYを受信した(7/26/2012)
工作室は地下なので電波の届かないところだ。それに我家の窓ガラスは家内が見かけにつられて導入を強く主張した網入りガラスになっている(ガラスが落ちないので、反って泥棒に割られ易いという)。こいつは生意気に電波の通りが結構悪い。
我家の電波掛け時計は皮肉なことに、1Fの奥まっている場所では電波が届かず、地下室の窓際に置くと動く(地下室と地上をつなぐオープンスペースが外窓に近いからか)という奇妙な電波環境である。携帯電話などは、地下では部屋の中の極く一部(ほぼ1m四方)だけが通話可能というオカルトのような電界強度分布である。
ブレッドボードに入れた電波時計ユニットをオープンスペースになっているサンルームに持ち込む。電波時計ユニットのTTL出力は、トランジスタを使ってLEDが付くようになっている。おおお、何か反応したぞ。動いた。40KhzのJJYを受信した。1秒ごとのパルスでLEDが点滅する。良いぞ、良いぞ。JJYからの時刻パルスに間違いない。
そら。さんのブログにとりあえずお礼のコメントを出し、この改造の端緒となった、「天ノ岩戸」さんサイトにも報告する。このサイトはまだ受信に成功していない(こちらは接触不良だったようだ)。断線はあきらかに買ったときからのもので、もしかしたら同じ原因かもしれない。
JJYシミュレーターでパルスを受信。ロジアナで波形を拾う(7/28/2012)
そら。さんの助言で、PCのJJYシミュレーターでも動かしてみた。ちゃんとパルスを拾っているようだ。ロジアナを取り出して、極端に遅いサンプリング(1Khz)でパルスをとる。電源を入れた最初はパルスを拾わない。正常に拾うまで少し時間がかかる。今までの電子工作と桁違いに遅い反応なので気長に測定する必要がある。
何回かトライして、やっとそれらしいパルス列がとれた。NICTのサイトのデータチャートを参考に、ロジックを考える。そら。さんがデコードのソフトを公開されているようだが、これはなるべく見ないことにする。
へそ曲がりで、人のソースを敬遠しているわけではない。やせ我慢でもない。こういうチャートを見て、どうやってデコードするかを考えるのが面白いので、人のソースを見て作っても何も面白くないからだ。出題されたパズルを解答から見るようなものである。先を急いでいるわけでもない。
チャートをつらつら調べる。あ、あ、これは簡単だ。マーカーパルスという200msの短いパルスに注目すればよい。毎分の正時(0秒)と59秒のマーカーパルスの連続がキーだ。こいつが来るのを最大1分間待てば、そのあとは、そこからチャートどおりデコードしていける。1分間で、そのときの年月日時分が読み取れる理屈だ。データは不連続のように見えたが、BCD(バイナリー10進)だった。 (NICTパルス詳細)
そのうち、自分がLCメーターを持っていることを思い出した。ストロベリーリナックスのキットでDC-DCコンバーターのインダクタンス測定のため買ったのを忘れていた。迂闊な話である。今さらという感じもするが、バーアンテナや最初のチップコンの値を測定してみた。ところがLCの定数値はみんな想定どおりの数値になっていない(受信は出来ているのに)。
フランクリン発振回路の周波数も、オシロの計測値は少しづつ理論値からずれている。なぜ、定数値にこだわるかと言えば、正しく同調させて感度を上げておきたいからである。当研究所の入手したユニットのバーアンテナのインダクタンスは、771μHで、60Khz用についていたチップコンは5.1nFだった。
Aitendo提供のデータシートはどうも信頼がおけない。既にコンデンサーの値からして違う(2.2nFになっている)。バーアンテナのインダクタンスは、そら。さんが計測したものより、こちらの方が半分近く低い。ロットが違うのかもしれない(データシートには色々なバーアンテナの型番が並んでいる)。
それに元の60KhzでのLCの値から計算される共振周波数は80Khzで60Khzからかなり離れている。フランクリン発振回路で発振させても同じような周波数になる。ただ、フランクリン回路はブレッドボード上にあるせいか変動が激しく、オシロでの計測では安定して一定の周波数にはならない。
40Khz用につけた0.01μFのコンデンサーは、測ってみたら0.0125μFもあり、これまでのものを足すと、0.0176μF、同調周波数はそれでも43.2Khzくらいでまだ高い(フランクリンでは45khz)。どうもよくわからない。
それはともかく、この電波時計ユニットが東日本用の40Khzでも動くことだけは確認された。デコードの実装は、何に使うかを決めてからとりかかるほうが無駄がないように思う。 デコードのロジックだけを考えておくことにする(例の擬似コーディングで)。
| 固定リンク
「AVR」カテゴリの記事
- ソフトI2Cはクロックストレッチまで手を出してあえなく沈没(2017.09.02)
- オシロのテストどころかソフト開発で大はまり(2017.07.26)
- 超音波方式の人感センサーI2C化と新しいオシロ(2017.06.29)
- motionの動体検知はRaspi3の電源が安定しない(2017.04.16)
- 赤外線学習リモコンはデータ再現で挫折したまま進まず(2016.07.21)
「電子工作」カテゴリの記事
- 生存証明2(2022.10.19)
- 生存証明(2022.01.23)
- パソコン連動テーブルタップの修理を諦めて自作(2021.02.16)
- 半年ぶりのブログ更新に漕ぎつけた(2019.09.19)
- 研究所活動は停滞したままでCCDカメラ顕微鏡導入など(2019.02.08)
コメント
がた老です。
おっしゃるとおり、ENC28J60依存の回路だと思います。
この石のデータシートには、中点を浮かした回路図が出ており(P7)、
みなそれに忠実に従っているということです。
他のイーサネットインターフェースはだいたい受信側も3.3Vで吊っているみたいですね。
このあいだ作ったLPC2388のPHYチップDP83848の回路図も吊ってありました。
http://www.keil.com/mcb2300/mcb2300-schematics.pdf
投稿: がた老 | 2012年8月14日 (火) 00時02分
ついでにもう一点、疑問がありますので指摘させて戴きます。
それはパルストランス中点の電位扱いです。送信ライン側の中点はDC上Vccで吊っていますが、受信側はオープンのままですが何故でしょう?。確かにENC28J60のデータシートの例もここはオープンになっていますし、がた老さんの元ネタ・ドイツのサイトの例も、またトラ技2006/11月号の記事(http://www.cqpub.co.jp/toragi/download/2006/TR0611C3/TR0611C3.ZIP)も同じです。
一方、Interface誌付録のcoldfire基板(http://www.cqpub.co.jp/interface/download/2008/09/kairozu.pdf)や、とある市販品(http://www.silentsystem.jp/download/OS-1_Sch.pdf
)の回路図では、受信側もVccに吊っています。
この差は、Chip(ENC28J60)に依存するものなのでしょうか?
インピーダンス整合にも関わってきそうに思うのですが。
変に絡んで申し訳ありません。
投稿: eNasty | 2012年8月13日 (月) 21時30分
うはあ、ほんとだ。プラスとマイナスを間違っている。
ご指摘ありがとうございました。直しておきました。
実は、前からVssとVddは良く間違えます(刷り込みミスでしょう)。
又何かあったらお願いします。
>R5が2.7KΩということはRev.Bをお使いでしょうか?
はい、4年も前に買った石ですから、B4です。
データシートを見ていたらB5以降は2.3KΩのようですね。
最新バージョンはB7で止まっているようです。
まだ沢山、エラータが残っています。
投稿: がた老 | 2012年8月13日 (月) 14時20分
細かいことで恐縮ですが、公開ファイル2012eth_rem_dev.zipに内包の回路図において、ENC28J60のVss/Vddの接続先が逆の様です。取り敢えずご指摘まで。
PS.
R5が2.7KΩということはRev.Bをお使いでしょうか?
投稿: eNasty | 2012年8月13日 (月) 09時24分
私も職場で見つけ驚いているところです。
40Khzのにはなぜか大きなフィルムコンデンサーが
ついてますね。どうしてチップコンにしなかったのだろう。
買うかといえば、うーむ、微妙ですね。今のところ、
何に使うか決まっていないし。2つもあってもねえ。
投稿: がた老 | 2012年8月 6日 (月) 20時37分
http://www.aitendo.com/product/5029
http://www.aitendo.com/product/5030
40kHz専用と40/60kHz切り替え版が出ました。(^_^;)
投稿: そら。 | 2012年8月 6日 (月) 15時24分
迅速フォローありがとうございます。
>詳細設定で、「Network Address」または、「ローカル管理される
>アドレス」を選んで、値を入れると変わっちまうようです。
なろほど...確かに出来ますね。驚きです。
我が家の無線LAN-APでは、プリンタだけはWPAが使えないのでMACアドレスフィルタリングで済ましてきましたが、MS-Windowsで、こう簡単にMAC詐称できてはバックドアになりますね。対策を考えねば...
情報、ありがとうございました。
投稿: eNasty | 2012年8月 3日 (金) 10時47分
そら。さん、今晩は。お世話になりました。
>フェライトコアに周波数特性があるので、
そうか、周波数でインダクタンスが変わるのか。
それじゃあ、あまり意味がありませんね。
eNastyさん、
>良ければ後学の為にご教示戴ければ
私も、今度調べて始めて知りました。
「MACアドレスの変更 Windows」で検索すると、やりかたは
いくらでも出てきます。ディバイスマネージャーのネットワークアダプタの
詳細設定で、「Network Address」または、「ローカル管理される
アドレス」を選んで、値を入れると変わっちまうようです。
何か時代が換わったのですかね。昔はうるさかったけれど。
投稿: がた老 | 2012年8月 3日 (金) 00時30分
今晩は。一寸質問です。
Home-useのBroadbandルータはISPがそのMACアドレスを認証(と言ってよいのか?ですが)に使っていることが多く、機器の交換時に認証が通らなくなるのを回避するために、MACアドレス詐称機能が一般的になっているのですが、
>Window2000/XPでも自分のLANカードのMACアドレスを勝手に変更できる。
というのは本当でしょうか?良ければ後学の為にご教示戴ければ幸いです。(BSD系ではifconfigコマンドでできるOSもありますが)
尤も、MACアドレスはルータを超えたネットワーク間では重複しても問題はないので、これさえ意識すれば実害はありませんが。
投稿: eNasty | 2012年8月 2日 (木) 22時55分
追伸です。
もしかしてインダクタンスが計算値と異なるのはLCメーターの測定周波数のせいですかね。
写真の通りだと、179kHzでインダクタンスを測定した訳ですよね。
http://mpl.jp/lc/taiyo_yuden_coil.html
上記のサイトによると、フェライトコアに周波数特性があるので、実際に使用する周波数で測定した方が良いようです。
投稿: そら。 | 2012年8月 2日 (木) 18時27分
どうもです。
電波時計モジュールは動作したようで良かったです。
それにしてもバーアンテナの線が断線とは酷い話ですね。
幸いうちのバーアンテナは切れていませんでしたが。
さて、LCメータでのバーアンテナのインダクタンス測定ですが、測定値が怪しい気がします。
私のブログにも書きましたが、電波時計モジュールに元から付いているコンデンサの容量は計算値ですが、0.0053uFだと思われます。
これはコンデンサの容量はLCメーターでの測定とほぼ一致しますね。
と言うことは、インダクタンスの測定値がおかしいと考えるのが妥当ではないでしょうか。
投稿: そら。 | 2012年8月 2日 (木) 18時13分