جدول المحتويات:

تنبيهات درجة حرارة الرسائل النصية القصيرة من ATTINY85 و A1 GSM: 5 خطوات
تنبيهات درجة حرارة الرسائل النصية القصيرة من ATTINY85 و A1 GSM: 5 خطوات

فيديو: تنبيهات درجة حرارة الرسائل النصية القصيرة من ATTINY85 و A1 GSM: 5 خطوات

فيديو: تنبيهات درجة حرارة الرسائل النصية القصيرة من ATTINY85 و A1 GSM: 5 خطوات
فيديو: How to Select and Evaluate a Temperature Monitoring & Recording System with Phone/SMS alerts? 2024, يوليو
Anonim
تنبيهات درجة حرارة الرسائل النصية القصيرة من ATTINY85 و A1 GSM
تنبيهات درجة حرارة الرسائل النصية القصيرة من ATTINY85 و A1 GSM

يوضح لك هذا التوجيه كيفية التقاط درجة الحرارة من مستشعر درجة حرارة بسيط وإرسالها عبر رسالة نصية قصيرة إلى هاتفك المحمول. لتبسيط الأمور ، أرسل درجة الحرارة بفاصل زمني محدد ، لكنني أظهر أيضًا كيف يمكن القيام بذلك فقط عن طريق الاستثناء / التنبيهات. تكلفة الجهاز منخفضة للغاية ، أقل من 10 دولارات ، على الرغم من وجود تكاليف الرسائل القصيرة المتكررة التي يجب مراعاتها.

يتم تنفيذ الرفع الثقيل بواسطة 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 بيانات درجة الحرارة من مستشعر مقياس الحرارة - Dallas 18B20- ثم يرسل البيانات والأوامر عن طريق الاتصال التسلسلي إلى وحدة A6 GSM التي ترسلها بعد ذلك في صورة رسالة نصية قصيرة إلى هاتفك المحمول / الهاتف الذكي.

هذا ما تحتاجه:

1. USBASP المسلسل / محول USB.

2. ATTINY 85.

3. إصدار الوحدة النمطية AI-Thinker A6 GSM 6 (مع شريحة SIM بها أرصدة SMS).

4. 3.3v امدادات الطاقة اللوح ل ATTINY85.

5. 3.3.v USB امدادات الطاقة لوحدة AI-Thinker A6 GSM.

6. جهاز استشعار درجة حرارة دالاس 18B20..

7. 4.7 كيلو المقاوم لجهاز الاستشعار 18B20.

8. اللوح والكابلات.

9. Arduino IDE (لقد استخدمت الإصدار 1.8.5 لهذا الغرض).

10. كمبيوتر محمول Windows X (كنت أستخدم الإصدار 10) مع منفذ USB مجاني.

الخطوة الأولى: برمجة ATTINY 85

إليك رمز Arduino IDE (سيتعين عليك تغيير رقم الهاتف الذي تريد إرسال الرسائل القصيرة إليه.)

# تضمين # تضمين # تضمين

// *** // *** حدد دبابيس RX و TX. اختر أي اثنين من // *** دبابيس غير مستخدمة. حاول تجنب D0 (pin 5) // *** و D2 (pin 7) إذا كنت تخطط لاستخدام I2C. // *** #define RX 3 // *** D3، Pin 2 #define TX 4 // *** D4، Pin 3

// *** // *** تحديد المنفذ التسلسلي المستند إلى البرنامج. استخدام // *** name 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 ميجا هرتز داخلي

// *** // *** الدبوس الذي يتصل به سلك بيانات OneWire // ***. // *** #define ONE_WIRE_BUS 1

// *** // *** قم بإعداد مثيل oneWire للتواصل مع أي أجهزة OneWire // *** (وليس فقط دوائر متكاملة لدرجة الحرارة Maxim / Dallas). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS) ؛

// *** // *** قم بتمرير مرجعنا السلكي إلى درجة حرارة دالاس. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire) ؛

إعداد باطل () {// *** // *** تهيئة المنفذ التسلسلي // *** mySerial.begin (115200) ؛ تأخير (60000) ؛

// *** بدء تشغيل المكتبة. _sensors.begin () ، }

حلقة فارغة() {

// *** // *** احصل على درجة الحرارة الحالية واعرضها. // *** _sensors.requestTemperatures () ، تأخير (2000) ؛ مزدوج tempC = _sensors.getTempCByIndex (0) ، مزدوج tempF = _sensors.getTempFByIndex (0) ، // تحقق من وجود أخطاء - في بعض الأحيان عند البداية ، تظهر درجة الحرارة على أنها 85 درجة مئوية

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature) {SMS_temp (tempC، "Too warm")؛}}

SMS_temp باطل (mytemp مزدوج ، سلسلة myalert) {mySerial.println ("AT + CMGF = 1") ؛ // ضبط على تأخير وضع الرسائل القصيرة (1000) ؛ mySerial.println ("AT + CMGF = 1") ؛ // ضبط على تأخير وضع الرسائل القصيرة (1000) ؛ //mySerial.println("AT+CMGS=\"+YOUR NUMBER / "") ؛ // تعيين رقم الهاتف (ملفوف بعلامات اقتباس مزدوجة) تأخير (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

دالاس درجة الحرارة

بعد ذلك ، قم بتكوين دبابيس RX و TX على ATTINY85 الذي تحتاجه للاتصال بـ A1 Thinker. يحتوي ATTINY 85 على 8 دبابيس ، أربعة على كل جانب ومحاذاة باستخدام النقطة الموجودة على السطح كمرجع. يوجد الدبوس 1 أو دبوس إعادة الضبط بجانب النقطة النقطة.

(في هذه الحالة اخترت Pin2 و 3 - هذان على نفس الجانب مثل دبوس RESET الموجود بجانب النقطة على سطح ATTINY 85. الدبوس 2 هو الدبوس التالي على طول دبوس RESET بينما الدبوس 3 بين Pin 2 والأرض)

بعد ذلك ، عليك تكوين مستشعر درجة الحرارة -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS) ،

DallasTemperature _sensors = DallasTemperature (& _ oneWire) ؛

بعد ذلك قم بإعداد المنفذ التسلسلي للبرنامج

mySerial.begin (115200) ؛

تأخير (60000) ؛

ثم استدعاء المستشعرات بـ _sensors.begin () ؛

بعد ذلك ، هناك الحلقة ، التي تستقصي في وقت محدد مسبقًا ، وتسجل درجة الحرارة وترسل رسالة / تنبيهًا اعتمادًا على القيمة. وهي تستخدم وظيفة SMS_temp وهي أيضًا المكان الذي تحدد فيه توقيت الحلقة

حلقة باطلة () {sensors.requestTemperatures () ؛ تأخير (2000) ؛

مزدوج tempC = _sensors.getTempCByIndex (0) ،

مزدوج tempF = _sensors.getTempFByIndex (0) ،

إذا (درجة الحرارة <= 14) {SMS_temp (tempC، "DANGEROUSLY Cold")؛}

إذا (tempC> 14 && tempC <= 18) {SMS_temp (tempC، "Quite Cold")؛}

إذا (tempC> 18 && tempC <23) {SMS_temp (tempC، "Temp Just right")؛}

إذا (tempC> = 23 && error_temperature) {SMS_temp (tempC، "Too warm")؛}

}

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

بعد ذلك ، قم بإعداد Arduino IDE للتحضير للتحميل إلى ATTINY85.

عدد من الأشياء التي يجب ملاحظتها

1- إذا لم يكن لديك عائلة لوحات ATTINY ، أضف عنوان url التالي https://raw.githubusercontent.com/damellis/attiny/… في ملف / تفضيلات / عنوان URL لمدير اللوحات الإضافية ،

بعد ذلك ، داخل Arduio IDE ، انقر فوق Tools / Board / Board Manager وابحث عن ATTINY وقم بتثبيت اللوحة الجديدة. قم بتغيير المعالج إلى Attiny85.

الخطوة الثانية: تحميل البرنامج على ATTINY85

تحميل البرنامج على ATTINY85
تحميل البرنامج على ATTINY85

أيضًا ، راجع التعليمات السابقة الخاصة بي حول هذا -

يحتوي ATTINY85 على وضعين ، وضع البرمجة والعمليات ، على التوالي. وضع البرمجة أولاً ، حدد المسامير الموجودة على ATTINY85. للقيام بذلك ، ابحث عن الشق الصغير على سطح الشريحة بجانب دبوس RST / RESET. باستخدام هذا كنقطة مرجعية ، يمكنك تحديد بقية الدبابيس. يتم توفير كل هذه المعلومات في ورقة بيانات A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At …

يجب توصيل USBasp و ATTINY85 كما هو موضح في الصورة أعلاه.

بعد ذلك ، على Arduino IDE ، اضبط المبرمج على USBasp والتردد على 8 ميجا هرتز داخلي.

قم بتوصيل USBasp بمنفذ USB على الكمبيوتر المحمول الخاص بك (في Windows 10 ، إذا لم يكن لديك برنامج تشغيل USBasp ، فاستخدم Zadig وفقًا لموقع الويب

بعد ذلك ، مع توصيل USBasp ، حدد من Arduino IDE Sketch / Upload ونأمل أن ترى تقدم التحميل موضحًا بأحرف حمراء من Arduino IDE وينتهي مع avrdude. شكرا لك.

أي أخطاء في هذه المرحلة عادة ما تكون مرتبطة بكابلات مفكوكة أو برنامج تشغيل خاطئ.

الخطوة 3: تشغيل البرنامج الخاص بك

تشغيل برنامجك
تشغيل برنامجك
تشغيل برنامجك
تشغيل برنامجك
تشغيل برنامجك
تشغيل برنامجك

أولاً ، شيء عن مستشعر مقياس الحرارة دالاس 18b20. يحتوي على 3 دبابيس ، أرضي (G) ، بيانات (D) و VCC كما هو موضح في الصورة أعلاه. للتشغيل ، يتطلب توصيل D و VCC بمقاوم 4.7 كيلو. 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 ، فهناك حلول أكثر ملاءمة.

لم أقم بتغطية وظائف أخرى مثل إرسال رسالة نصية قصيرة إلى الهاتف لبدء تسجيل درجة الحرارة / الإرسال وما إلى ذلك.

موصى به: