2020年5月19日火曜日

古い時計を直してみた

友人より実家で稼働している古い時計が壊れて動かなくなったと連絡があり、久々に修理してみました。

たいそう立派な木枠に収められた古いSEIKOの時計です。
年代物なのでプラスティックの劣化は想定しないといけませんね。電動ドライバーなんて厳禁です。
ゆっくり加減を見ながら少しづつ木枠から外します。
その後、留め具が折れないよう慎重に裏のギアボックスカバーを外します。
おお~案の定アルカリ電池の液もれですね。白い結晶が詰まっています。
今までいろいろ修理してきましたが、この結晶の多さはダントツです!
どうやったらここまで貯まるんだ??もしかして電池入れっぱなしで縦にでも置いたか??

この時代の時計はコイルで磁界を発生させ、中にある磁石のコマを回る方式が主流でした。(原理はこちら
この頃の時計は幼少期に一度、田舎の時計を勝手に分解して再起不能にした経験から構造が分かっています(汗
30年くらい前の記憶によれば、この縦に刺さっている基板は金属板(電極)に刺さっているだけなのでスポッと抜けるはず!
結晶で固着していましたが、綿棒に洗浄液をしみこませたもので電極に固まっている結晶を除去しながらどうにか分離。

たしかこの時代のものは電極も外れたはず・・・
っとプラスティックの劣化に気を付けながら外します。
案の定裏側にも結晶がびっしり!!
しかし幸いステンレス製だったので錆びていないです。
流石当時のものはお金がかかっています。今ならメッキが剥げたり錆びてボロボロになっているでしょうね。

漏れた電解液があちこちにしみこんで結晶化しているので歯車も外します。
ただし、中心にある歯車は針につながっていて、これを外すと表側を外さないといけないとか針の位置決めをしないといけないとか色々面倒なのでそのままにしておきます。
ちなみに当時はバラした歯車が戻せなかった記憶・・・

取り外した基板をチェックします。
良いですねぇ~
基板全体が金メッキされていて錆びていません!
今なら銅パターンなんで腐食して断線しまくってますね。
もしかして当時は電池の液もれも多かったので(乾電池の液漏れ保証が付いたのはわりと最近だった記憶)、考慮済みだったのかもしれませんね。
いずれにせよ昭和初期のものって作りが丁寧なものが多い気はします。
心臓部の駆動コイルは断線していないようです。
接点部分がくすんでいたので、アルコールで拭いておきます。

取り外した歯車や電極も掃除します。
ステンレス版もこの通り奇麗に。

中も掃除したら、サクサク組み立てていきます。
しかしマイナスネジが時代を物語っていますね。
ついでに他もきれいに掃除しておきましょう。大事にしてもらいなよ・・・
余談ですが、昔の時計には用途不明な秒針を止める謎のスイッチがついていました。
この接点をONにすると時計が止まります。

時計を駆動する磁石のコマです。
時計のカチコチ音はこいつが回ることで歯車が回り、秒針が動きます。

歯車を組み立てていきます。同じ過ちを繰り返さぬよう、事前に写真を撮影しておきます。便利になったもんです。


さて、動作試験です。電池を入れて、どうかな??



無事修理完了です。
時計の電池はマンガン!!
これ空も大事にしてもらいなよ。

2020年3月14日土曜日

Raspberry Pi model B+ で家庭内ActiveDirectoryDomainControlerを作る。

気が付いたら1年くらい放置していましたね・・・

今回は大抵の家に転がっている(?)古いラズパイをつかっていわゆる自宅ADを作ってみました。
ラズパイ model B+となると、メモリは512MBだし、ラズパイ3みたいにDockerが動くわけでもない。Etherも100Mbpsだしシングルコアだしで今となってはずいぶん微妙なものになってしまいました。
ちょうど自宅サーバをリプレイスするにあたり、MicroSoft社から無償配布されているHyper-V Server2019を検証するにあたり、非ADな所詮Workstation環境ではFW突破から初手の初期設定がかなり厳しく、それでもなおリモート管理がつながらないというMS仕草に疲れた本質的でない作業が大変だったので、ADを組むことにしました。

一昔前私がSambaを使っていたころ(Ver1.0~2.0)設定は難解だわやれケルベロスだwinbindだとかなりの修行が必要でしたが、今やSamba4は自力でADのプライマリドメインコントローラになれます。インストールも設定も随分簡単になりましたので、これで行けそうな気がします。

  • 対象:Raspberry Pi model B+
  • OS: Raspbian Buster Lite
  1. まずは公式サイトよりイメージをダウンロードし、SDカードに書き込みます。今では各OSごとにSDカードに書き込むツールを公式が配布していますので、それを使っても構いません。
  2. 次に、ラズパイ起動時に自動的にSSH接続できるようにしたいので小細工します。書き込んだSDカードを抜き差しすると、FAT32で初期化された領域が見えます。そこにsshという名前の空のファイルを作成します。するとラズパイ起動時に自動的にSSH接続できるようになります。
  3. 書き込んだSDカードをラズパイにさして起動させます。無事起動しましたら、とりあえず主要なソフトとアップデートのインストールを行い再起動します。
    $ sudo apt-get update sudo apt-get -y upgrade
    $ sudo apt-get dist-upgrade
    $ sudo apt-get install vim git sudo reboot
  4. 再起動後、再度SSHで接続し、TimeZoneやロケールの設定をします。
    $ sudo timedatectl set-timezone Asia/Tokyo
    $ sudo dpkg-reconfigure -f noninteractive tzdata
    $ sudo perl -pe 's/^# (ja_JP.UTF-8 UTF-8)/$1/g' -i /etc/locale.gen
    $ sudo locale-gen sudo update-locale LANG=ja_JP.UTF-8
    $ sudo dpkg-reconfigure -f noninteractive locales
  5. 次にIPアドレスを固定にします。まず設定ファイルを開きます。
    $ sudo vim /etc/dhcpcd.conf
  6. 設定ファイルの中に Example static IP configuration という箇所がコメントされているので、こんな感じでコメントアウトしてIPアドレスを設定します。
    # Example static IP configuration:
    interface eth0
    static ip_address=192.168.0.11/24 #固定したいIPアドレス、サブネット
    #static ip6_address=fd51:42f8:caae:d92e::ff/64
    static routers=192.168.0.1 #デフォルトゲートウエイIP
    static domain_name_servers=192.168.0.1 8.8.8.8 # DNSのIPアドレス
  7. ホスト名を設定します。ここでは、dc.example.comとします。(昔ながらの~.localってのは今はダメらしい)
    $ sudo raspi-config nonint do_hostname dc.example.com
    $ sudo vim /etc/hosts

    192.168.0.11 dc.example.com #追加
    127.0.0.1 dc.example.com #追加
  8. 次にあまり使わないIPv6を無効化します。
    $ sudo bash -c "echo net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf"
  9. ここでいったん再起動して、設定した固定IPで繋がる事、外部へ出れることを確認しておきます。
  10. Samba4をビルドするのに必要なパッケージ群をインストールします。
    $ sudo apt-get -y install acl attr autoconf bison build-essential \ debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \ libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \ libcap-dev libcups2-dev libgnutls28-dev libjson-perl wget \ libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \ libpopt-dev libreadline-dev perl perl-modules pkg-config \ python-all-dev python-dev python-dnspython python-crypto \ xsltproc zlib1g-dev libjansson-dev python3-distutils git \ libpython3-dev liblmdb-dev pkg-config libgnutls28-dev python3-dns python3-dnspython \ libarchive-dev libacl1-dev libldap2-dev libpam0g-dev libgpgme11-dev
  11. Samba4のソースコードをダウンロードします。(最新版はここから探してください)
    $ sudo mkdir /usr/local/src/samba wget https://download.samba.org/pub/samba/stable/samba-4.12.0.tar.gz
    $ sudo tar xvzfp samba-4.12.0.tar.gz -C /usr/local/src/samba
    $ rm samba-4.12.0.tar.gz
  12. コンパイルして、インストールします。なお、ラズパイmodel B+でやると、コンパイルが終わるまでオーバークロックしない場合軽く半日は掛かりました。configureでも30分くらいかかったかな?
    $ cd /usr/local/src/samba/samba-4.12.0
    $ sudo ./configure --with-utmp --with-ads
    $ sudo make && make install
  13. インストールが無事終わったら、ドメインコントローラを構築します。といっても今じゃウイザードがあります。
    $ sudo /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
    詳しい説明は公式ドキュメントを見ていただければと思います。 といっても注意点はDNS backendはデフォルトのSAMBA_INTERNALを選択する。function-levelは(今のところ)2008_R2まで。DNS forwarder IP addressはADのドメイン以外の名前解決できるDNSサーバを指定する。Administratorのパスワードは大文字小文字数字を入れた8文字以上じゃないとダメくらいです。
  14. 設定が出来ましたら、自動生成されたケルベロス認証設定ファイルをコピーします。
    $ sudo cp /usr/local/samba/private/krb5.conf /etc
  15. 公式サイトを参考に、スタートアップスクリプトを作成し登録します。
    $ sudo vi /etc/systemd/system/samba-ad-dc.service
  16. 有効化し再起動時に自動起動するようにします。
    $ sudo systemctl daemon-reload
    $ sudo systemctl enable samba-ad-dc
  17. 再起動する前に、正しく起動するかを確認しておきましょう。
    $ sudo systemctl start samba-ad-dc
    $ sudo systemctl status samba-ad-dc
    これで表示がグリーンでActive: active (runnning)になっていればOKです。
  18. あとはADに所属させたいPCのDNSをラズパイADのIPアドレスに設定して、通常通りADに参加すればOKです。参加の際RPCサーバが起動していないとエラーが出ますが、特に問題なく使えています。ただし、windows10の職場又は学校にアクセスするからAD参加すると最後でエラーになりますので、従来通りシステムのプロパティからADに参加させましょう。
ユーザの追加などはいろんな管理ツールがあるので割愛します。自分が試したところ、ユーザとコンピュータの登録は出来るのですが、グループポリシーの適用とかが上手くいかないようです。あくまで家庭内で数人ユーザ登録する分には使えると思います。 あとラズパイのスペック的にログインに数秒待たされます。

2019年3月4日月曜日

技術書典6に出展します!!

突然ですが、技術書典6に自分が所属している「広島電子工作娯楽部」名義で出店してきます。
人生初の自費出版です!


タイトルは「基板を作ってみよう」という何の捻りもないものです。
想定対象読者は、ブレッドボードや万能基板での作成などを経て、電子工作初心者を脱し、そろそろ基板作成に興味はあるけどなんだか難しそうだなぁ。と二の足を踏んでいる人です。

肝心の本の内容ですが、こんな感じです。
気が付いたら90ページを超えていた内容を今回、技術書典6特装版としてギュギュっと52ページに纏めました。
本書の目的は「とにかく基板を作ってみよう。CADの習得はそれからだ」です。
自分は長年基板を作りたいけど手が出ないよね・・・から、去年人生初の基板作成に踏み切り、こんなにも基板作成するハードルや環境が違っていたのかと衝撃と感動を受けました。
どのくらい衝撃だったかというと、勢い90ページくらいの本を書いてしまう程度には。

ではなぜ自分が本を書いたのか。巷にはトラ技を始めKiCadの入門本が溢れています。解説しているブログもたくさんあります。それでも自分は手を出しませんでした。いや、手を出した先が想像できなかったので手を出せなかったのです。
イベントで聞いてみても、「基板作成なんて工業高校には設備や研究室があるから」「技能があるから」また本業でやられている方も「基板発注ってむっちゃ高いよ。CADだって高いし」と実際に基板作成に手を出している人は少ないことを知りました。
3Dプリンタのような、成果物として見えるものでは無いですし、どちらかというと基板は目的のための手段にすぎず、自作したとしても人目に触れるものでは無いのかもしれません。
また、巷の本などでは、KiCadなどCADの操作に重点を置いているものが多く、基板を作りたいという目的に到達するまでの道のりが長く(まるで天守閣が見えるのにお城の周りをグルグル回らされているような感覚)、その結果基板作成は手間と時間がかかり容易ならざるもの。という印象がついているのではと思いました。(自分がそうでした)

そこで本書では、自分が試行錯誤した経験も含め、「まずは基板を作ってみよう。失敗は手を動かしたものしか得ることは出来ないのだから。」という思いをぶつけました。
ページ数の制約上詳細な手順を省いたり、やむなく削除した内容もあります。(自動配線や貫通ビアなどは省略しました)
しかし、LEDをチカチカさせるだけで、次に役に立たない。は避けたかったので、限りある紙面で説明できる限りのことはしました。そこそこの規模の回路図を描き、基板設計をします。

 手書きと違い、コンピュータ上の作業ですので、いくらでもやり直しができます。
本書では実際にFusionPCBに発注をしています。基板作成の費用がどの程度か参考になると思います。
送料込み$14.58で10枚作れます。つまり1枚200円しない程度で作れるんです。
筆者は初めて作った基板は失敗しました。やはりコンピュータ上と実物は違うものです。
しかしその経験は実際に基板を作成しなければ得られなかったのです。
(このころの顛末については、この辺りに上げています)



最後に:
当日皆様に会えることを楽しみにしています!!
本書が少しでも皆様のチャレンジのきっかけになれば、筆者として幸いです。