2015年12月26日土曜日

ElecrowにPCB Assemblyを頼んでみた


基板だけなら今までにも何度かElecrowに発注したことあるのですが、今度は部品実装まで頼んでみました。

大まかな手順は以下の通り。
  1. 何はともあれ回路・基板を設計する
  2. PCB Assembly注文ページのリンクから、まず先方に連絡を入れる。
  3. 担当者がアサインされてメールが届くので、その指示に従い、ガーバー、部品リストなどを送って見積もりを出してもらう。部品リスト(BOM)は、以下のように分けて記載します。記入例はElecrowパーツリストライブラリのExcelファイルに同梱(別シート)されています。
    • Elecrowの部品リストに掲載されているもの
    • Digi-key / Mouserなどから入手可能なもの
    • 日本から送るもの
  4. 先方から見積もりが届く。今回、10個,50個,100個で見積もってもらいました。
  5. OKなら、PCB Assemblyのページから支払いをする。PCB Assemblyは単価$1なので、金額分の数量($100なら100個、分かりやすい)を注文する。
  6. 日本から送る部品があるならば、とっとと送る。
  7. 到着を待つ
こんな感じです。最初に連絡を入れてから1日かかりませんでした。注文には最低数量の制限はありません。また、パーツを基板の上に乗せるためのparts mappingを用意する方法がわからなかったので質問してみたのですが、特に何も言われませんでした。

今回お願いしたのは5x5cmほどの両面基板10枚、主要なパーツは日本から送り、RCとLEDを先方のパーツリストから選んで全部ひっくるめて$80でした。とても安いです。

さて、秋月で部品を買ってこなくちゃ。届いたら、また報告します。

■追記(12/30)■

中国への部品発送にはEMSを使いました。通常の発送伝票の他にInvoiceの記入が必要です。なおシンセンへの送料は秋月箱300g以下で900円でした。ご参考まで。

■追記(2016年)■

10日ほどで届きました! 仕上がりは大変キレイです。プリントの掠れもズレもなく、ハンダは輝き1つずつ静電気防止袋に収まって届きました。

で、その後何回か注文しましたが、シルク印刷については当たり外れがあるようです。

グリーンのレジスト+1.6mm厚については、今まで外れたことがありません。しかし、それ以外の色については、ズレたり掠れたりすることがあります。Elecrowは緑以外を指定しても追加料金を取られないのですが、やはり緑1.6mmが一番安定しているかもしれません。

赤や1.6mm以外の基板を指定する場合には、少し割高になりますがpremier PCBを指定することができます。割高といっても100枚作って20% upって感じです。premierだと24milの文字でも潰れずにプリントされます。

あと、ガーバーとBOM(パーツリスト)はくれぐれも正確に。間違えていた場合でも先方から「これはどうなってんの?」と問い合わせが来ることはなく、そのまま生産されてしまいます。

なので、初めての場合はまず最初に少量生産してもらって様子を見る方が安全です。例えば基板を100枚注文して部品を100個発送しておき、「最初に10個だけ作って日本に送ってくれ。よければ残りの90個も生産」というオーダーも可能です(最初に基板100枚分と製造費10セット分を支払う。OKなら90セット分の製造費を支払う)。もちろん、その場合の製造手数料($10)と送料($15〜)は2回分になりますが、そこは部品をパーにするリスクと天秤にかけてご検討ください。

そんなこんなで、premier PCB + PCB Assemblyで注文したモジュール、スイッチサイエンス様から絶賛発売中です :-)


2015年12月23日水曜日

Energia最新版でI2Cが動かない



Energiaの最新版Energia 0101E0017(と一つ前のEnergia 0101E0016)では、MSP430G2553にてI2Cがうまく動いてくれません。

厳密に信号レベルで見たわけではないのですが、他のデバイスあるいはEnergia 0101E0015で動いていたライブラリ等が動作しません。

回避方法は、とりあえずEnergia 0101E0015に戻せば動きます。はい。

・・・これで休日の貴重な2時間を潰してしまったじゃないかorz

I2C of MSP430G2553 is not working on Energia 0101E0016 and 0101E0017. if you got same problem, please install Energia 0101E0015.

2015年11月15日日曜日

Solidarite


人は愚かだ。

しかし、英知は何物も乗り越えることができる。


mbed, LPC1114FN28使用。ライブラリはJacob Bramley氏のPixelArrayを使用しました。

Thanks, Jacob!

このライブラリはBurstSPIを利用しています。SPI/MOSI端子を出力ピンとして使用し、WS2811/2812のDin端子と接続してください。Din信号は周波数特性に敏感なので、なるべく配線を短くしてつなぎます。誤動作するとLED全点灯側に振れますので、電源がヤバいです。配線を長くしなくてはいけない場合は両端にSN751768などを入れてRS485信号に変換し、ツイステッドペアのシールド線で配線すれば少し安心だと思います。

今日の秋月:NchMOSFET 2SK4033 (60V5A) (5個入)

(秋月のサイトから)

Nch MOSFET 2SK4033、本当に今のMOSFETはVth低くてもRds小さくてスゴいですね(データシートから転記)

  • Vdss 60V
  • Vgss ±20V
  • Rds 0.07Ω
  • Id 5A
  • Pd 20W
  • Ciss 730pF
  • Coss 95pF
  • Crss 60pF

Arduinoはもちろん、mbedからでも十分スイッチできます。電子工作の定番MOSFETの2N7000とは桁が違う(秋月のサイトから引用)

  • VDSS 60V
  • VGSS ±20V
  • RDS(ON) 標準1.8Ω 最大5.1Ω(@VGS=4。5V)
  • ID 200mA
  • PD 400mW
  • Ciss 標準20pF 最大50pF
  • Coss 標準11pF 最大25pF
  • Crss 標準4pF 最大5pF


値段もあまり変わらないし、もう2SC1815や2N7000は買わなくて良いんじゃね?と思うくらいなのですが…2SK4033の方が入力容量がデカいので、マイコン直結だと高速でスイッチングするのは厳しいですね。

ところで、表面実装部品を直接ピンヘッダにハンダ付けして使うのがマイブーム(笑)なのですが、2SK4033は表面実装だけど端子間隔が2.54mmなのでピンヘッダに直接ハンダ付けするのが楽だし、そうすれば普通に使える。

よし何個か買って置こうか…と思ったのですが。

電気的特性の同じ2SK4017↓を買えばいいんだよな、と直前に気づきましたw

NchパワーMOSFET 2SK4017(Q) (60V5A)

2015年11月14日土曜日

今日の秋月:DS1307 I2Cリアルタイムクロックモジュール(RTC)

(秋月のサイトより)

サインスマートのI2C接続RTCモジュール、750円。

RTCのDS1307と32kbitシリアルEEPROM 24C32と電池ホルダーを一つにまとめたモジュール。5V版。

自分でデジタル時計を作る時にはDIP版のDS1307+をよく使います。外付けなしで動いて値段が手頃でI2Cの扱いも簡単、何よりバックアップ電源端子が別になっているのでリチウム一次電池を直結するだけでバックアップできて便利なんですよね。このモジュールには充電回路もついているのでどっちにしろ気にしなくて良いですが。

1307に限らないですが、RTCは通電当初はあんまり精度が良くなくて「まぁ…値段相応かな」と思うんですが、数日経つと普通のクォーツ程度の精度に落ち着いてきます。

あ、今気づいたけど、このモジュールって温度センサーDS18B20用のパターンもついてるんですね。ただ、DS18B20は別売り。I2Cとは別に1 wireで接続する必要があるので、温度計が必要なら少し高いけど湿度も測れるHDC1000を使った方が良いんじゃないかなー。熱慣性小さくて好き。

今日の秋月:液晶表示ミニ周波数カウンター(1MHz~500MHz)

(秋月のサイトより)

サインスマート製で006P電池と同じようなサイズの周波数カウンター、2750円。

私が電子工作に興味をもった小学生の頃(うわ40年前だ)、テスターは持っていましたが、周波数カウンターは超憧れの計測器でした。当時いくらぐらいだったっけなぁ。10万とか30万とか、とにかく小学生には雲の上というか銀河系の外レベルの話でした。それも一番安いやつは30Mhzが上限。

これは2750円で500Mhzまで計れちゃうんですね(遠い目

// 「今日の」には多少の誤差を含みますw

2015年11月13日金曜日

自作補聴器への樹状迷路orz

(秋月電子通商のWebより)

おお、こんなのがあるんですね(上写真および下記仕様は秋月電子通商のWebから)。

オーディオコーデックIC VS1063A
  • 対応方式:MP3/AAC/WMA/FLAC/Ogg/G.711/G.722等
  • 低消費電力DSPコア(VS_DSP4プロセッサ)搭載
  • マイコン制御またはスタンドアローン動作でMP3録音/再生をワンチップで簡単に実現できます
  • ストリーミング対応
  • ライン入力(2ch)/マイクアンプ(1ch)/ヘッドフォンアンプ(ステレオ)内蔵
  • LQFP48(48ピンフラットパッケージ)
  • DAC分解能:18bit(2ch)
  • ダイナミックレンジ:100dB ・SN比:94dB
  • エンコード:MP3、Ogg Vorbis、RIFF WAV
  • デコード:MP3、MP2、Ogg Vorbis、AAC、WMA、FLAC、RIFF WAV
  • GPIO×12、UART、SPI Bus、I2C ・トーンコントロール(低音/高音)、イコライザ(5バンド)

オーディオ機器、例えばMP3プレイヤーなんかをワンチップで作れちゃうチップ。

デジタル信号処理音痴でアナログ音痴の私が補聴器を作ろうと思って今ひとつすっきりいかないのが多チャンネルのイコライザとアンプ系なのですが、「マイクアンプ」「イコライザ(5バンド)」「ヘッドフォンアンプ」などが揃っているので、あとはFFTで帯域ごとのパワーを求めてイコライザを制御すれば、補聴器の基本機能である帯域ごとの圧縮・増幅、なんてのがサクっと出来てしまいます。

しかも600円で低消費電力。うは。

…なんてことばかり考えていると、ぜんぜん進まないし中途半端に試作をしたチップやモジュールやボードの山ができるだけです。

まずSTM32 F7を何とかして、次にMSP432R401をどうにかした後で、VS1063Aで何かプログラムをビルドできてから買おう。

2015年11月11日水曜日

「机ドン!」検出デバイス改良@Arduino


■暫定仕様でした■

前バージョンは「とりあえず動けばいいや」で、各軸どれかがボリュームでセットした値を超えたら2段階の明るさでランプを明滅させる、という安易な仕様でした。

これだと一度、例えば閾値ギリギリの信号で点滅が始まるとその後に強い衝撃が来ても無視されてしまいます。幸い、滅多にそういうケースはないのですが、可能性としては排除できません。

■改良版■

まず、加速度を各軸ごとの値ではなくスカラー値として処理します。各軸値自乗の総和の平方根ですね(sqrt(x*x + y*y + z*z))。スカラー値はセンサーの向きが変わっても一定のはずなので、起動時に値を保持しておけば、あとは初期スカラー値と瞬間のスカラー値の差をとれば、どの方向であれ掛かった加速度の大きさがわかります。なお、255を超える値を自乗した時に整数だとオーバーフローしてしまうので、floatに直しています。

それと、少し簡略版ですが、加速度の最大値でランプのピークの明るさを決めるようにしました。ピークかどうかを検出するのは、一定の時間ごとにサンプルした今回の値が前回の値よりも下がったら前回がピークだった、ということになります。本当ならそのピーク値が前回のピーク値より上かどうかを調べれば、大きな山から下っていくところに出来た小さなピークを誤認することがなくなるのですが、今回は「ドン!」という比較的単純な衝撃の検出なのでそこまで凝ったことはしませんでしたm(_ _)m 

この辺は本当にこり始めるとキリがないですし、味付けというか装置の賢さを感じる要素だったりするんですが…とりあえず週末までに何か考えます。

なお、ハードウェアには一切手を加えていません。

■結果■

以下2点の問題が解決しました。

  • 水平に置いて起動した後、傾けて置いても点滅しっぱなしにならない。
  • 大きな衝撃を与えた場合にきっちり強くランプが点灯する。

■ソース■


2015年11月10日火曜日

mbed最強:STM32 F7 Discovery



Cortex-M7@216Mhz、64Mbit SDRAM、という基本スペックもスゴいけど、個人的には液晶がタッチパネル付き、それもコストの高い静電式ってところに萌えます。

シリコンマイクも2個搭載しているので、そのままレコーディング可能。ライン入出力あり、コーデックはハイレゾにも対応。



ないのはWiFiとBluetoothぐらいだけど、EtherついてるしUSBも3ポートあるからどうにでもなっちゃう(はず

とりあえず、各種搭載モジュールについてはmbed用ライブラリが提供されたみたいだし、…これで補聴器作れなかったら、技術屋の看板下ろすわw

#MSP432R401も忘れてませんよw
#でもマイクやアンプ壊したりでなかなか進まないのよ@アナログ音痴

2015年11月8日日曜日

「机ドン!」検出デバイス@ESP-WROOM版



■ESP版■

というわけで前回のArduino版をESP-WROOM-02でも動かしてみました。

AdafruitによるWS2811最新版ライブラリはESP8266にも対応しています。

ただ、うちのWS2811がNeoPixelではなく安物なのがいけないのか、指示した通りに光ってくれません。Greenだけは良い感じなんですが、Red/Blueについては意図した信号になっていません。トランジスタで3.3->5vへのレベルコンバータをはさんでみたのですが変わりませんでした。うーん。

400khzに切り替えても同じ。うーん。

光り方をみていると最上位ビットがズレているような感じ。

ということでLEDの点滅が意図したパターンとは違いますが、ESPでも動作させることができました。加速度センサーの値に応じてLEDを点滅させるところまではArduino版と同じですが、1分ごとにThingSpeak.comあてに各軸ごとの最大加速度を送信するようにしました。

■配線など■

相変わらずプルアップ/プルダウン/GND接続が多くて面倒くさい。

ESP-WROOM-02接続先
3V33V3
GND(すべて)GND
EN10kΩ経由で3V3
IO14ADXL345のSCL
IO12WS2811のDin
IO13N.C.
IO1510kΩ経由でGND
IO210kΩ経由で3V3
IO010kΩ経由で3V3 およびISPスイッチ※
IO16N.C.
TOUTN.C.
RST10kΩ経由で3V3 およびRSTスイッチ※
IO5N.C.
TxdFTDIのRxへ
RxdFTDIのTxへ
IO4ADXL345のSDAへ

※ISPスイッチ/RSTスイッチはノーマリーオープンのタクトスイッチで、他方をGNDにつないでください。これによりRSTとISPは常時Highレベルでスイッチを押した時にLowレベルになります。

レベル変換回路はこちらのページ(3.3V 5V レベル変換)に記載されていた「3.FETによる3.3V 5Vレベル変換」と「4.トランジスタによる3.3V 5Vレベル変換」回路を試しました。このページ上の写真にうつっているのはトランジスタによる回路です。なお、WS2811の場合は流れ込む電流が多いのか5V側のプルアップ抵抗は10kΩでは電圧が上がらなかったので1kΩを使いました。出力側の回路に応じて使い分ける必要があります。

それとFTDIを接続する際には、GND同士の接続をお忘れなく。

ADXL345接続先
SCLESPのIO14
SDAESPのIO4
SDOGND
CS3.3v
Vs3.3v
GNDGND
Vdd3.3v

WS2811接続先
DinESPのIO12
Vcc5V
GNDGND
DoutN.C.

M78AR033-0.5接続先
Vin5V
GNDGND
Vout3V3ライン

この他、ESPの3V3近くとADXL345のVccに0.1μFのパスコン、WS2811のVccとGNDの間に470uFのアルミ電解コンデンサを入れてます。

■ADXL345ライブラリの修正■

Android Citiさんのライブラリは Wire.begin(); でI2Cを初期化しているので、これを接続したピンに合わせて Wire.begin(4, 14); に変えます。ただそのままだと後日このライブラリをArduinoで使った時に動かなくて苦しみそうなので、
#ifdef ESP8266
  Wire.begin(4,15);
#else
  Wire.begin();
#endif
と書いておきます。

■ソース■

Arduino版との違いはボリューム読み込みをしていないのとThingSpeak.comへの送信処理を行っている点です。ThingSpeakへは1分ごとにその間の最高値を送るようにしています。

ESPからThingSpeak.comへの送出には鳩退治デバイスに使ったsendなどの処理をほぼそのまま使ってます。楽だわー。