Arduinoで皮膚温度計を作成する

温度センサーLM35DZを用いて、4人同時皮膚温度計測器を作成する。

0img_3413.jpgimg_3414.jpg

LM35DZに赤白黒の線をハンダ付けする。線の長さは50cmくらい。センサーを正面(型番が記入してある面)に見て、左足に赤右足に黒真ん中の足に白をハンダ付けし、内部で混線しないよう収縮チューブをつける。反対側にはピンヘッダーをはんだ付けする。次にブレッドボードの赤青線部分のみをカッターで切り離し、両面テープでArduinoに固定する。

img_3417.jpgimg_3416.jpglog

ブレッドボードの赤ラインにArduinoの5Vを、青ラインにAdrduinoのGNDを接続する。各センサーの赤線はブレッドボードの赤ライン、黒線は青ラインに接続する。白線はArduinoのA0~A3に接続する。下記ソフトウェアをArduinoに転送すると、シリアルモニタに開始秒数と4本ぶんのセンサー値が表示される。カット&ペーストでエクセルにコピーしてグラフを作成する。

Arduino用皮膚温計測プログラム:temp4

graph

 

M2HR使用マニュアル

M2心拍計の使い方を解説します。

title

アクセスポイントの設定

この計測器はserverモードで起動した後、PCから接続し、設定項目を変更することで、任意の無線LANネットワークに接続することができます。以下にその手順を示します。

img_3393.jpgimg_3394.jpgimg_3395.jpg

1.起動後に「下ボタン」を数回押してServerモードで起動します。2.サーバーのアドレス「192.168.4.1」と、サーバーのSSID(12ケタのランダムな文字列)が表示されます。WifiでSSIDを探し接続します。ブラウザからサーバーアドレスにアクセスすると、設定項目を確認・変更できるので、SSIDと対応するパスワードを登録します。(その他の項目は変える必要はありません。)

*「M2 Settig」と画面が表示されるサーバーモードでは、PCと計測器が1対1で接続されるため、インターネットには接続できなくなります。上記設定が終わったら計測器の電源を切り、PC側を通常のアクセスポイントにつなぎ直してください。

HRの計測

次に心電図の計測方法を示します。

img_3396.jpgimg_3397.jpgimg_3398.jpg

1.計測器の電源を切り、再起動し、「下ボタン」を用いてWifi1もしくはWifi2モード(それぞれSSID1とSSID2に対応)で起動します。2.アクセスポイントに正しく接続すると、計測記名(上記では[KHR02])と計測器に割り振られたIPアドレス(例:192.168.1.199)が表示されます。また、現在時刻と測定電圧、バッテリー電圧(例:373)が併せて表示されます。3.「中ボタン」を2回押して「diff」モードに移行し、心電図波形を確認します。必要に応じて検出用のしきい値(画面上の白直線)を「下ボタン」によって調整します。

img_3399.jpgimg_3400.jpg

4.さらに「中ボタン」を一回押すと、計測モードに移行しIBI(ms単位の拍動間隔、通常500-1000程度)が太文字で表示されます。5.この状態で「下ボタン」を押すと計測が開始され、IBIの下に表示された検出カウントが上がります。ここまで来ると、Web上から計測結果を参照可能となります。「下ボタン」を再度押すことでカウントが止まり、計測終了となります。測定中は検出カウントの下にバッテリー電圧が表示されます。

計測結果の確認と取得

計測中、計測後に、専用のWebページから測定データを確認できます。以下にその方法を示します。

img_3401.jpgimg_3403.jpgimg_3404.jpg

1.結果確認用アドレスを表示し、「todayボタン」「reloadボタン」の順に押すと、本日計測されたデータが列挙されます。表示されたファイルリストの日付と時刻を確認し、該当するものをクリックします。左上の入力欄に測定結果が読み込まれたら、「RMSSDボタン」を押します。2.波形と1分ごとのHR、RMSSDの計算結果が表示されます。計算結果はコピー&ペーストでエクセルへもっていくことができます。3.ブラウザの戻るボタンで戻り、「質問紙」リンクから主観評定を入力します。

その他

・波形表示時にノイズが多い、波形が小さすぎるなどの場合は、電極とケーブル接続を確認します。
・ノイズが多い場合は、なるべく電子機器の電源から遠ざかるようにします。
・計測後に「中ボタン」を何度か押すことで、結果確認用アドレスのQRコードを表示することができます。
・バッテリー電圧が、360程度になったらバッテリーを取り替える必要があります。
・しきい値の白線は上限まで移動した後、下限に移動します。更に押す事で画面内に現れます。
・「RMSSDボタン」押下時に、「Upper/Lower Limit」により自動修正の強さを変更できます。
・計測した結果はこちらのアドレスから確認できます。

Q.しきい値の設定基準がいまいちわかりません。

A.目安としては,IBIが500-1000に入っていればOKです。
仮に真のIBIが700だとして,
1)閾値が低すぎると,R波以外を拾って,30とか100などのIBIが出てきます。
→閾値を上げて(中心線部分より離して)R波のみを検出するようにします。
2)閾値が高すぎると,R波を逃して1400などの700の2倍程度の数が頻発します。
→閾値を下げて(中心よりに戻して)R波を逃さないようにします。

フルカラーLEDを使う

フルカラーLED(NeoPixel)の使い方を学びます。
img_3390.jpg

フルカラーLEDのGND端子に黒線を、VDD端子に赤線を、DI端子に白線をハンダ付けします。裏面にハンダ付けするとやりやすい。反対側にピンヘッダーをハンダ付けして完成。収縮チューブも忘れずに。

img_3387.jpgimg_3388.jpg img_3389.jpg

完成したら、黒線をArduinoのGNDに、赤線を5Vに、白線をD6につなぐ。

img_3391.jpg

下記のプログラムで、赤、緑、青に1秒ずつ光る。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include
#define PIN 6
#define NUMPIXELS 1
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
pixels.begin();
}

void loop() {
pixels.setPixelColor(0, pixels.Color(5,0,0)); //Red
pixels.show();
delay(1000);

pixels.setPixelColor(0, pixels.Color(0,5,0)); //Green
pixels.show();
delay(1000);

pixels.setPixelColor(0, pixels.Color(0,0,5)); //Blue
pixels.show();
delay(1000);
}

スムースに光らせるにはforループを使う

1
2
3
4
5
6
7
8
9
10
11
12
13
#include
#define PIN 6
#define NUMPIXELS 1
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
pixels.begin();
}

void loop() {
int t=5;

for(int i=0;i<255;i++){ pixels.setPixelColor(0, pixels.Color(i,0,0)); //Red pixels.show(); delay(t); } for(int i=0;i<255;i++){ pixels.setPixelColor(0, pixels.Color(255-i,0,0)); //Red pixels.show(); delay(t); } }

次は可変抵抗と組み合わせて明るさを換えてみる。
接続は以下のとおり。
1.Arduinoの5Vをブレッドボードの+に、GNDをブレッドボードの-につなぐ。
2.フルカラーLEDの赤線をブレッドボードの+に、黒線を-に、白線をArduinoのD6につなぐ。
3.可変抵抗の赤黒線をブレッドボードにつなぎ、白線をArduinoのA0につなぐ。
img_3392.jpg

下記のプログラムで、可変抵抗の値におうじて明るさが変化する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include
#define PIN 6
#define NUMPIXELS 1
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int vr1;

void setup() {
pixels.begin();
}

void loop() {
vr1= analogRead(0);

pixels.setPixelColor(0, pixels.Color(vr1/4,0,0));
pixels.show();
delay(10);
}

可変抵抗のはんだ付け

img_3384.jpg

材料は、可変抵抗(10kΩ)、赤白黒のサーボ線、収縮チューブ、ピンヘッダーです。

img_3370.jpg img_3371.jpg img_3373.jpg img_3372.jpg

まず最初に線の両端をワイヤストリッパーで露出させます。露出させた芯にハンダを染み込ませます。次に、ピンヘッダーにもハンダをつけておきます。温めすぎるとピンヘッダーが溶けるので注意します。

img_3374.jpg img_3375.jpgimg_3376.jpg

線とピンヘッダーをハンダ付けしてつなぎます。収縮チューブを予め通しておくことを忘れずに。はんだ付けが終わったら、バーナーで収縮チューブを収縮させます。3本終わったら、プラスチック部分を除去します。

img_3377.jpg img_3378.jpg img_3382.jpg

可変抵抗の端子部分にハンダをのせておきます。ピンヘッダー側と同様に、ワイヤストリッパーで線を露出させ、ハンダを染み込ませ、可変抵抗にはんだ付けします。左から赤白黒の順序ではんだ付けします。

img_3380.jpgimg_3381.jpgimg_3383.jpg

これで可変抵抗モジュールの完成です!

 

Arduino入門

HSSC_Arduino01

プレゼンテーションファイル等一式:HSSC180821

1.LEDを点滅させます。
LED3
Blink


1
2
3
4
5
6
7
8
9
10
11
12
13
//LEDを点滅させる
void setup()
{
  pinMode(13, OUTPUT); //13番のピンを出力モードに
}

void loop()
{
  digitalWrite(13, HIGH); //13をONにする
  delay(1000); //1000ms待つ
  digitalWrite(13, LOW); //13をOFFにする
  delay(1000); //
}

2.可変抵抗(ボリューム)の値を読み取ります。
可変抵抗の黒線をArduinoのGNDに,赤線を5Vに,白線をA0に接続します。
vr1
READ1


1
2
3
4
5
6
7
8
9
10
11
12
13
int value= 0; // アナログ値を格納する変数

void setup(){
  Serial.begin(9600); // シリアルポートを9600bpsで開く
}

void loop(){
  value= analogRead(0); // アナログピン0から読み取る
 
  Serial.print(value); //読んだ値をPCへ送る
  Serial.println(); // 改行を送信
  delay(100); // 100ミリ秒停止
}

3.可変抵抗(ボリューム)の値をLEDの明るさに反映させます。
LEDの長い足をArduinoのD11に,短い足をGNDに接続します。
可変抵抗の黒線をArduinoのGNDに,赤線を5Vに,白線をA0に接続します。
img_3289.jpg
analogLED


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int value= 0; // アナログ値を格納する変数

void setup(){
  pinMode(11, OUTPUT); //11番ピンを出力モードに
  Serial.begin(9600); // シリアルポートを9600bpsで開く
}

void loop(){
  value= analogRead(0); // アナログピン0から読み取る
  analogWrite(11,value/4); // アナログ値を1/4してLEDに入れる
 
  Serial.print(value/4); //LEDの値をPCへ送る
  Serial.println(); // 改行を送信
  delay(100); // 100ミリ秒停止
}

卒論計画 古川

ゲームを行った後の協力課題について、エッグフォール課題や、紙でタワーをつくるなどの課題があるとのことだったので、それらについて検討しつつ、ほかの共同課題を今後検討していきたいと思います。

M2@SC171106

11/5 森田先生、長濱先生、宮西さん、加藤くん、新井くん、永田くん、吉田くん、長野の8人で計測機の作製をおこなった。永田・新井の両氏は3Dプリンティングと切削、残りのメンバーは回路の組み立てを主に行った。
img_2598.jpg img_2594.jpgimg_2595-1.jpg
img_2596.jpg img_2599.jpg img_2597.jpg

最終的に計5個の計測機が完成し、当方に存在した計測機を加え、6台で同時に皮膚コンダクタンスを測定した。課題はサイコロを転がして、出た目の内容に応じて話をするというもの。皆自分の担当時に明確な発汗反応が観測された。
wscpic結果エクセル:wscdata

計測機に関する情報:

img_2567.jpg img_2566.jpg img_2565.jpg

Arduinoプログラム一式:M2

表示用PHPプログラム:showchannel

 

The Progress of Quadruped Robot Development #04

プログラム:Base Program of Quadruped Robot
・各サーボモーターの定義付け、Arduinoからの出力チャンネルの設定が完了。
・定義”if”で、足の動かす領域を設定できる。(パーツの故障防止用プログラム)
//以下は右前脚のプログラム//
if(RF_AngLim<“X”){RF_AngLim=”X”;}・・・”X”以下の数字にはならない
if(RF_AngLim>”Y”){RF_AngLim=”Y”;}・・・”Y”以上の数字にはならない
*RF_AngLim(変数)はコントローラーなどの外部のコマンド入力により数値が変わる予定。
・定義”write”で各関節の動きが設定可能。(計算式が必要)
//以下は右の第一関節の例//
RF.write(“C”-(RF_AngLim-“D”)・・・”D”からRF_AngLimを引いてから”C”を引いた角度になる
*各関節の変数は一つに纏めてあるのでそれぞれにあった公式が必要。
・後に関数”delay”が必要になるかもしれない。
・定義”loop”は未完成。

卒論の計画②

前回の石鹸は練って作るタイプだったので、今回はクリアソープを使って再チャレンジしました。

▽制作手順

①クリアソープをレンジで溶かす(約30〜60秒)

②食紅で着色する

③型に流す

④冷やして型から取り出して包丁で形を整えて完成


宮田さんも沢山手伝ってくれました。
▽完成品


型はシリコンの方が綺麗に取り出せる!という事が今回の製作で分かりました。

次回は製作時間を計りながらもっと綺麗な石鹸を作りたいと思います〜( ◠‿◠ )