恒例のツレの正月のお花です。
それでは、帰省します。
水槽の水温計(GEXのチャームで安売りしてた奴)はつけてるけど、時系列のデータが取れるものでは無いので別途センサーを設置することにした。
LM61での温度測定のテスト
先週、事前に上記画像の様に実験して、XBeeのADCで行ける事は確認しておいた「LM61温度センサーによる水槽の水温測定」。LM61を選んだのは、LM35は電源に4V以上必要なので却下(XBeeは3.3Vなのです)。出力信号がLM60は6.25mV/℃でLM61は10mv/℃。ADCにかけるから1℃あたりの電圧幅がデカイ方が細かい温度が測定できるのでLM61を選択って事です。XBeeシリーズ2のADCは1.2V MAXの10ビット(vrefが効くかと思ったけど3.3Vで試して効かなかったし。どうもシリーズ2で使われてるマイコンの仕様らしい。)なので1ビットあたり0.001171875V(=1.171875mV)の分解能。つまり温度を0.1171875℃単位で測れると。実際はLM61のセンサーのリニアリティとか誤差とかありますけどね。LM61にはVCCとGND間に0.1μFのパスコンを設置。シグナルとGND間は処置せず放置した。
んで、本日、水槽に付けるための防水用にシリコンシーラントを買い出して来た。コニシの「バスボンドQ」とセメダインの「バスコークNクリア 水槽鏡まわり」とあったけど、後者を購入してきた。で、半分に割った太めのストローをガイドに以下のように包埋。
固まるまで時間がかかるので放置しつつ、mbedのプログラムを修正。pachubeのID 4に入れ込み。今までID 4を使っていたmbed付近のI2C温度センサーはID 9へ移動。このmbedの☆ボードオレンジにつけてるI2C温度計。場所が悪くてPCやLCDモニターの排熱の上昇気流をあびて高めの温度となってる。ま、さておき、今回作成したLM61のセンサーはかわききるまでは室温センサーとなってます(苦笑)。
寒いのと昨日マンションの最上階で観たから遠慮したかった、昭和記念公園の冬の花火。ツレが行く気満々なので行って来ました。23日と比較すれば風も無くその点では助かったものの1時間ほどいたら底冷えで脚がダルダルに。
帰宅後、お待ちかね七面鳥ではなく豚のアバラ焼き。
そしてケーキ。
以上2011年のクリスマスイブでした。
「なんでも作っちゃう、かも。」さんとこのdotsduinoキットを販売委託先のスイッチサイエンスさんでお買い上げ。基板のバージョンは1.2dでした。
昨日届いていたのだけど、本日会社から帰宅後にはんだづけして組み上げ。ArduinoIDEでのboardは「Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328」でOKでした。ってかそれ以外にしてたら妙なエラーが出て困ったズラ。
やっぱ専用?に作られた基板は綺麗だし、ぴったりと8×8ドットLEDの裏にハマるし。シリアル接続用の6ピンヘッダは80度くらい曲げてみました。1個問題点があって、付属の単4アルカリ電池3本のボックスの終端についてる端子。そのままではグランドとVCCに刺さらんのだな。3端子の両端だったら良かったのに。こういう圧着?端子はどこで買うのが良いだろうか?
ツレの要望があったので、赤色LEDを2つ追加してみた。午前中にLED工作をして、リースに配線。動作確認はしなかったのだが・・・。
夕方点灯したのをみてみたら、赤が点くと青が点かない。楽して既存の青色LEDと並列に赤色を入れたのだが・・・。赤は低ボルトで光る為、それに引っ張られて並列につながってる青が点かなくなってしまった。手抜きをして、ちゃんとアノード側にそれぞれ抵抗を入れてる訳では無く、まとめて1個の抵抗(1KΩ)をカソード側に入れてたりするので(苦笑)。
手っ取り早く全てのLEDを光らせるには・・・。プログラムを書き換えました。ATmega168Pのpwmポートは6つあって、今のところ4つ使っているのでフル使用に変更。プログラムは汎用化(?)してあったので、追加の2ポートのpin番号の指定と、総LED数の指定でOK。
ってか、総LED数の指定なんかしたくないのだが、ArduinoのC環境にfor each無いし、uboundみたいな書き方がわからんかったので。sizeof(配列)/sizeof(配列の規定変数タイプ) ex(sizeof(array)/sizeof(int))で取れそうな気はしているが試してない。
後記。sizeof(array) / sizeof(array[0])で行けるみたいですね。
ついでなので、CDSの観測待ち時間をちょっと多めに変更して。更に、起動時に全てのLEDを1500ミリ秒置きに順に点けていって最後に全部消す処理を追加。まぁ、こんな感じで大丈夫でしょう。PWM使っているとはいえLED1個20mAとすると6個で120mAだもんなぁ。これもあってデジタルマルチメータを今夜発注しました。サンワは高かったのでマザーツールの奴。
ATmega168P x 1 (200円)
CDS x 1 (25円)
LED x 4 (40円)
セラコン x 4 (40円)
電解コン x 1 (10円)
抵抗 x 3 (3円)
ブレッドボード x 1 (150円)
電源レギュレータ x 1 (50円)
電池ボックス x 1 (50円)
電池スナップ x 1 (20円)
計 588円
あと、電線とピンヘッダくらい。
ブレッドボードを使わずに生基板や空中配線にしたり、レギュレータ使わずに電池直結にすればもちっとお安くなります。
ソフト的には完成したLEDチカチカを玄関扉のリースに仕込みました。ハード的には、電池が見えてるとツレからクレームが出た点と、LEDの別色の追加を考え中。
ソフトの仕様は、CDSで明るさを定期観測して、3回以上連続した観測で暗かった場合はLEDを点灯するモードに入る。点灯モードに入ってから300分たったら消灯。また、5回以上連続して明るかったらLEDを消灯し、CDSでの明るさ観測をロングスパンに変更して電池節約。ってな感じのソフトです。 明るいの連続5回を経過しないと「300分たったら消える」はリセットされない仕組み。夜に門灯をつけると一旦消えるものの、300分の時間内ならまた点灯を開始します。
昨日作ったLEDチカチカ。朝起きてみたら消えていた。新しい電池をつないだら動いたのでレギュレータ等が焼けたわけではなかった。
まぁ、消費電力から想定するとこうなることはわかっていたのである。
今夜はLEDが消えている時間をやや長くしてみた。またLED点灯もdigitalWriteではなくPWMのanalogWriteでデューティー比0.5くらいにしてみた。さてどうなるか? って秋月に電池ボックスを発注してあるからもう006Pでの運用はしませんが。エネループ4本か単三アルカリ3本を三端子レギュレータを通して3.3Vで使うかと。とは、うまい具合にAVRのパワーセーブのモードを調整するか。でも電気食ってるのはLEDだしなぁ。
delayじゃなくてmillis()との比較で点灯切替にした。4系統。0.5sec点灯で消灯時間は0.5sec~1.5secで0.2sec置きのランダム値。PWMは使わずにdigitalWrite。
これから実用に向けて、ちっちゃいブレッドボードに移します。電源はとりあえず006Pを三端子レギュレータで3.3Vに。あと、照度センサーつけて暗くなったら光るようにするかと。暗くなってから5時間くらい?で終了の機能も入れるかも。
そして三端子レギュレータが激しく熱い。006Pが厳しいのか?テスターで測ると65mA位流れていた。レギュレータは放熱板とかない普通のトランジスタサイズのXC6202P332TBなのだが。焼けても良いようにブリキ缶の中で耐久テストしてる。
2時間たったけど大丈夫そうかな。出力側は25mA程度。念のため秋月で、もう少し大きめのレギュレータを発注した。
電飾用にAVRマイコンで仕掛け作り。秋月Arduinoキットに標準でついてくるATmega168P。メモリ倍で50円お高い328と入れ替えちゃってるので2つほど余っている。こいつを最小限の回路と内蔵クロック8MHzで動かすべく探っていたら、「武蔵野電波のプロトタイパーズ」の記事で発見。これで行くことに。
まずはATmega168Pを8MHzで動かすべく、ATmegaBOOT_168_pro_8MHz.hexのブートローダをBitBangで焼きこみ。fuseビットはLo E2,Hi DF,Ex 00 Lockbit 0Fで。で、LED Blinkをアップしてみたがエラー。いろいろ試行錯誤しつつ最終的にはboard.txtのシリアル速度を19200bpsに落としたら上手く行った。と、ここまでは昨晩ってか深夜3:00くらい。
本日はこれから、LEDを接続方法を考えてPWMでぽわんぽわん光るようプログラムを作成。上手く行ったらソフト書き込み部は要らないので、写真右の小さいブレッドボードか別の蛇の目基板に載せ替える作業をします。
LEDドライバICとか手元に無いのでたくさん光らすのは難しい。電源的にも。電圧は3Vでも5Vでも良いんだが・・・。
ちょっと前、ツレがクリスマスツリーを買うと言っていたのだが。
150cmと180cmで悩んでいたようだが、どうやら180cmで発注したようで・・・。
たくさん飾り付けできるぜ!ってかもっと早めに言っておいてくれればマイコンとLEDでいろいろ仕掛けを作ったのに。
日曜午後から火曜夕方までツレからもらった風邪で泥のように寝ていた。ので、放ったらかしにしてあった「ゆっくりLSI」。軽くArduino UNOでテストして動作確認して、本日ブレッドボード上に単体で組み上げてみた。ブレッドボードの左のほうは2SC1815の簡易スピーカーアンプ、右のほうはシリアル-USB変換基板なので、本当に少ない部品で出来てます。
さてコレをどうするか。ボタンを押すと、最新のニュースやらツイートでも読んでくれば良いですが、漢字混じり文をアクセント付きローマ字に変換する機能はないのでねぇ。mbedとつないでWebAPIから拾った天気予報を読ませるくらいなら行けるかな。
電気的DIY的な祭典らしいMake: Tokyo Meeting 07に行って来ました。
場所は東工大の大岡山キャンパス。
雨の中を出かけましたが、現地についた12:00ごろはもう止みかけな感じ、帰りは日がさしてました。
事前に出展リストのPDFをチェックして、印刷してた会場マップにマーキングしておいたのを持っていたので楽でした。
今回は体育館のピンポイントで。他の場所のは観てないです。
戦利品は以下とあとその下の発売前のオライリーのXBee本(定価より500円くらい安かった)です。
なぜ買い物に走っているかというと、目新しい技術があまりなかったので・・・・。
日本の理工系、昔みたいにもっと人気が出て欲しい。一人じゃ何も出来ない◯◯系ばかり目指すんでなくて。
今週末のMake:Tokyo Meeting 07。土曜日に行く予定だけど、どこを回るかを検討中。場合によっては秋葉経由で部品買って帰る事になるしなぁ。電子工作系の「お台場まんがまつり」(=コミケ)みたいなものかね。
そして、帰省の切符も手配しないと。ツレはEX-ICが無いので、ふたりまとめてe特急券。これは単にJR東海のサイトで予約するだけですけどね。宿は昨晩ツレが抑えてたのでOK。
→ 往路の12/31も復路の1/1もN700を予約しました。3日前まで変更可能でお安いタイプと乗車時間まで変更可能で自由席と同価格程度の値引きのタイプが選択できますが、急な変更を考えて後者です。よしよし。
食料が実家から届きました。米、柿、りんご、みかん、そしてコンニャク。米は叔父のたんぼの奴。今秋すでに1回送ってもらってましたが、また送って下さいました。何故コンニャク?と思いつつ実家に電話して聞いてみたら、なんかおいしいと有名なところだそうです。岐阜県の土岐の柿野温泉あたり産らしい。東海環状自動車道が出来てから実家から土岐も近いからなぁ。実家から信号3つでインターに入れる。ともあれありがとうございます>実家方面。
ちとプログラムをいじってLCDにpachube等のデータ更新時刻を表示させてみた。
基本的にこのXBeeコーディネータがつながってるmbedマイコンはこのまま。
表示部を「松本メーター」にするのは別のXbeeクライアント機なので。
XBeeのワイヤアンテナの向きが気になるので基板への配置関連は変えることはあるかな。
ちなみにLCDの表示はV:ベランダ気象台、T:Tweet、W:家庭内電力消費、G:ガイガーカウンタです。
Vは240秒、Gは120秒、Tは毎1時間、Wは毎10分。それぞれ厳密にやって無くて、前回の時間からそんだけ以上間があったら動くって感じのループです。それくらいゆるい感じがOK。タイマー割り込みでぴったり毎正時とかやりませんて。
あらこんなところにmbedが。
次の獲物のメイン素材は↓。
現在自宅のセンサーネットワークはこんな形になってます。
インターネット(pachubeなど)への送信はubuntu機でやっていたのをarm3マイコンのmbedに入れ替えました。
ubuntuでの難点はセキュリティアップデート対応と、OS自体のアップデート。そしてこんなマイコンユーザの事は考えていないので使いにくくなるばかり。
で、今回マイコンにしたので、セキュリティ的に危ないものが入ることのできる隙間がないし(受け取るインターフェイスがないから無理)、隙間から入れられる(入れられる方法が無いのだがw)プログラムが実行されないのと、そもそもOSが無いのでアップデートは自分のプログラム改修次第。ってところですか。
とりあえず以下の形に拡張予定です。
昨日まで↑だったのを↓に変更しました。
外のセンサーをXBee経由に変更。AVRのソフト変更と、XBeeの載るBeesSheild基板上に、センサーが載っかるソケットを設置&ケーブリング半田付け。あとAVRはatmega128だったのでatmega328に載せかえた。違いは前者はフラッシュ16KB、RAM 1KB。後者は2倍のFLASH 32KB、 RAM 2KB。今時の携帯電話よりはるかに少ないですw。単位MBじゃないですからね。
そして、次は↓の様に、「11.10で使いにくくなってしまったubuntu」のmini9を排除すべくXBeeコーディネータをmbedに集約しようとしてます。mini9自体は別のLinuxディストリビューションを入れようかと。
本日木曜日につき、当選メールきてました。
サッポロ「札幌開拓使麦酒500ml無料引換券」プレゼントキャンペーンに当選されました!
との事で、引き換えてきました。
先週はワインだったし、結構当たります。まぁ、コンビニなのでもともとの売値が高いので、差分還元ってところでしょうか?
現状こんな感じになってます。次に手を入れるのは、左上のオレンジのライン。USBのシリアルでの接続に成っているベランダ気象センサーとDELL mini9間をXBeeのAPIモード無線接続に変更します。これが出来るとmini9を和室においておく必要もなくなります。
で、今夜は事前調査をしてみた。Arduino UNOとXBeeでリクエストをもらったらmillisを返す様なプログラムを作って、エネループをつなげてベランダに置いてみた。で、網戸も窓もカーテンも閉めた状態で、部屋の中からリクエストを送信。1回目は届かなかったりするみたいだけども、2回目以後は安定してレスポンスが帰ってきてた。まぁ電波に関しては大丈夫そうなので安心した。
mbedの開発環境です。クラウドですよクラウドw。PCにインストールするのはデバッグ用のUSB-シリアルのドライバくらい(無くてもOK)。楽チンです。ただ、ネットの無いローカルでの開発はできませんし、5年後10年後に使えるかもわかりません。あと、エディタは日本語は入らないみたい。コードを公開してみんなで使えるよう出来るからかな。
いちおうローカルのEclipseでも環境を作れば開発は出来るっぽいですが、クラウドのほうが便利なのであえてやったりしません。
いまubuntuの乗っているDELL mini9にやらせている事をARMマイコンにやらせるべく計画。
こんなもんでしょうか。mbedはLANの機能があるんですが、残念ながら有線LANです。設置場所にはHUB無いですから。無線LANコンバータを介してつなぎますかね。ベランダ百葉箱をXBee化しちまえば設置場所をHUBの近くにできるんですけども。いっそ、WWANモジュールとかあれば楽なんですけど(パケット代が大変か)。USBタイプの端末ならインタフェイスがわかればなんとかなるのかも?
本日ubuntuのアップグレードをしてみたわけですが・・・。
前の設定は無視するは、GUIは春バージョンの時に悪評の高い奴しか選べないしでメリットが無い。
代替を探すとしてもCentoOSは今回いろいろあったし。今までで使ってたぶんで良かったのはFedraかなぁ。
安定系としてmac miniも考えてみたのですが、市場ではスペックから考えたら高すぎの相場。ジョブズの呪いは顕在だ。Apple製品は性能以前の感情論になるので非常に買いにくい。
んでもって、そもそもLinuxやらOSでするような仕事をさせているわけではないので、OSレスのマイコンでやってみようかなと思ってます。AVRのArduinoには荷が重いのでARM系で。
香港のフィジカルコンピューティング系ショップSeeed Studioから購入した物が届きました。今回の目玉は「Wireless Sensor Node – Solar Kit」。
相変わらずXbeeと戯れていますが・・・。帰宅後、こないだとは逆のEndDeviceのArduinoからCordinatorのProcessingへの通信をテスト。Cordinator側へデータは届くのだけど、SUCCESSの戻りがArduinoへ行かない。届くデータも3回送って1回程度。ふと思い立ってArduino側のXbeeをEndDeviceではなくRouterに焼き直して再テスト。百発百中でデータも届くし、SUCCESSもArduinoへ帰る。どうも上手くいった時はRSSIのランプがバリバリ光ってるところを見るとEndDeviceのSleep関連か?RouterとCordinatorはSleepしないし。今のところACアダプタ駆動のデバイスにくっつける予定なので、Routerファームでいいや。ただ将来的に太陽電池&バッテリー駆動をベランダでやるので、そん時Sleepの事は考えようw。
次は、Cordinatorからデータくれコマンドを送って、Arduinoからデータを返してもらう実験だ。
今日午後からずーっと試行錯誤をしていたのだが、通信受け側のArduinoのコードは要約すればこんな感じでOKになりました。xbee-arduinoやXBee APIのサイトは2011/10となってはちと古いサンプルが載ってるので要注意なのでした。やはり詰まったらちゃんと仕様書を読もうw。
[java]
#include <XBee.h>
XBee xbee = XBee();
XBeeResponse response = XBeeResponse();
ZBRxResponse ZBrx = ZBRxResponse();
uint8_t data0;
uint8_t data1;
void setup() {
xbee.begin(9600);
}
void loop() {
xbee.readPacket();
if (xbee.getResponse().isAvailable()) {
if (xbee.getResponse().getApiId() == ZB_RX_RESPONSE) {
xbee.getResponse().getZBRxResponse(ZBrx);
data0 = ZBrx.getData(0);
data1 = ZBrx.getData(1);
}
}
}
[/java]
(Arduinoのコードなので SyntaxHighlighter Evolved入れて、C++モードで表示させてみたらvoidしか反応しないので javaモードで表示したがあんま変わらんw)
Processing側は要約すると以下の感じで。log4jの外し方がまだわかってないのでつけたまま。
[java]
import processing.serial.*;
import java.util.concurrent.*;
XBee xbee;
void setup()
{
size(100,100);
try {
PropertyConfigurator.configure(dataPath("")+"log4j.properties");
xbee = new XBee();
xbee.open("COM21", 9600); // ポートはご自分の環境に合わせて変えてください
int[] payload = new int[] { ‘H’, ‘i’ };
XBeeAddress64 destination = new XBeeAddress64(0, 0x13, 0xa2, 0, 0xXX, 0xXX, 0xXX, 0xXX); // 通信相手のアドレスは適宜自分の環境にあわせて
ZNetTxRequest tx = new ZNetTxRequest(destination, payload);
ZNetTxStatusResponse status = (ZNetTxStatusResponse) xbee.sendSynchronous(tx);
if (status.isSuccess()) {
// the Arduino XBee received our packet
}
}
catch (Exception e) {
System.out.println("XBee failed to initialize");
e.printStackTrace();
System.exit(1);
}
}
void draw(){
}
[/java]
本日午前中、ビックカメラ→ダイソー→オリオン書房ノルテ店→Right-on→UNIQLOという経路で買い物をしたんですが、最大の目的のこのケーブル掛けを作ること。ダイソーにいったらこの網は見つかったのですけども、吊るすチェーンが見当たらず・・・。ぐるぐる、ぐるぐる、ぐるぐる探して、園芸コーナーの植木鉢吊りのチェーンを購入。ちと長かったがうまい具合にできました。
網(ワイヤーネット 62x33cm) 105円
つりチェーン 105円
Sカン 105円
吊るす金具として
フック6個入り 105円
平型フックショート 105円
あとSカンが2つくらい。
まぁ、トータル1,000円行きませんです。満足。
もう、本格的に秋なので切り替えました。メインPCはAcerの省電力ネットトップからHPのデスクトップに。そのHPのPCのモニターは1920×1200のに。そして、Acerのネットトップはモニターを1600×1200の方につなぎ替え。iOS機とバインドされているiTunesはAcer機の方に入っているのです。PCに縛られるとはめんどくさい仕様だな>iTunes。海外は縛られ無くなってるようですけど。日本はまだまだミュージシャン以外のプロ権利者との長い戦いだろう。
という訳で、秋冬も1PCで2モニターな快適な環境にはせずにやや節電なのでした。電子工作するときの回路図確認なんかはiPadでPDF保管して使うのもいいけど。もちっと軽くて薄くてFlashの使える奴も欲しい所。
・XBee関連。ATモデムモードからAPIモードへの変更。Arduino,Processingアプリ修正。
・水槽センサー作成。温度、電気伝導度。
・Seeeduino Stalker ソーラーバッテリー運用テスト。バッテリー容量などをAPIモードXBeeで取れるように。
・電力センサーBeeShield 1スタックに組み変え。
・Android MBW-150連携アプリ作成
・GoogleIOIO いじり。
ガジェット関連で優先度高いのはこんな所かな。水やり器は来年回しで、下準備だけしておこう。
平兵衛まつりに行きました。2年ぶりに2回目です。昨年は雨だったので行かなかったのです。あ、平兵衛まつりというのは国立駅北口の国分寺市光町にある「鉄道総合技術研究所」の一般公開日の事です。
体験した催しは
1.ハイトラム試乗。
2.車内快適性シミュレータ試乗
3.レールのテルミット溶接(酸化鉄とアルミで高温を出し、溶けた鉄で隙間を溶接する技術。)
まぁ、↓と同じです。
の三本です。あとはお昼ごはんを模擬店で。基本的に毎年同じ催しみたいですけど、タイムチャートの重なり具合で全部は見られません。また、来年も来よう。