Turinys:

Laiku siunčia SMS su „Temperatur“: 5 žingsniai (su nuotraukomis)
Laiku siunčia SMS su „Temperatur“: 5 žingsniai (su nuotraukomis)

Video: Laiku siunčia SMS su „Temperatur“: 5 žingsniai (su nuotraukomis)

Video: Laiku siunčia SMS su „Temperatur“: 5 žingsniai (su nuotraukomis)
Video: Zigbee датчик освещенности, температуры и влажности с экраном на электронных чернилах Moes 2024, Lapkritis
Anonim
Laiku išsiunčia SMS su „Temperatur“
Laiku išsiunčia SMS su „Temperatur“

Idėja yra gauti temperatūros pranešimą iš mano tėvų namų.

Nieko nuostabaus - tik greitas dalių sujungimas.

Dalys yra:

  • „Geekcreit® ATmega328P Nano V3“valdiklio plokštė suderinama su „Arduino“
  • „Pasidaryk pats“„NANO IO Shield V1. O“išplėtimo plokštė, skirta „Arduino“
  • DS1307 pagrįstas RTC IIC / I2C realaus laiko laikrodžio modulis ir DS18b20
  • SIM800L keturių juostų GSM / GPRS
  • LM2596 Mini DC-DC keitiklis Reguliuojamas mažinimo maitinimo blokas
  • Termistoriaus NTC MF52AT temperatūra

Pirmiausia labai daug nuo skaitymo ir paieškos.

Kadangi pagaliau naudoju „Geekcreit® Nano“, visas dalis išbandau su „Arduino Uno“.

1 veiksmas: priverskite SIM800l veikti

Gaukite SIM800l į darbą
Gaukite SIM800l į darbą

Pagrindinis dalykas yra „Sim800L“galia.

Aš naudoju LM2596 mini DC-DC keitiklį, sureguliuotą iki 3,7 voltų ir atskirą maitinimo šaltinį.

Norint išbandyti ryšį naudojant AT+ komandas, ši pusė yra labai tinkama:

Greitas paleidimas SIM800 (SIM800L) su „Arduino“

Naudodami komandų parinktį Išjungti PIN kodą naudojant „gsm“modemą, gavau sim PIN kodą.

Kitas svarstymas, kokia biblioteka. Internetas siūlo kitokį sprendimą.

Mano sprendimas yra Mattias Aabmets biblioteka: AspenSIM800

Jo pavyzdys: Send_SMS.ino naudojo I kaip pagrindinę programą ir po vieną sujungė visas kitas dalis.

„Tx“ir „Rx“kaiščiai yra kodai:

RX_PIN 10 iš „Arduino“. Turi būti prijungtas prie SIM800 modulio TX kaiščio. TX_PIN 11 iš „Arduino“. Turi būti prijungtas prie SIM800 modulio RX kaiščio

Visada gera idėja skaityti *.ccp ir *.h failus bibliotekose.

Juose yra daug įdomių patarimų ir žinių.

2 veiksmas: pradėkite veikti RTC DS1307 su DS18B20 jutikliu

Įjunkite RTC DS1307 su DS18B20 jutikliu
Įjunkite RTC DS1307 su DS18B20 jutikliu

Aš naudoju šią šoninę pusę: simtronyx - DS1307 ir DS18B20 tinklaraštis.

Laikrodis turi I2C magistralės jungtį, tai yra „Arduino Uno“: A4 (SDA) - A5 (SCL)

DS18B20 I prijungtas prie D3.

Aš perskaičiau, kad SMS žinute negalima siųsti „Floats“tik eilutės, todėl turėjau išversti plūdes į eilutes.

Ką darau su šiuo rastu kodo fragmentu:

n

MyString1 = Styga (currentTemp, 2); // Konvertuokite plūdę į eilutę

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

// konvertuoti eilutę į char prasideda čia

// Ilgis (su vienu papildomu simboliu nuliniam terminatoriui)

int str_len1 = MyString1.length () + 1; // Paruoškite simbolių masyvą (buferį)

char char_array1 [str_len1]; // Nukopijuokite

MyString1.toCharArray (char_array1, str_len1); // konvertuoti eilutę į char baigia ją

Pasakysiu atvirai, nesuprantu, kaip tai veikia, bet veikia.

3 veiksmas: pradėkite veikti termistorių NTC MF52AT

Įjunkite termistorių NTC MF52AT
Įjunkite termistorių NTC MF52AT

Aš dirbau su termistoriumi, todėl tai buvo lengva dalis.

Bet čia taip pat galite rasti kitokį sprendimą.

Galutiniame kode galite rasti mano.

Taip pat galite rasti vertimą „Floats to String“.

Prie termistoriaus buvo prilituotas tam tikras laidas ir 10 k omų rezistorius.

4 žingsnis: priverskite visus dirbti kartu

Taigi visas programos dalis parašiau kartu.

Dabar turėjau išsiaiškinti, kaip siųsti vieną SMS kiekvieną dieną tuo pačiu metu.

Skaičiau apie įvairias idėjas, kai kurios naudoja „TimerAlarm“ir kitą metodą.

Bet kažkur arduino forume radau paprastą sprendimą:

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

{

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

vėlavimas (500); SIM.smsSend (addr, char_array1); // DS18B20}

Bet kodėl dabar.sekundė = 59, nes siunčia visą minutę SMS. Man tai tinka, bet pabandyk pats.

Po tam tikro testo įkėliau programą į „Geekcreit® Nano“.

Tai ne pats geriausias programos rašymas:) bet tai daro norimą.

Kadangi „Geekcreit® ATmega328P Nano“turi tam tikrų „Arduino IDE“problemų, įkeliu per terminalą („Linux Mint“), mesti USBtinyisp su šia: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex

5 žingsnis: tai pavyko

Taip, tai pavyko ir jis dedamas į namą.

Kiekvieną dieną 6:00 gaunu SMS žinutę su temperatūra.

Rekomenduojamas: