תוכן עניינים:

התראות טמפ על טקסט מ- ATTINY85 ו- A1 GSM: 5 שלבים
התראות טמפ על טקסט מ- ATTINY85 ו- A1 GSM: 5 שלבים

וִידֵאוֹ: התראות טמפ על טקסט מ- ATTINY85 ו- A1 GSM: 5 שלבים

וִידֵאוֹ: התראות טמפ על טקסט מ- ATTINY85 ו- A1 GSM: 5 שלבים
וִידֵאוֹ: ששון איפרם שאולוב - בואי נדבר [Prod.By Tamir Zur] 2024, יולי
Anonim
התראות טמפ על טקסט מ- GSM ATTINY85 ו- A1
התראות טמפ על טקסט מ- GSM ATTINY85 ו- A1

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

ההרמה הכבדה מתבצעת על ידי ATTINY 85 הפשוט אך רב עוצמה אשר לוכד את נתוני הטמפרטורה ולאחר מכן מפעיל SMS להישלח באמצעות מודול AI-Thinker A6 GSM.

בקיצור, אתה כותב את קוד ATTINY85 בסביבת Arduino IDE ושורף אותו ב- ATTINY85 באמצעות ממיר USBASP טורי/USB. סקרתי את ההגדרה של מודול ה- AI-Thinker A6 GSM ו- Arduino IDE בשתי הדרכות קודמות. מה ששונה כאן הוא ממשק המודול ATTINY ו- A6 GSM באמצעות תקשורת טורית.

www.instructables.com/id/How-to-Send-an-SM…https://www.instructables.com/id/15-Dollar-Attiny8…

לאחר התכנות, ה- ATTINY קורא את נתוני הטמפרטורה מחיישן מדחום - דאלאס 18B20- ולאחר מכן שולח את הנתונים והפקודות באמצעות חיבור טורי למודול ה- GSM A6 ולאחר מכן שולח אותו כטקסט SMS לטלפון הנייד / החכם שלך.

הנה מה שאתה צריך:

1. ממיר טורי/USBASP.

2. ATTINY 85.

3. מודול AI-Thinker A6 GSM גירסה 6 (עם סים שיש לו זיכויים ל- SMS).

4. אספקת חשמל בלוח 3.3v ל- ATTINY85.

5. 3.3.v ספק כוח USB עבור מודול ה- AI-Thinker A6 GSM.

6. חיישן טמפרטורה של דאלאס 18B20..

7. נגד 4.7k לחיישן 18B20.

8. קרש לחם וכבלים.

9. Arduino IDE (השתמשתי בגרסה 1.8.5. לשם כך).

10. מחשב נייד Windows X (השתמשתי בגרסה 10) עם יציאת USB בחינם.

שלב 1: תכנות ה- ATTINY 85

להלן קוד Arduino IDE (יהיה עליך לשנות את מספר הטלפון שאליו ברצונך לשלוח את ה- SMS.)

#include #include #include

// *** // *** הגדירו את סיכות RX ו- TX. בחר כל שני סיכות // *** שאינן בשימוש. נסה להימנע מ- D0 (סיכה 5) // *** ומ- D2 (סיכה 7) אם אתה מתכנן להשתמש ב- I2C. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

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

SoftwareSerial mySerial = SoftwareSerial (RX, TX);

// *** // *** Pinout ATtiny25/45/85: // *** PDIP/SOIC/TSSOP // *** ================== ==================================================== ========================= // *** // *** (PCINT5/RESET/ADC0/dW) PB5 [1]*[8] VCC // *** (PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3 [2] [7] PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2) // *** (PCINT4/ XTAL2/CLKO/OC1B/ADC2) PB4 [3] [6] PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1) // *** GND [4] [5] PB0 (MOSI/DI/SDA/AIN0 /OC0A/OC1A/AREF/PCINT0) // *** // תדר ATTINY 85 המוגדר ב 8 MHz פנימי

// *** // *** סיכה שעליה מחובר נתוני OneWire // *** החוט. // *** #הגדר ONE_WIRE_BUS 1

// *** // *** הגדר מופע oneWire לתקשורת עם כל מכשירי OneWire // *** (לא רק מכשירי הטמפרטורה של מקסים/דאלאס). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** העבירו את התייחסות oneWire שלנו לטמפרטורה של דאלאס. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

הגדרת void () {// *** // *** אתחל את היציאה הטורית // *** mySerial.begin (115200); עיכוב (60000);

// *** הפעל את הספרייה. _sensors.begin (); }

לולאת חלל () {

// *** // *** קבל את הטמפרטורה הנוכחית והצג אותה. // *** _sensors.requestTemperatures (); עיכוב (2000); tempC כפול = _sensors.getTempCByIndex (0); tempF כפול = _sensors.getTempFByIndex (0); // בדוק אם יש שגיאות - לפעמים בהתחלה, הטמפ 'מוצגת כ 85C

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature) {SMS_temp (tempC, "חם מדי");}}

void SMS_temp (mytemp כפול, מחרוזת myalert) {mySerial.println ("AT+CMGF = 1"); // מוגדר לעיכוב מצב SMS (1000); mySerial.println ("AT+CMGF = 1"); // מוגדר לעיכוב במצב SMS (1000); //mySerial.println("AT+CMGS=\"+ המספר שלך / ""); // הגדר את עיכוב מספר הטלפון (עטוף במרכאות כפולות) (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); עיכוב (1000); mySerial.write (0x1A); // שולח ctrl+z סוף עיכוב ההודעה (1000); mySerial.write (0x0D); // החזרת עגלה בהשהיית הקס (1000); mySerial.write (0x0A); עיכוב (1000000); // 17 דקות - התאמה להתאמה לאפליקציה שלך}

פתח את סביבת Arduino IDE - תיארתי כיצד תוכל לעקוף זאת בפירוט בהוראה הקודמת שלי שאליה רמזתי קודם.

תזדקק לספריות הבאות

SoftwareSerial.h

OneWire.h

DallasTemperature.h

לאחר מכן, הגדר את סיכות RX ו- TX ב- ATTINY85 שעליך להתחבר עם ה- Thinker A1. ל- ATTINY 85 יש 8 סיכות, ארבע מכל צד והוא מיושר באמצעות הנקודה על פני השטח a s הפניה. סיכה 1 או סיכה איפוס נמצאת ליד הנקודה הזו.

(במקרה זה בחרתי Pin2 ו- 3 - אלה נמצאים באותו צד כמו סיכת RESET שנמצאת ליד הנקודה על פני השטח של ATTINY 85. Pin 2 הוא הסיכה הבאה לצד הסיכה RESET בעוד Pin 3 נמצא בין Pin 2 ו- Ground)

לאחר מכן, עליך להגדיר את חיישן הטמפרטורה -

#הגדר ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

לאחר מכן הגדר את היציאה הטורית של התוכנה

mySerial.begin (115200);

עיכוב (60000);

ולאחר מכן התקשר לחיישנים עם _sensors.begin ();

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

לולאת void () {sensors.requestTemperatures (); עיכוב (2000);

tempC כפול = _sensors.getTempCByIndex (0);

tempF כפול = _sensors.getTempFByIndex (0);

if (tempC <= 14) {SMS_temp (tempC, "קר מסוכן");}

if (tempC> 14 && tempC <= 18) {SMS_temp (tempC, "די קר");}

if (tempC> 18 && tempC <23) {SMS_temp (tempC, "Temp Just right");}

if (tempC> = 23 && error_temperature) {SMS_temp (tempC, "חם מדי");}

}

==============

לאחר מכן, הגדר את Arduino IDE כדי להתכונן להעלאה ל- ATTINY85.

מספר דברים שכדאי לשים לב אליהם

1- אם אין לך את משפחת לוחות ATTINY, הוסף את כתובת האתר הבאה https://raw.githubusercontent.com/damellis/attiny/… בכתובת URL/מנהל העדפות קובץ/העדפות נוספות, לאחר מכן, בתוך Arduio IDE לחץ על כלים/לוח/מנהל לוח וחפש את ATTINY והתקן את הלוח החדש. שנה את המעבד ל- Attiny85.

שלב 2: העלאת התוכנית ל- ATTINY85

העלאת התוכנית ל- ATTINY85
העלאת התוכנית ל- ATTINY85

עיין גם בהוראה הקודמת שלי בנושא-https://www.instructables.com/id/15-Dollar-Attiny8…

ל- ATTINY85 שני מצבים, מצב תכנות ומבצעים, בהתאמה. מצב תכנות ראשית, זיהוי הסיכות ב- ATTINY85. לשם כך, מצא את החריץ הקטן על פני השבב הנמצא ליד סיכת RST/RESET. באמצעות זה כנקודת התייחסות, אתה יכול לזהות את שאר הסיכות. כל המידע הזה מסופק בגיליון הנתונים של A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

יש לחבר את ה- USBasp ו- ATTINY85 כפי שמוצג בתמונה למעלה.

לאחר מכן, ב- Arduino IDE, הגדר את המתכנת ל- USBasp ואת התדר ל- 8Mhz פנימי.

חבר את USBasp ליציאת USB במחשב הנייד שלך (ב- Windows 10, אם אין לך את מנהל ההתקן USBasp השתמש ב- Zadig בהתאם לאתר

לאחר מכן, כאשר ה- USBasp מחובר, בחר מתוך הסקיצה/העלאה של Arduino IDE ובתקווה שתראה את התקדמות ההעלאה המוצגת באותיות אדומות של IDE Arduino ומסתיימת ב- avrdude. תודה.

כל השגיאות בשלב זה בדרך כלל קשורות בכבלים רופפים או במנהל ההתקן הלא נכון.

שלב 3: הפעלת התוכנית

הפעלת התוכנית שלך
הפעלת התוכנית שלך
הפעלת התוכנית שלך
הפעלת התוכנית שלך
הפעלת התוכנית שלך
הפעלת התוכנית שלך

ראשית, משהו על חיישן מדחום 18b20 של דאלאס. יש לו 3 סיכות, קרקע (G), נתונים (D) ו- VCC כפי שמוצג בתמונה למעלה. לצורך הפעולה הוא דורש גישור בין D ו- VCC לנגד 4.7k. G ו- VCC מחוברים לקטבים בהתאמה בעוד D מחובר ל- ATTINY 85, pin - [6] PB1, כפי שהוגדר בקוד.

לאחר מכן, חבר את ה- ATTINY ל- A6 GSM כדלקמן (ומוצג למעלה)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

ועל A6 עצמה, A6 PWR A6 VCC 5.0A6 RST A6 GND (אל תחבר לקרקע עדיין !!!!!)

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

שלב 4: מסקנה

ההוראה הזו עשויה להיראות פשוטה למדי, אך הרעיון הוא להמחיש מה ניתן להשיג עם רכיבים בעלות נמוכה. ברור שאם יש לך גישה ל- wi-fi או לרכזת BLE אז יש פתרונות מתאימים יותר.

לא כיסיתי פונקציונליות אחרת כגון שליחת SMS לטלפון ליזום הקלטה / שידור טמפרטורה וכו '.

מוּמלָץ: