スキップしてメイン コンテンツに移動

投稿

CAL.430FRの開発(6) Energia IDEでうごかしてみる

製作中のCAL.430FRですが、MAKE:Japanのブログで取り上げてもらいました。 プログラマブルムーブメントという名称を頂いて、もやもやと作ってたものを一言で表現してもらえました。 ********** ちょっと忙しくて間があいてしまった。 一旦省電力化のための実装から脱線して、汎用マイコンとしての使い勝手を増してみた。 Energia IDEでの開発環境をととのえる  Energia IDEは、ArduinoAPIも1.0に対応していて、Arduinoライクにてっとり早く動かすのに向いている。  ただし、EnergiaにはCAL.430FRで載せたMSP430FR5949用の定義ファイルは存在しないので、自分で用意する必要があった。  (CCSv6では、Energiaを呼び出して、スケッチを編集する機能もついている)  実際は割と簡単で、FR5969との違いはI/O数だけなので、ボード選択をFRAM LaunchPadとしてビルドしてもアップロードできてしまう。  そのままではAPI上のピン番号定義がFR5969用のままなので、pins_energia.hを改変し、CAL.430FR用のボード定義を新しく作成した。 ということで、Energiaで試せるようになった。 ついでにピンマップを作成。  Energiaで編集したSharpMemoryLCD ライブラリのサンプルを動作させてみた。 これは単なるタイマ周期なので、RTCを使いこなさないといけない…。 ドライバを理解するには、Arduinoスタイルだととっつきにくい。 とりあえず、SPIバスにつないだ加速度センサを動作確認する予定。

CAL.430FRの開発(5) 組み上げ

基板が揃ったので、組み立てを完了。 ベース基板が到着。 CAL430FRは1mm厚の基板だったけど、こちらは構造部材としての強度確保のために一般的な1.6mm厚で発注したもの。  DF12コネクタにから引き出した端子を2mmピッチのコネクタに変換している。Arduinoのシールド的に、基板を積んで機能拡張を繰り返すとどんどん背が高くなるシステムだ。  この基板では部品面にはコネクタ以外の部品は無いけれど、CR2032のホルダが干渉する部分以外の場所には、高さ2~3mm程度の部品を実装する余地がある。 今回コネクタは4mmの高さのものを選択したので、高さ方向の余裕は少なめになっている。 G10ストラップを装着。問題はなさそうだ バネ棒を取り付けてみる バネ棒を取り付けるため、基板加工してみた。ストラップホールの長穴をカットして、出っ張りに1mm刃を取り付けたピンバイスで横穴あけを行う。 穴はセンターポンチで位置決めした。  刃を斜めにしか当てられないので、両側とも1ミリほど掘り下げた程度だけど、結構しっかりと取り付けることができた。これで20mm幅のバンドにも対応できる。 (まだ持ってないけれど) 2タイプ  中央の長穴は、コイン電池の押出し用に設けてみたもの。 よほど短期間にバッテリを消耗するプログラムを書かなければ、いらないかも。 MSP430は、多彩な電力モード、クロック源があり、まだDriverLibのマニュアル片手にサンプルプログラムを修正して触り始めたところだが、まずはサンプルにあった、グラフィックライブラリによる画面描画後、すべてのクロックを停止するLPM4に移行させた。デバッグ中、EnergyTraceにて、FreeRunさせた計測では、停止中はおよそ60μAほど流れている。 1Hzで何かを表示すると、120日以上は電池が保つようだ。 次はLPM3.5、RTCのレジスタ設定、カレンダー割り込みによる間欠駆動を試そう… 外装については、また後日考えることにする…。 

LED腕時計(108円)

ダイソーでLED腕時計が売っていた。腕時計というには大きめだけど面白そう。   タッチといいつつ、スイッチを押すと4秒だけ時刻が表示される仕組み。 お約束の分解。 やや不穏な手触りのシリコンバンドは本体構造も兼ねていて、中には丸い基板が収まっていた。スマートウォッチっぽいデザインは後から決まったかのような…。 基板面までは普通の見た目だった。 よく見るとコイン電池に絶縁用シートとバネ金属が貼り付けられている。どちらかと言うと基板側にあるべきかも…。 LED側については、最初チップが見えなくて焦ったのだが、よく見ると空中配線らしきものがある。 手持ちのGX200のマクロで撮影後、拡大したものがこれ。 ワイヤボンディングがみえる。 全部剥き出しの状態だ。 裏のICのように、シリコンダイを基板に載せてワイヤボンディングしたあと、黒いエポキシで封入するのはコストダウンされた基板ではおなじみだけれど、一切保護しないというのははじめて見た。おそるべきコストダウン手法 光らせてみると、ちゃんと機能していることがわかる。 ただ、写真の時点で右上の一つが破損してしまっていた。 ちょっとでも触ったらアウト。 触っただけで壊れるから、これを元通り枠にはめて組み直すのにも細心の注意が要る。 潰れたLEDは、 1005サイズの赤色チップLEDがたまたまあったので、実装してみた。 一応1005のパターンも存在している。  気になって調べると、ほかの激安LED腕時計の中身と部品の構成が似ていた。 http://dangerousprototypes.com/forum/viewtopic.php?f=2&t=5541 低コストなワイヤボンディング設備だと、ダイの実装は人が行い、ワイヤボンディング自体は画像認識を備えた機械実装で行われているらしい。 LEDのダイは小さすぎるので、全部機械実装している気もするけど… 量産は奥が深い。

CAL.430FRの開発(4) メイン基板の到着

FushionPCBに発注したメインの基板が到着したので、MSP430FR周りだけ実装して動作確認をした。 最小の5x5cm枠なので、10枚(12枚入り)作ってもらって送料込みで13ドルほど。 36mm角の実物は小さいなぁ…  目視確認してみると、7mill、ドリル0.3、ビア0.6というデザインルールでギリギリな感じ。貫通穴の誤差は基板によってばらつきがある。もうちょっと余裕をもたせたほうが良いかも。 実装を始める。まだ発注してない部品は未実装。 反省点としては、マイコン周辺の1005抵抗とコンデンサを密集させすぎたので、やや置きにくかったこと。 たいていはちゃんとフラックスを塗って、ピンセットで少しずつつつけばセルフアライメント(手動)されるので問題はないけれど…。 QFNもフラックスと予備ハンダ、吸い取り線があれば大丈夫。 一応動作確認は完了。 コネクタと下駄基板が揃うまではUEW線でLaunchPadのデバッガと接続する。 仮組み  システム的にはPNLC方式とTFT方式のメモリ液晶どちらも対応しているが、PNLCのほうはやや寸法が大きいので、基板のネジ穴を掘って、ネジの頭を埋め込ませる必要がありそう。 腕時計ブレイクアウト基板の厚紙モックで大きさ確認 M2の0番ネジ、4mmスペーサによる仮組み。 G10ストラップは相変わらず装着するだけで様になる。

CAL.430FRの開発(3) 構造検討

基板を構造部材として使う。 ・風防、化粧板 (アクリル) ・CAL.430FR (PCB t= 1.0mm) ・ケース (ABS 3Dプリント? 4mm) ・Watch Breakout (PCB t=1.6mm) 電気的にはCAL.430FRで完結しているため、拡張基板が腕時計としての構造を担っている。 ケースは最初基板すべてを包む構造を検討していたけど、間にサンドイッチしてしまうことにした。 防水性などはあまり考えない方向で…。

CAL.430FRの開発(2) DIY腕時計のストラップ

紙モデルA メモリ液晶とくれば腕時計型デバイス(通信機能が未実装なのでスマートウォッチとは呼ばない) 腕時計と名乗るには、リストバンドなどを取り付ける機構が必要だ。 CAL.430FRはのんびりと海をわたっているようなので、今度は腕時計用のPCBパーツを設計して製造発注した。  MEMSセンサなどを実装する余地はたくさんあるのだけど、今回は諦めた。 ブレイクアウト基板なので、20ピンのコネクタは、2mmピッチのピンヘッダ2本で引き出している。  デバッグ用土台でもあり、構造部材でもある。 今回の試行錯誤ポイントだった、上下の長穴は20mm幅のストラップホール。 選択肢の20mm幅のストラップに対応。 紙モデルB  去年末頃、複数のアンティーク腕時計を預かったので、レストア沼に入りかけているのだけれど、お陰で時計全般の知識が少しずつ増えてきた。 腕時計のストラップには2種類の付け方があって、DIY的には、今回発注した基板のようにストラップを通す長穴をPCBに設ける例が多い。 このバンドはG10ストラップという名前がついていて、NATO軍の規格らしい。 バネ棒でバンドを取り付ける、一般的な腕時計に通すことができる。 写真のものは1000円台で正規品ではない。 (黒だと思って発注したらダークブラウンだった) バネ棒を基板に固定してみる PCBにバネ棒をはめ込む そもそも腕時計はバネ棒という棒でバンドを固定している。 これはバネ構造で両端が伸縮する金属棒で、専用工具などで着脱できる仕組み。 バネ棒を固定するなら、3Dプリンタで構造部材を設計して発注かなぁ、と思っていたけど、基板の紙モデルをいくつか試作していて思うところがあったので、すこし実験をしてみた。 写真はユニバーサル基板にバネ棒を固定したプロトタイプだが、横穴をうまいこと開ければかっちりはめることができた。 強度が心配だが、すこし引っ張っても問題なさそう。 これなら、PCBのみで構造が完結しそうだ。   とりあえず、基板が届いたらバネ棒バージョンも試作してみる。 残る検討点は風防(表面のスクリーン)とケース(外装)だろうか… 

CAL.430FRの開発(1)

KiCad(ビルド版 BZR5353)の練習がてら、最初の基板を作成 バッテリ: CR2032 MSP430FR5949 Sharp メモリ液晶(96x96 or 128x128) 加速度計(ADXL362)  テーマは時計的な物。 腕時計に倣って、 CAL.430FRという型式をつけてみた。  機能と用途を整理してみると、画面とボタンと加速度センサが付いたRTCモジュールと定義することができそう。   MCUはMSP430FR5949。最近遊んでいるMSP430 FRAM LaunchPadのターゲットであるMSP430FR5969と比べると、高速水晶発振子用の端子が無いのと、I/Oがやや少ない以外は共通した仕様。  拡張性は20ピンの基板間コネクタ(ヒロセのDF-12)で別基板へ逃がす。 UART2ch、SPI、ソフトウェアI2C、GPIO、プログラマ/デバッガ用の端子をまとめて結線する。  最終的に、5つのタクトスイッチを両脇に実装し、36x36mmの基板外形に落ち着いた。 CR2032の電極パターンとメモリ液晶のコネクタ、ドリル穴(M2)の位置が決め打ちなので、残りの配線、部品実装エリアは思ったよりも狭くなる。 ぐじゃあ  今回は習熟のために、部品ライブラリは全部自作した。 PCBエディタのライブラリの管理形態にかなり癖があるが、いずれ改良されそう。  PCB側の配線作業は、リアルタイムDRCや押しのけ配線が有効化されていてかなり楽だが、時々フリーズするのでCtrl+Sが必須だった。  PCBを引きながら回路図や部品サイズを修正し、その都度ネットリストを更新して使うことができるようになってきたので、KiCadを習得するという目的はほぼ達成できた。 3D表示ができて、実際の仕上がりに使いイメージで基板を眺められるのはとても良い。 ガーバービューワが標準で同梱されているので、発注時にガーバーファイルを点検できる。 特に問題なさそうだったので、FusionPCBにガーバーファイルを送って発注し、あとは到着を待つだけとなった。 7millで配線したけど大丈夫かな。   2枚目の足回り基板は用途別に作れることになったので、電源もいろいろなタイプ...

メモリ液晶を試す

スマートウォッチブームで、小型で省電力なディスプレイが注目されている。 このうち、割と入手しやすいものにシャープのメモリ液晶がある。 有名どころではPebbleが採用しているものだ。 Memory in pixcel という仕組みで、画面更新頻度を大幅に落とすことができるモノクロ液晶である。  (表示を維持するためにはわずかだが電力は必要で、電子ペーパーとは異なる) 参考 :メモリ液晶ディスプレイの構成と特徴   http://www.sharp.co.jp/corporate/rd/35/pdf/100_06_A4.pdf 今回、2タイプの液晶を取り寄せて比較してみた。 (Mouser) LS013B4DN04 96x96  ドットピッチ:0.252mm  画面保持6uW、1Hz更新 12uW  @3V LS013B7DH03 128x128 ドットピッチ0.18mm  画面保持50uW 1Hz更新 130uW @3V ※数値はデータシートより抜粋 96x96画素のものはPNLC(/散乱型液晶)とあり、液晶層は下層の鏡面を透過/不透過することでピクセルを構成している。完全に透過にすると鏡となる。 動作中に電源を切り離すと、画面は徐々に不透過に戻っていった。 128x128画素のものは後発のHR-TFT型で、視認性の高い黒いピクセルだ。ディスプレイ自体も薄くなっている。電源を断つと、表示はすぐ消える。 L: 96x96 PNLC                        R:128x128 HR-TFT PNLCタイプはガラス基板の配線が直接観察できて綺麗だ。 96x96の液晶は、MSP430LaunchPad向けの拡張基板で、Sharp ® Memory LCD BoosterPack として入手することができる  http://www.ti.com/tool/430boost-sharp96 この拡張基板を使えば、いろいろなメモリ液晶の評価が簡単にできるようになっている。 5V系大型ディスプレイ用にDC/DCが...

Shuttle DS47

友人から譲り受けたShuttleのファンレスマシン DS47を整備して、2ヶ月ほど使用している。 もともと自宅鯖用に導入したとのことだが…。   http://www.shuttle-japan.jp/barebone/slim/ds47  仕様を見てるとデジタルサイネージ向けの組み込みPCだけあって、GbE2基、シリアルポート2基 とI/Fが豊富で、外部電源スイッチ用のピンヘッダが背面についてたりする。 SSDが搭載済みなのでモーターはひとつもない。原理的には無音なマシン。  個人的には、24時間稼働する制御用PCとしての使い方がちょうど良い気がしたが、制御するような機器がまだ無かった。 BIOS更新 譲り受けた時点で、BIOSのリビジョンは初期状態で、Windows8以外のOSとの相性問題がすごいことになっていた。Ubuntuは特定のウインドウが完全に表示できないし、最初にBIOS更新のために作成したFreeDosのUSBブートROMはレガシーモードでも起動せず。 Intel NUCが出始めた頃にも同じような話があったのを思い出す。 こんな時に役立つBIOS更新ツールが、Windows8.1評価版という、4GBもあるISOファイルだ。(咳払い) こちらもUEFIモードではなく、レガシーモードではじめてインストールに成功。 無事、マイクロコードの更新を含んだ最新のBIOSを書き込むことができた。その後は挙動が安定した。 UnixBench 結果 Intel(R) Celeron(R) CPU 847 @ 1.10GHz System Benchmarks Index Score (1CPU)                             582.2 System Benchmarks Index Score (2CPU)                            1092.9 参考 Int...

VL6180Xを試す

数センチ程度をレンジにもつ近接(proximity)センサは、赤外線LEDを備えた光センサなものが多い。 スマートフォンの受話動作の検知や、バックライト補正のために環境光(AmbientLight)の測定を行ったりしている。 STのVL6180Xもカテゴリは近接&環境光センサだが、近接センサはTOF方式という、対象に照射した光の戻ってくる時間を測定するというすごいやつ。原理的に対象の反射率によらず誤差の少ない測定ができる。 それでいて全機能が米粒大のLGAパッケージに収まっている。 サイト  http://www.st.com/web/catalog/mmc/FM132/SC626/PF260441?icmp=pf260441_pron_p3609p_sep2014&sc=proximitysensor 発表されて1年くらい経っていたけど 最近Mouserで購入できるようになっていた。 仕様 電源電圧(定格)  2.6~3.0V (試作では2.8Vで試した。 ただ、最高電圧は3.6Vまで) 測定時平均電流 1~2mA  ピーク電流は~20mA  インターフェース I2C 測定距離          ~約100mm (測定結果は8bitで格納) 環境光(ALS)     10万ルクス以上 (測定結果は16bit  20倍までのゲイン設定がある) ジェスチャ検知など 検出器はSPAD(単一光子アバランシェダイオード)で、データシートによれば、温度キャリブレーションを自動で行っている。  一回の測定には数ミリ秒程度かかる。(対象の反射率などで測定時間が変化する) IRレーザーエミッタが光る様子。 クラス1のレーザー機器でもある 測定結果のレジスタは1バイトだけなので、そのままmm換算で読み出す。 保証されている距離は 10cm程度だが、環境光の影響が少なければ、20cm程度まで測定できた。  手ハンダの際にカプトンテープでパッケージ上面を保護していたが、剥がすのを忘れて動作させても、正確な値で測定できていた。 カバーグラスについてはそれほど心配しなくて良...