הטלפון הנייד הוא המצאה מהפכנית של המאה. זה תוכנן בעיקר לביצוע וקבלת שיחות והודעות טקסט, אך הוא הפך לכל העולם לאחר שהטלפון החכם נכנס לתמונה. בפרויקט זה אנו בונים מערכת אוטומציה ביתית, בה ניתן לשלוט במכשירי החשמל הביתיים באמצעות הטלפון הפשוט מבוסס GSM, רק על ידי שליחת SMS דרך הטלפון שלו. בפרויקט זה אין צורך בטלפון חכם, רק טלפון ה- GSM הישן יעבוד להפעלה וכיבוי של מכשירים אלקטרוניים ביתיים, מכל מקום. אתה יכול גם לבדוק כמה פרויקטים נוספים של אוטומציה ביתית כאן: IR אוטומציה ביתית מרחוק באמצעות Arduino, אוטומציה ביתית מבוקרת באמצעות Bluetooth יחד עם אוטומציה ביתית מבוססת DTMF, אוטומציה ביתית מבוקרת באמצעות Arduino.
הסבר עבודה
בפרויקט זה, Arduino משמש לשליטה בתהליך כולו. כאן השתמשנו בתקשורת אלחוטית GSM לשליטה במכשירים ביתיים. אנו שולחים כמה פקודות כמו "# A. light on *", "# A. light off *" וכן הלאה לשליטה על מכשירי חשמל ביתיים. לאחר שקיבל פקודות שניתנו על ידי Arduino באמצעות GSM, Arduino שולח אות לממסרים, להפעיל או לכבות את המכשירים הביתיים באמצעות מנהל התקן ממסר.
רכיבי מעגל:
- ארדואינו UNO
- מודול GSM
- ULN2003
- ממסר 5 וולט
- נורה עם בעל
- חוטי חיבור
- לוח לחם
- LCD בגודל 16x2
- ספק כוח
- טלפון נייד
כאן השתמשנו בקידומת במחרוזת הפקודה שהיא "# A.". קידומת זו משמשת לזיהוי שהפקודה הראשית מגיעה לצידה ו- * בסוף המחרוזת מציין שההודעה הסתיימה.
כאשר אנו שולחים SMS למודול GSM באמצעות Mobile, אז GSM מקבל את ה- SMS ושולח אותו ל- Arduino. כעת ארדואינו קורא את ה- SMS הזה ומחלץ את הפקודה הראשית מהמחרוזת שהתקבלה ושומר במשתנה. אחרי זה, Arduino משווה מחרוזת זו עם מחרוזת מוגדרת מראש. אם התרחש התאמה אז Arduino שולח אות לממסר באמצעות מנהל התקן ממסר להפעלה וכיבוי של מכשירי החשמל הביתיים. ותוצאה יחסית גם מודפסת על 16x2 LCD באמצעות פקודות מתאימות.
כאן בפרויקט זה השתמשנו בנורת 3 אפס וואט לצורך הדגמה המציינת מאוורר, אור וטלוויזיה.
להלן רשימת ההודעות שאנו שולחים באמצעות SMS כדי להפעיל ולכבות את המאוורר, האור והטלוויזיה:
S.no. |
הוֹדָעָה |
מבצע |
1 |
# A. fan on * |
מאוורר פועל |
2 |
# A. מניפה * |
מאוורר כבוי |
3 |
# A. אור דולק * |
אור דולק |
4 |
# A. אור כבוי * |
אור כבוי |
5 |
# A.tv ב- * |
טלוויזיה מופעלת |
6 |
# A.tv כבוי * |
טלוויזיה כבויה |
7 |
# A. הכל ב * |
הכל פועל |
8 |
# A. הכל כבוי * |
הכל מכובה |
מודול GSM:
מודול GSM משמש במכשירי תקשורת רבים המבוססים על טכנולוגיית GSM (Global System for Mobile Communications). הוא משמש לאינטראקציה עם רשת GSM באמצעות מחשב. מודול GSM מבין רק פקודות AT ויכול להגיב בהתאם. הפקודה הבסיסית ביותר היא "AT", אם GSM מגיב בסדר אז זה עובד טוב אחרת הוא מגיב עם "ERROR". ישנן פקודות AT שונות כמו ATA למענה לשיחה, ATD לחיוג לשיחה, AT + CMGR לקריאת ההודעה, AT + CMGS למשלוח SMS וכו '. אחרי פקודות AT צריך להחזיר Carriage כלומר \ r (0D ב- hex), כמו "AT + CMGS \ r". אנו יכולים להשתמש במודול GSM באמצעות פקודות אלה:
ATE0 - להפעלת הד
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "מספר נייד"
>> עכשיו נוכל לכתוב את ההודעה שלנו
>> לאחר כתיבת ההודעה
Ctrl + Z שלח פקודת הודעה (26 בעשרוני).
ENTER = 0x0d ב- HEX
ה- SIM900 הוא מודול GSM / GPRS מרובע-להקות המספק ביצועי GSM / GPRS 850/900/1800 / 1900MHz עבור קול, SMS ונתונים עם צריכת חשמל נמוכה.
תיאור המעגל
חיבורים למעגל אוטומציה ביתית מבוסס GSM זה די פשוטים, כאן משתמשים בתצוגת גביש נוזלי להצגת מצב של מכשירי חשמל ביתיים המחוברים ישירות לארדואינו במצב 4 סיביות. סיכות נתונים של LCD כלומר RS, EN, D4, D5, D6, D7 מחוברות לסיכה דיגיטלית של ארדואינו מספר 6, 7, 8, 9, 10, 11. ופין Rx ו- Tx של מודול GSM מחובר ישירות ב- Tx ו- Rx סיכה של ארדואינו בהתאמה. ומודול GSM מופעל באמצעות מתאם 12 וולט. ממסרי SPDT 3 5 וולט משמשים לשליטה על LIGHT, FAN וטלוויזיה. וממסרים מחוברים לסיכה ארדואינו מספר 3, 4 ו -5 באמצעות מנהל ההתקן ממסר ULN2003 לשליטה על LIGHT, FAN וטלוויזיה בהתאמה.
תיאור קוד
בתכנות חלק מפרויקט זה, קודם כל בתכנות אנו כוללים ספרייה לתצוגת גביש נוזלי ואז אנו מגדירים נתונים וסיכות בקרה עבור LCD ומכשירים ביתיים.
#לִכלוֹל
לאחר תקשורת טורית זו מאותחל ב 9600 bps ונותן כיוון לסיכה משומשת.
הגדרת חלל () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); pinMode (מאוורר, OUTPUT); pinMode (אור, OUTPUT); pinMode (טלוויזיה, OUTPUT);
לקבלת נתונים באופן סדרתי השתמשנו בשתי פונקציות האחת היא Serial.available שבודקת אם נתונים סדרתיים כלשהם מגיעים ואחרת היא Serial.read שקוראת את הנתונים שמגיעים סדרתי.
בעוד (Serial.available ()) {char inChar = Serial.read ();
לאחר שקיבלנו נתונים באופן סדרתי אחסנו אותם במחרוזת ואז המתינו ל- Enter.
בטל serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); עיכוב (1000); digitalWrite (led, LOW); בעוד (Serial.available ()) {char inChar = Serial.read (); str = inChar; אם (inChar == '*') {temp = 1; לַחֲזוֹר; }
כאשר Enter מגיע תכנית התחל להשוות מחרוזת שהתקבלה עם מחרוזת שהוגדרה כבר ואם מחרוזת תואמת אז מבצעים פעולה יחסית באמצעות פקודה מתאימה המוצגת בקוד.
בטל בטל () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ON"); עיכוב (200); } אחר אם (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("OFF"); עיכוב (200); }