2012年11月24日土曜日

ITeadさんで基板を作ってみたよ。

発注から到着まではこちらで紹介したので、ここでは出来上がってきたものを、ご紹介。

2012年11月18日日曜日

Pixelmatorで文字の輪郭を描く。

スクリーンショットへ文字を入れたりするときは、文字に輪郭を付けておくと、背景と混ざらなくて良い。 Skitchなんかだと、デフォルトで太めの輪郭が入るしね。同じことをPixelmatorでやってみた。

2012年11月17日土曜日

ITeadに基板を発注してみた。

海の向こうにあるITeadさんに基板を発注してみました。

2012年11月10日土曜日

玄箱proをlennyからsqueezeへ。

すんごーく今さら感があるけど、さすがにパッケージがアーカイブ行きしてますしね。

2012年11月9日金曜日

Eagleのimport-bmp.ulpで読み込める画像を作る

Pixelmatorから書き出したBitmapは、import-bmp.ulpで読めないっぽい。→ 参考
Too many pixels y direction

Anzahl der Pixel in Y zu gross
なんて言われる。 Imagemagickで変換してみる。
convert logo.jpg -colors 2 logo_small.bmp
convertで減色指定したり、eagleのimport-bmp.ulpで読み込むときに色を指定したりできるけど、やっぱりPixelmatorとかで白黒のデータを作ってしまうのが、直感的で良い。

2012年10月27日土曜日

リケーブル。

別に不便は無かったんだけど、SE315のケーブルを作り直した。

2012年10月24日水曜日

brew cleanupしてもkeg-onlyなパッケージが残る。

$ brew cleanup
Warning: Skipping (old) keg-only: /usr/local/Cellar/cairo/1.10.2
Warning: Skipping (old) keg-only: /usr/local/Cellar/cairo/1.12.2
ってなる。 一部のパッケージが、/usr/local/libにあるシンボリックリンクでなくて、/usr/local/Cellar配下にインストールされたものを直接参照しちゃったりしてるためらすぃ。なので、この場合cairoを参照するライブラリを探す。
$ brew uses cairo            
abiword    clutter     gerbv       gtk+
libgaiagraphics   pdf2svg
cairomm    cogl      ggobi       gtk+3
pango    py2cairo
--installedを付けると、インストール済みのものを絞り込める。
$ brew uses --installed cairo
cairomm  gtk+   pango
なので、
$ brew uninstall cairomm gtk+ pango
$ brew install cairomm gtk+ pango
したら、
$ brew cleanup
Removing: /usr/local/Cellar/cairo/1.10.2...
Removing: /usr/local/Cellar/cairo/1.12.2...
で綺麗になりましたとさ。 ここを参考にしたけど、そのまんまだとダメだったわー。

2012年9月26日水曜日

牛革の切れ端が着弾。

500gを二袋でっせ。
厚さも大きさもまちまち。ぱっと見、小さくかつ薄いのが多いかなー。
で、小さいので、工具のホルダを作ってみたぉ。色が全然違うけど、同じ革で作ってる。

2012年9月17日月曜日

カードケース作った。

TSUTAYAで見かけた雑誌のおまけ。
革は切ってあるし、縫い穴も開いてるし、ほんと縫うだけ。
トコノールといかいうので磨くと良いらしいが、そこまで資機材が揃っていないので、塗ったところで終了。
なんか革ズレちゃったのよね。

2012年8月17日金曜日

FusionPCBで基板を作ってみた。

SeeedStudioにFusionPCBを2件発注してみた。2件とも注文内容は以下のとおり。
  • Fusion PCB Service (PCB08511P) = $9.90
    • PCB Qty. 10
    • Layer 2
    • PCB Thickness 1.6mm
    • PCB Dimension 5cm Max*5cm Max
    • PCB Color Green
    • Surface Finish Hasl
    • E-Test 50% E-test
  • Registered Air Parcel (Weight: 0.08kg. Delivery Time: 0-30 days): $3.86
と基板製造費と送料合わせて、$13.76。PayPalで支払ったけど、発注のタイミングが2,3日ずれてて1件は1,107円、もう1件は1,105円となってた。

SeeedStudioからの情報

注文1注文2
8/3(金)発注、支払い、データ送信
8/6(月)ステータスが"In production"に発注、支払い、データ送信
8/7(火)ステータスが"In production"に
8/15(水)ステータスが"Shipped"にステータスが"Shipped"に
8/16(木)ステータスが"Traceable"にステータスが"Traceable"に

郵便局からの情報

SeeedStudioのサイトからはHK Postの追跡サービスに飛べるようになっているが、JPでも同様の追跡ができるので、JPで追跡するのが便利。
注文1注文2
8/16 18:27引受(HongKong)引受(HongKong)
8/18 15:31国際交換支店から発送(KOWLOON D)
8/18 15:32国際交換支店から発送(KOWLOON D)
8/19 17:13国際交換支店に到着(成田国際空港支店)
8/19 18:23国際交換支店に到着(成田国際空港支店)
8/20 09:00通関手続中(成田国際空港支店)通関手続中(成田国際空港支店)
8/20 13:23国際交換支店から発送(成田国際空港支店)国際交換支店から発送(成田国際空港支店)
8/21 6:55到着(XXX支店)到着(XXX支店)

2012年8月15日水曜日

debなところでEagle6

Eagle6をdebな環境(DebianとかUbuntuとか)で動かそうと(インストールしようと)すると、ライブラリ足らずでインストールできない。 ここにあるとおりで。パーミッションとかインストール先は、お好みででで。
$ wget ftp://ftp.cadsoft.de/eagle/program/6.0/eagle-lin-6.0.0.run
$ sed -e '1,/^__DATA__$/d' eagle-lin-6.0.0.run > eagle-lin-6.0.0.tar.bz2
$ tar xvjf eagle-lin-6.0.0.tar.bz2
$ cd eagle-6.0.0/bin
$ wget http://dl.dropbox.com/u/4295670/eagle_libs.tar.bz2
$ tar xvjf eagle_libs.tar.bz2
$ mv eagle eagle.orig
$ echo 'LD_LIBRARY_PATH="$(dirname "$0")" "$(dirname "$0")/eagle.orig" $@' > eagle
$ chmod a+x eagle

2012年8月11日土曜日

Damosが吐いたソース

ヘッダ

#ifndef CRUISECONTROL_H_
#define CRUISECONTROL_H_

#include 

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

typedef struct {
<09>double desiredSpeed;
<09>double actualSpeed;
} CruiseControl_Input;

typedef struct {
<09>double power;
} CruiseControl_Output;

void CruiseControl_initialize(void);

void CruiseControl_execute(const CruiseControl_Input *input, CruiseControl_Output *output);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* CRUISECONTROL_H_ */

実装

#include 

#include "CruiseControl.h"

typedef struct {
  double sum[2];
  uint_fast8_t sum_index;
} CruiseControl_DiscreteIntegrator_Context;

typedef struct {
  CruiseControl_DiscreteIntegrator_Context CruiseControl_DiscreteIntegrator;
} CruiseControl_Context;

typedef struct { double data[2]; } CruiseControl_Vector;

static CruiseControl_Context CruiseControl_context;

void CruiseControl_initialize(void) {
  /* DiscreteIntegrator */
  {
    CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index = 0;
    {
      CruiseControl_context.CruiseControl_DiscreteIntegrator.sum[CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index] = 0.0;
    }
  }
}

void CruiseControl_execute(const CruiseControl_Input *input, CruiseControl_Output *output) {
  double CruiseControl_Sum_y;
  double CruiseControl_Gain_y;
  double CruiseControl_DiscreteIntegrator_y;
  int32_t CruiseControl_Constant_y;
  double CruiseControl_Sum2_y;
  double CruiseControl_Saturation_y;
  uint_fast8_t CruiseControl_Compare_y;
  double CruiseControl_Switch_y;

  /*
   * Compute outputs
   */

  /* Sum */
  {
    CruiseControl_Vector sum_input = { { input->desiredSpeed, input->actualSpeed } };
    {
      CruiseControl_Sum_y = (1.0 * sum_input.data[INT32_C(0)] + -1.0 * sum_input.data[INT32_C(1)]);
    }
  }

  /* Gain */
  {
    {
      CruiseControl_Gain_y = 0.1 * CruiseControl_Sum_y;
    }
  }

  /* DiscreteIntegrator */
  {
    {
      CruiseControl_DiscreteIntegrator_y = CruiseControl_context.CruiseControl_DiscreteIntegrator.sum[CruiseControl_context.CruiseControl_DiscreteIntegrator.s
    }
  }

  /* Constant */
  {
    {
      CruiseControl_Constant_y = INT32_C(0);
    }
  }

  /* Sum2 */
  {
    CruiseControl_Vector sum2_input = { { CruiseControl_Gain_y, CruiseControl_DiscreteIntegrator_y } };
    {
      CruiseControl_Sum2_y = (1.0 * sum2_input.data[INT32_C(0)] + 1.0 * sum2_input.data[INT32_C(1)]);
    }
  }

  /* Saturation */
  {
    {
      double ifresult;
      if (CruiseControl_Sum2_y > 1.0) {
        ifresult = 1.0;
      } else {
        double ifresult2;
        if (CruiseControl_Sum2_y < -1.0) {
          ifresult2 = -1.0;
        } else {
          ifresult2 = CruiseControl_Sum2_y;
        }
        ifresult = ifresult2;
      }
      CruiseControl_Saturation_y = ifresult;
    }
  }

  /* Compare */
  {
    {
      CruiseControl_Compare_y = CruiseControl_Sum2_y == CruiseControl_Saturation_y;
    }
  }

  /* Power */
  {
    output->power = CruiseControl_Saturation_y;
  }

  /* Switch */
  {
    {
      double ifresult;
      if (CruiseControl_Compare_y) {
        ifresult = CruiseControl_Sum_y;
      } else {
        ifresult = ((double) (CruiseControl_Constant_y));
      }
      CruiseControl_Switch_y = ifresult;
    }
  }

  /*
   * Update states
   */

  /* DiscreteIntegrator */
  {
    {
      CruiseControl_context.CruiseControl_DiscreteIntegrator.sum[(CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index + 1) % 2] = CruiseControl_c
    }
    CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index = (CruiseControl_context.CruiseControl_DiscreteIntegrator.sum_index + 1) % 2;
  }
}

Damosを動かしてみた。

MATLABは買えわけないし、Scilabとかもチョットねー。 そんなわけで、YAKINDUのDamosを使ってコード生成/シミュレーションまでを試してみた。お題は決めてないので、ひとまずチュートリアルからチョイス。
なにがビックリって、Eclipseの変わり様。。。

2012年7月16日月曜日

竹ゴザ

リビングのカーペットが暑くなってきたので、ゴザにしてみたよ。
竹ゴザ痛い。

2012年7月13日金曜日

テクノ!テクノ!

テクノ手芸?一発目から、そんなうまくいくわけがない。
さしすぎ。のっぺり。

2012年7月5日木曜日

ローインピ版ChumoyAmpを作ったよ。

ここら辺を参考にヘッドホンアンプを作った。 で、その時の回路図とパターン

2012年7月1日日曜日

イヤホンのケーブルを作ったよ

愛用のShure-315のケーブルが断線気味。頭を傾ければカサカサと。買い替えるかなーって見ると、どれも5,000円オーバー。ちょっとなー。というわけで、自分で作ってみたさ。

材料

以下、揃えた。ケーブルは2m買って90cmで仕上げた。

作ったもの

全体は90cmになるようにしたかったんだけど、両端を加工したら少し短くなった。まぁそりゃそうだ。
耳側。そこら辺にあったクリップを伸ばして芯にした。ちょっと固い気もするけど。使ったケーブルが、すごく柔らかいので、多分チューブを被っていない部分で断線しそうな気がする。
U字の分岐。熱収縮チューブで補強しただけ。赤いPETチューブは、細いほう(耳側)と太いほう(ジャック側)で、同じ太さのもの。
ジャック側。今回は、一番お安いもので。思ったより綺麗に仕上がったし、ジャックも良いものにすれば良かったかも。

やってみて

今回は、純正品の断線があったところから始まっているので音質とかよりも、短過ぎず長過ぎず、ちょっとカッコ良い感じを意識して作った。実は、熱収縮チューブを入れ忘れたところとか、末端処理を真面目にしていなかったりと、見えないところがグデグデになってしまっている。耳側のほうまで、PETケーブルを被せたけど、左右で擦れ合って、ガサガサうるさいかも。これは失敗。

音質は、全体的にクリアになって、レベルが一段上がったのかなー?という感じ。真面目に聞き比べてないのだけど。ま、全部合わせて、2000円もあれば、お好みに作れることが分かったのが良かった。また時間のあるときに作ってみようと思う。

2012年5月5日土曜日

腕時計買ったよー

AngelCloverとRoenのコラボのやつ。

たんぽぽ写真

iPhoneで撮ったたんぽぽ。撮ったまんま画像。綺麗。

2012年4月20日金曜日

空を飛んで、空飛ぶものがやってきた。

quadcopterのパーツ類を揃えようと思って、まずはラジコン系パーツ。

買ったもの

  • HXT 2mm Gold Connector w/ Protector (10pcs/set)
  • Turnigy 3mm Philips Head Screwdriver
  • Turnigy 5.5mm Hex Socket Screwdriver
  • HobbyKing 6A ESC 0.5A UBEC
  • 3x2 Propeller (Counter Rotating) (5Pcs/Bag)
  • 3x2 Propellers (5Pcs/Bag)
  • Hard Steel Tweezer Set
  • Hobbyking Fiberglass Micro Quadcopter Frame
  • Turnigy 1811 Brushless Motor 2000kv
  • 5x3 Propellers (Standard and Counter Rotatin

着弾するまで

  • 4月2日に発注。
  • 4月5日に発送。
  • 4月7日に着弾。

着弾したよ

以外と小振りな梱包やった。
で、中身の半分はエアクッション。底側にエアクッションは無かったなー。
でーん。

2012年4月15日日曜日

無安定マルチバイブレータを空中配線してみた。

ちょっと見た目重視でLEDをチカチカさせたかったので空中配線で無安定マルチバイブレータを作ってみた。 空中配線といっても、ほぼ二次元に配置。真ん中が電源。クリップでつまんでいるのがGND。GNDは対角線上にもう一本ある。
ブレッドボードにセット!!電源は、LEDをドライブできて、トランジスタの定格5Vを越えない範囲であれば良いので、CR2032(3V)を使ってみた。
動かすと、こんな感じ。
背景が白ってカッコ良く撮れるね。

2012年4月5日木曜日

QuartzComposerが無ぁぁぁい!!

Xcodeを4.3にしたら、Quartz Composerが無くなっちゃったよ。 別パッケージになったので、ダウンロードしろや、ということらしい。 Downloads for Apple DevelopersなるところからGraphics Tools for Xcode - March 2012を選択してダウンロード。
メデタシ、メデタシ。

2012年3月13日火曜日

台湾を出国したみたい。

発送されて着々と手元に近付いている。 まず、お願したところのログ。
3月1日に発注して、その直後にガーバーとか送った。バタバタしててシルクにオーダー番号入れるの忘れたけど、作ってもらえたみたい。ラッキー。2日に"In production"になってるけど、3日に
Dear customer,
Your PCB is under processing, If the file and design meets requirements,
they will be processed and shipped in 4-6 working days.
Thanks
monkey
っつうメールが来た。「もし、要求を満たしているのであれば、、、」ってことは、2日の段階では未だ作ってなかったってことかね? その後は何も連絡もなく、7日に発送。まぁ、何かが出来上がったのでしょう。香港郵政サンのトラッキングナンバーが振られたので確認。
  • 受け取ったよ。
  • 出国するよ。(税関かな?)
  • 出国したよ。
みたいな感じでステートが更新されてった。今は、こんな感じ。
試しに日本郵便サンでも検索したら、出てきた。スゲーな。
見る限り台湾の九龍から発送されたみたい。13日に台湾を出てるのかなー。だとすると14日には届いて、、、今週中に到着!?。

2012年3月4日日曜日

眼鏡買ってみた

別に目が悪いなんてことはない。ただ、最近疲れるみたい。まぁ一日中、パソコンの画面とiPhoneを見続けてるわけだし。なんで、Zoffで、Zoff PCなるレンズで眼鏡を作ってみた。人生初眼鏡。

えーっとね。レンズが茶色っぽいのは、そういうものらしい。何というか。。。普段眼鏡なんかかけてない人が眼鏡をかけ始めるわけで、違和感があって、Zoff PCが有効打になっているか分からん。ただ、しばらくしてから外すと、パソコンの画面の白い部分が青く見えるぜ。

LPCXpressoを切ってみた。

まずは、購入時にジャンプしてある半田を外してみた。
おりゃおりゃと、ひたすら吸わせていくと、
綺麗に取れました。っと。でわ、次は、ターゲットとデバッガを切断しちゃいまっせ。今回は、ダイヤモンドカッターで切ります。
軽ぅくなぞってみたり、ぐいっと押し込んでみたり、、、
なんだか、デバッガのほうに寄り過ぎた。
あわわー、ちょっとやり過ぎた。

2012年2月23日木曜日

ADS1102CALを買ってみた

オシロスコープを海の向こうの隣国から買ってみた記録。Attenなどという聞いことも無いメーカーさんの、ADS1102CALというやつ。まぁ、デュアルチャネルで、USBメモリへの保存もできるから、無いよりかは格段に作業効率が上がるはず。
年明け早々の1月2日にオーダー。で、1月8日に発送。以降DHLさんが頑張る。
中国→香港→日本ですね。で、国内は佐川が持ってきました。そういえば、国内に入ったところでDHLから中身の確認があった。通関を通すためだってね。で、その時に「時間帯指定できますか?」と聞いたら、「私の業務じゃないから、カスタマセンターに電話してね」と。で、通関通ったのを確認したあたりで電話。荷物番号伝えると「確認しまーす。。。その荷物は、佐川に受け渡したよ。こちらから佐川に連絡できるけど、どうする?」「佐川の荷物番号教えて」ということで佐川的な荷物番号をゲット。あとは、普通の宅配便と同じ。帰宅後を指定して届けてもらいました。というわけでドーンッ!!
怪しい黒いビニールに包まれていた。
でビリビリとビニールを剥してみると、、、そこには、オシロの箱が。うしし。って、一緒に買ったものは、どこ?超音波センサとジャンプワイヤ買ったんだけどなー。別便なのかなー。そんな連絡何もないし。って、見てみるとオシロの箱が開いておる。まさか。。。
いたっ!!って、オシロ開けたんかい!!仮にも計測機器でっせ。。。まぁ、全ての品が無事届いたから良しとしよう。

LPCXpresso IDEでアセンブラ単位のステップ実行

いつもどおりデバッグを始めるよね。
で、デバッグビューのツールバーには、ステップインとステップオーバーがある。ステップインは、関数内に入る。
ステップオーバーは、関数内を実行してしまい、次の行に進む。
まぁ、ここら辺までは、良いよね。でもさ、OSとかのデバッグとか、インラインアセンブラで書いた部分をデバッグしようとすると、これだと事足りないわけですよ。C言語で書いたプログラムをディスアセンブルしたものの機械語を一つずつステップ実行したいとかなるわけです。そこで、コレ。
押してみると、ビューが変わる。
ディスアセンブルしたものが見えてますね。このままステップオーバーすると、
おぉ。これぞまさに1ステップ!! そんなわけで、アセンブラ1行ずつをステップ実行する方法でした。

2012年2月21日火曜日

MacでLPCXpresso使いたいのだー。

LPCXpressoの開発をVirtualMachine上でやってみた。 Mac向けの環境が無いんだからしょうがない。 Linuxでは動くので、VirtualBox上でDebianを動かして、そこでやってみた。
  1. VirtualBoxのインストール
  2. Debianのインストール
  3. LPCXpresso-IDEのインストール
ここまでは、普通に済ませる。OSがネイティブに動いているのであれば、ここでLPC-Linkを挿してバリバリ開発になるのだが、今回はVirtualMachine上で動くDebianにUSBデバイス(LPC-Link)をパイプしてあげないといけない。以下、その手順。 まずは、LPC-Linkを挿してフィルタに追加する。 設定画面のポート→USBを選択して、「+」のアイコンをクリックする。。。
LPC-Linkが挿さっていれば「不明なデバイス 0471:DF55」がリストされるので選択する。
これで、LPC-Linkを挿したときに自動でゲストOSから見えるようになる。 見えてますよね。の確認は、こんな感じ。
さて、これで、いざ開発!!といきたいところだが、そうもいかない。 LPC-Linkは、接続された直後はDFUデバイスになっていて、そこにデバッガファームを書き込んでからでないと使えない。 で、デバッガファームを書き換えると、接続直後とは別のUSBデバイスに変身するので、そちら側も自動で仮想マシンに接続するように設定してあげないといけないわけだ。 というわけで、ここでLPC-Linkに変身してもらう。詳しくは、 ここら辺。
もう一度、USBデバイスの設定をする。仮想マシンの設定を開いて、
USBデバイスを選択する。
上記コマンドが正しく処理されていれば、以下のように「Code Red Technologies LPC-Link Probe v1.1」なんてのがいるので、こいつを選択すればOK。
ここまでの設定で、以下のように2つのデバイスがエントリされていれば、OK。
ここで、LPC-LinkをDFUデバイスとして認識させるために抜いてしまう。ちゃんと設定できていれば、LPC-Linkを接続したところで自動的に仮想マシンに繋がるので、あとはIDEでリアル環境と同じように使えますよ。