Tuesday, December 27, 2005

מערכת אזעקת SMS לרכב

מערכת אזעקת רכב מבוססת תקשורת סלולארית
SMS Car Alarm On GSM Cellular Network
AFEKA PR EL DE AB: TK1-9971Elecronics Engeneering. Machine to Machine system
December 2005
הוגש ע"י
אריאל בלכר ,עבודת גמר ב אפקה המכללה האקדמית להנדסה בת"א , הנדסת חשמל ואלקטרוניקה
Submitted by
Ariel Blecher, Final Project - AFEKA Tel-Aviv academic college of engineering
מנחה
יוסי גרימברג
Advisor
Yossi Grimberg

תמצית
מערכת אזעקה לרכב/עסק משולבת חומרה ותוכנה, מבוססת תקשורת סלולארית מסוג GSM, מערכת זו תשלח בזמן אמת התראה כתובה מסוג SMS למכשיר טלפון נייד (סלולארי), כאשר אחד מחיישני מערכת האזעקה יופעל.מערכת זו, אמורה לפתור את הבעיות של המערכות הקיימות כיום כגון, מערכת אזעקה המשלבת התראה באמצעות ביפר, אשר מוגבלת בטווח השידור\קליטה.עוד

Abstract
A hardware and software integrated alarm system that can be used either for a business or a vehicle, this system also integrates a cellular communication module, this module which works on a GSM network, will send a real time alert via a SMS to any cellular phone when one of the system's sensors is triggered .more

תוכן הענינים Table of Content

תקציר Abstract
אופין characteristic
תכנית עבודה Definition
תכנון ראשוני Initial planing
תכנון מפורט Detailed planing
אבטיפוס/דגם Prototype/model
מסקנות Inference
תוצרי עבודה Products
רשימת מקורות Reference

מילות מפתח

אזעקה לרכב

Keywords

PIC16F877 SMS Car Alarm GR-47 C Code

תקציר

שוק מערכות האזעקה וההתראה דורש פתרונות יעילים, מתוחכמים והרתעתים יותר מאלו הקיימים כיום.
עם הגידול המתמיד ברכישת כלי רכב לאורך השנים, קיים גם גידול מתמיד בגניבות כלי הרכב.
על כן, מכירות מערכות התראה ומיגון לכלי רכב גדלות בצורה מתמדת בהתאם לצרכי השוק.כיום הגנבים מנטרלים את המערכות המתוחכמות ביותר בפרק זמן של 5 עד 10 דקות, ובכך למעשה תם תפקידה של מערכת האזעקה הקונבנציונאלית שנותנת התראה צלילית בלבד.
מערכות האזעקה הקוליות מהוות מטרד סביבתי, כאשר הן מצפצפות מבלי שבעל הרכב בכלל מודע לכך, אם בגלל שהוא אינו נמצא קרוב לרכב או בגלל שהוא כלל אינו מבדיל בין צפצוף האזעקה של רכבו לבין זה של שכנו.על-מנת לפתור את הבעיות האלה ועוד, מוצעת המערכת הבאה: אזעקה לרכב/עסק המשלבת בתוכה מערכת התראה המבוססת תקשורת סלולארית GSM, מערכת זו תשלח בזמן אמת התראה כתובה מסוג SMS למכשיר טלפון נייד (סלולארי), כאשר אחד מחיישני מערכת האזעקה יופעל.מערכת זו, אמורה לפתור את הבעיות של המערכות הקיימות כיום כגון, מערכת אזעקה המשלבת התראה באמצעות ביפר, אשר מוגבלת בטווח השידור\קליטה.מערכת ההתראה מבוססת תקשורת סלולארית, מהווה פתרון זול יותר ממערכת איתור לוויני, משום שהיא מספקת התראה לבעל הרכב ללא התערבות צד שלישי, ישירות למכשיר הסלולארי. על כן, שימוש במערכת אינו כרוך בדמי שירות חודשיים, אלא רק בעלות חד פעמית של שכפול כרטיסSIM קיים או רכישת כרטיס SIM ובעלות שימוש בשירות שליחת ההודעה, אשר משולמים לספקית השירות הסלולארי שאליו מחובר המשתמש. כלומר, העלויות השוטפות הן עבור שליחות הודעות SMS יזומות ע"י המערכת בלבד, במידה ולא נשלחו התראות ממערכת האזעקה, לא תהינה עלויות שוטפות.
בנוסף למערכת ניתן יהיה להוסיף שירות איתור ע"י פריסת הרשת הסלולארית ובהתאם לתנאי השירות עם ספקית השירות הסלולארי.

שימוש במערכת,תפעולה ותכנותה, "שקופים" לגמרי מבחינת המשתמש, אשר מתפעל אותה עם שלט רגיל.
תכנות המערכת מתבצע באופן חד פעמי ע"י מתקין המערכת, בתכנות זה המתקין מזין את סוגי החיישנים אשר מותקנים על הרכב ואת מספרי הטלפון הסלולאריים (עד 6) אשר אליהם המערכת תתקשר בעת פריצה.
התכנות נעשה בצורה קלה ובממשק-אנוש אינטואיטיבי, בעזרת מקלדת 16 לחצנים (4X4) ומסך LCD קטן .2X16 גם המקלדת וגם המסך ניתנים לניתוק מגוף מערכת האזעקה לאחר התכנות ואין בהם צורך כל עוד לא נדרש שינוי של מספרי הטלפון או סוגי החיישנים.
כל הנתונים הנ"ל מאוחסנים באופן חד פעמי על זיכרון ה-EEPROM של המיקרו-מחשב, זיכרון זה הוא בלתי מחיק ואינו תלוי באי אספקת מתח למערכת. לכן נתונים אלה לא יימחקו עד אשר יבוצע תכנות חוזר.
היתרון בניתוק המקלדת והמסך טמון במחיר היקר יחסית שלהם, אשר מהווים חלק משמעותי מעלויות הייצור. לכן, בדרך זו, אין צורך באספקת המקלדת והמסך עם כל מערכת שנמכרת, אלא אספקה חד פעמית למתקין מורשה, אשר יעשה שימוש חוזר ברכיבים אלו בכל התקנה. במידה ולקוח ירצה לתכנת את המערכת בעצמו, תינתן לו האפשרות לרכוש מקלדת ומסך בנפרד, ובעזרת הוראות המשתמש הוא יוכל לתכנתה בקלות.
יתרון נוסף באפשרות ניתוק המקלדת והמסך הוא, הקטנת מימדיה של מערכת, אשר מקילים על הסתרתה בין מכלולי הרכב.

Abstract

The market of alarm and alerting systems requires a more deterring, sophisticated and efficient solutions than the ones existed today. With the on growing car market over the years, there is a constant growth in car thefts over the world. As a result the demand for alerting systems is on a constant grow also. Nowadays, the thieves can neutralize existing system within 5 to 10 minutes, and after that no one knows that the alarm was triggered. In addition to that, the vocal alerting systems are in fact, an environmental disturbance when their alarm sounds and the vehicle owner doesn't even aware of that, if it is because he doesn't hear it, or he cannot distinguish between his alarm sound to another. In order to solve those kinds of problems and other, the next system is presented: A hardware and software integrated alarm system that can be used either for a business or a vehicle, this system also integrates a cellular communication module, this module which works on a GSM network, will send a real time alert via a SMS to any cellular phone when one of the system's sensors is triggered. This system will actually overcome the disadvantages of existing systems, as a beeper based systems, which are limited on transmitting/receiving range. Cellular based systems provide a cheaper solution comparing to satellite based systems, because it is alerting the user without any involvement of any third party, directly to cellular device of the user. Therefore, no monthly fee should be charged. The one time cost is: duplicating an existing SIM card or purchasing a new one. The regular operating cost is only when the system had established a SMS alert to the user via cellular service provider, meaning, pay per SMS. In addition the system carry the option of locating the vehicle by cellular network, this option depends on the contract between the user and the cellular service provider. The using, operating and programming of the system is very simple to the user and do not require any additional action from the user besides clicking the remote control. The programming of the system is performed only once by the system installer, the installer will feed the required data for operation, such as, sensor types that will be installed on the vehicle and the cellular phone numbers (up to 6) that will be contacted in an event of burglary. Programming is done by a very intuitive human interface, this interface based on 16-key keyboard (4X4) and a 2X16 LCD screen. Both the keyboard and the LCD are detachable from the system's body and they are no longer needed, unless a change should be made. All of these parameters are stored in the EEPROM memory of the on board micro-computer, this sort of memory is inerasable and not subjected to power failure, therefore this data will not be erased until re-programming is performed. The advantage of detaching the keyboard and the screen lays on their ratably high price, which increasing production costs, by detaching those parts, providing keyboard and screen with every system that is sold is not necessary. Only a one time supply of these parts to the installer is necessary. If the customer will insist to program the system by himself, he will be given the option to purchase his own keyboard and LCD separately. An additional advantage of detaching the keyboard and the screen from the system, is that minimizing the physical size, facilitates the concealing of the system among other vehicle components.

אופין


הבעיה:

שוק אבטחת כלי הרכב היום, דורש מעבר למערכות אזעקה אפקטיביות יותר מהמערכות המצויות כיום בשוק, מערכת זו תוכל לשלוח התראה לבעל רכוש (עסק/רכב/דירה) לגבי מצב רכושו בכל טווח (במגבלות טווח הרשת הסלולארית), שעה ומיקום מבלי לגרום למפגעים סביבתיים כגון רעש. רעש הוא אחד החסרונות המרכזיים של מערכות האזעקה הקיימות כיום. בגלל שכיחותן של מערכות אלו, אנשים כבר אינם מתייחסים למשמע צופר האזעקה וכך למעשה האזעקה הופכת למטרד ללא שום גורם התראתי/הרתעתי. לכן, חברות הביטוח אינן מחייבות את בעליהן של מכוניות חדשות להתקין מערכות אזעקה אלא, קודנים ומערכות איתור לוויני למיניהן.אולם מערכות איתור לוויני יקרות לתפעול שוטף, (כ- $10 לחודש תשלום קבוע) ללא קשר למס' ההתראות שסופקו ע"י המערכת. גם לאחר קבלת התראה מצד המערכת הלווינית, ההתראה לבעל הרכב מגיעה בסופו של דבר דרך שיחת טלפון שאותה יוזם גורם אנושי.

מטרות הפרויקט:

מערכת ההתראה מבוססת תקשורת סלולארית המתראה באמצעות SMS פותרת את הבעיות הנ"ל. במקביל להתראה צלילית, המשתמש יקבל הודעה למכשיר הטלפון הסלולארי האישי שלו על מצב החיישנים ברכבו ושעת קבלת ההודעה. בצורה זו יכול בעל הרכב לסור אל רכבו ולבדוק את פשר ההתראה ואם מדובר באזעקת שווא לנטרל את הצופר שמפריע את מנוחת הסביבה. גם אם שמע בעל הרכב אזעקה, הוא יוכל לדעת בוודאות שמדובר ברכבו לאחר שיקבל את ההתראה הכתובה למכשירו הסלולארי.כמו כן, למערכת זו לא נדרש כל תשלום קבוע כלשהו, אלא רק עבור התראות שנשלחות וטו לא.אולם, ישנה הוצאה חד פעמית של הנפקת כרטיס SIM, או ע"י שכפול כרטיס קיים או על ידי קימומו של קו חדש, בכל מקרה מדובר בהוצאה של כמה עשרות שקלים.יתרון נוסף, הוא שבעל הרכב מקבל את ההתראה בזמן אמת, ללא כל מעורבות גורם אנושי.כמו כן למערכת ניתן לחבר חיישני חיווי אנלוגיים, כגון, חישן טמפרטורה וכד' .למערכת ניתן להוסיף אפשרות איתור המתבססת על פריסת הרשת הסלולארית (Cell ID אשר תפורט בהמשך), בהתאם לזמינות השירות מצד ספק השירות.

תוכנית עבודה


קריטריון להצלחה
הפרויקט ייחשב להצלחה, לאחר שייספק בזמן אמת התראה כתובה מסוג SMS שמכילה בתוכה מידע לגבי סוג החיישן שהופעל ותישלח ע"ג אחת מהרשתות הסלולאריות הקיימות למספרים טלפון שאוחסנו מראש ע"י המשתמש. המערכת תהווה תחליף ראוי למערכות שונות בשוק, לדוגמא מערכת איתור לווינית. בנוסף,המערכת תיהיה תחרותית ביחס למערכות דומות שמצויות בשוק.

תכנון שלבי העבודה
- קביעת הדרישות ליישום ובחירת הדרך היעילה ביותר.
- הגדרת צרכים (לדוגמא תפריטים) והקצאת זיכרון.
- בניית חומרה.
- קביעת תצורת ממשק המשתמש ותצוגה.
- תכנון אלגוריתם וכתיבת תוכנה.
- סימולציות.
- בניית מארז

תכנון ראשוני



פרק זה מכיל גם את סקר המקורות והספרות

רקע תיאורטי כללי

בכדי לממש את הפרויקט, נבחרו שני מרכיבים עיקריים:
· מיקרו-מחשב מסוג 16F877A של חברת Microchip .
· מודם סלולארי מבוסס תקשורת GSM מסוג GR-47 של חברת Sony Ericsson .
ע"ג זיכרון המיקרו-מחשב נכתבה תוכנה שאחראית על ביצוע: תפריטי ממשק המשתמש, ניטור מצב חיישנים, אחסון פרמטרים המוזנים ע"י המשתמש ע"ג זיכרון ה-EEPROM , יזמת תקשורת למודם הסלולארי ושליחת הודעות כתובות מראש למודם הסלולארי.

המודם הסלולארי מתואם לממשק מכונה למכונה (m2m)בעזרת פרוטוקול תקשורת RS-232 , מקבל מהתוכנה שמאוחסנת ע"ג המיקרו-מחשב פרמטרים הכרחיים, ע"מ לשגר הודעת טקסט המאוחסנת בזיכרון המיקרו-מחשב. המודם משגר את ההודעה ע"ג הרשת הסלולארית הקיימת בעזרת כרטיס SIM שמותקן בתוכו. כרטיס זה, בדומה לזה המותקן בכל טלפון סלולארי הפועל ברשת GSM, מאחסן בתוכו את זהות המנוי ברשת הסלולארית, את מספר הקו ממנו נשלח המידע ובהתאם לכך נשלח חשבון לביתו של המנוי.

תיאור דרך הביצוע
המבנה העקרוני של הפרויקט
מפרט טכני
תיאור טכנולוגיות שנעשה בהם שימוש בפרויקט
תקשורת RS-232
סקר שוק

תיאור דרך הביצוע

חומרה: תוכננה בקפידה, החל ממיקום הרכיבים על הלוח ע"מ להימנע מסרבול חוטים, כלה במחשבה על פיזור חום, עד למיקום נוח של הלחצנים והמחברים על הקופסא החיצונית.

ממשק המשתמש: טרם כתיבת התוכנה, הושם דגש על פשטות התפעול, ע"מ שיתאים גם לאוכלוסיות שאינן בעלות רקע טכני. הממשק נבדק (לאחר כתיבת התוכנה) אם הוא עונה על הדרישות, בעזרת ניסויים עם אנשים שלא היו מעורבים בביצוע הפרויקט. על סמך ניסויים אלו הוכנסו שיפורים.

התוכנה: המבנה היה צריך לכלול את כל היעדים שהוצבו בזמן תכנון ממשק המשתמש, בנוסף לצרכי הפעלת החומרה.מאחר והתוכנה אינה מתפקדת ע"ג PC, נלקחו בחשבון מגבלות של מקום בזיכרון ה-Data memory, לכן התוכנה הכתבה בצורה יעילה יחסית, ע"מ שלא לחרוג מהזיכרון.

סימולציה: בדיקת סינכרון בין המיקרו-מחשב למודם ובדיקת תקינות המידע המעובר בקו התקשורת.

מערכת המתפקדת בזמן אמת: המערכת בשילוב כרטיס SIM ששוכפל במיוחד, משגרת הודעות המספקות מידע אמיתי בזמן אמת על מצב החיישנים.

המבנה העקרוני של הפרויקט

תרשים 1 – דיאגראמת בלוקים.

מפרט טכני

מתח הזנה כללי: V12 בדומה למתח המסופק מכל מצבר רכב פרטי.

PIC16F877

טבלה1 – מפרט טכני PIC16F877

GR-47

טבלה2 – מפרט טכני GR-47


תיאור טכנולוגיות שנעשה בהם שימוש בפרויקט

GSM – Global System for Mobile Communications

ארגון ה-GSM הבין לאומי נוסד ב- 1987 , הארגון התמקד בפיתוח ואספקה של שירות GSM אלחוטי חובק עולם.
כיום טכנולוגית ה-GSM היא אחת הטכנולוגיות הנפוצות בעולם, שלאחרונה השיקה רשת דור שלישי (3G).
מהירויות שליחת הנתונים המוצהרות מגיעות כיום עד ל- 384kbps בשיפור האחרון בטכנולוגיה שנקרא (EDGE-Enhanced Data Rates for GSM Evolution), המהירויות בפועל נמוכות יותר ונעות בין 70 ל- 40kbps.
SIM CARD- Subscriber identity Module: טלפונים ברשת ה- GSM מופעלים ע"י כרטיס SIM שנשלף מהטלפון.
הכרטיס עצמו הוא למעשה הקשר היחידי בין ספקית השירות הסלולארי לבין הלקוח. בדרך זה הלקוח יכול להחליף, לשדרג מכשיר טלפון, לשמור על מספר הטלפון הקיים, מבלי שום התערבות מצד החברה הסלולארית. טכנולוגית זו מאפשרת גם נדידה בין רשתות שונות ברחבי העולם.
התדרים שבהם עושה שימוש רשת ה-GSM הם: 850/900/1800/1900 MHz.
GSM היא רשת דיגיטאלית שהחליפה את השירות האנלוגי, היא פותחה על בסיס טכנולוגית TDMA.
בעזרת טכנולוגיה זו, משתמשים בפס צר ברוחב של 30kHz ואורך של 6.7mS, פס זה מחולק לשלושה חריצי זמן.
כל המידע מומר למידע דיגיטאלי, לכן הוא ניתן לדחיסה עד כדי שליש מהמידע האנלוגי.
יש לציין ש-GSM עובדת על בסיס TDMA והיא אינה הרשת היחידה שעושה שימוש בשיטה זו.


איור 1 – TDMA מחלקת את תחום התדר לשלושה חריצי זמן

CELL ID
המבנה הבסיסי ברשת GSM הוא המתג (MSC , Switch). מתג אחראי בדרך-כלל על התעבורה באזור כיסוי גדול (לדוגמא, גוש-דן). בתחום האחריות של כל מתג נמצאים מספר תאים סלולרים (תא = cell ומכאן "סלולרי"). כל תא מאופיין ע"י תחנת הבסיס הספציפית שלו (Base Terminal Station – BTS). לכל תחנת בסיס כזו יש בקר אחראי (BSC) ומקלט (TRX).
מכשיר סלולרי (מכשיר קצה, תחנת-קצה, handset ועוד שמות...) יוזם או מקבל שיחה באמצעות התחנה המשרתת (Serving Base Station). למעשה, זהו התא אשר ממנו נקלט שידור סינכרון בעוצמה הגבוהה ביותר מכל התאים הקרובים אל המכשיר. אזור הכיסוי של כל תא משתנה בגודלו בהתאם לצפיפות המכשירים הממוצעת באזור. אזורי הכיסוי של תאים הם חופפים על-מנת לאפשר קליטה באיכות הגבוהה ביותר בכל מצב.


RS-232
המיקרו-מחשב מתקשר עם המודם בעזרת פרוטוקול תקשורת RS-232 , להלן פירוט והסבר של הטכנולוגיה:
תקשורת RS-232 היא תקשורת אוניברסאלית קלה להבנה, אולם יש לה גם חסרונות: היא מוגבלת באורך כבל התקשורת עד 15m , ומהירותה איטית יחסית, עד 256kbps .(נתונים אלו נכונים לימיה הראשונים של הטכנולוגיה).
אולם כיום, עם התפתחות הממשקים והגדלת קיבולת המתח שניתן להפעיל עליהם, כמו גם איכות כבלים מוגדלת, ניתן כבר להגיע למהירויות גבוהות יותר של עד 1.5Mbps .
העברת מידע ספרתית מתחלקת לשתי קבוצות:
· הפרשיות (differential)
· בעלות קצה יחיד (single-ended)
RS-232 משתייך לבעלות קצה יחיד, הוצגה לראשונה ב-1962 ועדיין נפוצה היום בתעשייה.
ערוצים בלתי תלויים נוסדו בשביל תקשורת דו-כיוונית (full duplex) . אותות ה- RS-232 מאופיינים במתחים ביחס לרמת האדמה (power logic ground). מצב הבטלה (idle) בעל רמת מתח שלילית ביחס לאדמה, לעומת זאת המצב הפעיל (active) הוא בעל רמת מתח חיובית כלפי האדמה.
הנחת היסוד של RS-232 שקיימת אדמה משותפת בין Data Terminal Equipment) - DTE )ל- DCE
(Data Communication Equipment) , זוהי הנחה מתקבלת על הדעת כל עוד מדובר בכבלים קצרים.
ממשק RS-232 הוא דו-קוטבי. +3 to +12 Volts מצביעים על מצב ON או 0-state. בעוד שמתחים בתחום
-12V to -3V מצביעים על מצב OFF או 1-state.
מחשבים מודרניים מתעלמים מרמת המתח השלילית ומתייחסות אליה כאל "0" כבמצב OFF.
למעשה מצב ON יכול להיות מושג במתח נמוך יותר, כלומר שמעגלים המוזנים ב- VDC5 מסוגלים לתקשר עם מעגלי RS-232, אולם הטווח עשוי להצטמצם למימדים לא ריאליים.
מתח המוצא בד"כ נע בתחום -12V to +12V . השטח המת בתחום -3V to +3V משמש לספיגת רעשים בקו, כל אות שייקלט בתחום זה ייחשב כרעש.
המידע משודר ונקלט דרך רגליים 2 ו-3 בהתאמה. לעיתים יש להצליב בין הרגליים 2 ל-3, תלוי בשימוש: אם יש תקשורת בין slave master to או slave to slave . אם יש תקשורת בין DCE או DTE .
ע"מ לקבוע אם יש להצליב את חוטי הקבלה\שליחה, צריך להסתכל אך ורק מנוקדת של ה- DTE כלומר, שהציוד שמוגדר כטרמינל, למשל PC יוגדר כ-Master.
להלן טבלה המגדירה את חיבורי ה-RS232:

איור 2 – חיבור DB-9 לתקשורת RS-232 ומספרי רגליים.

תרשים 2 – שליחת בית 1 ב- RS-232

סקר שוק

בשוק ישנן מס' מערכות אשר דומות בתכליתן למערכת המוצעת, אולם כל המערכות הנ"ל נמכרות באופן ספוראדי, לא ע"י חברות גדולות ולא ע"י חנויות וירטואליות מוכרות.חלק מהמערכות, מחוברות לטלפון סלולארי מדגם ספציפי ולכן דורשות כבל מתאים.חלק מהמערכות המוצעות, מאפשרות גם אפשרות איתור בתוספת תשלום.אלה המערכות המצויות בשוק:

Autocate 800
קיימת אפשרות איתור.
קיימת אפשרות חיווי טמפרטורה.
Dual Band 900Mhz & 1800Mhz Suitable for any 12 to 24 Volt vehicles and buildings boats etc Monitors up to four different zones plus panic
Will call up to six numbers when the panic button is pressed
Pages you if a zone is violated SMS or Voice call
Will page up to six numbers user programmable
Allows you to check status of security via SMS
...
The Athos CA-1202
מתפקדת עם טלפון ספציפי.
מחיר: 700$
Sending of info SMS messages up to 4 cellular phones
Dialing of programmed telephone numbers and playing of an audible warning signal Communication with the central monitoring station CMS
Remote access via SMS messages or SMS gate Immobilization of the car by SMS Up to 4 remote controls
Garage protection using the JA-60 wireless detectors Hands free set
Adjusting the car alarm via web page
www.GSMlink.cz GSM pager suitable for any car alarm

TRACY1
מחיר: 399€









IPS-CCE4000
אזעקה ביתית המהווה תחליף לטלפון רגיל כאשר הוא מנותק.
מחיר: לא זמין.
Easily installed anywhere in the world where there is a CDMA or GSM network
The system is enclosed in a steel, lockable case which can be wall mounted
The CCE-4000 System uses the IPS ICI-2004 cellular unit with voice and circuit switched or packet switched data capabilities Transmits “alarm” data from the security system


Car Guardian
מתחברת למכשיר טלפון ספציפי.
מחיר: USD245.
Remote Intrusion (break-in) SMS Alert. SMS immediately sent to your GSM mobile phone Car Immobilizer for Ignition or Car Starter. Movement sensor to detect break-in or car vandalism. Remote Alarm Activation. You can sound the Car Siren remotely through SMS Remote Arm and Dis-Arm using authenticated GSM phone, or, key-chain remote Easy installation

תכנון מפורט

כלי פיתוח וצריבה
מעגל אספקת המתח
פירוט רכיבים עיקריים
יישומים ב- 16F877A
סכימת המעגל הראשי
הגבר השמע
ממשק המשתמש

כלי פיתוח וצריבה

ממשק הצריבה הוא של חברת microchip מדגם ICD2, הוא מתחבר למחשב הביתי דרך ממשק USB. למעגל המערכת, הוא מתחבר דרך מחבר מסוג RJ-11 6 פינים. מחירו כ-$160.
סביבת העבודה שבה נכתבה התוכנה היא MPLAB, דרכה ניתן לצרוב את כל סוגי המעבדים של חברת microchip ,ניתן גם לקבוע את כל הגדרות החומרה, כגון קביעת מהירות הגביש, הגדרת מתחי צריבה ובדיקתם.
התוכנה נכתבה בשפת C .
המהדר (compiler) , הוא של חברת HITECH מסוג PICC.


מעגל אספקת המתח

הזנת המתח הראשית מתקבלת מספק כוח אשר מתחבר במבואו לרשת החשמל הביתית ובמוצאו מתקבל מתח של 12V בדומה למתח המתקבל ממצבר של מכונית פרטית. זהו למעשה מתח המבוא של המעגל החשמלי. להדק המבוא מחובר ווסת מתח – LM7805 אשר במוצאו מתקבל מתח מיוצב של 5V, להלן: Vcc=5V שהוא המתח המזין את כל הרכיבים האלקטרוניים במעגל. להלן תרשים המתאר את חיבור מייצב המתח:

תרשים 3 – מעגל אספקת המתח

פירוט רכיבים עיקריים

PIC16F877A:

זהו לב ליבה של המערכת, המיקרו-מחשב, רכיב זה אחראי על כל הפעולות של המערכת, מאחסן ע"ג הזיכרון שלו את התוכנה והפרמטרים השונים.מהירות העבודה של הרכיב נקבעת ע"י גביש (Crystal) חיצוני בתדר מסוים שנקבע ע"י המתכנן והוא נע בתחום: 4MHz to 20MHz , בחירת גביש זה תפורט בהמשך.ל-16F877A יש שני סוגי זיכרון עיקריים:
· Program Memory – ROM
· Data Memory- RAM
גודל זיכרון ה- ROM הוא של 8k (של מילים בגודל 14bit כ"א) והוא מסוג FLASH, בלתי נדיף והוא מאחסן בתוכו את קוד התוכנה ומשתנים קבועים.גודל זיכרון ה- RAM והוא בגודל של 368Byte והוא מאחסן בתוכו את כל המשתנים הזמניים שנוצרים תוך כדי ריצת התוכנית. זיכרון זה מחולק לארבעה בנקים: bank0 עד bank3.בנוסף ל-PIC יש זיכרון EEPROM בגודל של 256Byte. ל-16F877A ישנם חמישה פורטים (ports) I/O : A,B,C,D,E כאשר הפורטים A ו- E בעלי כניסות\יציאות אנלוגיות.בנוסף, קיים ממשק תקשורת USART לתקשורת טורית.לפרטים נוספים על ה16F877A ניתן לעיין בנספח דפי הנתונים או במפרט הטכני בעמוד 8.GR-47: המודם הסלולארי, מבוסס טכנולוגית GSM, נמצא על לוח הדגמה (demonstration board) מודם זה הוצע ע"י המנחה כחלק אינטגראלי מהצעת הפרויקט. קצב התקשורת ברירת המחדל הוא 9600 סיביות בשנייה. (Baud Rate)פרטים נוספים זמינים בדפי הנתונים או במפרט הטכני.

גביש 4MHz : גביש זה נבחר משום שהוא מפחית את צריכת הזרם של ה-16F877A , מכיוון שהוא עובד בתדר נמוך יחסית ומבצע פחות פעולות בשנייה , אולם המהירות הנמוכה יחסית אינה פוגעת בביצועים, משום שיישומי התוכנה אינם נזקקים למהירות גבוהה, נהפוך הוא, ישנן הרבה השהיות בקוד התוכנה, מכיוון שישנן הרבה יישומי ממשק-אנוש.
לגביש חוברו שני קבלים בקיבול של 22pF כ"א. בהתאם להוראות היצרן, ניתן להשתמש בקבלים בתחום: 15-68pF עבור גביש בתדר 4MHz.
תדר עבודת (שעון) ה-16F877A מחושב כך:
,כלומר מיליון פעולות אסמבלי בשנייה.

מסך LCD : מסך נוזל גבישי באורך 16 תווים על 2 שורות, מחובר בקידוד של 8 סיביות ישירות אל ה-PIC,
בנוסף מחוברות שתי רגליים נוספות:
· Register Select – RS: סיבית אשר קובעת את אוגר הקבלה במסך: אוגר מידע /שליטה(data/control).
· Enable – EN: סיבית אשר מנודנדת בכל פעם שיש להעביר מידע או שליטה למסך.
המסך משמש לתצוגת ממשק המשתמש וחיווי עבור מצב המערכת.

מקלדת 16 לחצנים 4X4 : המקלדת נועדה להזנת פרמטרים בלבד. ע"מ לקלוט את המידע מהמקלדת יש להשתמש בבקר 74C922.

בקר מקלדת 74C922 : ניתן לחבר את המקלדת ללא בקר זה, אולם אז יש צורך בהגדרת 0 רץ בתוכנה וחיבור נגדי Pull-Up.
בפועל בקר זה חוסך את ההתעסקות עם התוכנה והוא ממפה את הלחיצה ע"י הצלבה בין מבואות הלחצנים. הוא עושה זאת בעזרת 0 רץ ע"פ מטריצת המקשים ונגדי Pull-Up . לרכיב יש יציאת DA-Data Available : יציאה זו מוציאה "1" בכל פעם שנלחץ לחצן במקלדת, לאותה יציאה מחוברת גם למבוא מהפך שמחובר במוצאו לכניסת - Output Enable, מוחק בחזרה את DA.
פרטים נוספים זמינים בדפי הנתונים.

MAX232: בקר התקשורת הטורית לתקשורת בפרוטוקול RS-232. רכיב זה מחובר לממשק התקשורת של ה-PIC לרגלי TX ו- RX. מכיוון שרגליים אלה עובדות רק בתחום של 0-5V הדבר אינו תואם את פרוטוקול RS-232 , כאמור פרוטוקול זה עובד בתחום -12 to +12V , יש צורך ב MAX232 , אשר ממיר את רמת המתח +5V ל- +10V ולאחר מכן הופך את +10 ל -10V , כך למעשה מתקבלת תקשורת שנע בתווך -10Vto+10V אשר מתאימה לפרוטוקול RS-232 וניתן להעבירה בכבל.
לרכיב מחוברים חמישה קבלים אלקטרוליטיים בקיבול של 1μF כ"א.תפקיד הקבלים להוות חלק ממכפילי המתח הפנימיים של הרכיב, בכדי לספק מתח גדול יותר לשידור בקבל (10V) יש צורך במכפילי מתח.

להלן תרשים המתאר את חיבור הרכיב: (פרטים נוספים זמינים בדפי הנתונים)

תרשים 4 – חיבור MAX232 למעגל


יישומים ב- 16F877A

בתת פרק זה מוצגים היישומים הרלוונטיים למערכת זו בלבד.


חיבור ממשק הצריבה ל- PIC16F877A


על מנת לאפשר את צריבת התוכנה ע"ג זיכרון ה-PIC16F877, יש צורך בחיבור לרגליים RB7 ו- RB6.
בפרויקט נעשה שימוש בצורב של חברת Microchip מדגם: MPLAB ICD2. לצורב זה יש ממשק צריבה מסוג RJ-משום כך הורכב מחבר (נקבה) מסוג זהה על הלוח הראשי.
להלן תרשים המתאר את תצורת המחבר ואת מספרי הרגליים:



תרשים 5 – תיאור ממשק הצריבה RJ-11

הערה: רגל 6 אינה מחוברת משום שאיננה הכרחית לצריבה.

להלן תרשים המתאר את תצורת חיבור רגלי המחבר RJ-11 לרגלי ה-PIC עצמו:

תרשים 6 – חיבור ממשק הצריבה ל –PIC


Master Clear pin on the PIC

רגל מס' 1 - Master Clear מאפסת את המעגל כאשר היא מקבלת "0" .
היא מאפשרת את איפוס התוכנה הרצה ב-PIC16F877 בכל עת. ע"מ לאלץ אפס, חובר לחצן למחלק מתח לפי המתואר בתרשים הבא:

תרשים 7 – חיבור הלחצן לרגל MCLR/

מצב SLEEP – Power Down

מצב SLEEP מתאפשר לאחר כתיבת הפקודה SLEEP( ) בקוד התוכנה,
מאותו הרגע שהפקודה ניתנה ה-PIC נכנס למצב של חיסכון באנרגיה ע"י צריכת זרם נמוכה ביותר בטווח: 5-19μA , תלוי במתח הכניסה והטמפרטורה. זהו חסכון ניכר בהתחשב בעובדה שה-PIC צורך במצב אופייני כ- 0.6mA (חסכון של שני סדרי גודל).
את ה- PIC ניתן להוציא ממצב SLEEP, רק כאשר אחד מהמצבים הבאים מתרחש:
1. לחיצה על לחצן RESET החיצוני.
2. פקיעת טיימר "כלב השמירה" Watchdog Timer Wake Up. (אשר לא נעשה בו שימוש בפרויקט זה)
3. פסיקה מפורט RB הוא פסיקות פריפריאליות, כגון: USART, TMR1, A/D וכולי.לפרטים נוספים, ניתן לעיין בנספח דפי נתוני יצרן.
בפרויקט זה נעשה שימוש בפסיקת RB0.לאחר יציאה ממצב SLEEP, התוכנה תתחיל שוב משורת הפקודה הבאה אחרי שורת הפקודה SLEEP( ) והמערכת חוזרת לתפקוד רגיל.


פסיקת RB0

רקע: פסיקת RB0 היא פסיקה חומרה, אשר מיושמת ע"י שינוי מתח ברגל RB0 של ה-PIC (רגל מס' 33) , פסיקה זו יכולה להוציא את ה-PIC ממצב SLEEP ע"י שינוי מתח על רגל 33. הפסיקה יכולה להתבצע גם בשינויי מתח מגבוה לנמוך ולהיפך. בחירת המצב נעשית ע"י סיבית שליטה שנקראת INTEDG- Interrupt Edge Select bit:
1 = פסיקה בעליית מתח .
0 = פסיקה בירידת מתח.
ע"מ לאפשר את הפסיקה יש לשים "1" בסיבית אפשור: INTE=1.
בנוסף יש להרים את סיבית אפשור הפסיקות הגלובלי GIE=1.
כאשר הפסיקה מתקבלת היא מרימה דגל INTF , שגורם לה להיכנס לרוטינת הפסיקות שנכתבה בקוד התוכנה, אשר תפורט בהמשך.בדף הבא, נתון תרשים המתאר את תהליך אפשור הפסיקות ובו הדגשה של תהליך פסיקת RB0 הרלוונטית:

תרשים 8 - תיאור תהליך הפסיקות

יישום הפסיקה במערכת: המערכת תוכננה כך שפסיקה תתקבל ב- RB0 כאשר, אחד או יותר מהחיישנים הופעל או כשלחצן ARM/DISARM (לחצן הדריכה/נטרול) נלחץ.
כל החיישנים וגם לחצן הדריכה מחוברים עם נגדי Pull-Down לרגלי החיווי ב-PORTA ובמקביל לרגל RB0 וכאשר הם מופעלים מתקבל "1" ברגליים החיווי של ה-PIC וגם ברגל RB0, לכן, סיבית: INTEDG=1 .
החיישנים ולחצן הדריכה מחוברים לרגל RB0 דרך שער OR במקביל לכניסות אשר אחריות על חיווי מס' החיישן, כלומר אם אחד הוא יותר מהם עולה ל- "1" מתקבל אחד ברגל RB0 ומתבצעת פסיקה.שרטוט המתאר את האמור נמצא בסכימת המעגל הראשי.

USART

רקע:ל-PIC16F877 יש ממשק תקשורת טורית אשר מכונה USART, זהו מודול תקשורת רב תכליתי, אשר משמש לתקשורת עם רכיבים חיצוניים כגון: מחשבי PC ,מעבדים אחרים, זיכרון חיצוני, ממירי A/D ו- D/A.
ה- USART יכול לעבוד בשלושה מצבים:
· א-סינכרוני ב- Full Duplex
· סינכרוני Master ב- Half Duplex
· סינכרוני Slave ב- Half Duplex
כדי לשייך את ה- USART לרגליים RC6/TX/CK ו- RC7/RX/DT יש לאתחל את הסיבית: SPEN=1 Serial Port Enable
ניתן לבחור את קצב מהירות השידור ישנה סיבית BRGH, כאשר היא '1' , קצב השידור גבוה ולהיפך.
מומלץ להשתמש בקצב שידור מהיר, גם כאשר לא נדרשת מהירות שידור גבוהה מכיוון שזה מפחית את הטעות בקביעת הקצב. כפי שהנוסחאות הבאות ידגימו.
קצב שליחת המידע נקרא BRG-Baud Rate Generator. כדי לקבוע את הקצב יש לקבוע ערך באוגר: SPRBG. ע"מ לחשב את ערך זה נתונה הנוסחא הבאה, כאשר:

BRGH=1

כאשר: BRGH=0

המידע המשודר נכנס לתוך אוגר 8 סיביות שנקרא TXREG ומשם הוא מעביר לאוגר חוצץ בצורה מקבילית, את 8 סיביות המידע לאוגר שנקרא TSR Transmit Shift Register -, משם הוא מועבר לחוצץ השליטה לפני יציאתו דרך RC6/TX .

בתרשים הבא מתואר תהליך השליחה:
תרשים 9 – דיאגראמת בלוקים המתאר את תהליך השידור

יישום התקשורת במערכת: במערכת זו נעשה שימוש במצב הא-סינכרוני, כאשר המערכת מסוגלת לשדר ולקלוט בו זמנית כלומר, Asynchronic Full Duplex.
המידע מקודד בקידוד של 8 סיביות מידע. (TX9=0)
קצב שידור המידע נקבע לגבוה, כלומר BRGH=1 ע"מ להגדיל את רמת הדיוק.
ע"מ לעבוד עם המודם נדרש קצב Baud של 9600bits/sec שהוא קצב ברירת המחדל של המודם GR-47.
ה- Baud Rate נקבע ע"פ הנוסחא הבאה:

כלומר אוגר SPBRG=25. כל האוגרים הנ"ל מותחלים בתוך קוד התוכנה אשר תפורט בהמשך.

בטרם חוברה המערכת למודם GR-47 , היא חוברה לממשק ההיפר טרמינל ב-PC הביתי, שם היה ניתן לאתר תקלות ובעיות ולקבוע אם ההגדרות שנקבעו אכן מציגות את המידע על הצג.


סכימת המעגל הראשי


תרשים 10 - סכימת orcad של המעגל הראשי


הגבר השמע

למערכת מחובר רמקול בהתנגדות 8Ω ,אשר מדמה את צופר האזעקה, אולם הרמקול והמעגל צורכים יותר זרם ממה שיציאת ה-PIC16F877 יכולה לספק 200mA לכל פורט.

על כן, נדרש פתרון לאספקת הזרם שהרמקול צורך. הפתרון הפשוט ביותר היה: טרנזיסטור NPN אשר מתפקד כמפסק.
כלומר, שהזרם ממקור המתח יזרום ישירות למעגל שמחובר לרמקול ומשם לקולקטור ואילו פיקוד של ה-PIC יחובר דרך הבסיס עם נגד של 10kΩ להגבלת זרם, ע"מ להקטין את צריכתו מכיוון ה-PIC. האמיטר מחובר ישירות לאדמה.
להלן סכימת מעגל הגבר השמע:


תרשים 11 - סכימת הגבר השמע.


ממשק המשתמש ו
תיאור דרך פעולת המערכת

המערכת תוכננה כך שהשימוש במקלדת ומסך ה-LCD יהיו מחוברים ורק בשעת התקנת המערכת ברכב יעשה בהם שימוש. זאת על מנת לחסוך בעלויות ובגודל פיזי.
הערה: לצורך ההדגמה הותקן המסך בקופסת הפרויקט והוא יציג הודעות אשר יקלו על הבנת המצב שבו המערכת נמצאת בכל שלב.
לאחר ההתקנה, על המתקין להזין את מספרי טלפון שעימם המערכת תיזום קשר בעת הפעלת האזעקה, ניתן להזין עד 6 מספרי טלפון. בנוסף על המתקין להזין את שמות סוגי החיישנים שהותקנו על הרכב, ניתן לחבר עד 3 חיישנים.
הנתונים הנ"ל מאוחסנים ע"ג זיכרון ה-EEPROM ומשם הם נשלפים אוטומטית בעת הצורך.
לאחר הזנת הנתונים, המתקין מסיר את המקלדת והמסך והמערכת פועלת באופן עצמאי.
עם חיבור המערכת תופיע הודעת פתיחה ומיד לאחריה תופיע על הצג ההודעה הבאה:


תמונה 1 – הודעת setup , כפי שמופיע ע"ג ה-LCD


אף מקש לא ייקלט פרט ל- ENTER.
כאשר מסך זה מופיע תיתכנה שתי האפשרויות הבאות:
a) אתחול (Set Up) ע"י לחיצה על ENTER.
b) דריכת המערכת ע"י לחיצה על לחצן ARM/DISARM (לחצן דריכה/נטרול).


a) אתחול ע"י לחיצה על ENTER: לאחר שהמשתמש לחץ ENTER מופיעים על המסך תפריטים מתחלפים עם אופציות לבחירה:
1. Sensor names – הזנת שמות החיישנים.
2. Phone numbers – הזנת מספרי הטלפון הסלולאריים.
3. Exit – יציאה למצב התחלתי.
אף מקש לא ייקלט מלבד 1,2 או3.
כך נראים המסכים המתחלפים על גבי הצג:

תמונה 2 – מסךsetup ראשון, כפי שמופיע ע"ג ה-LCD


תמונה 3 – מסך setup שני, כפי שמופיע ע"ג ה-LCD

1. במידה ונבחרה אופציה מס' 1 , יופיע המסך הבא:

תמונה 4 – הודעת הזנת חיישן, כפי שמופיע ע"ג ה-LCD

על המשתמש להזין את שם החיישן הראשון, ללא רווחים וללא ספרות, עד 10 תווים לכל חיישן.
האותיות מוזנות בתהליך דומה לזה שקיים בכתיבת הודעת SMS ע"ג טלפון סלולארי,
כלומר כל לחיצה על אותה ספרה תציג אות אחרת על המסך, עד 4 אותיות לכל ספרה.
במידה ותילחץ ספרה אחרת בתוך כשנייה, יוצגו האותיות של הספרה האחרת. במידה ולא תילחץ ספרה אחרת בתוך שנייה, האות האחרונה תישמר והסמן יעבור לתו הבא אוטומטית.
לדוגמא: אם נלחצה הספרה 2, האות A תופיע על המסך, כל לחיצה נוספת על 2 תחליף בין האותיות B,C ושוב A.
אם ספרה 2 לא נלחצה שוב בתוך שנייה, האות האחרונה שהופיעה תישמר והסמן יעבור לתו הבא.
במידה והמשתמש עשה טעות וברצונו למחוק, הוא יכול להקיש על מקש DELETE בכל עת.
בתהליך זהה מאוחסנים גם חיישנים 2 ו-3.
חיישן 1 מאוחסן החל מתא 0 ב- EEPROM.
חיישן 2 מאוחסן החל מתא 20 ב- EEPROM.
חיישן 2 מאוחסן החל מתא 40 ב- EEPROM.
לאחר אחסון שלושת החיישנים תופיע הודעה ע"ג הצג: "Sensors names are stored"

2. במידה ונבחרה אופציה 2 , יופיע המסך הבא:

תמונה 5 – הודעה לבחירת מספרי טלפונים אותם ניתן להזין, כפי שמופיע ע"ג ה-LCD

ניתן לבחור עד ששה מספרי טלפון אותם אפשר להזין. לכל אחד מהטלפונים שיוזנו תשלח הודעת SMS בעת הצורך.
על המשתמש להקיש על ספרה מ-1 עד 6 (אף מקש אחר לא ייקלט).
הספרה שתילחץ תאוחסן בתא 100 ב-EEPROM בספרה שנשלחה יעשה שימוש בפונקצית השליחה בקוד התוכנה כפי שיפורט בהמשך.
לאחר מכן תופיע ההודעה הבאה על הצג:

תמונה 6 – הודעת הזנת מס' טלפון, כפי שמופיע ע"ג ה-LCD

על המשתמש להקיש ספרות בלבד, ולהזין מספרי טלפון סלולאריים בלבד, בעלי 10 ספרות בדיוק. לאחר הזנת המספר, יש ללחוץ ENTER . במידה והמשתמש עשה טעות וברצונו למחוק, הוא יכול להקיש על מקש DELETE בכל עת.
תהליך ההזנה זהה לכל מספרי הטלפון.
הטלפונים מאוחסנים בתאים הבאים בתוך זיכרון ה- EEPROM:
טלפון 1: 100 עד 110.
טלפון 2: 110 עד 120.
טלפון 3: 120 עד 130.
טלפון 4: 130 עד 140.
טלפון 5: 140 עד 150.
טלפון 6: 150 עד 160.
10Byteלכל מס' טלפון בעל 10 ספרות.
לאחר הזנת כל מספרי הטלפון (עפ"י בחירת המשתמש), תופיע על המסך ההודעה הבאה: "Phone numbers are stored" .


3. במידה ונבחרה אופציה 3:
ההודעה שבתמונה 1 תחזור להופיע על הצג וניתן יהיה להתחיל את תהליך האתחול מההתחלה או לדרוך את המערכת.

b) לחיצה על לחצן ARM/DISARM: לחיצה ראשונה על לחצן הדריכה יגרום לדריכת המערכת. לאחר הלחיצה תופיע על המסך הודעה (אם המסך מחובר) "System is armed" ויישמע צפצוף בודד וקצר ע"י הצופר.
החל מרגע זה המערכת נכנסת למצב SLEEP Power Down, במצב זה ה-PIC מפסיק לעבוד ועובר לצריכת זרם נמוכה (19μA) במצב זה רק הפסיקה RB0 במעבר מנמוך לגבוה יכולה "להעיר" את ה- PIC ממצב SLEEP.
פסיקה זו יכולה להתממש אך ורק כאשר אחד או יותר מהחיישנים הופעל או נלחץ לחצן ARM/DISARM .
אם יילחץ לחצן הנטרול/דריכה פעם נוספת המערכת תנוטרל, תופיע על הצג ההודעה:
"System is disarmed" ויישמעו שני צפצופים מהירים וקצרים. לאחר מכן המערכת חוזרת למצבה ההתחלתי וניתן לדרוך אותה שוב או להיכנס לתהליך האתחול.

במידה ואחד הלחצנים יופעל כאשר המערכת עדיין במצב דרוך, המערכת תצא ממצב SLEEP יופעל הצופר ותופיע על הצג ההודעה: ALARM! ALARM!"" (במידה והצג מחובר).
מיד אח"כ התוכנה תיזום פנייה למודם דרך פורט התקשורת, ומשם תשלח הודעת טקסט, שנכתבה מראש, למספרים שאוחסנו מראש בזיכרון ה-EEPROM , עם המידע על אודות מצב החיישנים. כל עוד המערכת משדרת תידלק נורה (LED) כתומה המעידה על שליחת מידע. המערכת תישאר במצב הנ"ל כל עוד לא נלחץ לחצן הדריכה/נטרול.
במידה ונלחץ כפתור הנטרול זמזום הצופר יופסק והמערכת תנוטרל וחוזר חלילה.

אבטיפוס/דגם/סימולציה מסכמת


אלגוריתם ומבנה התוכנה

כללי
התוכנה נכתבה בשפת Cבסביבת העבודה של MPLAB עם קומפיילר PICC של חברת HITECH.קוד התוכנה שיובא בהמשך בשילוב החומרה שפורטה בפרקים הקודמים מבצעים הלכה למעשה את המתואר בסעיף "ממשק המשתמש ותיאור דרך פעולת המערכת" בפרק הקודם.
תרשים זרימה
תרשים 12 – תרשים זרימה
המבנה הכללי של התוכנה
התוכנה מורכבת משבעה קבצי מקור (Source), מתוכם קובץ אחד ראשי – logic.c, אשר מכיל בתוכו את ה-MAIN ומשישה קבצים מישנים, הקרויים בשמות רלוונטיים לפונקציות אותן קבצים אלו מכילים. (ראה תרשימים 13 ו-14)לכל אחד מה- CODEC יש גם קבצי כותר (Header), אשר מכיל את חתימות הפונקציות.הקובץ logic.c מכיל בתוכו את כל הכותרים (headers) והוא משתמש בהם בעת הצורך, ע"פ הכתוב בתוכנה.להלן תרשים מה- Work Place של מבנה התוכנה:
תרשים 13 – תיאור מבנה התוכנה מתוך סביבת העבודה
תיאור תכולת הקבצים:
Logic – מכיל בתוכו את ה- Main, שירות בפסיקה, ופונקצית דגימת החיישנים שמופעלת
בפסיקה.
Globals - מכיל את כל המשתנים הגלובליים בנוסף לפונקצית הקריאה מהמקלדת.
Lcd_functions – מכיל בתוכו את כל פונקציות האתחול של המסך, פונקציות הדפסת הודעות ע"ג הצג והעברת פקודות שליטה על המסך.
Phone_numbers – מכיל בתוכו את הפונקציה שמבצעת את קליטת מספרי הטלפון שמזינים בתהליך האתחול.
Sensors_names - מכיל בתוכו את הפונקציה שמבצעת את קליטת שמות החיישנים שמזינים בתהליך האתחול.
Serial_com – מכיל בתוכו את פונקציות השידור, פונקציות האחראיות על העברת מילות האתחול למודם ושליחת הטקסט עצמו.
Setup_menu – מכיל בתוכו את פונקציות הצגת התפריטים המתחלפים בתהליך האתחול.
להלן תרשים המתאר את מבנה הקבצים:
תרשים 14 – תיאור מבנה התוכנה
קוד התוכנה והסברו:
בתת פרק זה מובאת כל תכולת קבצי הקוד אשר מתוארים לעיל.
globals.c :
בקובץ זה מובאים כל המשתנים הגלובאליים ופונקצית הקריאה מהמקלדת:

























logic.c:
הערה: קובץ logic מובא כאן לפי הסדר שנכתב מלווה בהסברים מהותיים בלבד.
בחלק זה מוגדרים שני משתנים גלובאליים (sense_detect;armed) כמו גם רוטינת הפסיקה אשר נכנסת לפעולה כאשר מתקבלת פסיקה מ-RB0 ועולה דגל הפסיקה INTF.אם אחד מהחיישנים הופעל יורם דגל sens_detect ודגל הפסיקה יאופס... בחלק זה מוגדרים שני משתנים גלובאליים (sense_detect;armed) כמו גם רוטינת הפסיקה אשר נכנסת לפעולה כאשר מתקבלת פסיקה מ-RB0 ועולה דגל הפסיקה INTF.אם אחד מהחיישנים הופעל יורם דגל sens_detect ודגל הפסיקה יאופס...


...להלן הפונקציה שאחראית על דגימת החיישנים לאחר שנקראת מה-MAIN שיובא בהמשך.
הפונקציה הנ"ל בודקת את מצב החיישנים ומשרשרת הודעות מתאימות למשתנה גלובלי sms_msg לאחר מכן היא שולחת את ההודעה המשורשרת לפונקציה ששולחת SMS....

ה-MAIN:

בחלק זה מותחלים כל הפורטים של ה-PIC למצבי input או output
לאחר מכן מודפסת ההודעה שמופיעה בתמונה 1 כל עוד לא נלחץ לחצן הדריכה (RC5)או ENTER (*). בתוך ה-do אם נלחץ לחצן הדריכה\נטרול, יורם דגל armed והמערכת תדרך...












בשלב זה פסיקת RB0 מאופשרת, כל עוד המערכת המצב דרוך היא נכנסת למצב SLEEP
אם נלחץ שוב לחצן הדריכה\נטרול שוב, דגל sens_detect יורד לאפס והמערכת מנוטרלת...















...אלא אם כן חיישן הופעל ואז נקראת הפונקציה sensor_status שמתוארת בעמוד 34 לעיל. המערכת תתקע שם ותשמיע צופר כל עוד לחצן הנטרול לא יילחץ.
בסופו של דבר הפסיקה מנוטרלת...

...אם נלחץ ENTER יורם דגל setup והמערכת תיכנס למצב אתחול, בשלב זה נקראות הפונקציות print_screen_setup1 ו- print_screen_setup2 שנמצאות בקובץ setup_menu.c ע"מ להציג את המסכים המתחלפים אשר מוצגים בתמונות 2 ו- 3 בהתאמה. בכל זמן תוך כדיי התחלפות המסכים על המשתמש לבחור ספרה בין 1 ל- 3.
לאחר שנבחרה ספרה מורם דגל flag אשר זורק את ריצת התוכנית החוצה מהלולאה...

לאחר שנבחר מס' בין 1 ל- 3 נקראת אחת משלוש הפונקציות לאתחול.

סוף ה-MAIN.

lcd_functions:


phone_numbers.c:

פונקציה זו נקראת מה-MAIN והיא קולטת מהמשתמש עד שישה מספרי טלפון ע"פ בחירתו ומאחסנת בזיכרון ה-EEPROM את המספרים המוזנים.

...כל מספר טלפון מוגבל ל- 10 ספרות בדיוק, רק אז יתקבל ENTER והמשתמש יוכל להזין את המספר הבא. המספר שמייצג את כמות מספרי הטלפון שברצון המשתמש להזין מאוחסן בתוך במשתנה total_cell_numbers בתא 100 של זיכרון ה-EEPROM ע"מ שפונקצית התקשורת תשתמש בו בעת שליחת ההודעות(כפי שיובא בהמשך)...











sensor_names.c:






























הפונקציה הנ"ל ממפה אותיות בהתאם למקש הנלחץ ומספר הלחיצות עליו.
...המשך:
ניתן לראות שהמשתנה count מתעדכן כאשר נלחץ מקש זהה לזה שלפניו ואז הוא נשלח לפונקציה: find_letter
Serial_com.c

הפונקציה הנ"ל אחראית על אתחול ה-USART , היא מקבלת מחרוזות טקסט מהמשתנה הגלובלי buf ומכניסה אותו ל- TXREG , ניתן לראות שלאורך כל התהליך נדלק LED שמראה שהתוכנה בתהליך התקשורת...

הפונקציה הנ"ל שולחת את הטקסט המשורשר שנשלח מהפונקציה send_sms_setup (הפונ' הבאה)
לסוף הטקסט משורשר התו ה- ASCII של ^Z על מנת להודיע למודם שכל הטקסט נשלח.




הפונקציה הנ"ל מקבלת את המשתנה שנשלח לה מ-sensor_status שב- MAIN.
שולחת למודם הודעות אתחול אשר מכניסות אותו למצב שליחת הודעה.
בנוסף הפונקציה משתמשת בנתון של total_cell_numbers שהוכנס ל-EEPROM בפונקצית phone_numbers מעמודים 40-41, לפי נתון זה היא שולפת את מספרי הטלפונים הדרושים, משרשרת " משני צידי מספר הטלפון שנשלף מה-EEPROM.ומעבירה את הכול לפונקציה send_buf_to_TXREG. בסופו של דבר, היא שולחת msg עם הטקסט בתוכו הטקסט שנשלח לפונקציה send_sms_text.

setup_menu.c:
פונקציה זו מדפיסה על הצג את הודעות תפריט האתחול שמופיעות בתמונות 2 ו-3 בהתאמה.


מפת מצב זיכרון המיקרו מחשב
להלן מצב הזיכרון של ה-PIC לאחר צריבת התוכנה המלאה על כל קבציה:


Memory Usage Map:

Program space:
CODE used 9A2h ( 2466) of 2000h words ( 30.1%)
CONST used 14Eh ( 334) of 2000h words ( 4.1%)
ENTRY used 16h ( 22) of 2000h words ( 0.3%)
STRING used Fh ( 15) of 2000h words ( 0.2%)

Data space:
BANK0 used 4Ch ( 76) of 60h bytes ( 79.2%)
BANK1 used 50h ( 80) of 50h bytes (100.0%)
BANK2 used 0h ( 0) of 60h bytes ( 0.0%)
BANK3 used 0h ( 0) of 60h bytes ( 0.0%)
COMBANK used 1h ( 1) of 10h bytes ( 6.3%)

EEPROM space:
EEDATA used 0h ( 0) of 100h bytes ( 0.0%)

ID Location space:
IDLOC used 0h ( 0) of 4h bytes ( 0.0%)

Configuration bits:
CONFIG used 0h ( 0) of 1h word ( 0.0%)


Summary:
Program space used B15h ( 2837) of 2000h words ( 34.6%)
Data space used 9Dh ( 157) of 170h bytes ( 42.7%)
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
Configuration bits used 0h ( 0) of 1h word ( 0.0%)