Emergency Device

Email: andrada.hristu@yahoo.com

Introducere

Uitându-mă peste ideile din anii anteriori, mi-au atras atenţia dispozitivele medicale. M-am gândit că ar fi interesant să proiectez un dispozitiv care ar putea ajuta oamenii în situaţii de urgenţă. Proiectul meu se axează mai mult pe oamenii în vârstă, care pot întâmpina dificultăţi în îndeplinirea sarcinilor zilnice. Acest dispoztiv monitorizează mişcările persoanei care îl poartă şi în cazul în care utilizatorul cade (suferă un accident în urma căruia nu se mai poate ridica), se va trimite un SMS la 112.

Descriere generală

Dispozitivul va avea un giroscop pe 3 axe. Preluând date de la acesta, se poate afla poziţia relativă a utilizatorului. Dacă acesta va cădea brusc şi nu se va ridica la scurt timp după, evenimentul se va înregistra ca şi un accident. Atunci, prin intermediul modulului GSM se va trimite un SMS la 112. Voi conecta şi un LCD la dispozitiv pentru a afişa datele înregistrate de giroscop, în scopuri demonstrative.

Schema bloc:

Schema electrica:

Hardware Design

Lista de piese & materiale:

  • ATMEGA 324
  • giroscop + accelerometru 3 axe MPU 6050
  • Modul placa de expansiune GPRS GSM
  • Modul ecran Nokia 5110

Software Design

1. Biblioteci folosite

#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "gsm/gsm.h"
#include "nokia5110/nokia5110.h"
#include "mpu6050/mpu6050.h"

2. Cod sursa

void get_initial_values(){
	int i;
	for(i = 0; i< 50; i++) {
		limitOX += get_value(OX);
		limitOZ += get_value(OZ);
		limitOY += get_value(OY);
	}

	limitOX /= 50;
	limitOY /= 50;
	limitOZ /= 50;
	
}

Aceasta functie ia valoriile medii pe cele 3 axe. Este folosita pentru a sti cand valorile sunt mult prea diferite de parametrii normali.

int check_falling(double ox, double oy, double oz) {


	if (oy < -marja || oy > marja)
		return 1;

	if (oz < -marja || oz > marja)
		return 1;

	return 0;

}

Functia o verificare a pozitiei in care se afla persoana, pentru a vedea daca se afla in limite normale.

while(1) {

		ox = get_value(OX);
		oy = get_value(OY);
		oz = get_value(OZ);

		print_axes(ox, oy, oz);
		
		if(check_falling(ox, oy, oz) == 1) {

			nokia_lcd_clear();
			nokia_lcd_set_cursor(10, 24);
			nokia_lcd_write_string("SMS!!!", 2);
			nokia_lcd_render();
			_delay_ms(10000);

			break;
			
		}

In codul principal, se iau parametrii pozitiei persoanei. In cazul in care se aceasta cade, se trimite un semnal catre lcd.

Rezultate obtinute

Bibliografie/Resurse

Resurse software

pm/prj2019/amocanu/emergency_device.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0