2015年2月21日土曜日

RFレコーダ利用記録

2月13日

中学校を訪問して、電波関係の公開授業。

電波の見える化 に利用

2.4GHz 無線LANの電波のスペクトルを見せた。
他にも、地上デジタルテレビの周波数を直接 入力して、各テレビ局の電波が
どのような周波数でどのようなスペクトルで見えるかを確認した。

あらかじめ受信しておいたGPSの受信データを 再放射アンテナから送信して、
それをGPSハンディ受信機で受信して見せて、
現在の時刻や場所と異なる時刻が表示されることも確認した。

そういえば、授業の写真なし。 撮影しておけばよかった。

2014年12月26日金曜日

午前中は、娘と買い物

今日の午前中は、娘と買い物 ケーキの材料を買うのに付き合う。 ついでに梅酒を買う。

2014年12月25日木曜日

今年の休みは長いぞ〜。

今年の年末年始は、本業の方が 12月23日(火曜日)から1月4日(日曜日)まで およそ2週間がお休み。 なので、この休み期間は張り切って製作所の仕事をしています。 といっても、23日は、何していたか忘れたし、 24日は、人間ドックの結果を聞きに行き、 午後は、?? わすれた。 今日(25日)の午前中は、 お風呂のヒビ割れに、バスコーキング。 車のフロントガラスの水垢落とし。 キーレスエントリーの電池交換 昼から年賀状作成。 大したことしてないね。

2014年12月10日水曜日

到達高度の確認

高度200mで リリース装置が起動するかの実験。

時間は
13:30-14:45まで
使用者は
5MI 学生 及び
入江

2014年11月14日金曜日

9 Degrees of Freedom センサスティック for UNO


9 Degrees of Freedom センサスティック for Uno

http://www.usmv.sys.okayama-u.ac.jp/~in/sampleprg/sen-10724.html を参考に
(ほとんどそのままに) Unoように 9Degrees for Freedom センサスティック用の
スケッチを作ってみた。 I.N.先生に感謝します。



//ITG-3200 & ADXL345 & HMC5883L 読み出しサンプル
//2012.12.14-17 I.N.
//2014 Nov. 14  H.I.  for Arudino UNO

//#include <rxduino.h> for GR-SAKURA
#include <Wire.h>

#define delayus(t) delayMicroseconds(t)
#define delayms(t) delay(t)

//ジャイロセンサ(ITG-3200)
#define G_ADR           0x68
#define G_SMPLRT_DEV    0x15
#define G_DLPF_FS       0x16
#define G_XOUT_H        0x1D
#define G_XOUT_L        0x1E
#define G_YOUT_H        0x1F
#define G_YOUT_L        0x20
#define G_ZOUT_H        0x21
#define G_ZOUT_L        0x22
//加速度センサ(ADXL345)
#define A_ADR           0x53
#define A_POWER_CTL     0x2D
#define A_DATAX0        0x32
#define A_DATAX1        0x33
#define A_DATAY0        0x34
#define A_DATAY1        0x35
#define A_DATAZ0        0x36
#define A_DATAZ1        0x37
//地磁気センサ(HMC5883L)
#define M_ADR           0x1E
#define M_CONFIG_A      0x00
#define M_CONFIG_B      0x01
#define M_MODE          0x02
#define M_DATAX_MSB     0x03
#define M_DATAX_LSB     0x04
#define M_DATAZ_MSB     0x05
#define M_DATAZ_LSB     0x06
#define M_DATAY_MSB     0x07
#define M_DATAY_LSB     0x08

// shortを"-##### "~"+##### "へ変換
void short2dec5(short n, char *s)
{
    unsigned char a;
    int d;
    if(n<0){
        d=-n;
        s[0]='-';
    }else{
        d=n;
        s[0]='+';
    }
    a=(unsigned int)d/10000u;
    s[1]='0'+a;
    d-=(unsigned int)a*10000u;
    a=(unsigned int)d/1000u;
    s[2]='0'+a;
    d-=(unsigned int)a*1000u;
    a=(unsigned int)d/100u;
    s[3]='0'+a;
    d-=(unsigned int)a*100u;
    a=(unsigned int)d/10u;
    s[4]='0'+a;
    d-=(unsigned int)a*10u;
    a=d;
    s[5]='0'+a;
    s[6]=' ';
    s[7]=0;
}
#define PIN_SW  5
#define PIN_LED0 A2
#define PIN_LED1 A3
#define PIN_LED2 5
#define PIN_LED3 6


void setup() {
    pinMode(PIN_SW,INPUT);       //青ボタン使用
    pinMode(PIN_LED0,OUTPUT);    //LED0使用
    pinMode(PIN_LED1,OUTPUT);    //LED1使用
    pinMode(PIN_LED2,OUTPUT);    //LED2使用
    pinMode(PIN_LED3,OUTPUT);    //LED3使用
    digitalWrite(PIN_LED0,0);
    digitalWrite(PIN_LED1,0);
    digitalWrite(PIN_LED2,0);
    digitalWrite(PIN_LED3,0);

    //---Serialは外部へのデータ送信---
//    Serial.begin(38400,SCI_USB0);      // 仮想USB(baudrateはダミー)
    //Serial.begin(115200,SCI_SCI0P2x);   //IO0=RXD0, IO1=TXD0
    //Serial.begin(187500,SCI_SCI0P2x);   //IO0=RXD0, IO1=TXD0
    Serial.begin(9600);  //for Uno
  //  sci_str *sci;
  //  sci=Serial.get_handle();
  //  sci->crlf_rx=CRLF_NONE;                //受信:改行変換なし
 //   sci->crlf_tx=CRLF_NONE;                //送信:改行変換なし

    //I2C開始
    Wire.begin();

    //ジャイロセンサ初期設定
    Wire.beginTransmission(G_ADR);
        Wire.write(G_SMPLRT_DEV);
        Wire.write(0x09);        //1k/(9+1)=100Hz
        Wire.write(0x18|0x01);    //2000deg/s, lpf=188Hz
        Wire.endTransmission();  

    //加速度センサ初期設定
    Wire.beginTransmission(A_ADR);
        Wire.write(A_POWER_CTL);
        Wire.write(0x00);
        Wire.endTransmission();  
    Wire.beginTransmission(A_ADR);
        Wire.write(A_POWER_CTL);
        Wire.write(0x10);
        Wire.endTransmission();  
    Wire.beginTransmission(A_ADR);
        Wire.write(A_POWER_CTL);
        Wire.write(0x08);
        Wire.endTransmission();  

    //地磁気センサ初期設定
    Wire.beginTransmission(M_ADR);
        Wire.write(M_CONFIG_A);
        Wire.write(0x18);    //average=1, rate=75[Hz]
        Wire.write(0x20);    //gain=1.3Ga
        Wire.endTransmission();  
    Wire.beginTransmission(M_ADR);
        Wire.write(M_MODE);
        Wire.write(0x01);    //mode=single
        Wire.endTransmission();  

    delayms(100);
    digitalWrite(PIN_LED0,1);
}

unsigned char dat[18];
short d[9];
unsigned int dt,t0;

void loop() {
    char ss[8];
    int i;

    digitalWrite(PIN_LED1, 1);
    t0=micros();

    //ジャイロ読み出し
    Wire.beginTransmission(G_ADR);
    Wire.write(G_XOUT_H);
    Wire.endTransmission();  
    Wire.requestFrom(G_ADR,6);
    while(Wire.available()<6);
    for(i=0;i<6;i++){
        dat[i]=Wire.read();
    }
    d[0]=(dat[0]*0x100)|dat[1];
    d[1]=(dat[2]*0x100)|dat[3];
    d[2]=(dat[4]*0x100)|dat[5];

    //加速度読み出し
    Wire.beginTransmission(A_ADR);
    Wire.write(A_DATAX0);
    Wire.endTransmission();  
    Wire.requestFrom(A_ADR,6);
    while(Wire.available()<6);
    for(i=6;i<12;i++){
        dat[i]=Wire.read();
    }
    d[3]=(dat[ 7]*0x100)|dat[ 6];
    d[4]=(dat[ 9]*0x100)|dat[ 8];
    d[5]=(dat[11]*0x100)|dat[10];

    //地磁気読み出し
    Wire.beginTransmission(M_ADR);
        Wire.write(M_DATAX_MSB);
        Wire.endTransmission();  
    Wire.requestFrom(M_ADR,6);
    while(Wire.available()<6);
    for(i=12;i<18;i++) {
        dat[i]=Wire.read();
    }
    d[6]=(dat[12]*0x100)|dat[13];
    d[7]=(dat[14]*0x100)|dat[15];
    d[8]=(dat[16]*0x100)|dat[17];
    Wire.beginTransmission(M_ADR);
        Wire.write(M_MODE);
        Wire.write(0x01);    //mode=single
        Wire.endTransmission();  

    //データ出力
    for(int i=0;i<9;i++){
        short2dec5(d[i],ss);
        Serial.print(ss);
        if(i==2 || i==5) Serial.print("|");
    }
    Serial.print("\r\n");

    digitalWrite(PIN_LED1,0);
    //ここまでで約4ms on GR-SAKURA
    //時間待ち
    do{
        dt=micros()-t0;
    }while(dt<10000);
    t0+=10000;
}

2014年11月12日水曜日

QZQSMをデコードするプログラムをPythonで作ってみた。

QZQSMをデコードするプログラムをPythonで作ってみた。


#GPS QZSS robot car using QZPOD for QZSS scramble 
import serial
import time

def main():
 
    con=serial.Serial('/dev/ttyACM1', 19200, timeout=10)
    print con.portstr

    a='QSM'

    while 1:
        str=con.readline()
        if a in str:
              b=str.split(',')
              c=b[2]
              d=c.split('07DE')
              e=d[1]
              teamNo=e[0:2]
              X_div=e[2:4]
              Xwidth=e[4:6]
              Y_div=e[6:8]
              Ywidth=e[8:10]
              NumberTarget=e[10:12]
              Stx=e[12:14]
              Sty=e[14:16]
              T1x=e[16:18]
              T1y=e[18:20]
              T2x=e[20:22]
              T2y=e[22:24]
              T3x=e[24:26]
              T3y=e[26:28]

              print(e)
              print('->', teamNo, X_div ,Y_div ,Xwidth ,Ywidth,NumberTarget,'-',Stx,Sty,'-', T1x,T1y, '-',T2x,T2y,'-',T3x,T3y)

#       con.write(str)

if __name__ == '__main__':
    main()

2014年11月7日金曜日

検索した店舗の位置を地図にKmlで表示する。(その1「コンビニ編」)

検索した店舗の位置を地図にKmlで表示する。(その1「コンビニ編」)
「Text 第6章 pp.44-50の課題をArcGIS に代わりにGoogle Earthで実行」
手順)
1.      コンビニエンスストアの住所検索
iタウンページ(http://itp.ne.jp/)にアクセスして、
「熊本県八代市 コンビニ」 を検索する。
2.      コンビニデータをCSVデータに変換する
(1)iタウンページの検索結果をExcelにコピペ(コピー&ペースト)する。
(2)「データ」の「区切り位置」を使って、店舗名と住所をそれぞれ、別のセルに保管する。
(3)フィルタや置換を使いながら、店舗名と住所を同じ行に並べる。
(4)データをCSVデータとしてファイル名を付けて保存する。
3.      住所データから 緯度経度データに変換する。
(1)CSVアドレスマッチングサービスを利用する
 を利用する。
(2)出力結果をメモ帳で開いて確認
(3)Exel開いて、整理番号,場所の名前,説明,経度,緯度,標高 の順に並べる。
4.      CSVデータに入っている緯度経度を利用して kmlで矢印位置を 表示させる。
CSVからkmlの変換サイトを利用
5.      今日の出力結果をメモ帳に貼付けて、保存します。ファイル名は、shop3AC00名前.kml  とします。提出フォルダに提出してください。

次回への課題1 (あらかじめ準備しておくと、早く終われます。)
出席番号と同じ都道府県番号
(http://www.mhlw.go.jp/topics/2007/07/dl/tp0727-1d.pdf)の県庁所在地のコンビニの位置をkmlファイルで作成しなさい。 
ただし、48番 福岡県北九州市  49番 神奈川県横浜市 とします。


次回への課題2 特定種類の施設の位置をkmlで表示させなさい(例えば、動物園、美術館、スタバの位置など。表示数が50個以上のモノを探す。)