記事一覧

Arduinoで湿度計の実験

2013.03.04

随分前にという湿度センサを買っていたんですが、直流厳禁ということで使いあぐねて寝かしていたんですが、今回素晴らしいサイトに出会い複雑な回路を組まずに手軽に利用できることを知りました。
■HS15P 湿度センサーの簡易動作実験■
こちらのHPによると、HS-15Pとコンデンサ1つで簡単に計測できるとのこと。早速ブレッドボードに組んでみます。
ファイル 26-1.png
ただ、私は数学も物理も苦手で書いてある事の半分も理解できず・・・とりあえず、HPに公開されているCのソース(ATtiny13A用)を解釈してArduinoに移植。何とかそれらしい値が出るようになりました。
TmpHumLCD_Sample.zip
ファイル 26-2.jpg
ホームセンターで買った温湿度計と比べても、まあまあの値です。
ただ精度の方は定かではありませんが、目安程度にはなるのではないでしょうか。
手元には、CDSセンサーや気圧センサなんかもあるので、そのうち環境モニタ&ロガー的なものを作ってみたいと思います。

タグ:Arduino センサー

Arduinoでシフトレジスタの実験

2013.03.02

アマゾンでArduinoを買いました。
久々の電子工作に挑戦!ということで、さっそくシフトレジスタ(74HC164)につないでナイトライダー風に光らせて遊んでみました。


ようつべカスタマイザ

こんな感じで配置(LEDの配線は一部省略)
ファイル 25-1.png

簡単ですが、ソースファイルも置いておきます。AR_NightSample.zip

少しだけソース解説
LED全消灯関数

void ledClear() {
digitalWrite(aPin,HIGH);
for(int i = 0; i < 9; i++){
digitalWrite(clkPin,LOW);
delayMicroseconds(1);
digitalWrite(clkPin,HIGH);
delayMicroseconds(1);
}
}

シフトレジスタをクリアするために、clk(クロックピン)の上げ下げを行っています。

LEDパターン表示関数

void ledDigit(int d) {
ledClear();
for (int i = 0; i < 9; i++) {
digitalWrite(clkPin, HIGH);
digitalWrite(aPin, ~d & (1 << i));
delayMicroseconds(1);
digitalWrite(clkPin, LOW);
delayMicroseconds(1);
}
delay(INTERVAL);
}

ledDigitには表示したいパターンを数値で渡します。
例えば、

であれば、2進数に直した「10101010」の数値(10進でも2進でも)を関数に渡します。
関数内では、1を1ビットずつ左シフトしてAND(&)を取った値によりLEDの表示判定を行っています。
digitalWrite()に渡す値、HIGH/LOWは数値の1/0で代用できるようなので結果をそのまま渡します。
digitalWrite(aPin, ~d & (1 << i));
(今回はLEDをアノードコモンにし、164のピンがLOWになったときに表示するようにしているので、さらにNOT(~)により結果を反転しています)
ましたが、ArduinoはUSBを刺すだけで、エディタにコンパイラとマイコンへのアップローダが統合されていて相当便利です。ちょっとした回路の実験にはもってこいですね。

タグ:74HC164 Arduino LED ロジックIC

C#でTestLinkのAPIを叩く

2012.02.15

最近オープンソースのプロジェクト管理を色々試していて、ブラウザからだけではなく、API経由で色々操作を行いたいと思うようになりました。
TestLinkの場合、\lib\api\sample_clients以下にJavaやRubyのサンプルがあるのですが、自分の環境には合わないのでC#で自作することにしました。
C#は初めてだったのですが、始めてみると意外と簡単にプログラミングすることができました。
TestLinkAPIはXML-RPCという仕様らしいのですが、基本的にはXMLのメッセージをPOSTして、結果がXMLで返ってきます。
C#ではWeb系のライブラリを利用することで、この動きを簡単に実装することができます。


// リクエストの作成
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "text/xml";
req.ContentLength = data.Length;
req.UserAgent = "tlclient";

// ポスト・データの書き込み
Stream reqStream = req.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();

// レスポンスの取得と読み込み
WebResponse res = req.GetResponse();
Stream resStream = res.GetResponseStream();
StreamReader sr = new StreamReader(resStream, Encoding.UTF8);

sr.Close();
resStream.Close();

・WebRequest.Createでリクエストを作り
 ↓
・GetRequestStreamで取得したストリームにデータを書き込み
 ↓
・GetResponseでレスポンスが返ってくるのでStreamReader経由で結果を読み込む
という流れになります
APIに渡すXMLは構造が決まっているので、定型化したプログラムになります


XmlDocument xInp = new XmlDocument();
System.Xml.XmlDeclaration decl = xInp.CreateXmlDeclaration("1.0", "UTF-8", null);
xInp.AppendChild(decl);
XmlNode root = xInp.CreateElement("methodCall");
XmlNode meth = xInp.CreateElement("methodName"); meth.InnerText = cmd;
XmlNode pams = xInp.CreateElement("parms");
XmlNode parm = xInp.CreateElement("parm");
XmlNode strc = xInp.CreateElement("struct");
foreach (DictionaryEntry col in ht)
{
XmlNode memb = xInp.CreateElement("member");
XmlNode mnam = xInp.CreateElement("name");
mnam.InnerText = col.Key.ToString();
XmlNode mval = xInp.CreateElement("string");
mval.InnerText = col.Value.ToString();
memb.AppendChild(mnam);
memb.AppendChild(mval);
strc.AppendChild(memb);
}
parm.AppendChild(strc);
pams.AppendChild(parm);
root.AppendChild(meth);
root.AppendChild(pams);
xInp.AppendChild(root);
return xInp;

タグは、"methodCall"から順にぶら下がっていき、"struct"以下に渡したいパラメータを作ります。
この時の注意は、"member"の下にパラメータを"name"と"string"のセットで渡すことです。
パラメータが複数ある場合は、"struct"に"member"のツリーを複数追加していくことになります。
私のプログラムではパラメータの取り回しをしやすいように、各パラメータをHasTableの(パラメータ名:値)の組として、ArrayListの配列で扱うようにしてみました。
(テスト計画一覧の取得関数の例)

public ArrayList getPlans(int pid)
{
Hashtable ht = new Hashtable();
ht.Add("devKey", TLClient.key);
ht.Add("testprojectid", pid);
ArrayList list = postCmd("tl.getProjectTestPlans", ht);
return list;
}

HashTableに
 devkey:TestLinkのAPIキー
 testprojectid:テストプロジェクトのID値
という組で渡し、XMLツリーに展開します。

タグ:C# TestLink

ホンダ Z GT の製作(3)

2010.01.06

今回、フロントとリアのバンパーはメッキの光沢を出したいと思ったので、「アルクラッドII・クローム」という塗料を使いました。
下地にはエナメルブラックの光沢という指定がありますので、その通りに塗装、上からエアブラシでクロームを吹きます。

リアの様子。

フロントはクロームの上からクリアオレンジでウインカーを塗ります。

窓枠は幅広のマスキングテープで型取りをし、キッチン用のアルミテープから切り出して貼り付け。

同じ方法で、室内とフェンダーのバックミラーも作成できます。

タグ:プラモ アリイ ホンダZ

ホンダ Z GT の製作(2)

2009.12.02

前回自動車系のプラモを作ったのは、ナイジェル・マンセルがF1で活躍していた頃のウイリアムズ・ルノーや中島悟のホンダマシンだったので、かれこれ20年振りということになります。
リハビリ第一作のZ-GTはお手ごろで良いかな、と思いましたが結果は如何に・・・
まずはパーツ構成。

部品数は少なく、何も考えなければとっつきやすそうなんですが、
特にクリア部品はヘタってる様子。。。

フロント部、ランナーとつながってたらしい部分の歪みは真上のエンブレムのせいで手直しできそうにありません。

とりあえずサフを吹いて、全体のヒケなどを確認してみます。

マフラーは糸半田にピンバイスで穴開け。質感は良さそうです。

タグ:プラモ アリイ ホンダZ

ページ移動