2019年2月6日水曜日

iPhoneアプリのお手伝い

真面目にiOSの勉強をしていたのはiOS 8の頃までだったので、最近のSwift4なんて全然浦島太郎状態なのですが、こういう変なことを頼めるのは倉橋さんしかいない!と同僚さんに言われてお手伝いしました。

…「難しいこと」じゃなくて「変なこと」指名ですかい…ありがたいことですw

やったのは、動画にエフェクトを入れる処理。何本かCIFilterを使って、その後作ったのがこれです。


CIDetectorはかなり重い処理なのでCIDetectorAccuracyLowで使えたらと思うのですが、Highじゃないとそもそも結果が返ってこないんですよね…。描線と角度を一致させるためにfaceAngleを見ているのですが、たまにしか値が返ってこないので、左右の目の位置からatan2で角度を求め、線画の座標を変換してベジェ曲線で書き込みました。

何年かに一度Swiftを使うんですが…そのたびにバージョンが上がっていて、まずは差分の習得からやることになるので、手間取ります。

2019年1月28日月曜日

ステンシルプリンターとリフロー炉

1.注文
2.到着時破損
3.リフロー炉試用
4.ステンシルプリンタ試用
5.フレーム付きステンシル+ステンシルプリンタ+リフロー炉


■注文■

Aliexpressに注文したものが届きました。今まで細かいものは買ったことがあったんですが$100を超えるものは初めてです。


ステンシルプリンターは11月12日注文で11月14日発送、21日着。



リフロー炉は唯一無二の家庭用中華リフロー炉T962の後継機、LY-962Aを注文しました。赤外線+熱風式です。

■到着時破損■

ステンシル・プリンタは2つの意味で難物でした。まず到着時に破損してました。AliExpressにDisputeしたところ「それはFedExによる破損なので、FedExにクレーム入れろ」と。ただ、費用負担は一切交渉の余地なしでしたが、破損した部分の修理についてはかなり親身に相談に乗ってくれました。

ただ、プリンタがないと仕事にならないので、ebay.comにもうちょっと安いやつを注文しました。

で、FedExについても、破損状況を示す動画や写真、なかでも外箱とシュリンクラップと製品に同じ打痕があったことが決定打となったのか、一度も確認無しですんなり返金となりました。ものすごく重い製品で、8mmぐらいの太いボルトがぐんにゃり曲がっていましたので、多分相当高いところから落としたんじゃないでしょうか。

FedExさんに壊れたステンシル・プリンタの処分について確認したところ、捨ててくださいとのこと。譲渡や修理について確認したところOKとのことでした。

AliExpressの業者さんにはその旨を報告し、一件落着。

と思ったら(笑)、前記ebay.comの業者が発送すらしていないことが判明w

相談してみたところ、前記AliExpressの業者さんが15000円ほどで修理部品を送ってくれることになり、直して使うことに。ただ機械経験のないソフト屋風情に破損部分の解体は本当に難物で、ハンマー1本と半日を潰して、なんとか復旧できました。鋼鉄製の土台も微妙に曲がっているので広い面積の基板だと精度が落ちるんですが…私が使う程度ならまぁOK 。

なお「新しいのを買ったほうが安かったんじゃない?」という指摘を禁止します。

■リフロー炉試用■

この時点ではステンシル・プリンターが手元になかったので、手スキージングで試してみました。共晶ハンダを使って温度220度。110Vの機器を100Vで使っているせいか、昇温が遅いのですが、きれいに仕上がりました。

■ステンシルプリンタ試用■

ということで、ステンシルプリンターの試用です。

このあと1時間かかろうとは…。

組み立てと、細かいパーツの役割の理解、基板を取り付けて調整が終わるまでに90分かかりました。ステンシルフレームの取り付けまではわりと見た通り大きな部品を組みててていけば良いのですが、基板を正しい位置に固定する機構に関しては理解するのに時間がかかりました。実作業してて写真がないのですが、
  1. L字型の金具の横にあるネジをアーレンキーで緩めてピンを基板のネジ穴にあわせて交換する。3mm、2.5mm、など4種類のピンが付属しています。
  2. ピンが金具から基板の厚さより少し短い程度、飛び出すように金具の底の部分のネジをアーレンキーで回して、金具横のネジで固定する。
  3. フレームをプリンターに取り付けて高さを調節する。ネジたくさん。ここできちんと水平かつ同じ高さに合わせておかないと密着精度がでません。
  4. 金具を基盤に固定する。その際、基盤のすべての穴にネジが切られているわけではなく、ステンシルの位置と合わせる必要があるので、なかなか面倒くさいです。ステンシルの比較的大きめな穴から基板の特徴的なパターンが見えるように合わせたら金具を基盤に固定し、あとはX-Yステージ調節ノブを回してあわせるのが良いと思いますが…いやー苦労しました。
  5. 最後に基盤の下にある固定ネジでステージが動かないようにする

位置を合わせたら、あとはスキージングです。フレーム付きのステンシルを使うのは始めてですが、「あろえ師匠」が書いておられた通り、基板とステンシルに余計な力をかけなくても密着するので、ずれることや塗ったステンシルが抜けることを気にしないでスキージングできます。実際、少し粘度の高くなったペーストを使ったのですが、VSONや0.5mmピッチコネクタ周辺でも抜けはゼロでした。

箱から出して組み立てて〜また箱にしまうのに軽く2時間かかりましたw まぁ慣れれば30分ぐらいで済むでしょうけど、出しっぱなしにできる作業場がほしいです。試作についてはこれまで通りフレーム無しのステンシルをテープで貼ってスキージングし、生産のときにはステンシルプリンターを使うという運用になりますわ…。

■フレーム付きステンシル+ステンシルプリンタ+リフロー炉■

これまでシリンジでクリームハンダを塗ってVSONを使うと不良率が1割程度あり、フレーム無しステンシルでのスキージングでもパターン抜けが必ず1箇所は発生していました。

写真とってからL1忘れに気づきましたorz

でも、今回パターン抜け、ハンダブリッジ、いずれもゼロでした。いやー…ウデが悪い分は道具に金かけないといかんですね…。

という当たり前の結論ですみません。

2019年1月26日土曜日

Eagle 9.2の怖い現象



上の回路図はUSBコネクタ付近です。図の通り、VCCには何も配線していません。



が、ボード図を見ると、他のデバイスのVCCと接続されています。



で、回路図にダミーの配線を付けてダミーのNAMEをつけると



意図した通り、何も配線が生成されなくなります。

つながっているところは全部チェックしますが、つないでいないところはチェックから漏れやすいものです。今回たまたまAutoRouteをかけたらAirwireとして残ったので気づけたのですが…この基板の標準電圧は+3V3なのでUSBのVccが接続されていたら無事ではすまなかったでしょうね…。

気をつけましょう…。

2019年1月23日水曜日

Eagleのライブラリにパッケージ生成機能が!


いつからあったんですか?この機能。

パッケージのタイプ(SOICとかSOT)を選択して、ピン間隔などを入力すると3Dデータとフットプリントが生成されてしまう。

今までライブラリ探しに費やした時間は何だったんや…これなら確実に探すより早いです。

ライブラリのデバイス一覧画面、3D Packageの一番下にある「Impoprt 3D Package」をクリックするとプルダウンが出て、その中の「Create with Package Generator」を選択すれば出てきます。


いやー、今まで3Dデータなんて無縁って考えていたので、ぜんぜん気づきませんでした。

2018年12月22日土曜日

久しぶりにSwift:サイズの違うUnsafeMutablePointer間の変換(自信なし)

いやー…相変わらずDeprecatedの嵐ですわー。フィックスしますか?って聞いてくれなくていいから自動的に直せやコラ、とついガラが悪くなる今日このごろです。

えーと、MP3への変換をしようとして、lameは16bitだけどoutput streamは8bit、両方ともUnsafeMutablePointerなんだけどサイズが違ったら変換できないよ、って言われて散々苦労したんですが…これでとりあえずビルド通りました。デバッガで見るとpcmBufferとpcmU8Bufferには同じアドレスが入っているのでC言語の慣行的にはOK、ですかね。

let pcmBuffer = UnsafeMutablePointer<Int16>.allocate(capacity: Int(PCM_LENGTH))
let temp = UnsafeMutableRawPointer(pcmBuffer)
let pcmU8Buffer = temp.bindMemory(to: UInt8.self, capacity: PCM_LENGTH*2)

2時間ぐらい試行錯誤してましたわ…。

ググっても見つからなかったので貼っておきます。もっと簡単な方法があればご教示いただければ幸いです。コメント欄、スパム対策の承認制ですので、書き込んでもすぐには表示されません。ご注意くださいませ。