Агуулгын хүснэгт:

Температуртай SMS -ийг цаг тухайд нь илгээдэг: 5 алхам (зурагтай)
Температуртай SMS -ийг цаг тухайд нь илгээдэг: 5 алхам (зурагтай)

Видео: Температуртай SMS -ийг цаг тухайд нь илгээдэг: 5 алхам (зурагтай)

Видео: Температуртай SMS -ийг цаг тухайд нь илгээдэг: 5 алхам (зурагтай)
Видео: Тэр миний нүцгэн зургийг тараачихаж 2024, Арваннэгдүгээр
Anonim
Температуртай SMS -ийг цаг тухайд нь илгээдэг
Температуртай SMS -ийг цаг тухайд нь илгээдэг

Санаа бол аавынхаа гэрээс температурын мессеж авах явдал юм.

Зүгээр л эд ангиудыг хурдан нэгтгэх нь ямар ч сонирхолтой зүйл биш юм.

Эдгээр хэсгүүд нь:

  • Geekcreit® ATmega328P Nano V3 хянагчийн самбар нийцтэй Arduino
  • DIY NANO IO Shield V1. O Arduino -д зориулсан өргөтгөх самбар
  • DS1307 дээр суурилсан RTC IIC / I2C бодит цагийн модуль ба DS18b20
  • SIM800L Quad-band GSM / GPRS
  • LM2596 Mini DC-DC хөрвүүлэгчийг тохируулах боломжтой цахилгаан хангамжийн модуль
  • Thermistor NTC MF52AT температур

Юуны өмнө унших, хайх ажилд маш их анхаарал хандуулдаг.

Эцэст нь би Geekcreit® Nano -ийг ашиглаж, бүх эд ангиудыг Arduino Uno ашиглан туршиж үздэг.

Алхам 1: SIM800l -ийг ажиллуулах

SIM800l -ийг ажиллуулах
SIM800l -ийг ажиллуулах

Нэг гол зүйл бол Sim800L -ийн хүч чадал юм.

Би 3.7 вольтоор тохируулсан LM2596 Mini DC-DC хөрвүүлэгч, тусдаа тэжээлийн хангамж ашигладаг.

AT+ командыг ашиглан холболтыг шалгахын тулд энэ талыг ашиглахад маш тохиромжтой.

Түргэн эхлүүлэх SIM800 (SIM800L) Arduino -той

Gsm модем ашиглан пин кодыг идэвхгүй болгосноор би сим пин кодыг унагав.

Дараагийн асуудал бол аль номын сан юм. Интернет нь өөр шийдлийг санал болгодог.

Миний шийдэл бол Mattias Aabmets -ийн номын сан юм: AspenSIM800

Түүний жишээ: Send_SMS.ino нь I -ийг үндсэн програм болгон ашиглаж, бусад хэсгүүдийг нэг нэгээр нь холбодог.

Tx зүү ба Rx зүү нь дараах кодтой байна.

Arduino -ийн RX_PIN 10. SIM800 модулийн TX зүүтэй холбогдсон байх ёстой. Arduino -ийн TX_PIN 11. SIM800 модулийн RX зүүтэй холбогдсон байх ёстой

Номын сан дахь *.ccp ба *.h файлуудыг унших нь үргэлж сайн санаа юм.

Тэд олон сонирхолтой зөвлөмж, мэдлэгийг агуулдаг.

Алхам 2: Ажиллуулахын тулд DS18B20 мэдрэгч бүхий RTC DS1307 -ийг аваарай

Ажиллахын тулд DS18B20 мэдрэгч бүхий RTC DS1307 -ийг аваарай
Ажиллахын тулд DS18B20 мэдрэгч бүхий RTC DS1307 -ийг аваарай

Би энэ талыг ашигласан: simtronyx - DS1307 ба DS18B20 блог.

Цаг нь I2C автобусны холболттой бөгөөд энэ нь Arduino Uno -д зориулагдсан: A4 (SDA) - A5 (SCL)

DS18B20 I нь D3 -т холбогдсон.

SMS -ээр та Floats -ийг String руу илгээж болохгүй гэж уншсан тул хөвөгчийг мөр рүү хөрвүүлэх шаардлагатай болсон.

Энэ кодын хэсгийг ашиглан би дараахь зүйлийг олж мэдэв.

n

MyString1 = String (currentTemp, 2); // float -ийг String болгон хөрвүүлэх

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

// мөрийг char болгон хөрвүүлэх нь эндээс эхэлнэ

// Урт (хоосон терминаторын хувьд нэг нэмэлт тэмдэгттэй)

int str_len1 = MyString1.length () + 1; // Тэмдэгтийн массивыг бэлтгэх (буфер)

char char_array1 [str_len1]; // Дахин хуулна уу

MyString1.toCharArray (char_array1, str_len1); // мөрийг char болгон хөрвүүлэх нь түүнийг төгсгөдөг

Үнэнийг хэлэхэд энэ нь хэрхэн ажилладагийг би мэдэхгүй, гэхдээ энэ нь ажилладаг.

Алхам 3: Thermistor NTC MF52AT -ийг ажиллуулах

Thermistor NTC MF52AT -ийг ажиллуулаарай
Thermistor NTC MF52AT -ийг ажиллуулаарай

Би термистортой өмнө ажиллаж байсан тул энэ бол хамгийн хялбар хэсэг юм.

Гэхдээ эндээс та өөр шийдлийг олох боломжтой.

Эцсийн код дээр та минийхийг олох боломжтой.

Та мөн Floats to String орчуулгыг олох боломжтой.

Термистор руу зарим утас ба 10 к ом эсэргүүцлийг гагнасан.

Алхам 4: Бүгдийг хамтдаа ажиллуул

Тиймээс би програмын бүх хэсгийг хамтад нь бичсэн.

Одоо би яаж өдөр бүр нэгэн зэрэг нэг SMS илгээдэг болохыг олж мэдэх хэрэгтэй болсон.

Би өөр өөр санаануудын талаар уншсан, зарим нь TimerAlarm болон бусад арга барилтай.

Гэхдээ би arduino форумын зарим хэсэгт энгийн шийдлийг олсон.

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

{

SIM.smsSend (addr, char_array); // термистор

саатал (500); SIM.smsSend (addr, char_array1); // DS18B20}

Гэхдээ яагаад одоо.second = 59, учир нь бүхэл бүтэн SMS илгээдэг. Энэ нь надад хамаатай, гэхдээ өөрийгөө туршиж үзээрэй.

Туршилтын дараа би програмыг Geekcreit® Nano дээр байршуулав.

Энэ бол магадгүй хамгийн сайн програм бичих биш юм:) гэхдээ энэ нь хүссэн зүйлээ хийдэг.

Geekcreit® ATmega328P Nano нь Arduino IDE -ийн зарим асуудалтай байдаг тул би терминалаар (Linux Mint) USBtinyisp -ийг дараах байдлаар байршуулдаг: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex

Алхам 5: Энэ нь ажилласан

Тийм ээ, энэ нь амжилттай болсон бөгөөд үүнийг байшинд байрлуулсан болно.

Өдөр бүр өглөөний 6:00 цагт надад температурын тухай SMS ирдэг.

Зөвлөмж болгож буй: