ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

MozJpegGUIの更新

MozJpegGUIの更新に着手。目標は、

このうち、ライブラリのバージョンアップは完了。速度は変わらず。

メタデータの維持はどうやろうかなあ。GDI+を使うのが王道っぽいけど、Save()時に再エンコードされそうでこわい。

自転車用ウインカーの制作(17)

ここまでにかかった材料と費用のまとめ。

■回路

 

5LED リアライト | 【公式】DAISO(ダイソー)ネットストア (100円)×5

AVRマイコン ATTINY202−SSNR: マイコン関連 秋月電子通商-電子部品・ネット通販 (70円)×5

SOP8(1.27mm)DIP変換基板 金フラッシュ (9枚入): パーツ一般 秋月電子通商-電子部品・ネット通販 (100円)×1

両面スルーホールガラスコンポジット・ユニバーサル基板 Fタイプ: パーツ一般 秋月電子通商-電子部品・ネット通販 (15円)×4

片面ユニバーサル基板 45×45mm: パーツ一般 秋月電子通商-電子部品・ネット通販 (50円)×1

5mm黄色LED 590nm OSY5RU5A31E−NO (100個入): LED(発光ダイオード) 秋月電子通商-電子部品・ネット通販 (150円)×1

カーボン抵抗(炭素皮膜抵抗) 1/6W150Ω (100本入): パーツ一般 秋月電子通商-電子部品・ネット通販 (100円)×1

カーボン抵抗(炭素皮膜抵抗) 1/6W1kΩ (100本入): パーツ一般 秋月電子通商-電子部品・ネット通販 (100円)×1

半固定ボリューム GF063P 1kΩ: パーツ一般 秋月電子通商-電子部品・ネット通販 (30円)×1

高速スイッチング・ダイオード 1SS178(100本入): 半導体(モジュール) 秋月電子通商-電子部品・ネット通販 (100円)×1

圧電スピーカー(圧電サウンダ)(13mm)PKM13EPYH4000−A0: パーツ一般 秋月電子通商-電子部品・ネット通販 (30円)×1

2.5mmピッチコネクタ ハウジング 2P SXH−2 (20個入): パーツ一般 秋月電子通商-電子部品・ネット通販 (80円)×1

XHコネクタ ベース付ポスト サイド型 2P S2B−XH−A(LF)(SN): パーツ一般 秋月電子通商-電子部品・ネット通販 (10円)×11

2.5mmピッチコネクタ コンタクト SXH−001T−P0.6C (100個入): パーツ一般 秋月電子通商-電子部品・ネット通販 (150円)×1

防水トグルスイッチ 1回路2接点 IP67 パネル取付用: パーツ一般 秋月電子通商-電子部品・ネット通販 (130円)×2

AWG28 赤・黒ペア撚り線 オヤイデ電気 (44円)×10m

電池ボックス 単3×2本 リード線・間仕切りあり: パーツ一般 秋月電子通商-電子部品・ネット通販 (50円)×1

小計 2660円

■プログラミング用デバイス

FT234X 超小型USBシリアル変換モジュール: 半導体(モジュール) 秋月電子通商-電子部品・ネット通販 (780円)×1

■構造材

ヒノキ材 35×10×450 セリア (100円)×1

DAT―11 スチール金具 L字 M 4P | 【公式】DAISO(ダイソー)ネットストア (100円)×1

クリアキューブ90 | 【公式】DAISO(ダイソー)ネットストア (100円)×1

パッキン一体型保存容器(抗菌加工、200mL) | 【公式】DAISO(ダイソー)ネットストア (100円)×1

小計 400円

■工具類(すでに持っていたものも含む)

ハンダごて 30W | 【公式】DAISO(ダイソー)ネットストア (500円)×1

ハンダ 精密部品用 (300円?)×1

ジルコニウムコーティング 鉄工ドリル刃2.0mm | 【公式】DAISO(ダイソー)ネットストア (100円)×1

ジルコニウムコーティング 鉄工ドリル刃3.0mm | 【公式】DAISO(ダイソー)ネットストア (100円)×1

チタンコーティング鉄工ドリル刃5.0mm6角ビット付 | 【公式】DAISO(ダイソー)ネットストア (100円)×1

グルーガン | 【公式】DAISO(ダイソー)ネットストア (200円)×1

グルースティック(クリア、15本、7.5mm×100mm、ボ | 【公式】DAISO(ダイソー)ネットストア (100円)×1

レジン ハードタイプ 20g ダイソー (300円)×1

プラスドライバー

ねじりっこ

小計 1200円

 

材料費(基板+構造材):3060円

道具類(工具+プログラミング):1980円

合計:5040円

 

はんだごて等の工具類はだいたい持っていたから、今回かかったのは4000円ぐらいかな。

大人の夏休みの工作にしては、安く済んだかな?

自転車用ウインカーの制作(16)

今日は、各部品を自転車に固定するパーツを作る。

まずはウインカー用スイッチから。

ブレーキを固定している部分に、ブレーキと共締めで固定したい。でも、ネジの向きとスイッチの向きがねじれの関係になるので、パーツを作る必要がある。

何かいいのが無いかなーと探してたら、あった。

クリアキューブ90jp.daisonet.com

クリアキューブ90

こいつのコーナー部分を切り出して使う。

で、できあがったのがこちら。ちょっと穴あけミスってヒビが入ったけど、大丈夫だろう。分かりづらいけど、スイッチの向こう側にも壁がついていて、なにげに頑丈なのがポイント。本当は共締め側に壁が欲しかったんだけど、他のパーツと干渉する恐れがあったので断念。

スイッチ固定ツール

次。尾灯を固定する台。セリアで35mm×10mm×450mmのヒノキ板を購入。

尾灯はサドル後方の荷物固定部に取り付けるため、90度のアングルを介して台を取り付け、これに開けた穴にねじりっこを通して固定する。

アングルはやはり100均で4個入りのものを使用。スチール製なので錆びるかもしれん。

DAT―11 スチール金具 L字 M 4Pjp.daisonet.com

尾灯の取付台

これにねじりっこを通して

ねじりっこを通したところ

尾灯後部のフックを引っ掛ける。

尾灯のフックを引っ掛けて固定

反対側も固定して、後方のウインカー完成。

後方のウインカー完成

同様にして、前方のウインカーも完成。

前方ウインカー完成

今日はここまで。

自転車用ウインカーの制作(15)

自転車用ウインカー続き。

前回バグを修正したあとの基板裏面写真。追加抵抗が目立つ。

基板裏面(バグ修正後)

さて。これを容器に密封しなきゃならないんだけど。電池交換のことを考えるとフタつき密封容器が良さそうだ。

いいのがあった。

パッキン一体型保存容器(抗菌加工、200mL)jp.daisonet.com

これなら4方向にロックもついてて、意図せず開くことも無さそうだ。

さっそくフタに穴を開け、基板を固定。

フタに基板を固定したところ

ケーブル類は容器の方に穴を開けてそこを通そう。穴はあとで塞ごう。

んー。この容器はハンドル付近に固定したいけど、どうやって固定しようかな。

そういえば、あまった尾灯があったなあ。試しにつけてみるか・・・

ぴったりすぎる!採用!ということで、グルーガンで固定。

尾灯の下半分がピッタリハマった

自転車固定部もつけたところ

試しにケーブルを全て穴に通してみる。うん、なんとかなるな。

容器の穴にケーブルを通してみた

試運転

今日はここまで。

自転車用ウインカーの制作(14)

回路にバグを見つけてしまった。以下、スイッチを左右とも切った状態でのLED状態。左右のスイッチを両方切るとMCUの電源が切れる構成なのに、なぜかうっすらと点灯している。

MCU電源を切ったのにLEDが光ってる

回路構成を眺めなおしてみる。

現在の回路構成

ん~。今回の回路は、MCUの電源電圧がダイオードの電圧降下のせいで2V程度と低くなってしまい、同じ電圧をLEDに与えると点灯しない(2.1V typ.が必要)のでわざとMCUとは異なる電源につないでるんだけど。MCUへの漏れ電流かなにかで点灯しちゃってるぽいなあ。

すぐ思いつく対処方法は・・・ダイオードを順方向電圧降下が少ないショットキーバリアダイオードにしたうえでLEDの電源とMCUの電源を共通化することかな。(なぜ最初からこうしなかったんだろう)

でも通販は輸送費が高いし、秋月は遠いし・・・。

・・・必要な時にだけLEDに電力を与えればいいんだから、LEDの電源をスイッチ直結とすればいいのかな。すなわち、こうだ。

変更前

変更後

よし、無事治った。今日はここまで。

LEDが完全消灯した



自転車用ウインカーの制作(13)

AVRマイコンATtiny202でソフトがうまく起動しない件について、根本原因が分かった。

今回の回路は単三電池2本で、すなわち3V付近で動作する。今回のAVRマイコンは1.8Vから動作できるので問題ないはずだった。

ATtiny202マニュアル 31.3 General Operating Ratingsより動作電圧範囲

そう、問題ないはずだった・・・。

だがしかし。

見つけてしまったのだ。

動作クロックの上限が、電圧ごとに異なるという表を。

ATtiny202マニュアル 31.3 General Operating Ratingsより動作可能なクロック範囲

これによると、3.3Vなら10MHzぐらい、1.8Vだと5MHzが最大クロックらしい。そして今の自分の設定は・・・20MHz。だめじゃん。

しかも、制御基板ではダイオードのせいで電圧ドロップ1.1Vが発生し、供給されてる電圧は2V程度。となると動作可能電圧は最大5MHz程度。20MHzなんて論外だ。

というわけで、動作速度を落としたら無事安定起動するようになりました。おわり。

自転車用ウインカーの制作(12)

制御回路のはんだ付けが無事完了したので、さっそくプログラムを作る。

構造はシンプル。スイッチの状態に応じてLEDを点灯する。また、電源が入っている間はピッピッと音を出す。

構造はシンプルだし、エラー処理とかもいらないのでコードもシンプル。

void setup() {
  // put your setup code here, to run once:
  pinMode(PIN_PA1, OUTPUT);
  pinMode(PIN_PA2, OUTPUT);
  pinMode(PIN_PA3, OUTPUT);
  pinMode(PIN_PA6, INPUT);
  pinMode(PIN_PA7, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(PIN_PA1, !digitalRead(PIN_PA7));
  digitalWrite(PIN_PA3, !digitalRead(PIN_PA6));
  tone(PIN_PA2, 880, 10);
  delay(500);
  digitalWrite(PIN_PA1, HIGH);
  digitalWrite(PIN_PA3, HIGH);
  tone(PIN_PA2, 880, 5);
  delay(500);
}

これで試しに動かしてみた。

・・・あれ。なぜかLEDが常に両方ONになる。なぜだろう?

試しにテスターでOFF側スイッチの電圧を計ってみる。0Vだ。あれ?テスターの針を当てたらLEDが消灯したぞ?ということは・・・入力インピーダンスが高すぎて、電荷が溜まってたのかな?というわけで、抵抗R11, 12を追加してみた。以下、変更後の回路図。

回路図(ダイオード下流からの電荷抜き抵抗を追加)

よし、無事動いた。以下、動いている様子。

動作テスト

今日はここまで。