2012/11/29

回路図入力

今まで、WindowsPCで回路図入力する時は、Bschというフリーソフトを使っていたのですが、Macでは標準サポートがされていませんでした。
(ただし、Qtを利用したBschがあり、それをリコンパイルすれば動作するそうです。)
そのため、回路図入力ツールを探した所、中々これは!というツールが見つからず、
色々考えたあげく少し先の事も考えてEagleを使ってみる事にしました。
ただ、Eagleは基本商用ソフトでフリーで使うとなると、入力する回路規模に制限が発生します。
もちろん、そんな大規模回路を入力する事も無いので、Eagleをダウンロード、手順に沿ってインストールが無事終了。
試しにArduino無しの大気圧測定お天気お知らせシステム(大袈裟だな。。。)の回路図を入力してみました。
デスクトップ画像の上のウィンドウは回路図、下のウィンドウは、、、はい、基板レイアウトのウィンドウです!
できるのか?(^^)

2012/11/13

トランジスタ技術12月号

本屋でなにげなく特集を見ると、無線通信モジュールであるXBeeとセンサーを組み合わせる特集。
今月より節制しようと決意していたのだけど、今後の必要となる技術の勉強だと理由をつけて購入。(^^;)
数種類のセンサーが紹介されていたのだけど、意外とI2CやSPIでつながってくれるセンサーがある。
センサーが安ければ手が出しやすいのだけど。。。幾ら位するのだろう。
とりあえず、今センサーを買う事は無いけれど、どう組み合わせてどんなことができるかを、あーだこーだ考える(妄想する)ネタができた。(^^)

2012/11/10

arduino: 大気圧センサ

個人的事情で、ほぼ停滞していましたが、ようやく時間を作る事ができました。
単に大気圧を測っただけでは面白くないので、Freescale社のMPL115を使った気圧からの
天気予測の機能を追加しました。
ついでに単体動作しても予測を知らせる事ができるように、LEDを3つ付けました。
もちろん、シリアルで気圧値と気圧の変位度合いが出力されます。
結果としては、まずまずで1時間くらいは値がばらつきますが、その後は落ち着いているようにみえます。
画面のダンプと下のソースは、デバッグ用に配列を表示したり無駄な部分が多いです。(^^;)
配列もいらないと思うので、修正しようかと思ってます。
次はarduinoは別の遊びに使いたいので、ATMega328P単体で実現しようかと思います。

#include <Wire.h>
#include <MPL115A2.h>
int loopflag = 0; //周回フラグ
float prss[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0}; //気圧データ保存用配列
int tcount = 0; //3時間計
void setup()
{
  MPL115A2.begin();
  MPL115A2.shutdown();
  Serial.begin(9600);
  pinMode(2,OUTPUT); //high pressure
  pinMode(3,OUTPUT); //low pressure
  pinMode(4,OUTPUT); //stable
}
void loop()
{
  MPL115A2.ReadSensor();
  MPL115A2.shutdown();
  float sec_total = 0, min_total = 0;

  for (int j=0; j < 15; j++){
   for (int i=0; i < 15; i++){
    sec_total = sec_total + MPL115A2.GetPressure();
    delay(1000);
   }
   float avepress_1min = (sec_total / 15) * 10; // average + kPa->hPa trans.
   min_total = min_total + avepress_1min;
   sec_total = 0;
   delay(45000);
  }
  prss[tcount] = min_total / 15;
  Serial.print("tcnt = ");
  Serial.print(tcount);
  Serial.print(", pr[0]=");
  Serial.print(prss[0]);
  Serial.print(", pr[1]=");
  Serial.print(prss[1]);
  Serial.print(", pr[2]=");
  Serial.print(prss[2]);
  Serial.print(", pr[3]=");
  Serial.print(prss[3]);
  Serial.print(", pr[4]=");
  Serial.print(prss[4]);
  Serial.print(", pr[5]=");
  Serial.print(prss[5]);
  Serial.print(", pr[6]=");
  Serial.print(prss[6]);
   Serial.print(", pr[7]=");
  Serial.print(prss[7]);
  Serial.print(", pr[8]=");
  Serial.print(prss[8]);
  Serial.print(", pr[9]=");
  Serial.print(prss[9]);
  Serial.print(", pr[10]=");
  Serial.print(prss[10]);
  Serial.print(", pr[11]=");
  Serial.print(prss[11]);
  Serial.print(", pr[12]=");
  Serial.println(prss[12]);

  if ( tcount > 0 ){
    float dpdt = (prss[tcount] - prss[0]) / (tcount * (loopflag + 0.25) * 0.635);
    Serial.print("pressure, ");
    Serial.print(prss[tcount]);
    Serial.print(", dP/dt, ");
    Serial.println(dpdt);
// LED on/off
    if(2.5 <= dpdt){
      digitalWrite(2,HIGH);
      digitalWrite(3,LOW);
      digitalWrite(4,LOW);
    }
    if(0.5 < dpdt && dpdt < 2.5){
      digitalWrite(2,HIGH);
      digitalWrite(3,LOW);
      digitalWrite(4,HIGH);
    }
    if(-0.5 <= dpdt && dpdt <= 0.5){
      digitalWrite(2,LOW);
      digitalWrite(3,LOW);
      digitalWrite(4,HIGH);
    }
    if(-2.5 < dpdt && dpdt < -0.5){
      digitalWrite(2,LOW);
      digitalWrite(3,HIGH);
      digitalWrite(4,HIGH);
    }
    if(dpdt <= -2.5){
      digitalWrite(2,LOW);
      digitalWrite(3,HIGH);
      digitalWrite(4,LOW);
    }
   
//
    if(tcount == 8 ){
      prss[0] = prss[4];
    }
 
    if(tcount >= 12 ){ //tcount initialise
      loopflag = 1;
      tcount = 1;
    }else{
      tcount++;
    }
  }else{
    tcount++;
  }
}

2012/11/09

server: gmail設定

この前の投稿で設定した効果を試したくて、地道にいらないメールを貯めていたのですが、
ようやくメール総数が400通を超えたので結果報告です。
問題無く最新のメールも受信できるようになりました!\(^o^)/
Nov  9 11:40:03 severname fetchmail[16893]: 414 通のメッセージ (そのうち 414 通は 既に読み込んでいます) がアカウント recent:hoge@gmail.com , サーバ pop.gmail.com宛に届いています (8078699 バイト)
見ても面白くないですが、上のメッセージがfetchmailのログです。
とりあえず、これで一安心です。
話しは変わりますが、Macはsshとか標準で装備されているので、本当に便利です。(^^)