جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
الفكرة هي الحصول على الرسائل القصيرة درجة الحرارة من منزل والدي.
لا شيء يتوهم فقط تجميع الأجزاء معًا بسرعة.
الأجزاء هي:
- لوحة تحكم Geekcreit® ATmega328P Nano V3 متوافقة مع Arduino
- لوحة توسعة NANO IO Shield V1. O ذاتي الصنع لأردوينو
- DS1307 على أساس RTC IIC / I2C وحدة ساعة الوقت الحقيقي و DS18b20
- SIM800L رباعي الموجات GSM / GPRS
- LM2596 ميني DC-DC محول قابل للتعديل تنحى وحدة تزويد الطاقة
- درجة حرارة الثرمستور NTC MF52AT
أولا الكثير من القراءة والبحث.
قبل أن أستخدم Geekcreit® Nano أخيرًا ، أختبر جميع الأجزاء باستخدام Arduino Uno.
الخطوة 1: احصل على SIM800l للعمل
نقطة رئيسية واحدة هي قوة Sim800L.
أستخدم محول LM2596 Mini DC-DC ، مضبوطًا على 3.7 فولت ومصدر طاقة منفصل.
لاختبار الاتصال بأوامر AT + ، يكون هذا الجانب قابلاً للاستخدام للغاية:
Quickstart SIM800 (SIM800L) مع Arduino
مع تعطيل رمز PIN باستخدام مودم gsm في الأوامر ، حصلت على رمز PIN الخاص بـ sim.
الاعتبار التالي الذي مكتبة. يقدم الإنترنت حلًا مختلفًا.
الحل الذي أقدمه هو مكتبة Mattias Aabmets: AspenSIM800
مثاله: استخدم Send_SMS.ino أنا كبرنامج أساسي وواحدًا تلو الآخر لربط جميع الأجزاء الأخرى معًا.
يعتبر Tx pin و Rx pin رمزًا لـ:
RX_PIN 10 من Arduino. يجب أن تكون متصلاً بدبوس TX الخاص بوحدة SIM800. X_PIN 11 من Arduino. يجب توصيل دبوس RX بوحدة SIM800
من الجيد دائمًا قراءة ملفات *.ccp و *.h في المكتبات.
أنها تحتوي على العديد من التلميحات والمعرفة المثيرة للاهتمام.
الخطوة 2: احصل على RTC DS1307 مع مستشعر DS18B20 للعمل
لقد استخدمت هذا الجانب الجانبي: simtronyx - مدونة DS1307 و DS18B20.
تحتوي الساعة على اتصال ناقل I2C وهذا مخصص لـ Arduino Uno: A4 (SDA) - A5 (SCL)
DS18B20 أنا متصل بـ D3.
قرأت أنه في رسالة نصية قصيرة لا يمكنك إرسال Floats فقط String ، لذلك اضطررت إلى ترجمة العوامات إلى سلسلة.
ما أفعله مع مقتطف الشفرة هذا وجدته:
ن
MyString1 = String (currentTemp، 2) ، // تحويل تعويم إلى سلسلة
MyString1 = (MyString1 + "C - RoomTemperatur:)")؛
// تحويل السلسلة إلى حرف يبدأ من هنا
// الطول (مع حرف إضافي واحد للنهاية الصفرية)
int str_len1 = MyString1.length () + 1 ، // تحضير مجموعة الأحرف (المخزن المؤقت)
char_array1 [str_len1] ؛ // انسخها
MyString1.toCharArray (char_array1، str_len1) ، // تحويل السلسلة إلى حرف ينتهي بها
سأكون صادقًا ، فأنا لا أعرف كيف يعمل ، لكنه يعمل.
الخطوة 3: احصل على Thermistor NTC MF52AT للعمل
لقد عملت مع الثرمستور لذلك كان الجزء السهل.
ولكن هنا أيضًا يمكنك العثور على حل مختلف.
في الكود النهائي يمكنك أن تجد لي.
يمكنك أيضًا العثور على الترجمة Floats to String.
ملحومة بعض الأسلاك والمقاوم 10 كيلو أوم إلى الثرمستور.
الخطوة 4: احصل على الجميع للعمل معًا
لذلك كتبت جميع أجزاء البرنامج معًا.
الآن كان علي أن أعرف كيف أرسل رسالة قصيرة واحدة كل يوم ، في نفس الوقت.
قرأت عن أفكار مختلفة ، بعضها باستخدام TimerAlarm ونهج آخر.
لكنني وجدت حلاً بسيطًا في مكان ما في منتدى اردوينو:
إذا (now.hour () == 8 && now.minute () == 00 && now.second () == 59)
{
SIM.smsSend (العنوان ، char_array) ؛ // الثرمستور
تأخير (500) ؛ SIM.smsSend (addr، char_array1) ؛ // DS18B20}
لكن لماذا now.second = 59 لأنه يرسل دقيقة كاملة SMS. انها تفعل بالنسبة لي ولكن جرب نفسك.
بعد بعض الاختبارات ، قمت بتحميل البرنامج إلى Geekcreit® Nano.
قد لا يكون هذا أفضل كتابة برمجة:) ولكنه يفعل ما هو مرغوب فيه.
نظرًا لأن Geekcreit® ATmega328P Nano به بعض مشكلات Arduino IDE ، أقوم بالتحميل بواسطة Terminal (Linux Mint) باستخدام USBtinyisp مع هذا: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex
الخطوة 5: لقد نجحت
نعم لقد نجح الأمر ووضعه في المنزل.
كل يوم في الساعة 6:00 صباحًا أتلقى رسالة نصية قصيرة تحتوي على درجة الحرارة.