This is an old revision of the document!
Forget Me Not Device este un dispozitiv inovator conceput pentru a ajuta utilizatorii să își gestioneze și să își monitorizeze obiectele personale în mod eficient. Într-o lume în care timpul este prețios și agitația zilnică poate duce la uitarea obiectelor esențiale, precum umbrela, bagajul sau chiar bicicleta, acest dispozitiv devine un aliat de nădejde. Cu ajutorul tehnologiei avansate de localizare și monitorizare, Forget Me Not Device oferă utilizatorilor siguranța de a ști că obiectele lor valoroase sunt întotdeauna în siguranță și la îndemână.
Atunci când utilizatorul se îndepărtează prea mult de obiect, dispozitivul activează o alarmă prin intermediul unui buzzer integrat, atrăgând atenția asupra faptului că se îndepărtează de obiectul lor. În plus față de alarmă, dispozitivul este echipat și cu un receptor GPS și un modul GSM, care îi permite să își transmită constant locația utilizatorului. În cazul în care obiectul este uitat sau pierdut, utilizatorul poate să primească prin SMS locația GPS a dispozitivului, facilitând recuperarea acestuia într-un mod eficient și convenabil.
Ideea proiectului este de a utiliza un senzor ultrasonic, precum HC-SR04, conectat la o plăcuță Arduino pentru a măsura constant distanța între dispozitiv și un anumit obiect. Acest senzor detectează modificările în distanță și declanșează un semnal către un buzzer integrat atunci când utilizatorul se îndepărtează prea mult de obiect. În plus față de funcția de alarmare, dispozitivul este echipat cu un modul GSM și GPS, permițându-i utilizatorului să solicite informații despre locația obiectului și să primească un SMS cu coordonatele GPS atunci când acesta este pierdut sau uitat.
Piese:
Implementarea modulului gsm a necesitat un divizor de tensiune pentru a conecta Rx-ul modulului gsm cu Tx-ul plăcuței arduino, deoarece modulul gsm comunică la 3V3, iar Arduino la 5V. Pentru aceasta am folosit o rezistență 10K între pin-ul SIM800L Rx și pin-ul Tx de la Arduino și două rezistențe 10K în serie (ce simulează o rezistență 20K) între SIM800L Rx și GND.
Am inclus și o baterie 1200mAh Li-Po pentru alimentarea modulului. Design-ul acestui circuit arată în felul următor:
Circuit fizic:
Configurare inițială constă în inițializarea pinilor pentru senzorul ultrasonic, buzzer și butoane, precum și pinii pentru gps si gsm Arduino pentru a semnaliza starea de funcționare. Pentru cele două butoane au fost setate întreruperi pentru a putea porni și opri programul și pentru a activa/dezactiva modul de alarmă.
În bucla principală a programlui, dacă butonul de start a fost apăsat, LED-ul integrat se aprinde și funcția principală project() este apelată pentru a gestiona măsurătorile și alertele.Dacă programul nu este pornit, LED-ul integrat rămâne stins și se așteaptă apăsarea unui buton pentru a începe.
void loop() { if (start_program) { digitalWrite(LED_BUILTIN, HIGH); project(); } else { Serial.println("Press to start"); if (button_pressed == false) { noTone(buzzer); } // set led off digitalWrite(LED_BUILTIN, LOW); delay(300); } } void project() { digitalWrite(trigPin, LOW); delayMicroseconds(10); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); long r = 3.4 * duration / 2; float distance = r / 100.00; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); delay(300); if (distance < 10 && distance > 0) { noTone(buzzer); Serial.println("0 < distance < 5"); } else if (distance >= 10) { Serial.println("distance >= 10"); if (button_pressed == true) tone(buzzer, 10); else noTone(buzzer); // send message send_sms("Don't forget me!"); } else { noTone(buzzer); } // listen for messages sgsm.listen(); if (sgsm.available() > 0) { String c = sgsm.readString(); c.trim(); // send sms with location on request if (c.indexOf("GET-GPS") >= 0) { send_location(); } delay(100); } }
În această funcție este implementată funcționalitatea device-ului.
Senzorul ultrasonic HC-SR04 trimite un puls și măsoară timpul de revenire pentru a calcula distanța față de obiectul monitorizat, după care distanța măsurată este afișată pe monitorul serial. Dacă distanța este mai mică de 10 cm, buzzerul este oprit pentru a semnaliza că obiectul este aproape. Dacă în schimb distanța este mai mare sau egală cu 10 cm și modul alarmă este activat, buzzerul este pornit pentru a alerta utilizatorul că se îndepărtează de obiect. De asemenea, se trimite o notificare sms că obiectul a fost uitat. Dacă modul alarmă nu este activat, buzzer-ul rămâne silențios și se trimite doar notificarea.
Programul de asemenea verifică regulat dacă primește o cerere SMS cu textul “GET-GPS”, și trimite locația curentă prin SMS folosind coordonatele GPS obținute.
Programul de asemenea citește de la gps locația transmisă, doar la nevoie, pentru trimite locația gps exactă a obiectului, pentru a eficientiza consumul bateriei.
void get_location() { // Get location via gps // if(SerialGPS.available() > 0) { Serial.println("GPS AVAILABLE"); if (gps.encode(SerialGPS.read())) { latitude = gps.location.lat(); longitude = gps.location.lng(); Serial.print(F("- latitude: ")); Serial.println(latitude); Serial.print(F("- longitude: ")); Serial.println(longitude); } } } void send_location() { // update location information first get_location(); //Send google maps location via text. String googleMapsUrl = "https://www.google.com/maps/?q="; googleMapsUrl += String(latitude, 6); googleMapsUrl += ","; googleMapsUrl += String(longitude, 6); send_sms(googleMapsUrl); }
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.