スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。

ブログ終了のお知らせ

無事にロボ研を4年間続けることが出来ました。

いろいろありましたが、関係者の皆さんありがとうございました。

会長である私の能力不足のせいで、

いわゆる社内ニートが発生してしまったような気がしてなりません。

知能ロボコンではあまり進歩がなかったのも心残りです。

次の世代に頑張ってもらいたいと思います。

これからはOBとして顔を見せるかもしれません。


さて、学生生活を終了すると共に、このブログも終わりにしようと思います。

文章能力の無さが露見してしまうブログでしたが、ブログ更新は思いの外楽しかったです。

最初はロボ研の活動紹介のためにブログを始めましたが、

最後には完全に私事ばっかり書いてしまいました。


「マイコンがある日々」は今日で終了しようと思います。

いままでありがとうございました。

また機会があったらどこかで会いましょう。

2012年 ロボ研会長 kydrill

DHT-22と気象観測装置の測定値の差をグラフ化

  • 2012.02.07 22:42
  • Cat:XBee
XBeeで測定した値と気象観測装置の値を比較してみました。

比較した装置
・XBee(ATmega328 + DHT-22)
・気象観測装置(詳細不明)

比較したデータ
12月1日から31日のデータ
XBeeは2秒ごとの受信データを10分間ごとに平均化

データ処理
すべてprocessingで行った。
グラフ表示にはJFreeChartを使用

グラフの特徴
グラフは
DHT-22 - 気象観測装置
の温度を示している。
昼間の温度差が大きく、
すべての時間で温度が上方向に偏りがある。

deference201112.png

temparature201112.png

E-PL1sで星の撮影

久しぶりに夜晴れていたので星の撮影をしてみました。

すべてマニュアルにして適当にあわせて撮影しました。
P1310220.jpg
RAW現像したものを解像度そのままで500kBまで圧縮しています。

ファインダーが無いと星の撮影はほぼ無理ですね。
マニュアルフォーカスにして、
フォーカスをあわせるときにライブビューを7倍で見て、
頑張って星を見つけるという作業が必要でした。
ライブビューの倍率なしじゃ液晶は真っ黒のままでした。
三脚の剛性がなく、ぶれてしまいました。
それともっとまともな三脚が必要ですね。
それ以前にレンズが標準じゃどうしようもないんですがね。。。

まぁ初めての一眼でいろいろ遊べて面白いです。

pythonでxbeeの受信パケット保存のプログラム

PythonでXBeeから受信したデータを保存するプログラムを作成しました。
わからなかったところはパケットデータの扱いで、
パケットの辞書型をどう扱うかわかりませんでした。

辞書型というとハッシュと同じで配列のインデックスに文字列を指定できるんですね。
IDLの構造体みたいだと思いました。

xbeeの受信パケットからリモート側アドレスを16進の文字列に変換するには
print ':'.join(['%02x' % ord(s) for s in packet['source_addr_long']])

xbeeの受信パケットからadcのデータを抜き出す場合は
for k, v in packet['samples'][0].items():
    print "%4d " % v
これでad0〜ad3までをプリントできました。

保存形式はテキストで中身は以下のとおりです。
address data date time ad0 ad1 ad2 ad3 T V

コマンドプロンプトで実行させた様子
vh8w4hsvgwqyeggfgyvg.jpg

テキストの内容
vqwer78y4yvwh347vgwerg.jpg

プログラムは続きを読むに掲載


Read more...

PythonでXBeeのiosampleの受信

PythonのXBeeモジュールを使ってIOsampleの表示をしました。
使用したXBeeはシリーズ1でDigiMeshのファームウェアを書きこんであるものです。

P1270180.jpg

XBeeのRouterのAD0とAD1を有効にして、
AD0に温度センサのLM61を接続し、
AD1に太陽光パネルを接続しました。
太陽光パネルに100Ωを接続し、100Ωの電圧を計測してます。

P1270183.jpg

PC側のXBeeは、USBシリアル変換を介してPCと接続しています。
PythonのXBeeモジュールを使うため、AP=1としています。
AP=2では動作しませんでした。

WS000024.jpg

Pythonのプログラムを動作させている様子です。
while True:で無限ループしていますが、except KeyboardInterrupt:を記述しているので、
Ctrl+Cを入力すると動作を停止できます。
雪が降っているときに外においたら3.3V超えてしまいました。
1Wの太陽光パネルを使用しているので、
負荷を10Ωに変えると1Wの時に3.3Vになりますね。
1日外に設置して発電量のグラフを作成しようと思います。

プログラムは続きを読むから。

Read more...

E-PL1sで初めてのRAW現像とジオラマ撮影

ジオラマ撮影
P1250090.jpg
結構作り物の雰囲気が出ていて面白い。

RAW現像
P1250106.jpg
夜の公園で撮影したRAW画像を現像して見ました。
撮影はすべてオートにしていたので色合いが変な感じになってしまいました。
それとかなりのノイズが出てきてますね。
夜の撮影は結構厳しいかなぁ。
ちなみに撮影時の気温は-5℃でした。
温度と雪を気にして、カメラとレンズにスポーツタオルをまいたまま撮影しました。

それでも以前使っていたカメラはケータイですので、
かなりの差を感じていますね。
とくにフォーカスを合わせる場所を決められるのが便利すぎる。

コンデジでも当たり前ですかね;;

OLYMPUS PEN Lite E-PL1s購入

カメラが欲しくてそのへんをさまよってました。

最初マイクロ一眼が欲しくて店を回っていたのですが、
なかなかいい値段のが見つからず、
ニコン COOLPIX S8200でいいかなと思っていました。

しかしE-PL1sが26000円だったのでこれに決定しました。

人生で初めて買ったカメラは
OLYMPUS PEN Lite E-PL1s
になりました。

今まではケータイ、Mobile Hi-VisionCAM Wooo(HIY01)で撮影していました。
P1240001.jpg
上の写真はE-PL1sで撮影したものを500KBまで圧縮しています。

今回買ったカメラはこちら。
grqwe651bv561db6.jpg
上の写真はHIY01で撮影しました。

試しどりを何枚か。
P1240011.jpg

P1240006.jpg

P1240026.jpg

P1240039.jpg
さすがに夜だとノイズが出ていますが、
今までがケータイだったので雲泥の差で感動しています。

これからは写真撮影が捗りますね。

JFreeChartで棒グラフ+折れ線グラフ

  • 2012.01.22 02:31
  • Cat:XBee
受信データ数の棒グラフに温度、湿度の折れ線グラフを重ねるために、
JFreeChartで棒グラフ+折れ線グラフのプログラムを書いて見ました。

棒グラフ
  TimeSeries series1 = new TimeSeries("Rx Number", Day.class);
  TimeSeriesCollection dataset1 = new TimeSeriesCollection();
  series1.add(new Day(1, 11, 2011), 5);//任意の数を追加
  dataset1.addSeries(series1);
  JFreeChart chart = ChartFactory.createXYBarChart("Title","Time",
   true, "Num", dataset1, PlotOrientation.VERTICAL, true, false, false);
  これで棒グラフのデータの用意とグラフ作成

折れ線グラフ
  TimeSeries series2 = new TimeSeries("RH", Day.class);
  TimeSeriesCollection dataset2 = new TimeSeriesCollection();
  series2.add(new Day(1, 11, 2011), 0.0);//任意の数を追加
  dataset2.addSeries(series2);
  次にこれで折れ線グラフのデータを用意

プロットの設定
  XYPlot plot = chart.getXYPlot();
  plot.setDataset(1, dataset2);
  plot.mapDatasetToRangeAxis(1, 1);

軸設定
  NumberAxis axis = new NumberAxis();
  axis.setNumberFormatOverride(NumberFormat.getPercentInstance());
  plot.setRangeAxis(1, axis);

レンダラ設定
  XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
  plot.setRenderer(1, renderer);
  plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);

表示の結果
gvbaewr8rtw4u89ghae98hwr8ehg.jpg

続きを読むにprocessingで動作させたプログラムを載せます。
processingで動作させるためにはスケッチを保存してあるフォルダに、
codeというフォルダを用意して、その中に、
  gnujaxp.jar
  iText-2.1.5.jar
  jcommon-1.0.17.jar
  jfreechart-1.0.14.jar
  jfreechart-1.0.14-experimental.jar
  jfreechart-1.0.14-swt.jar
  junit.jar
  servlet.jar
  swtgraphics2d.jar
を入れておきます。

これで目的のグラフを作れました。

次はXBeeのプログラムに組み込もうかな。。。

Read more...

受信データのグラフ作成

  • 2012.01.21 01:00
  • Cat:XBee
今まで受信したデータを解析するためのプログラムを作りました。

グラフ化の部分はJFreeChartを使ってます。

データセット用意
TimeSeries sheet = new TimeSeries("Rx Number", Second.class);
TimeSeriesCollection dataset = new TimeSeriesCollection();
sheet.add(new Second(date[5], date[4], date[3], date[2], date[1], date[0]), x);
dataset.addSeries(sheet);

横軸の表示
11月1日のデータをプロットすると1-11となってしまうので、11/01と表示する。
XYPlot xyPlot = chart.getXYPlot();
DateAxis xAxis = (DateAxis) xyPlot.getDomainAxis();
xAxis.setDateFormatOverride( new java.text.SimpleDateFormat("MM/dd"));

グラフ作成
JFreeChart chart = ChartFactory.createXYBarChart("Number of Rx", "Date", true,
"num", dataset, PlotOrientation.VERTICAL, true, false, false);
PImage temp = new PImage(chart.createBufferedImage(w,h));

こんな感じでグラフ作成しました。
ちなみにcontrolP5を使ってグラフ用のウィンドウを作成しました。
それとボタンなんかもつけています。
できたグラフはこちら。
gqw3righehvbuheabguh.jpg
縦軸は受信データの個数、横軸は時間です。
XBeeの設定はスリープ10分、ウェイク20秒。
1秒ごとにデータを送信で、1回のウェイクで20個送信します。

なんか28日から29日のデータが有りませんね。
というか全体的に結構抜け落ちがある。。。
それに1回のウェイクで50個ものデータを受信している所がある。
XBeeのProとはいえ森の中に設置したんじゃ安定性に問題があるんですかね。

今回作ったグラフに温度、湿度、雨量、積雪といったデータを加えて、
何らかの関連性を調べていこうと思います。