2017年12月08日(Fri)

ブルートゥースキーボードの分解

ブルートゥースキーボード、
そういえばオードリーの春日がよく「トゥース」って言いますね。関係ないですが。

その無線のキーボードですが、机の上で邪魔にならないミニサイズのキーボードでした。
久しぶりに出して使おうとしたら繋がらない。
キーボードは内臓バッテリーを充電して使用するタイプですが、充電は完了しているのに電源ランプがすぐ消えて、明らかに故障です。
IMG_20171208_103217.jpg

どうにも使えなくて頭にきたから、トンカチでたたき壊してドリルでグリグリ穴開けてゴミ箱に突っ込みたい気持ち...
を抑えて分解しました。

IMG_20171208_103255.jpg

電源が入ってもバッテリーの電圧は4.1V出ているので、満充電の状態でありバッテリーには問題はなかった。
コントローラーが正常に動いていないので、修理はあきらめて処分します。
ただし、最後のお勤めとして分解して仕組みを見せてもらいます。

まず、キーボード。
フレキシブルなプリント配線に導電性ゴムの小さなパッドが貼ってあり、キートップを押すと導電性ゴムでパターンが導通する仕組みになっている。
普通のキーボードと同じですね。
IMG_20171208_105240.jpg

タッチパッドの裏側全面に薄いプリント基板が貼ってありました。
タッチパッドのコントローラーが載っています。
面実装のスイッチは、タッチパッドが押さえられると、マウスクリックとして機能する仕組みです。
IMG_20171208_105654.jpg

タッチパッドの表の指で触るところをはがすと、基板のパターンが現れました。
四角のパッドが100個以上並んでいます。

IMG_20171208_105852.jpg

このパターンを見れば、指の位置を認識している原理が分かります。
指タッチによって、4角のパッドの内の幾つかに静電容量の変化が現れます。
それぞれのパッドの静電容量変化の大きさを計算すると指の中心位置が求まるという仕組みですね。

posted by エイ at 12:14 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年12月01日(Fri)

パイソンの学習

パイソンと言えば、思い出すのは子どもの頃のオモチャのピストル"パイソン357マグナム"。
かっこ良い回転式拳銃でした。
時は刑事物映画の「ダーティー・ハリー」が全盛期の頃、主人公は44マグナムをぶっ放していましたが、パイソン357の方がカッコ良く思えたのを覚えています。
123401293274816324775_python.jpeg

主題は、コンピューティングの世界の話です。
Python(パイソン)とは、一つのプログラム言語の名前。

パソコンやスマホ、小さな機器に組み込むマイコンのソフトウェアを開発する際、数あるプログラム言語の中から適切な物を選んで使います。
昔からあるマシン語、BASIC、C言語、C++、Java、Webプログラム用のPerlやPHP、最近ではC++の進化形C#も出ているし、マシンコードにコンパイル(変換)しなくても直接動くスクリプト系言語、RubyやPythonは比較的新しい言語です。
その中でPythonはよく使われるメジャーな言語です。

自分は昔はマシン語で、今はCとC#をよく使いますが、スクリプト系言語は動作が遅いとして敬遠していました。
最近はそうでも無くなってきているらしい。
今回、Pythonを試す機会があったので挑戦してみました。

Pythonを試す機会を与えてくれたのは、マイコンエンジニアがよく見る月刊誌「インターフェース」の最新号2018年1月号です。
MIF201801l.jpg

手持ちのマイコン基板"ESP32 DevkitC"上で組み込み機器用のPythonである"MicroPython"を動かす記事が載っていました。
とても良く書かれた記事で、最初の導入部分から無線を使った応用のしかたまで網羅している。
結果的に、1日という短い期間で新しいプログラム言語を体験できるところまで出来ました。
筆者に感謝しながら、続きをやっているところ。

C言語とかが使えれば、特に他のプログラム言語は必要ないのでは?
と思う方もいらっしゃるようですが、それは違います。
機器を作る際のソフトウェア開発は、得意なもの一つでは足りません。
機器のハードウェア的な制約や性能、開発期間の長さによって、いくつかの選択肢の中から適切な物を選べる方が、より良い結果になることは間違いありません。
使えるプログラム言語が増えるということは、とても有意義なことです。
posted by エイ at 08:37 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年10月14日(Sat)

次期アクションカメラ決定

早朝、かなり暗くなってきた。

IMGP1374.JPG

アクションカメラのリモコンが欲しくて、安物カメラを物色していましたが急展開。
GoProは高すぎだけど、安物カメラのリモコンもイマイチ、防水が弱いのとリモコンで録画状態を確認できない。
録画ボタンを押しても録画がスタートしたか分からないのでは失敗するだろう。

ほかにSonyもあるじゃないか、ということで調べてみると。
Sonyは連続録画時間が長い。
リモコンにモニター画面が付いている。
リモコンの防水も海水は大丈夫のようだし。
先日のカメラを見つけた時に衝動買いしなくてよかった!

しかし新品を買えるほど余裕ないと言うか、このためにお金を使いたくない。
型落ちの在庫か中古をあたってみました。
対象製品はSonyの  HDR-AS30VR(2013年), HDR-AS100V(2014年),HDR-AS200V(2015年) これらの3機種は120分録画でリモコン付きのセットです。
既に製造中止で中古が出回っている。
オークションやAmazonで中古で 20,000円前後で購入できそうです。
その中古も良かったけど、Sonyの現行のアクションカムに HDR-AS50R というリモコン付きのエントリーモデルがある。
つまり、シリーズの中で一番安いの。
hdr-as50_004.jpg
このカメラの特長は撮影時間が160分ある、長時間である。
リモコンが小型になり、軽くなった。
ただし、価格を抑えるためにGPS機能が省かれている。
僕の場合はGPSが無いほうが撮影時間を延ばせるので歓迎です。
ユーザーの声では手ブレ補正が強力だそうです。

新品だと4万円、リモコンのないHDR-AS50だと新品でも2万ちょっとで買えちゃいますね。
リモコンセットの展示品が3万円で出ているのを見つけたので、もう決めちゃいました。
問題は、いつ買うの?展示品なので今しかないですかね。
小遣いが足りないんですが、泣きを入れて何とかして工面できないかな。
posted by エイ at 08:21 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年10月12日(Thu)

安物のリモコン付きアクションカメラ

今使っているアクションカメラのSJCAM M10+ は、Go-Pro Session風でカッコいいんですがリモコンがない。

20171012_2.PNG
録画時間は最長で90分なので、シーカヤックのツーリングで使うには録画/停止できるリモコンが欲しいです。
スマホをWiFi接続でリモコンにできるけど、接続に時間がかかるので使えない。

正規のGo-Proも検討したけど、リモコンが使えるけど高すぎます。
それにリモコンだけで9,000円、どうしてそこまで高くするの?と言うくらい高い。
それでGo-Proの中古品をあたったけど、それでも高い。
やはり安定動作、基本性能が良いので類似品が出回っても強気の価格ですね。

Go-Proもどきの SJCAM はリモコンがないけど、Amazonで他メーカーの良さそうなカメラを見つけました。
Campark というブランド。
同じようなのがタケノコのようにあちこちから出ているけど、大丈夫だろうか?
石橋をたたいて壊すほどの人も地雷を踏んでしまう危険地帯なので、ここは慎重に。

まず目に留まったのがリモコン付きであること。
値段はバカ安で、Go-Proのリモコンの値段で全セットが買える(怖いですね~)。
ここから確認を始めます。
・まず録画フォーマットは、MOV, MP4を選択できるようだ。
・録画時間は1時間以上あるようだ。
・手振れ補正機能はない
・リモコン側には録画しているかどうかわかる表示機能がない
・色の発色は問題ないようだ(Sony製の撮像素子使用)
・YouTubeでの使用レポートでは無難に映っている
・Amazonのユーザープレビューでは、良い評価が多い

20171012_1.PNG

予想される難点
たぶんバッテリー交換時に日付がリセットされる
たぶん4Kなどの高画質モードは使い物にならない
操作画面の日本語表示は文字化けが所々に出るだろう。
リモコンの防水は弱いらしいので、防水対策が必要。

こんなところかな、悪いカメラじゃなさそうです。
使えそうなので、欲しいものリストに入れました。
今すぐは必要ないので、衝動買いせずに必要になったら買うことにしました。
また変えるかもしれないし。

ところで中国製のGo-Proもどきに共通しているのが、高画質モードでは使い物にならないことです。
高画質で撮影すると画像に乱れが出ます。
一流メーカーならそのクオリティーで商品化することはない。
おそらくGo-ProやSonyなどのアクションカメラメーカーは、高性能なエンジン部を自社開発して専用のLSIなどでブラックボックス化している(つまり真似できないようにしている)。
Go-Proもどきの各社はカメラを1から作る技術力、製品開発力がないので、出回っている技術とプログラムの改造で作るしかない。


カメラマウントの調整をしました。
Go-Pro純正品を買うとメチャ高いので、これも互換品を買いますが寸法が合いません。
ヘルメットのマウントに差し込もうとしたら、キツくて入らない。
段差の高さが高すぎます。
IMG_20171012_122636.jpg

ヘルメットのマウントの隙間が3.8mmなのに対して、アタッチメントの段差の高さが4.2mm。
これでは入らないはずだ。
やわらかめの樹脂なので、カッターナイフで削って調整しました。
IMG_20171012_122518.jpg

中国製の安物は安くて生活の助けになりますが、ひと手間加えるということも多々ありますね。
posted by エイ at 12:40 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年09月26日(Tue)

写真とAI

今日の日の出

IMGP1340.JPG

朝夕の写真って難しいですね。
同じ時刻にとった2枚目の写真は、白けてしまいました。

IMGP1341.JPG

1枚目は明るいところでシャッター半押しして露光をきめた。
カメラ音痴の僕でも、それくらいはなんとかできます。

2枚目はカヤックのところでピントを合わせたから露光も暗いところで決まったんですね。
それで明るい空が白けて飛んでしまった。
デジカメにはマニュアル露光モードみたいな機能もあって、それを使えば良いのだろうけど、そこまで使いきれないのでした。

AI(人工知能)で何とかならない?
シャッター握っている持ち主がどんな絵を欲しいか、推測して露光もピントもバッチリの写真が撮れるAI。
でも悲しいかな、AIは人の心は読めないです。

ところで、AIが導き出した結果は、なぜその結果になったのか、コンピューターの開発者でさえ分かりにくいそうです。
なぜなら論理思考によって導き出しているのではなく、様々なパターンを大量に学習することによって熟成された知恵のようなものだから。
AI, 何考えているの?
分からないまま判断が下るのは、ちょっと怖い話ですよね。
この"AIの判断過程の不透明性についての問題"は、まさに問題であるので、
AIというブラックボックスの中で起きている判断を、明確に分かるようにする研究も進められているようです。
posted by エイ at 08:17 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年09月16日(Sat)

テクノロジーのトレンド、 トラブル、トレードオフ

台風18号が近づいています、だいたい18号前後の台風が上陸して吹き荒れることがよくあるみたい。
明日から2日間は荒れるだろうから、その分多めに漕いできました。
今朝の時点で4mの風、風も雲も台風の影響です。
IMG_20170916_051825.jpg

最近のテクノロジーのトレンド(流行)
iPhone X の発表がありましたね。
iphone-x-and-8-release-date.jpg

NHKでも大きく紹介されましたが、全く感動しない内容だったので一言。
iPhone Xでは全面ディスプレーになり、指紋認証をやめて顔認証を採用したそうです。
さもスゴイことのように宣伝されていますが、なんでだろう?
ひっかかるんですよね。
長い話、疲れるからこの辺でチャンネル切りかえた方が良いみたいですよ、またね。バイバイ手(パー)

本題ですが、
有機ELは薄い表示デバイスなので、全面ディスプレイは特に新しい技術ではない。
ガラケーでも一部の機種で使っていたけど、有機ELは暗いところではきれいだけど、明るい屋外では見えにくかった。
ユーザーの使い勝手としては、全面よりも縁があったほうが安心して使えるような気もするが、どうなんでしょうか微妙。
アップルの宣伝にマスメディアが反応して、さも革新があったかのような錯覚を起こしている。
一部の人たちは冷めた目で見ているでしょうけどね。

次に指紋認証をやめて顔認証にした理由ですが、
指紋認証の方がトラブルが少ないに決まっています。
しかし全面をガラスで覆ったたために、指紋センサーを表に配置できなくなってしまった。
それがアップルの本音のようです。
以前からパソコンやアンドロイド携帯でも顔認証は使われていましたが、なぜか一般的では無いようです。
多少のトラブルもあるでしょう、しかし今回、指紋センサーが使えないので、精度を高めて極力トラブルの少ないものにしたのでしょう。
一般人はそんな裏事情を知らないものね。
それを革新技術のように宣伝に使っているのは、したたかですね。
それで、結局どこが情報ツールとして優れているのか?イマイチ見えてこないのでした。

次はヨーロッパ車のトレンドの話
車は全くのシロウトなんですけどね。
これから欧州車はマイルドハイブリッド&48V系の電装へ移行するだろうという話があります。
ハイブリッド車で(HEV)は日本メーカーに勝てないヨーロッパの各メーカー。
各社、寄り合いでゴニョゴニョして、電装系の電圧を12Vから48Vに統一しようという動きがあるようです。
日本車のストロングハイブリッドでは駆動系が300Vあたりに達するのに対して、マイルドハイブリッドは48Vでできるそうです。
電装系も48Vにすることによって、駆動系と電装系の電源を一本化でき、バッテリーをはじめとしたコスト削減が可能。
ヨーロッパ各社が集まって、統一規格を策定中だとか。
知識:
マイルドハイブリッドとは、エンジンのアシストとしてモーターを使う方法であり、モーターだけで走行することはできない。
燃費はストロングハイブリッドに比べると劣るが、比較的シンプルな構造なんで車体価格を抑えることができる。

この流れって、なにかアレに似ていますね。
かつてスキージャンプや複合で日本選手が強かった黄金期。
身長の高い選手が有利になるようにルールが変更された。
水泳界では、日本選手が金メダルを取りそうになると泳法違反で失格になることがよくあった。
その後はルールが緩和されたが、最近ではレスリング競技で西欧諸国がほとんど勝てないので、廃止競技に登ったり。
海外では白人至上主義は根強いみたいですね。
今回は純粋にビジネスでの動きですが、自分たちで規格を作ることで優位に立とうとしている。
ヨーロッパではときどきそういうことがあります。

トラブル(災難)
飛行機やヘリコプターの墜落事故とかは、シーカヤックの事故より100倍は怖い (^^;
僕のトラブルは、もっと身近な平和な話しです。
それは産業用電子部品の危機
少し前から産業界では電子部品の製造中止による生産の継続が難しくなってきています。
大手の電子部品メーカーは、車と携帯電話向けの部品製造に投資を集中しており、より小さい部品へとシフトしています。
それは悪いことではないけれど、従来の部品を次々に製造中止しているので、部品を長く使っていた機器製造メーカーは入手ができなくなり、代替え品を探したり、設計を変更せざるを得なくなってきている。
その傾向がさらに強まって、5年、10年と同じものを継続して作り続けたい産業向けの製品が作りにくくなってきた。
部品が思うようには入手できないトラブルは、今後ますます悪化するように思います。
長い話になりました、まだチャンネル変えない人いたら、次の話もどうぞ。

トレードオフ(便利の代償)
情報ツールは時間をかけずに便利に使いたい。
SMS系での情報は速く伝わって便利な一方で、間違った認識・情報も広がってしまうことが指摘されています。
自分の場合はFacebookを使っていますが、友達どうしているかな?が分かれば充分です。
必要以上の情報まで入れたくない、時間も浪費するし、読まないことにしています。

そのFacebookで便利なことも多いけど、次第にいろんな情報が混じってきて、肝心のことを知るのに時間がかかるようになった。
記事のチェックに時間をかけるのは、もはや便利とは言えず、本末転倒。
必要な情報だけ表示されるようにしたい。
一番の障害になるのは、友達が「いいね!」をするだけで、友達の友達の記事が表示されること。
「いいね!」をたくさんする友達がいたら、一気に情報量が膨れ上がります。
さすがに「友達」の「友達」の「友達」はでませんけど ^^;

この対策が分かりました。
友だちが「いいね!」した投稿を表示しないようにする方法です。

まず、友達の「いいね!」で表示された記事の右上にある ・・・ をクリックする。
20170908-1.png

現れたパネルで、「友達の友達」に相当する人の投稿をすべて非表示にする。
(または、・・・アプリの自動投稿をすべて非表示にする)
これで友達が「いいね!」とかコメントしても、この人の記事は表示されなくなります。

この作業で、次第に不要な情報が出なくなってスッキリしてきました。
とは言え、PRとか、いろいろ邪魔な表示も多いので、耐えきれなくなったらFacebookをやめる時だと思っています。
posted by エイ at 22:18 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年08月11日(Fri)

Windows10 インストールの迷路

中古のそこそこのパソコンにWindows10をインストールする。

もともとはWindows7のパソコンでしたが、このあと何年も使うパソコンなのでWindows10で使います。
(Windows7のサポート終了が2020年1月、Windows10は2025年10月の予定)
128GBのSSDカードを持っているのでSSDにWindows10をインストールすることにしました。

このパソコン、DELL OptiPlex 9020(スリムタワー)には、少し無理して大きなファンが着いている。
600x450-u17056090003-1.jpg

600x450-u17056090003-4.jpg

大きなファンは回転速度が低いので静音なのです。
このパソコンは、ほとんど無音なので静かな部屋で使うのに向いています。

OSインストール準備
まず、Windows10のインストールイファイルをマクロソフトのダウンロードサイトからダウンロードしてDVD-Rに焼きました。
この時点ではHome/Pro版の区別がない、プロダクトキーの入力で判別される、と聞いています。

最初は順調でしたが、ここで初めての場面に出くわした

IMG_20170804_110916.jpg

自分の持ち物だから「個人用に設定」でいいんだよなあ。
待てよ、
組織用に設定すると -> 電子メール、ネットワーク...組織がこのパソコンを完全に制御できる...
どういうことだろう?
管理者権限を持つユーザーを登録しておいて、ネットワーク越しにログインできるようにする、ということか?
これはひょっとしてHome OSとProの違いじゃないの?
ここがHome OS と Professional OSの分かれ目なのか?
或いはPro OSなのに、ネットワーク越しの管理が無効になる設定なのか?
分かりやすく表示しないで、なぜぼかす?マイクロソフト

ずっとProを使ってきたし、ネットワーク越しのアクセス上Proじゃないとサポートされていないアプリももある。
ここは慎重に、組織用の設定にしてみよう。

と思って進んだら迷路に
マイクロソフト関係の登録に使っているメールで、ログインしたができない。
まともなメールアドレスではない、と叱られた。

IMG_20170804_114853.jpg
仕事先のメールもはねられた。
そりゃうちの会社は吹けば飛ぶような零細企業ですが、まともですけど相手にしてくれないレベルなの?
どんなメールなら良いの? 最後が .go.jp とか?
訳の分からんチェックに妨げられて進まないので、前の画面に戻って「個人用設定」を選ばざるをえない。

でも一応 Pro版としてインストールされていました。
やはりHomeとProはプロダクトキーで判別されるようです。

パソコンへのログインは、これまた迷路のようで、マイクロソフトアカウントでログインする方法と、ローカルユーザー(自由な名前)でログインする方法がある。
マイクロソフトアカウントは長ったらしいパスワードなんだけど、4桁の数値(ピンコード)でログインできるようになる。
長ったらしいパスワードしか設定できないようにして、ログインは4桁数値で簡略化する...?
じゃ、そもそも長ったらしいパスワードは要らないんじゃないの?
相変わらず、なんじゃこれ...なところが多いWindowsのインストールでした。

posted by エイ at 08:57 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年07月30日(Sun)

パソコン入れ替え準備

自宅のパソコンはWindows10で安定して動いてはいるが、起動が遅くプチ停もたまに出てきた。
元々が中古を改造したものなのでシステムが古く、もう限界です。

新品を買うほど余裕は無い(他に買いたい物色々ありますし)、中古でも充分なので色々当たってみました。
Core i5または i7 で第3世代以降のものであれば、マザーボードのチップセットも比較的新しく、システム全体の性能が高い。

CPUの性能を調べるときに参考にしているのは、ここのCPU Benchmarksです。
ここの「High End CPU」にランクインしている物であれば、そこそこの性能があります。
なおかつ、世代の古い物は除く(i5 , i7 でも後ろの型番が3000未満だと、今のハードとしてはちょっと古すぎる)

ヤフーオークションで捜して、買うの信頼のある中古ショップ、というパターンで成功していたが、今回はヤフーオークションでも良いショップを見つけたので、入札してみました。

いつも、「ここまでなら出せる」という価格で入札は一発です。
20170730-2.JPG

CPUがCore i5 4570 、かなりいい線のCPUです。
表示性能も良く、ディスプレイポートが2個、USB3.0もありで、Windowd7 64bit OS。
DELLは作りがしっかりしているので、故障しにくい。
それと値段的に、この線ならということもあって入札しました。

23,000円で入札して、結局、落札して22,000円ほどになりました。
あとは、届いたら面倒なソフトのお引っ越しが....。
先にWindows 10にした方がよいかな?
Windows7->10の無償アップグレード期間は終わっているので、これまたヤフーでライセンスを購入してWindows10にします。

posted by エイ at 21:36 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年05月03日(Wed)

WiFi電波を丸見えにする便利なアプリ

WiFi無線がらみの仕事を始めるにあたり、お手軽にWiFiの電波の状況を診断できるツールが欲しい。
そこで、スマホのアプリを調べてみると、なかなか良さそうのものがあります。

単純に電波強度を表示する物から、解析までできる物、いろいろ出てきましたが。
これは良いです。
WiFi Analyzer (同名のアプリもあり要注意)

20170503-1.JPG

Andriod版のアプリです。
最初に無償版をインストールしてみて、画面のように自宅のWiFiの電波がよく分かりました。
WiFiルーターに近づくと電波が強くなるのもリアルタイムで分かります。
お隣のWiFiも弱く入ってくるのが分かります。

解析結果を見ると、自宅のルーターの複数チャンネルがラップしているので、チャンネルを変えた方が良いとアドバイスが出ました。
また、ネットワークに繋がっている機器の一覧も詳細に表示できます。
これは良い。
無償版は変な広告が入るので、333円払って有償版を購入しました。

お隣の方に移動すると、お隣のWiFi電波が少し強くなり、もう1個別の電波も見えた。
2階に上がっても自宅のWiFiの強度はそこそこあるので使用可能。

これでWiFi機器開発の測定器は準備できました。
タグ:電子工作
posted by エイ at 11:31 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年04月12日(Wed)

モバイルオシロの10:1テストリード製作

前の記事で取り上げたモバイルオシロ"DSO138"は、ケースも作ってご機嫌なオシロですが、プローブは単純なリード線なので減衰率は1:1です。
観測可能な電圧は50Vまでです。
家電のAC100Vの波形も観測できるようにしたい。
そうなると10:1プローブが必要です。

一般のオシロスコープ用のプローブを使っても良いですが、プローブがでかくてケースに格納できなくなる。
そこで10:1プローブを作りました。

DSO138の内部抵抗は1MΩで一般のオシロスコープと同様です。
したがって10:1プローブの抵抗は9MΩ、容量を補正するコンデンサも必要です。
こんなイメージ。

techref22_img01.jpg

プローブ内の抵抗Raの9MΩは、3.3M, 3.3M , 2.4M の直列接続で作りました。
Ctはトリマーコンデンサが良いのですが、あいにくそのような便利な物は持っていません。
手持ちの積層セラミックコンデンサで間に合わせます。

プローブの本体は、先日Banggootで買った不良のテスト棒です。
ひどい製品でしたが、テスト棒本体は使えるので再利用します。
IMG_20170411_115414.jpg

IMG_20170411_133215.jpg

問題はCtです、10:1プローブには10pF前後が使われているようです。
幾つか試して、いい定数を探すしかありません。

Ctを12pFで作ったら、3.3Vの校正波がこんなに歪んでしまった。
12pFでは容量が大きすぎたようです。

IMG_20170411_135230.jpg

10pFより小さなコンデンサがないので、直列接続して合成容量で小さな容量を作ります。

IMG_20170411_154119.jpg

結局、10pFを4個直列にして200V耐圧で2.5pFのコンデンサを構成しました。
200Vの測定を考慮して、配線の全体において人体との沿面距離を確保します。

IMG_20170411_154452.jpg

容量補償コンデンサの耐圧は、トータルで300Vほど必要など、部品耐圧の理解、高電圧の取扱いが分かる人向きの工作です。
今回は、データ上の耐圧が約250Vで、ややあぶない設計ですがAC200Vでテストして、使用は100Vまでとすれば問題ないでしょう。
AC200Vは画面上の波形が切れますが、ピーク検出はできています。

IMG_20170411_135835.jpg

AC100Vの波形観測は問題なくできるようになりました。

IMG_20170411_140052.jpg

市販の10:1プローブで見た校正波。

IMG_20170411_193607.jpg

製作した10:1テストリードで見た校正波。

IMG_20170411_193755.jpg

結局、容量の調整で何度も組み直すことになり、一日がかりの工作になりましたが、使用範囲が広がりました。
リード棒の先っぽが、ちょっとケースからはみ出るんだよなあ。
先っぽを削っちゃおうか。
タグ:電子工作
posted by エイ at 07:24 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年03月25日(Sat)

モバイルオシロ -完成形-

先日紹介した、オシロスコープのDIY工作キットは、なかなかの良い物でした。  → モバイルオシロ
最終的にはバッテリーを積んでモバイルオシロにしようと鋭意作成中でしたが、完成したので紹介します。

ジャーン!
IMG_20170325_114319.jpg

まだ、操作表示のラベルを作っていないので完全ではないですが。
リチウムイオンバッテリーに充電回路も積んで、モバイルオシロとして完成しました。

底板にはバッテリーと充電回路、DCDCコンバータの基板を固定しています。
このバッテリーは、先日分解したスマホから取りだしたものです。  → お釈迦になったスマホの分解

IMG_20170325_103203.jpg

充電基板にはリチウムイオンバッテリー保護コントローラーも載っており、過放電等のトラブルを防いでくれます。
普通の単セル(3.7V)のリチウムイオンバッテリーの端子は、だいたいコネクターで3つの電極に出ています。
その内の両端の2極が電源端子で、真ん中の電極は電圧検知用のようですThermal端子で充電時の異常温度を管理してるらしいと教えてもらいました。

このように、ハンダ付けで電源を取り出せば、充電可能バッテリーとして再利用できます。
IMG_20170325_104124.jpg

ケースは3Dプリンターで作った物ですが、自分が力を注いだところはキャップと操作ボタン類です。
特にキャップにはヒンジがあり、プローブやミニドライバーなどを収納して、ワンタッチで閉じることが可能です。

IMG_20170325_114129.jpg

収納状態
IMG_20170325_130405.jpg

キャップは、測定時の傾斜スタンドの役目も持っています。

IMG_20170325_114345.jpg

モバイル感覚の持ち運びで、すぐに測定に入れるので重宝するかも知れません。
バッテリーでの駆動時間は4時間以上ありました。
オシロを使う作業は、ほとんど30分以内に終わるので、余裕がありますね。

あとは車の工具箱の横に放り込んで置きますが、役に立つ場面は訪れるのだろうか?

まあ、仕事の出張時に使うツールとしても使えそうですから、その時に目の肥えたお客に「そのオシロ変わってますね」とかなんとか。
...で、ドヤ顔で自慢しちゃう、いや自慢はいかんな、自ら評価を下げる墓穴やな。
自慢はここだけにしておこう。

−追記−

FBのエレクトロニクス工作グループ「Amazon、ヤフオクでも買える掘り出し物電子部品」で発表したモバイルオシロのデータです。
こちらに置いておくので自由に持っていってください。


このケースの大きさだと、ABSフィラメントでの造形は難しいかも知れないけど、私の場合は夏の車中の高温対策でABSで作ります。
欲言えば、パネルシートを上手に作れたら、おもちゃ感が消えて本格測定器に見えちゃうだろうな!
フィルムのカッティングマシンとかレーザーカッターとか、難しそうだけど欲しくなっちゃうね。

この工作での注意点は、一部の製造が管理外で行われていること(特に中国生産であること)とパワーのあるリチウムイオン電池を使うこと。
最悪は発火に至る事故もあり得ることを自覚しなければなりませんね。
回路の確認と部品の選定、工作は慎重に行いましょう。
過熱検出のアラームまで実装できたら完璧じゃないでしょうか。

このキットは、エレクトロニクス工作の教育にも有効なので、自腹で買って会社の新人に作らせることにしました。

タグ:電子工作
posted by エイ at 12:16 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年03月08日(Wed)

お釈迦になったスマホの分解

昨年、海水が入っておシャカになったスマホです。
捨てる前の儀式として分解しました。

機種はNEXUS5(メーカーはLGエレクトロニクス)
IMG_20170308_095804.jpg
一番下に映っている小さな円形のパーツは、振動モーターです。
3Vの電圧を与えると、ブーと振動します。

カメラをバラしました、これはレンズの部分です。
IMG_20170308_101644.jpg

小さなレンズですが、四方を小さな磁石で囲み、レンズの周りにコイルを巻いてピント調整の動きをします。
このような高度な部品は、日本の部品メーカーから供給されているんじゃないでしょうか。

バッテリーです。
IMG_20170308_102524.jpg
交換不能で、両面テープで貼り付けてありました。
バッテリーには  LG Electronics Japan 株式会社 の印字で、製造は Made in China です。
LGエレクトロニクスは本社が韓国ですが、バッテリーの開発は日本でやったのでしょうか。
このバッテリーは、自作のモバイルオシロのバッテリーとして再利用します。

捨てる前に分解することで、新たな発見がある。
使える部品はリユースする。
自分なりの物の供養であり、なるべくなら環境に負荷をかけたくない思いもあります。

ブーブーの振動モーターはどうしようか?
いろいろ想像しちゃうけど、ブルブル、あんなことには使わない。
(裏のルートで、兄さん、いかがですか?)
posted by エイ at 12:16 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年03月02日(Thu)

モバイルオシロ

モバイルオシロ

一瞬で理解できる人:その筋の人ですか?
何となく分かる人:いろいろ経験しておられる知識人。
モバイルまで理解できる人:あなたこそ現代の常識人。 (モバイルオモシロと読まないでね!)
そもそも、どこで区切るのか分からない人:天然でマイペースな楽天家、貴重な存在。

先週くらいにちらっと出た、オシロスコープのDIY工作キット。

20170219-1.jpg

中国から10日くらいかかって届いたので、昨日作ってみました。
製作の難易度は普通くらいですが、本格派の回路で性能もバッチリ出ます。

常識人以下の人向けに説明しますと、正式名は「オシロスコープ」、電気信号を見る測定器です。
テスターも仲間ですが、テスターは電圧が何ボルトかを表示するモノ。
オシロスコ−プは、その電圧の変動をグラフのように表示して、観測できるモノです。

写真は、リチウムイオン電池で駆動したところ。
テスト用の信号が見えています。(校正波形といって、オシロ自身が出力した信号です)
IMG_20170302_092435.jpg

電源端子は9Vですが、バッテリーとの間にDC-DCコンバータを挟んで駆動しました。
USBからの給電も出来るので、DCジャック9VとUSB,バッテリーのトリプル電源対応です。
これは車の工具箱に入れておきたい。

ケースは3Dプリンターで作る予定なので、出来たら紹介しますね。
posted by エイ at 12:51 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年02月19日(Sun)

はまり始め

なかなかカヌーの話にならず、ごめんなさいね。

いろんな物にはまったりしますが、いまちょっとはまっちゃった。


20170219-1.jpg
オシロスコープの激安キットです。
テスターみたいに小型でバッグに入れておけるので、車載ツールとして常備する目的で購入しました。
まだ到着していませんが、組み上げてファームウェア(プログラム)もいじってみたい。

他にやることがいっぱいあるんだけど、つい道草がロングウォークになって、本線から脱線しちゃいます。
分かっちゃいるけど、この性分はなんともならんので...

脱線した分、見聞知識が深まることもあるので、いっそのこと没頭して早めにけりをつけます。
この開き直りの境地。
言い訳にも何にもなってないね。
posted by エイ at 11:49 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年02月11日(Sat)

とうちゃく〜!

今月の後半に新しいシーカヤックが加わる予定ですが、その前に。

3Dプリンターを新調しました。

RaiseN2.JPG

玄関をふさぐほどの大きな梱包で、家族もびっくりの大型3Dプリンターです。
カヤックの新艇よりちょっと高いお値段で、個人ではちょっと手が出ない代物。
最初に買った3Dプリンターは研究用の組み立てキットでしたが、今回は海外メーカーの最新3Dプリンターです。
特に革新的な進歩はないけど、精度が向上して300mm角の大きなサイズまで製作可能。
これで、試作パーツから最終製品まで作っちゃおうと購入しました。

これまで同様、フィラメントという糸状の樹脂を溶かすタイプですが、溶融ノズルが2ヘッドになっています。
さっそく試し造形してみました。
メカの設計が良いので、振動が無く移動音も静かです。

軽四からプリウスαに乗り換えたくらいの差かな?
車の経験上、それ以上の車格表現が出てこない (汗)
タグ:電子工作
posted by エイ at 15:04 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年02月04日(Sat)

自動運転・奥能登で公道実証実験中

今日は良い天気でしたが、車の屋根にカヤックを積まずに能登方面へ出向きました。
というのも今回は仕事関係なので、はあ〜。

能登半島先端部では、公道を使った自動運転の実証実験が進んでいます。
穴水町の文化センターで、その記念講演を聞いてきました。
(そのために穴水まで行ったのではないんですが、ついでに)

金沢大学の研究グループが数年前から、公道(人も車も普通に往来している)で全自動の自動運転の実証実験をやっています。
多分トップレベルの研究だと思います。

IMG_20170204_130336.jpg

奥能登の珠洲市のあたりでは、過疎化に加えて高齢化が進み住民の移動手段の確保が課題になりつつあるところです。
今までの実験で、役場から病院までの6km区間で自動運転の実証を重ね、次第に範囲を広げているようです。

車はプリウスを使っています。
スタートボタンを押すと、自動的にサイドブレーキが外れ、シフトレバーが動いて走り出します。
人間はハンドルの上に手をかざしているだけで、信号や交差点での安全を確認しながら車は走ります。
路肩に停車中の車をよけたり、遅い車を追い越したり、様々な事象に対応できています。

研究者への質問の機会があったので、自動運転にAIは必要な技術なのかどうか、聞いてみました。
信号の判断など物を認識する部分はAIを使うけど、運転の判断は作成したプログラムで判断しているそうです。
運転の判断までAIにやらせると、何をしようとしているのか分からなくなるので、そこは運転プログラムの方が良いとのこと。
AIの中でも画像の認識という部分に限って利用するということですね。
これは意外でした、もっと中枢部分に使われていると思っていたから。

カーナビのような装置に目的地や経由地を入力すれば、自動でそこまで運転してくれるそうです。
ただ、激しい雨や雪道などでは自動運転ができない場合も有り、今後の課題です。
数年後には、一般利用者を病院まで送り迎えするような、エリアを限定した利用が始まるかもしれません。
posted by エイ at 23:44 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年01月25日(Wed)

次は人工知能か?

IoTだなんだと政府とか企業とかが音頭を取っていますが。
それで騒ぐ時期はとうに過ぎています。
IoTは自然に浸透する物であって、騒ぐような物ではないのです。

それよりも、技術者がこの先、避けて通れないのがAI(人工知能)でしょうね。
みなさんも既にGoogleやAmazonの人工知能に出会っています。
ほら、「あなたへのお薦めのニュースです」のアレとか「あなたへのお薦めの商品です」と出てくるおせっかいなコレなど。

会社を個人経営している人だったら、会計・税務処理なんかAIがやってくれると助かりますね。
いろんなAIがあります。
画像の中から特定の物を探し出すもの、
介護ロボット、お年寄りの話し相手、ゲームの相手、
車の運転、アメリカ軍などは戦略にAIを取り入れているそうですね。

20161006221942.png

会社経営は戦略に長けたAIにお任せして、現場の働き手は人間とロボットの共同作業?
というようなAI的企業、そんな時代がやってくるんじゃないかと思います。
そうなると、人間の働く場所が..と不安になる必要はないでしょう。
AIは無給で働いてくれるので、経営・事務の経費が下がり、会社は一般従業員へ手当を回しやすい。
農業・漁業など一次産業も同じように、AIを使うことで経費削減になる上、現場で働くことに専念でき、収益が増えると見込まれる。

AI社会での心配は、
優れたAIを保有する企業だけが生き残るのか?というものです。
大臣とか「海」を競技場に選ぶ日本カヌー連盟とかはAIに入れ換えた方が公正で頭良いし。
立法府の議員は人じゃないとね、AIは法律顧問として参加してもらいましょう、線引きは必要かなと思います。

まあ、そんな心配がどうなるかなんてのは僕の死後でしょうから、まずは何かAIの入口を見つけて何か初めてみるか。
posted by エイ at 23:42 | Comment(0) | TrackBack(0) | エレクトロニクス

2017年01月09日(Mon)

ドライブレコーダーとして動画カメラを使う

雨やし、
こんな事していました。
能登島で使った動画カメラの「車載モード」を使って、ドライブレコーダーとして使ってみる。

カメラのモード設定を「車載モード」にしておくと、USB端子に電源が供給されたら自動的に録画がスタートします。
もう一つ、「ループ録画」をonにしておけば、SDカードの容量に空きがなくなると古い録画から順に削除して録画を継続するエンドレス録画になります。
これでドライブレコーダーとして使用出来る。

普通の動画カメラとしても使うので、外しやすいようにダッシュボードに簡易取り付けとしました。
取り付けのアタッチメントは、吸盤着きのスマホホルダーを加工した物です。
20170109-1.JPG

この位置なら運転の邪魔にならないが、あと1cm下げてみよう
IMGP1083.JPG

撮れた動画はこんな感じです。
1280 x 720 のサイズで30fpsの動画(このカメラではやや小さめの動画です)

北陸自動車道・不動寺SA〜白川郷付近(途中カット短縮版)
動画モードを変更したものを繋げたので、途中で再生が止まるかもしれません(下の時間スライドバーを進めると再生できます)

実は、白水湖の下見も兼ねて行ったのですが、冬季は通行止めになり利用できないって事が分かりました。(11月から5月は通行止め)

10分の録画ファイルが作られ、時間の切れ目無く録画されています。
ファイル名に時間が記入されているので、見たい時間の動画を見つけられます。
他の撮影モードは、
1280 x 720 で60fps
1920 x 1080 で30fps
1920 x 1080 で60fps
2Kサイズで30fps
などが使えますが、今回の設定が長い時間取れるし画角は同じなので、これでいいかなと思います。

最大の2K動画で試したら、ワイパーの動きでノイズだらけの動画になりました。
2Kは動きの大きな撮影には向かないようです。(このカメラの性能限界のようですね)
posted by エイ at 21:42 | Comment(0) | TrackBack(0) | エレクトロニクス

2016年12月18日(Sun)

体に悪いから寝よ

10日間くらい、ずっとこんな事してます。

20161218-1.JPG

ラズベリーパイのOSのROM化に悪戦苦闘中。
OSのインストール作業を際限なく繰り返してます。
膨大な時間をかけても、進展が少ない。
要領が悪いのもあって、手間取ってます。

ROM化とは、いつ電源を切っても、何を書き込んでも、最初と同じように立ち上がるタフなシステムのことです。
装置に組み込むコンピューターは、そんなタフさが必要。
地道な作業で、完成しても誰も振り向いてくれない。

今日も時間切れで、遅いから寝よ。


先日、ちょっと時間が余ってドライブレコーダーの物色をしていたら、スポーツカムと兼用出来るタイプがあるんですね。
しかも安い。

20161211-1.JPG

ドライブレコーダーのように5分間の録画ビデオをどんどん作っていくモードと、スポーツカムのように長時間録画するモードを使い分け出来る。
レンズは広角で防水ハウジングも付属。

いいことばかり書いてありましたが、購入したら画角が狭く、広告に偽りありでした。
ドラレコとしては大きな欠陥なので返品しました。
やはり怪しげな価格は、モノも怪しげだと思った方が良さそうです。

もう1個、これなら良さげと思ったのが、GoProのそっくりさんで最もGoProに肉薄していると言われる SJCAM の製品 M10 plus です。

20161218-2.JPG

SJCAMというメーカーはGoProもどきの元祖みたいなメーカーなんでしょうかね?
買った人の評判は良いようです。
これもドライブレコーダーのような使い方も出来る広角レンズのスポーツカムです。
でも今買う時じゃあないんで、とりあえず来春まで我慢します。

いいかげん我慢を覚えなさい、オレ。
posted by エイ at 01:36 | Comment(0) | TrackBack(0) | エレクトロニクス

2016年12月10日(Sat)

12月のエレキ遊び

今日も冷たい雨、冬が本格的になる前はよくこんな天気が続きます。
これが北陸やね。

カヤックの工事もできず、漕ぐ気も起こらず、エレキ遊びです。
ラズベリーパイ基板にサーモカメラを繋いで、遊んでみた。
OSはLinuxです。

「ネオ、これで終わったと思うなよ!」

2016-12-10-182040_1184x624_scrot.png

あーあ、つまんないな〜。
仕事でもしようか。
posted by エイ at 18:49 | Comment(0) | TrackBack(0) | エレクトロニクス

2016年05月24日(Tue)

ビットの話

ひと区切りの数というのは、普通は10とか100ですよね。
お金だったら、100円、1000円とか1万円とか。
その半分の50円、500円、5000円もあるけどね。

安い消耗品をまとめ買いする時は、まあ3個とか5個とか10個?

ふと気付いたんだけど、僕の場合、複数個を注文するときに2個とか4個、8個の場合が多い。
ん?
なぜ3個とか5個とか10個じゃないのか?

なぜかそれくらいの数に落ち着きます。
2個でいいかな?
いやちょっと足りないので3個?
3個だとギリギリなので余裕を見て4個注文しよう。
もう少し使いそうな場合は8個くらいでかな?

なぜか2のx乗だと、気分的に落ち着きます。
ところが8を越えると、10個、20個...なんですね。
オレの頭は8ビットマイコンか? いまは64ビットの時代なのに。
コンピューターのやり過ぎでしょうか?

変だね。
まあ、どちらかと言えば、どうでも良いことだね。

160524-1.JPG
posted by エイ at 11:06 | Comment(0) | TrackBack(0) | エレクトロニクス

2016年04月10日(Sun)

Windows10の不満

もうすぐ花の季節到来です。
IMG_20160409_092018.jpg

IMG_20160409_092007.jpg

Windows10に無償アップグレードしてして、しっくりしないところがいくつか出てきました。
良いようで良くない。
大きな不具合はないけど、少しだけ使いづらくなっている。
今回は、その辺を愚痴ってみる投稿です。

まず最初に感じたのが文字がボケ気味なこと。
Windows7までは、文字はカチっとしまっていたが、なんかエッジのシャープさが足りない感じがします。
これは表現力を高めたつもりが、返って仇になっているのか?
文字サイズも、Windows7のサイズでちょうど良かったけど、サイズを選択できるようになった分、調整しても何かしっくりしない。

最近になって、何かの拍子でWindowsスタートボタンが効かなくなった。
かなり多くの人がこの現象に出会うようですが、これはWindows10のバグのようで、Microsoftで示される解決策では直らないケースが多いようです。
僕のパソコンも直らないままなので、Windowsスタートボタンの代わりに"Classic Start Menu"をインストールして使っています。

時々、動きが遅く感じることも出てきた。
バックグラウンドで何かしているようです。

日本語入力にはATOKを使っているけど、いつの間にか Microsoft IME に変わる。
自動的に変わるのか、何かの操作で変わるのか?
とにかく Microsoft IMEを使わせようとしている感じで、ATOKに戻す作業が増えています。
そして、どうも Microsoft IMEを無効にすることは出来ないようです。

この原因は、何でしょうね?
たぶん、日本語バージョンへのローカライズの不具合も絡んでいるな。
基本的に外国の製品なんだな、思うのでした。

ところで、最近Linuxのコンピュータのソフトウェアを作っているんです。
慣れないので、Windowsでプログラムを編集して、コンパイルはLinux側みたいな、ハイブリッドな開発環境?
自分ももう少しLinuxに慣れないとダメですね。

raspberry.png
posted by エイ at 08:52 | Comment(0) | TrackBack(0) | エレクトロニクス

2016年03月26日(Sat)

ハイテク犯罪ヲボウギョセヨ

残念なことに、"ハイテク"は悪用されやすい。
悪者にだまされないように、しましょうね!

最近、不審なメールが急増しました。
"Document2"という話題のウィルスメールをニュースで見たので、会社の迷惑メールフォルダを見たら2通入っていました。
添付ファイルを開くとパソコンのデータが使えなくなる怖いメールです。

そういえば、僕もメールアドレスを4つ持っていますが、どのメールにも不審なメールが増えました。
こんなのです。
20160325-1.JPG

何かの支払いに関する連絡を装っています。
その他に、国際貨物に関する連絡に見せかける物。
日本語のもあります。
メールの題名もいろいろですが、送り主は相手に添付メールを開かせたいのでしょう。

中には迷惑メールのフィルタを抜けて受信フォルダに入ってくる物があります。
これらは、題名を見ただけで迷惑メールに放り込み、本文すら見ていません。

どう対策するか:
不審メールの共通点は、送り先が誰であるかは分かっていない点です。
知人でもないのに宛先がフルネームで書かれていません。
まず、これが基本的な見分け方でしょうね。

不審メールは、即迷惑メールのマークを付けてメールソフトに学習させます。
やることは、これだけ。
メールソフトの学習機能によって、しだいに同様のメールは自動的に迷惑メールフォルダへ送られて、見なくて済むようになります。

不審メールを見る度に、自分が試されているような気もするんですよね。
その題名や本文を読んで、不安な気持ちになるかどうか?
「お支払いについて」、「お荷物について」とか「○○銀行からの重要なお知らせ」とか
相手の不安につけ込んで添付メールを開かせようとする。
本当に重要な物は郵便で送られてくるので、心当たりのない物は迷惑メール扱いで構わない。

インターネットでのお買い物は便利だけど、こういった悪者につけ込まれないためにも、どのお店で何を買ったかメモなどでちゃんとした管理も必要じゃないかと思います。
上手に利用したい物です。

あ、そうか、ハイテクを一切排除して田舎でスローライフを生きるって手もありですね。
でも僕には無理無理。

posted by エイ at 13:21 | Comment(3) | TrackBack(0) | エレクトロニクス

2016年02月21日(Sun)

グニョグニョグニョーン

先日の「めざせ!2020年のパラリンピアン」
パラリンピックのカヌー競技をめざす瀬立モニカ選手の放送だったのに、見逃してしまいました。
再放送が28日の午後5時30分ということで、タイマーセットです。

平べったいデジタル時計を探そうと思って、売っていそうな店を思い浮かべてみると、「ドンキホーテ」が浮かびました。
あそこなら、怪しげなものも含めて可能性有り、ということで寄ってみました。

それで、目的の時計はちょうど良いのが見つかって、良かったのですが、そのままでは帰れなかった。
店内のデイスプレーにはいろんな物が置いてあって、好奇心旺盛なる私の目が右往左往している。

割り切りパソコン?
なるほど1万円台のパソコンか〜、ネットとオフィス互換ソフトが動くようになっていてテレビに繋いで、う〜ン、いまどきインパクトがイマイチ無いのでした。
おや、その下にはフレキシブルアームのスマホホルダーが、このグニョグニョのアームが結構しっかりと硬くいいね!
IMG_20160220_190658.jpg

お値段も498なので2個、オトナ買いしてしまいました。
何に使うかは、まだ具体的に考えていないけど、カヤック用のスマホホルダーに改造とか...手元作業のライトを自在に出来たらとか...
このグニョグニョグニョーンのアームが役に立つように思って...

あとは、158円のボールペン。
書きやすそうなのがあったので、つい試し書きとかして買ってしまった。

余計な物も買ったので、早々に引き上げようとしたら出口が分からない。
店内に溢れかえる商品で見通しが悪い。
もう買わんぞと、にかく一回りすれば出口にたどり着けるはず。

さて、買ってきた薄い時計は、こんな事に使う物でした。

洗面所のタオルハンガー付き掛け時計。
デザインが良くて買ったのだけど、時計のムーブメントが安物で、時々止まってしまう。
IMG_20160221_170530.jpg

時計は使わなくなっていたのだけど、違う時刻を指している時計があると何か変です。
そこで、この時計を隠して全面に薄い時計を貼り付けることにしました。
時計を直に貼り付けてはメンテナンス出来なくなるので、3Dプリンターでホルダーを作って貼り付けることに。

これを作って
20150221.JPG

こう貼って
IMG_20160221_170827.jpg

時計をセット
IMG_20160221_170840.jpg

こんなちょっとした補修みたいな事に便利に使っています。

近未来ではこれくらい当たり前、DIYはもっと進んで。

さあ、お父さんがホームセンターから壁掛け時計のキットを買ってきたよ。
箱を開けると時計のムーブメントとネジ数本、あとはDVDが一枚だけ。
お父さんは、鼻歌を歌いながらDVDをパソコンにセットして、時計のデザインを選びます。
居間の隅に置いてある3Dプリンターが動き出し、2時間ほどで時計の組み立てキットができあがり。
こんな風になっているかもね。
posted by エイ at 18:40 | Comment(1) | TrackBack(0) | エレクトロニクス

2016年02月07日(Sun)

OpenCV3とパイカメラのメモ

電子オタクに走っているこの頃。

Raspberry PiというLinuxが走るマイコンボードは、安く入手できることもあってDIY電子工作の世界でブレークしています。
このブログの読者には多分あまり関係ない記事ですが、現時点で最新のOpenCV3を取り扱う日本語のガイドが少なく、PiカメラでOpenCV3のライブラリを利用するまでの記事が見あたらないので足跡を残しておこう。

Raspberry Piは名刺サイズのマイコン基板で、フリーの画像処理ライブラリであるOpenCVと組み合わせれば、手軽にコンピュータビジョンを試すことが出来る。
今回は、OpenCVの最新バージョン3で、Piカメラを使ったプログラムを作る手順までを記事にします。
以下、ダラダラと長文になります。

準備編
0. OSは Raspbian Wheezy 2015-05-05です。  SDカードは16GB以上の物が必要です。
1. Raspberry PiにOpenCV3.0.0をインストールする。
2. Pi camera(Raspberry Pi オフィシャルカメラ)を利用するためのライブラリとサンプルのインストール。

Piカメラ応用編
OpenCV3のサンプルのC++ソースに手を加えて、Piカメラを使用する手順まで。

準備編1. OpenCV3.0.0のインストール

これは、他のブログ等で既出の通り
ソースからビルドしてインストールするためのツールを導入
$ sudo apt-get -y install autoconf libtool automake git

必要なツールとライブラリ(OpenCV 3.0をコンパイルするために必要な物)
$ sudo apt-get -y install build-essential cmake cmake-qt-gui pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools

$ sudo apt-get -y install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev libgtk2.0-dev pkg-config

$ sudo apt-get -y install libswscale-dev

sudo apt-get update (インストール済みパッケージの更新)
sudo apt-get upgrade

OpenCVの入手とビルド
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.0.0/opencv-3.0.0.zip
  または
$ wget https://github.com/Itseez/opencv/archive/3.0.0.zip -O opencv-3.0.0.zip

$ unzip opencv-3.0.0.zip
$ cd opencv-3.0.0
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
 (結果表示  Build files have been written to: /home/pi/opencv-3.0.0/build)
$ make -j 4(-jは4コアのPi2だけが可、1時間ほどかかる)
$ sudo make install
$ sudo ldconfig


準備編2. Piカメラのライブラリをインストールし、サンプルプログラム RaspiCamTest をコンパイル、実行する

sudo apt-get install git(既にインストールされていると思われるが念のため)

$ mkdir ~/git
$ cd  ~/git
$ mkdir raspberrypi
$ cd raspberrypi
$ git clone https://github.com/raspberrypi/userland.git
$ cd userland
$ ./buildme

$ cd  ~/git
$ git clone https://github.com/robidouille/robidouille.git
$ cd robidouille/raspicam_cv

opencvのインストール先の違いにより、Makefileを書き換えます
変更前: CFLAGS_OPENCV = -I/usr/include/opencv
変更後: CFLAGS_OPENCV = -I/usr/local/include/opencv

OpenCV2ではこれで良かったが、OpenCV3.xではもう一つ、OpenCV1.xの古いライブラリに対応しないので、レガシーライブラリの参照を削除する
変更前: LDFLAGS2_OPENCV = -lopencv_highgui -lopencv_core -lopencv_legacy  ....
変更後: LDFLAGS2_OPENCV = -lopencv_highgui -lopencv_core  ....

$ mkdir objs
$ make

エラー無く、サンプルコードRaspiCamTest がコンパイルされるので、
Xウィンドー上のターミナルから RaspiCamTest を実行すると、Piカメラの画面(テキスト表示付き)が表示される
(Piカメラのライブラリと環境構築終了)


応用編:OpenCV3のサンプルのC++ソースに手を加えて、Piカメラを使用する手順まで。
OpenCV3.0.0のサンプルコードのコンパイル

例えばsampleA.cpp のコンパイルはこのようにすればよい(pkg-configを使ってヘッダとライブラリの参照先を渡している)
g++ sampleA.cpp -o sampleA `pkg-config --libs --cflags opencv`

注意)OpenCV2.x用のサンプルコードをMakefileを使ってコンパイルする場合、Makefile中のOpenCV1.x対応ライブラリを使用しないよう配慮しないと参照エラーが出て失敗する
(opencv_legacy moduleがOpenCV 3.0からdeprecateになっており、エラーになる)

Pi camera(Piカメラ)のC++用ライブラリraspicam_cvを利用するソースの場合は、準備としてヘッダをコピーしておき
最初は、サンプルのディレクトリ ~/opencv-3.0.0/samples/cpp/ に移動してとりあえず1個試してみる。
$ cd ~/opencv-3.0.0/samples/cpp

一つのサンプルソースをコンパイルしてみる
$ g++ facedetect.cpp -o facedetect `pkg-config --libs --cflags opencv`

実行してみよう
$ ./facedetect ../data/lena.jpg

デフォルトの定義ファイルを参照しているので、ディレクトリを移動してコンパイルした場合は、--cascadeオプションを使って顔認識の定義xmlファイルの場所を指定する必要がある(コマンド実行時に表示されるし、ソースを見ても分かる)

lenaの写真の顔部分に円が描かれれば成功!
20160206.jpg

次に、このfacedetect.cppをもとに、Piカメラからの画像を顔認識させてみる。(いよいよコンピュータビジョンの入り口!)

$ cd ~/opencv-3.0.0/samples/cpp
Piカメラのライブラリ利用準備
$ cp ~/git/robidouille/raspicam_cv/RaspiCamCV.h ./
$ cp ~/git/robidouille/raspicam_cv/libraspicamcv.a ./

元ソースをコピーし、
$ cp facedetect.cpp facedetect_raspicam.cpp
次のように facedetect_raspicam.cppを修正します(// ★ の部分)

#include "opencv2/objdetect.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/core/utility.hpp"

#include "opencv2/videoio/videoio_c.h"
#include "opencv2/highgui/highgui_c.h"

#include <cctype>
#include <iostream>
#include <iterator>
#include <stdio.h>
// --------------------------------------------------------------
// ★raspicam対応
// --------------------------------------------------------------
#include "RaspiCamCV.h"

using namespace std;
using namespace cv;

static void help()
{
    cout << "\nThis program demonstrates the cascade recognizer. Now you can use Haar or LBP features.\n"
            "This classifier can recognize many kinds of rigid objects, once the appropriate classifier is trained.\n"
            "It's most known use is for faces.\n"
            "Usage:\n"
            "./facedetect [--cascade=<cascade_path> this is the primary trained classifier such as frontal face]\n"
               "   [--nested-cascade[=nested_cascade_path this an optional secondary classifier such as eyes]]\n"
               "   [--scale=<image scale greater or equal to 1, try 1.3 for example>]\n"
               "   [--try-flip]\n"
               "   [filename|camera_index]\n\n"
            "see facedetect.cmd for one call:\n"
            "./facedetect --cascade=\"../../data/haarcascades/haarcascade_frontalface_alt.xml\" --nested-cascade=\"../../data/haarcascades/haarcascade_eye.xml\" --scale=1.3\n\n"
            "During execution:\n\tHit any key to quit.\n"
            "\tUsing OpenCV version " << CV_VERSION << "\n" << endl;
}

void detectAndDraw( Mat& img, CascadeClassifier& cascade,
                    CascadeClassifier& nestedCascade,
                    double scale, bool tryflip );

string cascadeName = "../../data/haarcascades/haarcascade_frontalface_alt.xml";
string nestedCascadeName = "../../data/haarcascades/haarcascade_eye_tree_eyeglasses.xml";

int main( int argc, const char** argv )
{
    // --------------------------------------------------------------
    // ★raspicam対応
    // --------------------------------------------------------------
    //CvCapture* capture = 0;
    RaspiCamCvCapture* capture = 0;

    RASPIVID_CONFIG * config = (RASPIVID_CONFIG*)malloc(sizeof(RASPIVID_CONFIG));
    config->width=640;    // → 1280
    config->height=480;    // → 720
    config->bitrate=0;  // zero: leave as default
    config->framerate=0;
    config->monochrome=0;
    // --------------------------------------------------------------
   
    Mat frame, frameCopy, image;
    const string scaleOpt = "--scale=";
    size_t scaleOptLen = scaleOpt.length();
    const string cascadeOpt = "--cascade=";
    size_t cascadeOptLen = cascadeOpt.length();
    const string nestedCascadeOpt = "--nested-cascade";
    size_t nestedCascadeOptLen = nestedCascadeOpt.length();
    const string tryFlipOpt = "--try-flip";
    size_t tryFlipOptLen = tryFlipOpt.length();
    string inputName;
    bool tryflip = false;
 
    // --------------------------------------------------------------
    // ★FPS対応
    // --------------------------------------------------------------
    #define FPS_SAMPLING_SIZE 50
    double fps_sampling[FPS_SAMPLING_SIZE];
    int i;
    for (i=0; i<FPS_SAMPLING_SIZE; i++) {
        fps_sampling[i] = 0;
    }
    double freq = cvGetTickFrequency();
    int fps_idx = 0;
 
    int64 t_pre = cvGetTickCount();
    int64 pre_ping_tick = t_pre;
    // -------------------------------------------
   
   help();

    CascadeClassifier cascade, nestedCascade;
    double scale = 1;

    for( int i = 1; i < argc; i++ )
    {
        cout << "Processing " << i << " " <<  argv[i] << endl;
        if( cascadeOpt.compare( 0, cascadeOptLen, argv[i], cascadeOptLen ) == 0 )
        {
            cascadeName.assign( argv[i] + cascadeOptLen );
            cout << "  from which we have cascadeName= " << cascadeName << endl;
        }
        else if( nestedCascadeOpt.compare( 0, nestedCascadeOptLen, argv[i], nestedCascadeOptLen ) == 0 )
        {
            if( argv[i][nestedCascadeOpt.length()] == '=' )
                nestedCascadeName.assign( argv[i] + nestedCascadeOpt.length() + 1 );
            if( !nestedCascade.load( nestedCascadeName ) )
                cerr << "WARNING: Could not load classifier cascade for nested objects" << endl;
        }
        else if( scaleOpt.compare( 0, scaleOptLen, argv[i], scaleOptLen ) == 0 )
        {
            if( !sscanf( argv[i] + scaleOpt.length(), "%lf", &scale ) || scale < 1 )
                scale = 1;
            cout << " from which we read scale = " << scale << endl;
        }
        else if( tryFlipOpt.compare( 0, tryFlipOptLen, argv[i], tryFlipOptLen ) == 0 )
        {
            tryflip = true;
            cout << " will try to flip image horizontally to detect assymetric objects\n";
        }
        else if( argv[i][0] == '-' )
        {
            cerr << "WARNING: Unknown option %s" << argv[i] << endl;
        }
        else
            inputName.assign( argv[i] );
    }

    if( !cascade.load( cascadeName ) )
    {
        cerr << "ERROR: Could not load classifier cascade" << endl;
        help();
        return -1;
    }

    if( inputName.empty() || (isdigit(inputName.c_str()[0]) && inputName.c_str()[1] == '\0') )
    {
         // --------------------------------------------------------------
        // ★raspicam対応
        // --------------------------------------------------------------
        //capture = cvCaptureFromCAM( inputName.empty() ? 0 : inputName.c_str()[0] - '0' );
        capture = (RaspiCamCvCapture *) raspiCamCvCreateCameraCapture2(0, config);
        // --------------------------------------------------------------
 
        int c = inputName.empty() ? 0 : inputName.c_str()[0] - '0' ;
        if(!capture) cout << "Capture from CAM " <<  c << " didn't work" << endl;
    }
    else if( inputName.size() )
    {
        image = imread( inputName, 1 );
        if( image.empty() )
        {
            // --------------------------------------------------------------
            // ★raspicam対応
            // --------------------------------------------------------------
            //capture = cvCaptureFromAVI( inputName.c_str() );
            // -------------------------------------------
          
            if(!capture) cout << "Capture from AVI didn't work" << endl;
        }
    }
    else
    {
        image = imread( "../data/lena.jpg", 1 );
        if(image.empty()) cout << "Couldn't read ../data/lena.jpg" << endl;
    }

    cvNamedWindow( "result", 1 );

    if( capture )
    {
        cout << "In capture ..." << endl;
        for(;;)
        {
            // -------------------------------------------
            // ★raspicam対応
            // -------------------------------------------
            //IplImage* iplImg = cvQueryFrame( capture );
            IplImage* iplImg = raspiCamCvQueryFrame( capture );
           
            // -------------------------------------------
            // ★FPS対応
            // -------------------------------------------
            int64 t = cvGetTickCount();
            fps_sampling[fps_idx] = (t - t_pre) / freq;
            t_pre = t;
            fps_idx++;
            if (fps_idx>=FPS_SAMPLING_SIZE) {
                fps_idx = 0;
            }
            double total = 0;
            for (i=0; i<FPS_SAMPLING_SIZE; i++) {
                total += fps_sampling[i];
            }
            double fps = 0;
            if (total != 0) {
                fps = FPS_SAMPLING_SIZE * 1000 * 1000/ total;
            }
            printf("FPS: %.0f\n", fps);
            // -------------------------------------------

            frame = cv::cvarrToMat(iplImg);
            if( frame.empty() )
                break;
            if( iplImg->origin == IPL_ORIGIN_TL )
                frame.copyTo( frameCopy );
            else
                flip( frame, frameCopy, 0 );

            detectAndDraw( frameCopy, cascade, nestedCascade, scale, tryflip );

            if( waitKey( 10 ) >= 0 )
                goto _cleanup_;
        }

        waitKey(0);

_cleanup_:
        // -------------------------------------------
        // ★raspicam対応
        // -------------------------------------------
        //cvReleaseCapture( &capture );
        raspiCamCvReleaseCapture(&capture);
        // -------------------------------------------

    }
    else
    {
        cout << "In image read" << endl;
        if( !image.empty() )
        {
            detectAndDraw( image, cascade, nestedCascade, scale, tryflip );
            waitKey(0);
        }
        else if( !inputName.empty() )
        {
            /* assume it is a text file containing the

修正部分終わり


次のようにコンパイルします
(”-L .”より後ろがraspicam_cvライブラリを使用するための指定で、最後の-pthreadはOpsnCV3から必要なので要注意)
g++  facedetect_raspicam.cpp -o facedetect_raspicam `pkg-config --cflags opencv` `pkg-config --libs opencv` -L . libraspicamcv.a -L ~/git/raspberrypi/userland/build/lib -lmmal_core -lmmal -lmmal_util -lvcos -lbcm_host -pthread

実行してみます
$ ./facedetect_raspicam

Piカメラの画像をリアルタイムで顔認識し、顔の中心に円が描かれます。
環境構築で不足したり、別バージョンのインストールなどが邪魔をしなければうまくいくはず。
このやりかたで、OpenCV3とPiカメラにトライしてみてください。
うまくいかなかった方、本ブログではまともにアドバイスできませんので、フォーラム等で質問してみましょう。
posted by エイ at 02:02 | Comment(0) | TrackBack(0) | エレクトロニクス

2016年02月02日(Tue)

ワケありキーボード

いいなあ電子オモチャ、大好きです。
最近はその方面のネタがなくて、というよりラズベリーパイが手に余って消化不良の状態。

そのラズベリーパイ用に小型のキーボードを用意しました。

IMG_20160202_222537.jpg

小型でファブリック調のオシャレなキーボードです。
ちょっとワケあり品で。

本来はタッチパッドのケースとして使う、「7インチ専用タブレットキーボード付ケース」でしたが、USB接続のキーボードとして使えます。
IMG_20160202_222326.jpg

IMG_20160202_222338.jpg

そこで、ハサミでジョキジョキしてキーボード部分を分離すれば、小型のキーボードのできあがり!
IMG_20160202_222449.jpg
Amazonで何と689円 http://www.amazon.co.jp/…/B0…/ref=oh_aui_detailpage_o00_s00…
キーのストローク感もまずまずで打ちやすい。

しか〜し、この作りの安さはただごとではありません。
レザーカバーの中はボール紙にキーボードのパターンとシリコン系樹脂を貼り付けてあるだけのものです。
普通に使えていますが実はこれ2台目で、戻りの悪いキーがあったり...で、当たり外れがありそうです。

posted by エイ at 23:49 | Comment(0) | TrackBack(0) | エレクトロニクス

2016年01月17日(Sun)

机の上

今の机の上。

IMG_20160116_233805.jpg

自宅の机は第2の仕事場。
机の上はたま〜に整理されますが、物が混み合っていることの方が多いです。

パソコンの24インチモニターが横に並ばないので縦に2台繋がり、Raspberry Piという小型のLinuxコンピュータがぶら下がってる。
そのRaspberry Piの設定中なので小さなモニターとさらに2.2インチの小さなTFTディスプレーも見えます。
会社の仕事で飽きたらず、深夜までごそごそやっているこの頃。
好き者ですね。

そういえば、夕方Windows10で困ったユーザーを一人お助けしました。
起動するけど、ログイン画面にならずマウスカーソルだけ見える画面で止まって、どうにもならないというもの。

DELLのパソコンをWindows7から10にアップグレードしたパソコンです。
自宅にうかがって見ると、その通りですが、起動は出来ているもよう。
CTRL+Alt+DELキーで、タスクマネージャ呼び出し画面にすると、ログオフが選択できたのでログオフすると、起動時のパスワード入力画面となり、正常にデスクトップが立ち上がりました。

起動したデスクトップ画面にはエラーメッセージ「DELL FAST ACCESS にはWindows7が必要です」と出ています。
原因はこれでした。
DELLのノートパソコンには、フロントカメラの顔認証でログインする機能がプリインストールされていたのです。
これは使用していなかったけど、Windows10の起動時に、このFAST ACCESSが働いてエラーを起こし、ログインの障害になっていたようです。
FAST ACCESSをアンインストールして解決。

Windows7から10にアップグレードする際は、対応できないアプリケーションがエラーを起こすことがよくあるようですね。
posted by エイ at 00:15 | Comment(0) | TrackBack(0) | エレクトロニクス

2015年12月27日(Sun)

どこでもメニュー

WindowsのOSのバージョンが進むにつれ、スタートメニューの一貫性のなさと進歩のなさが露呈されていますが、僕はそれにうんざりしてスタートメニューは使わなくなりました。
(前記事のクラッシックシェルのメニューも、一貫性を保つのに役立ちますけどね)

スタートメニューの代わりに使っているのがメニューランチャーソフトです。
今日は、僕のお気に入りのメニューランチャーを紹介します。

デスクトップのどこでも、背景をダブルクリックするとメニューが現れる「Orchis」というメニューランチャー。
自分の作業ごとにフォルダを作り、使用するプログラムを部門別にまとめることが出来るので、起動したいプログラムまでのアクセスがすばやくできる。

デスクトップをダブルクリックして現れれた「Orchis」のスタートメニュー
20151227-1.jpg

自宅のパソコンのデスクトップ画面です。
右下の方にOrchisのメニューが現れています。
慣れれば使い方も簡単、優れものです。

「Orchis」は純国産のフリーソフトです。
ここで作っています。 →  http://www.eonet.ne.jp/~gorota/

Windows 8.1/8/7/Vista用です。
まだWindows 10 は対象外ですが、僕のWindows 10のノートパソコンでも動きました。
posted by エイ at 20:58 | Comment(0) | TrackBack(0) | エレクトロニクス

2015年12月25日(Fri)

Windows10でもクラッシックメニュー

新しいBluetoothマウスを接続するために、自分のノートPCをWindows10にアップグレードしました。

開発の仕事にも使うので、そのソフトが動かなければ元のWindows7に戻すつもりで...
それで、問題なく使えたのですが、Windowsスタートメニューが、どうもかったるい。
以前のクラッシックなメニューの方がクイックアクセスに向いているのではないか。

ということで、クラッシックシェルをインストールしました。
最新バージョン(ClassicShell4.2.5)はWindows10にも対応しています。

Windowsスタートメニューは、3種類から好みのタイプを選びます。
下の方で、メニューボタンのアイコンを変更する設定も可能です。

2015-12-22 (1).png

スタートメニューをクリックすると、Windows7のころのメニューが現れました。
やっぱぼくはこっちかな。

2015-12-22.png

posted by エイ at 23:51 | Comment(0) | TrackBack(0) | エレクトロニクス

2015年12月18日(Fri)

プチ嬉しいこと

当ブログに何度か登場している Libre office 
MS Officeもメインで使っていて、ワード・エクセルはまだこちらの方ですが、プレゼンテーションはLibre Impress、ドローソフトはLibre Drawです。
しばらくアップデートをチェックしていなかったが、久しぶりにチェックするとバージョン5.0にメジャーバージョンアップが行われていました。
安定版はまだ4.xだけど、最新版が5.04になっている。
今の4.2のとろ臭いところが気になっていたので、思い切って5.04を使ってみました。 → Libre officeのサイト

これがかなり良い出来映えで、高額なOffice製品のアップデートなどで困っているみなさんには、朗報かも知れない。
ユーザインターフェース、つまり操作上のデザインも垢抜けてきたかな?
仕事でフロー図など書いたりするので、Libre OfficeのDrawを使いますが、このできなら有料ツール並みの仕事が出来そうです。

ちょっと嬉しい出来事でした。

あ、もし気に入ってずっと使うときは、余裕があれば、気持ちだけ Donate(カンパ) しといてくださいね!
このソフトは育てていきたいので、これからも開発頑張ってもらうためにもみんなで少しずつ応援して欲しいのです。

151218_1.jpg
posted by エイ at 21:35 | Comment(0) | TrackBack(0) | エレクトロニクス