Mündəricat:

Vaxtında Temperaturlu bir SMS göndərir: 5 addım (şəkillərlə)
Vaxtında Temperaturlu bir SMS göndərir: 5 addım (şəkillərlə)

Video: Vaxtında Temperaturlu bir SMS göndərir: 5 addım (şəkillərlə)

Video: Vaxtında Temperaturlu bir SMS göndərir: 5 addım (şəkillərlə)
Video: Kur'an'ın Tarifi İle Allah'ın Şekli Neye Benzer - [5. Pencere] - Def'i Ve Âni Yaratma Penceresi 2024, Iyul
Anonim
Vaxtında Temperaturlu bir SMS göndərir
Vaxtında Temperaturlu bir SMS göndərir

Fikir atalar evindən bir temperatur sms almaqdır.

Parçaları bir araya gətirməklə heç bir şey maraqlı deyil.

Parçalar bunlardır:

  • Geekcreit® ATmega328P Nano V3 İdarəetmə Paneli Uyğun Arduino
  • DIY NANO IO Shield V1. O Arduino üçün genişləndirmə lövhəsi
  • DS1307 Əsaslı RTC IIC / I2C Real Time Clock Module və DS18b20
  • SIM800L Dörd bantlı GSM / GPRS
  • LM2596 Mini DC-DC Dönüştürücü Ayarlanabilir Aşağı Güc Təchizatı Modulu
  • Termistor NTC MF52AT temperaturu

Hər şeydən əvvəl oxumaq və axtarmaq çox şeydir.

Nəhayət Geekcreit® Nano'dan istifadə edirəm, bütün hissələri Arduino Uno ilə sınaqdan keçirirəm.

Addım 1: SIM800l -i işə salın

SIM800l -i işə salın
SIM800l -i işə salın

Bir əsas məqam Sim800L üçün gücdür.

LM2596 Mini DC-DC çeviricisi, 3,7 volta uyğunlaşdırılmış və ayrı bir enerji təchizatı istifadə edirəm.

AT+ əmrləri ilə əlaqəni yoxlamaq üçün bu tərəf çox istifadə edilə bilər:

Arduino ilə Quick Start SIM800 (SIM800L)

Komutlarda gsm modemdən istifadə edərək pin kodunu deaktiv etməklə sim pin kodundan istifadə etdim.

Növbəti fikir hansı kitabxanadır. İnternet fərqli bir həll təklif edir.

Mənim həllim Mattias Aabmets kitabxanasıdır: AspenSIM800

Onun nümunəsi: Send_SMS.ino I -ni əsas proqram olaraq istifadə etdi və bütün digər hissələri bir -bir birləşdirdi.

Tx pin və Rx pin kodu:

Arduino üçün RX_PIN 10. SIM800 modulunun TX pininə qoşulmalıdır. Arduinonun TX_PIN 11. SIM800 modulunun RX pininə qoşulmalıdır

Kitabxanalarda *.ccp və *.h fayllarını oxumaq həmişə yaxşı fikirdir.

Onlar bir çox maraqlı göstərişlər və biliklərə malikdir.

Addım 2: İşləmək üçün DS18B20 Sensorlu RTC DS1307 alın

İşləmək üçün DS18B20 Sensorlu RTC DS1307 alın
İşləmək üçün DS18B20 Sensorlu RTC DS1307 alın

Bu tərəfi istifadə etdim: simtronyx - DS1307 və DS18B20 üçün blog.

Saatin I2C avtobus bağlantısı var və bu Arduino Uno üçündür: A4 (SDA) - A5 (SCL)

DS18B20 I D3 -ə qoşuldu.

Oxudum ki, SMS -də Floats -a yalnız String göndərə bilməzsiniz, buna görə də üzən sətirləri simə çevirmək məcburiyyətində qaldım.

Tapdığım bu kod parçası ilə etdiyim işlər:

n

MyString1 = String (currentTemp, 2); // floatı Stringə çevirin

MyString1 = (MyString1 + "C - RoomTemperatur:)");

// simli char -ə çevirmək burada başlayır

// Uzunluq (sıfır terminatoru üçün bir əlavə simvolla)

int str_len1 = MyString1.length () + 1; // Xarakter silsiləsini hazırlayın (tampon)

char char_array1 [str_len1]; // Yenidən kopyalayın

MyString1.toCharArray (char_array1, str_len1); // simli char -ə çevirmək onu bitirir

Düzünü desəm, necə işlədiyini bilmirəm, amma işləyir.

Addım 3: Thermistor NTC MF52AT -ı işə salın

Thermistor NTC MF52AT -ı işə salın
Thermistor NTC MF52AT -ı işə salın

Bir termistorla işləmişəm, buna görə də asan hissə idi.

Ancaq burada fərqli bir həll tapa bilərsiniz.

Son kodda mənimki tapa bilərsiniz.

Floats to String tərcüməsini də tapa bilərsiniz.

Termistora bir az tel və 10 k ohm müqavimət lehimlədi.

Addım 4: Hamısını Birlikdə Çalışdırın

Beləliklə, proqramın bütün hissələrini birlikdə yazdım.

İndi hər gün eyni anda necə bir SMS göndərəcəyimi anlamalı idim.

Fərqli fikirlər haqqında oxudum, bəziləri TimerAlarm və digər yanaşma ilə.

Ancaq arduino forumunda bir yerdə sadə bir həll tapdım:

if (now.hour () == 8 && now.minute () == 00 && now.second () == 59)

{

SIM.smsSend (addr, char_array); // termistor

gecikmə (500); SIM.smsSend (addr, char_array1); // DS18B20}

Amma niyə indi.second = 59, çünki bütün dəqiqə SMS göndərir. Bu mənim üçün faydalıdır, amma özünüzü sınayın.

Bir az sınaqdan sonra proqramı Geekcreit® Nano'ya yüklədim.

Bu bəlkə də ən yaxşı proqram yazısı deyil:) amma istədiyini edir.

Geekcreit® ATmega328P Nano'da bəzi Arduino IDE problemləri olduğu üçün terminalla yükləyirəm (Linux Mint) USB tinyispini bununla atıram: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex

Addım 5: İşlədi

Bəli, işləndi və evə yerləşdirildi.

Hər gün səhər saat 6: 00 -da temperaturu ilə bağlı bir SMS alıram.

Tövsiyə: