ラベル mbed の投稿を表示しています。 すべての投稿を表示
ラベル mbed の投稿を表示しています。 すべての投稿を表示

2017年1月5日木曜日

「mbed オフラインの開発環境」の整備でのつまづき対応

mbedCLIの環境整備をした時のつまづき点のまとめです。

試した環境は、
Windows10Pro 64bit
RAM 8Gbyte
core i5


一個前の「EclipseとpyOCDでプロジェクトをデバックする」で、pythonはインストールしてある状態です。

参考web
こちらのwebで作業しました。 mbedCLIをWindowsで使ってみる(環境構築編)
そのうえで、このwebを読みました。mbed オフラインの開発環境


<Git>

2.11.0が最新だったのでそれを入れた。インストール時の設定は変えなかった。

<Mercurial>

4.0.1を入れた。これもインストール時の設定は変えなかった。

<GNU ARM Embedded Toolchain>

これは、「EclipseとpyOCD・・・」でインストール済

<各ツールのPTAHチェック>
Mercurialでエラー表示
インストール時にも警告が出ていたが、そのまま続けたら正常終了したのでほっといた。それが影響しているのか? とりあえずこのままで様子見。この警告の後コマンドプロンプトは正常に出力終了していた。


<mbedCLI>

インストールのコマンドで”python -m"をpipの前に入れないと受け付けてくれなかった。"python -m"を省略する設定があるのか?
インストールは正常終了した。


"mbed import https://・・・・"を実行するがエラーになる。(コマンドがないといわれる)

mbed.exeのPATH(C:\Python27\Scripts)がないからか・・・

pythonの解説
ということで、pathを環境設定に追加

PCを再起動して、再度実行。で通った

後は問題なくコンパイルから、mbedLPC1768で動作させるところまでできた。



2017年1月3日火曜日

「Eclipse と pyOCD でプロジェクトをデバッグする」の環境整備でのつまづき対応

「EclipseとpyOCDでプロジェクトをデバックする」の環境整備でいろいろつまづいたのでまとめておきます。

<eclipse>

eclipseが起動しませんでした。javaがないとのことで、oracleからダウンロード・インストールしました。これが、32bit版が選択されるらしくうまくいきません。(私の環境はwin10 64bit)


そこで自動選択ではなく、手動でインストールファイルを選択します。



javaのインストール後、jvm.dllをeclipseの eclipse.ini に設定します。
jvm.dllは下記のフォルダにありました。


iniファイルの設定は下記のとおりです。

<python>

pythonのインストール時にpath設定のチェックボックスが出なかったので、install後に手動で設定しました。

windowsの"設定"窓を開いて"path"で検索すると、設定画面が出てきます。







そこに"python.exe"があるフォルダを追加します。




pipでpyocdをインストールするには、DOS窓からコマンドを打ち込みます。


 "pip"を実行するには"pip"の前に、"python -m"をつける必要があります。



<eclipse>

errorが出ている。以下の方法でできた。

出ているエラーは2種
Program "echo" not found inPATH
Program "make" not found inPATH

FAQがあった(Eclipse Community Forums)
ここにも同じFAQ(Stack overflow: Program"make"not found in PATH)

しかし、最近のソフト・アプリは、説明書なしに気ままに作って、使う側が手探りで方法を探して、ネットで共有するものなのね。大本になるマニュアルや情報があるといいのに。

Cdriveを検索してもmake.exeがないので何かインストールを忘れているみたい。


echoのエラーが消えた


makeのエラーはCygwinをインストールする? FAQMake sure you have installed 'make' tool through Cygwin's installer.

cygwin64をインストールしてもmake.exeがなかった

こちらにmake.exeのインストールの記事

cygwin_setup-x86_64.exe から再度インストール。途中でインストールするファイルを選択するところがあった。


これでmake.exeが出てきた

make.exeのあるフォルダをPATH指定して

設定を有効にするために、再起動して、eclipseでコンパイルしたらmake PATHがないというエラーも消えた




コンパイルしてできたbinファイルをmbedLPC1768にコピーしたら動いた。

mbedLPC1768をつないでdebugしてみようとしたがつながらない・・・
疲れたのでここで中断。


<mbed(LPC1768)>

mbedのファームウエアをCMSIS-DAP対応に書き換える必要がある。
mbed LPC1768をMDK-ARMでデバック を参照

こちらからfirmware(rev141212)をダウンロードして、mbedにコピー。USBを抜き差しすればOK
USB-Serial driverも最新にしないとCMSIS-DAPが見えないそうです。ドライバ

設定-デバイス-接続中のデバイス で確認できる。


あっ動いた


2016年12月21日水曜日

(経過報告)MDX-15/20のコントローラをmbedLPC1768でつくる

これはmbed Advent Calendar 12/22の記事です。

<mbed LPC1768でやったこと>

年明けにMDX-20を購入しました。


それまではiModelaを使っていたので、



これと同じような作業環境を求めていろいろ調査していました。

MDX-20を使う
fusion360のCAMデータをMDX-15/20で使用する
MDX-15/20のCOM端子解析


MDX-20付属のアプリでは、板材からの部品の切り出し(CADで設計してCNCで出力)するようなことは想定していないため、fusion360で設計し、原点設定と、Gコード、RMLコードを出力するアプリを探して環境を整えてきました。

ただし、下記3点の不満は解消できません。

1.細かな原点調整ができない(特にZ軸)
2.制御用パソコンが占有される
3.パソコンとMDX-15/20の接続がCOM経由で、データフロー制御を行う
 最近のPCにはCOMポートがない。またUSB-Serial変換でフロー制御を行えるものは少ない

”1”については、探し出したパソコンアプリで対応できるのですが、ロータリーエンコーダでの操作感にはかないません。専用のコントローラも用意されていないので、MDX-20を直接制御して解決できないかと考えました。

幸い、MDX-20への指示はCOMポートで入力し、コマンド体系もRML言語として公開されていたので、解析は容易でした。

3か月くらいかかりましたが、以下の仕様のコントローラが完成しました。

1.ロータリーエンコーダによる原点調整
2.切削開始原点(ユーザ原点)の設定
3.制御用パソコン不要(USBメモリから切削データを受け取る)
4.ドリルの現在位置をmm表示する



今のところブレットボードで組んだ状態ですが、自分用で1台あればよいのでユニバーサル基板で本組します。







設計データを残すために回路図CADでのPCBデザインまで作業します。
(ハード、ソフトのデータは全部の作業が終わってから公開します)

おおむねの予定は、
1月:ユニバーサル基板での組み立て
2月:PCBデザイン検討
3~8月:プリント基板の製造、動作確認(現状予定なし)

プリント基板の製造は考えていませんが、おおむね10枚以上の希望があれば検討します。
その場合の予価ですが、

1.プリント基板のみ:4000円
2.プリント基板+部品:3万円
3.完成品:4万円

買いたいという人がいれば、このブログにコメントを入れておいてください。

2013年11月25日月曜日

LPC1114FN28(mbed)を使ったKitchen Timer

LPC1114FN28(mbed)を使ったKitchen Timer

<概要>

mbed化したLPC1114FN28で99分まで測れるキッチンタイマーを作りました。

動画URL:
http://www.youtube.com/watch?v=uukFitfkv70&feature=c4-overview&list=UUBKFbjZziYG1M-dKWqTlUwA


回路図、PCB、WINSTAR PCB for iModela、LPC1114FN28用プログラムはこちらからダウンロードできます。
https://drive.google.com/file/d/0B_-iH9ny-AE-Qkd0YUppcVF4ZVk/edit?usp=sharing



時間表示は4桁7セグメントLEDを使い、0~99分の間で設定します。LEDの駆動にはドライブ回路は設けず、マイコンからの出力を直接LEDに加えています。このため、LEDは赤色を使用しています。他色(青、白など)は順方向電圧がマイコンの出力電圧より高くなるため使用できません。

設定はタクトSWで構成した十字キーで行います。SWの認識は、3つのSWを1組にしてアナログ入力を使用しています。SWの同時押しも認識できるようにしています。



完成基板(表)

電源は、ニッケル水素電池を2本直列(2.4[V])を使います。

SW操作や、時間経過のお知らせにスピーカでビープ音や、メロディを流します。スピーカ駆動にはドライブ回路は使用せず、PWMとデジタル出力端子を組み合わせて、スピーカに加わる電圧を反転させ、PWMで余韻を作っています。



完成基板(裏)

<回路の説明>

プリント基板をiModela(iM-01)で基板を作成するために、80×50[mm]に収める必要がありました。このため極力部品を減らしています。
LPC1114FN28の出力端子設定での許容電流値は3[mA]、全体で100[mA]にする必要があります。これを目安に部品を選んでいきます。


回路図

● 7セグメントLED出力
電源を、ニッケル水素電池2本直列(2.0~2.4[V])で駆動します。このため順方向電圧の低い赤色LEDを使います。また、LPC1114で直接駆動するため、3[mA]の電流で明るく光る超高輝度LEDを使います。

COM,SEG端子の配置は換えてもかまいませんが、LPC1114の5Pin,27Pinはオープンドレインなので、そのままではHi側に吊り上げることが出来ません。アノードコモンの場合はSEG端子、カソードコモンの場合はCOM端子に割り付ける必要があります。(今回の回路では、アノードコモンの7セグメントLEDを使ったので、SEG端子に割り付ける必要があります)

COM側端子にはSEG端子からの電流が集まるため、全点灯した場合、3[mA]×8=24[mA]の電流が流れ、LPC1114の規格オーバーになります。この点、無理をしているので壊れる可能性があります。(実力OKとして使っています)

補足:
回路図では550[Ω]としていますが、680[Ω]でも充分な輝度が得られました。
電流値は低い方が良いので、680[Ω]を使うことを薦めます。



● タクトSW認識
SWの認識をデジタル入力とすると、LPC1114の端子が足りないのでアナログ入力端子を使って、3つのSWを1つのアナログ端子で読み込むようにしています。
Vcc-GND間に、R1からR4までの抵抗を直列に入れます。抵抗値はR1を基準に倍づつ変化するようにします。R2からR4の両端にSWを入れ、R1とその他の分圧で押されているSWを認識します。使用する抵抗は精度±1[%]のもの(金属皮膜抵抗)を使ってください。

このSW認識用にmbedのLibraryを用意してあります。LPC1768用にアナログ6端子認識できるように作っていますが、LPC1114では未使用端子があると認識できなかったので、今回の用途用に2端子入力用のLibraryに作り直してあります。
mbedLibray:
http://mbed.org/users/suupen/code/SwAnalog/





SWのアナログ認識回路


● スピーカ出力
スピーカ出力もLPC1114端子に直接接続しています。少しでも音を大きくするため、スピーカの両端を出力端子に接続して、交互にHi,Lo出力することで、スピーカの振幅を大きくしています。




スピーカの両相出力



スピーカの音量制御

スピーカー出力もmbed Libraryがあります。
LPC1114用(ノイズ対策のために両端子ともPWM出力としたもの):
http://mbed.org/users/suupen/code/SoundLibraryExample_Melody_ProgramData/wiki/Homepage

LPC1768用(PWM-Digital出力端子としたもの):
http://mbed.org/users/suupen/code/Sound/



● ISP端子
LPC1114を基板に実装した状態でプログラムを書き換えるときに使用します。
書き換えにはLPC1114の15,16,21,22,23,24Pinを使用しますが、この並び順に6Pinコネクタに引き出してあります。コネクタに引き出してあります。



ISPコネクタ部

LPC1768を使ったISP書き込みツール
http://mbed.org/users/okano/code/ika_shouyu_poppoyaki/
を使えば、書き込みは出来ますし、書き込み後に15,16PinのUART出力でprintfが使えます。

ISPコネクタから電源供給する場合には、電池は抜き取ってください。(ISPコネクタ、電池の両方が入った場合のことは回路上考慮していないので、電池へ充電する形になり危険です。


● RESET回路
電池駆動では、LPC1114への電源投入時のマイコン起動がうまくいかず、マイコンが起動しない場合があります。このため、R=33[kΩ]、C=10[uF]でパワーオンリセット回路を入れておきます。



RESET回路部

● 電源(電池)駆動
メロディー出力などの動作状態変化によって電源電圧が変動する場合があります。この影響でLPC1114が暴走する可能性があるので、電源とGND間に47[uF]の電解コンデンサを入れておきます。



電源部回路部



<PCBパターン>

EAGLE CADで回路図、PCBパターンを作成します。iModela(iM-01)でプリント基板を作成するため、片面基板のパターンワークを行いました。どうしても配線できない箇所はジャンパーを飛ばしています。また、部品端子穴のランドは大きく補強しておきました。

EAGLE CADでガーバーデータを作成して、WINSTAR PCB for iModelaで切削用データに変換して、iModela(iM-01)でプリント基板を作成します。
切削についての詳しい説明は「コンパクト3D切削マシンで作るMyプリント基板」http://shop.cqpub.co.jp/hanbai/books/18/18941.html
を参照してください。



PCBパターン図(部品面からの透過図示)



WINSTAR PCB for iModela切削データ



完成基板

<部品実装>


LPC1114はICソケットを介して実装しています。7セグメントLEDも1列6Pinコネクタを2本使って基板に実装しています。これらのソケットを使わず直接実装してもかまいません。



部品実装(表)

スピーカは、ホーン代わりに、紙の筒に取り付けて、基板に固定してあります。


部品実装(裏)

<プログラムの書き込み>

mbedWebからダウンロードします。
https://mbed.org/users/suupen/code/kitchenTimer/rev/269bb751dd19

コンパイルしてできる、拡張子“bin”をLPC1114FN28に書き込みます。
書き込みには、こちらのLPC1768を使用したISPツールを使うと便利です。
http://mbed.org/users/okano/code/ika_shouyu_poppoyaki/
このWebに書き込みに必要な一通りの手順の説明があります。



LPC1768 ISPプログラム「いか醤油ぽっぽ焼き」Web

この方法で書き込みする場合はLPC1768から電源供給するので、キッチンタイマ側の電池はぬいてください。





LPC1114へのプログラム書込み


以上


2013年6月29日土曜日

赤外線リモコン送信データの解析


<概要>

mbedのライブラリに、赤外線リモコンからのデータを解析するライブラリ(RremoteIR)があります。このライブラリは、一般的なフォーマットである、“NECフォーマット”、“SONYフォーマット”、“AEHAフォーマット”に対応しています。

これ以外のフォーマットの場合は、波形を解析して、プログラムを作る必要があります。
今回、波形のHi,Lo時間を1[us]単位で測定して出力する処理を”RemoteIR”ライブラリに追加して、”Propo_RemotoIR”ライブラリとして公開しました。
この解析方法を説明します。


<サンプルプログラムで動作確認>


mbedのWebから”irRawDataDisplay”のProgramをダウンロードします。(図1)
http://mbed.org/users/suupen/code/irRawDataDisplay/




図1 irRawDataDisplay  Program Web

このプログラムに入っている、”Propo_RemotoIR”ライブラリフォルダの”ReceiverIR.h”の23行目の”IR_RAW_DATA_ANALYSIS”マクロ定義を有効にして、コンパイルをしてください。このマクロ定義で条件コンパイルして、赤外線データの波形測定処理を有効にします。(図2)



図2 Propo_RemotoIRライブラリ - ReceiverIR.h 変更箇所




 main.cpp 側では、USB-COMの通信速度の設定と、赤外線受信モジュールのポート設定がありますが、main側ではそれ以外の処理はありません。赤外線データの解析とパソコンへの送信処理はすべて、ReceiverIR.cpp/.h で行っています。


mbed側での赤外線受信モジュールの接続方法は図3のようにします。


図3 mbedの接続図

パソコンには、ターミナルソフト(TeraTarmなど)を起動して、COM設定を図4のようにします。


図4 パソコンのターミナルソフトのCOM通信設定


mbedとパソコンとは、USBで接続して、パソコン側はUSB-COMとして認識させます。

赤外線データ(IRC Helicopter “SWIFT”のPropo)の受信データを表示させたところが、図5になります。


図5 赤外線通信波形の解析表示


この解析結果から、通信波形のHi,Loの時間を確認して、信号先頭のリーダーや、データビットの時間幅を推定します。


2012年11月10日土曜日

ドットマトリクス時計(dotmatrix clock)

ドットマトリクス時計(dotmatrix clock)


16*16 2colorLEDのドットマトリクスを使った時計を紹介します。

動画:dotmatrixclock_cq.wmv

1. 概要

秋月電子通商で販売されている16x16ドットマトリクス2色LED LT-5016M1(http://akizukidenshi.com/catalog/g/gI-00039/)を使ってアナログ風12時間表示の置時計を作りました。制御にはmbedを使用しています。時刻設定はEthernetでNTPから時刻データを取得するので手動での時刻設定は不要です。LEDの制御にはTLC5940(http://www.ti.com/lit/ds/slvs515c/slvs515c.pdf)を使い100階調で滑らかな表示を可能にしています。
写真1-1~1-8に時計の各部分を示します。


写真1-1 正面



写真1-2 側面


写真1-3 背面(コネクタ)



写真1-4 上面



写真1-5 上背面





写真1-6 LEDモジュール(正面)


写真1-7 LEDモジュール(背面)



写真1-8 コネクタモジュール




2. ハードウエア

2-1.システム構成

図2-1-1にハードウエアのシステム構成を示します。外付けUSBはケースに組み込んだ後のプログラム書き換えのためです。mbedのUSB端子を使う場合は省略可能です。Etherは起動時にNTPで現在時刻を取得するために使用します。ドットマトリクスの制御はダイナミック出力で制御します。TD62783はドットマトリクスへの電源供給とRow制御を行います。TLC5940はドットマトリクスの輝度制御と、Column制御を行います。ドットマトリクスLEDは消費電力が大きいのでmbedのUSBからの給電では動作できません。このため+5V電源を外部から接続します。(Row、ColumnはドットマトリクスLEDの信号名です)



図2-1-1 ドットマトリクス時計システム図





2-2.回路図

次に回路図を図2-2-1~2-2-5に示します。



図2-2-1 回路図(mbed部)

 


図2-2-2 回路図(TLC5940部)

 


図2-2-3 回路図(TD62783APG部)

 


図2-2-4 回路図(LT5016M1部)

 


図2-2-5 回路図(USB、Etherコネクタ部)


図2-2-1のmbed周辺回路ですが、mbedに付属するUSB端子からプログラムを書込みする場合には、mbedのIF-、IF+、nRへの配線は不要です。USB端子を外付けする場合には、外付けUSBからmbedへの電源(Vbus)供給のためmbed側の改造が必要です。この改造については2-3で説明します。

図2-2-2のTLC5940はLEDをPWM制御するためのICです。IC1個で16本のLEDを制御できます。ドットマトリクスLEDは赤、緑の各16本ずつ制御するのでICは2個使用します。階調データ送信とPWM出力は同時に行うようにしています。

図2-2-3のTD62783はドライバICです。ドットマトリクスLEDの消費電流が大きいのでmbedのデジタル出力端子では必要な電流を供給できません。このためTD62783を使い必要な電流を供給します。また、ドットマトリクスLEDはダイナミック制御とする必要がありますのでそのためのColumn線の制御も行っています。

図2-2-4のLT5016M1は16*16 2色(赤・緑)LEDドットマトリクスです。ダイナミック制御で点灯します。Row線で点灯ラインを決め、Column線で点灯LEDを決めます。赤・緑でRow線は共通なので、Row線への電流供給は2ライン分の容量を持たせる必要があります。

図2-2-5のCN1は外付けUSB端子になります。mbedのUSB信号線はIF+、IF-端子にそのまま出力されているので、この端子にCN1のD+、D-端子を接続します。CN1のUSB電源(Vbus)はmbedのVU端子に接続します。本来VU端子は+5V電源出力なので、ここに外付けUSBのVbusを接続してはいけませんが、mbedへの外付けUSB接続通知をするために必要となります。この接続のためmbed側に改造が必要になりますが、これについては2-3で説明します。

図2-2-5のLAN1はEtherのコネクタになります。簡易的な接続ではTD+,TD-とRD+、RD-の接続で通信できます。今回の製作では、mbedとコネクタ間は10cm程度のケーブル接続としたためノイズの影響を受けやすく、通信ができませんでした。このためEtherコネクタのCTをmbedのVOUT(3.3V電源)に、GNDはmbedのGNDに接続しています。

2-3.USB端子の外付け

mbedをケースに組み込んだ状態でプログラムを書き換えする場合には、ケースにUSB端子が出ていると便利です。
mbedのIF+、IF-端子はmbedのUSBのD+,D-端子が直接接続されており、ここに外付けUSBのD+、D-を接続します。また外付けUSBのGNDはmbedのGNDに接続します。これは図2-2-1、図2-2-5の回路図の通りです。
しかしこの状態では、外付けUSBにパソコンを接続してもUSB認識しません。これは、mbedがUSBのVbus端子からの+5Vを認識して、D+をプルアップすることでパソコンがUSB接続されたことを認識するためです。外付けUSBのVbusをmbedのVbusに供給する必要がありますが、mbedには、このための端子が用意されていません。そこで、mbedのVU端子(mbed内USBのVbusからの+5V電源供給端子)に外付けUSBのVbusを接続した上で、mbedにダイオードを追加する改造をして対応します。
ここ(http://mbed.org/media/uploads/chris/mbed-005.1.pdf)にmbedの回路図があります。この2/5ページにUSBのVbus周りの回路があります。図2-3-1に抜粋を示します。







図2-3-1 mbedのUSB電源関係回路

ここで、R13が未実装となっており、ここにダイオードをAにアノード、Bにカソードが来るように接続すれば、mbedのVU端子からmbed内部のVBUSに電源を供給することができます。写真2-3-1にダイオードを接続した様子を示します。



写真2-3-1 mbedへのダイオード追加
この状態では、外付けUSBのVbusは電流制限がかからないので、図2-2-5にあるようにResettableFuse(500[mA])を入れておきます。この改造を行った場合でも、mbedのUSBは制限なく使用できます。ただし、mbedのUSBと外付けUSBは同時に接続使用はできません。必ずどちらか一方のみの使用となります。

上記ではmbedにダイオードを追加しましたが、図2-3-1の未実装R13のA側ランドに外付けUSBのVbusを接続すれば、mbed内部の電流制限機能が有効になるので、図2-2-5のResettableFuseは不要になります。ただし、この接続のために配線が1本必要になりますのでmbedを別の工作で使いまわす場合に不便です。
もっと簡単には、mbedのUSB端子に延長ケーブルを接続すればmbed側の改造は一切不要です。可能なら延長ケーブルを使用する方法が良いでしょう。

3. 組み立て

3-1.部品一覧









一覧表に示した部品の内、半導体以外の部品は型番にこだわる必要はありません。手持ち部品などを使用してください。また外付けUSBを使わない場合はNo.12,13,14の部品は不要です。
*1:1セットの数量が必要数量より多いので注意

3-2.加工・組み立て

ここでは置時計として使うための見栄えを考えた工作のポイントを説明します。

3-2-1.LEDモジュール

置時計として使うためドットマトリクスLEDと同面積の基板を奥行き方向に重ねるように部品配置をします。この部分の回路をLEDモジュールと呼ぶことにします。写真3-2-1-1にLEDモジュールを組み立てた状態を示します。




写真3-2-1-1 LEDモジュール

ドットマトリクスLEDの端子は2mmピッチですので、1.27mmピッチのユニバーサル基板の穴にピンを差し込みピン間隔を調整します(写真3-2-1-2)。その後で、1.27mmピッチピンヘッダを取り付けてユニバーサル基板に固定します。(写真3-2-1-3)ピンヘッダの使用しないピンは配線時の邪魔になりますので抜いておきます。ただし、+5V、GNDやTLC5940の制御線をこのピンを通して配線するので、この分の配線用のピンは残しておく必要があります。




写真3-2-1-2 ドットマトリクスLED端子トリミング

 


写真3-2-1-3 ドットマトリクスLEDピンヘッダ装着


配線に使用するユニバーサル基板はドットマトリクスLEDの画面の大きさに切り取ります。切断は、ピン穴に沿ってカッターナイフで両面に筋目を入れ、端をラジオペンチで固定して折り取ります。基板端面のスジ入れが浅いとバリが出ますので、基板端面の筋入れは入念に行ってください。写真3-2-1-4、3-2-1-5
ユニバーサル基板の切断でアクリルカッターを使用すると、基板の穴に引っかかりうまく切れません。ユニバーサル基板の切断には普通のカッターナイフが良いと思います。




写真3-2-1-4 基板の切断加工

 


写真3-2-1-5 両面、片面基板加工完了

写真3-2-1-1にあるように片面基板はドットマトリクスLEDとTLC5940の配線用、両面基板はmbedとTD62783APGの配線用として使用します。ドットマトリクスLEDの端子は4辺にあり、2列のピン群はColumn信号で、片面基板上のTLC5940に配線されます。1列のピン群はRow信号で、両面基板上のTD962783APGに配線されます。Row信号は片面基板を貫通して両面基板まで配線を伸ばします。このために、片面基板のパターン面に1.27mmピンヘッダを立て、対面する両面基板側にピンソケットを配置することで、2枚の基板の接続を行います。このピンヘッダ-ピンソケットではドットマトリクスLEDのRow信号だけでなく、+5V、GND、TLC5940の信号線も空き端子を使い配線します。(写真3-2-1-6、写真3-2-1-7)



写真3-2-1-6 片面基板側ピンヘッダ

 


写真3-2-1-7 両面基板側ピンソケット



片面基板の配線の様子を写真3-2-1-8に示します。片面基板へのTLC5940の配線の後、ドットマトリクスLEDの配線を行いますが、ドットマトリクスLEDの実装後の回路修正は困難ですので、配線間違い、断線、短絡の確認は充分行ってください。



写真3-2-1-8 片面基板の部品実装

両面基板への部品実装の様子を写真3-2-1-9に示します。両面基板は端子穴がスルーホールになっているため、基板両面で配線を交差させることができません。(スルーホールを通じて短絡する)このためパターンワークには注意してください。
mbedの実装には2列のピンソケットを使用しましたが、これは1列のものが入手できなかったためです。ただ、動作試験での信号の取出しには好都合でした。



写真3-2-1-9 両面基板の部品実装


 3-2-2.コネクタモジュール
ケースに組み込んだ場合にResetSW、Etherコネクタ、+5V電源コネクタ、USBコネクタの端子口をケースから出す必要があります。今回はこれらコネクタをまとめたモジュールを作成し、LEDモジュールとは別に配置することでケースへの取り付けを行いました。(写真3-2-2-1)



写真3-2-2-1 コネクタモジュール

ユニバーサル基板はLEDモジュールの片面基板の端材を使用しています。基板の配線面は、部品端子や配線材で厚みが出るので、台と基板の間にナットを噛ませて浮かせた状態で固定します。
台はアクリル(5mm)をケースの内寸法に切り出して使用します。基板固定用のネジ穴とネジ頭を埋め込む窪みを空けます。(写真3-2-2-2)


写真3-2-2-2 コネクタモジュール台

コネクタモジュールの固定位置はケースに組み込んだときに、コネクタ口端面とケース端面が合う位置になるように調整します。(写真3-2-2-3)



写真3-2-2-3 コネクタとケース端面の関係

3-2-3.ケース加工

ケースは100円ショップにあったMDケースを使用しました(写真3-2-3-1)。



写真3-2-3-1 MDケース

ドットマトリクスLEDをケース各辺に対して45℃回転して配置しました。ドットマトリクスLEDの各辺がわずかにケースに当たるので、干渉する部分のケース側を削りLEDモジュールを収めます。写真3-2-3-2、3.-2-3-3



写真3-2-3-2 ケース切り欠き




写真3-2-3-3 ケース切り欠きとLEDモジュールの嵌めあい

ケースの厚みもそれほど無く、ドットマトリクスLEDの角が強く当たると割れやすいので、この部分は注意して加工します。



写真3-2-3-4 ケースへのLEDモジュールへの組み込み

ケースの蓋はネジでケース本体に固定します。ネジ穴は、この後作るスモークフィルムを蓋に装着した状態で、蓋とケースを合わせて、蓋とケース本体を同時にドリルで穴あけします。こうするとネジ穴がずれません。穴を開けたら、ケース本体の内側にナットを接着します。このナットとねじでケースと蓋を固定します。写真3-2-3-5、3-2-3-6



写真3-2-3-5 ケースへのナット接着



写真3-2-3-6 蓋のケースへの固定

ケース下面の蓋固定用のネジにはペットボトルの蓋を挟み込んで置時計の足とします。写真3-2-3-7、3-2-3-8



写真3-2-3-7 ケース足

 


写真3-2-3-8 ケースへの足の固定


コネクタモジュールのケースへの組み込みでは、コネクタモジュールをケースに仮組みし、ケースに空けるコネクタ穴位置を確認して、アクリルカッターやドリルで穴あけします。電動ドリルで穴開けする場合、ケースの素材がスチロール樹脂の場合、ドリルとの摩擦熱で溶けますので回転数を落とすなどして穴開けします。穴あけ後はヤスリでコネクタと穴の位置を微調整してガタツキの無いようにします。ケースへのコネクタモジュールの組み込み位置が決まったら、コネクタ台のアクリル板とケースをアクリル用の接着剤で固定します。写真3-2-3-9、3-2-3-10



写真3-2-3-9 コネクタモジュール台とケースの接着

 



写真3-2-3-10 コネクタとケースの正面

3-2-4.ディスプレイ用スモークフィルム
ドットマトリクスLEDの前にスモークフィルムを置き、LEDの光を和らげています。スモークフィルムは、VTRの外箱のプラスチックを使いました。くもり度合いが低いので、2枚重ねて使用しました。写真3-2-4-1、3-2-4-2



写真3-2-4-1 VTR外箱

 


写真3-2-4-2 スモークフィルム切り出し


スモークフィルムはケース蓋とドットマトリクスLEDの間に挟んで使用します。このため、ケースの蓋はフィルム分浮くことになるので、蓋の固定穴を開けるときは、このフィルムをはさんだ状態で開けるようにしてください。

 4. ソフトウエア

ソフトウエアはmbedのWeb(http://mbed.org/users/suupen/notebook/2color-led-dot-matrix-clock/)からダウンロードしてください。

用意したプログラムは、電源投入時にNTPから現在時刻を取得し、mbed内のRTCに設定後、RTCの計時に従って表示を行います。

4-1.プログラムファイルの説明


プログラムは、機能単位でファイルを別けています。ここではファイル毎の機能を大まかに説明します。詳細は割愛します。必要に応じてソースファイルを解析してください。

表4-1 ファイル名と機能



* 1:http://mbed.org/cookbook/Ethernet
* 2:2011/09/19現在 NTPClientMinというライブラリに置き換わっています。(http://mbed.org/users/hlipka/libraries/NTPClientMin/llj6s5)

ライブラリはプログラムファイルに含まれているので、別途ダウンロードする必要はありません。








5. まとめ

今回の製作で関係するmbedWebをまとめておきます。
TLC5940制御サンプル:
http://mbed.org/users/suupen/notebook/tlc594016channel-led-driver-grayscale-pwm-control-/
USB外付け方法:
http://mbed.org/users/suupen/notebook/how-to-external-usb-receptacle-on-mbed/

以上