『グリム童話/メルヘンの深層』全文
December 14th, 2009『グリム童話/メルヘンの深層』の全文が公開されていたのでメモ
『グリム童話/メルヘンの深層』の全文が公開されていたのでメモ
ちょっと前からグラ付いていた椅子を思い切って捨ててしまった。
買う前に捨ててしまったので、今は、ハイチェストでダイニングテーブルに。
どの椅子を買ったらよいか探しているところに、TLで(自分に取って)旬な話題があったので、メモ。
人間工学を使った計算式
これによると僕にぴったりなのは、
170 × 0.25 – 1 = 41.5
うむ、IKEAの椅子って殆どが45cmなんだよね。IKEAの椅子はひとつあるんだけど、微妙に座りづらいと思っていたんだけど、それが証明できたわけだ。足置きを作ってそこに足を置いていたんだよね。
足を切っちゃっと。でも平行に切れるかなぁ。
404 Blog Not Foundで紹介されていた佐々木俊尚氏の「仕事するのにオフィスはいらない」を読んでみた。
紹介している小飼 弾氏の最後の2行につられて一息に読んでしまった。
世の中で活躍している人の事例から著者自身が実践している方法を簡単に紹介している。
なるほど、IT=クラウドで武装して個だけどコラボレーションツールを使っていろいろなところに繋がっているわけだな。
既に使っているツールもあったけど、別なツールの紹介もされていて参考になる部分もあって面白かった。
ノマドなワークスタイルでは、アテンションコントロールという自己管理が一番重要。
著者もあっちが気になったり、こっちが気になったりするけど、どうやって仕事に集中するかを紹介していて、これがとても参考になった。
FreeBSDのlibusbがちょっと違うらしいと思っていたんだけど、そうでも無いらしい。
FreeBSDでは、USBデバイスの認識をumassやukbdやulptとして認識する。
vusbを使ったFrisk Mega88(名前決めてないや)はHIDとして認識するようにしているので、WindowsやMacでは、ドライバ不要で使えたりする。FreeBSDでもhidでバイスは、uhidとして認識されるわけだが、どうやらFreeBSDのlibusbはuhidで認識されたデバイスにアクセスできないらしい。
FreeBSDのlibusbは汎用のUSBデバイスであるugenとして認識できたデバイスだと上手く操作出来るらしい。
ということをGoogle様で探してLipwoodさんのところで見つけた。
LipwoodさんはUSB-IOというデバイスをFreeBSD上でlibusbを使って動作させたということなので、早速実験してみた。
まず、Frisk Mega88をそのままFreeBSDマシンのUSBに接続する。
uhid0:
やはりuhidで認識されている。
ここで、コマンドを叩いてみる。
# ./getemp
Could not find USB device “GETTEMPDev”
となり温度情報を取得することが出来ない。
というわけで、uhidをカーネルコンフィグからコメントアウトしてカーネルの再構築を実行。
待つことしばし。
reboot後、Frisk Mega88をFreeBSDマシンに接続。こんどは、
ugen0:
という訳で、ugenデバイスとして認識している。
んじゃってことで、コマンドを叩いてみる。
% ./getemp
Could not find USB device “GETTEMPDev”
ダメじゃん!何かが違うんだろうなorz…
しばらくして、ふとrootでコマンドを叩いてみたら
# ./getemp
28.6
#
いぇい!まんまと温度を取得することが出来た。
そうか管理者権限が無いと出来ないらしい。
試しにPWM(一応組み込んではある。ドライブは出来ないだろうけど)の設定をしてみるとLEDの明るさを換えることができる。
# ./getemp 1
#
ついでにステータスも取得してみる。
# ./getemp status
Duty is 1
#
んじゃ、シェルスクリプトで温度取得をぶん回してみる。
# sh gett.sh
26.7
26.8
:
#
100回でも500回でも大丈夫らしい。
次は実験機に組み込んでみようと思う。
# そういえば、AVRライターであるHIDspxをFreeBSDで使ってみよ。
# 認識はするけど、使えないって
# 何処かに書いてあったような無かったような。
# もしかしら今の状態だと使えるかもしれないし。
久しぶりに電子工作三昧な日を過ごすことができ、一気にFrisk ATmega88モジュールを仕上げた。
まずは、FRISKのケースに合わせてユニバーサルボードをカットする。

Friskのケースにユニバーサルボードを合わせると10×25のサイズになり、秋月のボードからは3枚取れるらしい。
カットは、切り口とサイズが奇麗なピラニア ノコできっていたんだけど、かったるくなったので鉄パイプを切るノコギリに換えた。
こちらの方が、ノコギリの歯の幅と穴のサイズが同じ位で意外と調子が良かった。
穴の位置で切ると少し大きめなので、後はひたすら紙ヤスリで削る!

というわけで、サイズを合ったら部品を載せて、これもひたすらハンダ付け。

で、前に一つ作っていたので、合計5個のFrisk mega88モジュールができた。
上手い具合に秋月のWebに載っているシングルピンソケットが高さも丁度良くはまりプログラミング用のコネクタも付けることが出来た。
最終的な実体配線図チックな回路はこうなった。青の破線は、部品面でジャンパーしている。
基板の外側を回っているのは、ワイヤーでジャンパーのイメージ。
動いているので大丈夫だと思うけど、参考にするならYour Own Riskでよろしく。

課題としては、
ADCのノイズ対策をしていないこと。
ADCのリファレンス電源。
USB供給の電源のノイズ具合はどうなんだろう?
というところかなぁ。
これで、実機に組み込んでというところで大問題が!
温度を測ろうと思っていたのは、ATOM兄弟。OSはFreeBSD7.2がのっているのだが、FreeBSDでは、libusbがちょっと違うらしくデバイスは認識されるんだけど、コマンドに応答してくれない。:-(
う〜ん、困ったなぁ。
まっハードは出来たってことで良しとするか。
まだまだ道のりは遠いですな。

ライターをFRISKケースにまんまと仕込み、勢いでブレッドボードでテストしていた温度測定用のATmega88もFRISKケースに無事に納めることができた。
#ケースの真ん中に穴があいているのは
#やっぱり心配だったのでICソケットを使った。
#しかし部品少ないな。
その後、しばらくAVRに触れることが出来なかったんだけど、少し時間を作って触ってみた。
VUSB -A.K.A avr-usb – のexampleであるcustom-classは、今までMac OSXで作業していたんだけど、何となくWindows XPに接続してみたところ、コード10のエラーが出て、USB HID(ヒューマン インタフェース デバイス)として認識してくれない問題が出た。試しにLinuxに接続してみたけど、やっぱり認識してくれない。
なぜかMac OSXだけ認識する状態。
回路を色々みてまわったところ、異なる箇所は、
抵抗と発振子をそれぞれ68Ωと12MHzにしてWindows XPに接続したけど、ダメ。
タイミング良く3.3V出力の3端子レギュレータが手に入ったので、ツェナーダイオードを外して、全体を3.3V で駆動するようにしたけどやっぱりダメ。
千秋さんのところでHIDaspxがmega88で動作させるプロジェクトがあるのを思い出して、除いてみた所、irukaさんのところで、mega88を使ったHIDmonとHIDaspxを公開されていた。
早速ダウンロードし、自作ライターで件のmega88にfirmwareを書き込んで、Windows XPに接続すると、ちゃんとUSB HIDで認識するじゃあーりまんせんか!
ためしにハードの構成を、ダメだとおもっていた構成に、つまり抵抗75Ω、発振子16MHz、ツェナーダイード3.3VにしてもちゃんとWindows XPはHIDとして認識する。
なーんと、firmwareの問題だった。というか、またまた先人に助けられたわけだけど、ハードとソフトの切り分けが出来たのは本当にありがたいです。
さて、firmがどこが違うかは、首から下の作業。(当然違う箇所があるのだけど、ある程度目星を付けて見て行った)
■ usbconfig.h
Windows XPに繋いでみるとHIDデバイスと自動で認識する。おぉぉぉ〜〜〜〜
でも、まだだめ。コード10のエラーが出て、デバイスマネージャで認識されてない。
■ usbconfig.h
■ main.c
これは、内容を今ひとつ解読していないので、HIDmon-mega88のmain.cからコピーした。
なんとなく、いけそ〜な、気がする〜!
繋いでみた。おっ、おっ、HIDとして認識してくれた。
commandlineからアクセスしてみると…ちゃんと温度情報を応答した。
というわけで、VUSBのExampleはデフォルトでは何らかのドライバが必要なのかな?
HIDとして認識させるには、usbconfig.hのHIDに関連する項目の設定とusbHidReportDescriptorが必要ということですな。
よし!材料は揃ったぞ。

というわけで、早速FRISKのケースに入れたライターを作ってみた。
前例もあるので大丈夫だとは思っていたけど、あっさり出来た。
ちょっと不安だったのは、FRISKケースに入れた例はどれもパターンをプリントした物で、汎用基板では作っていないこと。
逆に作ってから判ったのは、
最初は、ICソケットが使えると思っていただけけにAVRを直接ハンダ付けしなければならなかった。ハンダ付けはそれほど上手くないのでドキドキだった。
回路は QRP-HomeBrewersさんのものを参考にというか、ほぼそのまま使わせて頂きました。ISPの端子もそのまま。
回路図だけではイメージできないので水魚堂さんの回路図エディタを使って実体配線図チックに絵を描いてみた。

下側のが今回作ったHIDaspxのライター。上は、温度測定モジュールのつもり。本当は、8pinのattiny45あたりでも十分なんだけど、秋月で入手できるatmega88の方がコストパフォーマンスがいいんだよな。
あっ、2列のピンヘッダは並ばなさそうなので直さなくっちゃ。

AVR温度測定プロジェクトは、なんとかAVRで温度を測り、USBでデータを取得することが出来そうになって来た。
AVRで定期的に温度を測定して、定期的にUSBやシリアルでデータを吐き出すようにしても良かったんだけど、何となくHOSTであるPCからデータ要求し、AVRで温度情報を応答する方式にしたかった。
FRISKのケースに合わせて基板をカットしてみた。FRISKのケースに合わせると2.54mmピッチで10×25の大きさとなる。
秋月の片面紙エポキシ・ユニバーサル基板 Bタイプからだと3つ基板を切り出せる。
ライターは、USBミニBタイプのコネクタを付けようと思っている。
温度測定モジュールは、pinヘッダーでUSB接続しようと考えているところ。

USBで温度計測をするための実験を続けているんだけど、温度が測れたので次は、USBで制御できるか実験してみた。
ドライバ不要でAVRにプログラムを書き込めるHIDaspxでも使っているV-USBのサンプルを動作させてみた。
サンプルは、V-USBをダウンロードし展開するとexampleディレクトリにあるcustom-classをコンパイルしたコマンドラインのプログラムとAVRに書き込むfiremware。ターゲットとするAVRはATMega168を使ったMetaboardである。今回AVRはATMega88を使用しているので、温度測定してLEDを点灯させた回路が殆ど使えた。LEDを取り外し、USBの回路とPB0にLEDを取り付けた。
custom-classはコマンドラインからLEDのON/OFFを制御する。それとLEDのStatusを調べる。というものである。
$ ./set-led on ....... LEDを点灯する。
$ ./set-led off ...... LEDを消灯する。
$ ./set-led status ... LEDの状態を確認する。
てなわけで、コマンドラインとファームウェアをコンパイルしたら、あっさり動作してしまった。プログラムはサンプルから特に変更していない。MakefileでATMega168だったのをATMega88に変更したくらい。外部クロックを使うので、Fuseの設定を行ったけど、Makefileに書いてあった値をHIDspxで書いた。
ちなみに最初、外部クロック源にセラロックを使ってみたけどUSBで認識してくれなかった。ということで水晶発信子にしたら問題なく認識された。
先達の歩んだ道をトレースしまくりなわけだけど、素材がそろったのでそろそろ本題のUSBで温度計測だな。
一番の悩みはパッケージングだなー。パッケージングでは、QRPな自作の日記さんのFRISKのケースに入れたいなーなんて目論んでいたりして。
NTTドコモからiPhone 3Gへの絵文字送信が可能に–全キャリア間に対応
そういえば、今日来たメールで絵文字が見えていた。
普通にスルーしてたけど、確かに〓になってない。
cnetの記事で気がついたのでpost