posted by
rerofumi
2015/12/19 土曜日 18:14:34
RaspberryPi での気象センサー計測と「なんログ」でのロギングでお部屋の中の情報が順調に記録されていく。
後はそのログを解析してなんかに利用すれば良いだけだ。
取りあえずデータが見たいということで、ログの結果をグラフ表示する WEB ページを作ることにした。


グラフの表示には Flotr2 という javascript ライブラリを使用している。
サーバー自体は部屋内に設置しているため、外部には公開していない :-)
sinatra で erb view とか使っているけれども、一般的な WEB アプリな作りになるので特に語ることも無いかも。
このへん、グラフ表示をしたい、そこを強くしたいというのであれば WEB サーバーのログ解析で使われるメトリクスツールをそのまま使うというのも手な気がしてきた。
そういう意味ではログを記録する部分も fluentd などのサーバーアプリを使えばキューイングとかストア先とかそのまま利用できるだろう。
posted by
rerofumi
17:55:42
Raspberry Pi 2 で気圧や温度が取れる様になったところで次はそれをデータとして蓄積して行きたいわけです。
単純にテキストファイルに追記していくだけでも良いのですが、ここのところ継続して計測したいという要求が多いので簡単なロガーサーバーを作ることにしました。名付けて「なんログ」です。
要求としては、
- ネットワーク上にあるサーバーに設置、幾つかの機器からのログをポストするだけで記録してくれる
- IoT的な機器から使える様にシンプルな HTTP API を備える
- どこからのログか分かるように分別タグを付けられる
- 複数機器からのアクセスでも大丈夫
- 最初は簡単にテキストファイルに記録することろから
といったあたりで。

システムとしては上図のようになる。
Read the rest of this entry »
posted by
rerofumi
17:11:03

前回 RaspberryPi2 に気圧センサーと気温/湿度センサーを付けて値を読み取れるようにした。
ぱっと見良さそうだったのだけれども、しばらくコレで計測を続けてみるとどうも湿度が正しく変動していない様に見受けられた。
たまたま使った DHT11 の個体不具合っぽい。自分の目的的に湿度はおまけみたいなものだったけれども、計測できないとなるとなんか悔しくなってきたので作り直すことにした。
その際、ワンワイヤーシリアルだった DHT11 の代わりに I2C の AM2310 に変更を行った。これで I2C に統一できる。
気圧センサは手持ち在庫の関係で LPS25H ではなく LPS331AP に、現在は LPS25H の方が在庫品になっているのでそっちで読み替えて貰うとありがたい。
Read the rest of this entry »
posted by
rerofumi
2015/12/6 日曜日 20:54:52
低気圧の到来時など気圧の変化で健康状態に影響を与えるとは良く言われる。
台風や爆弾低気圧の通過後はそうかもなー、とか思うのものの普段の生活で気圧というのは気温ほど気にしてはいなかったりする。そもそもで温度計は家電として入手しやすいものの気圧計はあまり身近では無い様に思う。
そういった体調と気圧変化を結びつけるには今現在の値が知れれば良いわけでもなく継続した変化、ロギングが重要ではないかとも思うのである。
そこで、マイコン(RaspberryPi2)で気圧や気温といった気象情報を計測し、サーバーにロギングする「デジタル百葉箱システム」を作ってみようかというのが今回のお話である。
ちなみに計測するのは自分の部屋である。
単に自分にとっての生活指針が欲しいだけなので外気の状況でなくて良い。
掲載予定としては
- センサーでの計測部分
- サーバーでのログ収集
- ログデータの表示
の 3回になる見込み。
■ センサー
部品箱をほじくり返して以前買ってあったセンサーを掘り出す。
この計測自体は昔からやりたかったので、以前からぽちぽちセンサーだけは買ってあったのである。今になってやろうと思ったのは、自宅内サーバー環境が整ってきたところで、世間で流行の IoT 的フローを構築したくなったからに他ならない。

部品箱にあったセンサーは上の2つ。
青いパッケージで包まれているのが DHT11、温度と湿度を計測するモジュール。8pin DIP 変換基板に載っているのが LPS25H、大気圧を計測するモジュール。どちらも秋月電子通商で買った物。
ちなみに LPS25H は大気圧計測に必要なので温度センサーも載っていてその値を取ることもできる。2つのモジュールのどっちが正しい温度か分からないから両方取得することにする。

RaspberryPi2で値を読み取るテスト。
LPS25H は I2C での通信なので RaspberryPi2 でやりやすいのだけれども、DHT11 はワンワイヤーシリアルである。同様の型で I2C の温度湿度センサーもあるのになんでこれを買っちゃったかな、自分。
DHT11 を Raspberry PI で読むにはと調べたら下記の良い記事がヒットした
「温湿度センサDHT11をRaspberry Piに繋いでシリアル入力を学ぶ」
ソースコードを見ると delayMicroseconds() を使っていて、あーラズパイでこれできるんだとか思いつつ、これで良いかと上記ページにあるコードをそのまま利用させてもらうことにした。
ただ利用しやすい様にコンソール出力のフォーマットだけ手直しした次第。
LPS25H の方は I2C なので WiringPI の I2C メソッドを利用してシリアル通信を行う。
今回は基本的に ruby でコードを書く予定なので、WiringPI の ruby GEM を利用。
# gem install wiringpi
でもって予め gem をインストールしておく。
I2C 経由で読み取る ruby コードは以下の通り。
require 'wiringpi'
class Lpc25h
def initialize
@io = WiringPi::I2C.new(0x5c)
end
def writeCommand(address, data)
@io.write_reg_8(address, data)
end
def readCommand(address)
@io.read_reg_8(address)
end
def init
live = readCommand(0x0f)
if (live != 0xbd) then
return false
end
writeCommand(0x20, 0x90)
sleep(1.5)
end
def pressure
a = readCommand(0x2a)
b = readCommand(0x29)
c = readCommand(0x28)
d = (a * 0x10000) + (b* 0x100) + c
d = d / 4096.0
return d
end
def temp
a = readCommand(0x2c)
b = readCommand(0x2b)
c = (a * 0x100) + b
if c > 0x7fff then
c = c - 65536
end
d = 42.5 + (c / 480.0)
return d
end
end
sense = Lpc25h.new
sense.init
press = sense.pressure
printf("%f hPa\n", press)
temp = sense.temp
printf("%f *C\n", temp)

特に書くほどの事もないけど今回の回路。

行けそうなので基板にまとめた。
これで温度、湿度、気圧のセンサーから現在の部屋の状況を読み取る事ができた。
今回 RaspberryPi2 と ruby を選択したのは、センサーを読み取りつつ、その後ネットワークでよしなにするためなのでお手軽になるのはここから先のお話である。
追記:
あーそういえば RaspberryPi2 で I2C を使うために最初なんかインストールしたり設定したりする必要があった覚えがある。
ちょい前の話であまり覚えていないので省略。
posted by
rerofumi
2015/10/25 日曜日 20:51:30
タクトスイッチとチップLEDが 4個ずつ付いたシンプルな基板です。
プロトタイピング中の簡単なインタラクト実装に役立つでしょう。
「つみょん」シリーズで初めての 2単位サイズ基板となります。

回路図

BOM
Item |
Size |
Num |
Value |
R1-4 |
R1608 |
4 |
220Ω |
CN1-2 |
CN-2×7 |
2 |
CN-2×7 |
LED1-4 |
LED1608 |
4 |
任意の色の1608LED |
SW1-4 |
タクトSW-4P |
4 |
|
基板

この 2単位サイズでサンハヤトのユニバーサル基板 “ICB-90” と同じサイズになります。
プリント基板のガーバーファイルです。
Download: tmon_swled4
基板が欲しい方はこのガーバーファイルを FusionPCB なり Elecrow なりに製造依頼することでオンデマンド製造することができます。
スイッチサイエンスPCB で製造したときに使ったガーバーデータそのものになります。
確認プログラム
「つみょん」PSoC4ボードでの動作確認コードです。
PSoC Creator 3.2 のプロジェクトファイルとなります。
Download: tmon_swled.cywrk.Archive01
ボタンを押すと LED が点滅する Lチカサンプルです。
posted by
rerofumi
20:39:25
マイコン電子工作の王道、キャラクターLCDモジュールを乗せた基板です。
各種ステータスチェックや簡易UIとしてお役に立ちます。
I2C で駆動するモジュールを CN1 側のシリアルポートを使って駆動します。
ちなみに CN2 側のシリアルポートは SWD プログラミングで使っていますので空いているのは CN1 側となります。

回路図

BOM
Item |
Size |
Num |
Value |
U1 |
LCD module |
1 |
8×2 chara |
R1-2 |
R1608 |
2 |
2.2kΩ |
C1-3 |
C1608 |
3 |
1uF |
CN3 |
3x1pin |
1 |
|
基板

プリント基板のガーバーファイルです。
Download: rmon_i2clcd_prod1.zip
基板が欲しい方はこのガーバーファイルを FusionPCB なり Elecrow なりに製造依頼することでオンデマンド製造することができます。
確認プログラム
「つみょん」PSoC4ボードでの動作確認コードです。
PSoC Creator 3.2 のプロジェクトファイルとなります。
Download: psoc4_i2c_lcd.cywrk.Archive04.zip
posted by
rerofumi
20:07:04
「つみょん」の CPU ボードで『Lチカ』をさせるための物です。
LED を光らせる事が目的ではなく、作成した CPU ボードの結線がちゃんとしているかを確認するための治具基板となります。

GPIO の電流で光らせていますので、複数点灯させるのはマイコンのドライブ電流に影響します。
あくまで GPIO 確認のため一つずつ光らせて下さい。
回路図

BOM
Item |
Size |
Num |
Value |
LED1-11 |
LED1608 |
11 |
任意の色の1608LED |
R1-11 |
R1608 |
11 |
330Ω |
基板

プリント基板のガーバーファイルです。
Download: tmon_led_jig_prod2.zip
基板が欲しい方はこのガーバーファイルを FusionPCB なり Elecrow なりに製造依頼することでオンデマンド製造することができます。
確認プログラム
「つみょん」PSoC4ボードでの動作確認コードです。
PSoC Creator 3.2 のプロジェクトファイルとなります。
Download: led_gpio_check.cywrk.Archive01.zip
動作させると CN1 側の GPIO が一つずつ ON になっていき LED が点灯して流れていきます。
このテストコードを動作中に LED ボードを反転させ CN1 と CN2 を逆に繋ぐことで CN2 側の GPIO を確認することができます。CN1 側と同じように LED の点灯が流れて結線を確認できますが、LED1-3 はプログラムポートとして使われているため確認の対象外となります。
posted by
rerofumi
19:48:15
SSOP28 形状の PSoC4 を乗せたマイコンボード。
以前は 5V オンリーでしたが、レギュレータを載せてマイコン&ポート駆動電圧を 5/3.3V から選べるようになりました。
USB mini-B 型のコネクタが付いていますが、これは単なる電源コネクタとして使用しています。
PSoC3/5 の時には USB B+/B- を結線したいなー、という将来の希望的なものも含みつつ設置してます。

回路図

BOM
Item |
Size |
Num |
Value |
C1 |
C2012 |
1 |
10uF |
C2, C5 |
C1608 |
1 |
0.1uF |
C3-4, C6 |
C1608 |
2 |
1uF |
CN1-2 |
CN-2×7 |
2 |
CN-2×7 |
CN3 |
USB mini-B MUSB-5B-NE-S175 |
1 |
|
U1 |
SoC4 SSOP28 |
1 |
CY8C4245PVI |
U2 |
TAR5S33 |
1 |
3.3Vレギュレータ |
※ U2 の TAR5S33 に類似の TAR5SB33 がありますが、ピン互換が無いので使えません。
基板

プリント基板のガーバーファイルです。
Download: tmon_psoc4_prod2.zip
基板が欲しい方はこのガーバーファイルを FusionPCB なり Elecrow なりに製造依頼することでオンデマンド製造することができます。
FusionPCB で製造したときに使ったガーバーデータそのものになります。
posted by
rerofumi
2015/3/24 火曜日 22:21:10

つみょん基板を積み重ねて行く際に安定させることができるような台です。
基板を乗せても付きだしたピンが接地しないように浮かせる役目と、積み重ねて入ったときに傾いたりしないようにする役目があります。

このバンパー自体はお近くにある手頃な 3Dプリンターで出力してお使いください。
家庭用のにゅるにゅる式 3Dプリンターで出力しても使える様にクリアランス多めに取ってあります。
Download: holder_03.zip (STL形式モデルファイル)

posted by
rerofumi
2015/3/23 月曜日 2:24:17
「つみょん」マイコンボードで PSoC 系の奴にプログラミングする際に使うボードです。
書き込み後は取り外すことで動作時はプログラミングコネクタをなくす事ができる、ということを目指して1枚の基板に分離しています。
コネクタに 5V を入れると、ボード上のレギュレータで 3.3V も生成し電源供給します。このボードを使って 5V と 3.3V の両方を供給する電源ボードとしても機能します。3.3V電源はあくまでおまけ機能ですね。
3.3V が不要な場合コネクタだけ接続すればプログラミングオンリーのボードとして機能します。

MiniPROG3 を接続してプログラミングしますので、MiniPROG3 が別途必要です。


回路図

BOM
Item |
Size |
Num |
Value |
C1-2 |
C1608 |
2 |
1uF |
C3 |
C1608 |
1 |
0.1uF |
CN1-2 |
CN-2×7 |
2 |
CN-2×7 |
CN3 |
CN-1×5 |
1 |
L字型 |
U1 |
TAR5S33 |
1 |
3.3V |
基板

プリント基板のガーバーファイルです。
Download: psoc-prog_prod1.zip
基板が欲しい方はこのガーバーファイルを FusionPCB なり Elecrow なりに製造依頼することでオンデマンド製造することができます。
FusionPCB で製造したときに使ったガーバーデータそのものになります。