「未分類」カテゴリーアーカイブ

試験面接AI#251207

前回やり残したことを順番にこなしていくぞ!
・ビルドして動作チェックしていない
・学習結果の記録が残せていない
・バリエーションがない

ビルドしてみる
無事にビルドできた。
M2E1・・・男性タイプ1,試験問題1。概ね問題ないと思われる。
M2C1・・・女性タイプ1,症状1。採点が優しすぎるように思える(ほぼ満点)。
C1のフィードバック画面が見切れてる。あと点数評価が適当すぎない?

学習成果の記録
・・・は残っていた。UIを作ろう。データはFaceとTalkとReportがあるが,Faceはとりあえず不要としよう。過去のデータを振り返るUIはいちおう作成できた。ログイン画面が必要。

バリエーションを作る
問題2はフォーマットの崩れが多くある。2つ選ぶ問題もあったため修正に手こずる。正答番号の妥当性については,以下のようなコメントであった。

no 疑義のポイント 主な理由
4 右心不全の症候 肝脾腫(2)は正しいが,尿量減少(5)も教科書で典型所見とされることが多く,「1 つ選べ」の形式なら 2 だけでよいか再確認が必要。
13 退院後の運動指導 正答が Borg 指数 16(「かなりきつい」)となっているが,推奨は 11–13 程度の中等度運動。選択肢自体に適切な解がない可能性が高い。
14 運動療法の禁忌 活動性心筋炎(3)は絶対禁忌だが,コントロールされていない不整脈(5)も同様に絶対禁忌とされる。問題が「1 つ選べ」か「複数選べ」かで正答が変わる。
22 間質性肺疾患の所見 線維化像(5)は正しいが,拡散障害による低酸素血症(2)も典型的。設問が単一選択であれば 5 だけでも成立するが,多肢選択なら 2 も正答に含める必要がある。

試験AI2番は女性とした。出題方法は流用可能で問題ないので,おそらくビルドすれば1番と同様に動作するだろう・・・。ふぅ・・・。面接AI2番は膝痛の高齢女性だ。男性で許してもらうことにしてChuckで作成を進めるが,ChatGPTが沈黙。。。これ以上進むのは難しい状態となった。ああAI依存。

ChatGPT問題を克服して作業を継続。
F2E1・・・女性タイプ2,試験問題2。一部選択肢表示されない。話すのが遅い。
M3C・・・高齢男性。症状2。採点が何故か非常に辛い。

今後の課題
・画面最大化すると,試験AIのUIが崩れる。
・面接AIの評定結果が見切れる。
・練習確認UIにログイン画面がない
・面接AIの採点結果が不均一(優しすぎたり難しすぎたりする)

BNO055で首を測る

BNO055で内蔵プロセッサを使って姿勢を測ろうとしたが,どうにも様子がおかしい。YAWはかろうじて測れているようだが,PitchとRollがクシ状にノイズが入る。なぜだ・・・そもそも前にシゲタと装置を作ったときは,正しく動作していたのか?いろいろ試した挙げ句,Davinci32Uにハンダ付け形式に戻すと,正常に値を取得できた。このセンサーは非常に動作がシビアなもののようだ。ブレッドボードとジャンプワイヤの組み合わせでは正常に測れないみたいだ。2018年にも同じことしてる。

試験面接AI#251125

共通事項
人格エディタ
試験AI

・人格をより多く登録できるようにした。
・5択に対応→プログラム・プロンプトを改造して対応。
・2問正解は対応が難しい→レアであるため非対応に。
・問題1を確認。不備があり整形。
  2つ正解を選ぶのは1つに修正。
  回答が誤っているもの,フォーマットに不備があるものを修正。

運用の様子は下記動画のとおり。

判定処理スクリプトは
https://kodamalab.sakura.ne.jp/WGL/AgentData/recordTalkReport.php
問題数が増えたため,不正解のみ表示するよう改変。30問運用で迷いがなければ10分ちょい→FB画面が不親切→結果をUnityのUIで表にしてもらうよう改変。ふぅ~

面接AI
(chara23)を使用。判定処理スクリプトは
https://kodamalab.sakura.ne.jp/WGL/AgentData/recordTalkReportC.php
キャラクタエディタにはあくまでカバーストーリーを書き,評価項目などは判定スクリプトに書くよう,切り分けを行うことで動作がある程度安定するように思う。フィードバック画面は,面接用にカスタムしたら少し見やすくなった。できれば,コメントのセルでは2行表示できるよう改変したいところだ。

こちらが人格設定↓
//////////////////////////////////////

あなたは理学療法士養成用の患者AIです。ユーザーである学生を相手に,理学療法外来を受診した二十二歳の女性患者として話してください。カバーストーリーは以下のとおりです。

主訴は腰部の痛みで、立位よりも座位で強くみられた。座位での痛みの程度は、腰部にNRSで八程度の強い痛みであった。現病歴として考えられることは、一年ほど前にバスケットボールの試合中に左膝のACLを損傷し、A病院にて左膝ACL再腱術が施行された。入院中に理学療法が処方され、筋力増強運動や関節可動域拡大運動、動作練習などを行った結果、膝関節の可動域は右側と同程度まで改善、筋力はMMTで右側が五なのに対して左側は四まで改善した。日常生活上は特別な問題なく過ごせそうだったため、一か月の入院中に理学療法を実施したのみで、外来では通院することなく理学療法は終了となった。その後三か月程度経過したころに、以前にはみられなかった腰部痛を感じるようになった。この腰部痛が徐々に強くなってきたため外来を受診した。現在大学生のため座って授業を受ける時間が長いのだが、長時間座位姿勢を保つことが難しいことに悩んでいる。また、膝の痛みなどはないものの、歩行中に膝崩れ(giving way)に対する不安感を感じるようになった。現在の体の状態は、立位姿勢では腰椎が平坦化し、フラットバックがみられ、また骨盤は後傾していた。前屈動作では、股関節よりも腰椎が容易に屈曲し、この動作で症状が増悪した。この時の痛みは腰部のみであり、下肢への放散痛はみられなかった。座位では腰椎が屈曲し、膝を伸展させると、さらに腰痛が増強した。今回整形外科でX線検査を受けたが骨には異常がなく、湿布と鎮痛薬が処方された。それに加えて理学療法が処方され、保存的に治療をすすめることになった。

 会話は敬体を基本とし、一人称は「わたし」、二人称は「あなた」で統一すること。平均100文字、標準偏差50文字、最大300文字程度で話してください。症状を説明する時、難しい言葉は使わずユーザーに詳しく聞かれたら平易な表現で答えるようにしてください。痛みの程度を聞かれるときはネガティブな表情を多めに出すようにしてください。ジェスチャーは、回答が「はい」のときはうなずき、「いいえ」のときに首をふるようにしてください。共感を示されたときや希望が持てそうな会話の時は最大限ポジティブな表情を示してください。「辛い」は「つらい」と、「痛い」は「いたい」と、ひらがなで表現してください。患者役なので専門用語は使わず,各種症状や既往歴についても,利用者(理学療法士を目指す学生)が行う質問に答える形で徐々に明らかにしてください。
//////////////////////////////////////

こちらが会話ログ評価AI用のプロンプト↓ 人格にセットされた症状に特化して,尋ねるべき項目を具体化してある。この方がきめ細やかな点数付けができる。ような気がする。

あなたは理学療法士教育の専門評価者です。
以下の会話ログは、ACL再建術後で慢性腰痛を呈する模擬患者エージェントと学生の10分間面接記録です。
学生が必要な情報を適切に聴取できているかを、次の5項目ごとに10点満点で採点し、短いコメントを付けてください。

1. あいさつと主訴の確認
・適切な挨拶とラポール形成があるか
・主訴(座位で強くなる腰痛)の明確な確認ができているか
・痛みの強度(NRS8)や最も困っている場面(授業中の長時間座位困難)を把握できているか

2. 痛みの詳細と経過
・発症時期(ACL術後約3か月)と経過(徐々に増悪)を聴取しているか
・痛みの特徴(座位で増悪、腰椎屈曲で悪化、放散痛なし)を確認しているか
・姿勢との関連(骨盤後傾、フラットバック)や誘発動作(膝伸展)を把握できているか

3. 既往歴・受診歴
・左膝ACL再建術の手術時期と術後リハ内容を聴取しているか
・改善状況(ROM正常、MMT右5/左4)と退院後の経過(外来リハなし)を確認できているか
・膝の現状(痛みなしだが giving way 不安)を把握しているか
・整形外科受診、X線で異常なし、湿布・鎮痛薬が処方されたことを確認しているか

4. 日常生活への影響
・長時間座位困難が学生生活や授業参加へ与える影響を聴取しているか
・立位・歩行・活動量への影響、膝崩れ不安の生活習慣への影響を確認できているか
・ADL・IADL・運動習慣に関する適切な質問が行われているか

5. まとめと今後のすすめかた
・収集した情報の要約ができているか
・今後の評価・理学療法方針(姿勢評価、体幹筋、運動連鎖、座位姿勢指導など)への言及があるか
・患者の不安軽減につながる適切なコミュニケーションで面接を締めくくれているか

出力形式は CSV (UTF-8) のみ。
行見出しは「AIによる評定結果:◯◯/50点」。
良好評価でコメント不要なら「特にありません」とする。
各コメントは最大200文字。
余計な文や解説は出力しない。

未解決事項
・ビルドして動作チェックしていない
・学習結果の記録が残せていない
・バリエーションがない

ECGアンプ改良の巻1

なぜか今更ECGアンプをブレットボード上に起こした。

とりあえずブザー音のBFから変更をしていく。
R-R感覚をブザーにするなり,音の高低で調整するなり。

また,Atomのボタンで制御変更にしたり,web上に呼吸法の呈示をするなどもやらなければ

とりあえずは平均HRで実装かな
ブザー回数「ピピピ」な感じにもできるよね

1,HRのタイミングを音でしらせ,R-R感覚の幅ごとに音の高さを変える
2,HRV
3,RMSSD

あと追加する機能は,内部ボタンで生波形を表示すること
他研究にないのは,HR・RMSSD・RR間隔をwebインターフェースや内部ボタンで切り替えて,任意の測定指標を基にBF訓練を行うこと

コインECG251116

23年秋に,永松や津崎が作ったECGアンプを回収。波形を測定した。ブレッドボードの出来が悪い。手直ししてLT1167をAD8226 に入れ替えよう。

ピン配置は・・・ほう・・・。これはブレッドボード上で入れ替えられそうだね。ブレッドボードの配線を入れ替えて測定してみる。

こころなしかLT1167で測ったものよりきれいに感じる。・・・まぁちょっとわからないか。心電図回路の電源をコイン電池に変え,AD変換器を取り外し,コンピュータをnRf52840に入れ替えて測ると,無事に測れました。これで消費電流がどれくらいになってるのかわからないが,とりあえず動作するところまではきた。TLE2426が消費電流が多くコイン電池向きじゃないとのことで,変える必要がある。

nRf52840はちょっとクセがある。一度書き込むとシリアルポートが消失し,書き込めなくなる。これは,書き込んだプログラムがシリアル通信しない場合,「いらないよね?」とシリアル通信をOFFにされてしまうようだ。リセットボタンを二回早押しすると回復する。維持したい場合は,シリアル通信をプログラムに追加すればよいのだが,Adafruit_TinyUSBライブラリを入れないとダメなようだ。

#include <Adafruit_TinyUSB.h>  // XIAO nRF52840系でSerialを使うため

// サンプリング間隔(マイクロ秒)
// 1000us = 1kHzサンプリング
const uint32_t SAMPLE_INTERVAL_US = 2000;
const uint32_t threshold = 1900;

uint32_t lastMicros = 0;

void setup() {
  // LED(お好みで)
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);  // XIAOはHIGHで消灯のことが多い

  // USBシリアル開始
  Serial.begin(115200);
  // 開発中はPC接続を待ってもよい
  while (!Serial) {
    delay(10);
  }

  // ADC分解能を12bitに(0〜4095)
  analogReadResolution(12);
}

void loop() {
  uint32_t now = micros();

  // 一定間隔ごとにサンプリング
  if (now - lastMicros >= SAMPLE_INTERVAL_US) {
    lastMicros += SAMPLE_INTERVAL_US;  // ドリフトを抑える書き方

    // ADCチャネル0(A0ピン)の読み取り
    int value = analogRead(A0);

    // タイムスタンプ[us], ADC値 をCSV形式で送信
    //Serial.print(now);     // マイクロ秒タイムスタンプ
    //Serial.print(",");
    Serial.print(3000);
    Serial.print(",");
    Serial.print(1000);
    Serial.print(",");
    Serial.print(threshold);
    Serial.print(",");
    Serial.println(value); // 0〜4095(12bit)

    if(value>threshold){digitalWrite(LED_BUILTIN, LOW); }
    else{digitalWrite(LED_BUILTIN, HIGH); }

  }
}

M5StickCで角度

M5StickCで角度を取得し,振動デバイスに出力する。

// M5StickC 初期型(MPU6886) Pitch / Roll 取得デモ
// 50Hz更新,相補フィルタ(α=0.98)
// 画面表示 + シリアルCSV出力(Pitch,Roll)

#include <M5StickC.h>

const float alpha = 0.98f;      // 相補フィルタ係数(0.95〜0.99で調整)
const uint32_t dt_ms = 20;      // サンプリング周期 20ms → 50Hz
const float dt = dt_ms / 1000.0f;

float pitch = 0.0f;             // 融合後の角度[deg]
float roll  = 0.0f;

void setup() {
  M5.begin();
  M5.IMU.Init();                // MPU6886 初期化
  M5.Lcd.setRotation(3);        // 横向き
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.println("M5StickC IMU");
  M5.Lcd.println("Pitch/Roll");

  Serial.begin(115200);
  while (!Serial) { delay(10); }

  // 初期姿勢を加速度ベースで推定して,初期値に採用
  float ax, ay, az;
  M5.IMU.getAccelData(&ax, &ay, &az);        // [g]
  float pitchAcc = atan2f(-ax, sqrtf(ay*ay + az*az)) * 180.0f / PI;
  float rollAcc  = atan2f( ay, az ) * 180.0f / PI;
  pitch = pitchAcc;
  roll  = rollAcc;

  delay(500);
}

void loop() {
  // センサ取得
  float ax, ay, az;           // 加速度[g]
  float gx, gy, gz;           // 角速度[deg/s]
  M5.IMU.getAccelData(&ax, &ay, &az);
  M5.IMU.getGyroData(&gx, &gy, &gz);

  // 加速度からの姿勢角(重力のみ仮定)
  float pitchAcc = atan2f(-ax, sqrtf(ay*ay + az*az)) * 180.0f / PI;
  float rollAcc  = atan2f( ay, az ) * 180.0f / PI;

  // ジャイロ積分(軸対応:MPU6886はおおむね gx→Roll, gy→Pitch)
  float pitchGyro = pitch + gy * dt;
  float rollGyro  = roll  + gx * dt;

  // 相補フィルタ融合
  pitch = alpha * pitchGyro + (1.0f - alpha) * pitchAcc;
  roll  = alpha * rollGyro  + (1.0f - alpha) * rollAcc;

  // 画面表示
  M5.Lcd.fillRect(0, 40, 160, 40, BLACK);
  M5.Lcd.setCursor(0, 40);
  M5.Lcd.printf("Pitch:%6.2f deg\n", pitch);
  M5.Lcd.printf("Roll :%6.2f deg\n", roll);

  // シリアルCSV(Pitch,Roll)
  Serial.print(pitch, 3);
  Serial.print(",");
  Serial.println(roll, 3);

  delay(dt_ms);
}
// M5StickC 初期型(MPU6886) Pitch / Roll 取得+Pitch>10°でG26出力
// 相補フィルタ(α=0.98) / 50Hz / ヒステリシス: ON 10°, OFF 8°

#include <M5StickC.h>

const int MOTOR_PIN = 26;          // G26 にモータードライバの入力を接続(直結は不可)
const float alpha = 0.98f;         // 相補フィルタ係数
const uint32_t dt_ms = 20;         // 50Hz
const float dt = dt_ms / 1000.0f;

const float PITCH_ON_DEG  = 10.0f; // これを超えたらON
const float PITCH_OFF_DEG = 8.0f;  // これを下回ったらOFF(ヒステリシス)

float pitch = 0.0f;
float roll  = 0.0f;
bool motorOn = false;

void setup() {
  M5.begin();
  M5.IMU.Init();
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.println("M5StickC IMU");
  M5.Lcd.println("Pitch->G26");

  Serial.begin(115200);
  while (!Serial) delay(10);

  // モーターピン初期化
  pinMode(MOTOR_PIN, OUTPUT);
  digitalWrite(MOTOR_PIN, LOW);   // 初期はOFF

  // 初期姿勢(加速度ベース)
  float ax, ay, az;
  M5.IMU.getAccelData(&ax, &ay, &az);
  float pitchAcc = atan2f(-ax, sqrtf(ay*ay + az*az)) * 180.0f / PI;
  float rollAcc  = atan2f( ay, az ) * 180.0f / PI;
  pitch = pitchAcc;
  roll  = rollAcc;

  delay(300);
}

void loop() {
  // センサ取得
  float ax, ay, az;  // [g]
  float gx, gy, gz;  // [deg/s]
  M5.IMU.getAccelData(&ax, &ay, &az);
  M5.IMU.getGyroData(&gx, &gy, &gz);

  // 姿勢角(加速度)
  float pitchAcc = atan2f(-ax, sqrtf(ay*ay + az*az)) * 180.0f / PI;
  float rollAcc  = atan2f( ay, az ) * 180.0f / PI;

  // ジャイロ積分
  float pitchGyro = pitch + gy * dt;  // gy ≈ pitch軸
  float rollGyro  = roll  + gx * dt;  // gx ≈ roll軸

  // 相補フィルタ融合
  pitch = alpha * pitchGyro + (1.0f - alpha) * pitchAcc;
  roll  = alpha * rollGyro  + (1.0f - alpha) * rollAcc;

  // —— Pitchしきい値でG26制御(ヒステリシスあり)——
  if (!motorOn && pitch > PITCH_ON_DEG) {
    motorOn = true;
    digitalWrite(MOTOR_PIN, HIGH);
  } else if (motorOn && pitch < PITCH_OFF_DEG) {
    motorOn = false;
    digitalWrite(MOTOR_PIN, LOW);
  }

  // 表示&ログ
  M5.Lcd.fillRect(0, 40, 160, 50, BLACK);
  M5.Lcd.setCursor(0, 40);
  M5.Lcd.printf("Pitch:%6.2f deg\n", pitch);
  M5.Lcd.printf("Roll :%6.2f deg\n", roll);
  M5.Lcd.printf("MOTOR:%s    \n", motorOn ? "ON " : "OFF");

  Serial.print(pitch, 3);
  Serial.print(",");
  Serial.print(roll, 3);
  Serial.print(",");
  Serial.println(motorOn ? 1 : 0);

  delay(dt_ms);
}
// M5StickC 初期型(MPU6886) Pitch / Roll 取得+角度帯域でG26出力パターン
#include <M5StickC.h>

const int MOTOR_PIN = 26;          // モータードライバ入力(直結不可)
const float alpha = 0.98f;         // 相補フィルタ係数
const uint32_t dt_ms = 20;         // 50Hz
const float dt = dt_ms / 1000.0f;

// 角度しきい値(度):必要に応じて設定してください
float TH_A = 5.0f;
float TH_B = 10.0f;
float TH_C = 15.0f;
float TH_D = 20.0f;

// パターン定義(ONは常に100ms固定)
const uint16_t ON_MS  = 100;
const uint16_t OFF_A  = 500;  // A〜B未満
const uint16_t OFF_B  = 300;  // B〜C未満
const uint16_t OFF_C  = 100;  // C〜D未満

float pitch = 0.0f;
float roll  = 0.0f;

// -------- サブルーチン:角度に応じて出力を駆動(非ブロッキング)--------
enum Band { BAND_OFF, BAND_A, BAND_B, BAND_C, BAND_ON };
Band currentBand = BAND_OFF;
bool phaseOn = false;
unsigned long phaseStartMs = 0;

Band classifyBand(float ang) {
  if (ang < TH_A)          return BAND_OFF;
  else if (ang < TH_B)     return BAND_A;
  else if (ang < TH_C)     return BAND_B;
  else if (ang < TH_D)     return BAND_C;
  else                     return BAND_ON;
}

// 指定した角度に従って G26 を点滅/常時ON/OFF させる
void driveOutputByAngle(float angDeg) {
  Band band = classifyBand(angDeg);
  unsigned long now = millis();

  // 帯域が変わったらフェーズをリセット(各帯域は100ms ON から開始)
  if (band != currentBand) {
    currentBand = band;
    phaseOn = true;                  // まずはON
    phaseStartMs = now;
    if (band == BAND_OFF) {
      digitalWrite(MOTOR_PIN, LOW);
    } else if (band == BAND_ON) {
      digitalWrite(MOTOR_PIN, HIGH);
    } else {
      digitalWrite(MOTOR_PIN, HIGH); // 点滅帯域の初回ON
    }
  }

  // 各帯域の動作
  switch (currentBand) {
    case BAND_OFF:
      // ずっとOFF
      digitalWrite(MOTOR_PIN, LOW);
      break;

    case BAND_ON:
      // ずっとON
      digitalWrite(MOTOR_PIN, HIGH);
      break;

    case BAND_A: {
      // 100ms ON / 500ms OFF
      uint16_t offMs = OFF_A;
      if (phaseOn && (now - phaseStartMs >= ON_MS)) {
        phaseOn = false; phaseStartMs = now; digitalWrite(MOTOR_PIN, LOW);
      } else if (!phaseOn && (now - phaseStartMs >= offMs)) {
        phaseOn = true;  phaseStartMs = now; digitalWrite(MOTOR_PIN, HIGH);
      }
    } break;

    case BAND_B: {
      // 100ms ON / 300ms OFF
      uint16_t offMs = OFF_B;
      if (phaseOn && (now - phaseStartMs >= ON_MS)) {
        phaseOn = false; phaseStartMs = now; digitalWrite(MOTOR_PIN, LOW);
      } else if (!phaseOn && (now - phaseStartMs >= offMs)) {
        phaseOn = true;  phaseStartMs = now; digitalWrite(MOTOR_PIN, HIGH);
      }
    } break;

    case BAND_C: {
      // 100ms ON / 100ms OFF
      uint16_t offMs = OFF_C;
      if (phaseOn && (now - phaseStartMs >= ON_MS)) {
        phaseOn = false; phaseStartMs = now; digitalWrite(MOTOR_PIN, LOW);
      } else if (!phaseOn && (now - phaseStartMs >= offMs)) {
        phaseOn = true;  phaseStartMs = now; digitalWrite(MOTOR_PIN, HIGH);
      }
    } break;
  }
}
// -------- サブルーチンここまで --------

void setup() {
  M5.begin();
  M5.IMU.Init();
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.println("M5StickC IMU");
  M5.Lcd.println("Angle->G26");

  Serial.begin(115200);
  while (!Serial) delay(10);

  pinMode(MOTOR_PIN, OUTPUT);
  digitalWrite(MOTOR_PIN, LOW);

  // 初期姿勢(加速度ベース)
  float ax, ay, az;
  M5.IMU.getAccelData(&ax, &ay, &az);
  float pitchAcc = atan2f(-ax, sqrtf(ay*ay + az*az)) * 180.0f / PI;
  float rollAcc  = atan2f( ay, az ) * 180.0f / PI;
  pitch = pitchAcc;
  roll  = rollAcc;

  delay(300);
}

void loop() {
  // センサ取得
  float ax, ay, az;  // [g]
  float gx, gy, gz;  // [deg/s]
  M5.IMU.getAccelData(&ax, &ay, &az);
  M5.IMU.getGyroData(&gx, &gy, &gz);

  // 姿勢角(加速度)
  float pitchAcc = atan2f(-ax, sqrtf(ay*ay + az*az)) * 180.0f / PI;
  float rollAcc  = atan2f( ay, az ) * 180.0f / PI;

  // ジャイロ積分
  float pitchGyro = pitch + gy * dt;  // gy ≈ pitch軸
  float rollGyro  = roll  + gx * dt;  // gx ≈ roll軸

  // 相補フィルタ融合
  pitch = alpha * pitchGyro + (1.0f - alpha) * pitchAcc;
  roll  = alpha * rollGyro  + (1.0f - alpha) * rollAcc;

  // —— ここで角度に応じた出力を実行(Pitchを使用)——
  driveOutputByAngle(pitch);
  // driveOutputByAngle(roll);  // Rollで判定したい場合はこちら

  // 画面表示&ログ
  M5.Lcd.fillRect(0, 40, 160, 60, BLACK);
  M5.Lcd.setCursor(0, 40);
  M5.Lcd.printf("Pitch:%6.2f deg\n", pitch);
  M5.Lcd.printf("Roll :%6.2f deg\n", roll);

  Serial.print(pitch, 3);
  Serial.print(",");
  Serial.print(roll, 3);
  Serial.print(",");
  Serial.println((currentBand==BAND_ON) ? 2 : (currentBand==BAND_OFF ? 0 : 1)); // 2=ON連続,1=点滅,0=OFF

  delay(dt_ms);
}

Arduinoで振動を出す

高校生用の講座。Arduino開発環境は1.8.19を入れるのが良い。
インストール手順の動画

購入した振動デバイスはこれ↓

PWMは振動の強さで段階を表現。→やってみたがわかりにくい。
Burstは振動の時間で段階を表現。→こちらが無難か。

/*
PWM_shaker.ino  
PWM出力を8段階で徐々に強くするスケッチ(シリアル出力付き)
  出力ピン: 11番
  各段階: 2秒出力 → 1秒休止
  シリアル通信: 115200 bps
*/

const int pwmPin = 11;
const int numSteps = 8;
const int maxPWM = 255;
const int delayOn = 2000;  // 出力時間(ms)
const int delayOff = 1000; // 休止時間(ms)

void setup() {
  pinMode(pwmPin, OUTPUT);
  Serial.begin(115200);
  Serial.println("PWM gradual output start");
}

void loop() {
  for (int i = 0; i < numSteps; i++) {
    int pwmValue = map(i, 0, numSteps - 1, 0, maxPWM);
    analogWrite(pwmPin, pwmValue);

    Serial.print("Step ");
    Serial.print(i + 1);
    Serial.print(" / ");
    Serial.print(numSteps);
    Serial.print(" : PWM = ");
    Serial.println(pwmValue);

    delay(delayOn);   // 2秒間出力
    analogWrite(pwmPin, 0);
    delay(delayOff);  // 1秒休止
  }
}
/*
  Burst_shaker.ino
  振動モーター制御:傾き0〜8段階(1〜8でOFFが900→0msに減少)
  出力ピン: 11
  シリアル: 115200 bps
  各段階: 4秒動作 + 1秒休み
  ON中のPWMは常に255
*/

const int pwmPin = 11;
const int numLevels = 9;                 // 0〜8
const int onMs = 100;                    // ON時間は固定100ms
const unsigned long runWindow = 4000;    // 各段階の動作時間(ms)
const unsigned long pauseWindow = 1000;  // 段階間の休止(ms)

void setup() {
  pinMode(pwmPin, OUTPUT);
  analogWrite(pwmPin, 0);
  Serial.begin(115200);
  Serial.println("Vibration feedback (OFF 900->0ms) start");
}

void loop() {
  for (int level = 0; level < numLevels; level++) {
    unsigned long start = millis();

    if (level == 0) {
      // 無振動
      Serial.println("Level 0: No vibration (4000ms silence)");
      analogWrite(pwmPin, 0);
      while (millis() - start < runWindow) delay(10);

    } else {
      // 1〜8段階:OFF時間 900→0ms
      int offMs = map(level, 1, 8, 900, 0);

      Serial.print("Level ");
      Serial.print(level);
      Serial.print(": ");
      Serial.print(onMs);
      Serial.print("ms ON / ");
      Serial.print(offMs);
      if (offMs == 0) Serial.print("ms OFF (ほぼ連続)");
      Serial.println();

      while (millis() - start < runWindow) {
        // ON
        analogWrite(pwmPin, 255);
        delay(onMs);

        // OFF(offMs==0のときは極短時間で次のONへ)
        analogWrite(pwmPin, 0);
        if (offMs > 0) delay(offMs);
      }
    }

    // 段階間休止
    analogWrite(pwmPin, 0);
    Serial.println("Pause 1000ms\n");
    delay(pauseWindow);
  }
}

ギャンブル研究_レビュー


*卒論の導入と考察に使うギャンブル先行研究をメモする。
*チャッピーさんの提案したポジティブ導入案はこちら

【心理的側面】
de Vries 2008:ポジティブな気分が意思決定を改善 – オランダのde Vriesらの研究では、アイオワギャンブル課題(IGT)を用いて気分が意思決定に与える影響を検討しました。実験の結果、ポジティブな気分状態ではネガティブな気分状態よりも初期段階で有利なデッキを選択する傾向が強まり、意思決定成績が向上しました。これはポジティブ気分が「直感(gut feeling)」に基づく判断を促し、ギャンブル課題の初期学習を助けるためと考察されていますcambridge.orgcambridge.org

Goldstein 2016:Goldsteinら(2016)は,若年成人ギャンブラーにおいて,気分調整(mood regulation)動機がギャンブル行動に強く関係することを示した。特にオンラインギャンブラーでは,ネガティブ気分や退屈感の対処としてギャンブルが行われやすく,一方で非オンラインギャンブルはポジティブ気分や社交的快楽を高める手段として行われる傾向があった。pmc.ncbi.nlm.nih.govresearchgate.net

Parke 2019:ギャンブル参加が満たす心理的ニーズ
Parkeら(2019)は,イギリス・スウェーデン・オランダのオンラインギャンブラー1,416名を対象に,ギャンブルが満たす心理的欲求を分析した。回答者は,ギャンブルによって**「挑戦と熟達(challenge & mastery)」「自己肯定(self-affirmation)」「リスクと興奮(risk & excitement)」「気晴らし・現実逃避(detachment)」「社会的つながり(affiliation)」の五つの心理的ニーズがある程度満たされると報告した。
特に
ポーカー参加者は挑戦・自己肯定・社会的つながりの満足度が高く,スロット遊技者は現実逃避・リラックス(detachment)のニーズが高かった。さらに,スポーツベッティングおよびポーカー参加者はスロット遊技者より幸福度が高い傾向を示したが,ストレス水準はギャンブル形式による差はみられなかった。
これらの結果から,ギャンブルは適度に行われる場合,ストレス解消・刺激提供・社会的交流などの
肯定的な心理的機能を果たす可能性**が示唆される。

出典:Parke, J., Williams, R. J., & Schofield, P. (2019). Exploring psychological need satisfaction from gambling participation and the moderating influence of game preferences. International Gambling Studies, 19(3), 508–531. https://doi.org/10.1080/14459795.2019.1633381

Dixon 2010:スロットマシン遊技がもたらす高揚感と幸福感 – Dixonらは施設入所高齢者3名を対象に、模擬スロットマシン遊技中の幸福度を客観指標で測定しました。その結果、3名全員でギャンブル遊技中の「幸福」行動指標の出現率がベースライン時より明らかに増加し、遊技によって一時的に幸福感が高まることが確認されましたpubmed.ncbi.nlm.nih.gov。この効果は介入直後のみで30分後にはベースラインに戻りましたが、スロットマシン遊技が高齢者に即時的なポジティブ情動をもたらすことを示す結果ですpubmed.ncbi.nlm.nih.gov

APA形式の出典は次のとおりです:
Dixon, M. R., Nastally, B. L., Jackson, J. E., & Habib, R. (2010). The effect of simulated gambling on the happiness of nursing home residents. Journal of Applied Behavior Analysis, 43(3), 531–535. https://doi.org/10.1901/jaba.2010.43-531

Blackman 2019:適度なギャンブルと主観的幸福度 – オーストラリアのBlackmanらは成人約1,500名を調査し、ギャンブル頻度と主観的幸福度の関係を分析しました。その結果、問題ギャンブルでない人ではギャンブル参加頻度が高いほど生活満足度などウェルビーイング指標がむしろ高いことが分かりましたgreo.ca。特に問題を抱えないレクリエーション層のギャンブラーはギャンブル未経験者より幸福度が有意に高くgreo.ca、一方でギャンブル問題が深刻になるにつれて幸福度は低下しましたgreo.ca。適度なギャンブル行動それ自体は生活の質や幸福感を向上させ得ることを示す知見です。

Kim,W 2020:中国系高齢移民における社交的ギャンブルの効用 – Kimの民族誌的研究では、米国在住の中国系高齢者が仲間とマージャンやトランプ賭博を行うことで、孤独感の緩和や文化的なつながりの維持に役立てていることが報告されました。低賭け金の「健康的麻雀」は高齢移民にとって貴重な社交機会と認知刺激の場となっており、適度なギャンブルがコミュニティへの参加意識や心理的安定感を高めるポジティブな側面が描写されています。

cakar,M 2025:レクリエーショナルゲーム介入による幸福感向上 – トルコのCakarらは、高齢者施設の入居者を対象にビンゴを含むレクリエーションゲーム介入を8週間実施しました。介入群では対照群と比べ、幸福度と人生満足度が大幅に上昇bmcpsychology.biomedcentral.com孤独感(情緒的・社会的孤独)も有意に減少しましたbmcpsychology.biomedcentral.com。身体症状(体調不良の訴え)には大きな変化がありませんでしたが、これらの結果からゲーム活動による高齢者の心理的福利の向上効果が示唆されます。

  • ビンゴや語彙ゲームなどの軽度なレクリエーション活動でも,幸福感・人生満足度の改善および孤独感の緩和が見られる。

  • ゲーム活動が社会的交流と心理的活性化を促すことで,高齢者の精神的健康に寄与する可能性を示唆。

  • 身体的症状には直接的効果は少ないが,心理的ウェルビーイングの向上効果は明確

Cheng,G 2021:高齢者の遊技活動と精神的安定 – 中国の縦断研究では、趣味として麻雀やチェスなどグループ遊戯に参加する高齢者は、非参加者より認知機能が高く抑うつ傾向が低いことが示されていますbmcgeriatr.biomedcentral.com。例えばある疫学調査では、麻雀を含むグループ活動に参加していた高齢者は認知テスト成績が良好で、うつリスクも低減していました。このように社交的ゲーム参加が高齢者のメンタルヘルスと認知機能の双方に保護的効果を持つ可能性があります。

Xu,S 2019:適度な賭け事とストレス解消効果 – 賭け事が日常のストレスや退屈を紛らわすコーピング手段となり得ることも指摘されています。例えばある研究では、ギャンブル参加者の多くが「気分転換」「現実逃避」を主目的に挙げておりgreo.ca、スロットマシン遊技者はリラックス効果を求めている傾向が示唆されましたgreo.ca。適度なギャンブル行為による興奮や集中は日常生活からの一時的な解放感を与え、心理的ストレスを軽減するポジティブ効果を持ちうると考えられます。

  • スロットなどのレクリエーション的ギャンブルは,現実逃避・リラックス・退屈解消といった“気分転換機能”を持つ

  • 一方,ポーカーやスポーツベッティングのような競技的ギャンブルは,挑戦・達成・社会的自己実現の場となっている。

  • 適度な範囲のギャンブル参加は,心理的ストレス軽減やポジティブ情動の喚起に寄与する可能性が示唆される。

【身体的側面ー自律神経など】
Dai 2025:カード・麻雀遊技と死亡リスク低下 – Daiらの中国高齢者約3万人を対象としたコホート研究では、ほぼ毎日トランプや麻雀を楽しむ人は、全く遊ばない人に比べ死亡リスクが12%低下し、週1回程度でも有意なリスク低減がみられました(HR≈0.84)
bmcgeriatr.biomedcentral.com
。追跡期間中一貫して遊技を続けた高齢者では死亡リスクが最も低く(HR=0.67)
bmcgeriatr.biomedcentral.com
、特に80歳以上で保護効果が顕著でした。レジャーとしてのカード・麻雀遊技が高齢者の寿命や健康維持に寄与する可能性が示された重要な疫学的知見です
Dai, X., et al. (2025). Playing cards/mahjong and risk of all-cause mortality among older Chinese adults: Evidence from the Chinese Longitudinal Healthy Longevity Survey. BMC Geriatrics, 25(1).

Desai 2004:高齢者のレクリエーション・ギャンブルと健康 – Desaiらの全米調査研究(Yale大学)では、過去1年に娯楽としてギャンブルを楽しんだ65歳以上高齢者は、非ギャンブル高齢者に比べて主観的健康状態が良好で、うつ症状が少なく、社会的支援ネットワークも充実していることが明らかになりましたpmc.ncbi.nlm.nih.gov。著者らは「適度なギャンブル活動に伴う身体的活動、社会交流、認知的刺激が健康な老化に寄与している可能性がある」と述べていますnews.yale.edu。ただし高齢者は依存に陥らない範囲で楽しむことが重要とされています。

【認知的側面】
篠原 2014 :パチスロ訓練による中高年の認知機能向上 – 篠原菊紀らは、中高年者に4週間のパチスロ(スロットマシン)練習を課し、前頭葉・頭頂葉の脳活動の活性化と認知機能の改善を確認しました。ストレス下で活動しやすい右前頭部の活動低下も観察され、低ストレスで脳を鍛える可能性が示唆されていますprovanet.co.jp

Sobel 2001:ビンゴゲームとアルツハイマー患者の認知機能 – Sobelはアルツハイマー病患者を対象に、ビンゴ遊びによる認知刺激効果を検証しました。その結果、ビンゴによる認知的刺激によってBoston Naming Test(呼称課題)や単語リコール課題の成績が有意に向上し、一方で同時間の身体活動では有意な改善がみられませんでしたpubmed.ncbi.nlm.nih.gov。シンプルなゲームであるビンゴがアルツハイマー患者の日常管理に有益となる可能性が示されていますpubmed.ncbi.nlm.nih.gov

Robeles 2019:認知症高齢者に対するビンゴ介入の効果 – フィリピンのRoblesらは軽度認知症の高齢者15名を対象に7週間のビンゴ介入を実施し、介入前後で認知機能を評価しました。その結果、記憶・思考力・見当識・言語指示理解といった領域で有意な向上がみられ、継続的なビンゴ遊びはこれら認知機能の改善に効果的でしたstti.confex.comstti.confex.com。ビンゴは参加者に大きな楽しみと交流促進といった心理社会的効果も確認された。施設でのレクリエーション活動として導入が推奨される。stti.confex.com

Zhu 2024:麻雀ゲームと高齢者の認知機能維持 – Zhuらは、中国の高齢者7,500名超を10年間追跡し、麻雀を定期的に遊ぶ人ほど認知機能検査(MMSE)スコアが高く、年齢による認知低下の進行が緩やかであることを発見しましたopus.lib.uts.edu.auopus.lib.uts.edu.au。麻雀プレイ頻度の低下はMMSEスコア低下と有意に関連し、逆に高頻度で麻雀を楽しむ高齢者は認知機能の維持・向上に寄与する可能性が示されていますopus.lib.uts.edu.auopus.lib.uts.edu.au

Tse 2024:麻雀ゲームの認知・心理効果に関するレビュー – Tseらは東西の研究53件を包括検討し、麻雀遊技が高齢者にもたらす認知・心理面の影響を整理しました。その結果、観察研究では麻雀経験が豊富なほど認知機能・心理機能・日常動作能力が良好である傾向が示されましたpubmed.ncbi.nlm.nih.gov。さらに介入研究から、定期的な麻雀遊技は全般的な認知能力や短期記憶を高め、うつ症状を軽減しうることが報告されていますpubmed.ncbi.nlm.nih.gov。以上より、麻雀は高齢者の認知症予防や気分改善に有望なレクリエーションとなり得ると結論づけています。

Zhang 2020:軽度認知障害高齢者への麻雀トレーニング – Zhangらは軽度認知障害(MCI)の高齢者56名を対象に、週3回・計12週間の麻雀プログラムを実施しました。介入群は対照群と比較して実行機能(MoCA-Bスコア)や注意力テスト(STT)、日常生活動作(FAQ)に有意な改善を示しpubmed.ncbi.nlm.nih.gov麻雀訓練によってMCI高齢者の認知低下進行を遅らせ得ることが示唆されましたpubmed.ncbi.nlm.nih.gov。麻雀は安価で手軽な認知レクリエーションであり、脳外傷後の認知リハビリなどへの応用可能性も論じられています。

Verghese 2003:趣味的ギャンブルと認知症リスク低減 – Vergheseらの前向き研究では、読書やボードゲーム(トランプ等)ギャンブル性を含むボードゲームといった知的レジャー活動への定期的参加が高齢者の認知症発症リスクを有意に低下させることが示されましたsemanticscholar.org。週1回以上ゲームを楽しむグループは、何もしないグループに比べ認知症発症率が低く、知的な遊戯による脳の刺激が予防に繋がると考えられますsemanticscholar.org。この研究はギャンブル性のあるゲームも含め、知的娯楽が認知症リスクを下げ得ることを示唆した代表的な報告です。

Akbaraly 2009:積極的な外出遊戯と認知症予防 – Akbaralyらのフランス「3都市研究」では、自宅に閉じこもらず能動的なレジャー(例:麻雀やカードゲーム、外出しての趣味)に積極的な高齢者ほどアルツハイマー型認知症の発症率が低いことが報告されました。日々内容が変わる刺激的な遊びは有酸素運動以上にアミロイドβによる記憶障害を抑制しうる可能性も動物実験で示されており、ワクワクするギャンブルゲームの適度な刺激が脳の健康維持に役立つメカニズムが示唆されています。https://www.neurology.org/doi/abs/10.1212/wnl.0b013e3181b7849b

過去の卒論

ここでは過去に提出された卒論をPDF形式で提供します。

2023年度
仮想空間における虚偽検出 20HP232_Takeda
ドローン操作が心身に与える影響 20HP110_Oguri
VR環境でストレス反応は緩和されるか 20HP238_Nagamatsu
性格特性と催眠効果の関係 20HP149_Mitsudome
事前の動物動画視聴が心身へ及ぼす影響 20HP217_Kawada
内受容感覚が皮膚温バイオフィードバック訓練に与える影響 20HP225_Shigeta(抄録)


2022年度
(学部)
ネタバレの有無が映画視聴時の感情状態および生体反応に及ぼす影響 19HP107_udagawa
動物動画の視聴ストレス緩和効果の検討 19HP114_kataoka
VR動画を用いた大学内教室の印象評定 19HP115_kanaya
仮想空間上の自然でストレス緩和は可能か 19HP131_sugaya
エアロバイクゲームが心身に与える影響 19HP160_watanabe
外観デザインが製品印象評価に及ぼす影響について 19HP240_nihei
コンピューターゲームにおいてUIがゲーム体験に及ぼす影響 19HP252_matsui
ギャンブル課題における勝敗が心理・生理反応に与える影響 19HP257_yoshida
VRホラーゲームが心身に与える影響 191P258_yoshida
(修士)
ウェアラブルデバイスを用いた運動介入が心身に与える影響 21MH208_Tokunaga
仮想空間における一過性運動時の探索状況の有無が心臓血管反応と心理指標に与える影響 21MH202_Urushi


2021年度
スマートフォンゲームが人に与える影響 16HP137_yamamoto
PCおよびVRによるホラー動画視聴中の感情変化 17HP101_aida
お菓子の有無と味が映像視聴時の感情と印象に及ぼす影響 18HP101_aihara
人物の有無が広告の好意度と再認に与える影響 18HP113_onota
人物イラストが印象評定と行動に及ぼす影響  18HP122_kuriyama
3Dキャラクターの外見が攻撃者の罪悪感に与える影響 18HP123_kono
ゲームが心理に及ぼす影響と今後の向き合い方  18HP202_abiko
自然環境をテーマとしたデジタル刺激による回復効果の検討 18HP206_ito
リズムパターンが心身に及ぼす影響 18HP210_uchiyama
映像の有無が人物の特性推論に及ぼす影響 18HP221_kinoshita
末梢皮膚温を利用したオンラインカウンセリングの検討 18HP230_sato
ビデオ通話時の抵抗感に対して性格が及ぼす影響 18HP249_baba


2020年度
リモートコミュニケーションにおける映像の有無が課題遂行や心理状態に及ぼす影響 17HP110_omura
色とテンポの組み合わせが映像に対する印象と感情に及ぼす影響 17HP114_kato
ゲームにより生じる感情と性格の関係性について 17HP119_saito
ハーディネス及びソーシャルサポート特性が感情喚起に与える影響 17HP206_urushi
自己意識及び同調行動が大学生の服装選択に及ぼす影響 17HP218_saito
映像と音楽の相互作用によるリラクセーション効果の検討 17HP229_tokunaga


2019年度
レースゲーム中の視点条件の違いによる生体反応への影響 16HP119_chida
音楽とストレス課題の組み合わせおよび音楽の知名度が心身に与える影響の検討 16HP121_tonai
呼吸制御教示によるパター課題のスコアと生理反応の変化 16HP132_hoshi
皮膚温測定装置を使った心身相関教育プログラム 16HP205_ouchi
ストリートダンス動画視聴時における発汗及び視線の動向 16HP219_teshigahara
映像刺激の差異が自律神経活動及び再認識に及ぼす影響の検討 16HP227_hasegawa
学習状況における発汗活動にゲームフィケーションが及ぼす影響 16HP238_yoshida


2018年度
VRエアロバイクが心身に与える影響 15HP202_akiyama
教授方法の違いが参加者の授業体験と覚醒水準に与える影響 15HP211_kasai
アニメーション作品のエンディングの有無が視聴体験に与える影響 15HP244_watanabe
ローコスト心拍計を用いた休息機能の測定 15HP235_hori
塗り絵が心身に及ぼす影響 15HP212_kanai
高校生を対象にした心身相関現象体験プログラムの実施 15HP138_miyata
ラジコンカーを用いた疑似運転体験による身体反応 15HP107_itou
VR空間内でのFB・視野情報の違いがユーザーインターフェースに及ぼす影響の検討15HP230_negishi
プレイヤー数がゲーム時の自律系生体反応にあたえる影響15HP232_hurukawa


2017年度
女性の化粧の有無が視線と生体反応に及ぼす影響14HP115_kadokura
回想における表現の違いが生理・心理指標に与える影響 14HP104_ishii
お菓子の有無が会話中の感情・生体反応におよぼす影響 14HP125_satou
ストレス負荷後の水槽鑑賞が生理・心理指標に及ぼす影響 14HP139_noguchi
仮想空間内において3Dキャラクターの視線や表情が罪悪感に及ぼす影響 14HP127_sugahara
異性画像の魅力度が視線と心拍に与える影響 14HP129_takashima
スマホゲームがもたらすフロー状態における心身反応 14HP154_watanabe
多人数バイオフィードバックが心身に与える影響 14HP205_itakura
私的自意識が評価を伴う課題を行う際に心身に与える影響 14HP249_mori
アイドル画像視聴がもたらす心身の変化 14HP251_yasuda


2016年度
映像視聴における風刺激が感情に及ぼす影響 13HP203_ARAI
人格特性が会話中の皮膚温におよぼす影響 13HP238_TAHARA
同一作品の提示方法の違いが心身に与える影響 13HP150_YOKOI
座禅が自律神経機能および認知課題の成績に与える影響 13HP137_NAGATA
子どもを対象にした心身相関現象体験プログラムの作成と運用 13HP236_SUZUKI
カウントダウンの有無がボール投げ課題中の心拍数に与える影響 13HP109_ISHIKAWA
ダーツを用いた競争課題中の皮膚温変化 13HP201_ADACHI
会話内容が生理・心理指標に与えるストレス負荷の検討 13HP217_KANEKO
パズルゲーム課題時の発話の有無が生体反応および主観感情に及ぼす影響の検討 13HP121_KOZUKI
音楽とストレス課題の組み合わせが心身に及ぼす影響の検討 13HP251_MORI


2015年度
教授場面における緊張について 12hp105_iwamoto
状態自尊心がリラクセーションに及ぼす影響について 12hp116_saigusa
勝敗の有無と対戦相手がゲームプレイ時における主観的楽しさに及ぼす影響の検討 12hp132_hashizaki
ヘッドトラッキング機能の有無が映像の没入感に及ぼす影響の検討 12hp214_kitayama
猫型ペットロボットとのコミュニケーションがもたらすリラックス効果の検討 12hp216_kondo
親密度の違いがゲームプレイ時の生理反応に及ぼす影響 12hp224_soma
ブレイン・マシン・インタフェース使用時における効率の良いトレーニング方法の模索 12hp227_takei
リラックス法が予期不安中の心身反応に及ぼす影響 12hp234_fukushima
スピーチ課題前の読書は心身のストレス反応を抑制するか? 12hp235_hori
Skype通話時における映像の有無が生理・心理指標に及ぼす影響 12hp244_yoshida


2014年度
CMCでの匿名性の操作が自己開示および生理反応に及ぼす影響11HP102_ikarashi
映像呈示条件がゲーム中の心理生理反応に与える影響の検討11HP103_ishikawa
サブリミナル動画がリラックス映像視聴時のαパワー値に与える影響の検討11HP112_kaneko
音声の有無が対戦格闘ゲーム中の心理生理反応に与える影響の検討11HP137_tomioka

フィジカルコンピューティングとデジタルファブリケーションを用いた低コスト皮膚温測定装置の開発とその運用13MH202_taira
13MH202_taira_abst
異性画像に対する魅力度の違いが身体反応に及ぼす影響13MH204_fuseda
13MH204_fuseda_abst


2013年度
レモンの香りがもたらすリラックス効果の心理・生理的検討 10hp105_anma
赤ちゃん映像視聴によりもたらされるポジティブ感情がストレス反応に与える影響 10hp108_imai
心音バイオフィードバックが射撃パフォーマンス・自己効力感・生理指標に及ぼす影響 10hp110_okura
競走場面における対戦形式の違いが生体反応に及ぼす影響 10hp118_saiki
リラックス・恐怖感情喚起映像視聴時の解像度の違いが主観感情及び生体反応に与える影響 10hp127_tanaka
スモールステップ法が作業効率と生体反応に及ぼす影響の検討 10hp133_nemoto
模擬接頭辞の刺激提示手法の違いがポリグラフ検査における自律神経活動に及ぼす影響 10hp142_minemura
感じたストレスを他者に伝えることで生じるストレス緩和効果について 10hp143_miyazawa
模型戦車操作時の視点状況の違いが没入感および生体反応へ及ぼす影響 10hp215_kubo
前腕3DCGモデルの動作遅延が身体感覚の転移および生体反応に及ぼす影響の検討 10hp242_mihara
[山田耕平/加曽利ゼミ]面接場面における面接者の態度が非面接者の生理反応に及ぼす影響 10HP146_yamada

頭部運動と映像の連動によりもたらされる身体感覚の転移とその定量化手法の提案 12mh206_watanabe1 12mh206_watanabe_abst

watanabe_presentation


2012年度
卒論プレゼン
パーソナル・スペース侵害時の視線の有無が生理・心理的反応に与える影響  09HP122_sanoki
同一課題を行う親しい友人によりもたらされる相互サポート効果の心理・生理的検討  09HP124_taira
心拍の虚偽フィードバックが魅力度評定に及ぼす影響  09HP137_fuseda
定位反応に関する選択的注意の解釈と人格特性との関連可能性についての検討  09HP218_sato
対人場面における服装の違いが緊張感及び生理指標に与える影響について  09HP245_wada


2011年度
自己関連話題聴取時の生体反応に公的自意識が及ぼす影響の検討  08HP212_okutomi
人物印象が表情模倣と情動伝染に及ぼす影響の検討  08HP220_kobayashi_
自尊感情の変化が計算課題中の心理・生理反応に与える影響の検討  08HP247_watanabe

SCコイン電池化計画

概要

・LT1167をAD8226に変更してコイン電池で皮膚コンダクタンスを稼働させる
・AD8226をスルーホールに変換する基盤の作成とテスト
・マイコンをESP32-H2が適用されたSEEEDの製品で皮膚コンの稼働

手順

・AD8226をスルーホールに変換する基盤の作成とテスト
・AD8226のテスト
・心電図用のブレットボードにAD8226を適用
・コイン電池を適用
・マイコンの変更
・皮膚コンダクタンス用にテスト

調べること

・LT1167からAD8226の変更方法
・電圧について
・コイン電池の基盤での扱い方
・ESP32-H2を用いてビーコンでデータ収集している情報

AD8226ARZNJU77000の表面実装とブレットボード用のはんだは成功
nRF52840のはんだも終わり,いよいよブレットボード上に心電図回路を起こさなければ・・・
まずは,nRF52840の起動時のライトのon/offができるようにならなければ
AD8226ARZとLT1112を組み合わせ,NJU77000かレールスプレッターで電圧を調整,最後にnRF52840
心電図回路図に用いる参考基盤は下記に

AD8226: 広い電源電圧範囲の レール to レール出力計装アンプ
LT1167 – Single Resistor Gain Programmable, Precision Instrumentation Amplifier
コイン電池でSC/ECG | E-152教室
Seeed Studio XIAO nRF52840 Plus — スイッチサイエンス

nRF52840このデータシート情報量が多すぎて鬱

電子部品購入依頼

抵抗
カーボン抵抗(炭素皮膜抵抗) 1/4W100Ω 150円 1パック
カーボン抵抗(炭素皮膜抵抗) 1/4W510Ω 170円 1パック
カーボン抵抗(炭素皮膜抵抗) 1/4W750Ω 140円 1パック
カーボン抵抗(炭素皮膜抵抗) 1/4W510kΩ 150円 1パック
カーボン抵抗(炭素皮膜抵抗) 1/4W200Ω 170円 1パック
カーボン抵抗(炭素皮膜抵抗) 1/4W4.7kΩ 170円 1パック
カーボン抵抗(炭素皮膜抵抗) 1/4W220Ω 170円 2パック
IC
高精度計装アンプ LT1167CN8 1240円 10個
2回路入汎用オペアンプ HTC製LM358GN  30円 20個
電圧リファレンス(バンドギャップリファレンス) LM385B-1.2 90円 10個
モジュール
5V出力昇圧DCDCコンバーターAE-XCL102  300円 10個
ADS1015使用 PGA機能搭載12bitADコンバーター 540円 10個
その他
反射型フォトセンサー(フォトリフレクター) RPR-220 110円 10個
シールドクリップ 金メッキ 白色 C-101-5W 120円 20個

ECGアンプ-現状まとめ

2025/09/23 
学会後開発頻度が落ちていたので改めて整理する
・arduinoプログラムはほぼほぼ完成
・機器も特に問題なし
・phpはK3を生波形など改良する必要あり(RealtimeChart2なら動く)

今後の展望としてはネット外環境でも使えるようSDカード対応をすること

=========================================================

追記-しげた
  1. Arduino:
 ・ECG生波形プログラムとHTTP用プログラムを統合する.
 ・M5Atomの内部ボタンでモードを簡単に切り替えれるようにする.
 ・生波形は,ProcessingではなくPHPで表示する(容易にアクセスするため).
2. PHP:
 ・RealtimeChart2.phpは旧式のため,最新のK3.phpにバージョンアップする.
 ・生波形を表示できるように,指標のドロップダウンに追加する.

*計測器のナンバリングが終わり次第,南さんに最新のプログラムを渡していいかもしれない.卒論で使うなら今月中に渡しに行く?

下水パイプアタッチメント

下水がパイプから逆流したとき,せめて床に行かないようにする仕組み.V1は運用したら壁が低くて水が溢れ出てしまった.あと,切れ目はテープじゃ止められなかった.V2は壁を2cm高く,接合部に3mmネジ穴をあけた.日々進歩.

V2はネジ穴が3mmぴったりで,入れるのに苦労したのでV3に。V2は壁が高くなったぶん奥まで手が入らず,シーリング用のゴムをしっかり施工できない問題があった。直径UPのついでにネジ穴の径を上げたりいろいろ手を入れた。ん?そもそも中央のパイプ付近を坂にしておけばシールしなくても大丈夫だったりする?生活に役立つ3Dデザイン。

NutriHeart Feedback

English:
“This server-based research application investigates heart rate responses to food intake. Participants submit photos of their meals, and the system visualizes cardiovascular responses by meal category. The goal is to support learning of dietary habits that minimize postprandial blood glucose spikes.”

日本語:
「本サーバアプリケーションは,食事摂取に対する心拍応答を調べる研究を目的としています。参加者は食事の写真を登録し,システムは食事カテゴリごとに心拍応答を可視化します。目的は,食後の血糖上昇を抑える食習慣の学習を支援することです。」


Terms of Service

1. Purpose
This service is provided for academic research at Bunkyo Gakuin University. The goal is to study heart rate responses to food intake and to provide educational feedback on dietary habits.

2. Eligibility
Participation is voluntary. Only registered participants who provide informed consent may use this service.

3. Use of Data
Data collected through this service, including Fitbit heart rate and activity data and meal images submitted by users, will be used solely for research purposes.

4. Responsibilities of Users
Participants agree to provide accurate information and not to misuse the system.

5. Limitation of Liability
This service is provided “as is” for research purposes. The research team is not responsible for any direct or indirect damages resulting from the use of this service.

6. Changes to Terms
These terms may be updated in accordance with research needs and legal requirements. Participants will be notified of any significant changes.

利用規約

1. 目的
本サービスは文京学院大学における学術研究のために提供されます。研究目的は,食事に対する心拍の応答を調べ,食習慣に関する教育的フィードバックを提供することです。

2. 対象
参加は任意です。事前にインフォームドコンセントに同意した登録参加者のみが利用できます。

3. データの利用
本サービスを通じて収集されるFitbitの心拍・活動データや,ユーザーが登録した食事画像は,研究目的にのみ使用されます。

4. ユーザーの責任
参加者は正確な情報を提供し,本システムを不正に利用しないことに同意します。

5. 免責事項
本サービスは研究目的のために「現状のまま」提供されます。研究チームは本サービスの利用に起因する直接的または間接的な損害に対して責任を負いません。

6. 規約の変更
本規約は研究上の必要や法的要件に応じて改訂される場合があります。重要な変更がある場合は参加者に通知します。


Privacy Policy

1. Data Collected
We collect Fitbit heart rate and activity data, and meal images submitted by participants.

2. Purpose of Data Use
The collected data will be used exclusively for academic research to study heart rate responses to food intake and to develop educational tools for healthier dietary habits.

3. Data Storage and Security
All data are stored securely on university servers hosted in Japan (Sakura Internet). Access is restricted to the research team. Data are encrypted and anonymized before analysis.

4. Data Sharing
No personal data will be shared with third parties. Only aggregated, anonymized results will be published in academic papers or presentations.

5. Participant Rights
Participants may withdraw from the study at any time. Upon withdrawal, their personal data will be deleted from the system.

6. Contact
For questions about data privacy, please contact the research team at Bunkyo Gakuin University.

プライバシーポリシー

1. 収集するデータ
本研究では,Fitbitの心拍・活動データおよび参加者が登録する食事画像を収集します。

2. データ利用の目的
収集したデータは,食事に対する心拍の応答を調べ,より健康的な食習慣のための教育ツールを開発する学術研究にのみ利用されます。

3. データの保存と安全性
すべてのデータは日本国内の大学サーバ(さくらインターネット)に安全に保存されます。アクセスは研究チームに限定され,分析前にデータは暗号化・匿名化されます。

4. データの共有
個人データが第三者に提供されることはありません。学術論文や発表では匿名化・集計された結果のみが公表されます。

5. 参加者の権利
参加者はいつでも研究から撤退できます。撤退後はその個人データはシステムから削除されます。

6. 問い合わせ先
データプライバシーに関する質問は,文京学院大学の研究チームまでご連絡ください。