Yuna Jeon – Architecture d’intérieur L2
Objectif :
créer un dispositif pour visualiser la respiration qui aide à s’y concentrer
Pourquoi et Intention :
Je commence par mon expérience personnelle : lorsque je suis très stressée ou très fatiguée, je n’arrive pas très bien à me concentrer sur moi-même, et je commence à être très négative sur toutes mes pensées. Puis, l’application «respirelax» m’a beaucoup aidé à bien respirer comme il faut, et à me calmer. Elle fonctionne en visulisant la rapidité de respiration.
A partir de sa méthode, j’ai voulu créer un objet qui interagit à ma respiration et qui visualise en y répondant.
Démarches :
0. Comprendre comment Arduino peut marcher chez un objet
- Recherches : comment je peux réaliser
- 1ere conception test : à partir des données (soit par le capteur acoustique soit par le capteur cardiaque), gonfler le ballon -> trop compliqué -> pas réalisable
- capteur acoustique, capteur cardiaque
- ballon
- pompe
- 2eme conception test : à partir des données du capteur conducteur, gonfler le ballon
- capteur conducteur
- ballon
- pompe
- Test : allumer la Led en Blink et en plusieurs degrès avec le capteur conducteur
- code 1 : Blink
- code 2 : gradation de niveau lumineux
- 1ere conception test : à partir des données (soit par le capteur acoustique soit par le capteur cardiaque), gonfler le ballon -> trop compliqué -> pas réalisable
problème : pour inspirer et aspirer l’air, il faut soit 2 pompes soit 1 pompe qui fait 2 sens -> j’abandonne l’idée d’utiliser la pompe, au lieu de celle-ci, je décide d’appliquer le step moteur
2. Conception finale
- Toujours utiliser le capteur conducteur, et fabriquer un support qui fait bouger l’air.
- Test code 3
- capteur conducteur
- stepmoteur
- support en carton
- schema ——————————————————>
- Test code 3
*vous pouvez trouver les 3 codes tests en dessous du texte.
3. Démonstration – vidéo



4. Comment l’améliorer ?
- matériaux : couverture survie ? -> agrandir la dimension ?
- meilleure réalisation : pas de cable croco -> à souder ?
Les sites référencés
- https://eteo.tistory.com/117 (en coréen)
- Chatgpt
- Pour l’idée de projet : lien (en anglais)
- vidéo : gonfler le ballon
- vidéo : Arduino breathing monitor
- lien : outils corporels de respiration et de méditation
- lien : product
- lien : site qui aide à bien respirer
- lien : projet sur la respiration chez MIT
- lien : études sur pourquoi et comment la respiration aide à être moins négatif
Un autre moyen pour capter la respiration
- Capteur MAX30102 – moving average
- DC / AC (DC – respiratory, AC – pulse)
Proposition primative

Code 1
Capteur conducteur – Led Blink (13 novembre)
const int sensorPin = A0;
const int ledPin = 3;
int sensorValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
if (sensorValue >=120) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
delay(10);
}

Code 2 : Capteur conducteur – led gradation
const int sensorPin = A0; // 고무줄 센서
const int ledPin = 3; // PWM 가능한 핀
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
int brightness = 0;
// 1) 0~50 : LED OFF
if (sensorValue <= 50) {
brightness = 0;
}
// 2) 51~150 : LED 그라데이션 (0~255까지 매핑)
else if (sensorValue > 50 && sensorValue <= 150) {
brightness = map(sensorValue, 51, 150, 0, 255);
}
// 3) 150 이상 : LED 최대 밝기
else {
brightness = 255;
}
analogWrite(ledPin, brightness);
delay(10);
}
Code 3 : capteur conducteur – moteur
#include <Stepper.h>
// 28BYJ-48 스텝 수 (감속비 포함 한 바퀴)
const int stepsPerRevolution = 2048; // 핀 연결 (IN1, IN3, IN2, IN4 순서 – ULN2003 드라이버 표준)
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
int currentPos = 0;
void setup() {
Serial.begin(9600); myStepper.setSpeed(12); // 속도를 조금 낮추면 더 힘차고 안정적으로 돕니다.
}
void loop() {
// 1. 센서 값 읽기
int sensorValue = analogRead(A0);
// 2. map 함수 적용 (센서 70~330 -> 모터 0~2048 스텝)
// 이제 70일 때 0도, 330일 때 360도 위치가 됩니다.
int targetPos = map(sensorValue, 70, 330, 0, 2048);
// 3. 안전 범위 제한 (70보다 작거나 330보다 클 때 대비)
targetPos = constrain(targetPos, 0, 2048);
// 4. 이동할 거리 계산 intstepsToMove = targetPos – currentPos;
// 5. 노이즈 방지 및 모터 구동 if (abs(stepsToMove) > 5) {
// 5스텝 이상 변화가 있을 때만 반응 myStepper.step(stepsToMove);
currentPos = targetPos;
// 현재 위치 갱신
// 시리얼 모니터로 실시간 확인
Serial.print(« Sensor: « );
Serial.print(sensorValue);
Serial.print( » | Target Step: « );
Serial.println(targetPos); }
}

Projet Bonus !!
Workshop : Capteur Ultrason distance
Capteur VMA 306
Enceinte
Document
Code
#define trigPin 12
#define echoPin 13
long duration, distance;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.println(« == Debut du programme == »);
}
void loop() {
// Envoie de l’onde
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Réception de l’écho
duration = pulseIn(echoPin, HIGH);
// Calcul de la distance
distance = (duration/2) / 29.1;
if (distance >= 400 || distance <= 0){
Serial.println(« Hors plage »);
}
else {
Serial.print(« distance = « );
Serial.print(distance);
Serial.println( » cm »);
}
delay(500); // délai entre deux mesures
}
distance – led
long duration;
int distance;
const int trigPin = 10;
const int echoPin = 11;
const int ledPin = 9; // PWM 가능한 핀(3,5,6,9,10,11 중 하나)
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// —- LED 밝기 계산 —-
int brightness = map(distance, 0, 200, 255, 0);
// 거리가 0cm에 가까우면 → 255(최대 밝기)
// 거리가 200cm이면 → 0(꺼짐)
// 밝기 제한 (음수 방지)
brightness = constrain(brightness, 0, 255);
analogWrite(ledPin, brightness);
Serial.print(« Distance: « );
Serial.print(distance);
Serial.print( » cm | LED Brightness: « );
Serial.println(brightness);
delay(50); // 측정 안정화
}
long duration;
int distance;
const int trigPin = 10;
const int echoPin = 11;
const int ledPin = 9; // PWM 가능한 핀
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// —- LED 밝기 계산 —-
// 거리 : 0cm → 400cm
// 밝기 : 255 → 0 으로 변환 (가까울수록 밝게)
int brightness = map(distance, 0, 400, 255, 0);
// 범위 제한 (0~255)
brightness = constrain(brightness, 0, 255);
analogWrite(ledPin, brightness);
Serial.print(« Distance: « );
Serial.print(distance);
Serial.print( » cm | LED Brightness: « );
Serial.println(brightness);
delay(40); // 안정화
}

