» อิเล็กทรอนิกส์ » Arduino »เราทำให้การส่งสัญญาณที่ง่ายที่สุดใน GSM SIM800L และ Arduino สำหรับการให้โรงรถ

เราทำการส่งสัญญาณที่ง่ายที่สุดใน GSM SIM800L และ Arduino สำหรับการให้โรงรถ


เมื่อเริ่มต้นฤดูร้อนจึงมีความจำเป็นต้องปกป้องบ้านในชนบท ฉันต้องการทำสัญญาณกันขโมยที่เรียบง่าย แต่น่าเชื่อถือด้วยสัญญาณที่ส่งไปยังโทรศัพท์มือถือ มีการตัดสินใจที่จะรวบรวมอุปกรณ์ที่มีการส่งสัญญาณเตือนไปยังโทรศัพท์มือถือตาม อิเล็กทรอนิกส์ แผงวงจรซื้อใน Aliexpress ตามที่พวกเขาพูดถูก แต่ร่าเริง องค์ประกอบหลักของการออกแบบนี้คือโมดูล GSM SIM800L และบอร์ด Arduino (คุณสามารถใช้ใด ๆ - นาโน, Uno, Pro Mini และอื่น ๆ )

อุปกรณ์มีสัญญาณเตือนห้าอินพุตสำหรับเซ็นเซอร์สัมผัส เซ็นเซอร์หนึ่งตัวหรือหลายตัวที่ต่ออนุกรมสามารถเชื่อมต่อกับแต่ละอินพุตได้ในแบบร่างกำหนดชื่อให้กับแต่ละลูปการรักษาความปลอดภัย (เช่นประตูทางเข้าหน้าต่าง 1 หน้าต่าง 2 และอื่น ๆ ) อุปกรณ์รักษาความปลอดภัยทำงานดังนี้: เมื่อวงจรไฟฟ้าของลูปแรกเสียหน่วยแรกทำการโทรไปยังโทรศัพท์เครื่องแรกของผู้สมัครสมาชิกจากนั้นหยุดการโทรและหมายเลข 2 หมายเลข 2 เป็นสิ่งจำเป็นเนื่องจากข้อเท็จจริงที่ว่าหากสมาชิกรายแรกออฟไลน์หรือแบตเตอรี่และปัญหาอื่น ๆ ติดอยู่) หากวนซ้ำตามลำดับแรกจะถูกทริกเกอร์ข้อความ SMS จะถูกส่งพร้อมชื่อของลูปที่ใช้งานได้ในกรณีเดียวกันทั้งสองหมายเลขสมาชิก

การระบุเครื่องมือและวัสดุ
แบตเตอรี่ลิเธียมไอออนจากโทรศัพท์เก่า 3.7V \ 1600mA-1pc
- เชื่อมต่อสายไฟ
หัวแร้ง;
ทดสอบ;
- กล่องพลาสติกใส -1 ชิ้น;
แต่งตัว Arduino นาโน -1 ชิ้น;
- ตัวต้านทาน 10kOhm-7pcs;
- เขียงหั่นขนมที่ทำจากฟอยล์ textolite
- สวิตช์ไฟ 1 ชิ้น;
- โมดูล SIM800L -1 ชิ้น;
- ลดบอร์ด 1-2A -1 ชิ้น;
- ขั้วต่อเทอร์มินัล

ขั้นตอนแรก. การประกอบวงจรของอุปกรณ์รักษาความปลอดภัยระบบ GSM
รูปแบบภาพถ่าย


เราประสานแผ่นรองปลั๊กอินสำหรับโมดูล GSM SIM800L และโมดูล Arduino เข้ากับเขียงหั่นขนมทำให้การติดตั้งง่ายขึ้นและทำให้ง่ายต่อการเปลี่ยนโมดูลหากจำเป็น ตัวต้านทานบัดกรีและการเชื่อมต่ออื่น ๆ ตัวต้านทานจากขา RX ของโมดูล SIM800L เชื่อมต่อกับอินพุตดิจิตอล Arduino D3 เพื่อให้ตรงกับแรงดันไฟฟ้าของอินพุตของโมดูลทั้งสอง Arduino D4-D8 อินพุตถูกดึงผ่านตัวต้านทาน สวิตช์นี้ติดตั้งอยู่ในช่องว่างของแหล่งจ่ายไฟของโมดูล SIM800 GSM และบอร์ด Arduino สำหรับติดตั้งระบบทั้งหมด การใช้แบตเตอรี่ซึ่งจะอนุญาตให้อุปกรณ์ทำงานเป็นเวลาสองสามวันในกรณีที่ไม่มีเครือข่าย 220 V ในกรณีของฉันตัวแปลงแรงดันไฟฟ้าจากแรงดันไฟฟ้า 12 V จะสร้างแรงดันไฟฟ้า 4.2 V และในขณะเดียวกันก็ทำการชาร์จแบตเตอรี่

ขั้นตอนที่สอง. การเขียนโปรแกรมอุปกรณ์
ควรลบรหัส PIN และฟังก์ชั่นที่ไม่จำเป็นทั้งหมดในซิมการ์ดยังคุณต้องกำหนดค่าโมดูล SIM800L เองก่อนมีวิดีโอจำนวนมากในหัวข้อนี้ในเครือข่ายไม่มีอะไรซับซ้อนเกี่ยวกับเรื่องนี้ ในร่างเราระบุหมายเลขโทรศัพท์ของคุณปรับชื่อของโซนความปลอดภัยคุณสามารถตั้งเวลาสำหรับการตรวจสอบระบบ (หากอุปกรณ์ทำงานอย่างถูกต้องหลังจากเวลาที่กำหนด SMS ควบคุมจะมา) เติมร่างใน Arduino และตรวจสอบการทำงานของอุปกรณ์

วาด:


จำนวนสตริง Call_1 = "79123456789"; // หมายเลขสมาชิก№1สำหรับการโทร
จำนวนสตริงSMS_1 = "+79123456789"; // หมายเลขสมาชิกหมายเลข 1 สำหรับ SMS (แตกต่างกันเฉพาะในเครื่องหมาย +)

สตริง numberCall_2 = "79123456782"; // หมายเลขสมาชิก 2 สำหรับการโทร
จำนวนสตริงSMS_2 = "+79123456782"; // หมายเลขสมาชิกหมายเลข 2 สำหรับ SMS (แตกต่างกันเฉพาะในเครื่องหมาย +)

String textZone_1 = "Alarm! Zone1"; // ชื่อของมันเป็นภาษาละติน
String textZone_2 = "Alarm! Zone2"; // ชื่อของมันเป็นภาษาละติน
String textZone_3 = "Alarm! Zone3"; // ชื่อของมันเป็นภาษาละติน
String textZone_4 = "Alarm! Zone4"; // ชื่อของมันเป็นภาษาละติน

#include 
ซอฟต์แวร์ Sirial mySerial (2, 3);

#define pinSensor_0 4
#define pinSensor_1 5
#define pinSensor_2 6
#define pinSensor_3 7
#define pinSensor_4 8

โมฆะ initGSM (เป็นโมฆะ) {
  ความล่าช้า (2000);
  mySerial.begin (9600); // ตั้งความเร็วการสื่อสารด้วยโมดูล GSM 9600 Baud / วินาที
  mySerial.println ("AT + CLIP = 1");
  ล่าช้า (300);
  mySerial.println ("AT + CMGF = 1");
  ล่าช้า (300);
  mySerial.println ("AT + CSCS = \" GSM \ "");
  ล่าช้า (300);
  mySerial.println ("AT + CNMI = 2,2,0,0,0");
  ล่าช้า (300);
}

/ * การส่ง SMS * /
เป็นโมฆะ sendSMS (ข้อความสตริงโทรศัพท์สตริง) {
  mySerial.println ("AT + CMGS = \" "+ โทรศัพท์ +" \ "");
  ล่าช้า (500);
  mySerial.print (ข้อความ);
  ล่าช้า (500);
  mySerial.print ((ตัวอักษร) 26);
  ล่าช้า (2500);
}


longType = 0;
uint8_t ชั่วโมง = 0;

uint8_t flagSensor_0 = 0;
uint8_t flagSensor_1 = 0;
uint8_t flagSensor_2 = 0;
uint8_t flagSensor_3 = 0;
uint8_t flagSensor_4 = 0;

การตั้งค่าเป็นโมฆะ () {
  mySerial.begin (9600);
  initGSM ();
  
  pinMode (pinSensor_0, INPUT);
  pinMode (pinSensor_1, INPUT);
  pinMode (pinSensor_2, INPUT);
  pinMode (pinSensor_3, INPUT);
  pinMode (pinSensor_4, INPUT);

  timerTemp = มิลลิวินาที ();
}

void loop () {
    if (millis () - timerTemp> = 3600000) {timerTemp = millis (); ชั่วโมง ++;}

  ถ้า (ชั่วโมง> = 144) {// เปลี่ยนเวลาการควบคุมระบบเป็นของเราเอง 144 ชั่วโมงจำนวนชั่วโมง
    sendSMS (String ("ระบบทำงานตามปกติ OK"), numberSMS_1);
    ล่าช้า (10,000);
    sendSMS (String ("ระบบทำงานตามปกติ OK"), numberSMS_2);
    ล่าช้า (10,000);
    ชั่วโมง = 0;
    timerTemp = มิลลิวินาที ();
  }
 
  if (flagSensor_0 == 0 && digitalRead (pinSensor_0) == 0) flagSensor_0 = 1;
  if (flagSensor_1 == 0 && digitalRead (pinSensor_1) == 0) flagSensor_1 = 1;
  if (flagSensor_2 == 0 && digitalRead (pinSensor_2) == 0) flagSensor_2 = 1;
  if (flagSensor_3 == 0 && digitalRead (pinSensor_3) == 0) flagSensor_3 = 1;
  if (flagSensor_4 == 0 && digitalRead (pinSensor_4) == 0) flagSensor_4 = 1;

  if (flagSensor_0 == 1) {
    คำสั่ง String;

    คำสั่ง = "ATD +" + numberCall_1 + ";"
    mySerial.println (คำสั่ง);
    ล่าช้า (20,000)
    mySerial.println ("ATH");
    ล่าช้า (1,000);

   
    คำสั่ง = "ATD +" + numberCall_2 + ";";
    mySerial.println (คำสั่ง);
    ล่าช้า (20,000)
    mySerial.println ("ATH");
    ล่าช้า (1,000);

    flagSensor_0 = 2;
  }


  if (flagSensor_1 == 1) {
    sendSMS (textZone_1, numberSMS_1);
    ล่าช้า (10,000);
    sendSMS (textZone_1, numberSMS_2);
    ล่าช้า (10,000);
    flagSensor_1 = 2;
  }


  if (flagSensor_2 == 1) {
    sendSMS (textZone_2, numberSMS_1);
    ล่าช้า (10,000);
    sendSMS (textZone_2, numberSMS_2);
    ล่าช้า (10,000);
    flagSensor_2 = 2;
  }


  if (flagSensor_3 == 1) {
    sendSMS (textZone_3, numberSMS_1);
    ล่าช้า (10,000);
    sendSMS (textZone_3, numberSMS_2);
    ล่าช้า (10,000);
    flagSensor_3 = 2;
  }


  if (flagSensor_4 == 1) {
    sendSMS (textZone_4, numberSMS_1);
    ล่าช้า (10,000);
    sendSMS (textZone_4, numberSMS_2);
    ล่าช้า (10,000);
    flagSensor_4 = 2;
  }

  if (flagSensor_0 == 2 && digitalRead (pinSensor_0)! = 0) flagSensor_0 = 0;
  if (flagSensor_1 == 2 && digitalRead (pinSensor_1)! = 0) flagSensor_1 = 0;
  if (flagSensor_2 == 2 && digitalRead (pinSensor_2)! = 0) flagSensor_2 = 0;
  if (flagSensor_3 == 2 && digitalRead (pinSensor_3)! = 0) flagSensor_3 = 0;
  if (flagSensor_4 == 2 && digitalRead (pinSensor_4)! = 0) flagSensor_4 = 0;
}


ขั้นตอนที่สาม. ตรวจสอบสภาพของอุปกรณ์
เราทำการส่งสัญญาณที่ง่ายที่สุดใน GSM SIM800L และ Arduino สำหรับการให้โรงรถ

เมื่อใช้พลังงานในขณะที่โมดูล SIM800L และบอร์ด Arduino กำลังโหลดคุณมีเวลาประมาณ 20 วินาทีในการออกจากห้องรักษาความปลอดภัย บนโมดูล SIM800L ไฟ LED จะระบุกิจกรรมเครือข่ายบ่อยครั้งที่มันค้นหาเครือข่ายทุกๆห้าวินาทีจะแสดงการทำงานของเครือข่าย เมื่ออุปกรณ์ค้นหาเครือข่ายให้ยกเลิกการเชื่อมต่ออินพุตความปลอดภัยที่เกี่ยวข้องหลังจากนั้นจะมีการเรียกผ่านสายโทรศัพท์หรือส่ง SMS ดังนั้นอุปกรณ์ทำงานได้ดี

ภาพถ่าย SMS มันจะเป็นไปได้ที่จะรวมเครื่องตรวจจับความปลอดภัยใด ๆ กับเอาท์พุทในรูปแบบของการติดต่อ, รีเลย์จากแอคทูเอเตอร์ตามความต้องการและจินตนาการของคุณเท่านั้น โดยทั่วไปเราผลิตอุปกรณ์ความปลอดภัยที่เรียบง่าย ช่างยามทำโฮมเมดดังกล่าวสามารถทำเพื่อจัดระเบียบการป้องกันของวัตถุใด ๆ ในการเปิดอุปกรณ์เตือนภัยคุณต้องจ่าย 4.2 โวลต์ผ่านสวิตช์บน SIM800 และ Arduino ที่ทางเข้าแรกการโทรจะถูกส่งไปยังผู้สมัครสมาชิกหมายเลข 1 หลังจากนั้นจะเปลี่ยนเป็นหมายเลข 2 เพิ่มเติมหมายเลข 2 มีไว้สำหรับการทำซ้ำ หมายเลขวงเปิด 2,3,4,5 ทำให้การออก SMS ด้วยชื่อเฉพาะของวงวนที่ขาดตามลำดับบนโทรศัพท์ทั้งสองเครื่อง เราจะวางบอร์ดทั้งหมดในกรณีที่เหมาะสม โดยทั่วไปแล้วฉันคิดว่านี่เป็นอุปกรณ์ที่น่าสนใจดีที่สามารถพัฒนาต่อไปได้ - เพิ่มฟังก์ชั่นของซ็อกเก็ต GSM, การควบคุม DMTF และอื่น ๆ อีกมากมาย

รายละเอียดเพิ่มเติมสามารถดูได้ในวิดีโอ

ฉันขอให้คุณสุขภาพและความสำเร็จในชีวิตและการทำงาน!
8.8
8.4
8.4

เพิ่มความคิดเห็น

    • รอยยิ้มรอยยิ้มxaxaตกลงdontknowyahooNea
      นายรอยขีดข่วนคนโง่ใช่ใช่ใช่ก้าวร้าวลับ
      ขอโทษเต้นdance2dance3ให้อภัยช่วยเหลือเครื่องดื่ม
      หยุดเพื่อนดีgoodgoodนกหวีดหน้ามืดตามัวลิ้น
      ควันการตบมือเครย์ประกาศเป็นขี้ปากดอน t_mentionดาวน์โหลด
      ความร้อนโมโหlaugh1ภาคตะวันออกเฉียงเหนือประชุมmoskingเชิงลบ
      not_iข้าวโพดคั่วลงโทษอ่านทำให้ตกใจกลัวค้นหา
      ยั่วยุthank_youนี้to_clueumnikรุนแรงเห็นด้วย
      ไม่ดีbeeeblack_eyeblum3หน้าแดงโม้ความเบื่อ
      เซ็นเซอร์การหยอกล้อsecret2ขู่ชัยชนะYusun_bespectacled
      shokrespektฮ่า ๆprevedยินดีต้อนรับkrutoyya_za
      ya_dobryiผู้ช่วยne_huliganne_othodiFLUDห้ามใกล้
3 แสดงความคิดเห็น
แขกของ Alexander
มีคำถามต้องการตัวต้านทาน10kΩ 10W หรือ 0.25W หรืออะไร
วันที่ดี แต่ฉันสามารถเพิ่มบางอย่างเพื่อให้สามารถหมุนหมายเลขได้สำเร็จอินพุตถูกบล็อกหรือไม่ เพื่อหลีกเลี่ยงการหมุนวนต่อเนื่องในระดับต่ำที่หนึ่งในอินพุต!
คุณสามารถใช้บอร์ดอื่นตัวอย่างเช่น TP4056 ที่มีการป้องกัน
เป็นไปไม่ได้ แต่ จำเป็นต้อง. ยิ่งกว่านั้นไม่อย่างใด แต่ตามที่กล่าวไว้อย่างถูกต้องพร้อมการป้องกันนั่นคือนอกเหนือจาก TP4056 ควรมีไอซีขนาดเล็กอีกสองตัวรวมถึง DW01 หรืออะนาล็อก
นอกจากห่วงรักษาความปลอดภัยแล้วยังเป็นที่ต้องการอย่างมากในการควบคุมแรงดันไฟฟ้าที่อินพุตของ TP4056

เราแนะนำให้คุณอ่าน:

มอบให้กับสมาร์ทโฟน ...