2014年6月30日月曜日

Beaglebone Blackで7セグメントLEDデジタル時計

同梱

■約5日で到着

欲しいと思ったのが3月、5月上旬に発売されると聞いてMouser.comに発注したのが4/23、秋月やAdafruitへの入荷を見送って待ち続けてきましたが、Adafruitに再度入荷したので我慢できずに6/25に注文。6/29の11時ごろ配達されたのですが、買い物に出かけていて留守、やっと本日11時半ごろ入手しました。いえー。



■というわけで、7セグメントデジタル時計をまた作った

事前にブレッドボード上に回路を組んであり、Bonescriptでも一応書き終わっていたものの、初めての環境だとやっぱり色々ありますね…。ピン配列の資料を見て、「じゃ、P8の3番以降を使おう」と決めてあったのですが、実際に走らせると「そこのピンはMMCが使っているからダメよ」とエラーが。

間違った配線の図

じゃ、どうすりゃいいのよ、とそれらしい資料を探し出すのに小一時間かかりました。Getting Startedにあったんですけどねorz

やっと1桁表示できたw

それからソフトのバグをプチプチ潰しつつ、「せっかくの時計なんだからちゃんとntpで時間合わせしないと」と思ったのが運の尽きでちょっとハマったり。出来上がったのが、以下のムービーです。


ムービーのフリッカーを合わさって、ほとんど判読不能ですね…。実物はもうちょっと読めるのですが、ともかく実用にはなりません。Cloud9上で90桁/秒程度、コマンドライン上で170桁/秒程度です。170だと普通に読み取れますが、チラついてることが誰にでもはっきりわかるレベルです。

BCDデコーダが手元にないので7セグメントを1ピンずつループまわしてドライブしました。TC4511あたりを使えばもう少し早くなるかもしれませんが、それでも1Ghz ARM上のnode.jsだとこのへんが限界かもしれません。少なくとも、高速化のためにあれこれいじるよりCで書いた方がラクだと思います。

■設定など

SDカードを買い忘れてしまったので、まだなーんにもやってませんw

とりあえず、日付を毎回合わせるのは面倒くさいので、ぐぐって見つかったこちらのページ(Thank you!!)を参考にターミナルで
    ntpdate -b -s -u ntp.jst.mfeed.ad.jp
と実行。何の問題もなく設定された。なお、あんまり当然すぎて書いてないのだと思いますが、この設定はUSBとMac(PC)つないだだけではダメみたいです。DHCPのあるネットにEthernetをつないでからrebootし、USBのコンソールから入ってifconfigでen0のipアドレスを調べ、一度USB経由で接続したシェルからログアウトして、再度en0のIPアドレスにroot@<アドレス>では入ります。

2014年6月13日金曜日

MacでXBeeの設定をする:X-CTU for Mac


■X-CTU

ちょっと古い本/Webには「Mac版のX-CTUはない」と書いてあるけど、あります。ここからダウンロード&インストールできます。xctung、X-CTUのNew Generation。


起動するとすぐアップデータのチェックが始まり、「このアップデータは署名されてないけど、アップデートするかい?」と聞かれるのでOKボタンをクリック、アップデートが終わると再起動されて再度アップデータのチェック(数秒)後、無事立ち上がります。

立ち上がったらAdd Deviceボタンをクリックします。するとシリアルポート一覧が現れます。他にいろいろつながっていると区別が難しいですが、その場合は一度USBポートを抜いてRefresh portsボタンをクリックし、接続してから改めてRefresh portsボタンをクリックします。そこで新しく追加されたのがXBeeです。


ポートを選択し、FinishボタンをクリックするとXBeeとの通信が行われ、取得された情報がメインウィンドウ上左側に表示されます。


これをクリックすると右側に詳細情報が表示されます。XBee本などに書かれているように、まずはXBeeをアップデートしましょう。Firmware Updateボタンをクリックします。



インストールするFirmware選択ダイアログが表示されます。初期状態で、現在インストールされているFirmwareの最新バージョンが選ばれているはずです。私の場合は「ZB24-ZB」、機能セットとしてはZigBee RouterのATコマンド、Firmwareバージョン22A7(Newest)が選択されていました。

XBeeネットワーク内のうちの1つはCoordinatorにしなければいけないので、Coordinator ATとそのNewest versionを選びFinishボタンをタップします。すると少し待たされた後、再設定と設定確認のための読み込みが行われて、画面右側に現在の設定状況が表示されます。

これで一つのXBeeをCoordinatorとして設定することができました。

2014年6月8日日曜日

小ネタ:回路図を書くには

FritzingもEagleも、ちょっと変わった部品を使おうとすると「not found」の壁にブチ当たります。基板を発注するのであれば、しっかり部品を定義するべきなのですが、ブログにちょっと回路図を載せる程度でいちいち部品を定義するのも面倒くさい。

では何を使うか。

私はマカーなので当然Keynoteを使いました。どや。

笑ってくださいw

抵抗の記号、昔ながらのギザギザを書いてみましたが、どうにもきれいに作れないので新しい規格で書きました。バランス的にはコンデンサが少しデカすぎですね。

あと、フォントがOCRですが、これは当初Fritzing用に部品を作ろうと思っていたため。でもFritzingの回路図イメージはsvgで、Keynoteはsvgへのexportが出来ないので挫折。

■折角なので■

某知人から「たまにKeynoteで回路図書くけど、パーツがなくて困る」というコメントをいただいたので、少し整理してgithubにあげてみました。

もっと絵心のある方にもご協力いただけると幸いです。ダイオードとFETはまだしもトランジスタが書けないw JIS記号をトレースすれば良いのかしら。

Arduino時計+温度計(RTC+7セグメントLED編)

■久しぶりのユニバーサルボード■

未だに中耳炎+喉頭炎+副鼻腔炎が治りません。発症して8日目、抗生物質を変えて2日目なのですが。

それはともかくとして、少し前にブレッドボード上で作った4桁赤色7セグメントデジタル時計を作りましたが、あれをプロトタイプとしてユニバーサルボード上に黄色で作りました。そのままでは芸がない(←それじゃプロトタイプの意味がないだろ)ので、LEDを黄色にして、安価かつDIPなRTCを使ってみました。DIP好きっす。

■部品集め■

ユニバーサルボードは秋月のArduino用ユニバーサル・プロトシールド基板200円を使います。最初からヘッダピンやリセットスイッチなどの乗ったプロトシールドも市販されていて、それはそれで便利なのですが、今回のように多めの部品を載せる用途には向いていません。うちにも1枚あるのですが、DIPパターンの部分がうまくLEDディスプレイと合わなくて良い位置に表示器を置けないので諦めました。また、最初からヘッダピンが着いているのはラクに見えるのですが、両端を塞いでいるのでハンダ付けの際にとても邪魔になります。何より高いしね。秋月で揃えたのは以下の部品(ほとんど部品沼にあった…新しく買ったのは黄色LEDだけ)


  • Arduino用ユニバーサル プロトシールド基板(P-07555)
  • ピンヘッダ 1×40 (40P)(C-00167)
  • ダイナミック接続4桁高輝度黄色7セグメントLED表示器(I-04422)
    アノードコモン アノード共通接続
  • I2C接続RTC(リアルタイムクロック)DS1307+(I-06949)
  • クリスタル(水晶発振子) 32.768kHz(P-04005)
  • ボタン電池基板取付用ホルダー CR2032用(小型タイプ)(P-00706)
  • 高精度IC温度センサ LM35DZ(I-00116)
  • 丸ピンICソケット (シングル40P)(P-01591)
  • タクトスイッチ(黄色)(P-03650)

()は同社通販コードです。同じ名前で似たようなものがたくさんありますので、お店で「これください」と言う時には通販コードで伝えるのが一番手っ取り早いです。この他に10kΩの半固定抵抗(時刻合わせに使う)、1/8w 220Ω抵抗7本、1μFの積層セラミックコンデンサ、配線用AWG30のテフロン線が必要です。

■まずレイアウト■



他の部品と当たらないか、表示は見やすいか、スイッチは押しやすいか、配線の取り回しはラクか…などを考えながらレイアウトを決めます。上記の写真は完成品と違いますが、それはハンダ付けする際に間違えたからですorz

昔は決めたレイアウトを記録するのが大変でしたが、今はスマフォで写真取っておけばいいだけなので簡単。折角簡単になったので裏も取っておきます。



■背の低い部品からハンダ付け■

これが基本なのですが、今回絶対に守らなければいけないのは、電池ホルダよりも先にヘッダピンをハンダ付けする、ということです。ホルダの陰に隠れてしまうので、忘れると大変なことになります。幸い、電池ホルダはRTCとGNDだけにつながるので、最後の方でも構いません。前述の通りヘッダピンは邪魔なので、最後から2番めにヘッダピン、最後に電池ホルダでいいでしょう。あと、RTCとLEDはソケットに取り付けます。今どきの半導体は直接ハンダ付けしても簡単には壊れないのですが、まぁ一応。

ICソケットやヘッダピンを取り付けるときには、まず端を1点だけハンダ付けして、ちゃんと水平・垂直になっているかを確かめてから残りをハンダ付けします。もちろん曲がっていてもあまり性能には影響ないのですが、カッコ悪いので。今回配線にはテフロン線を使いました。硬くて被覆を剝くのも取り回しするのも少し面倒なのですが、コテ先が接触しても被覆が溶けたり焦げたりしないので仕上がりがきれいです。

…なお、製作途中の写真撮っていませんでした。楽しくて、つい夢中になってしまって。ということで、配線面の写真と横から見た図。

青はセグメントで緑はカラム、黄色はLM35

左上のハンダ付けがちょっと荒れているのはLM35Dの信号がノイズまみれで温度表示がピコピコ変わるのでいろいろ試行錯誤した結果です。ソフトで移動平均とってもダメで最終的に1μFのコンデンサを打ち込むという乱暴技で解決しました。

たれ背負う
横から見るとLEDのピンが長いですね…貧乏性なので部品のピンを最後まで切れない。たかだか250円、牛丼よりも安い部品なのに。手前右側でそそり立っているのは水晶です。32.768hzの水晶なんて昔は何百円もしたのに30円だもんなぁ(以下昔話20行削除

■ソフトの修正■

赤色LED+ブレッドボードではRTCにRTC-8564NBというモジュールを使っていました(これも秋月)。今回は別のチップなので、I2Cまわりの処理を変更します。I2Cの基本的な処理とはあまり変わりありません。

もう一つ、赤色LEDはカソードコモンでしたが今度はアノードコモンを使いました(買ってくるときに間違えた)。ので、LOWとHIGHを入れ替えてやります。

で、点灯したら…とてつもなく眩しい時計になってしまいました。

これは温度表示。暑いな。
黄色LEDは赤色LEDよりも発光効率が高いのです(それゆえ、高効率かつ安価な照明用白色LEDは黄色+青色だけで出来ていたりして色がヘンなのですが)。同じ抵抗・同じ電流だととても眩しくなります。今から7本の抵抗を変更するのも面倒だなので、単純に各カラムをon/offしている時間の比率を変えて調整しました。抵抗220Ωで各セグメントをドライブし、昼間はon:0ff=1:10、夜はon:off=1:100にして、いい感じの明るさになりました。電流はセグメントあたり (Vcc-Vf) / 220 = 13mA、ダイナミック駆動なので夜の場合実際に発光している時間は1/700ってことになりますが、それでも結構明るいから恐ろしいです。

実用品を作るのは楽しい。

■追記■

当初1日1分以上誤差があって「やっぱ1本30円の水晶は無調整だとあかんかw」って諦めていたのですが、その後日差1秒ぐらいまで安定してきました。このところ気温が低いせいもあるかもしれませんが、やっぱ水晶発信器ってエージングが必要なんですね。

NJM11100F1を定電流源として使う

■動機は安直■

最近妙にLEDに関係するものを作ることが多いのですが、50-300mA程度の定電流を確実かつ簡単に提供できるデバイスというのはあまり選択肢が多くありません。定番はLM371ですが、Vin-Voutドロップ電圧が2-3vほどもあるので、基準電圧の1.25vと合わせるとバカにならないロスになります。かといって、CL6807などのLED専用スイッチング式定電流デバイスは効率は良いもののチョークコイルなど外付け部品が多くなってしまいます。1A流すならともかく、50-150mA程度の電源にインダクタとSBDはちょっと大げさかなと思います。

何か適当なデバイスがないか物色していて新日本無線のNJM11100という「出力可変型 逆電流保護回路内蔵 低飽和レギュレータ」が目に止まりました。TK11100と置き換え可能だそうです。

  • 逆電圧、過電流、サーマルプロテクション
  • 低ドロップ電圧(200mV)
  • 出力コントロール端子
  • SOT-23-6-1パッケージで小さい
  • 1.25v基準電圧タイプ
  • 最大出力電流240mA
  • 秋月で5個150円(CRDより安い)

比較的ロスの少ない定電流源としても使えそうな予感がします。パッケージ小さいですが、何とか手でハンダ付けできるサイズ。ドロップ電圧0.2vなのでLM317よりもかなりロスを小さくなります。個人的には先日CRDを壊してしまい壊れたCRDによってLED数本を焼いてしまったので、いろいろな保護回路が入っているというのも安心です。

なお、秋月でこのICについて配信されている資料は完全なものではありません。こちらの新日本無線のWebで配信されているものには回路例のパラメータや過渡特性が加筆されています。

■お約束■

この記事の情報はあくまでも個人の実験結果を報告するものであって、内容を保証するものではありません。

以下はメーカーにより提示あるいは示唆された使用法ではありませんし、私を含め他の如何なる製造業者等によって保証されたものではありません。場合によっては貴方のPCを始めとする家屋財産等に損害を与える危険性があります。記載された情報等により惹起された如何なる結果に関しても著者は責任を負いません。

予めご了承の上、この前にお進みください。

■さっそく試作■

というわけで試してみました。秋月のSOT-23-6-1オペアンプ用基板がパスコンの位置も含めて丁度使えます(2016サイズ, 0.1uF)。最初に基板にフラックスを塗って、生乾きのうちにチップを置くといい感じに固定できます。あとは少なめのハンダをピンに載せてからランドとの間に染み込ませるようにすればいい感じでハンダ付けできます。

2番ピン(GND)にハンダが回ってない…orz

出来たものをまずブレッドボード上で基本の定電圧回路として動かしてみると、基準電圧VadjはVoutとの差ではなくGNDとの差であることが判明。LM317などの可変三端子レギュレータを定電流として使う場合Voutと負荷の間にシャント抵抗を入れて、シャントとVoutの差をVadjにつなぐのですが、NJM11100は違います。

■定電流回路■

てことで、NJM11100を利用した定電流回路図。

…さくさく進んだように書いてますが、VadjがGNDから1.25vであることに気づくまでは試行錯誤しまくりでした。まぁそれでも壊れなかったのだから、なかなか丈夫な良いチップです(待て


ご覧のように、共通のグラウンドからシャント抵抗(R = 1.25V / 電流値、50mAの場合は25Ω)を通してLEDカソード(ー)につながり、アノード(+)からVoutへ。カソードからさらにVadjにつなぎます。こうすれば、電流によって生じた電圧が1.25vに保たれるようにVoutが制御され、結果として定電流回路として働きます。

■PWMを試す■

LM317などの三端子よりはジャンパ多いですが、コントロール端子によるスイッチは比較的低速のPWMぐらいなら追従してくれそうな感じ。で、結果ですが…立ち上がりは比較的速いものの、立ち下がりが遅く、Vcc9vで500Hz, 50%のPWMを入力した場合、3vまではストンと落ちるものの3v以下ではダレてしまって完全にoffになる前に次の立ち上がりが来る状態でした。白色LEDのVf以下なので、それほどロスや発熱にはならないと思いますが…まぁ本来の利用方法ではないので仕方ありません。

…スクリーンショットを貼れるようなオシロが欲しいorz

PWMなしで動かすのであれば100mAぐらいなら放熱器なしで使えるので、基準電圧などによるロスを除いても白色LEDをギリギリ直列5個までドライブできそうです。合計しても15v x 0.1A = 1.5wなので明るさはそれなりですが。

2014年6月1日日曜日

ホットプレートだけでは不十分です


やっちまった悲しみに…

■追記3(2015/12/30)■

サンハヤトの「表面実装部品取り付けキット SMX-21」を試してみました。バッチリです。塗りやすいので作業時間は短くなり、濡れ性が高いのでハンダ付け不良ゼロでした。ああもっと速く使えばよかった。上の真っ黒な基板の供養が出来たかな。

■追記2(2015/12/27)■

購入後18か月を経て、ついにクリームハンダも寿命を迎えたようです。ハンダボールだらけになって使い物にならないです。振り返ってみると、半年を過ぎたあたりからは徐々にハンダボールが増えていました。というわけで、サンハヤトのクリームハンダを注文しました。

■追記1(2015/06/15)■

その後amazonから届いた放射温度計を使って、ちゃんと成功しました。

上で「今度はサンハヤトのペーストを使ってみよう」なんて書いてますけど、実は未だにこの記事を書いた時に買った中国製ペーストを使っています。冷凍庫に入れて保存してますが劣化したという感じはしません。とりあえずLEDなど大きなものに使う分には問題ないです。ただ「失敗の大きな原因はペーストの劣化」という経験をお持ちの方もいらっしゃるので、ご自身のリスクで選択してください。

ホームリフロー、温度管理はホットプレートに何も乗せないで何度か練習すればコツがつかめます。難しいのはペーストの塗布です。マイナスドライバーで一つずつペーストを塗布していくのは疲れるし時間もかかるので、ステンシルを使わないのであれば手でハンダ付けするのと総作業時間はあまり変わらないです。

ステンシルはクラフトロボで作る方法も紹介されていますが、Elecrowのオプションでメタルステンシルを作ってもらえます(1枚2000円ぐらい)。試作を2回すませて3度目の正直になる基板があるので、今度頼んでみようと思ってます。


■初ホームリフロー■

というわけで、表面実装部品全盛の今、家庭電子工作もホームリフローの時代となりました。老眼だからもうDIPと一緒に去りゆくしかないのか、DIPも見えなくなったら引退か…。

と思っていましたが、とりあえずリフローでハンダ付けすれば、震える手で0.5mmの幅に正確にハンダ付け…というような作業は不要になります。ある程度の精度は必要だけど、そこで失敗しても拭き取ってやり直しができるし、そうでなくても溶けたハンダの表面張力で勝手に吸い付いちゃう。

ということで、まずYAMAZEN グリル鍋 GN-1200-Tを購入。最初アマゾンで見つけた時には1455円で送料無料だったんですが、数日後に見たら売り切れていてコジマが同じ値段+送料500円で出しているのが最安値でした。で、今見たら2474円。

2005年発売のモデルなので世代交代するんでしょうかね。小さいわりに1200Wで1500円ってのは得難い商品だったのですが。ただ、さすがに1500円、カバーのプラスチックなどはペラッペラに薄くて持つときに千切れないか心配になるレベルでした。



あとハンダクリーム、これはaitendoで480円で売っていたので購入。サンハヤトの注射器付きの方が使いやすそうだし評判も良いのですが、ここはとにかくstart cheapでw

…ま、それが冒頭の悲惨な写真につながったのですが。

■まず資材を準備

とりあえず、秋月で買ったCL6807 LEDドライバNJM11100定電圧電源をSOT89-5基板にマウントしてみます。あとで考えればもっと在庫の多いブツでお試しをすれば良かった。チップ4個、基板3枚しかないのに。クリームの瓶、英語と中国語で説明書いてあるんだけど、字が小さすぎて読めないw きっとこれの大きなサイズの瓶のラベルをそのまま縮小印刷したのだと思われ。

書いてあるメモは別の基板用

■ペーストを塗ります

まち針で塗る…のですが、なかなかランドの上に乗ってくれません。「控えめにするのが成功のコツ」とはよく書かれていますが、ごく少量付着するだけで十分な量ではありません。一方で、「多少はみ出しても何とかなるわw」という声もあって、性格的にそっちを援用しました。

汚いとは思っていたけど、拡大すると想像以上に汚いなorz

■部品乗っけます

乗っけたくても部品の向きがわからない…ので、例によってiPhoneカメラを拡大鏡がわりにして撮影し、向きを合わせます。何故か私が部品などを用意するときは、必ず逆向きになっているのですが、今回もそうでした。

CL6807NJM11100F1 幅4.4mm

で、基板に乗っけます。しかし小さいな。これで1A流せるっていうんだからすごいです。まぁ1A流すならそれなりに放熱しないと壊れますけど、今回は100mAぐらいで使う予定なので問題なし。

この時はまだ人生は希望に満ちて

■いざ、ホットプレート、そして死

なんかねー、設定は160度なのに、ハンダ溶けているような気もするなぁ…いやフラックスが溶けてきたんだろ。うん。

…と思った俺、半導体の神様に謝れ。こんなときに換気のためとはいえ目を離した俺は電子工作の神様に土下座しろ。

置く。生前最後の写真となった。

予熱(の予定だった)

そして死

なんか「事故は語る」の現場写真みたいだ…

■そして追加注文

放射温度計を注文しました。日本でも売ってますが、日本で買うと送料700円取られるのに海外の業者からだと送料無料で値段ほぼ同じなのは何故だ。

ま、そういうわけで、ホットプレートの温度計を信じちゃいけないよ←当たり前だ

■余談■

上記放射温度計を6/1にDealExtreme.com / DX.comへ発注しましたが、6/29現在まだ到着していません。6/21にクレームをいれたのですが的はずれな応答が6/24に来て、少し怒り気味の返信したら3日後にメールサーバのエラーが帰ってくる…というどうしようもない状態です。私の海外通販歴で最悪の業者です。安物買いの何とやらですね。

しかもこれを発注した頃にはなかったのですが、今はAmazonに同じものが同じ価格で送料無料即日配達。まぁそれもこれも自己責任です。