なんか作る このページをアンテナに追加 RSSフィード

2010-11-23

外出先から家電をコントロールするシステムの構築

18:56 | 外出先から家電をコントロールするシステムの構築を含むブックマーク 外出先から家電をコントロールするシステムの構築のブックマークコメント

  • 朝晩が寒くて嫌な今日このごろ。朝目覚めたら、リビングのエアコンを寝室から操作できたらいいじゃなイカ。
  • どうせなら外出先からもネット越しに操作できたら更に嬉しいじゃなイカ。
  • 赤外線LEDをチカチカさせればリモコン対応家電を制御できる、というのは先人たちが実験済なので、これを応用してみようじゃなイカ。

実現する機能

サーバは今後mbedに置き換えたい。HTTPの認証機能がなんとかなれば…。

まずは赤外線リモコンの解析

必要なもの
赤外線受信素子1個
3.5Φのイヤホンジャック1個
5Vの電源1個
回路図

http://dl.dropbox.com/u/3968074/IR_Audio.png

赤外線受信素子の出力をPCのマイク端子に接続して、リモコン信号の電圧変化を「録音」して記録する。

44.1kHzとかの普通の音声として録音すればOK。

スピーカーを痛めるので再生はしないこと。

マイク端子などの極性によっては、ON/OFFの信号が上下反転していることがあるので、適宜読み換える。

いくつかの機種のリモコンで試したが、最初のオンの部分の長さ、次のオフの部分の長さ、信号ONの時間、OFFの時間、信号のデータ量、信号を送る回数、信号間の待ち時間

など、いろいろと微妙に違っていたので、それぞれパラメータとして渡せるようにする。

メーカーが同じで設定が同じでも信号の内容が違っていたりした。キリが無いので、解析は代表的な設定のみに留める。

マイコン側の実装

必要なもの
マイコン AVR ATmega168部屋数分
3.3V 電源部屋数分
XBee 通信モジュール部屋数分
適当な赤外線LEDと、適当なトランジスタと、適当な抵抗いくつか部屋数分
回路図

http://dl.dropbox.com/u/3968074/XBee_Arduino.png

機能一覧

Webサーバ側の実装

クライアントに表示するHTMLはこんな感じ。

f:id:ksh0ji:20101123120922p:image:w161

必要なもの
PerlならDevice::SerialPort とか、Rubyならruby-serialportとかが動く、自宅Webサーバ1台
XBee 通信モジュール1個
AE-UM232R USBシリアル変換モジュール1個
回路図

http://dl.dropbox.com/u/3968074/Serial_XBee.png

機能一覧
  • 他人にいたずらされないよう、Digest認証を設定する。
  • 指定の信号情報をシリアルで通信して、実行した内容を管理機能に反映する。
  • iPhoneとかAndroidにやさしいインターフェースは、Appleが提供しているサンプルを流用する。
  • TODO: 家電の状態を管理して、それぞれの状態をWebページとして表示する。ただし、本来のリモコンで操作することもあるので、あくまで目安として表示する。

プロトコル

必要なパラメータが全部渡ればいいので、コンパクトにバイナリで話す。

データ化けが起きるか不明だが、チェックサムを付けておく。

LED点灯系は26uSec.の倍数、消灯系は1mSec.もしくは10mSec.単位で指定している。

(1B→1バイト、ビッグエンディアン)

サーバマイコンへの通信
'R'ヘッダ
'E'ヘッダ
'M'ヘッダ
'O'ヘッダ
'T'ヘッダ
'E'ヘッダ
${room id}部屋ID 1Byte
${lead on}リーダのON時間26uSec1Byte
${lead off}リーダのOFF時間10mSec1Byte
${long}信号:長いOFF(信号:1を表す)の時間1mSec2Bytes
${short}信号:短いOFF(信号:0を表す)の時間1mSec2Bytes
${on}信号:ONの時間26uSec1Byte
${stop wait}信号間の時間10mSec1Byte
${signal repeat count}信号を繰り返す回数 1Byte
${signal bit length}信号のビット数(n) 2Bytes
${signal's check sum}信号のバイト配列チェックサム 1Byte
${signal}信号のバイト配列 ${int ceil(n/8.0)}Byte(s)
マイコン→ホストへの通信
  • ヘッダが正常で、部屋IDが一致し、チェックサムが一致している場合

 signal sent.\n 

  • ヘッダが正常で、部屋IDが一致し、チェックサムが一致しない場合

 send failed.\n 

  • 部屋IDが一致しない場合

応答しない。

  • ヘッダがおかしい場合

応答しない。

ソフトウェア

2010-11-05

monotron部品表

13:08 | monotron部品表を含むブックマーク monotron部品表のブックマークコメント

monotronの回路図が公開されてたので、部品の値を一覧してみました。コピペミスあったらすいません。

回路図はこちら→ http://www.korg.co.jp/Support/Manual/download.php?id=512

NU: Not Use

R19,R31,R69,R71 NU

R41,R65,R83 0

R12 1

R2 820

R43,R48 47

R1,R21 100

R68 220

R62 330

R49 390

R29,R66 470

R7,R11,R17,R20,R26,R27,R30,R33,R34,R51 1K

R4,R14,R64,R67,R78 2.2K

R53 3.3K

R8,R32,R35,R72,R74 4.7K

R76 5.6K

R75 6.8K

R9,R15,R16,R23,R25,R36,R38,R40,R44,R45,R47,R52,R54,R55,R56,R59,R63,R70,R73 10K

R46 18K

R77 22K

R10,R57 27K

R37,R80 47K

R50,R79,R82 68K

R6 91K

R5,R13,R24,R39,R58,R61 100K

R18 150K

R28 220K

R81 270K

R42,R60 330K

R3 820K

R22 1M

VR1 100 B

VR2,VR3,VR4,VR5,VR6,VR7 10K B

C5,C12,C23 NU

C30,C32 100p

C8,C9,C10,C20,C26 0.01u

C11 0.01u 50V

C21,C22 3300p

C6,C7,C13,C16,C18,C27,C28 0.1u

C1,C4,C14,C17,C25,C29 1u

C15 10u 電解

C2,C19,C24 16V 10u 電解

C31,C33 6.3V 100u 電解

C3 6.3V 330uF 電解

L1 4.7uH

Q1 IMX9 (2SD2114K ×2)

Q3,Q5 2SA1774

Q2,Q4,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14 2SC4617

IC1 TPS61071

IC2,IC4 LM324

IC3 SN74AHC14

IC5 TPA6111A2DR

LED1

RIBBON 10KB

SW1

2010-10-29 プログラマーズナイト 第二夜 資料置き場 このエントリーを含むブックマーク このエントリーのブックマークコメント

2010-10-14

ガイガーカウンターのカウント数をTwitterに投稿するアプリを作る

| 14:06 | ガイガーカウンターのカウント数をTwitterに投稿するアプリを作るを含むブックマーク ガイガーカウンターのカウント数をTwitterに投稿するアプリを作るのブックマークコメント

絶賛作成中。

実装済

  • Google Chart APIを使って、時間単位のグラフを作成する。
  • 周辺環境の放射線検出数をTwitterに定期ポストする。6時間おき(0時、6時、12時、18時)にポストしています。 hashtagは #radiationLog としています。

未実装

  • 急激な値の変化(上昇)時に即時Tweetする。

不具合

  • 停電などによるデータ抜けについての情報が、グラフに反映されない。

用意するもの

f:id:ksh0ji:20101018081635j:image

↑システム一式

http://strawberry-linux.com/catalog/items?code=53001

ただし、USBインターフェースは今回は使用しない。

PSoCの2pinにカウンターからの信号が来ているので、それを使用できるようにする。

検出する線種はフィルターしていない。

ガイガーカウンターキットに5V電源を供給する。

カウントしてシリアルに値を出力する。

シリアルの値を読み、データをログファイルに出力する。

OAuthを使ってTwitterに投稿する。

使ったモジュール

Device::SerialPort, AnyEvent::Handle, Google::Chart, WWW::Shorten::Googl, Net::Twitter

2010-09-29

ヴァイオリンを鳴らそう

22:43 | ヴァイオリンを鳴らそうを含むブックマーク ヴァイオリンを鳴らそうのブックマークコメント

というタイトルで、社内勉強会の発表を行いました。

資料(といっても、スクリーンショットPNGにして、PDFとして固めただけ)

を置いておきます。

http://dl.dropbox.com/u/3968074/violin.pdf (この内容の薄さで7.3MBもある)

Mac OS Xをキーボードのみで操作する設定・方法

17:23 | Mac OS Xをキーボードのみで操作する設定・方法を含むブックマーク Mac OS Xをキーボードのみで操作する設定・方法のブックマークコメント

Bluetoothマウスバッテリーが切れたときなどに便利。

フルキーボードアクセス

すべてのコントロールに対して「Tab」が効くようになります。

対応していないアプリもあります。

Spotlightから「システム環境設定」を探し、「キーボード」をさらに検索します。

Control + F7を押します。

マウスキー

テンキーの入力でマウスカーソルを動かせるようになります。

Spotlightから「システム環境設定」を探し、「ユニバーサルアクセス」をさらに検索します。

Tabで「マウス」に移動し、マウスキーを「入」に設定します。

ポインタの動きを速くしたりなど、快適になるよう適宜変更します。

ここの設定でマウスカーソルを大きくしとくと、大画面とかプレゼンの時にも見つけやすいです。

メニューバーへのアクセス

Control + fn + F2

fnで直接F2が入力される」よう設定されてる場合、fnは不要です。

環境によっては「Control + shift + F2」 の場合もあるようです。

Dockへのアクセス

Control + fn + F3

fnで直接F3が入力される」よう設定されてる場合、fnは不要です。

Safariのリンクをキーボードアクセス

Tabで選択、Enterで辿れるようになります。

Safariに切り替えて、Command + 「,」で環境設定を表示

Tabで「詳細」へ移動します。

「Tabキーを押したときに Web ページ上の各項目を強調表示」をチェックします。

その他のアプリ

EclipseでCommand + 「3」押して機能検索すると、

大抵の場合にマウスを触らなくて済みます。