ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑ ΝΙΚΗΣ ΠΛ ΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΣΥΝΑΓΕΡΜΟΣ ΑΥΤΟΚΙΝΗΤΟΥ ΜΕ ΧΡΗΣΗ ΤΩΝ ΤΕΧΝΟΛΟΓΙΩΝ GSM KAIGPS ΕΙΣΗΓΗΤΗΣ: Καθηγητής ΠΟΓΑΡΙΔΗΣ ΔΗΜΗΤΡΙΟΣ ΣΠΟΥΔΑΣΤΕΣ: ΚΑΓΙΟΓΛΟΥ ΔΗΜΗΤΡΙΟΣ ΜΠΑΡΚΑΣ ΜΑΡΙΟΣ ΚΑΒΑΛΑ ΟΚΤΩΒΡΙΟΣ 2008
Πίνακας Περιεχομένων Πρόλογος...Σελ.5 ΚΕΦΑΛΑΙΟ 1 1.1 Απαιτήσεις συστήματος... Σελ.7 1.1.1 Απαιτήσεις Λειτουργικότητας (Functionality)...Σελ.7 1.1.2 Απαιτήσεις Ευχρηστίας (Usability )...Σελ.8 1.1.3 Απαιτήσεις Απόδοσης (Performance )...Σελ.8 1.2 Επισκόπηση απαιτήσεων...σελ.9 1.3 Κοστολόγιο...Σελ.10 ΚΕΦΑΛΑΙΟ 2 2.1 Προδιαγραφές συστήματος... Σελ.12 2.2 Δελτίο Προδιαγραφών συστήματος... Σελ.15 2.2.1 Βασικές λειτουργίες... Σελ.15 2.2.2 Περιγραφή του συστήματος... Σελ.15 2.2.3 Τι προσφέρει στην αγορά...σελ. 15 2.2.4 Προτεραιότητες... Σελ. 15 2.3 Ανάλυση επικινδυνότητας...σελ.16 2.4 Διάγραμμα εκτίμησης κινδύνου...σελ.17 2.5 Αρχιτεκτονικό σχέδιο συστήματος... Σελ.18 2.6 Σχέδιο R & D...Σελ.19 2.6.1 Αρχικό σχέδιο...σελ.19 2.6.2 Αρχιτεκτονική προϊόντος... Σελ.19 2.6.3 Υλοποίηση...Σελ. 20 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -2-
ΚΕΦΑΛΑΙΟ 3 3.1 Λογικό διάγραμμα ( Σχεδίαση συστήματος )... Σελ.22 3.1.1 Υπορουτίνα συναγερμού... Σελ.23 3.2 Κωδικοποίηση... Σελ.24 3.3 Test κλειστού κουτιού... Σελ.36 3.3.1 Διαδικασίες ελέγχου... Σελ.37 3.3.2 Περιπτώσεις ελέγχου (λογισμικού) κλειστού κουτιού... Σελ.41 3.4 Test ανοιχτού κουτιού... Σελ.51 3.5 Μηχανολογικό σχέδιο... Σελ.73 3.6 Ηλεκτρολογικό σχέδιο... Σελ.76 3.7 Ηλεκτρονικό σχέδιο... Σελ 77 ΚΕΦΑΛΑΙΟ 4 4.1 Αναφορά στο αναπτυξιακό STK 500... Σελ.85 4.1.1 Απαιτήσεις συστήματος... Σελ.85 4.1.2 Ο επεξεργαστής ATmega8515L... Σελ.85 4.1.3 Ο πυρήνας της CPU του AVR... Σελ.89 4.1.4 Οι πόρτες του μικροελεγκτή ATmega8515L... Σελ.90 4.1.5 Ρολόι συστήματος και επιλογές ρολογιού... Σελ.91 4.2 Αναφορά στο Teltonika GSM modem... Σελ.92 4.3 Αναφορά στο Lassen SQ GPS... Σελ.93 4.4 Σχέδιο παραγωγής... Σελ.95 4.5 Εγχειρίδιο χρήσης... Σελ.97 Βιβλιογραφία... Σελ.98 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -3-
Καγιόγλου Δημήτριος-Μπάρκας Μάριος -4-
Συναγερμός Αυτοκινήτου Με Χρήση Των Τεχνολογιών GSM Και GPS Πρόλογος Θέμα της παρούσας πτυχιακής εργασίας είναι η σχεδίαση και ανάπτυξη ενός συστήματος συναγερμού αυτοκινήτου το οποίο, μέσα από συγκεκριμένες διαδικασίες, θα ελέγχει το αυτοκίνητο μέσω συγκεκριμένων αισθητηρίων και σε περίπτωση παραβίασης, φωτιάς, ή πτώσης τάσης της μπαταρίας του αυτοκινήτου θα ειδοποιεί τον ιδιοκτήτη τόσο με οπτικά και ηχητικά μέσα όσο και με την αποστολή SMS (συγκεκριμένο για κάθε περίπτωση) στο κινητό του τηλέφωνο. Το σύστημα είναι εφοδιασμένο και με την τεχνολογία GPS (Global Positioning System) ώστε να είναι γνωστή οποιαδήποτε χρονική στιγμή η τοποθεσία που βρίσκεται το αυτοκίνητο. Παρατίθεται η παρούσα εργασία προκειμένου να γίνει γνωστή η πορεία υλοποίησης του έργου συμπεριλαμβανομένων όλων των φάσεων που ακολουθήθηκαν, των προβλημάτων που προέκυψαν και των λύσεων που δόθηκαν σε αυτά. Στο σημείο αυτό θα θέλαμε να εκφράσουμε τις ευχαριστίες μας στον καθηγητή και εισηγητή της πτυχιακής μας εργασίας, Δρ. Δημήτριο Πογαρίδη, για την συμπαράσταση που είχαμε καθ όλη την διάρκεια της διεξαγωγής της. Το βιβλίο χωρίζεται στις ενότητες S,P,Q,R. (Specifications, Project, Quality, R&D). S P Q R Specifications Proj ect Quality R&D -Απαιτήσεις -Προδιαγραφές -Δείκτες -Σχέδια -Δελτίο Προγράμματος -Απαιτήσεις Ασφαλείας -Αποτελέσματα Δοκιμών -Ανάλυση Επικινδυνότητας -Τεκμηρίωση Σχεδιασμού -Σχεδιασμός -Σχέδια HW και μηχανικών μερών -Λογισμικό Καγιόγλου Δημήτριος-Μπάρκας Μάριος -5-
Συναγερμός Αυτοκινήτου Με Χρήση Των Τεχνολογιών GSM Και GPS Κεφάλαιο 1 1.1 Απαιτήσεις Συστήματος 1.2 Επισκόπηση Απαιτήσεων 1.3 Κοστολόγιο Καγιόγλου Δημήτριος-Μπάρκας Μάριος -6-
Συναγερμός Αυτοκινήτου Με Χρήση Των Τεχνολογιών GSM Και GPS 1.1 Απαιτήσεις Συστήματος 1.1.1 Απαιτήσεις Λειτουργικότητας (Functionality) 1) Όταν παρατηρηθεί καπνός στο εσωτερικό της καμπίνας του αυτοκινήτου θα ενεργοποιείται το αισθητήριο καπνού και θα στέλνεται sms στον ιδιοκτήτη που θα αναγράφει CAR ON FIRE καθώς και τις συντεταγμένες της θέσης του αυτοκινήτου. 2) Όταν παρατηρηθεί καπνός στο εσωτερικό της καμπίνας του αυτοκινήτου θα ενεργοποιείται το αισθητήριο καπνού και θα εκπέμπεται ένα ηχητικό σήμα μέσω της σειρήνας. 3) Όταν παρατηρηθεί καπνός στο εσωτερικό της καμπίνας του αυτοκινήτου θα ενεργοποιείται το αισθητήριο καπνού και θα ενεργοποιούνται τόσο τα πίσω όσο και τα μπροστά φώτα του αυτοκινήτου. 4) Όταν παραβιαστεί οποιαδήποτε από τις πόρτες του αυτοκινήτου θα ενεργοποιείται το αισθητήριο παραβίασης πόρτας και θα εκπέμπεται ένα ηχητικό σήμα μέσω της σειρήνας. 5) Όταν παραβιαστεί οποιαδήποτε από τις πόρτες του αυτοκινήτου θα ενεργοποιείται το αισθητήριο παραβίασης πόρτας και θα στέλνεται sms στον ιδιοκτήτη που θα αναγράφει CAR VIOLATED καθώς και τις συντεταγμένες της θέσης του αυτοκινήτου. 6) Όταν παραβιαστεί οποιαδήποτε από τις πόρτες του αυτοκινήτου θα ενεργοποιείται το αισθητήριο παραβίασης πόρτας και θα ενεργοποιούνται τόσο τα πίσω όσο και τα μπροστά φώτα του αυτοκινήτου. 7) Όταν ανιχνευτεί κίνηση στην καμπίνα του αυτοκινήτου θα ενεργοποιείται το αισθητήριο κίνησης (φωτοκύτταρο) και θα στέλνεται sms στον ιδιοκτήτη που θα αναγράφει CAR VIOLATED καθώς και τις συντεταγμένες της θέσης του αυτοκινήτου. 8) Όταν ανιχνευτεί κίνηση στην καμπίνα του αυτοκινήτου θα ενεργοποιείται το αισθητήριο κίνησης (φωτοκύτταρο) και θα εκπέμπεται ένα ηχητικό σήμα μέσω της σειρήνας. 9) Όταν ανιχνευτεί κίνηση στην καμπίνα του αυτοκινήτου θα ενεργοποιείται το αισθητήριο κίνησης (υπέρυθρες) και θα ενεργοποιούνται τόσο τα πίσω όσο και τα μπροστά φώτα του αυτοκινήτου. 10) Όταν σημειωθεί οποιαδήποτε μετακίνηση του αυτοκινήτου θα ενεργοποιείται το αισθητήριο δόνησης και θα στέλνεται sms στον ιδιοκτήτη που θα αναγράφει POSSIBLE CAR ABUSE καθώς και τις συντεταγμένες της θέσης του αυτοκινήτου. 11) Όταν σημειωθεί οποιαδήποτε μετακίνηση του αυτοκινήτου θα ενεργοποιείται το αισθητήριο δόνησης και θα εκπέμπεται ένα ηχητικό σήμα μέσω της σειρήνας. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -7-
Συναγερμός Αυτοκινήτου Με Χρήση Των Τεχνολογιών GSM Και GPS 12) Όταν σημειωθεί οποιαδήποτε μετακίνηση του αυτοκινήτου θα ενεργοποιείται το αισθητήριο δόνησης και θα ενεργοποιούνται τόσο τα πίσω όσο και τα μπροστά φώτα του αυτοκινήτου. 13) Όταν υπάρξει πτώση τάσης της μπαταρίας του αυτοκινήτου ενώ ο συναγερμός είναι ήδη οπλισμένος τότε θα ενεργοποιείται το αισθητήριο της μπαταρίας και θα στέλνεται στον ιδιοκτήτη sms που θα αναγράφει CAR BATTERY LOW καθώς και τις συντεταγμένες της θέσης του αυτοκινήτου. 1.1.2 Απαιτήσεις Ευγρηστίας (Usability ) 1) Η ενεργοποίηση και η απενεργοποίηση του συναγερμού γίνεται μέσω ασύρματου τηλεχειριστηρίου. 2) Κατά την ενεργοποίηση του συναγερμού θα υπάρχει ένα LED το οποίο θα ανάβει δίνοντας έτσι ένδειξη ορθής όπλισης του συναγερμού. 1.1.3 Απαιτήσεις Α πόδοσή (Performance ) 1) Το ηχητικό σήμα πρέπει να εκπέμπεται άμεσα, δηλαδή η σειρήνα πρέπει να ενεργοποιείται σε μικρό χρονικό διάστημα. 2) Το μήνυμα στο κινητό του ιδιοκτήτη πρέπει να αποστέλλεται άμεσα, δηλαδή ενεργοποίηση του modem σε μικρό χρονικό διάστημα. 3) Τα φώτα πρέπει να αναβοσβήνουν σε μικρό χρονικό διάστημα. 4) Σε περίπτωση ενεργοποίησης του συναγερμού από οποιαδήποτε αιτία η σειρήνα θα παραμένει ενεργοποιημένη για 1 λεπτό της ώρας. 5) Σε περίπτωση ενεργοποίησης του συναγερμού από οποιαδήποτε αιτία τα φώτα του αυτοκινήτου θα αναβοσβήνουν για 1 λεπτό της ώρας. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -8-
Συναγερμός Αυτοκινήτου Με Χρήση Των Τεχνολογιών GSM Και GPS 1.2 Επισκόπηση Απαιτήσεων ΑΠ ΑΙΤΗ ΣΗ Α ΙΣΘ Η ΤΗ ΡΙΑ ΛΟ ΓΙΚ Η ΕΝΕΡΓΟ Π Ο ΙΗ ΤΕΣ ΕΠ ΙΚ Ο ΙΝΩΝΙΑ Συναγερμός καπνού Κ ΑΠΝΟΥ if( kapnos =1) then alarm=1 and seirhna =1 and modem=1 else alarm=0 and seirhna =0 and modem=0 A L A R M, Σειρήνα, GSM M odem VODAFONE INTERFACE (SM S) Εντοπισμός καπνού Συναγερμός Δόνησης ΔΟΝΗΣΗΣ if( donhsh =1) then alarm=1 and seirhna =1 and modem=1 else alarm=0 and seirhna =0 and modem=0 A L A R M, Σειρήνα, GSM M odem VODAFONE Εντοπισμός κραδασμού στο αμάξωμα Συναγερμός Π αραβίασης ΔΙΑΚΟΠΤΗ Σ ΠΟΡΤΑΣ if( porta =1) then alarm=1 and seirhna =1 and modem=1 else alarm=0 and seirhna =0 and modem=0 A L A R M, Σειρήνα, GSM M odem VODAFONE Εντοπισμός παραβίασης πόρτας Συναγερμός Κ ίνησης ΥΠΕΡΥΘΡΕΣ if(fwtokyttaro =1) then alarm=1 and seirhna =1 and modem=1 else alarm=0 and seirhna =0 and modem=0 A L A R M, Σειρήνα, GSM M odem VODAFONE Εντοπισμός κίνησης στην καμπίνα Έ λεγχος Μ παταρίας ΔΙΟΔΟΣ ZENNER if(low battery=1) then modem=1 SM S μέσω GSM M O DEM VODAFONE Χαμηλή Τάση Καγιόγλου Δημήτριος-Μπάρκας Μάριος -9-
Συναγερμός Αυτοκινήτου Με Χρήση Των Τεχνολογιών GSM Και GPS 1.3 Κοστολόγιο Κόστος Υλικών Παραθέτουμε αναλυτικά την κοστολόγηση όλων των Hardware υλικών που κρίνονται απαραίτητα για την κατασκευή του συναγερμού ΥΛΙΚΑ ΤΕΜΑΧΙΑ ΜΕΤΡΑ ΤΙΜΗ Αισθητήριο Καπνού 1 13,00 Αισθητήριο Κίνησης 1 14,00 Αισθητήριο Δόνησης 1 2,40 Διακόπτες Παραβίασης 2 4,00 Πόρτας LEDS 8 2,00 Αυτοκίνητο 1 80,00 Αντιστάσεις, Δίοδοι, Πυκνωτές 40 8,00 Relay 1 2,00 Σιλικόνη 4 4,00 Μονωτική ταινία 1 1,80 Καλωδιοταινία 1 1m 1,50 Καλώδια 5m 2,00 Σύστημα R/F 1 45,00 Τροφοδοτικό Υπολογιστή 1 15,00 GSM 1 80,00 GPS 1 90,00 Πολύμπριζο 1 7,00 Πλακέτες 3 8,00 ΣΥΝΟΛΟ 379,70 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -10-
Συναγερμός Αυτοκινήτου Με Χρήση Των Τεχνολογιών GSM Και GPS 2 ο 2.1 Προδιαγραφές Συστήματος 2.2 Δελτίο Προδιαγραφών Συστήματος 2.3 Ανάλυση Επικινδυνότητας 2.4 Διάγραμμα Εκτίμησης Κινδύνου 2.5 Αρχιτεκτονικό Σχέδιο Συστήματος 2.6Σχέδιο R&D Καγιόγλου Δημήτριος-Μπάρκας Μάριος -11-
2.1 Προδιαγραφές Τίτλος Λειτουργία Δεδ. Εισόδου Προέλευση Εισόδου Δεδ. Εξόδου Προϋπόθεση Προορισμός Πλευρικά Φαινόμ. S1 Σε περίπτωση που παρατηρηθεί οποιοσδήποτε κραδασμός ενεργοποιείται το buzzer τα φώτα του αυτοκινήτου και στέλνει sms στον ιδιοκτήτη. Κίνηση Ελάσματος. Αισθητήριο δόνησης. Μήνυμα sms, buzzer, φώτα αυτοκινήτου. Το έλασμα κλείνει κύκλωμα. Φώτα αυτοκινήτου,buzzer, GSM modem. Κανένα. Τίτλος Λειτουργία Δεδ. Εισόδου Προέλευση Εισόδου Δεδ. Εξόδου Προϋπόθεση Προορισμός Πλευρικά Φαινόμ. S2 Σε περίπτωση που παρατηρηθεί καπνός στην καμπίνα του αυτοκινήτου ενεργοποιείται το buzzer τα φώτα του αυτοκινήτου και στέλνει sms στον ιδιοκτήτη. Ύπαρξη καπνού. Αισθητήριο καπνού. Μήνυμα sms, buzzer, φώτα αυτοκινήτου. Να ανιχνευθεί καπνός από την φωτοδίοδο του αισθητηρίου. Φώτα αυτοκινήτου,buzzer, GSM modem. Κανένα. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -12-
Τίτλος Λειτουργία Δεδ. Εισόδου Προέλευση Εισόδου Δεδ. Εξόδου Προϋπόθεση Προορισμός Πλευρικά Φαινόμ. S3 Σε περίπτωση που παρατηρηθεί παραβίαση σε οποιαδήποτε πόρτα ενεργοποιείται το buzzer τα φώτα του αυτοκινήτου και στέλνει sms στον ιδιοκτήτη. Η επαφή κλείνει κύκλωμα. Διακόπτες πόρτας. Μήνυμα sms, buzzer, φώτα αυτοκινήτου. Να ανοίξει μια από τις πόρτες. Φώτα αυτοκινήτου,buzzer, GSM modem. Κανένα. Τίτλος S4 Λειτουργία Σε περίπτωση που η τάση της μπαταρίας είναι χαμηλή στέλνει sms στον ιδιοκτήτη μία μόνο φορά. Δεδ. Εισόδου Τιμή μπαταρίας. Προέλευση Εισόδου Αισθητήριο μπαταρίας. Δεδ. Εξόδου Μήνυμα sms. Προϋπόθεση Να πέσει η τάση της μπαταρίας κάτω από 8V. Προορισμός GSM modem. Πλευρικά Φαινόμ. Κανένα. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -13-
Τίτλος Λειτουργία Δεδ. Εισόδου Προέλευση Εισόδου Δεδ. Εξόδου Προϋπόθεση Προορισμός Πλευρικά Φαινόμ. S5 Σε περίπτωση που παρατηρηθεί κίνηση στην καμπίνα του αυτοκινήτου τότε ενεργοποιείται το buzzer τα φώτα του αυτοκινήτου και στέλνει sms στον ιδιοκτήτη. Διακοπή φωτεινής δέσμης. Αισθητήριο κίνησης (υπέρυθρες). Μήνυμα sms, buzzer, φώτα αυτοκινήτου. Να παρεμβάλλει ένα αντικείμενο στο φωτοκύτταρο. Φώτα Αυτοκινήτου,buzzer, GSM modem. Κανένα. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -14-
2.2 Δελτίο Π ροδιαγραφώ ν Σ υστήματος 2.2.1 Βασικέ λειτουονίε > Διαχειρίζεται το led ενεργοποίησης/απενεργοποίησης του συναγερμού. > Ελέγχει αν ενεργοποιήθηκε ο συναγερμός και η σειρήνα. > Ελέγχει αν εστάλη μήνυμα όταν χτυπάει ο συναγερμός. > Ελέγχει αν τα φώτα του αυτοκινήτου ανάβουν όταν χτυπάει ο συναγερμός. > Ενημερώνει τον οδηγό με γραπτό μήνυμα σε περίπτωση κλοπής, φωτιάς ή πτώση τάσης της μπαταρίας στο αυτοκίνητο. 2.2.2 Περιγραφή του συστή»ατο Το σύστημα συναγερμού αυτοκινήτου ειδοποιεί σε περίπτωση κλοπής, φωτιάς καθώς και πτώσης τάσης της μπαταρίας του αυτοκινήτου στέλνοντας ένα γραπτό μήνυμα στον ιδιοκτήτη του αυτοκινήτου. Αν υπάρξει ο κίνδυνος κλοπής ή φωτιάς τότε το σύστημα θα προσπαθήσει να τον αποτρέψει παράγοντας ένα ισχυρό ηχητικό σήμα και αναβοσβήνοντας τα φώτα του αυτοκινήτου. 2.2.3 Τι προσφέρει στην αγορά Ασφαλέστερη και πιο αξιόπιστη προστασία για το αυτοκίνητο μας από τους διάφορους κίνδυνους που το απειλούν όπως παραβίαση και φωτιά. 2.2.4 Προτεραιότητε > Λειτουργικότητα > Χαμηλό κόστος > Ασφάλεια > Ευχρηστία Καγιόγλου Δημήτριος-Μπάρκας Μάριος -15-
2.3 Ανάλυση Επικινδυνότητας Εξετάσαμε τους πιθανούς κινδύνους που μπορεί να προκύψουν κατά τη διάρκεια της υλοποίησης του συναγερμού, οι οποίοι μπορεί να έχουν αντίκτυπο τόσο στο περιβάλλον όσο και στην ανθρώπινη ζωή. Ο κίνδυνος που εντοπίστηκε είναι: η καταστροφή της περιουσίας του χρήστη. Παραθέτουμε το σχετικό διάγραμμα για την ανάλυση της επικινδυνότητας. ΣΕ ΠΙΘΑΝΕΣ ΔΙΑΒΡΩΤΙΚΕΣ ΣΥΝΘΗΚΕΣ ΣΕ ΚΑΤΑΣΤΑΣΗ ALARM Καγιόγλου Δημήτριος-Μπάρκας Μάριος -16-
2.4 Διάγραμμα εκτίμησης επικινδυνότατες (ALARP) Πιθανότητα Δριμύτητα Ασήμαντη Μέτρια Σημαντική Καταστροφική ALARP = As Low As Reasonably = Πριν την μείωση της επικινδυνότητας = Μετά την μείωση της επικινδυνότητας Καγιόγλου Δημήτριος-Μπάρκας Μάριος -17-
2.5 Αρχιτεκτονικό Σχέδιο Καγιόγλου Δημήτριος-Μπάρκας Μάριος -18-
2.6 Σχέδιο R&D 2.6.1 Αρχικό σχέδιο Ο συναγερμός ελέγχει την κίνηση στην καμπίνα του αυτοκινήτου, το άνοιγμα κάποιας πόρτας, την τάση της μπαταρίας του αυτοκινήτου, οποιαδήποτε κραδασμό μπορεί να παρατηρηθεί στο αμάξωμα καθώς και την ύπαρξη καπνού στην καμπίνα του αυτοκινήτου με την προϋπόθεση ο συναγερμός να έχει να ενεργοποιηθεί εκ των προτέρων από τον ιδιοκτήτη του. Ο προγραμματισμός του project έγινε με το αναπτυξιακό STK 500 το οποίο δέχεται τα διάφορα σήματα από τα υποσυστήματα του (δηλαδή τα αισθητήρια κραδασμού, κίνησης, καπνού, μπαταρίας καθώς και τους διακόπτες παραβίασης πορτών) και δίνει σήμα στους ενεργοποιητές του (buzzer, gsm modem, leds) να ειδοποιήσουν τον ιδιοκτήτη με κάθε μέσο ηχητικό και οπτικό για την οποιαδήποτε μεταβολή της κατάστασης του αυτοκινήτου. 2.6.2 Αρχιτεκτονική προϊόντος 1. Αισθητήρια-Διακόπτες > Αισθητήριο κραδασμού. > Αισθητήριο κίνησης (υπέρυθρες). > Διακόπτες παραβίασης πόρτας. > Αισθητήριο μπαταρίας (με χρήση διόδου Zenner). > Αισθητήριο καπνού. 2. Ενεργοποιητές > Σειρήνα ηχητική. > Led ενεργοποίησης - απενεργοποίησης του συστήματος συναγερμού. > Leds που χρησιμοποιούνται ως ALARM του αυτοκινήτου για οπτικό συναγερμό. > GSM modem για αποστολή μηνύματος. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -19-
3. Hardware > Αυτοκινητάκι Dodge. > Σύστημα RF. > Τροφοδοτικό υπολογιστή. > Leds. > Διακόπτες. > Αντιστάσεις,δίοδοι, πυκνωτές, relay, πλακέτες. > Σειριακές θύρες. 4. Software Στο software του συστήματος παρατηρείται ένας συνεχής κυκλικός έλεγχος της κατάστασης του αυτοκινήτου έτσι ώστε όταν παρατηρηθεί οποιαδήποτε μεταβολή σε αυτή να ενεργοποιείται ο συναγερμός και να ειδοποιεί τον ιδιοκτήτη με κάθε μέσο οπτικό και ηχητικό καθώς και με γραπτό μήνυμα στο κινητό του τηλέφωνο. 2.6.3 Υλοποίηση Προγραμματισμός Το σύστημα προγραμματίστηκε σε γλώσσα C και μεταγλωττίστηκε από το AVR Studio, που παρέχονται με το αναπτυξιακό μας, STK 500 της ATMEL. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -20-
ΚΕΦΑΛΑΙΟ 3 3.1 Λογικό διάγραμμα ( Σχεδίαση συστήματος) 3.2 Κωδικοποίηση 3.3 Test κλειστού κουτιού 3.4 Test ανοιχτού κουτιού 3.5 Μηχανολογικό σχέδιο 3.6 Ηλεκτρολογικό σχέδιο 3.7 Ηλεκτρονικό σχέδιο Καγιόγλου Δημήτριος-Μπάρκας Μάριος -21-
3.1 Λογικό Διάγραμμα Προγράμματος Καγιόγλου Δημήτριος-Μπάρκας Μάριος -22-
3.1.1 Υπορουτίνα Συναγερμού Αρχή Ενεργοποίηση Σειρήνας,Φώτων, SMS ί ΟΧΙ Επιστροφή σ,ο κυρίως πρόγραμμα Καγιόγλου Δημήτριος-Μπάρκας Μάριος -23-
3.2 Κωδικοποίηση This program was produced by the CodeWizardAVR V1.25.2 Evaluation Automatic Program Generator Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : 4L Version : Date : 23/12/2007 Author : Freeware, for evaluation and non-commercial use only Company : Department of Industrial Informatics, TEI of Kavala Comments: Chip type : ATmega8515L Program type : Application Clock frequency : 4,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 128 #include <mega8515.h> #include <delay.h> #include <stdio.h> #include <io.h> //Για τον επεξεργαστή ATmega8515. //Για την συνάρτηση delay. //Για την συνάρτηση putchar(). //Για τον ορισμό των καταχωρητών του επεξεργαστή. #define CR 0x0D #define LF 0x0A //Τα CR και LF χρησιμοποιούνται για την αποστολή του ENTER. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -24-
int i=5; int SMSROBE; int SMSBATTERY; int SMSFIRE; int SMSABUSE; //Χρόνος ώστε ο συναγερμός να χτυπάει για 5 δευτερόλεπτα αν //βέβαια δεν τον απενεργοποιήσουμε. //Για μήνυμα κλοπής. //Για μήνυμα μπαταρίας. //Για μήνυμα φωτιάς. //Για μήνυμα πιθανού κινδύνου. void SendSMSFwtias() { if (SMSFIRE==1) { pnntf("at+cmss=12,y '6933360370\""); putchar( CR ); //CR putchar( LF ); //LF } //if //Στείλε το μήνυμα που είναι αποθηκευμένο στη //θέση 12 της κάρτας SIM στο κινητό τηλέφωνο //με αριθμό 6933360370. }//SendSMSFwtias() void SendSMSKlopis() { if (SMSROBE==1) { pnntf("at+cmss=13,y '6933360370Y ); putchar( CR ); //CR putchar( LF ); //LF } //if //Στείλε το μήνυμα που είναι αποθηκευμένο στη //θέση 13 της κάρτας SIM στο κινητό τηλέφωνο //με αριθμό 6933360370. }//SendSMSKlopis() Καγιόγλου Δημήτριος-Μπάρκας Μάριος -25-
void SendSMSBatarias() { if (SMSBATTERY==1) { printf("at+cmss=14,\"6933360370\""); //Στείλε το μήνυμα που είναι αποθηκευμένο στη putchar( CR ); //CR //θέση 14 της κάρτας SIM στο κινητό τηλέφωνο putchar( LF ); //LF //με αριθμό 6933360370. } //if }//SendSMSBatarias() void SendSMSAbuse() { if (SMSABUSE==1) { printf("at+cmss=31,\"6933360370\""); //Στείλε το μήνυμα που είναι αποθηκευμένο στη putchar( CR ); //CR //θέση 31 της κάρτας SIM στο κινητό τηλέφωνο putchar( LF ); //LF //με αριθμό 6933360370. } //if }//SendSMSAbuse() void synagermos() { PORTC.1=1; PORTC.2=1; PORTC.3=1; delay_ms(500); PORTC.1=0; PORTC.2=0; PORTC.3=0; delay_ms(500); //Ενεργοποίησε τη σειρήνα. //Ενεργοποίησε τα πίσω φώτα. //Ενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. //Απενεργοποίησε τη σειρήνα. //Απενεργοποίησε τα πίσω φώτα. //Απενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -26-
if(pind.3==0){ PORTC.1=0; PORTC.2=0; PORTC.3=0; i=0; } //if //Αν ο χρήστης απενεργοποιήσει το σύστημα πριν //το πέρας των 5 δευτερολέπτων τότε απενεργο- //ποίησε την σειρήνα τα πίσω και τα μπροστά //φώτα. //Μηδένισε τον μετρητή των 5 δευτερολέπτων. } //synagermos void AisthitirioKradasmou() { if(pinb.0==1) { //Είσοδος για το αισθητήριο κραδασμού. while(i>0) { synagermos(); i--; } //while //Οσο δεν έχουν περάσει τα 5 δευτερόλεπτα //χτύπα το συναγερμό. //Μείωσε τον μετρητή των δευτερολέπτων κατά 1. SendSMSAbuse(); //Στείλε το μήνυμα κακομεταχείρισης. SMSABUSE=0; //Κάνε την μεταβλητή SMSABUSE=0 για να σταλεί } //if //το μήνυμα μια φορά. i=5; } //AisthitirioKradasmou Καγιόγλου Δημήτριος-Μπάρκας Μάριος -27-
void AisthitiriaPortwn() { if(pinb.4==1) { //Είσοδος για τα αισθητήρια πορτών. while(i>0) { synagermos(); i---; } //while //Οσο δεν έχουν περάσει τα 5 δευτερόλεπτα //χτύπα το συναγερμό. //Μείωσε τον μετρητή των δευτερολέπτων κατά 1. } //if SendSMSKlopis(); SMSROBE=0; //Στείλε το μήνυμα για κλοπή. //Κάνε την μεταβλητή SMSROBE=0 για να σταλεί //το μήνυμα μια φορά. i=5; } //AisthitiriaPortwn void AisthitirioKinisis() { if(pinb.1==1) { //Είσοδος για το αισθητήριο κίνησης. while(i>0) { synagermos(); i--; //Όσο δεν έχουν περάσει τα 5 δευτερόλεπτα //χτύπα το συναγερμό. //Μείωσε τον μετρητή των δευτερολέπτων κατά 1. } //while } //if SendSMSKlopis(); SMSROBE=0; //Στείλε το μήνυμα για κλοπή. //Κάνε την μεταβλητή SMSROBE=0 για να σταλεί //το μήνυμα μια φορά. } //AisthitirioKinisis Καγιόγλου Δημήτριος-Μπάρκας Μάριος -28-
void AisthitirioKapnou() { if(pinb.3==1) { //Είσοδος για το αισθητήριο καπνού. while(i>0) { synagermos(); i--; } //while //Οσο δεν έχουν περάσει τα 5 δευτερόλεπτα //χτύπα το συναγερμό. //Μείωσε τον μετρητή των δευτερολέπτων κατά 1. } //if SendSMSFwtias(); SMSFIRE=0; //Στείλε το μήνυμα για φωτιά. //Κάνε την μεταβλητή SMSFIRE=0 για να σταλεί //το μήνυμα μια φορά. i=5; } //AisthitirioKapnou() void AisthitirioBatarias() { if (PINB.2==1) { //Είσοδος για το αισθητήριο της μπαταρίας. } //if SendSMSB atarias(); SMSBATTERY=0; //Στείλε το μήνυμα για χαμηλή μπαταρία. //Κάνε την μεταβλητή SMSBATTERY=0 για να σταλεί //το μήνυμα μια φορά. } //AisthitirioMpatarias() Καγιόγλου Δημήτριος-Μπάρκας Μάριος -29-
void Energopoihsh() { SMSROBE=1; SMSBATTERY= 1; SMSFIRE=1; SMSABUSE=1; PORTC.1=1; PORTC.2=1; PORTC.3=1; delay_ms(500); PORTC.1=0; PORTC.2=0; PORTC.3=0; delay_ms(500); //Αρχικοποίησε την μεταβλητή SMSROBE. //Αρχικοποίησε την μεταβλητή SMSBATTERY. //Αρχικοποίησε την μεταβλητή SMSFIRE. //Αρχικοποίησε την μεταβλητή SMSABUSE. //Ενεργοποίησε τη σειρήνα. //Ενεργοποίησε τα πίσω φώτα. //Ενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. //Απενεργοποίησε τη σειρήνα. //Απενεργοποίησε τα πίσω φώτα. //Απενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. } //Energopoihsh void Apenergopoihsh() { PORTC.1=1; PORTC.2=1; PORTC.3=1; delay_ms(500); //Ενεργοποίησε τη σειρήνα. //Ενεργοποίησε τα πίσω φώτα. //Ενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. } //Apenergopoihsh Καγιόγλου Δημήτριος-Μπάρκας Μάριος -30-
// External Interrupt 1 service routine interrupt [EXT_INT1] void ext_int1_isr(void) { // Place your code here PORTC.0=1; //Με την ενεργοποίηση του interrupt ανάβει το LED ως //ένδειξη ότι το σύστημα είναι ενεργό. Energopoihsh(); //Καλεί την ρουτίνα ενεργοποίησης. while(portc.0==1) { //Οσο το σύστημα είναι ενεργό καλεί τις //συναρτήσεις των αισθητηρίων. AisthitirioKradasmou(); AisthitirioBatariasO; AisthitirioKini sis(); AisthitirioKapnou(); AisthitiriaPortwn(); if(pind.3==0) { PORTC.0=0; Apenergopoihsh(); PORTC.1=0; PORTC.2=0; PORTC.3=0; break; } //if //Οταν απενεργοποιηθεί το interrupt. //Σβήνει το LED ενεργοποίησης. //Καλεί την ρουτίνα απενεργοποίησης. //Απενεργοποιεί την σειρήνα. //Απενεργοποιεί τα πίσω φώτα. //Απενεργοποιεί τα μπροστά φώτα. } //interrupt 1 } //while Καγιόγλου Δημήτριος-Μπάρκας Μάριος -31-
// Declare your global variables here void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTA=0xFF; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTB=0xFF; DDRB=0x00; // Port C initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1 PORTC=0xFF; DDRC=0xFF; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0xFF; DDRD=0xFF; Καγιόγλου Δημήτριος-Μπάρκας Μάριος -32-
// Port E initialization // Func2=In Func1=In Func0=In // State2=T State1=T State0=T PORTE=0xFF; DDRE=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=ffh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=ffffh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; Καγιόγλου Δημήτριος-Μπάρκας Μάριος -33-
OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: On // INT1 Mode: Rising Edge // INT2: Off GICR =0x80; MCUCR=0x0C; EMCUCR=0x00; GIFR=0x80; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 115200 //GSM MODEM. UBRRL=4000000/16/115200-1; //Καθορισμός του Baud Rate UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; Καγιόγλου Δημήτριος-Μπάρκας Μάριος -34-
// Global enable interrupts #asm("sei") while (1) { // Place your code here PORTC.0=0; PORTC.1=0; PORTC.2=0; PORTC.3=0; PORTC.4=0; PORTC.5=0; PORTC.6=0; PORTC.7=0; //Αρχικοποίησε τα PIN της πόρτας C } //while } //main Καγιόγλου Δημήτριος-Μπάρκας Μάριος -35-
3.3 Γ ενικό Σχέδιο Ελέγχου Κλειστού Κουτιού Γενικό Σχέδιο Ελέγχου: Το γενικό σχέδιο ελέγχου περιέχει περιπτώσεις καθώς και διαδικασίες αντιμετώπισης πιθανών προβλημάτων που μπορούν να δημιουργηθούν κατά την διάρκεια της υλοποίησης του λογισμικού. Περιπτώσεις Ελέγχου: Οι περιπτώσεις ελέγχου περιέχουν τα πιθανά λάθη που μπορεί να παρουσιάσει το λογισμικό (αλγόριθμος), τις τιμές που μπορεί να δεχθεί (τιμές εισαγωγής), να απορρίψει, να επεξεργάζεται και να εμφανίζει στην έξοδο. Διαδικασίες Ελέγχου: Στις διαδικασίες ελέγχου προσπαθήσαμε μέσα από τα λάθη που είναι πολύ πιθανά να γίνουν, να ανακαλύψουμε τρόπους αντιμετώπισης αυτών, προλαμβάνοντας έτσι την κατάρρευση του ίδιου του λογισμικού την ασφάλεια του χρήστη που το χρησιμοποιεί καθώς και όσους συνδέονται άμεσα και έμμεσα με αυτό. Σκοπός του Ελέγχου είναι: Ο έλεγχος του λογισμικού. Ο έλεγχος θα αφορά : S Ύπαρξη λαθών στον κώδικα του προγράμματος. S Ανεπαρκής πληρότητα λογισμικού βάσει προδιαγραφών. S Ύπαρξη λαθών, προερχόμενα από εξωτερικούς παράγοντες όπως οι χρήστες του λογισμικού. S Συμβατότητα και ενέργεια λογισμικού σε επικίνδυνες συνθήκες. Για τον έλεγχο θα χρησιμοποιηθούν οι εξής μέθοδοι: S Ισοδύναμες κλάσεις. S Οριακές τιμές. S Εικασίες λανθασμένων τιμών. S Εικασίες λαθών. S Διαδικασίες ελέγχου. S Έλεγχος ανοιχτού κουτιού. S Έλεγχος κλειστού κουτιού. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -36-
Κριτήρια τερματισμού του ελέγχου: Ο έ λ ε γ χ ο ς τ ο υ λ ο γ ισ μ ικ ο ύ θ α τ ε ρ μ α τ ίσ ε ι ό τ α ν δ ε ν θ α ε ν τ ο π ισ τ ο ύ ν ά λ λ α λά θ η. Μ ε τ η ν σ ή μ α ν σ η τ ο υ τ ε ρ μ α τ ισ μ ο ύ θ α π ρ έπ ει: 1. Τ ο λ ο γ ισ μ ικ ό ν α π λ η ρ ε ί υ ψ η λ ά π ο ιο τ ικ ά κ ρ ιτή ρ ια. 2. Ν α μ η ν υ π ά ρ χ ο υ ν ή κ α ι ε ά ν υ π ά ρ χ ο υ ν λ ά θ η, ν α μ η ν θ έ τ ο υ ν σ ε κ ίν δ υ ν ο τ ο χ ρ ή σ τ η. 3. Ν α μ η ν υ π ά ρ χ ο υ ν ή κ α ι ε ά ν υ π ά ρ χ ο υ ν λ ά θ η, ν α μ η ν α λ λ ο ιώ ν ο υ ν τη π ο ιό τ η τ α τ ο υ π ρ ο ϊό ν τ ο ς 3.3.1 Διαδικασίες Ελέγχου 1.Διαδικασίες Ελέγχου: Σε περίπτωση που παρατηρηθεί οποιοσδήποτε κραδασμός. Περιπτώσεις Ελέγχου: Εικασίες λαθών: Δ ε ν θ α σ η μ ά ν ε ι η σ ε ιρ ή ν α σ τ η ν π ρ ο κ α θ ο ρ ισ μ έ ν η τιμ ή. Δ ε ν θ α σ τ α λ ε ί μ ή ν υ μ α μ έ σ ω τ ο υ G S M m o d e m σ τ ο ν ιδ ιο κ τή τη. Δ ε ν θ α α ν α β ο σ β ή σ ο υ ν τ α le d s (φ ώ τ α )τ ο υ α υ τ ο κ ιν ή τ ο υ. Διαδικασίες Ελέγχου: Σ ε π ε ρ ίπ τ ω σ η π ο υ π α ρ α τ η ρ η θ ε ί ο π ο ιο σ δ ή π ο τ ε κ ρ α δ α σ μ ό ς σ τ ο α υ τ ο κ ίν η τ ο τ ό τ ε τ ο α ισ θ η τ ή ρ ιο κ ρ α δ α σ μ ο ύ θ α ενερ γ ο π ο ιη θ ε ί. Α π ο σ τ ο λ ή σ ή μ α τ ο ς σ τ ο ν μ ικ ρ ο ε λ ε γ κ τ ή. Αναμένεται : Ε ν ε ρ γ ο π ο ίη σ η τ ο υ b u zzer. Ά ν α μ μ α - σ β ή σ ιμ ο ε μ π ρ ό ς κ α ι π ίσ ω φ ώ τ ω ν τ ο υ α υ τ ο κ ιν ή τ ο υ. Α π ο σ τ ο λ ή μ η ν ύ μ α τ ο ς μ έ σ ω τ ο υ G S M m o d e m : POSSIBLE CAR ABUSE σ τ ο ν ιδ ιο κ τή τη τ ο υ α υ τ ο κ ιν ή τ ο υ. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -37-
2. Διαδικασίες Ελέγχου: Σε περίπτωση που παρατηρηθεί καπνός στην καμπίνα του αυτοκινήτου. Περιπτώσεις Ελέγχου: Εικασίες λαθών: Δ ε ν θ α σ η μ ά ν ε ι η σ ε ιρ ή ν α σ τ η ν π ρ ο κ α θ ο ρ ισ μ έ ν η τιμ ή Δ ε ν θ α σ τ α λ ε ί μ ή ν υ μ α μ έ σ ω τ ο υ G S M m o d e m σ τ ο ν ιδ ιο κ τή τη. Δ ε ν θ α α ν α β ο σ β ή σ ο υ ν τ α le d s (φ ώ τ α )τ ο υ α υ τ ο κ ιν ή τ ο υ. Διαδικασίες Ελέγχου: Α ν ε ν τ ο π ισ τ ε ί μ ικ ρ ή π ο σ ό τ η τ α κ α π ν ο ύ σ τ η ν κ α μ π ίν α τ ο υ α υ τ ο κ ιν ή τ ο υ τ ό τ ε θ α α ν ιχ ν ε ύ ε τ α ι α π ό τ ο α ισ θ η τ ή ρ ιο κ α π ν ο ύ. Α π ο σ τ ο λ ή σ ή μ α τ ο ς σ τ ο ν μ ικ ρ ο ε λ ε γ κ τ ή. Αναμένεται : Ε ν ε ρ γ ο π ο ίη σ η τ ο υ b u zzer. Ά ν α μ μ α - σ β ή σ ιμ ο ε μ π ρ ό ς κ α ι π ίσ ω φ ώ τ ω ν τ ο υ α υ τ ο κ ιν ή τ ο υ. Α π ο σ τ ο λ ή μ η ν ύ μ α τ ο ς μ έ σ ω τ ο υ κ ινη τ ο ύ : CAR ON FIRE σ τ ο ν ιδ ιο κ τή τη τ ο υ α υ τ ο κ ινή τ ο υ. 3. Διαδικασίες Ελέγχου: Αν είναι ενεργοποιημένος ο συναγερμός και ανοίξει οποιαδήποτε πόρτα. Περιπτώσεις Ελέγχου: Εικασίες λαθών: Δ ε ν θ α σ η μ ά ν ε ι η σ ε ιρ ή ν α σ ε π ε ρ ίπ τ ω σ η π α ρ α β ία σ η ς τ η ς π ό ρ τ α ς. Δ ε ν θ α σ τ α λ ε ί μ ή ν υ μ α μ έ σ ω τ ο υ G S M m o d e m σ τ ο ν ιδ ιο κ τή τη Δ ε ν θ α α ν α β ο σ β ή σ ο υ ν τ α φ ώ τ α τ ο υ α υ τ ο κ ιν ή τ ο υ Καγιόγλου Δημήτριος-Μπάρκας Μάριος -38-
Διαδικασίες Ελέγχου: Αν παραβιαστεί οποιαδήποτε πόρτα τότε ο διακόπτης επαφής θα ανοίξει. Αποστολή σήματος στον μικροελεγκτή. Αναμένεται: Ενεργοποίηση του buzzer. Άναμμα - σβήσιμο εμπρός και πίσω φώτων του αυτοκινήτου. Αποστολή μηνύματος μέσω του GSM modem: CAR VIOLATED στον ιδιοκτήτη του αυτοκινήτου. 4.Διαδικασίες Ελέγχου:Το αυτοκίνητο έχει χαμηλή μπαταρία. Περιπτώσεις Ελέγχου: Εικασίες λαθών: Δεν θα σταλεί μήνυμα μέσω του GSM modem στον ιδιοκτήτη για να ειδοποιήσει για την χαμηλή τάση της μπαταρίας. Διαδικασίες Ελέγχου: Μείωση της τάσης του αυτοκινήτου κάτω από ένα προκαθορισμένο όριο. Αποστολή σήματος στον μικροελεγκτή. Αναμένεται : Αποστολή μηνύματος CAR BATTERY LOW, μέσω του GSM modem στον ιδιοκτήτη του αυτοκινήτου. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -39-
5.Διαδικασίες Ελέγχου: Αν με οποιαδήποτε τρόπο υπάρξει παράνομη εισαγωγή στη καμπίνα του αυτοκινήτου με οποιοδήποτε άλλο τρόπο εκτός των πορτών, τότε θα ενεργοποιηθεί το αισθητήριο ανίχνευσης κίνησης. Περιπτώσεις Ελέγχου: Εικασίες λαθών: Δεν θα σημάνει η σειρήνα σε περίπτωση κίνησης μέσα στη καμπίνα του αυτοκινήτου. Δεν θα σταλεί μήνυμα μέσω του GSM modem στον ιδιοκτήτη, σε περίπτωση ανίχνευσης κίνησης μέσα στην καμπίνα. Δεν θα αναβοσβήσουν τα φώτα του αυτοκινήτου σε περίπτωση ανίχνευσης κίνησης μέσα στην καμπίνα. Διαδικασίες Ελέγχου: Αν παραβιαστεί με οποιασδήποτε τρόπο ο χώρος της καμπίνας τότε ο ανιχνευτής υπερύθρων θα ανιχνεύσει κίνηση. Αποστολή σήματος στον μικροελεγκτή. Αναμένεται: Άναμμα - σβήσιμο εμπρός και πίσω φώτων του αυτοκινήτου. Αποστολή μηνύματος μέσω του GSM modem με περιεχόμενο CAR VIOLATED στον ιδιοκτήτη του αυτοκινήτου. Ενεργοποίηση του buzzer. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -40-
3.3.2 Π εριπτώ σεις ελέγχου (λογισμικού) κλειστού κουτιού Έλεγχος Συνθήκης 1 Πρόταση Προδιαγραφή S1 Αν με οποιαδήποτε τρόπο παρατηρηθεί οποιοσδήποτε κραδασμός θα ενεργοποιηθεί το buzzer τα φώτα του αυτοκινήτου και θα σταλεί sms στον ιδιοκτήτη Θέτουμε συνθήκες (C) και Ενέργειες (Ε): S C l-εντοπισμός μετατόπισης του αυτοκινήτου. S C l-ενεργοποιημένος συναγερμός S Ε1 - Ενεργοποιείται το buzzer. S Ε2-Αποστολή Μηνύματος μέσω του κινητού S Ε3-Αναβοσβήνουν τα φώτα του αυτοκινήτου. Πίνακας Απόφασης C- Ε Περίπτωση 1 Περίπτωση 2 Περίπτωση 3 Περίπτωση 4 C1 0 0 1 1 C2 0 1 0 1 E1 0 0 0 1 E2 0 0 0 1 E3 0 0 0 1 Παρακάτω ελέγχουμε - το κώδικα του C πηγαίου αρχείου CarAlarm.c της - συνάρτησης AisthitirioKradasmou() - ΓΡΑΜΜΗ 108:0 ως 123:0 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -41-
Έλεγχος Κλειστού κουτιού Έ λεγχος συνθήκης Τιμές Εισόδου Π ερίπτωση Π εδίο Τιμών Α ναμενόμενα Α ποτελέσματα Π ροσληφθέντα Α ποτελέσματα ΕΛΕΓΧΟΣ 1 Σήμα Κ ραδασμού=0 Έ γκυρη Κλάση Σήμα Κραδασμού=0 Συναγερμός σε ετοιμότητα. Συναγερμός σε ετοιμότητα. V 1) Ενεργοποίηση της 1) Ενεργοποίηση της σειρήνας σειρήνας 2)Αποστολή 2)Αποστολή 2 Σήμα Κραδασμού=1 Άκυρη Κλάση Σήμα Κραδασμού=1 Μ ηνύματος μέσω GSM m odem Μ ηνύματος μέσω του GSM m odem V 3)Αναβοσβήνουν τα 3)Αναβοσβήνουν τα φώτα του φώτα του αυτοκινήτου αυτοκινήτου. Σήμα 3 Δεν υπάρχουν Ο ριακές Τιμές Κραδασμού! =0 Σήμα Κραδασμού!=1 Σήμα 4 Δεν υπάρχουν Εικασίες Τιμών Διακόπτη!=0 Σήμα Διακόπτη!=1 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -42-
Έλεγχος Συνθήκης 2 Πρόταση Προδιαγραφή S2 Σε περίπτωση που παρατηρηθεί καπνός στην καμπίνα του αυτοκινήτου ενεργοποιείται το buzzer τα φώτα του αυτοκινήτου και στέλνει sms στον ιδιοκτήτη. Θέτουμε συνθήκες (C) και Ενέργειες (Ε): S C1 -Εντοπισμός καπνού στην καμπίνα. S C2- Ενεργοποιείται το buzzer. S Ε1 - Ενεργοποιείται το buzzer. S Ε2-Αποστολή Μηνύματος μέσω του κινητού S Ε3-Αναβοσβήνουν τα φώτα του αυτοκινήτου. Πίνακας Απόφασης C- Ε Περίπτωση 1 Περίπτωση 2 Περίπτωση 3 Περίπτωση 4 C1 0 0 1 1 C2 0 1 0 1 E1 0 0 0 1 E2 0 0 0 1 E3 0 0 0 1 Παρακάτω ελέγχουμε - το κώδικα του C πηγαίου αρχείου CarAlarm.c της - συνάρτησης AisthitirioKapnou() - ΓΡΑΜΜΗ 162:0 ως 177:0 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -43-
Έλεγχος Κλειστού κουτιού Έ λεγχος συνθήκης Τιμές Εισόδου Π ερίπτωση Πεδίο Τιμών Α ναμενόμενα Α ποτελέσματα Π ροσληφθείσα Α ποτελέσματα ΕΛΕΓΧΟΣ 1 Σήμα Κ απνού= 0 Έ γκυρη Κλάση Σήμα Κ απνού= 0 Συναγερμός σε ετοιμότητα. Συναγερμός σε ετοιμότητα. V 1) Ενεργοποίηση 1)Ενεργοποίηση της σειρήνας της σειρήνας 2 Σήμα Κ απνού= 1 Άκυρη Κλάση Σήμα Καπνού = 1 2)Αποστολή Μ ηνύματος μέσω του GSM modem. 3)Αναβοσβήνουν τα 2)Αποστολή Μ ηνύματος μέσω του GSM modem. 3)Αναβοσβήνουν V φώτα του τα φώτα του αυτοκινήτου αυτοκινήτου. 3 Δεν υπάρχουν Αφού το ψηφιακό έχει 2 καταστάσεις 0 ή 1. Ο ριακές Τιμές Σήμα Κ απνού!= 0 Σήμα Κ απνού!= 1 4 Δεν υπάρχουν Αφού το ψηφιακό έχει 2 καταστάσεις 0 ή 1. Εικασίες Τιμών Σήμα Δ ιακόπτη!= 0 Σήμα Δ ιακόπτη!= 1 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -44-
Έ λεγχος Συνθήκης 3 Πρόταση Προδιαγραφή S3 Αν είναι ενεργοποιημένος ο συναγερμός και ανοίξει οποιαδήποτε πόρτα τότε ενεργοποιείται το buzzer^ φώτα του αυτοκινήτου και στέλνει sms στον ιδιοκτήτη Θέτουμε συνθήκες (C) και Ενέργειες (Ε): S C l-ενεργοποιημένος Συναγερμός S C l-άνοιγμα κάποιας πόρτας S Ε1 - Ενεργοποιείται το buzzer. S Ε2-Αποστολή Μηνύματος μέσω του κινητού. S Ε3- Αναβοσβήνουν τα φώτα του αυτοκινήτου. Πίνακας Απόφασης C- Ε Περίπτωση 1 Περίπτωση 2 Περίπτωση 3 Περίπτωση 4 C1 0 0 1 1 C2 0 1 0 1 E1 0 0 0 1 E2 0 0 0 1 E3 0 0 0 1 Παρακάτω ελέγχουμε - το κώδικα του C πηγαίου αρχείου CarAlarm.c της - συνάρτησης AisthitiriaPortwn() - ΓΡΑΜΜΗ 126:0 ως 141:0 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -45-
Έλεγχος Κλειστού κουτιού Έ λεγχος συνθήκης Τιμές Εισόδου Π ερίπτωση Πεδίο Τιμών Α ναμενόμενα Α ποτελέσματα Π ροσληφθείσα Α ποτελέσματα ΕΛΕΓΧΟΣ 1 Σήμα διακόπτη= 0 (κλειστός) Έ γκυρη Κλάση Σήμα Διακόπτη=0 Συναγερμός σε ετοιμότητα. Συναγερμός σε ετοιμότητα. V 1) Ενεργοποιείται το 1) Ενεργοποιείται το buzzer. buzzer. 2 Σήμα διακόπτη= Γ (ανοιχτός) Άκυρη Κλάση Σήμα Διακόπτη=1 2)Αποστολή Μ ηνύματος μέσω του GSM m odem 3)Αναβοσβήνουν 2)Αποστολή Μ ηνύματος μέσω του GSM m odem 3) Αναβοσβήνουν V τα φώτα του τα φώτα του αυτοκινήτου αυτοκινήτου. Δεν υπάρχουν Αφού ο Σήμα 3 διακόπτης έχει 2 Ο ριακές Τιμές Διακόπτη!=0 Σήμα V καταστάσεις 0 Διακόπτη!=1 ή 1 Δεν υπάρχουν Αφού ο Σήμα 4 διακόπτης έχει 2 Εικασίες Τιμών Διακόπτη!=0 Σήμα V καταστάσεις 0 Διακόπτη!=1 ή 1 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -46-
Έ λεγχος Συνθήκης 4 Πρόταση Προδιαγραφή S4 Σε περίπτωση που η τάση της μπαταρίας είναι χαμηλή στέλνει sms στον ιδιοκτήτη Θέτουμε συνθήκες (C) και Ενέργειες (Ε): S C l-ενεργοποιημένος Συναγερμός S C l-μπαταρία σε χαμηλά επίπεδα.(<9 V). S Ε1-Αποστολή Μηνύματος με περιεχόμενο CAR BATTERY LOW. Πίνακας Απόφασης C- Ε Περίπτωση 1 Περίπτωση 2 C1 0 1 C2 0 1 E1 0 1 Παρακάτω ελέγχουμε - το κώδικα του C πηγαίου αρχείου CarAlarm.c της - συνάρτησης AisthitirioMpatarias() - ΓΡΑΜΜΗ 180:0 ως 188:0 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -47-
Έλεγχος Κλειστού κουτιού Έ λεγχος συνθήκης Τιμές Εισόδου Π ερίπτωση Π εδίο Τιμών Α ναμενόμενα Α ποτελέσματα Π ροσληφθέντα Α ποτελέσματα ΕΛΕΓΧΟΣ Συναγερμός σε Συναγερμός σε 1 Τ ά σ η = 9 ν Έ γκυρη Κλάση Τάση =9V κατάσταση ετοιμότητας. κατάσταση ετοιμότητας. Συναγερμός σε Συναγερμός σε 2 Τάση =11V Έ γκυρη Κλάση Τάση >=9V κατάσταση ετοιμότητας. κατάσταση ετοιμότητας. 3 Τάση =10V Έ γκυρη Κ λάση Τάση >9V Συναγερμός σε κατάσταση ετοιμότητας. Συναγερμός σε κατάσταση ετοιμότητας. 5 Τάση =9.1V Οριακές Τιμές Τάση >=9V Συναγερμός σε κατάσταση ετοιμότητας. Συναγερμός σε κατάσταση ετοιμότητας. Αποστολή Αποστολή 6 Τάση =8.9V Οριακές Τιμές Τάση <9V Μ ηνύματος: CAR BATTERY Μ ηνύματος: CAR BATTERY L O W L O W Δεν έχουμε καμία 7 Τ ά σ η = 100ν Εικασίες Τιμών Τάση >>9V αντίδραση από το σύστημα. Χ Αποστολή 8 Τάση WOV Εικασίες Τιμών Τάση <<9V Μ ηνύματος: CAR BATTERY L O W Χ Καγιόγλου Δημήτριος-Μπάρκας Μάριος -48-
Έλεγχος Συνθήκης 5 Πρόταση Προδιαγραφή S5 Αν με οποιαδήποτε τρόπο έχουμε παράνομη κίνηση στην καμπίνα του αυτοκινήτου ενώ είναι ενεργοποιημένος ο συναγερμός, τότε θα ενεργοποιείται το buzzer τα φώτα του αυτοκινήτου και θα στέλνει sms στον ιδιοκτήτη. Θέτουμε συνθήκες (C) και Ενέργειες (Ε): S C1 -Εντοπισμός κίνησης στην καμπίνα. S C l-ενεργοποιημένος συναγερμός S Ε1 - Ενεργοποιείται το buzzer. S Ε2-Αποστολή Μηνύματος μέσω του κινητού S Ε3- Αναβοσβήνουν τα φώτα του αυτοκινήτου. Πίνακας Απόφασης C- Ε Περίπτωση 1 Περίπτωση 2 Περίπτωση 3 Περίπτωση 4 C1 0 0 1 1 C2 0 1 0 1 E1 0 0 0 1 E2 0 0 0 1 E3 0 0 0 1 Παρακάτω ελέγχουμε - το κώδικα του C πηγαίου αρχείου CarAlarm.c της - συνάρτησης AisthitirioKinisis() - ΓΡΑΜΜΗ 144:0 ως 159:0 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -49-
Έλεγχος Κλειστού κουτιού Έ λεγχος συνθήκης Τιμές Εισόδου Π ερίπτωση Π εδίο Τιμών Α ναμενόμενα Α ποτελέσματα Π ροσληφθέντα Α ποτελέσματα ΕΛΕΓΧΟΣ 1 Σήμα Κίνησης=0 Έ γκυρη Κλάση Σήμα Κίνησης=0 Συναγερμός σε ετοιμότητα. Συναγερμός σε ετοιμότητα. V 1) Ενεργοποίηση 1) Ενεργοποίηση της σειρήνας της σειρήνας 2)Αποστολή 2)Αποστολή 2 Σήμα Κίνησης=1 Άκυρη Κλάση Σήμα Κίνησης=1 Μ ηνύματος μέσω του GSM modem. Μ ηνύματος μέσω του GSM modem. V 3)Αναβοσβήνουν 3)Αναβοσβήνουν τα φώτα του τα φώτα του αυτοκινήτου αυτοκινήτου. Δεν 3 υπάρχουν. Αφού το ψηφιακό έχει 2 καταστάσεις Οριακές Τιμές Σήμα Κίνησης! =0 Σήμα Κ ίνησης!=1 0 ή 1. Δεν 4 υπάρχουν. Αφού το ψηφιακό έχει 2 καταστάσεις Εικασίες Τιμών Σήμα Διακόπτη! =0 Σήμα Διακόπτη!=1 0 ή 1. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -50-
3.4 Έ λεγχος Ανοιχτού Κ ουτιού Η σκοπιμότητα του ελέγχου του ανοιχτού κουτιού είναι να μας υποδείξει τη σωστή λειτουργία του προγράμματος με βάση τα αποτελέσματα που έχουν προκύψει από τον έλεγχο του κώδικα. Παρακάτω προχωρούμε στα μέρη που θα εξετάσουμε. Για την διευκόλυνση στην επεξήγηση των μεταβλητών δίνεται ο παρακάτω πίνακας: PORTC.0 PORTC.1 PORTC.2 PORTC.3 PINB.0 PINB.1 PINB.2 PINB.3 PINB.4 PIND.3 Led ένδειξης ενεργοποίησης του συστήματος. Buzzer. Leds (Πίσω Φώτα Αυτοκινήτου). Leds ( Εμπρός Φώτα Αυτοκινήτου). Αισθητήριο κραδασμού. Αισθητήριο κίνησης. Αισθητήριο μπαταρίας (βολτόμετρο). Αισθητήριο καπνού. Αισθητήριο επαφής πόρτας. Σε περίπτωση διακοπής της λειτουργίας του συναγερμού από το χρήστη πριν από την έλευση των 5 δευτερολέπτων.(interrupt). Καγιόγλου Δημήτριος-Μπάρκας Μάριος -51-
1 Αρχικά έχουμε τη δήλωση των βιβλιοθηκών που θα χρησιμοποιηθούν, καθώς και τη δήλωση των global μεταβλητών. #include <mega8515.h> #include<delay.h> #include<stdio.h> #include<io.h> #define CR 0x0D #define LF 0x0A //Για τον επεξεργαστή ATmega8515. //Για την συνάρτηση delay. //Για την συνάρτηση putchar(). //Για τον ορισμό των καταχωρητών του //επεξεργαστή. //Τα CR και LF χρησιμοποιούνται για την αποστολή //του Enter. int i=5; int SMSROBE; int SMSBATTERY; int SMSFIRE; int SMSABUSE; //Χρόνος ώστε ο συναγερμός να χτυπάει για 5 δευτερόλεπτα //αν βέβαια δεν τον απενεργοποιήσουμε. //Για μήνυμα κλοπής. //Για μήνυμα μπαταρίας. //Για μήνυμα φωτιάς. //Για μήνυμα πιθανού κινδύνου. 2 1 void SendSMSFwtias() { if (SMSFIRE==1) { ( T ) printf("at+cmss=12,\"6933360370y'") //Στείλε το μήνυμα που είναι putchar( CR ); //CR //αποθηκευμένο στη θέση 12 της putchar( LF ); //LF //κάρτας SIM στο κινητό τηλέφωνο //με αριθμό } //if C3 Ci) // 6933360370. }//SendSMSFwtias() Καγιόγλου Δημήτριος-Μπάρκας Μάριος -52-
3 1 void SendSMSKlopis() { if (SMSROBE==1) { printf("at+cmss=13,\"6933360370\""); putchar( CR ); //CR putchar( LF ); //LF //Στείλε το μήνυμα που είναι //αποθηκευμένο στη θέση 13 της //κάρτας SIM στο κινητό τηλέφωνο //με αριθμό 6933360370 >- 0 }//SendSMSKlopis() 4 1 void SendSMSBatarias() { if (SMSBATTERY==1) { 1 printf("at+cmss=14,\"6933360370\""); //Στείλε το μήνυμα που είναι putchar( CR ); //CR //αποθηκευμένο στη θέση 14 της 2 putchar( LF ); //LF //κάρτας SIM στο κινητό τηλέφωνο //με αριθμό 6933360370 } //if I 3 4 }// SendSMSBatarias() Καγιόγλου Δημήτριος-Μπάρκας Μάριος -53-
5 1 void SendSMSAbuse() { if (SMSABUSE==1) { ( Γ ) printf(mat+cmss=31,\m6933360370\mm); putchar( CR ); //CR }//if (T D }//SendSMSAbuse() putchar( LF ); //LF //Στείλε το μήνυμα που είναι //αποθηκευμένο στη θέση 31 της //κάρτας SIM στο κινητό τηλέφωνο //με αριθμό 6933360370 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -54-
Ο υπολογισμός της κυκλωματικής πολυπλοκότητας για τις συναρτήσεις 2,3,4,5 θα γίνει με μέτρημα των βρόγχων: Δηλαδή: Π( R ) = R1 = 1 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -55-
6 1 void synagermos() { PORTC.1=1; PORTC.2=1; PORTC.3=1; delay_ms(500); PORTC.1=0; PORTC.2=0; PORTC.3=0;!^T^)delay_ms(500); //Ενεργοποίησε τη σειρήνα. //Ενεργοποίησε τα πίσω φώτα. //Ενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. //Απενεργοποίησε τη σειρήνα. //Απενεργοποίησε τα πίσω φώτα. //Απενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. ^ if(pind.3==0){ PORTC.1=0; PORTC.2=0; 3 PORTC.3=0; i=0; Τ ) } //if //Αν ο χρήστης απενεργοποιήσει το σύστημα πριν //το πέρας των 5 δευτερολέπτων τότε απενεργο- //ποίησε την σειρήνα τα πίσω και τα μπροστά //φώτα. //Μηδένισε τον μετρητή των 5 δευτερολέπτων. 5 } //synagermos() Καγιόγλου Δημήτριος-Μπάρκας Μάριος -56-
Ο υπολογισμός της κυκλωματικής πολυπλοκότητας θα γίνει με μέτρημα των βρόγχων: Δηλαδή: Π( R ) = R1 = 1 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -57-
7 void AisthitirioKradasmou() { 0 ^ ) if(pinb.0==1) { //Είσοδος για το αισθητήριο κραδασμού. ()^Υ ) while(i>0) { Ci ) i--; Q 4J ) } //while //Οσο δεν έχουν περάσει τα 5 δευτερόλεπτα //χτύπα το συναγερμό. //Μείωσε τον μετρητή των δευτερολέπτων κατά 1. 0 0 SendSMSAbuse(); //Στείλε το μήνυμα κακομεταχείρισης. ')-5Y SMSABUSE=0 ); //Κάνε την μεταβλητή SMSABUSE=0 για να σταλεί v V } //>f //το μήνυμα μια φορά. I U \ @ } //AisthitirioKradasmou Καγιόγλου Δημήτριος-Μπάρκας Μάριος -58-
Ο υπολογισμός της κυκλωματικής πολυπλοκότητας θα γίνει με μέτρημα των βρόγχων: Δηλαδή: Π( R ) = R1 + R2 + R3= 3 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -59-
8 void AisthitiriaPortwn() { if(pinb.4==1) { //Είσοδος για τα αισθητήρια πορτών. while(i>0) { 2 synagermos(); 3 i---; 4 ) } //while //Οσο δεν έχουν περάσει τα 5 δευτερόλεπτα //χτύπα το συναγερμό. //Μείωσε τον μετρητή των δευτερολέπτων κατά 1. 3 ' " SendSMSKlopis(); //Στείλε το μήνυμα για κλοπή. SMSROBE=0; //Κάνε την μεταβλητή SMSROBE=0 για να σταλεί //το μήνυμα μια φορά. 7 ) i=5;.g8j } //AisthitiriaPortwn Καγιόγλου Δημήτριος-Μπάρκας Μάριος -60-
Ο υπολογισμός της κυκλωματικής πολυπλοκότητας θα γίνει με μέτρημα των βρόγχων: Δηλαδή: Π( R ) = R1 + R2 + R3= 3 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -61-
9 void AisthitirioKinisis() { 7 ) if(pinb.1==1) { //Είσοδος για το αισθητήριο κίνησης. ) ^ 7 ) while(i>0) { synagermos(); i--; //Οσο δεν έχουν περάσει τα 5 δευτερόλεπτα //χτύπα το συναγερμό. //Μείωσε τον μετρητή των δευτερολέπτων κατά 1. ^ 7 ^ ) } //while T ) } //if Λ ) SendSMSKlopis(); SMSROBE=0; //Στείλε το μήνυμα για κλοπή. //Κάνε την μεταβλητή SMSROBE=0 για να σταλεί //το μήνυμα μια φορά. >=5; } //AisthitirioKinisis Καγιόγλου Δημήτριος-Μπάρκας Μάριος -62-
Ο υπολογισμός της κυκλωματικής πολυπλοκότητας θα γίνει με μέτρημα των βρόγχων: Δηλαδή: Π( R ) = R1 + R2 + R3= 3 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -63-
10 void AisthitirioKapnou() { (l) if(pinb.3==1) { //Είσοδος για το αισθητήριο καπνού. (^2^) while(i>0) { synagermos(); } //while //Οσο δεν έχουν περάσει τα 5 δευτερόλεπτα //χτύπα το συναγερμό. //Μείωσε τον μετρητή των δευτερολέπτων κατά 1. (^^"Λ (7) } //if SendSMSFwtias(); SMSFIRE=0; //Στείλε το μήνυμα για φωτιά. //Κάνε την μεταβλητή SMSFIRE=0 για να σταλεί //το μήνυμα μια φορά. } //AisthitirioKapnou() Καγιόγλου Δημήτριος-Μπάρκας Μάριος -64-
Ο υπολογισμός της κυκλωματικής πολυπλοκότητας θα γίνει με μέτρημα των βρόγχων: Δηλαδή: Π( R ) = R1 + R2 + R3= 3 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -65-
11 void AisthitirioBatarias() { if (PINB.2==1) { //Είσοδος για το αισθητήριο της μπαταρίας. /^- ^NSendSMSBatarias(); SMSBATTERY=0; (D} //if Λ Λ C i ) } //AisthitirioMpatarias() //Στείλε το μήνυμα για χαμηλή μπαταρία. //Κάνε την μεταβλητή SMSBATTERY=0 //για να σταλεί //το μήνυμα μια φορά. Ο υπολογισμός της κυκλωματικής πολυπλοκότητας θα γίνει με μέτρημα των βρόγχων: Δηλαδή: Π( R ) = R1 = 1 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -66-
12 void Energopoihsh() { SMSROBE=1; SMSBATTERY= 1; SMSFIRE=1; SMSABUSE=1; PORTC.1=1; PORTC.2=1; PORTC.3=1; delay_ms(500); PORTC.1=0; PORTC.2=0; PORTC.3=0; delay_ms(500); //Αρχικοποίησε την μεταβλητή SMSROBE. //Αρχικοποίησε την μεταβλητή SMSBATTERY. //Αρχικοποίησε την μεταβλητή SMSFIRE. //Αρχικοποίησε την μεταβλητή SMSABUSE. //Ενεργοποίησε τη σειρήνα. //Ενεργοποίησε τα πίσω φώτα. //Ενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. //Απενεργοποίησε τη σειρήνα. //Απενεργοποίησε τα πίσω φώτα. //Απενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. } //Energopoihsh 13 void Apenergopoihsh() { PORTC.1=1; PORTC.2=1; PORTC.3=1; delay_ms(500); //Ενεργοποίησε τη σειρήνα. //Ενεργοποίησε τα πίσω φώτα. //Ενεργοποίησε τα μπροστά φώτα. //Περίμενε για μισό δευτερόλεπτο. } //Apenergopoihsh Καγιόγλου Δημήτριος-Μπάρκας Μάριος -67-
14 // External Interrupt 1 service routine interrupt [EXT_INT1] void ext_int1_isr(void) { // Place your code here PORTC.0=1; //Με την ενεργοποίηση του interrupt ανάβει το LED ως //ένδειξη ότι το σύστημα είναι ενεργό. Energopoihsh(); //Καλεί την ρουτίνα ενεργοποίησης. while(portc.0==1) { //Οσο το σύστημα είναι ενεργό καλεί τις //συναρτήσεις των αισθητηρίων. AisthitirioKradasmouO; AisthitirioBatariasO; AisthitirioKinisis(); AisthitirioKapnouO; AisthitiriaPortwn(); if(pind.3==0) { PORTC.0=0; Apenergopoihsh(); PORTC.1=0; 5 PORTC.2=0; PORTC.3=0; //Οταν απενεργοποιηθεί το interrupt. //Σβήνει το LED ενεργοποίησης. //Καλεί την ρουτίνα απενεργοποίησης. //Απενεργοποιεί την σειρήνα. //Απενεργοποιεί τα πίσω φώτα. //Απενεργοποιεί τα μπροστά φώτα. break; } //if ) ) } //while } //interrupt 1 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -68-
Ο υπολογισμός της κυκλωματικής πολυπλοκότητας θα γίνει με μέτρημα των βρόγχων: Δηλαδή: Π( R ) = R1+R2+R3 = 3 Καγιόγλου Δημήτριος-Μπάρκας Μάριος -69-
15 // Declare your global variables here void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTA=0xFF; DDRA=0x00; //EISODOI // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTB=0xFF; DDRB=0x00; //EKSODOI // Port C initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1 PORTC=0xFF; DDRC=0xFF; //THLEXEIRISMOS // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0xFF; DDRD=0x00; // Port E initialization // Func2=In Func1=In Func0=In // State2=T State1=T State0=T PORTE=0xFF; DDRE=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=ffh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; Καγιόγλου Δημήτριος-Μπάρκας Μάριος -70-
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=ffffh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: On // INT1 Mode: Rising Edge // INT2: Off GICR =0x80; MCUCR=0x0C; EMCUCR=0x00; GIFR=0x80; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 115200 //GSM MODEM. UBRRL=4000000/16/115200-1; //Καθορισμός του Baud Rate UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; // Global enable interrupts #asm("sei") Καγιόγλου Δημήτριος-Μπάρκας Μάριος -71-
while (1) { // Place your code here PORTC.0=0; PORTC.1=0; PORTC.2=0; PORTC.3=0; PORTC.4=0; PORTC.5=0; PORTC.6=0; PORTC.7=0; //Αρχικοποίησε τα PIN της πόρτας C. } //while } //main Καγιόγλου Δημήτριος-Μπάρκας Μάριος -72-
3.5 Μηχανολογικό Σχέδιο 30 cm j 20 cm 30cm Καγιόγλου Δημήτριος-Μπάρκας Μάριος -73-
2 cm N0.8BG-799 I--- 30 cm Καγιόγλου Δημήτριος-Μπάρκας Μάριος -74-
7 cm 27 cm 20 cm 2 cm 12cm 72 cm 30 cm 28 cm Καγιόγλου Δημήτριος-Μπάρκας Μάριος -75-
3.6 Ηλεκτοολοτικό Σχέδιο Για την τροφοδοσία του συστήματος και των διαφόρων υποσυστημάτων του, χρησιμοποιήθηκε ένα τροφοδοτικό υπολογιστή που έδινε DC τάσεις με τιμές 3.3 V, 5 V, 12V. -Τροφοδοτήθηκαν παράλληλα όλα τα υποσυστήματα-αισθητήρια που χρειάζονται 5V για την λειτουργία τους (Κραδασμού,Πορτών ). - Τροφοδοτήθηκαν παράλληλα όλα τα υποσυστήματα-αισθητήρια που χρειάζονται 7.5V για την λειτουργία τους (Κίνησης, Καπνού). - Τροφοδοτήθηκε ο επεξεργαστής και το αισθητήριο μπαταρίας με 12V. - Τροφοδοτήθηκε το GPS με 3.3V καθώς και το κύκλωμα μετατροπής σημάτων TTL σε σήματα RS-232 με 5V. -Το GSM modem τροφοδοτήθηκε από το δικό του τροφοδοτικό με 9V. Καγιόγλου Δημήτριος-Μπάρκας Μάριος -76-