TKE- GRUPO 8
ÍNDICE
- Sobre el proyecto
- Componentes
- Implementación
- Potenciales Mejoras
- Problemas
- Código
- Prototipo
- Videos ejecución prototipo
- Autores
SOBRE EL PROYECTO
A la hora de seleccionar el proyecto que vamos a realizar el primer paso que realizamos fue una lluvia de ideas donde decidimos hacía que público queríamos que fuera orientado. Una vez analizadas las distintas opciones dedicadas a diferentes grupos como estudiantes, sector de la hostelería, tercera edad…
Finalmente nos quedamos con a la tercera edad, donde realizamos una pulsera inteligente anticaídas, o como lo hemos nombrado TKE (Dispositivo de ayuda a las personas en situación en riesgo de caída). Este dispositivo tiene un uso claro, facilitar la seguridad de las personas mayores y de sus alrededores. La pulsera detecta gracias a un acelerómetro cuando la persona se cae, una vez detectado, gracias a la incorporación de una SIM conseguimos que le llegue una notificación al contacto de emergencia indicando que el poseedor de la pulsera ha sufrido un accidente.
Con esto conseguimos solventar el problema que queríamos, mejorar la vida de los mayores y de sus alrededores consiguiendo una inmediatez frente a los accidentes, y además de rebajar la preocupación de sus alrededores debido a que sabrán en todo momento si la persona está bien.
COMPONENTES
| COMPONENTE | PRECIO |
| ESP32-C3 mini | 2.30 € |
| SIM 800L | 0.99 € |
| Capacitor electrolítico | 0.99 € |
| Batería 3.7v, 1100 mAh | 16.80 € |
| Modulador de carga de litio (TP 4056) | 0.82 € |
| Transistor 2N2222 | 0.72 € |
| Motor Vibrador | 2.79 € |
| Resistencias 1k | 0 € |
| Diodo 1N4007 | 2.49 € |
| Carcasa 3D | 16 € |
| Botón | 0 € |
| Batería 3.7v, 300 mAh | 7 € |
| Batería 3.7v, 600 mAh | 10 € |
| TOTAL | 69.9 € |
IMPLEMENTACIÓN
A la hora de realizar la implementación comenzamos haciendo un primer diseño en TINKERCAD, donde realizaremos una primera visión sobre los componentes necesarios y como estos deben ser conectados. Tras una primera versión, realizamos modificaciones al ver que los componentes no eran compatibles y comenzamos una segunda búsqueda de componentes.
Tras verificar la compatibilidad de los componentes, procedemos a buscar los distintos proveedores. Entre ellos Aliexpress y Amazon.

Una vez recogidos todos los componentes procedemos a la implementación sobre la Protoboard. Los elementos que vamos a incorporar son: La ESP32-C3 super mini, este va a ser el microcontrolador principal del proyecto. Esta se encargará de procesar la lectura del acelerómetro, controlar el motor vibrador, gestionar el estado del sistema y comunicarse con el módulo GSM; La SIM800L, es el responsable de enviar mensajes SMS cuando se detecta una caída o aceleración buscada; el capacitor electrolítico, actúa como estabilizador de energía; la batería es la fuente de alimentación principal del dispositivo, proporciona una tensión estable de 3.7 V y una capacidad de 1100 mAh, lo que permite alimentar la ESP32-C3, el motor vibrador y el módulo SIM, durante varias horas; El modulador de carga de Litio, permite cargar la batería Li-Po de forma segura mediane USB; el transistor NPN 2N2222, actúa como interruptor electrónico, permite controlar el motor vibrador desde la ESP32-C3, sin sobrecargar sus pines, ya que el transistor maneja corrientes superiores a las que puede suministrar directamente el microcontrolador; El motor vibrador encargado de generar la señal física de aviso mediante vibración. Se detecta cuando detecta una caída o aceleración brusca; las resistencias de 1k Ω, se utiliza para limitar la corriente que entra en la base del transistor 2N2222 desde la ESP32-C3; El diodo 1N4007 se coloca en paralelo con el motor vibrador para absorber los picos de voltaje que se generan al apagarse, evitando así daños en el transistor, reinicios en la ESP32-C3, y fallos el modulo SIM; el condensador microlítico 1000 µF, es el componente encargado de estabilizar la alimentación del circuito.
Su función principal es actuar como un almacén temporal de energía que absorbe variaciones bruscas de voltaje.
Una vez comprobado el funcionamiento de todo en la protoboard comenzamos a soldar los materiales para conseguir mejores conexiones entre ellos y un resultado mucho más compacto y pequeño. Tras realizar el soldado, tomamos las medidas y comenzamos el desarrollo en Rhinoceros 3D, donde diseñaremos la carcasa del reloj que procederemos a imprimir en 3D para un mejor acabado. Tras la impresión 3d conectamos la carcasa a la correa.
POTENCIALES MEJORAS
- Diseño de una aplicación móvil para controlar el dispositivo en tiempo real: Esta mejora permite crear una aplicación para Android o iOS que permita configurar parámetros como: Número de emergencia, tiempo de vibración o el estado de la batería. Además, la aplicación podría mostrar alertas, historial de caídas y estadísticas.
- Notificaciones inteligentes y sistemas de doble identificación
- Implementar un sistema en el que antes de enviar el SMS de emergencia el dispositivo envíe una alerta a la aplicación móvil, si el usuario confirma que está bien, la alarma se cancela. En caso contrario, si no responde, se envía la notificación de emergencia automáticamente. Esto reduciría falsos positivos y aporta seguridad adicional.
- Uso de la microsoldadura
- Reducir el tamaño del prototipo
- Mejorar la resistencia ante golpes o caídas
- Mejorar el diseño
- Añadirle más funcionalidades
PROBLEMAS
El principal problema que encontramos estuvo relacionado con la batería. Inicialmente adquirimos una de 600 mAh, muy atractiva por su reducido tamaño; sin embargo, pronto comprobamos que su potencia no era suficiente para alimentar correctamente todo el circuito. Debido a ello, optamos por cambiarla por una batería de mayor capacidad, aun sabiendo que esto implicaba renunciar a un formato más compacto. A este inconveniente se sumó que Amazon retrasó el envío de la nueva batería, lo que nos obligó a buscar alternativas mientras continuábamos con el desarrollo. Finalmente, seleccionamos una batería de 1100 mAh, que nos ofrecía ventajas claras en cuanto a autonomía y estabilidad, aunque supusiera aumentar ligeramente las dimensiones del dispositivo .
Además, el proceso de soldadura resultó complicado debido al tamaño reducido de los componentes y de los cables, lo que ocasionó falsos contactos, soldaduras frías y roturas que obligaron a rehacer uniones varias veces. Debido a la dificultad de la micro soldadura y del reducido tamaño de los componentes, produjo que en una de las pruebas, dos cables se conectaron y por tanto nuestra placa principal como puede ser la ESP32-C3 mini sufriera un cortocircuito y se quemarán numerosos componentes de ella. Por tanto el prototipo dejaría de funcionar.
CÓDIGO
#include <Wire.h>
#include <MPU6050.h>
#include <HardwareSerial.h>
MPU6050 mpu;
HardwareSerial sim800(1);
const int motor = 3; // Pin motor vibrador
const int pulsador = 7; // Pin botón
const float limite_de_aceleracion = 1.5; // Límite en G
int16_t ax, ay, az; // aceleración cruda
float axg, ayg, azg;
String numero="66666666"; // aceleración en G
unsigned long tiempo_vibracion = 40000;
String usuario = "abuelo";
void setup() {
Serial.begin(115200);
pinMode(motor, OUTPUT);
digitalWrite(motor, LOW);
pinMode(pulsador, INPUT_PULLUP);
Wire.begin(5, 4); // SDA = 5, SCL = 4 en ESP32-C3
Serial.println("Inicializando MPU6050...");
mpu.initialize();
if (!mpu.testConnection()) {
Serial.println("MPU6050 NO detectado!");
while (1);
}
Serial.println("MPU6050 listo.");
//configuramos la sim
sim800.begin(9600, SERIAL_8N1, 20, 21);
delay(2000);
enviarAT("AT", 1000);
enviarAT("AT+CMGF=1", 1000);
Serial.println("Sms listo");
}
void loop() {
bool ultimo_boton = digitalRead(pulsador);
// Leer datos crudos del acelerómetro
mpu.getAcceleration(&ax, &ay, &az);
// Convertir a G (el MPU6050 tiene sensibilidad 16384 LSB/g en +/-2g)
axg = ax / 16384.0;
ayg = ay / 16384.0;
azg = az / 16384.0;
// Magnitud total
float totalAccel = sqrt(axg * axg + ayg * ayg + azg * azg);
Serial.print("Aceleración: ");
Serial.println(totalAccel);
// Si pasa el límite → vibrar
if (totalAccel > limite_de_aceleracion) {
funcionamiento();
}
delay(50);
}
void funcionamiento(){
unsigned long inicio = millis();
digitalWrite(motor, HIGH);
bool cancelado = false;
while(millis()-inicio<tiempo_vibracion){
if (digitalRead(pulsador) == LOW) {
digitalWrite(motor, LOW);
cancelado = true;
return;
}
}
digitalWrite(motor, LOW);
sim800.print("AT+CMGS=\"");
sim800.print(numero);
sim800.println("\"");
delay(500);
sim800.print("Posible caída del ususario ");
sim800.print(usuario);
delay(300);
sim800.write(26); // CTRL+Z
delay(5000);
}
void enviarAT(String comando, int espera) {
sim.println(comando);
delay(espera);
while (sim800.available()) {
Serial.write(sim800.read());
}
}
PROTOTIPO
PRIMER PROTOTIPO

PROTOTIPO FINAL


DEMOSTRACIÓN
AUTORES
Nicolás Pérez LLanos
n.perezl.2023@alumnos.urjc.es
Paula María Acevedo Castellano
pm.acevedo.2023@alumnos.urjc.es
Carlos Roberto Vázquez Salinas
cr.vazquez.2023@alumnos.urjc.es
Natalia García Delgado
n.garcia.2022@alumnos.urjc.es