Tecnologia vestible

Per començar Elements d'entrada Programació CircuitPython   Recursos CITCEA
Elements no electrònics Elements de sortida Programació Arduino    
Projectes Elements de control Dades pràctiques   Inici

Pylux

Pylux és un pijama que quan l'usuari s'aixeca encén uns llums que porta incorporats sempre que no hi hagi prou llum ambient. També incorpora un sistema per despertar a l'usuari quan porta dormint un temps predeterminat.

La llista de materials principals és la següent:

1   Placa Flora

9   NeoPixel

1   Sensor de llum

1   Sensor d'acceleració i camp magnètic

1   Portapiles amb piles

2   Brunzidor piezoelèctric

2   Resistència de 100 Ω

1   Polsador

1   Resistència de 10 kΩ

La següent figura mostra la distribució dels elements a la samarreta del pijama.

samarreta

La figura següent mostra l'esquema de connexions.

esquema

El prototip va quedar com es mostra a la fotografia següent.

Vista anterior

A continuació tenim el llistat del programa:

#include <Adafruit_NeoPixel.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303.h>
#define fcon 10000
#define hora 1
#define inputPin 1
//Coses del sensor d'acceleracio
Adafruit_LSM303 lsm;
//Coses LED
Adafruit_NeoPixel cadena = Adafruit_NeoPixel(9, 10, NEO_GRB + NEO_KHZ800);
unsigned long temps = 0; // temps 
unsigned long incrt = hora*fcon; //son 8 hores
int pulsador = 0;
unsigned long tactu = 0;
boolean despertador = false;
int sensorPin = A9;
int lightValue = 0;
int llum = 0;
void setup() {
	Serial.begin(9600);
	// Try to initialise and warn if we couldn't detect the chip
	if (!lsm.begin()){
		Serial.println("Oops ... unable to initialize the LSM303. Check your wiring!");
		while (1);
	}
	Serial.begin(9600);
	Serial.println("Setup");
	//LED
	cadena.begin();  // Inicialitza els NeoPixels        
	delay(250);
	cadena.setPixelColor(0, 0, 0, 0);
	cadena.setPixelColor(1, 0, 0, 0);  
	cadena.setPixelColor(2, 0, 0, 0);
	cadena.setPixelColor(3, 0, 0, 0);  
	cadena.setPixelColor(4, 0, 0, 0);  
	cadena.setPixelColor(5, 0, 0, 0);  
	cadena.setPixelColor(6, 0, 0, 0);  
	cadena.setPixelColor(7, 0, 0, 0);  
	cadena.setPixelColor(8, 0, 0, 0);
	cadena.show(); // Actualitza
	Serial.println("Reseteja llums"); 
	pinMode(inputPin, OUTPUT);
}
	//Sensor Llum
	llum = analogRead(sensorPin);
	//Sistema despertador
	pulsador = digitalRead(inputPin);
	Serial.print("Light value is:");
	Serial.println(lightValue);
	if (pulsador == HIGH){
		//encendre LEDs per avisar de que s'ha ences el despertador
		Serial.println("Pulsador");
		cadena.setPixelColor(0, 127, 255, 0);  // Pixel 8 (No se quin és el color)
		cadena.show(); // Actualitza
		temps = millis();
		despertador = true;
	}
	tactu = millis()-temps;
	if ((tactu > incrt) && despertador){
		Serial.println("Beep");
		//activem brunzidor Esquerra
		tone(6, 440, 250);  // La durant 0,25 s
		delay(500);  // Espera mig segon
		tone(6, 262);   // Do
		delay(250);  // Durada 0,25 s
		noTone(6);   // Silenci
		delay(2000);  // Espera dos 
		tone(6, 440, 250);  // La durant 0,25 s
		delay(500);  // Espera mig segon
		tone(6, 262);   // Do
		delay(250);  // Durada 0,25 s
		noTone(6);   // Silenci
		delay(2000);  // Espera dos segons
		//Activem Brunzidor Dreta 
		tone(0, 440, 250);  // La durant 0,25 s
		delay(500);  // Espera mig segon
		tone(0, 262);   // Do
		delay(250);  // Durada 0,25 s
		noTone(0);   // Silenci
		delay(2000);  // Espera dos segons
		tone(0, 440, 250);  // La durant 0,25 s
		delay(500);  // Espera mig segon
		tone(0, 262);   // Do
		delay(250);  // Durada 0,25 s
		noTone(0);   // Silenci
		delay(2000);  // Espera dos segons
		despertador = false;
	}
	//Sensor d'acceleracio
	//Sistema per encendre els llums
	lsm.read(); 
	Serial.print("Y: "); Serial.println((int)lsm.accelData.y);       Serial.print(" ");
	delay(1000);
	if (((int)lsm.accelData.y > 15000) && llum < 12){
		Serial.println("Encendre Llum");
		//Hem de mirar la acceleracio en el eix y sigui semblant a la gravetat
		//Encendre LED
		//LED de color blanc
		cadena.setPixelColor(0, 150, 150, 150);  // Pixel 0 Blanc
		cadena.setPixelColor(1, 150, 150, 150);  // Pixel 1 Blanc
		cadena.setPixelColor(2, 150, 150, 150);  // Pixel 2 Blanc
		cadena.setPixelColor(3, 150, 150, 150);  // Pixel 3 Blanc
		cadena.setPixelColor(4, 150, 150, 150);  // Pixel 4 Blanc
		cadena.setPixelColor(5, 150, 150, 150);  // Pixel 5 Blanc
		cadena.setPixelColor(6, 150, 150, 150);  // Pixel 6 Blanc
		cadena.setPixelColor(7, 255, 255, 255);  // Pixel 7 Blanc
		cadena.setPixelColor(8, 255, 255, 255);  // Pixel 8 Blanc 
		cadena.show(); // Actualitza
		delay(1000);  // Espera un segon
	} else {
		cadena.setPixelColor(0, 0, 0, 0);
		cadena.setPixelColor(1, 0, 0, 0);  
		cadena.setPixelColor(2, 0, 0, 0);
		cadena.setPixelColor(3, 0, 0, 0);  
		cadena.setPixelColor(4, 0, 0, 0);  
		cadena.setPixelColor(5, 0, 0, 0);  
		cadena.setPixelColor(6, 0, 0, 0);  
		cadena.setPixelColor(7, 0, 0, 0);  
		cadena.setPixelColor(8, 0, 0, 0); 
		cadena.show(); // Actualitza
		delay(1000);  // Espera un segon
		Serial.println("Apaga llum");
	}
}

 

 

 

En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.