コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

前記事「ノイズがほしい」からの乱数発生器作成の続き。
前記事で作ったノイズっぽい信号をマイコンに取り込もうというお話。

dsc_0088
PSoC4 の ADC で信号を読んでその値を UART に出力するプロトコードを作成。

2016-11-06_030054
PC側は TeraTerm で UART を受信、そのログを Excel で眺めていく。
Read the rest of this entry »


hatena bookmark

乱数発生器を自分で作ってみたくなった。
Raspberry Pi にはハードウェア乱数発生器が乗っているらしいけれども、そういうのを自分で作るとしたらどういうふうになるのだろうと言う感じ。

検索したところ「GR-KURUMIを用いて物理現象に基づくお手軽乱数発生器をつくってみた」という記事が見つかった。
まさにこれがそのものなのだけれども、理論は分かるものの自分の手で試してみたいというのが今回の趣旨なのでトレスでもいいから試してみる事にした。

■ 電子雪崩現象によるノイズ

ダイオードやトランジスタといった半導体は基本的に一方向にしか電流を通さないという性質を持っている。
逆方向には電流を通さないのだけれども、その通さない状態でも電圧が高いと限界を突破して流れてしまう。これが電子雪崩現象。
この時の電子が通ったり通らなかったりの加減でノイズが発生するらしい。

さっそくトランジスタやツェナーダイオードを用意して色々試してみる。
んが、ちっともノイズっぽいのが出てこない。
dsc_0086
Read the rest of this entry »


hatena bookmark

DSC_0024

つみょんの2倍幅基板用バンパーです。

tmon_frame04

形状の STL ファイルです、お手近な 3Dプリンターで出力してお使いください。
holder_w01.zip

通常バンパーの改良版です。
ねじ穴に通すピンがすぐ折れるので短めにしました。

tmon_frame05

形状の STL ファイルです、お手近な 3Dプリンターで出力してお使いください。
holder_04.zip


hatena bookmark

ヒューマンデータが販売している PLCC68 ソケットサイズの PLD シリーズに JTAG コネクタとつみょん形状のソケットを追加するプロトタイピング基板です。
つみょん基板として FPGA や CPLD の実験ができるようになります。

ただ、つみょんソケット規格としては I/Opin が 21本程度しか出せませんので半分以上の I/O は NC でいささか勿体ない作りとなっています。

DSC_0020

回路図
PLCC68 board

BOM

Item Size Num Value
R1-4 R1608 4 2.2kΩ
C1-4 C1608 4 0.1uF
CN1-2 CN-2×7 2 CN-2×7
CN3 CN-2×5 1 JTAGコネクタ
U1 PLCC68 1 PLCC68ソケット

基板
PLD-PLCC68-Prod1
DSC_0023

プリント基板のガーバーファイルです。
Download: PLD-PLCC68-Prod1.zip

基板が欲しい方はこのガーバーファイルを FusionPCB なり Elecrow なりに製造依頼することでオンデマンド製造することができます。
スイッチサイエンスPCB で製造したときに使ったガーバーデータそのものになります。

単なる変換基板扱いなので単体動作はしません。
せめてクロックオシレータでも乗っていればと思うのですが、つみょん的にはオシレータを提供する基板を作成して積み重ねるのが正解でしょう。
DSC_0021


hatena bookmark

RaspberryPi での気象センサー計測と「なんログ」でのロギングでお部屋の中の情報が順調に記録されていく。
後はそのログを解析してなんかに利用すれば良いだけだ。

取りあえずデータが見たいということで、ログの結果をグラフ表示する WEB ページを作ることにした。

myweather.service.consul_2015-12-19_18-06-54
myweather.service.consul_2015-12-19_18-07-01

グラフの表示には Flotr2 という javascript ライブラリを使用している。
サーバー自体は部屋内に設置しているため、外部には公開していない :-)

sinatra で erb view とか使っているけれども、一般的な WEB アプリな作りになるので特に語ることも無いかも。

このへん、グラフ表示をしたい、そこを強くしたいというのであれば WEB サーバーのログ解析で使われるメトリクスツールをそのまま使うというのも手な気がしてきた。
そういう意味ではログを記録する部分も fluentd などのサーバーアプリを使えばキューイングとかストア先とかそのまま利用できるだろう。


hatena bookmark

Raspberry Pi 2 で気圧や温度が取れる様になったところで次はそれをデータとして蓄積して行きたいわけです。
単純にテキストファイルに追記していくだけでも良いのですが、ここのところ継続して計測したいという要求が多いので簡単なロガーサーバーを作ることにしました。名付けて「なんログ」です。

要求としては、

  • ネットワーク上にあるサーバーに設置、幾つかの機器からのログをポストするだけで記録してくれる
  • IoT的な機器から使える様にシンプルな HTTP API を備える
  • どこからのログか分かるように分別タグを付けられる
  • 複数機器からのアクセスでも大丈夫
  • 最初は簡単にテキストファイルに記録することろから

といったあたりで。
2015-12-19_054015

システムとしては上図のようになる。
Read the rest of this entry »


hatena bookmark

DSC00902
前回 RaspberryPi2 に気圧センサーと気温/湿度センサーを付けて値を読み取れるようにした。
ぱっと見良さそうだったのだけれども、しばらくコレで計測を続けてみるとどうも湿度が正しく変動していない様に見受けられた。

たまたま使った DHT11 の個体不具合っぽい。自分の目的的に湿度はおまけみたいなものだったけれども、計測できないとなるとなんか悔しくなってきたので作り直すことにした。
その際、ワンワイヤーシリアルだった DHT11 の代わりに I2C の AM2310 に変更を行った。これで I2C に統一できる。
気圧センサは手持ち在庫の関係で LPS25H ではなく LPS331AP に、現在は LPS25H の方が在庫品になっているのでそっちで読み替えて貰うとありがたい。

Read the rest of this entry »


hatena bookmark

低気圧の到来時など気圧の変化で健康状態に影響を与えるとは良く言われる。
台風や爆弾低気圧の通過後はそうかもなー、とか思うのものの普段の生活で気圧というのは気温ほど気にしてはいなかったりする。そもそもで温度計は家電として入手しやすいものの気圧計はあまり身近では無い様に思う。
そういった体調と気圧変化を結びつけるには今現在の値が知れれば良いわけでもなく継続した変化、ロギングが重要ではないかとも思うのである。

そこで、マイコン(RaspberryPi2)で気圧や気温といった気象情報を計測し、サーバーにロギングする「デジタル百葉箱システム」を作ってみようかというのが今回のお話である。

ちなみに計測するのは自分の部屋である。
単に自分にとっての生活指針が欲しいだけなので外気の状況でなくて良い。

掲載予定としては

  1. センサーでの計測部分
  2. サーバーでのログ収集
  3. ログデータの表示

の 3回になる見込み。

■ センサー

部品箱をほじくり返して以前買ってあったセンサーを掘り出す。
この計測自体は昔からやりたかったので、以前からぽちぽちセンサーだけは買ってあったのである。今になってやろうと思ったのは、自宅内サーバー環境が整ってきたところで、世間で流行の IoT 的フローを構築したくなったからに他ならない。

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

DSC00880
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)

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

DSC00881
行けそうなので基板にまとめた。

これで温度、湿度、気圧のセンサーから現在の部屋の状況を読み取る事ができた。
今回 RaspberryPi2 と ruby を選択したのは、センサーを読み取りつつ、その後ネットワークでよしなにするためなのでお手軽になるのはここから先のお話である。

追記:
あーそういえば RaspberryPi2 で I2C を使うために最初なんかインストールしたり設定したりする必要があった覚えがある。
ちょい前の話であまり覚えていないので省略。


hatena bookmark

タクトスイッチとチップLEDが 4個ずつ付いたシンプルな基板です。
プロトタイピング中の簡単なインタラクト実装に役立つでしょう。

「つみょん」シリーズで初めての 2単位サイズ基板となります。

DSC00865

回路図
4sw

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

基板
DSC00866
この 2単位サイズでサンハヤトのユニバーサル基板 “ICB-90” と同じサイズになります。

プリント基板のガーバーファイルです。
Download: tmon_swled4

基板が欲しい方はこのガーバーファイルを FusionPCB なり Elecrow なりに製造依頼することでオンデマンド製造することができます。
スイッチサイエンスPCB で製造したときに使ったガーバーデータそのものになります。

確認プログラム
「つみょん」PSoC4ボードでの動作確認コードです。
PSoC Creator 3.2 のプロジェクトファイルとなります。

Download: tmon_swled.cywrk.Archive01

ボタンを押すと LED が点滅する Lチカサンプルです。


hatena bookmark

マイコン電子工作の王道、キャラクターLCDモジュールを乗せた基板です。
各種ステータスチェックや簡易UIとしてお役に立ちます。

I2C で駆動するモジュールを CN1 側のシリアルポートを使って駆動します。
ちなみに CN2 側のシリアルポートは SWD プログラミングで使っていますので空いているのは CN1 側となります。

DSC00871

回路図
i2c_lcd

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

基板
DSC00868

プリント基板のガーバーファイルです。
Download: rmon_i2clcd_prod1.zip

基板が欲しい方はこのガーバーファイルを FusionPCB なり Elecrow なりに製造依頼することでオンデマンド製造することができます。

確認プログラム
「つみょん」PSoC4ボードでの動作確認コードです。
PSoC Creator 3.2 のプロジェクトファイルとなります。
Download: psoc4_i2c_lcd.cywrk.Archive04.zip