解決:Surface Pro 3 でKernek-Power 41が頻発


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/mentai/www/ore-kb.net/wordpress/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524

Surface Pro 3でスリープしていると、途中でシステムが再起動してしまうという症状が頻発したのでメモ。

イベントログを見ると以下2種類のエラーがほぼ毎日発生していた。どうも、購入してすぐから発生していたみたいです。

一つ目のエラー。ネットで調べるとKP41病という恐ろしい症状らしい…。原因も、メモリが悪い、グラフィックカードが悪い、電源が悪い、と人によって様々で対処法がわからない。ちなみに、BugCheckCodeは、159が最も多く、ほかには0と335があった。

ソース:Kernel-Power
ID:41
システムは正常にシャットダウンする前に再起動しました。このエラーは、システムの応答の停止、クラッシュ、または予期しない電源の遮断により発生する可能性があります。

二つ目のエラー。

ソース:WER-SystemErrorReporting
ID:1001
このコンピューターはバグチェック後、再起動されました。バグチェック: 0x0000009f (0x0000000000000003, 0xffffe0000319a3d0, 0xfffff80354643c80, 0xffffe00005e41520)。ダンプの保存先: C:\windows\MEMORY.DMP。レポート ID: 090114-8187-02。

以下を試してみたところ、それっきりエラーが発生しなくなりました。

どちらが原因か、それとも組み合わせか…。ちなみに、ESETはそのあと再インストールしたけど再びエラーが発生することはなくなりました。

なんか釈然としないけど、解決。

解決:Surface Pro 3 で「USB xHCI 対応ホスト コントローラー」がスリープしない


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/mentai/www/ore-kb.net/wordpress/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524

今どきの環境と新しいOSの勉強がしたくて、今年の7月にSurface Pro 3を購入。いろいろ格闘しながら約3か月が過ぎました。

使っていくなかで問題点もちらほら、その問題点の中の一つ、スリープ状態(Connected Standby)してもバッテリーが消費し続けられてしまうという現象に悩まされ続けて、何とか解決したのでメモ。Connected StandbyはInstantGoに改称されたらしいけど、まったく広まってない感がすごい。

コマンドプロンプトで、

POWERCFG /SLEEPSTUDY

すると、スリープ時のログがsleepstudy-report.htmlが作成されるのでブラウザで開いて確認。

だいたいいつもこんな感じで、スリープ中にバッテリー残量がガンガン下がってる状態。もれまくりです。

sleepstudy1

内訳を見ると、「% LOW POWER STATE TIME」が0%になっている。すなわち、スリープ中に全く省電力な状態に落ちてない。

「USB xHCI 対応ホスト コントローラー (\_SB.PCI0.XHC)」の「%ACTIVE TIME」が100%になっている。おまえかー!

sleepstudy6

ホストコントローラ自身が悪さしているとは思えなかったので、恐らくホストコントローラ配下ぶら下がっているデバイスのせいなんじゃないかと思う。念のため、ホストコントローラの「電源の管理」の設定を見ても、「電力の節約のために、コンピューターでこのデバイスの電源をオフできるようにする」にはチェックが入っていた。

さらに内訳を見てみると、「No active components. 」…なんで?

sleepstudy7

USBViewで、ホストコントローラ配下に何がつながっているのか確認してみる。

「USB入力デバイス」というのがタイプカバー(キーボード)で、タイプカバーを外しているときにも症状が発生するので問題なさそう。

「Marvell AVASTAR Bluetooth Radio Adapter」が怪しいかな…。ちなみに、このBTアダプタの「電源の管理」の設定も、「電力の節約のために…」のチェックが入っていた。

usbview

試しにBluetoothをOFFにしてスリープしたところ、「% LOW POWER STATE TIME」が100%になった!

sleepstudy5

Bluetoothが使えないと困るので、さらに切り分け。そういえば、スマホとペアリングしていたのを思い出して、ペアリング解除してみる。

sleepstudy4

やった!やはりスマホとペアリングしていたのが原因だったみたい。

sleepstudy3

念のため、再度ペアリングしたら症状が再発し、解除したら治ったので間違いなさそう。

まとめなので一気に書いているけど、情報がほとんどなくて、ここに至るまで長い道のりでした。これで安心して運用できそうです。

 

 

ZEROPLUS LAP-CをWindows 8.1/10で使う


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/mentai/www/ore-kb.net/wordpress/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524

2016.03.09追記:Windows 10 でもドライバをインストールできました。確認したのは、lac_s31303_all(V3.13.03)です。

また、V3.13.03からインストーラに全てのプロトコルが入って、しかも全て無料になってるようです。

[2016-02-19] LAP-C V3.13.03 Release
http://www.zeroplus.com.tw/logic-analyzer_en/news_detail.php?news_id=1906

ロジックアナライザのZEROPLUS LAP-Cは、ドライバがWindows 7までしか対応しておらず、Windows 8.1では認識してくれなかったので対応方法をメモ。

探し方が足りなかったのか、日本語の情報が見つかりませんでした…。

追記:キーワードを変えたら見つかりました。しかも去年の記事。
ZEROPLUSロジックアナライザをWindows8で動かす方法

引用元はこちら。

Re: Zeroplus LAP-C 16032 Logic Analyzer Logic Cube

2016.03.09追記:ソフトウェアがバージョンアップされたので、現行の手順に合わせました。変わった箇所は、赤字の部分になります。

  1. ZEROPLUSのサイトから、「Technical Support」へ移動し、機種に対応するインストーラをダウンロード (私の場合は、LAP-C 16032なのでlac_s31303_all(V3.13.03) をダウンロードしました)
  2. ダウンロードしたアーカイブを解凍
  3. 解凍したファイルの「Application Setup」フォルダから「Data1.cab」を開き、その中にある以下の3つのファイルを「C:\Program Files (x86)\PC-Based Instrument\ZEROPLUS\DRIVER\」へコピーし、それぞれリネーム
    • bulkusb.inf8 → bulkusb.inf
    • bulkusb.sys7 → bulkusb.sys
    • bulkusb64.cat3 → bulkusb64.cat
  4. デバイスマネージャでLAP-Cのデバイスを右クリックし、「ドライバー ソフトウェアの更新」を選択
  5. 「コンピューターを参照してドライバー ソフトウェアを検索します」を選択し、「C:\Program Files (x86)\PC-Based Instrument\ZEROPLUS\DRIVER\」を指定

自分の環境では、以上の手順で、めでたくLAP-Cを使うことができるようになりました。

LAP-C

 

 

 

小さい7セグLEDを買った


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/mentai/www/ore-kb.net/wordpress/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524

Sparkfunで、HPのとても小さい7セグLEDの「QDSP-6064」を買いました。

10年くらい前に秋葉原の鈴商という店で「QDSP-6065」という5桁のものを買って、温度計を作ったんですが、小さいしかわいいし、また作ってみたいなぁ…ということでずっと探していたもの見つからず。(eBay等にはあったけど結構高め)

そんな中、Sparkfunに何故か入荷しているという情報を見つけて速攻で注文したのでした。初めてのSparkfunです。決済は安心のPayPal。$2.66×10個で、支払額は¥3,136でした。

# 最近、スイッチサイエンスでも取り扱いを始めたようです。

4/1に注文して、4/2に出荷通知、4/14に到着という流れでした。こんな感じの、真っ赤な箱。

OLYMPUS DIGITAL CAMERA

中には無造作にLEDが。

OLYMPUS DIGITAL CAMERA

袋から出したところ。リードが妙に綺麗。

OLYMPUS DIGITAL CAMERA

平行して、RSコンポーネンツからATtiny2313A-MU(MLFパッケージ板)を注文してました。

小さいLEDには小さいパッケージが良いかなぁと思ったんですが、予想以上に小さい…。

OLYMPUS DIGITAL CAMERA

万能基板に載せてみたところ。2.54mmピッチの穴が大きく見える。

OLYMPUS DIGITAL CAMERA

銀行の振り込みカードがちょうどチップと同じ厚みだったので、高さを揃えてUEW線をハンダ付けします。よく見えないし、線がポロリするし、心折れそう。

OLYMPUS DIGITAL CAMERA

何とか全部付け終わった。

OLYMPUS DIGITAL CAMERA

点灯テスト。鈴商で買ったQDSP-6065はそんなことなかったのですが、これは数字が歪んでいてちょっとかっこわるいです。模造品だったりして!?

OLYMPUS DIGITAL CAMERA

動画にしてみました。これに1-Wireの温度センサを付けてみたいけど、LEDの消費電流を考えるとあまり、実用的では無いかなぁという感じです。

YouTube Preview Image

Yamaguchi Mini Maker Faire へ参加してきた


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/mentai/www/ore-kb.net/wordpress/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524

Kick4として、Yamaguchi Mini Maker Faire に参加してきました。

ということで、レポートです。全部の写真は、こちら (Yamaguchi Mini Maker Faire の写真 – Picasa)からどうぞ。

カメラを忘れてしまって(充電器は持ってきたのに…)、携帯のカメラで撮影しているので残念画質です。

まず、会場内の様子はこんな感じ。

2013-08-11 15.09.24

成松さんの「光る筒」と、キット頒布(Kumaduino、USB電流計、FTDI Basic Breakoutもどき基板)。

くまモンはお子様に大人気でした。

2013-08-10 16.55.51 2013-08-10 16.55.24

ついにリア充になったJuJuさんの、「FLIS-UNO/e」を使った「ウェルカムボード」と、「FLIS-MATRIX」の動画デモ。ウェルカムボードのモジュール90個半田付けは心が折れかけたとか。ウェルカムボードの中のイラストは奥さんによるもの。

2013-08-10 16.54.11 2013-08-10 16.54.26

僕の展示、「パタパタ時計」。一昨年のMakeで1桁分作って燃え尽きてから、設計をやり直して何とか全桁揃えました。駆動用のコイル巻き、文字盤、基板、ケース加工すべて手作業です。もう作りたくない…。

展示中、ちびっ子が来て手で桁をずらししまくるので、途中で手動再設定ボタンが追加されました。

2013-08-10 16.56.07

PCから赤外線LEDで時刻データと電光掲示板のビットマップデータを定期的に送っていて、それを各桁の赤外線受光モジュールで自分に必要なデータだけ拾い、文字盤をパタパタさせています。1回転させるのに必要な10個のネオジム磁石は、ダイソーの10個入りマグネットピン。

2013-08-10 16.42.16 パタパタ時計基板 パタパタ時計文字盤

前回からの展示。温度計と電光掲示板。右側、暗くてよく見えないけど真ん中と続きで文字が流れてます。

2013-08-10 16.56.55

九州工業大学 情報工学部さんの「Arduino簡易オシロスコープ」。画面上で細かい操作ができたり、FFTが使えたり、UIにPCを使っているメリットを上手く生かしている感じです。Arduinoだからサンプリングレート低いんじゃない?と思ったけど、等価サンプリングモードを持っていて、その場合1Mspsまで測定できるそう。

2013-08-11 17.12.22 2013-08-11 17.12.15

TETRASTYLEさんの「ケロミン」。iPadのシーケンサ(?)が繋がっていて、口の開き方で音程を変えながら歌えるというもの。お隣のブースだったので、ずっと歌声が聞こえてました。

iKeromin(左)とケロミン(右)

続いて、「Tour de Tetra 2」。Zig-Beeが3ch付いていて、シーケンサの演奏パターンを変えられます。くねくね回しながら演奏するのが新しい。他にも、今は無きコンバットサウンドキットの音をスマホで再現したアプリもあり、胸が熱くなりました。

2013-08-11 16.53.14

屋外展示。暑い。

外は広い (そして暑い) 屋外展示

屋外展示の「ピタゴラトイレットペーパー」。考えてるうちに引っ込みそう。

ピタゴラトイレットペーパー ピタゴラトイレットペーパー ピタゴラトイレットペーパー

丸尾 龍一さんの「デコチャリ」。

デコチャリ運転席 丸尾 龍一さんの「デコチャリ」 丸尾 龍一さんの「デコチャリ」

GRAFOOさんの「inter small space」。

LEDやLCDディスプレイを使った動的な万華鏡。中に、本当に小さな世界があるみたいでとても綺麗だった。小さな穴からのぞき見るのもいい。

2013-08-11 15.36.20 2013-08-11 15.36.00 GRAFOOさんの「inter small space」 http://grafoo.info/

Ghz2000さんの「Universalno」。ユニバーサルエリアを広く取ったArduino。シールドにせずに、Arduino内蔵の万能基板というアプローチも面白いと思う。

Universalnoの作例いろいろ http://ghz2000.dip.jp/wordpress/?cat=5 Universalnoでニキシー管点灯

ハプティック技術推進協議会さんの「SPIDER mouse」。2D版と3D版。画面に障害物があると、操作しているマウスの方も引っかかる。3Dの方は上下左右、回転もOK。

2013-08-11 12.42.53 こちらはSPIDER mouse の3D版コントローラ  2013-08-11 12.39.42 SPIDAR mouse の2D版

えれくら!さんの展示。「電気メッキエンブレム」「テクノ園芸」「100均商品で出来る全周囲カメラ」。意外とちゃんと見えてびっくり。カメラ本体は100円じゃないそう(ですよねー)。

えれくら!さんの「電気メッキエンブレム」 えれくら!さんの「テクノ園芸」  えれくら!さんの「100均商品で出来る全周囲カメラ」えれくら!さんの「100均商品で出来る全周囲カメラ」 えれくら!さんの「100均商品で出来る全周囲カメラ」

「Emuduino」、ArduinoをPCだけでエミュレートしてしまおうというプロジェクトらしい。ちなみに写真の本は表紙だけ。

ホ、ホライリー!? http://triring.net/program/Arduino/Emuduino/

silicombiさんの展示。「FPGAでCDドライブガチャガチャ」

結構シュール。でも、ATAPIのコマンド発行とかしてますし。

2013-08-11 12.30.42

続いて、「FPGAでmRubyを走らせてみた 」

中身はniosだそう。マイコンと比べたときのメリットは、niosの命令を拡張して最適化が図れるということだそうです。

きむしゅ@silicombiさんの「FPGAでmRubyを走らせてみた」

阿蘇カラクリ研究所んの「超本格的な3Dテレビ」

こういうの好き。他にも、ロックな展示物が色々ありました。

2013-08-11 12.28.19

ikkeiさんの「ちっちゃいーの」「アクリル板手動ダイナミック表示器」

手回しで7セグLEDのダイナミック点灯をしてしまうというもの。ダイナミック表示をうまく視覚化出来て面白い。配線を工夫することで、配線数を大幅に減らしているのも興味深いです。

ikkeiさんの「ちっちゃいーの」  2013-08-11 12.21.17  2013-08-11 12.20.52

情報科学芸術大学院大学 [IAMAS]さんの「レーザーカッターで作ったレコード」

レーザーカッターを使って小さい溝が掘られていて、耳をすますとノイズに混じってループサウンドが聞こえます。

情報科学芸術大学院大学 [IAMAS]さん。紙だけど音が出る! 2013-08-11 12.15.06

薬院SOMEWAREさんの「みんなのハンガー展」

MDF版をレーザーカッターで加工して作られた個性的なハンガーたち。コントローラ付きのハンガーは動くんですが、さりげなくBダッシュにも対応しているところが心憎いです。

2013-08-11 10.13.41  薬院SOMEWAREさんの「みんなのハンガー展」の作品色々 WiFi繋がります

kurousagi_tsu さんの「スピンスタンプを使ったカートリッジ交換式ゲーム

噂の変tプロペラマイコンを使ったデモ。ファミコンカートリッジにEEPROMが仕込まれていて、それでゲームを切り替える。お子様に大人気でした。

スピンスタンプのゲーム

それから、「mbed(FRDM-KL25Z)で作るシンセサイザー

静電センサで指のタッチをX-Y方向に検出して演奏できるシンセサイザー。残念ながら、当日の完成が間に合わなかったとのこと。

黒mbedことFRDM-KL25Z

乙女電芸部さんの「ふるえる寿司」

触るとびくびく震える。あと、(自分で)回る寿司が素敵すぎた。(→動画)

2013-08-10 17.18.41

他にも、色々展示があったのですが、自分のブースに居ることが多くて回りきれませんでした。

今回初めての九州(山口)開催と言うことでしたが、大型プロジェクターでイベント案内やTwitterのタイムラインを流したり、観光のPRをしたりと地方開催ならではの工夫があり、今まで参加した東京とはまた違った魅力がありました。

出展者は、技術系よりも手芸やアート系が多く、来場者は、近隣から親子連れで遊びに来てるような感じの方が多い印象。

そういうわけで、あっと言う間の2日間でした。また参加したいなぁ。

AliExpressで格安OLEDを購入


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/mentai/www/ore-kb.net/wordpress/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524

あ…ありのまま 今 起こった事を話すぜ!

おれは OLEDが一つだけ欲しくてaitendoを見ていたと思ったら いつの間にかAliExpressでOLEDを10個注文していた

130518_FREE SHIPPING 10PCS/LOT 0.96” inch 128x64 12864 White OLED Display Module-in Other Electrical Equipment from Electrical Equipment & Supplies on Aliexpress.com - Google Chrome_04

しかも、お買い得なUSBaspまでオススメされたッ!!

130518_FREE SHIPPING 1LOT New USBASP USBISP AVR Programmer USB ATMEGA8 ATMEGA128 Support Win7 64K-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com - Google Chrome_03

aitendoで買ったら800円のOLEDを1個だけ買うのに送料掛かるのがもったいないからという理由で躊躇していたのに、10個2,600円のOLEDを中国通販で買おうとしてて、もはや意味が分からない…。

今回購入したのはUG-2864HSWEG01というOLEDモジュールで、SSD1306というコントローラが使われています。コントローラにDC- DCコンバータが内蔵されていて単電源で駆動できるのと、I/Fがパラレル以外にI2C、SPIに対応してるので使いやすそうです。

ちなみに送料無料で1個あたり272円と、国内で買うよりもかなり安価です。

…が、中国通販(AliExpress)はトラブル覚悟で使わないといけないみたいです。とりあえず、3,000円くらいなのでトラブっても授業料と思えばいいのかなぁ…と言う感じで。

概要

買ったもの

  • UG-2864HSWEG01 $26.90 (1ロット=10個)
  • USBasp $3.33 (1ロット=2個)

掛かった日数

  • 20日 (2013/04/26~5/15)

掛かった金額

  • 3,054円 ($30.23  $1=\101.051)

トラブル等

  • 1ロット2個なので2個届くはずのUSBaspが1個しか入ってなかった。少額でメンドクサイのであきらめる。

注文から到着まで

4/26:AliExpressに注文。自動返信メール「Payment successfully made」が来た。

4/29:そのあと特にリアクションが無いのでヤキモキしていたら、「僕たち休暇中で、5/3に戻ってくるよ! ブツは5/3~5/8に発送するからシクヨロ!! (意訳)」というメッセージが来たので、それまで正座待機。

5/4:発送しましたメール「Full Shipment Made for Order No. XXXXXX」が来た。追跡番号が付いていたけど検索できない。どうも、検索できるようになるまで数日掛かるみたい。

5/8ごろ:追跡ができるようになったので毎日ガン見する。

個別番号検索 – 日本郵便

2013/05/07 16:56 引受/CHINA
2013/05/08 16:59 国際交換局から発送/SHENZHEN/CHINA
2013/05/12 12:22 国際交換局に到着/成田国際空港郵便局/千葉県
2013/05/13 09:00 通関手続中/成田国際空港郵便局/千葉県
2013/05/13 09:52 国際交換局から発送/成田国際空港郵便局/千葉県
2013/05/14 01:31 到着/○○郵便局/福岡県
2013/05/14 12:17 お届け済み/○○郵便局/福岡県

5/14:届いた!

表面

2013-05-14 21.38.56

裏面

2013-05-14 21.39.41

OLEDは1つ1つが当たって割れたり曲がったりしないように、細長いエアキャップで1列にくるくると巻いて梱包されてました。

が、しかし、1ロット2個で注文したはずのUSBaspが1個しか入ってなくてガッカリ。(2013/08/22追記:コメントによるとUSBasp+ケーブルで2pcesだそうです、ナンテコッタイ!!)

2013-05-14 21.43.35

5/15:USBaspの欠品は諦めることにして、支払いを実行。(業者への代金の支払いは、商品を受け取ってからです。クレジットの決済は注文時に行われるようです)

通電試験。ここのライブラリを使わせてもらって、さっくり試験できました。

Overview | Monochrome OLED Breakouts | Adafruit Learning System

2013-05-15 01.53.52

感想

今回初めての中国通販でしたが、国内の通販と同じ手軽さで安く買うことが出来るので面白いなと思いました。ただし、あまり高額なものを買うにはリスクが大きいので、その辺はよく考えて利用したいところです。

I2C液晶のArduinoライブラリ – ST7032


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/mentai/www/ore-kb.net/wordpress/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524

ストロベリーリナックスや秋月電子のI2C液晶で使える、Arduinoのライブラリを作りました。

コントローラにST7032iが使用されているLCDなら使えると思います。

2014.10.13 追記:

  • コンストラクタ引数でI2Cスレーブアドレスを設定出来るようにしました。秋月電子、ストロベリーリナックスのモジュールを使う限りは変更不要です。
  • コントラスト値に64以上を設定するとBONビットに影響する不具合を修正しました。(注:BONは常に1なので実際の動作には影響しません)

2013.10.31 追記:

  • ダウンロード先のリンクが分かりにくいので追加しました。また、秋月のAQM0802A-RN-GBWを動作確認済みにしました。

2013.05.19 追記:

SB0802G

Arduino標準ライブラリのLiquidCrystalをベースにしているので、LiquidCrystalを使っているスケッチならクラスを差し替えて、初期化コードを少し変更するだけで使えます。

動作確認済みのLCDモジュール

動作すると思われるもの

スケッチはこちら:arduino_ST7032 (via tomozh/arduino_ST7032@GitHub)

zipファイル内の「arduino_ST7032-master」を「ST7032」にリネームし、arduinoの「libraries」フォルダにコピーして下さい。

ST7032 独自の機能があるので、以下のメンバ関数を追加しています。

コンストラクタ

ST7032 lcd(int i2c_addr);
i2c_addr: スレーブアドレス
コンストラクタ引数を省略した場合は 0x3E

コントラスト設定

void setContrast(uint8_t cont)
cont: コントラスト値 (0~63)

アイコン表示 (※アイコン表示機能の無いLCDではなにも起きません)

void setIcon(uint8_t addr, uint8_t bit)
addr : アイコンアドレス (0~15)
bit  : アイコン表示ビット (0x00~0x1F)

簡単な使い方

#include <Wire.h>
#include <ST7032.h>

ST7032 lcd;

lcd.setContrast(30);            // コントラスト設定
lcd.print("hello, world!");

接続図はこんな感じ。I2Cは配線が少ないのが良いですね。
SB0802GやAQM0802A-RN-GBWの場合は、コンデンサ(1uF×3)を別途付ける必要があるので注意です。

接続図

左:SB1602B、右:SB0802G

SB1602BとSB0802G

SB1602Bのアイコン表示テスト

SB1602B

おまけ。I2Cつながりで、INA226モジュールと接続してみる。

参考:INA226でお手軽電圧・電流測定(ついでにBit-BangでI2C) | オレ工房

スケッチはこちら:ina226_lib.zip

INA226に接続

赤外線リモコン受光モジュールでシリアル通信


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/mentai/www/ore-kb.net/wordpress/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524

お金を掛けずに赤外線通信したい

赤外線を使ってシリアルデータを送る方法としてはIrDA用のモジュールを使う方法がありますが、専用の受光モジュールはちょっと高くて気軽に手を出せない感じ。しかも、IrDAよく分からない。

IrDA赤外線通信トランシーバ・モジュールRPM851A(2個入)

一方、赤外線リモコンの受光モジュールは結構安く売られています。(今回の実験につかったPL-IRM-2161-C438は、秋月電子のカタログから消えてしまいました…)

赤外線リモコン受信モジュール PL-IRM2161-XD1

実験してみる

今回は、この赤外線リモコンの受光モジュールを使って実際にシリアル通信が行えるかどうか、実験してみました。

全体の構成はこんな感じ。送信部、受信部はそれぞれUSBシリアル変換器経由でPCに接続されています。PCからは2つのシリアルポートに見えます。

PC(COM3)→USBシリアル→AVR(32KHz変調)→赤外線LED→→→ 受信モジュール→USBシリアル→PC(COM2)

受信部は、赤外線受光モジュール(PL-IRM-2161-C438)の出力にUSBシリアル変換器のRxDを直接つないでいます。

送信部は、USBシリアル変換器のTxDの信号にAVRマイコンを使って38KHzの変調を掛け、それを赤外線LEDに出力しています。

プロジェクトファイルはこちら(AVR Studio):irtrans.zip

ソースだけみたい人はこちら:irtrans.c

全体

赤外線受光モジュールの「PL-IRM-2161-C438」。秋月電子で2個100円でした。GND-VCC間に0.1uFのパスコンを挟んでます。この、「Vout」を直接シリアルのRxDにつなぎ込みます。

PL-IRM-2161-C438

送信部。電流アップ実験のために複数のポートを束ねてます。TxDに32KHzで変調を掛けられさえすればいいので、AVRマイコン使わずにNE555とかでもいいかも。赤外線LEDは、ごく普通のタイプです。秋月電子で5個100円でした。秋月電子大好き!

送信部

通信できた!

通信速度4,800bpsで受信してみます。ちゃんと通信できた!

4800bpsのとき

赤外線LEDの波形(上)と、受光モジュールの波形(下)を比較。これは、通信速度2,400bpsのときの波形です。おおよそ、200us遅延してますね。

2400bps波形

受光モジュールのデータシートではパルス幅Twl、Twhは600us(typ)と書かれています。そもそも赤外線リモコンの信号とは違うので保証外の使い方ですが、趣味で使うということで結果オーライです。(参考:ELM – 赤外線リモコンの通信フォーマット概要)

PL-IRM2161-C438

もうちょっと見てみましょう。通信速度2,400bpsのときの受光モジュールの波形を重ねて表示してみました。色が薄いところが信号のブレです。許容範囲ですね。

2400bps波形

こっちは、通信速度4,800bpsのとき波形。若干ブレてますね。上の実験ではちゃんと受信できてたけど、受信側によってはアウトかもしれない。

4800bps波形

ちなみに、9,600bpsだと、波形がくずれて受信できませんでした。しょんぼり…

9600bpsのとき

まとめ

赤外線リモコンの受光モジュールでも、低速ならシリアル通信出来ることがわかりました。もちろん、モジュールの種類でも結果が変わってくると思いますが、趣味の範疇なら問題なさそうです。

実際に使う場合は、蛍光灯のノイズや他のリモコン、障害物の影響等を考慮して、受信データのエラーチェックが必要になると思います。

応用編

今回の元ネタは、去年のMake Fair Tokyo 2012用に作った「ちっちゃい掲示板(写真)」です。

PCから文字のデータを赤外線で縦16ドットずつ送って、それを赤外線受光モジュールで受信してマトリクスLEDに文字をスクロール表示しています。送信データにはチェックサムを付けて、受信時にチェックサムが合わなかった場合(データ受信に失敗している場合)はデータを読み捨てる処理を入れています。

YouTube Preview Image

PC側のソフト。

掲示板データ送信ソフト

こんな感じで、マイコンのUARTを使った部分をちょっとワイヤレス化したいときに、赤外線のリモコン受光モジュールを使うとお手軽で良いのかなぁ、と思いました。

INA226でお手軽電圧・電流測定(ついでにBit-BangでI2C)


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/mentai/www/ore-kb.net/wordpress/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524

INA226をArduinoで使ってみました。後半にはオマケで、FTDIのBitBangモードを使った疑似I2Cを使ったバージョンもあります。

INA226とはテキサスインスツルメンツのICで、手軽かつ超高精度に電流・電圧・電力を測定することができます。インタフェースはI2Cです。

シャント抵抗まで実装されたモジュールが、ストロベリーリナックスから販売されているので、今回はそれを使いました。シャント抵抗が2mΩと小さいので、電圧降下がほとんど無視できます。

INA226モジュール

Arduinoと接続してみる

Arduinoとつないでみます。と言っても10kΩの抵抗2本なので超簡単。

取得できるのは電圧(Bus Voltage)、シャント抵抗電圧(Shunt Voltage)、電流(Current)、電力(Power)の4種類。電力、シャント電圧→電流の変換、平均化処理はIC内部勝手にやってくれます。電流と電力を計算するために、初期化時にCalibrationレジスタにシャント抵抗の定数を書き込んでおく必要があります。(2mΩの場合は0A00h)

詳しくは、ソースを見てください。

ソースはこちら:ina226_test2

2013/09/04追記:電力が1/10で表示される不具合を修正しました。

レジスタダンプ

回路図(Arduinoで接続)

実際に測ってみる

Nintendo 3DSLLの充電電流を測ってみました。813mAだそうです。(途中で電流が変動したので、写真の電源は0.65Aになってます)

配線がテキトウだったせいで、電源からUSBの付け根までハイサイド・ローサイド合計で約50mVの電位差がありました。きちんと測定するには、配線の抵抗も考慮しないとダメですね…。

3DSLLを充電中

3DSLL充電中

精度はどのくらい?

自宅のデジタルテスターで測った値とはほぼ一致してたので、まあ大丈夫な感じと思うんですが、秋月で4.096Vの高精度シャントレギュレータ(LM4040AIM3-4.1/NOPB)を買ったので、試しにつないでみました。4096mVぴったり!素敵!!

が…この値は、INA226の電源電圧に3.3Vを使ったとき。5.0Vにすると、4098Vになっちゃいました。orz

シャントレギュレータの電圧を測定

シャントレギュレータの電圧

FTDIのBitBangモードで疑似I2Cしてみる

元々は一昨年のKick4勉強会のネタですが、FTDIのFT232/245シリーズにはBitBangモードというICの信号線をパラレルIOのように使える機能があって、それを使って簡易的なI2C通信をやってしまおうという実験です。

できる!Bit-Bangモード

外付け部品がダイオード2本と抵抗3本だけなので、わざわざマイコンまで使いたくない場合にいいかも。

ソースはこちら(Visual C++2010):bitbang_ina226

2013/09/04追記:電力が1/10で表示される不具合があります。そのうち修正します…

BitBangで通信

回路図(BitBangでI2C)

Bitbangでi2c

そんなわけで

調整が要らないし、精度は高い(と思う)ので、なかなか面白いモジュールだと思います。

ゆくゆくはケースに組み込んで、スタンドアロンの計測器にしたいなぁと思ってます。