2017年10月15日日曜日

Arduinoのブートローダー焼き器作った

タイマーレリーズのプロトタイプをArduinoのシールドとして作ったが、Arduino UNOを一つ占有したり、高さが高くて適当なケースがなさそうなので、専用ボードとして作ることにした。

そのための第一歩として、Arduino UNOのブートローダー焼き器をシールドで作った訳だが、やはりArduino UNOを一つ占有してしまうわけで...


ブートローダー焼き専用ボードを作ることにした。

Arduinoのサイトを参考にこんな回路に


Arduinoのサイトには見当たらなかったが、ブートローダーを焼く時は10μFのケミコンが必要ということらしいので、その部分を追加(これはシールドバージョンでも同じ)。何かあった時(例えばブートローダー書き込み用スケッチに不具合があってフィックスした物がリリースされるとか)用にスケッチを書き込む時は10μFは不要というか無い方がよさそうなので、スケッチを書き込む時と切り替えるためのスイッチを設けた。

ということで完成 v(^ ^)。これでバンバン焼ける。


これに先立ってArduino UNOのまがい物を作った。何かのプロトタイプとか検証する時にブレッドボードにいちいち組むのが面倒なので、I/Oを引き出すためのソケット付き。


もう一つ作るものがあって、その後やっとタイマーレリーズの作成。

2017年8月1日火曜日

タイマーレリーズの仕様など

タイマーレリーズの仕様とかアイデアを忘れないように書き留めておくことにする。こうしておけば会社からも見ることができる(書き込みはダメなんだっけな?フィルタ出来なさそうな気がするので書けそうな気がするけどやめとく)。

勉強、検証の結果、実装がめんどくさくなって端折る機能も出てくるかも。

名称は統一感がないけど雰囲気で。

要件としては
  • 露光時間を指定できる
  • 露光と露光の間のインターバルを指定できる
  • 上記露光パターンを繰り返し実行できる
  • 露光繰り返しを開始するまでのディレイを指定できる 
  • 設定および進行状況を表示する(小型のLCD)
だけ。

動き

  • 待機、パラメータ設定、露光の3つの状態を使う
  • 待機状態で設定ボタンを押すとパラメータ設定モードになる
  • パラメータ設定状態で決定ボタンを押すとパラメータ設定を終えて待機モードになる(左右上下以外のボタンでも設定状態を終了してもよさそう)
  • 待機状態で、露光ボタンを押すと露光モードになる。
  • 待機状態で、1ショット、バルブ撮影ができる。
  • バルブ撮影は、機械的にやるのは大変なので、トグル動作とする。
  • パラメータ設定モードの時に、露光ボタン、1ショットボタン、バルブボタンを受け付けるかどうかは未定。律儀にパラメータ設定モードを終了しないとできないか、それとも、その状態で実行するか(特に露光モードは、修正中のパラメータでえいっと走るか。なんか気持ち悪いかも)
  • 露光状態に強制停止を押すとストップ(撮影初めてから、「あっ間違えた」って事がわりとある)

ボタンの設計

ボタンは以下の9個でいいだろう。
  • 撮影スタート
  • 強制停止
  • パラメータ設定用の左右上下 (4個)
  • 設定/決定
  • 1ショット撮影(撮影時にテスト)
  • バルブ撮影(トグル動作)
このままだとボタンだけでI/Oを食いつぶすので、抵抗で分圧してアナログ入力で判定する。

強制停止は割り込み使った方がいいか他のと同じようにするのがいいかは勉強しだい。あと、分圧の間隔が狭くなって判定が微妙になるのを避ける目的で独立ボタンに割り振るかも。抵抗の誤差とアナログ入力の分解能次第。

Arduinoのリセットスイッチも引き出す。まさかのためのリセット。

画面イメージ

16x2のLCD (1602)を使って、

0123456789 ABCDEF
EXP:9999sD:99s
INT:999sREP:999

この画面イメージができた時点ですでに各種パラメータの設定値は決まった。
  • 露光時間は0秒~9999秒
  • インターバルは0秒~999秒
  • 繰り返し回数は0回~999回
  • 開始までのディレイは0秒~99秒
0秒とか0回はないな。あまり常識的でない数字は除外するか。設定モードが終わって決定ボタンを押したらあらかじめ決めておいた最低値に設定するとか。

    2017年7月30日日曜日

    タイマーレリーズの作成始めました

    長らく作ろうと思いつつなかなか手を動かせなかったタイマーレリーズの作成に本格的に取り掛かることにした。

    その類の製品は売ってるのに敢えて作るのは以下の理由。実際にいくつか買って失敗している。
    • 時間が正確でない。露光時間を300秒で設定してるのに299秒になってる。299秒みたく中途半端な数字であろうがスタックするのが全部同じなら問題ないわけだけど、気持ち悪い。この考え病気の元。
    • 電源スイッチがない。キヤノン純正のも写真を見た感じでは電源スイッチらしきものが見当たらない。写真に写ってないところにあるのかもしれないけど。
    • 操作性がイマイチな感じ。というかボタンの押し感が悪いとか。
    • ハングした。もうこれダメ orz
    物はAruduinoで作成。これまでこの手はおもちゃとして買ってはいたもののおもちゃとして使うこともなく工作箱の中で眠ってたので、初めて実用的な工作。

    バージョン-1はモックということで、部品は以下二つ。
    • マルツのMaruduino UNO R3
    • Arduinoコンパチの 1602液晶 IIC/I2Cタイプ
    NewliquidCrystal_1.3.4.zip (https://bitbucket.org/fmalpartida/)

    https://arduino-info.wikispaces.com/LCD-Blue-I2C を参考に(というかそのままパクって)、

    結線。 
    LCDArduino
    GNDGND
    VCC5V
    SDAA4
    SCLA5





    で、
    • 実行前のディレイを6秒
    • 繰り返しを3回
    • 露光時間を3秒
    • インターバルを2秒
    とハードコーディングで動かしたのが、これ


    とりあえずモック完成。

    この後の流れは
    1. カメラとの接続
    2. 各パラメータをボタンとかで設定。これでほぼ完成
    3. 大きめのケース入れ。これ結構ハードル高し
    適宜リファイン。これで夏を乗り切る。

    将来的にはPICしたいかも。

    スケッチを描いての感想
    • 最近やってるkotlinのせいで行末のセミコロン付け忘れ多し
    • char[] の扱い。文字数+1個が必要。忘れてはないけど、めんどくさかった。
    最低限カメラとの接続はさっさとやろ。

    2017年2月1日水曜日

    ubuntuでUEFIでRAID1した時にハマったこと

    普通に、ubuntuをRAID1でインストールしようとしたら、最後の方のgrubインストールでエラーが。これはfatalだ。と。RAIDでなく、HDD単体でインストールするも同じ。ubuntu grubをキーにネットで探すもそれらしいものが見つからず。

    が、なんのことはない。HDDをgptにすればよいということだった。UEFIからブートするようにするには、gptでなければならないらしい。このHDDはFreeNASでデータ領域としてRAID1してたやつだったからgptでなかったんだろう。きっと。昔の型式(?)を選べるMBもあるらしいけど、うちのはダメだったので素直にgptに。

    で、後にもはまる可能性もあるので、その時のためのメモ。

    ubuntuのdesktop版でTry Ubuntuを起動。


    gpartdでcreate partition





    partitionを作るときのタイプをgptに。





    で、grubインストールできてブートできるようになってるはずなので、本来の目的のserverのインストール。

    無事

    生意気にも Serial のところをマスクしてみた。

    ちなみに、どこからか検索して飛んできた人がいるといけないので、注意しとくと用語の使いかたとか適当です。