読者です 読者をやめる 読者になる 読者になる

Scientific Journey

私の冒険記録。たまに回り道。

【Arduino(Gallileo2)】シリアル通信 PCから送られてきた値配列に格納・表示

ほんの忘備録です。

PCから値送信→Arduino受信→配列に格納

コード

#define num 30//一度に送れる文字数

void setup() {
  Serial.begin(9600);//シリアル通信開始
}

void loop() {
  char incomingByte = 0;  // 受信データ用
  char sended_value[num] = {0};
  int i = 0;

  //シリアル通信
  while(1){
    if(Serial.available() > 0){
      incomingByte = Serial.read(); // 受信データを読み込む
      if(incomingByte > 47 && incomingByte < 59 ){ //アスキーコード10進数(47~59がきたら読み込み)
        sended_value[i] = incomingByte;//配列に入れる
        Serial.print(sended_value[i]);
        i++;
      }
      if(incomingByte == ';'){Serial.println(";");break;}//;が来たらwhile文終了。
    }
  }
}

結果

f:id:an-modoki:20160926074149p:plain

【PsychoPy】Galileo2(Arduino)とシリアル通信させてみる。Builder Viewで!

Builder Viewで動作を確認しました。

今日の午前中は何もかもが神っていますね。
あまり大したプログラムではないのですが、Builderでも動作を確認できました。

プログラムの詳細
  • タクトスイッチをオン、オフ→通信が成功すると画面に「OK」と表示される。
Builderの設定

Builderモードでルーチン、コンポーネントをこんな風に配置する。
f:id:an-modoki:20160922042058p:plain

コンポーネントの設定。

f:id:an-modoki:20160922042300p:plain

  • codeコンポ―ネント

f:id:an-modoki:20160922042414p:plain
f:id:an-modoki:20160922042455p:plain
f:id:an-modoki:20160922042550p:plain

実行結果

f:id:an-modoki:20160922042656p:plain

【PsychoPy】Galileo2(Arduino)とシリアル通信をしてみる。(coder編)

本日の朝、動作を確認しました。

Galileo側にコンパイル、スケッチを書き込み後、
PsychoPyのcoderモードで動作を確認しました。

以下が、Galileo側のプログラム

//------------------------------------------
//Tact switch time (P/N: 611 - PTS635SL50LFS)
//------------------------------------------
unsigned long tt, tt2, tt3;

int b_pin = 2;   // Desital pin
int ledpin = 13;
int state = 0;   // pin state
int flag = 0;

float tt4;

void setup() {
  Serial.begin(9600);  
  pinMode(b_pin, INPUT);     // input setting
  pinMode(ledpin, OUTPUT);     // input setting
  digitalWrite(ledpin, LOW);   // LED pin
}

void loop() {
  float ans , temp , tv ;
  float ans2 , temp2 , tv2 ;

  state = digitalRead(b_pin);  // read data
  
  ans = analogRead(0) ;        // read sensor from A0 pin
  ans2 = analogRead(1) ;        // read sensor from A1 pin
 
  if(state == 1 && flag == 0){
    flag = 1;
    tt = millis();
    Serial.println("ON");
    digitalWrite(ledpin, HIGH);
  }
  if(state == 0 && flag == 1){
    tv = (ans*5)/1024;           // convert sensor value to voltage
    tv2 = (ans2*5)/1024;           // convert sensor value to voltage
     
    temp = 100 * (tv - 0.5);     // convert voltage to temperature
    temp2 = 100 * (tv2 - 0.5);     // convert voltage to temperature
     
    tt3 = millis();
    tt2 = tt3 -tt;
    tt4 = (float)tt2 / 1000;
    flag = 0;
    
    Serial.print("time:");       // output serial monitor
    Serial.print(tt4);       // output serial monitor
    Serial.print(",coldbar:");       // output serial monitor
    Serial.print(temp);       // output serial monitor
    Serial.print(",warmbar:");       // output serial monitor
    Serial.println(temp2);       // output serial monitor
    digitalWrite(ledpin, LOW);
    
  }
  
  delay(100);
 }

以下がPsychoPyのcoder側のプログラム。

import serial

com06 = serial.Serial('COM6') # open first serial port COM6
line = com06.readline()   # read a '\n' terminated line
print(line)
com06.close()

Galileo2はCOM6につないである。

実行結果

f:id:an-modoki:20160922035606p:plain

次はviewerモードで実装してみます!

Galileoを触ってみる【温度センサ/タクトスイッチを使ってみる】

センサ類をいじってみるよ!

今日は温度センサとタクトスイッチをそれぞれ動かしてみたいと思います。

必要なもの(GalileoとUSBケーブルの他)

タクトスイッチ編

datasheet: http://www.mouser.com/ds/2/60/PTS635-43997.pdf

  • 8.8KΩの抵抗 10KΩくらいなら何でも大丈夫

温度センサ編

温度センサをデータシートの通りにつなげて、以下のコードを書きます。
今回Vs側には3.0Vの電圧をかけるよ。
ない人はGalileoボードの3.3vを使うといいかも。

//****************************************
//Temperature sensor-1(Vs = 3.0v: TMP36)
//****************************************
void setup() {
     Serial.begin(9600) ;      // Serial initiallize
}
void loop() {
     float ans , temp , tv ;

     ans = analogRead(0) ;        // read sensor from A0 pin
     tv = (ans*5)/1024;           // convert sensor value to voltage
     temp = 100 * (tv - 0.5);     // convert voltage to temperature
     Serial.println(temp) ;      // send value to PC
     delay(1000) ;                // delay.
}

出力はこのような感じになりました。
f:id:an-modoki:20160916102214p:plain

タクトスイッチ編

タクトスイッチにつなげます。電源は5vで出力側はデジタルピン2につなぎます。
その途中から抵抗をグランドにつなげます。

//------------------------------------------
//Tact switch (P/N: 611 - PTS635SL50LFS)
//------------------------------------------

int b_pin = 2;   // Desital pin
int state = 0;   // pin state

void setup() {
  Serial.begin(9600);  
  pinMode(b_pin, INPUT);     // input setting
}

void loop() {
  state = digitalRead(b_pin);  // read data
  Serial.println(state);       // output serial monitor
  delay(500);
}

タクトスイッチを押すと1が表示されます!!

Galileo を触ってみる【初期設定とLチカ】

IntelGalileo Gen2を触ってみます。

販売中止になってしまいましたが、研究室の段ボールにたくさん入っていたので
Galileo Gen2を使うことになりました。

[開発環境]
Windows8.1

箱から出してセットアップ

箱の中の内容物ですが、

  • AC アダプタ

このままでは使えないので、大学のショップまで

  • USB A male - USB micro B male

の買い物をしに行きました。おおよそ8ドルで買いました。

さあ、気を取り直してIDEとドライバのインストール

ArduinoIDEも使えます(1.53以上)
ですが、私はintel ArduinoをこちらからダウンロードしてIDEを入れました。

  • IntelArduino-1.6.0-windows-installer.exe

https://downloadcenter.intel.com/download/24355/Intel-Galileo-Board-Software-Package

ダウンロードが終わったら、
Galileo本体にACアダプタをさして、電源を入れて
先ほど買ってきたUSBケーブルをパソコンにつなぎます。

次にドライバーのインストール。

  • バイスマネージャーに不明なデバイスまたは、Galileo以外の名前で書いてある不明なデバイスを

右クリックして、ソフトウェアの更新をします。

  • 手動で更新をクリック

そして、ドライバの場所を以下で設定
C:\IntelArduino\drivers

そうすると、ドライバが入るはずなのですが、筆者はなぜか
「ストアへドライバーを追加する際に問題が発生しました」
という表示が出てしまい。

こちらのブログの方法を試してみました。
http://www.teradas.net/archives/9922/

そうするとやっとこさ、Galileoが認識されました。

Lチカをやってみる。

Galileoでちゃんとプログラムが書けるかどうか、試してみます。
IntelArduinoを起動して、以下のスケッチを書きます。

#define LED_PIN 13
void setup() {
  pinMode(LED_PIN, OUTPUT);
}
 
void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(3000);
  digitalWrite(LED_PIN, LOW);
  delay(3000);
}

書き込み前

  • ツール→ボードでintel Galileo Gen2に変更
  • ツール→シリアルポートを設定

コンパイルをしてから、書き込みをします。


はい。うまく書き込めました。
お疲れ様です。

【理系研究滞在・留学】留学資金をどう捻出するか・留学費用の見積もり

留学の資金はどれくらいかかるの

留学にもよりますが、
私の場合はカリフォルニアにある大学院の研究室に3ヶ月研究留学をします。
給料はないです。自分で渡航費を工面するとこのような感じになります。

内容 単価 個数 金額
飛行機代(往復) 9万~26万 往復1回分 9万~26万
ホテル代 1万(1日) 7日分 7万
家賃 9万(1ヶ月分) 3ヶ月分 27万
ご飯代 3万(1ヶ月分) 3ヶ月分 9万円
交通費 6千円(1ヶ月分) 3ヶ月分 1.8万円
合計 70.8万円

実際はビザを申請するのにも料金がかかりますし、もっとかかっていますね。

表からも分かるように、私の場合、8月のお盆出発だったので、飛行機代は往復で24万ちょい。
3ヶ月契約ができる家は、カリフォルニアについてから1週間後なのでそれまで、
大学にある格安ホテルに泊まります。

しかも、家から交通費がかかります。バスで1ヶ月の料金6千円ぐらい。
家賃は水道代と電気代込々。

家賃は妥当だと思います。もっと探せば安く借りれたのかもしれませんが、
なかなか、3ヶ月契約のところを見つけるのは大変でした。
それにしてもサンタバーバラは家賃が高いです。

留学資金を抑えるポイント

1.出発時期を工夫して、渡航費用を抑える。

11月など、なるべく安い費用で出発できる期間にプログラム開始を合わせるといいです。
あと、ビザを早めにとって、航空券を早めにとればもっと安くなります。

2.留学する地域を選ぶ

住む地域によって家賃相場は変わります。
なるべく安く賃貸できるアパートの多い地域に留学という手もあります。

3.ホテルに滞在する日数を減らす。

日本にいる間に賃貸するアパートを決めるのは難儀ですが、もしできれば、費用を安くできます。
サンタバーバラには大学に近い安いホテルは限られていました。

留学資金をどう捻出するか。

学生の人が、研究留学をするならば、留学費用はこれで決まりでしょう。
www.tobitate.mext.go.jp

ですが、大学を卒業後、ギャップイヤーをしている人などは
在籍をしているのではないので、上記は難しいです。
以下はそういった方にも、工面できるやり方を解説しているブログです。

どう留学資金を捻出するか?を考えてみるkaigaifxnoshigoto.wordpress.com

後は、国の教育ローンなどがあります。

私は貯金とFundMytravelを利用してみようかなと思います。

カリフォルニアで家賃を払う<日本から送金編>

留学準備も万全。あとは家賃をどう払うかだ。

私が住むカリフォルニアのシェアハウスでは家賃を

  • Wire Transfer(銀行口座への振り込み)
  • Check (小切手)

で払うらしく、クレジットカードは使えないそうだ。

そして、今日は家賃をどう払うかで、右往左往した一日でした。
銀行の口座から、振り込みなどを済ませて、外貨両替に行きました。
行って相談してもトラベラーズチェックのサービスもどこもやっていないそうだ。

今から、外貨送金の口座に切り替えるにしても、時間がかかる、出発にまで時間がない.....。

そんなときにこのようなシステムに出会った。

TransferWise

なんと、このシステムを使えば、日本の私の口座から海外の口座へ外貨送金ができるのだ!
超画期的!!

以下、このシステムについてまとめてある記事を見ました。

www.lifehacker.jp

unyoung-style.com

swell85.hatenablog.com

出国する前の注意点としては、

  • IDの証明書を取っておかなければならない(マイナンバー、顔写真入り、住所を証明するもの)←詳しくは以上のリンク先を参考に
  • 送金には少し時間がかかること
  • 手数料がかかること
  • 日本の口座をインターネットバンキングしているとパソコンから(日本の指定先振り込み場所に)振り込みができる
  • 上限金額

を注意したほうがいいみたいです。

お金の流れ

TransferWiseを使うと

Wire Transferの場合

[私の日本にある口座]→[TransferWiseにて送金]→[大家さんのアメリカにある口座]

□Checkの場合

※アメリカの銀行にて小切手が発行できる口座開設が必要

[私の日本にある口座]→[TransferWiseにて送金]→[アメリカで作った私の口座]→[小切手の発行]→[大家さん]

海外に住むことが決まったならば、早めに準備を

とにもかくにも、今回は準備が押し気味で、困ってしまったので
海外送金する人は楽天銀行など手数料が少なく、送金できる口座とかを早めに開設して、
海外送金できるように申し込んだ方がいいかもです。

TransferWiseの詳細はぜひ、TransferWise見てみてください。