2015年6月6日土曜日

電子工作は目に悪い。

ぱぅわぁああ(TOP GEAR的に)

ただの両面基板でどのぐらいの発熱を受け止められるかと思って、0.8mmのガラスエポキシ基板をElecrowにオーダーして1wクラスの白色LEDを7直列×2並列に乗せ、CL6807でドライブしてみました。

実際はベタアース

これ10枚が約2000円…恐ろしい

ホットプレートリフローだと温度ムラが出てしまい、位置を調整しようとしたら手が滑って右バンクのLEDがズレちゃいました。それを手ハンダで直したのですが、ハンダごてをハイパワーモード(70W)にしてもなかなかハンダが溶けないレベル。良い感じで熱は逃げてますw

この後、設計ミスが発覚してジャンパ飛びまくりorz

で。

結果として自然空冷だと100mA(片側、以下同)ぐらいで中心温度35度/チップ表面60度でした。350mAだと裏側に放熱器、横にファンを設置しても基板中央で40度/チップ表面70度。

一番上の写真はフルパワー稼働で約14wで点灯してます。ファンもLEDも全開運転なのでPWMの意味がないw 

なるべく直視しないようにしていますが、ちらっと見ただけでもしばらく14個の暗点が消えません。

とても目に悪いです。

そして残った10枚が例によって余っているわけですが…東銀座のmbed祭りに出展しますので、もしお声をかけてくだされば差し上げます。ジャンパ要りますがorz

他にも「1本か2本ジャンパ飛ばせば使えるLPC1114でLEDを駆動する基板」が合計30枚ほどありますので、そっちもよろしければw

2015年5月7日木曜日

Elecrow発注第二弾:洗面所用LEDランプドライブ基板

長穴の要らないDC Jackが欲しい(右上/下にある3つのでかい穴)

「それってPIR一個でいいんじゃないの?」という声を意識の外に押しやって開発した、洗面室所に入るとライトがフワッと自動点灯し、誰も居ないとすーーーっと消えるLED照明を基板にしました(現状では巨大放熱器によりファンレスで運用しておりますが)。前回よりも「I/Oをいろいろ付けたい、という欲求は必ず出てくる」という反省を元に、当面使う予定のないI2cなども並べてます。右側に横一列にGPIOを並べて、お友達のO野さんから大量にいただいたLEDラインをそのまま差せるようにしています。白、青、緑、黄色、赤…などのLEDが並んでいて、ステータス表示に便利。

発注から到着までは:

4/27 発注、DHL便を指定
5/05 発送
5/07 受取

という感じ。約10日。出荷までの日数は前回より2日遅かったけど、発送からは圧倒的に早いですね(当たり前だけど)。費用は前回は2,202円、基板はほぼ同じ仕様ですが円安とDHLオプションで3,610円になりました。ファミレスでビールでも飲めばこのぐらいは軽く越えちゃうので、「成田届いてるのにまだかよ…」とイライラするよりはマシかもしれません(前回は日本に着いてから7日かかりましたw)。

あと、前回はエアキャップ(プチプチ)で1.5層ほどくるんで封筒に入って届きましたが、今回はDHLを使ったせいかどうかわからないけど、なんと箱入りでした。それも基板の周囲にはしっかりエアキャップが入っていて、空港などで多少ぶん投げられても大丈夫なレベルw 以下開梱図です。





2015年5月2日土曜日

磁束密度をFFTで処理しグラフ表示


わー、なんだか久しぶり。

以前、磁石の動きを検出するのにアナログ出力のホール素子を使ってみたのですが、かなり強力な磁石を使っても10cm程度がやっとで、あとはノイズに埋もれてしまいました。まぁアナログ技術のある人ならもうちょっとマシな結果になるかもしれませんが。

ふと思い立って、FRDM-KL46Zについている電子コンパスMAG3110を使ってみました。測定してみると何もしなくても地球磁場が600-1200ぐらいの値を返してくるのですが、すぐ近くにネオジム磁石をおいてみても200程度しか値が変わりません。ただ、地球磁場は当然ながら安定しているので、ネオジム磁石の動きは十分信号として検出できそうな気配。

ということで、ずっと部品沼で眠っていたAQM1248(秋月の超小型グラフィック液晶)、最速の誉れも高き大浦先生のFFTライブラリなどを寄せ集めて、実験してみました。

■まず予備実験■

FRDM-KL46Z内蔵のMAG3110(ライブラリ:MAG3110…ワーニング出まくるので、あとで直してpush requestしたい)を内蔵の液晶(ライブラリ:SLCD)で表示してみました。MAG3110でボード内部のI2C端子名を指定するんですが、参照した資料が間違っていて苦労しました。
MAG3110 mag(PTE25, PTE24);
これで使えます、ご参考まで。

さて、表示してみると前述の通り、値は向きによって600-1200程度の幅で変化します。そこにネオジム磁石を近づけると200ぐらい増減します。当然離すと急激に弱くなりますが、値としてはわりとはっきりしているので、たとえば自転車のホイール回転のように周波数レンジの決まっているものであれば何とか処理できそう。

ということで信号処理はFFTを使い、表示に超小型グラフィック表示液晶を使うことにしました。

■まずAQM1248■

電子工作を再開したばかりのころ、秋月の「超小型液晶」を基板にナナメにハンダ付けしてしまったのは良い思い出…今も元気に活躍しておられます、ナナメのままで。

ということで、まずフラックスを塗って置いてしばらく放置し一カ所だけハンダ付けをして向き角度などを確認してから装着。FRDM-KL46Zとの配線は以下の通り:

AQM1248FRDM-KL46Z
Vcc3.3v
CSD10
RESETD9
RSD8
SCLKD13
SDID11

mbed用のほどよいライブラリaqm1248a_lcdをリンクしサンプルをそのままコピペして動作を確認。なお、同ライブラリはプラットフォーム(mbedの機種)を識別してGPIOなどを切り替える作りになっているのですが、概ね「LPC1768とKL05、それ以外」という感じなのでLPC1768とKL05, KL46以外の方はソースの中身と配線をご確認の上、お使いになった方が良いです。

一昨日aitendoのカラー液晶に悪戦苦闘したのですが、こっちは一発動作。やっぱ私にはaitendoはハードルが高すぎます。相場?の半値ぐらいで買えたんですが、家でビニール袋から出してみたら基板に液晶が接着済(笑)。工程ミスか指示ミスか知らないけど、液晶が端子を半分覆い隠す状態になっていて普通なら納品できない品だから安かったんでしょうね。まさにジャンク。

まぁそれはともかく、これで表示はばっちり。接続ピン番号埋め込まれていてちょっと不安だったものの動作は安定しているのでグラフ描画もかなり簡素化できそうな気配。ライブラリ開発者の方に改めてお礼申し上げます。

■高速FFTライブラリ■

今回はこれを使います。
コンパクトで高速で美しい…。mbedで使うには、

  1. パッケージをダウンロード、解凍
  2. fft4g.cをブラウザ上のmbedプロジェクトにドラッグ&ドロップ
  3. ファイル名をfft4g.cppに変更
  4. あとはサンプルを参考に書くだけ
余談ですが、サンプルではfft->ifftで誤差を確認する、という処理が書かれていて、「FFT+IFFTでフィルタ作りたい」と思っている私には拍子抜けするほど簡単w

数学どころか算数レベルの私には基数って何よ?の世界なのですが、ともかくこれも一発動作。今まで使ったFFTライブラリの中で一番簡単だったかもしれません。

■ということでプログラムの構造■

  • IntervalでMAG3110を読みバッファに値を書き込んでいく
  • メインループでバッファをチェックし、一杯になったらFFTかけて液晶にグラフ表示
これだけです。

で処理の結果ですが…まず、電子機器で一杯の室内で放置した状態でのスペクトル


ごらんのように、ほぼ全域に不規則な成分が出てます。実は圧倒的に直流成分が多いのですがスケールアウトしてしまうのでカットしてます(そりゃそうだ)。そして次が、FRDM上約10cmのところでネオジム磁石をおおよそ2秒で3往復ほどの周期で振ってみたところのスペクトル


明確にでかい山が出来てます。必死に高速フリフリをすると右へ移動するし、ゆっくりにすると左へ移動するので、なんとなくできてるかなーと。さて、次は、「こういうぐあいにでっかい山ができていることを検出する処理」というのを書かないといけないのですが、パターン認識とか苦手なんす。どなたかアイディアください。

以下ソースです。

ほとんどサンプルからのコピペですが、mbedリポジトリに公開しましたのでご笑覧くださいませ。下にも貼っておきますが、何かの参考にされるのであればリポジトリの方をご覧下さい(基本的に以下のソースは更新し忘れることが多いと思うので)

2015年4月7日火曜日

こわれたのは地味な君

夜桜@ミッドタウン

朝、PIRの安定化に効果があれば、とコンデンサなど付けてみていた。

ら。

BBBが急死。またしても「だから電源を入れたまま作業するなと何度言えば」なのだけど、思い当たる原因がない。とりあえずUSB給電だと立ち上がるので大きなダメージはなさそうだけど、Vdd5vは死んでいる。

会社の昼休みに回路図を見てみたら「起動するけどVd5vが出ていない」という症状から、どうもACアダプタのところについている保護回路NCP349が死んだっぽい。でも、それならBBBとしての機能は損なわれないので、一安心。

で、家に帰ってみると推定通り、Sys5vが出ている。これならBBBとしての回路には影響がない。

やれやれ。

ただ、一応、念のためACアダプタの電圧を当たってみたら…出てないw

ACアダプタから5vが出ていないww

たしかに300mVしか出てないwwwwwwww

…失礼しました。秋月の安物とはいえ、ACアダプタが死ぬという経験は滅多にしたことがなかったので取り乱してしまいますた。購入リストによれば、1年半ほど前に間違ってArduino用として秋月店頭で買ってきたモノ(だって店員が5vで良いって言ったんだもの)。あの頃はまだSIerのサラリーマンだったなー(遠い目

一緒に買ったArduinoは元気に時を刻み続けているのですが、こっちは一足先にご臨終です。短い間だったけど、お疲れ様。

表面実装部品は安いっ'

フィラデルフィアチーズの空き箱を愛用してます

以前、表面実装CRDを安ジャンパリードに直接ハンダ付けをしたら何かと便利だったので、


こんどは「10mAのCRD」と日亜の「白色大出力チップLED NSSW157T」をヘッダに取り付けました。材料は3ピンのヘッダ、CRD、LEDです。


このぐらいのサイズになると迂闊にハンダメッキしようとするとコテに吸い付いてしまって離れてくれません。コテから振り払おうとするとどこかへ行ってしまうし。

使用工具は工作用クリップ台、逆作用ピンセットと普通の精密ピンセット、ハンダごて。各部品を薄くハンダメッキします。厚くなってしまうと水平垂直を出しにくくなってしまうのでご用心。

あとはピンヘッダを逆作用ピンセットで固定してからクリップ台に取り付け、ピンが机ぎりぎりになるよう設置するようにセットし、別のピンセットでCRDを取り付けます。極性をどうしようか悩んだのですが、LEDが白でCRDが黒なので、LED側にプラス、CRD側をマイナスに設定しました。白がプラスで黒がマイナス。この時私は何も考えずに先端近くにCRDを取り付けてしまったのですが、そうするとLEDを水平に取り付けにくくなり苦労します。ぜひピンの中間点に取り付けてくださいorz

続いてLEDです。LEDはピンを垂直に立てて、LEDを上から押すように固定すると楽にハンダ付けできます。

うまくいったらブレッドボード側の中央のピンを切断します。タップとして残したい人はそのままでも良いと思います。

幅約6mm

まぁ、電流制限付きLEDなんてのも世の中には売られているわけですが、好きな電流×好きなLED(日亜の高演色LED)を組み合わせできるのは自作だけ!ということで許してください。

2015年4月6日月曜日

表面実装部品は安いっ



電解コンデンサはあまり在庫を持ってません。しかし、いつ必要になるかわからないので一応表面実装タイプで揃えてます…秋月で5個100円のやつ。しかし、今夜、ついに47-100μFが必要になったので、ブレッドボード用の足を付けました。

勢いが止まらなくなって、ついでに0.1μFの1608積層セラミックも制作。10個ぐらい作っておこうと思ったけど、ふと時計をみたら30分もたっていたので2個でおしまいにしましたorz


これは三端子レギュレータ用なのですが、どうせなら中央GNDにして3pinに2個付ければ便利じゃね?と思ったのですが、工作技術と視力が追いつきませんでした…。

反作用ピンセットもう一個買っておこうっと。

2015年4月5日日曜日

秋月などで売ってるB+用ケースがすでに2用に加工済?


RS-ComponentsからやっとRPi2が届きました。注文したのは2月下旬。まぁたぶん最安値だと思うので待つのもしょうがないんですが…とりあえず発注時の出荷予定から何の連絡もなしに2週間遅れるのはいかんと思う。そういうことをするのは私の勤務先のくそったれな外注だけにしといてくれ。

ま、それはともかく。

とりいそぎケースが必要だったので、秋月のワゴン売りケースを入手。事前に調べてあった加工法によればニッパーで切るだけだったので、私でもたぶん大丈夫(書いてて悲しい)。

でさっき、ケースを加工しようと開封してみたら。

加工済みでした。
むりやり突っ込もうとして壊す人が多かったりしたのでしょうか。いずれにしても、ありがたいことです。

なお、これは公式に発表されていることではないので、もしかしたら未加工の個体もまだ流通しているかもしれません。組み立てる前に確認を。

SE-10というPIRセンサー


PIRセンサーは侵入警告灯として使われることが多いせいか、センス信号が数秒〜数分ラッチされて出力されるものが多いのですが、これ(焦電型赤外線センサモジュール(SE-10))は差分を検知したらそのまま出力してくれるタイプなので、睡眠センサーとして重宝しています。

ただ、どうも、数日間電源を入れたままにしていると動作がおかしくなるようです。

電源入れっぱなしの睡眠センサーとして使うのはこれが2個目ですが、前のもしばらく使っていたら実際の動きとは関係のないデューティー比50%ぐらいの信号が出てしまい、24時間に一度電源を入れ直す…という運用でカバーしておりました。さすがにそれはアホなので交換したのですが…交換して数週間でまた同じ状態になりました。

うーん、これ、製品が悪いのかロットが悪いのか知らないですが…不良なんじゃね?

「電源を制御して24時間に一度5秒間だけOFFにする」なんて改良は造作も無いことですが、どうもすっきりしません。

電源電圧5-12vのところ下限の5vで動かしているから、9vにしてみようかなぁ。でもBeaglebone用なので、そのためだけにDCDC付けるのもアホらしいし。

うーん。

2015年3月26日木曜日

いわゆるスーパー三端子レギュレータ

交換前。


3端子のDC/DCコンバータ、使ってみました。

この回路、電源24vだけどmbedなのでロジック回路は3.3v。約50mA流れるので約1wが三端子レギュレータに消える計算になり、さすがにチンチンに熱くなります。

さすがにこれはいけないので、スーパー三端子レギュレータに交換してみました。

YES! 秋月!

表面積がでかいので単純には比較できないけど、触っても全然温度を感じません。電流が小さいこともあって、オシロで拡大してみてもシリーズレギュレータとの差は特に感じられないレベル。まぁオーディオなどだとわかんないけど、私の粗雑な電子工作レベルでは何の問題もない。

昔、100mAの7805が150円ぐらいしたことを考えれば500mAで250円はただみたいなもの。今後もこういう用途には使っていきたいと思います。

それにしても…便利な時代になったものよのぉ…。

全然関係ないけど、オリーブオイルで焼いてコンソメバジルかけたら旨かった。下手な本物より好きかもしれないw


2015年3月22日日曜日

Arduinoで指紋認識

たれにLEDが映える…と思ったら私の顔もかすかにw

友達のOさん経由でFingerprint sensorを入手できたので、さっそく試してみました。

Adafruitで公開されているDatasheet PDFが中国語でびっくりしますが、Adartuitがチュートリアルを用意しているので、ご安心くださいw しかし、mbedで使うつもりだったのですが、ドライバの情報が中国語だけなのは辛い。

なお、先に書いておきます。原因はわかりませんが私の入手したセンサーには指紋を一つしか登録することができませんでした。Adafruitで売っているものと違うタイプなのかもしれません。いずれにしてもこれでは指紋認証デバイスの意味がないので、Adafruitに改めて注文して後日また報告します。

それはさておき、Arduinoにつないでみます。

付属のコネクタ&配線は導線部分が短すぎてそのままではブレッドボードなどに刺せないので廃リード線をつぎたしてやります。最近、リード線の接触事故などでBBB、LPC1114FN28などを相次いで殺してきた私なので、熱収縮チューブできれいにカバーしました。


なお、コネクタは下の写真の向きで差し込みます。


Arduinoとの接続は、

  • 黒:GND
  • 赤:5V
  • 緑:p2
  • 白:p3

です。GitHubからライブラリ+サンプル+ドキュメントをダウンロードします。チュートリアルではいきなりfingerprintサンプルを試していますが、当然まだ指紋を登録していないので動きません。まずenrollで登録しましょう。

encollの使い方はソースを見ればわかりますが、起動しシリアルモニタを9600で表示するとidを何にするか聞いてきます。12にする場合、 12とスペースを入力し、送信ボタンを押します。そうするとセンサーが赤く点灯、待機状態になります。あとはシリアルモニタの指示に従い:
  1. 登録したい指をセンサーに乗せる。
  2. 指を離す
  3. もう一度乗せる。
  4. 失敗した!と言われたらもう一度
で、これを繰り返して別のIDで別の指を登録します。


これでめでたくfingerprintを試せます。実行すると赤く早い周期でLEDが点滅しますので、さきほど登録した指を乗せます。

が。

前述の通り何故か最後に登録した指一本しか認識してもらえません。新しいのが届いたらまたテストします。

お疲れ様でしたorz

認識に失敗してもエラーメッセージなどは出ないので、認識失敗してリトライしているのか認識処理をしているのかがわからないのですが、1秒以下で認識されることもあるので、一応カタログ性能は出ているのかもしれません。登録した時とほぼ同じような位置に指を置かないと認識されないので、指ガイドなどを設置する必要があると思います。

ライブラリの中身を検証する気力がないので、とりあえず部品沼に沈めておきます。なむ。