สารบัญ:

ส่ง SMS ด้วยอุณหภูมิตรงเวลา: 5 ขั้นตอน (พร้อมรูปภาพ)
ส่ง SMS ด้วยอุณหภูมิตรงเวลา: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ส่ง SMS ด้วยอุณหภูมิตรงเวลา: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ส่ง SMS ด้วยอุณหภูมิตรงเวลา: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: สอนทำ LINE Notify กรอกข้อมูลผ่าน Google sheet ตั้งเวลาส่งทุกวัน 2024, พฤศจิกายน
Anonim
ส่ง SMS พร้อมอุณหภูมิตรงเวลา
ส่ง SMS พร้อมอุณหภูมิตรงเวลา

ความคิดคือการได้รับ sms อุณหภูมิจากบ้านพ่อของฉัน

ไม่มีอะไรแฟนซีเพียงแค่ประกอบชิ้นส่วนเข้าด้วยกันอย่างรวดเร็ว

ชิ้นส่วนคือ:

  • Geekcreit® ATmega328P Nano V3 บอร์ดควบคุมเข้ากันได้กับ Arduino
  • DIY NANO IO Shield V1. O บอร์ดขยายสำหรับ Arduino
  • โมดูลนาฬิกาเวลาจริง RTC IIC / I2C ที่ใช้ DS1307 และ DS18b20
  • SIM800L Quad-band GSM / GPRS
  • LM2596 ตัวแปลง DC-DC ขนาดเล็กที่ปรับได้สเต็ปดาวน์พาวเวอร์ซัพพลาย
  • เทอร์มิสเตอร์อุณหภูมิ NTC MF52AT

อย่างแรกเลยคืออ่านและค้นหามาก

ก่อนที่ฉันจะใช้Geekcreit® Nano ฉันทดสอบทุกส่วนด้วย Arduino Uno

ขั้นตอนที่ 1: รับ SIM800l เพื่อใช้งาน

รับ SIM800l เพื่อใช้งาน
รับ SIM800l เพื่อใช้งาน

ประเด็นหลักประการหนึ่งคือพลังของ Sim800L

ฉันใช้ตัวแปลง LM2596 Mini DC-DC ซึ่งปรับเป็น 3.7 โวลต์และแหล่งจ่ายไฟแยกต่างหาก

เพื่อทดสอบการเชื่อมต่อกับคำสั่ง AT+ ด้านนี้มีประโยชน์มาก:

Quickstart SIM800 (SIM800L) กับ Arduino

ด้วยการปิดการใช้งานรหัสพินโดยใช้โมเด็ม gsm ที่คำสั่งฉันได้ขี่รหัสพินของซิม

พิจารณาต่อไปว่าห้องสมุดใด อินเทอร์เน็ตนำเสนอโซลูชั่นที่แตกต่างกัน

ทางออกของฉันคือห้องสมุดจาก Mattias Aabmets: AspenSIM800

ตัวอย่างของเขา: Send_SMS.ino ใช้ I เป็นโปรแกรมพื้นฐาน และเชื่อมต่อส่วนอื่นๆ ทั้งหมดเข้าด้วยกันทีละส่วน

Tx pin และ Rx pin เป็นรหัสสำหรับ:

RX_PIN 10 ของ Arduino ต้องเชื่อมต่อกับพิน TX ของโมดูล SIM800. TX_PIN 11 ของ Arduino ต้องเชื่อมต่อกับพิน RX ของโมดูล SIM800

เป็นความคิดที่ดีเสมอที่จะอ่านไฟล์ *.ccp และ *.h ในไลบรารี

พวกเขามีคำแนะนำและความรู้ที่น่าสนใจมากมาย

ขั้นตอนที่ 2: รับ RTC DS1307 พร้อมเซ็นเซอร์ DS18B20 เพื่อทำงาน

รับ RTC DS1307 พร้อมเซ็นเซอร์ DS18B20 เพื่อทำงาน
รับ RTC DS1307 พร้อมเซ็นเซอร์ DS18B20 เพื่อทำงาน

ฉันใช้ด้านนี้: simtronyx - บล็อกสำหรับ DS1307 และ DS18B20

นาฬิกามีการเชื่อมต่อบัส I2C และสำหรับ Arduino Uno: A4 (SDA) - A5 (SCL)

DS18B20 I เชื่อมต่อกับ D3

ฉันอ่านว่าใน SMS คุณไม่สามารถส่ง Floats only String ได้ ดังนั้นฉันจึงต้องแปล floats เป็น string

ที่ฉันทำกับข้อมูลโค้ดนี้ฉันพบ:

NS

MyString1 = สตริง (currentTemp, 2); //แปลง float เป็น String

MyString1 = (MyString1 + " C - อุณหภูมิห้อง:) ");

// แปลงสตริงเป็นอักขระเริ่มต้นที่นี่

// ความยาว (พร้อมอักขระพิเศษหนึ่งตัวสำหรับตัวสิ้นสุด null)

int str_len1 = MyString1.length() + 1; // เตรียมอาร์เรย์อักขระ (บัฟเฟอร์)

ถ่าน 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 k ohm กับเทอร์มิสเตอร์

ขั้นตอนที่ 4: ให้ทุกคนทำงานร่วมกัน

ดังนั้นฉันจึงเขียนส่วนโปรแกรมทั้งหมดเข้าด้วยกัน

ตอนนี้ฉันต้องหาวิธีส่งหนึ่ง SMS ทุกวันในเวลาเดียวกัน

ฉันอ่านเกี่ยวกับแนวคิดที่ต่างออกไป บางแบบมี TimerAlarm และแนวทางอื่นๆ

แต่ฉันพบวิธีแก้ปัญหาง่ายๆ ในฟอรัม Arduino:

ถ้า (now.hour() == 8 && now.minute() == 00 && now.second () == 59)

{

SIM.smsSend (addr, char_array); // เทอร์มิสเตอร์

ล่าช้า (500); SIM.smsSend (addr, char_array1); // DS18B20 }

แต่ทำไมตอนนี้วินาที = 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 พร้อมอุณหภูมิ

แนะนำ: