【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文終了。 } } }
結果
【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につないである。
実行結果
次はviewerモードで実装してみます!
Galileoを触ってみる【温度センサ/タクトスイッチを使ってみる】
センサ類をいじってみるよ!
今日は温度センサとタクトスイッチをそれぞれ動かしてみたいと思います。
必要なもの(GalileoとUSBケーブルの他)
温度センサ編
- 温度センサ(temperature sensor: TMP36):https://www.sparkfun.com/products/10988
datasheet: http://www.analog.com/media/jp/technical-documentation/data-sheets/TMP35_36_37_jp.pdf
タクトスイッチ編
- タクトスイッチ(C&K Components PTS635 Series Tactile Switches):http://www.mouser.com/CK-Components/Electromechanical/Switches/Tactile-Switches/PTS635-Series/_/N-5g2m?P=1yzs95eZ1z0zl2x
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. }
出力はこのような感じになりました。
タクトスイッチ編
タクトスイッチにつなげます。電源は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チカ】
IntelのGalileo Gen2を触ってみます。
販売中止になってしまいましたが、研究室の段ボールにたくさん入っていたので
Galileo Gen2を使うことになりました。
[開発環境]
・Windows8.1
箱から出してセットアップ
箱の中の内容物ですが、
- AC アダプタ
- Galileo本体
このままでは使えないので、大学のショップまで
- USB A male - USB micro B male
の買い物をしに行きました。おおよそ8ドルで買いました。
さあ、気を取り直してIDEとドライバのインストール
ArduinoのIDEも使えます(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ケーブルをパソコンにつなぎます。
次にドライバーのインストール。
右クリックして、ソフトウェアの更新をします。
- 手動で更新をクリック
そして、ドライバの場所を以下で設定
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
なんと、このシステムを使えば、日本の私の口座から海外の口座へ外貨送金ができるのだ!
超画期的!!
以下、このシステムについてまとめてある記事を見ました。
出国する前の注意点としては、
- IDの証明書を取っておかなければならない(マイナンバー、顔写真入り、住所を証明するもの)←詳しくは以上のリンク先を参考に
- 送金には少し時間がかかること
- 手数料がかかること
- 日本の口座をインターネットバンキングしているとパソコンから(日本の指定先振り込み場所に)振り込みができる
- 上限金額
を注意したほうがいいみたいです。
お金の流れ
TransferWiseを使うと
□Wire Transferの場合
[私の日本にある口座]→[TransferWiseにて送金]→[大家さんのアメリカにある口座]
□Checkの場合
※アメリカの銀行にて小切手が発行できる口座開設が必要
[私の日本にある口座]→[TransferWiseにて送金]→[アメリカで作った私の口座]→[小切手の発行]→[大家さん]
海外に住むことが決まったならば、早めに準備を
とにもかくにも、今回は準備が押し気味で、困ってしまったので
海外送金する人は楽天銀行など手数料が少なく、送金できる口座とかを早めに開設して、
海外送金できるように申し込んだ方がいいかもです。
TransferWiseの詳細はぜひ、TransferWise見てみてください。