✖
✖
金曜日の夜から急の鼻の奥が痛くなって、そのまま全身だるい感じで3日間ほど殆ど何もできなかった。こういうの本当にイライラする。やることいっぱいあるのになにもできない。
✖
直列/並列共振回路の共振周波数
リアクタンスとの関係
インピーダンスの式
共振状態ではリアクタンス部(虚数部)はゼロになる (抵抗成分だけ)。
すなわち
と はそれぞれ
共振状態のときの式に代入して f について解く (普通は角周波数 ω を使うみたいだけど、僕はなんか混乱するので全部展開しとく)
移項
両辺に をかける
両辺を で割る
両辺の平方根をとる
両辺を で割る
最悪リアクタンス部がゼロになれば共振ということがわかってれば、簡単に導ける。
変形して L/C を求めるとき
直列共振回路の Q
L か C のリアクタンスをRで割るイメージが覚えやすい気がする (抵抗Rが小さいほど高いQになる、というのがイメージしやすい) 直列に入っている R は単に損失なので、小さいほうがいいというイメージ。
↑ をそれぞれ で割っただけ
並列共振回路の Q
直列の逆数と覚える。並列に入っている R は小さいほど無駄に電流を流すので、大きいほうが損失がなくていいというイメージ。
FET の入力容量と速度の関係がわからない
FET は電圧駆動なので電圧さえかければ電流を流す必要はない。
ただ、現実的にはFETの入力に寄生している容量を十分充電しきるまでは、電流が相応に流れ、オフにするときはすみやかにこの容量を放電することが求められる。なので容量が少なければ少ないほど早いのはイメージできる。
まではわかったけど、では実際にそれがスイッチングスピードにどう関わってくるか計算で求めるのがよくわからない。
例として 2N7000 の input capacity は最大で 50pF、150Ωの抵抗と3Vの電圧(最大電流20mA)で充電しようとすると、CRの過渡現象の例の式だけで考えると、電流は
ある時間におけるコンデンサの電圧を考える。コンデンサの電圧は電源電圧から抵抗での電圧降下を引いた値なので、
これをさらに t について解きたいけど、自分の力だと解けないので Maxima 君で解くと solve(v = E * (1 - %e^(-t/(C*R)) ), t);
で、各値を代入して計算すると
function t (C, R, E, v) {
return C * R * Math.log(-(E / (v - E)));
}
// 入力電圧の9割まで
console.log(t(50e-12, 150, 3, 3*0.9)); //=> 約17ns
// 最低 V_th まで
console.log(t(50e-12, 150, 3, 0.8)); //=> 約2.3ns になるけど、確かめようがない。それに、この速度が実際の FET の速度にどう関わってくるかわからない……
ググってでてきたpdf を見た感じだいぶ難しくて現時点の自分では理解できない。
要は知りたいのは、Gとグラウンド間に入れる放電用抵抗は最大どの程度にできるのか、ということなんだけど、よくわからない。大きすぎると放電に時間がかかりすぎて、オフにならなくなるのはわかる。まぁ実際試しみて定数決定するのが一番いいんだけど……
ATTiny13A を使った低消費電力エレキー
まとめを後日書きました [tech][avr][arduino] ボタン電池で動く小型・低消費電力 AVR エレキー (50円 ワンチップマイコン ATTiny13A) | Fri, Nov 8. 2013 - 氾濫原
さらにもっと消費電力を減らせないだろうか? と考えた。パワーダウンモードの消費が計測不可能なので、支配的なのは特にキーイング中と、アイドル中の消費になっている。
特にキーイング中の消費が比較的多い (200uA近く) ので、どうにかできないかと考えた。キーを押しているとき、内蔵プルアップを通して GND に電流が流れるので、そこの消費が結構多い。
今まで何も考えず AVR 組込みのプルアップ抵抗を使っていたけど、ここでちょっと考えてみることにした。
プルアップの調整
内部プルアップは、実測からすると3V/100uA=30kΩ になってるようだ (スペック上は 20k〜50k)。とりあえず AVR 内部のプルアップ抵抗をオフに。
プルアップ抵抗に許される電圧降下を考える。電源電圧3Vで、入力 H レベルは VCC * 0.6 (スペックから)、ノイズ回避用に 0.4V を足すと
- ピンの必要入力電圧 Vin = 3 * 0.6 + 0.4 = 2.2V
- プルアップでの電圧降下最大 V = 3 - Vin = 0.8V
となった。
マイコン側は十分大きい入力抵抗があると考えると、かなり大きな抵抗を入れても大丈夫そう? なのかな。
試しに 2.2MΩでプルアップしてみると、ICの足にかかる電圧は2.5V程度になった。2.2MΩ で0.5V電圧降下しているので、0.23uA 程度流れてる。3V / 0.23uA でプルアップと内部抵抗の合成値は 13.2MΩ、つまり内部抵抗は11MΩぐらい……? よく「入力抵抗は非常に大きい」といわれるのを見る割に、いまいちどの程度かわからなかったけど、こんなもんなのかな。
この状態で、消費電力をはかる
- before: 内蔵プルアップ: 198uA
- after: 2.2MΩプルアップ: 113uA
とりあえず減ったし、普通に動いてはいる。しかしこれであっているのかさっぱりわからない。
これで、毎日2時間使うケースだと (CR2032/225mAh, 1日2時間, パワーダウン中 0.15e-6mA, キーイング中 113e-3mA) 995日持つ計算になった。
delay_ms のさらなる見直し
128kHz で動かすにあたり delay_ms を以下のようにしていた。
void delay_ms(uint16_t t) {
uint16_t end;
cli();
timer = 0; TCNT0 = 0;
end = NOW + DURATION(t);
sei();
while (NOW <= end) { nop; }
} timer は 2msec ごとのオーバーフロー割込みでインクリメントされているけど、これだとちょっと精度が悲しいような気がするので、カウンタそのもの (TCNT0) も見ている。オーバーフローでやっているので、単純に timer はカウンタの桁あがりとして扱える。NOW は ((timer<<8)|TCNT0) という定義
while の中を アイドルではなく nop; にしているのは、ここでアイドルに入ってしまうと、次に起きるのが 2msec 後とかになるので、せっかく TCNT0 を見ている意味がなくなるから。
ただ、まだここは精度を維持しつつも最適化の余地があって、以下のようにした。
void delay_ms(uint16_t t) {
uint16_t end;
uint16_t end0;
cli();
timer = 0; TCNT0 = 0;
end = NOW + DURATION(t);
end0 = end - 0x100;
sei();
while (NOW <= end0) {
set_sleep_mode(SLEEP_MODE_IDLE);
sleep_mode();
}
while (NOW <= end) { }
} 少なくとも、最後の TCNT0 分 (8bit) になるまでは、普通に 2msec ごとに寝ていても大丈夫なはずなので、それまではスリープを使い、最後のカウンタ分はビジーループにするようにした。nop; は別にいらなそうなのでとっただけ。
これでキーイング中でも 96uA まで消費電流を落とせた。上と同じように、毎日2時間使うケースだと (CR2032/225mAh, 1日2時間, パワーダウン中 0.15e-6mA, キーイング中 96e-3mA) 1171日持つ計算になった。1000日超え! もうこれでいいかな。
回路図・基板検討に EAGLE を使ってみる
回路図・基板作成用 CAD のEAGLEを使ってみた。割とデファクトスタンダードっぽく使われているっぽい。試したのはフリー版 (個人レベルでは十分すぎる機能がある)
基本商用ソフトなので、もっとモダンでいい感じなのかと思ったけど、思いのほか操作性がレガシーで悪い。回路図作成ツールとしては BSch3V のほう部品エディタも含め、圧倒的に使いやすい……
ただ、配線ツールとしては結構使いやすい (というか、もっとよくできると思うけど、これ以上のものがなさそう……) デファクトスタンダードっぽく使われているおかげで、ライブラリは比較的充実しているように思える。ただ、あまり整理されていない形になっているので、最初ものすごくとまどう……
しばらく使わないと絶対に忘れるインターフェイスなので、重要なところをメモっておく
ライブラリ
(追記)
http://www.cadsoftusa.com/downloads/libraries のページから
- japan で検索して出てくるもの全部
- c-j.lbr
- r-j.lbr
- tr-j.lbr
- alps_japan_potentiometers.lbr
- avr-7.lbr
あたりを入れておいたほうがいいっぽい。ただ、 *-j.lbr は US EU とピンに互換性がなくて置換できない…… ライブラリエディタで、Symbol の編集画面を開き、ピンの名前を一緒にしてあげればいいっぽい。例えば resistors.lbr の場合、ピンの名前は 1 とか 2 とかなので、c-j.lbr のほうも PIN1 を 1 に PIN2 を 2 にすれば、置換できるようになる。
デフォルトだと EU 版 US 版の記号が入っていて、これでもなんとかなるけど、日本で使われる一般的な回路図記号と若干異る
- EU 版
- 抵抗の記号が新JIS記号と一緒 (ジグザグじゃなくて四角)
- C の棒が太いくて長い
- US 版
- 抵抗の記号は旧JIS記号と似てる (ジグザグ) ただ、ジグザグの数が多い
- C の片方が曲っている
回路図
- 回路図をつくるとき
- Add a part で部品を置いていく、検索が貧弱なのでかなり空気を読む必要がある
- 置いてから ESC を押すと選択画面に戻るので連続でおける
- 既に回路図にある部品なら Copy ツールを使ったほうがいい
- 使いたい形がなくてもとりあえず記号だけあわせておけば、あとから Replace で部品だけ変えられる
- Electrical Rule Check は頻繁にかけたほうがいい
- けどエラーの意味がわからなかったりする
- ECR の結果は回路図の画面で示されるので、基板画面を見ているとなにがなんだかわからない
- Add a part で部品を置いていく、検索が貧弱なのでかなり空気を読む必要がある
基板図
ユニバーサル基板で作ること前提なので、あまり細かいところまでは使ってない。ユニバーサル基板専用のソフトがあればいいんだけど。
- 基板図をつくるとき
- 必ず 回路図を同時に開いておく必要がある
- そうしないと修正点が反映されず、最初から作りなおすハメになる (意味不明)
- まずグリッドを設定する。Size 50mil Multiple: 2 にして Display on にすると、100mil ごとにグリッドがひかれ、50mil ごとにスナップするようになる。(ユニバーサル基板のピッチは100mil)
- Edit -> Net Classes... で default の Width を 32mil ぐらいにしとく (オートルートとかするときこの太さでひかれる)
- Layers で、tOrigins / bOrigins を非表示すると、部品全てが動かせなくなる
- 必ず 回路図を同時に開いておく必要がある
- オートルート便利かと思いきやかなり難しい。
- 少ない部品なら、基本自分で配線して、どうしたもんかってときに使うとヒントがでるツールとして使う感じ
- ripup; コマンドを実行すると配線済みのが全部消える
- 自分である程度配線したあとなら Undo を使ったほうがよい
✖
モールス練習
練習開始から93日、ほぼ3ヶ月ぐらい経っているので経過を書いておく
- 10月09日: 25wpm ランダムまで90%をとれ次第すぐ進むぐらいの勢いでやる。
- 1ヶ月で、20wpm ランダムならぎりぎり90%をとれるぐらいになる
- 2ヶ月で、25wpm ランダムならぎりぎり90%をとれるぐらいになる
- 26wpm からどうも急に難しくなったように感じられる
- 一部の符号の聞き間違えが足を大きくひっぱっている (特に S H 5)
- 20wpm まで戻り、100% がとれ次第次のスピードに進むという基準に変更
- 基礎練習
- S H 5 を特に意識してやる
- 3 7 z あたりも苦手だったけど、全体的に精度が上がるのは感じられる
- 22wpm ← 今ココ
- あいかわらず S H 5、1 J で間違えることが多い。
22wpm でもランダムなら、ほぼ90%はとれる、という状態にはなっている。ただし単語聞きとりだと、短い符号が多くなっておいつけなくて、もっと低く80%代なことも多い。それに身体状態に大きく左右されるのも変わりない。寝る前とかだと95%もとれなくなる。
最近急がしくて交信を聞く暇がなく、とにかく朝と夜の聞きとり練習だけをやってる。実感としては正直、ラバースタンプレベルでも余裕でとれるような感じではない。タイピングまではできても、意味まで理解して聞きとろうとすると単語単位で落としてしまう。それに、実際の交信だと25wpmはあたりまえな感じなので、現状の能力では全く足りない。
ラバースタンプでも、名前と住所は必ずちゃんと聞きとる必要があるところなので(住所はJCCで送ってることが多いからそれほどでもないけど)、それぐらいは1発でとれるようになりたい。それに、ラバースタンプとはいえ、何を送ってこられるかわからないのは怖い。緊張するとさらに聞きとれなくなると思う。
✖
✖
「コレクタ接地ってボルテージフォロワ? エミッタフォロワー? あれ?」って思ったのでちゃんとしとく……
ボルテージフォロワは普通オペアンプに対して使うようだ。エミッタフォロワーはバイポーラトランジスタを使ったボルテージフォロワ、でいいのかな。
ボルテージフォロワは FET も同じようにドレイン接地 (ソースフォロワ) で作れる。
オペアンプをヴォルテージフォロワとして使う場合、中身 (バイポーラトランジスタやらFETやらの集合) のことを無視して考えると、中身がエミッタフォロワーだろうがソースフォロワだろうが、挙動としてはヴォルテージフォロワということっぽい。
- ボルテージフォロワー
- エミッタフォロワー
- ソースフォロワー
ATTiny13A を使った小型エレキー
まとめを後日書きました ボタン電池で動く小型・低消費電力 AVR エレキー (50円 ワンチップマイコン ATTiny13A) | tech | avr | arduino - 氾濫原
前に書いたのの続き。
せっかくメインのICが小さいので、できるだけ小さく作るならどうするのがいいだろう?と考えてる。
まず、乾電池1本で動いたらいいなと思ったので、1.4Vを3.3Vに昇圧する回路を組んで駆動させてみたら、昇圧回路がどうもうまくいかなくて、やたら電気食う感じだった。昇圧回路の調整を別途やれば乾電池1本でもいい感じになるかもしれないけど、実際ブレッドボードで組んでみたら結構体積も食う感じになってしまったので、そもそもこの方法を諦めた。
じゃあリチウムコイン電池を使うことを考えよう、と思った。リチウムコイン電池なら1個で3V出せる。ただ、あまり電流を流すことができなくて、標準で 0.2mA 程度に抑える必要がある。消費電力を減らす工夫はしてるつもりだけど、スピード調節をADCにしたのでボリュームに常に電流が流れるとか (10kΩなのでこれだけで0.3mA流れる)、もうちょっと頑張る必要がありそうだった。
まず、ADC は1秒ごとに行うようにコードを変えて、そもそも頻度を減らした。また、ボリュームに電圧をかけるのも、ADCが行われるときだけにした。これはピン1個を出力にして、VCC の代わりにそこに繋いでる。VCC とピンの出力電圧は厳密には違うので、ADCの精度は落ちるけど、そもそも安定してない電池駆動だし、相対値だけがとれればいいのでまぁいいかな、という気がする。
それでだいたいアイドル時に0.3mA程度まで下がった。しかしこれ以上思いつかないので、とりあえずクロックを下げてみて挙動に問題がないか試すことにした。ATTiny13A の場合、内蔵クロックは 9.6MHz, 4.8MHz, 128kHz とそれらを8分周したものが選べる。なので 4.8MHz を8分周した600kHzで動かしてみると、思ったより変なことにならなかった。これでアイドル中はほぼ0.2mA未満に。
じゃあ 128kHz だとどうだろう、ということでやってみたら、
bad AVRISPmkII connection status: Unknown status 0x00
とかでるように…… たぶんクロックを下げすぎたせいで ISP の書きこみのクロックを読めてないのかな……
うーん困ったと思っていたら avrdude に転送スピードを下げるオプション (-B) があったので、-B 100 ぐらいにしてやったらいけた。しかし書きこみ速度がだいぶ遅い。
コードを全体的に書きなおさないと 128kHz でバグってて動かない感じだけど、軽く試した感じだと、アイドル中で0.09mAぐらい。キーイング中で0.19mA。パワーダウンは変わらず0.6uA程度。コーディングが面倒になった割にはそんなに減らない。ベースの消費が無視できないほどクロックの支配率が低くなってるせいかな。
仕様から
- VCC=3V, f=128kHz
- idle: 0.01mA
- active: 0.04mA
- power down: 0.00015mA
- ADC: 0.225mA
- Timer0: 0.002mA
- pull-up: 0.08mA
- キーイング中は pull-up + active + timer0 + FET GS接地抵抗(440k)電流 = 0.122mA が最低でも必ずかかる
- アイドル中は idle + timer0 = 0.012mA
- ADC中は active + ADC + timer0 = ボリューム電流 = 0.567mA
- パワーダウン中はクロックに関係なく固定で 0.15uA
- 比較すると実測値が結構高いけどなんでだろう
- 瞬間最大電流
- キー同時押し pull-up * 2 + active + timer0 + FET GS接地抵抗(440k)電流 + ADC
- 0.7338mA
パワーダウン中の消費は AVR ISP Mark II と繋っていたからで、RESET をはずせば 0uA になった
- パワーダウンモード 0.0uA未満
- アイドル中 90uA -> 0.09mA
- キーイング中 198uA -> 0.198mA with FET
✖
✖
マイコンプログラミングとか、黙って Arduino やっとけハゲという感じではあるんだけど、Arduino の言語がどうも好きになれなくて使ってない。CっぽいけどCじゃない、でもC、みたいなのがなんとなく嫌だなと感じてる。それは置いておいても Arduino は素晴しいと思います。
Arduino も AVR を使っているし、結局 Arduino 頑張ろうとすると AVR のスペックを理解する必要があるので、じゃあ AVR でいいか、という感じになる (安いし)。
Arduino は、開発環境も含めたエコシステムが魅力で、そこがすごくいいと思うけど、自分みたいに CUI で vim で書いて Makefile でコンパイルして書きこんで gdb でデバッグするみたいのが好きな人間だと、少し魅力が薄れてしまうように思う。
IDE はあればあるで便利で良いんだけど、Makefile と gdb を使ってやっていれば、マイコンプログラミング以外のときにもその知識が生かせて嬉しいと思う (IDEの操作の知識はほかに生かせない)
✖
トトト・トトトト・トトトトト
S (トトト) H (トトトト) 5 (トトトトト) の区別がつくように全然ならない。20wpm 程度でも結構間違える。全部とれない場合、ミスのほとんどがこれ。25wpm になると、1分間やっている中の 5 を全部 H、H を S と書く、あるいは逆、みたいにズレて聞きとったりする。クソすぎてイライラする。
S H 5 だけランダムで聞きとろうとすると、今度は全部聞きとれない。ランダムではなく SHE, HIS とかはパターンで覚えてるからある程度聞きとれるけど、ランダムだと全く意味わかんない。なので、比較して聞きとれるようにするということもできない。というか単体ならまず間違えないんだよ……
E (ト) と I (トト) と S (トトト) の区別は容易にできるけど、それ以上の短点は「いっぱい」としか認識されない。「ちょっと長いから5だろう」「5ほどじゃないからHかな」ぐらいの曖昧な感じ。本当にイライラする。
もう初めて3ヶ月ほど経つのにこのありさまなのでやる気なくす。あまりにもこれらを間違えるので 26wpm から 20wpm 程度までスピードを落としてゆっくりやってる。多少マシになったかもしれないけど。あいかわらず間違える。聞きとれない文字がいくつかあると、それらで考えてしまって止まるので、速度があげられない。一度聞きとれないと、その単語は完全に落とすので、そういう文字があってはならない。
次に J と 1 も、S H 5 ほどではないけど区別がつかない。こっちはコールサインの文脈でよく使うので比較的頭に長さのイメージができているけど、それでも間違える。どうすれば解決するのか全くわからない。3ヶ月やってダメなら一生ダメなんじゃないか。
以上の符号以外にも、2、3、7、Z、X はそれ以外に比べてよく間違える。
AVR 浮動小数点 (float) 演算
浮動小数点演算を使ったとき、-lm を付けないとバイナリサイズが巨大化する問題がある。-lm をつけない場合、デフォルトの (libgccの?) 浮動小数点関数がリンクされるけど、avr 用には高効率なものが libm に実装されている。libgcc だと 3k -> libm だと 1k ぐらいのインパクトがあるので必ず libm を使うようにしたい。
とはいえ、ちゃんと理解してないと libm にリンクされない……
結論からいうと以下じゃないとだめだった。
$(COMPILE) -o main.elf $(OBJECTS) -lm
以下のようだとうまくいかない。
$(COMPILE) -lm -o main.elf $(OBJECTS) $(COMPILE) -o main.elf -lm $(OBJECTS)
というのも、リンカは、引数を順番に読みこんで、読み込み中のファイルに今までで未定義のシンボルがあったとき、それを解決する、という挙動をするらしい (なんとなく逆に、先に定義して解決していくもんだと思ってた)。
なので、先に -lm を指定しても、その時点では未定義のシンボルが何もないので何の意味もない。
gcc のオプションに -v (verbose) を渡すと、最終的に ld (collect2) に渡される引数がわかる。
うまくいく場合は main.o -lm -lgcc -lc -lgcc というふうになってる。main.o で使ってるシンボルが -lm で解決されて、あとまだ足りないのは -lgcc とかで解決される。-lgcc が2回出てくるのは、-lc が -lgcc を使ってるからかな。よくわかんない。
AVR、なぜかリセットされまくるとき
割込みかけるように設定しているにも関わらず、それに対する処理を書いていないと、sei() を呼んだあと、割込みが発生するときに落ちてリセットがかかる。
sei() が呼ばれるまでは問題ないので、コメントアウトでデバッグしていると超ハマる。
AVR シリアルでPCと接続してデバッグ
USB-シリアルポートアダプタ (RS-232C) は前に買っていたけど、RS-232C は正負 -12~+12 で1/0を表現うるので、マイコンのロジックレベル(0 or VCC)とは違っていて、そのままではマイコンと接続できない。
調べてみると、RS232トランシーバー (ドライバ) ICというのがあって、それを使えば簡単にレベル変換できることがわかった。有名なのは MAX232 というやつみたいだけど、ほぼ同じインターフェイス(ピンアサイン)でビットレートや電源電圧が違うやつがいろいろとあるみたいだ。
今回は ICL3232CPZ という 3.3V〜5V で動いて、なおかつ外付け部品が 0.1uF 5個だけというのを選んで作った。
繋いで以下のような、ボーレート 19200 で吐き出すコードを書いてみた (チップは ATTiny2313、レジスタ名がチップによって違うので、チップ変えるとそのままでは動かない)
#include <avr/io.h>
#include <string.h>
#include <util/delay.h>
#define clear_bit(v, bit) v &= ~(1 << bit)
#define set_bit(v, bit) v |= (1 << bit)
static inline void uart_putchar(char c) {
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
}
static inline void uart_puts(char* string) {
unsigned int len = strlen(string);
unsigned int i;
for (i = 0; i < len; i++) {
uart_putchar(string[i]);
}
uart_putchar('\r');
uart_putchar('\n');
}
void usart_init(unsigned short baudrate) {
unsigned int d = ((F_CPU + (baudrate * 8L)) / (baudrate * 16L) - 1);
UBRRL = d;
UBRRH = d >> 8;
UCSRB =
(1<<RXCIE) | // RX Complete Interrupt Enable
(1<<TXCIE) | // TX Complete Interrupt Enable
(0<<UDRIE) | // USART Data Register Empty Interrupt Enable
(1<<RXEN) | // Receiver Enable
(1<<TXEN) | // Transmitter Enable
(0<<UCSZ2) | // Character Size
(0<<RXB8) | // Receive Data Bit 8
(0<<TXB8) ; // Transmit Data Bit 8
UCSRC =
(0<<UMSEL) | // USART Mode Select: 0=Asynchronous Operation, 1=Synchronous Operation
(0<<UPM1)|(0<<UPM0) | // Parity Mode
(0<<USBS) | // Stop Bit Select
(1<<UCSZ1)|(1<<UCSZ0) | // Character Size (with UCSRB)
(0<<UCPOL) ; // Clock Polarity
}
static inline void setup_io () {
usart_init(19200);
}
int main(void) {
setup_io();
for (;;) {
uart_puts("Hello, World");
_delay_ms(1000);
}
} PC 側では、この USB シリアルポートアダプタの場合、/dev/tty.usbserial-FTB3L9UG というようなファイルができるので、これを指定して GNU screen の window を1つ作ってる。変なことしてないのでボーレートを指定するだけでいける。
screen /dev/tty.usbserial-FTB3L9UG 19200
これで RX/TX があるチップならかなりデバッグが捗りそう。
ATTiny13A
いろいろパーツを注文するついでに ATTiny13A というチップも買ってみた。
見ての通り8ピンしかないチップだけど、以下のような特徴がある
- 1個50円と激安。
- ADC がついてる
- プログラムに使えるのは1KBしかない
- SRAM が 64B だけある (のでCで書ける)
- 外付け水晶を使うのは面倒 (使わないつもりで書いたほうが良い)
- ISPを殺せば最大6ピンIOに使えるけど、基本5ピンしかIOに使えないと考えたほうがいい
かなり制約があって楽しい。サイズ的に浮動小数点は使えないので工夫する必要がある。メモリ(SRAM)も64Bしかないのでついうっかりするとオーバーしそう。でもCで開発できるのでいいバランス。
とりあえずエレキー作るのがいいかと思って作ってみた。
まとめを後日書きました ボタン電池で動く小型・低消費電力 AVR エレキー (50円 ワンチップマイコン ATTiny13A) | tech | avr | arduino - 氾濫原
ただ、ピン数が少ないせいで大きな問題がある。というのも、必然的に ISP で使うピンとアプリケーションのピンを共有することになるので、回路によっては、繋いだままの ISP というのができないっぽい。「SCK fail」とか「MOSI fail」とか出て意味不明だったけど、このせいみたいだ。うまくやらないと In-System Programming という感じでなくなる。なんか簡単ないい方法ないのかな。
ADC の端子がいくつかあるので、スイッチをたくさん繋いでいくというのは割とできそう。ただ出力はそうもいかない。ソフトウェアに使えるメモリ量も少ないので「ハードにないからソフトで実現」というのも難しいことが多そう。
それにしても「50円で買えるコンピュータ」というのはグっとくる。
Bose QuietComfort 15 のイヤーパッドを交換
使いはじめて2年ぐらい経ったところで、イヤーパッドの縫い目が割けてきしまったので、交換したくなった。とりあえず純正が高いので安いのを買ってみた。
Bose QuietComfort 15 対応交換用パッド◆QC15, QC2, AE2, AE2i 対応(univarcオリジナル) 安心安全保証付き U1355 cho45
さすがに本体とサイズが合わないということはなく、普通に使える感じ。ただ、純正と比べるとちょっと硬い。しばらく使ってみる。
Bose QuietComfort 15 Acoustic Noise Cancelling headphones ノイズキャンセリングヘッドホン QuietComfort15-S cho45
やっぱりほぼ毎日使っていると痛んでくる。どのぐらい長く使えるかな。もうこれ無しの生活とか考えられないんだけど
ピーラーは100均やIKEAのものを買ってはいけない。
IKEA で買ったピーラーの切れ味がよくなくて、うちで不評だったので以下を買った。知り合いの家にあって、便利だったので、検索してみたらすぐ見つかった。
スピードサラダ 19639 cho45
千切り機能とか使わねーだろと思ったけど、使ってみたら便利だった。刃物系はあんまり安いとよくないですね。
爪切りも少しだけ良いものを買ったほう確実に生活が向上していいです。
木屋 はがねの爪切り 大 BK-T02 cho45
↑ これほしい。
万年筆 PILOT カクノ (kakuno)
普段仕事でもなんでも殆ど、筆記用具を使わないので、筆記用具とかもはやどうでもいいやって感じだったけれど、最近になって筆記で勉強しはじめたので、捗る筆記用具について思いを馳せた。
最初は普通に今まで持っていたゴミみたいなシャープペンシルを使っていた。しかし、最近何かのアレで万年筆 (LAMYというメーカーのやつ) をもらったので、せっかくだからと使ってみたら、すごく書きやすかった。気に入った点は大したことではないんだけど、
- インクなのでシャープペンシルと比べて色が圧倒的に濃い
- 筆圧かけずにすらすら書ける
あたりで、それからはずっと万年筆を使って勉強してる。書くのが楽しいので、問題を解くモチベーションに繋る。
しかし、いただいた万年筆は線がちょっと太めな感じだったので、細いのが欲しくなった。と、いうタイミングで、ちょうどよくパイロットのカクノ という子供向け1000円の万年筆が発売されたので、買ってみた。(アマゾンにまだなかったので普通に文具店で買った。今はあるみたい)
買ったのは色はライトグリーンで、ペン先が F のもの。F のものが日本語筆記だとスタンダードっぽくて、ちょっと細めみたいだ。デザインはまぁ……悪くはないけどって感じだけど、使ってみた感じだと、先が細いぶんちょっとひっかかるかなというぐらいで十分良かったので、今はこっちをメインに使ってる。
と、いうのはいいんだけど、最初についてるインクが2週間経たないぐらいでなくなってしまって「えっ!」となった。実はインクがなくなるまで使えたら買おうと思っていたかっこいいインクがあったので、さっそく注文した。
↑ これ、どっかで見かけて、すごいかっこいいなー欲しいなーけど俺使わないなーと思っていたけど、案外インク使うことがわかったのでウキウキしながら買ってみた。
インクを入れるコンバーターというのも買った。(カクノには最初インクカートリッジがついてるけど、コンバーターも普通に使えるようだ)
一回ペンを洗ってから入れかえた。初めて入れかえをやったので結構楽しい。実際書いてみると色がすごく自分に好みだったので大変満足した。嬉しい買いものだった。色はかなりたくさんあって、悩んだけど、これ (月夜) にしてよかった。少しだけ緑が入っている夜空の青。
ペンを変えたら、ペンを使いたくなるので、勉強のモチベーションがちょっとあがる。簡単にモチベーションが上がるようなことは全部やったらいいと思うし、コストの割には結構いい感じに上がるので、たいへんいいなと思った。
しかし、もうすこしいいのも欲しくなるのが困る
カクノ以外は結構なお値段ですね!! カクノは使い捨てというわけではないし、コンバーターも使えるのでコストパフォーマンスは高そう。もうちょっとだけかっこいいのがあればなあ。
✖
Kindle がきた
新しい Kindle Paperwhite を買った (予約してたのを忘れてて、きづいたらきた)
Kindle を所有するのははじめてなので (すこし他人のを触らせてもらったことはある) あんまり比較はできない。とりあえず、持った感じはよくて結構嬉しい感じ。表示の切替えはあんまり早くない (これでも早くなったらしいけど)
とりあえず手元にある PDF を入れみたり、既に購入済みのやつを読んでみたりした。PDF はそのままだとコントラストを最高にしないと読みにくい。
あとウェブページを送信する用に
- Send to Kindle for Mac http://www.amazon.com/gp/sendtokindle/mac
をダウンロードしておいた。プリント先として表示されるようになって便利
持ち歩きで使うならカバーが必須な気がするなー と思っているけど、結構高いので買ってない。
Amazon Kindle Paperwhite用レザーカバー、オニックスブラック【Kindle Paperwhite(第5世代、第6世代、第7世代、マンガモデル)専用】 cho45























