2013年 11月 18日

検索クエリを眺めると、ほんとタバコの消臭に関する流入が多くて、たくさんの人が困っていることがわかる。

gerry++

マイコン周りのシリアル通信プロトコルまとめ

なんかいろいろあって??ってなるので特徴を覚え書き。線は信号に関係するものだけ (普通は +VDD が必要)

名前 特徴 速度 備考
1-wire SIGNAL, GND 半二重 1対多 非同期 標準 15.4kbps, オーバードライブ125kbps SIGNAL が VDD を兼ねるので本当に2本だけでOK センサーとかで採用例がある。MAXIM の日本語スライド
I2C SDA, SCL, GND 半二重 多対多 同期 ロースピード 10kbps 標準 100kbps ファーストモード 400kbps 高速モード 3.4Mbps バス中のデバイスのどれでもマスターになれる。マイコンだと400kbpsまでが多い?ここに上げた中では唯一多対多のバスを作れる
SPI SCK, MISO, MOSI, SS, GND 全二重 1対多 同期 クロック依存最大 1Mbps〜2Mbps マスターはスレーブの数だけ SS が必要。1対1 なら SS は必要ない。
RS232 RxD, TxD, GND 全二重 1対1 非同期 9600bps などいろいろ PC でもよく使われていたインターフェイス。今でも USB 変換ケーブルは簡単に手に入る。フロー制御とかしないなら3本で使える
USB1.0 D+, D-, GND 半二重 1対多 非同期 1.5Mbsp, 12Mbps 使うの面倒。USB2.0 は高速化版、USB3.0 はさらに高速化して全二重に

AVR では

  • SPI はほぼどの AVR でも使える
  • I2C は AVR によっては専用ハード (TWI) が用意されてる。専用ハードでなくても USI があれば TWI をハンドリングできる (多少面倒だけどライブラリとして公開している人はいる)。
  • RS232 はロジックレベルをドライバ (MAX232系の) で変換すれば USART で直接扱えるので簡単。
  • USB は一部の AVR で組込み。V-USB を使えばソフトウェアだけでもいける。あるいは USB Serial 変換チップ (FTDIのが有名でクロスプラットフォーム) を使えば USART 経由で使える。変換チップ使うのが確実で汎用性があってよく使われていそう。

略語がいっぱい

  • UART (Universal Asynchronous Receiver Transmitter) は非同期なシリアルを扱う回路の名前。同期なのを統合したものを USART (Universal Synchronous Asynchronous Receiver Transmitter) というらしい
  • TWI (Two Wire Interface) はその名の通り2線式ってことなんだけど、AVR においては普通は I2Cのことを指しているっぽい。I2Cと名乗ってないのはなんか政治的な問題?
2013年 11月 17日

キヤノンのカメラのリモートレリーズ (またはリモコンレリーズ)

そういえばマイコンからカメラのレリーズができたらいいかもなーとなんとなく考えたのでやってみた。タイムラプス的なもの (インターバル撮影) とか、バルブとか自分で制御できたら楽しいかもしれない。

リモートレリーズ端子

リモートレリーズ端子 (有線) にはいくつか種類があるらしく、キヤノンの場合、Kiss とかではステレオミニと同じだけど、5Dとか7Dとかだと、N3型端子とかいう謎の端子になる。N3端子ってのはそこらへんで単体で簡単に手に入らないので、既存のを買って切るしかないっぽい。機能的には同じみたいだけど、なんでこんなことになってるのか謎

手元にあるのはN3型のものなので、別にレリーズ別途買ってまで試すまでのモチベーションはわかなかったので、とりあえずリモートレリーズ端子を使うのは諦めた。(ただのスイッチなので難しいことはなさそう)

赤外線リモコンのレリーズ

他にレリーズを切る方法としては、赤外線リモコンを使うほうほうがあって、これなら赤外線 LED チカらせるだけでよく、端子とか関係ないのでお手軽そうだった。赤外線は昔昔買ったLEDジャンク詰め合せに無駄にいっぱい入っていて腐っている。

ググるとリモコンの解析結果を公開している人がいるので、その通りやったらいけた。

あたり前だけどドライブモードをリモコンのモードにしないとシャッター切れない。解析結果をそのままコードにしただけだけど (PB0 に LED が接続されている前提)

void shutter () {
	int i;

	for (i = 0; i < 23; i++)  {
		set_bit(PORTB, PB0);
		_delay_us(13);
		clear_bit(PORTB, PB0);
		_delay_us(13);
	}
	_delay_us(7200);
	for (i = 0; i < 23; i++)  {
		set_bit(PORTB, PB0);
		_delay_us(13);
		clear_bit(PORTB, PB0);
		_delay_us(13);
	}
}

ただ、赤外線の場合、設定済みの露出でしかシャッターを切れないので、バルブとかはできない。インターバル撮影とか、センサー連動のシャッターとかはこれで十分できそう。花火の撮影とか自動化できそう。

バックアップの取り方

ディスクを1台新しく買ったので、Windows とディスクを共有する、という前提を諦めて (というより、ネットワーク共有するつもり)、ディスクは HDFS+ でフォーマットした。

これで Time Machine のバックアップ対象にできるぞ、と思ったんだけど、なんとなく case sensitive としてフォーマットしたら、Time Machine 用のディスクが case insensitive なせいでバックアップ対象にできないことが判明、、、せっかく8時間ぐらいかけてバックアップをコピーしたのに………

最近このようなことばかりで本当に嫌気がさす。ろくなことがおこらない。人生自体がバグってる

2013年 11月 15日

  • MacBook Pro 出荷予定2〜3日で、注文したら納期は2〜3週間後というメールが3日目にきた
  • 保険の申し込みをしたら理由がわからないが受け入れ拒否 (告知が超絶めんどいのに頑張って書いてこのありさま)
  • NTT X Store で出荷予定通常24時間以内の HDD を注文したら72時間ぐらい経っても出荷されない
  • 会社の勤怠管理に何かしらないけどログインできない (パスワード変えさせられたタイミングでキーチェーンがバグった感じ)
  • 仕事の進捗がない (無能)
  • 液晶壊れる
  • いくらやっても計算間違いがなおらない
  • モールス聞き取りに進捗がない (実際の交信だと全然ききとれない)
  • 趣味でコード書いてもうまくいかない
2013年 11月 14日

関連エントリー (画像)

hfe はコレクタ電流をベース電流で割った値。バイポーラトランジスタはベースエミッタ間に流れた電流に応じでコレクタ電流が増える素子なので、つまりこれは増幅率になる。(エミッタ電流はベース電流+コレクタ電流になる)

FET の場合これに相当するのは相互コンダクタンス。FET はゲートソース間にかける電圧に応じてドレイン電流が増える素子なので、同じようにドレイン電流をゲース電圧で割る (Isd / Vgs) った値が相互コンダクタンスと呼ばれる。なぜコンダクタンスかというと I/V という形が R (=V/I) の逆数すなわちコンダクタンスだから。

回路図記号における矢印は電流が流れる方向を差しているので、NPN 型バイポーラトランジスタでは Negative -> Positive <- Negative と、ベースに向かって伸びる矢印になる。PNP 型では Positive <- Negative -> Positive と、ベースから外に向かって伸びる矢印になる。

FET の場合、ゲートソース間にかける電圧は逆方向電圧なので、正電圧がかかっているほうに矢印が向く。ゲートに正電圧をかける場合、逆方向なのでFETはN(負)型になる。