2月13日
中学校を訪問して、電波関係の公開授業。
電波の見える化 に利用
2.4GHz 無線LANの電波のスペクトルを見せた。
他にも、地上デジタルテレビの周波数を直接 入力して、各テレビ局の電波が
どのような周波数でどのようなスペクトルで見えるかを確認した。
あらかじめ受信しておいたGPSの受信データを 再放射アンテナから送信して、
それをGPSハンディ受信機で受信して見せて、
現在の時刻や場所と異なる時刻が表示されることも確認した。
そういえば、授業の写真なし。 撮影しておけばよかった。
2015年2月21日土曜日
2014年12月26日金曜日
2014年12月25日木曜日
今年の休みは長いぞ〜。
今年の年末年始は、本業の方が 12月23日(火曜日)から1月4日(日曜日)まで およそ2週間がお休み。 なので、この休み期間は張り切って製作所の仕事をしています。 といっても、23日は、何していたか忘れたし、 24日は、人間ドックの結果を聞きに行き、 午後は、?? わすれた。 今日(25日)の午前中は、 お風呂のヒビ割れに、バスコーキング。 車のフロントガラスの水垢落とし。 キーレスエントリーの電池交換 昼から年賀状作成。 大したことしてないね。
2014年12月10日水曜日
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()
#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.
コンビニエンスストアの住所検索
「熊本県八代市 コンビニ」 を検索する。
2.
コンビニデータをCSVデータに変換する
(1)iタウンページの検索結果をExcelにコピペ(コピー&ペースト)する。
(2)「データ」の「区切り位置」を使って、店舗名と住所をそれぞれ、別のセルに保管する。
(3)フィルタや置換を使いながら、店舗名と住所を同じ行に並べる。
(4)データをCSVデータとしてファイル名を付けて保存する。
3.
住所データから 緯度経度データに変換する。
(1)CSVアドレスマッチングサービスを利用する
を利用する。
(2)出力結果をメモ帳で開いて確認
(3)Exel開いて、整理番号,場所の名前,説明,経度,緯度,標高
の順に並べる。
4.
CSVデータに入っている緯度経度を利用して kmlで矢印位置を 表示させる。
CSVからkmlの変換サイトを利用
5.
今日の出力結果をメモ帳に貼付けて、保存します。ファイル名は、shop3AC00名前.kml とします。提出フォルダに提出してください。
次回への課題1 (あらかじめ準備しておくと、早く終われます。)
出席番号と同じ都道府県番号
ただし、48番 福岡県北九州市 49番 神奈川県横浜市 とします。
次回への課題2 特定種類の施設の位置をkmlで表示させなさい(例えば、動物園、美術館、スタバの位置など。表示数が50個以上のモノを探す。)
登録:
投稿 (Atom)