ตัวควบคุม SMS ที่ใช้ SIM800L

Pin
Send
Share
Send


SIM800L V2.0 GSM / GPRS เป็นโมดูล GSM / GPRS quad-band ที่เข้ากันได้กับ Arduino โมดูลนี้ใช้เพื่อใช้งานฟังก์ชั่นของ GSM (การโทรและ SMS) และ GPRS ข้อได้เปรียบของโมดูลนี้คืออินเตอร์เฟส TTL ที่มีแรงดัน 5V ซึ่งอนุญาตให้คุณเชื่อมต่อโดยตรงกับ Arduino หรือระบบอื่น ๆ ที่มีแหล่งจ่ายไฟ 5V โมดูล GSM / GPRS ส่วนใหญ่ในตลาดต้องการการเชื่อมต่อตัวควบคุมหรือการแปลงระดับในขณะที่ SIM800L V.2 GSM / GPRS ไม่จำเป็นต้องใช้วงจรการแปลงระดับอินเตอร์เฟสเพิ่มเติม
นี่คือตัวอย่างโครงการที่ใช้ SIM800L V.2 GSM / GPRS ความหมายของโครงการคือการควบคุมสวิตช์โดยใช้ตัวควบคุม SMS คุณสามารถเปิดและปิดเครื่องใช้ในครัวเรือนส่วนใหญ่ในบ้านได้อย่างง่ายดายเช่น Llama พัดลมและอื่น ๆ

ลักษณะของโมดูล SIM800L V.2 GSM / GPRS


ด้านล่างนี้เป็นข้อกำหนดทางเทคนิคทั้งหมดของโมดูล SIM800L V.2 GSM / GPRS:
  • อินเตอร์เฟซอนุกรม TTL เข้ากันได้กับไมโครคอนโทรลเลอร์ 3.3V และ 5V เข้ากันได้กับ Arduino
  • โมดูล SIM800L มีอินเตอร์เฟสแบบอนุกรม TTL
  • ปลั๊กเสาอากาศ
  • การสนับสนุนเครือข่าย: สี่วง 850/900/1800/1900 MHz ความสามารถในการโทร, SMS และการถ่ายโอนข้อมูลด้วยการลดการใช้แบตเตอรี่อย่างมีนัยสำคัญ
  • อินเตอร์เฟส VDD TTL UART ดังนั้นคุณสามารถเชื่อมต่อ MCU เช่น 51MCU, ARM หรือ MSP430 ได้โดยตรง ปลั๊ก VDD ใช้สำหรับจับคู่แรงดันไฟฟ้า TTL
  • รุ่น: SIMCOM SIM800L
  • แรงดันใช้งาน: จาก 3.7V ถึง 5V;
  • ขนาด: 40 มม. x 28 มม. x 3 มม
  • GPRS multislot class 12/10
  • GPRS Batch Service Class B
  • สอดคล้องกับ GSM เฟส 2/2 +
  • คลาส 4 (2 วัตต์ที่ 850/900 MHz)
  • ชั้น 1 (1 Wat @ 1800/1900 MHz)

วัสดุที่จำเป็น


คุณจะต้อง:


1. โมดูล SIM800L V.2 GSM / GPRS
2. Arduino Uno
3. โมดูลรีเลย์ 5 ช่อง 5 โวลต์
4. สาย - จัมเปอร์
5. แหล่งจ่ายไฟ 5 V.
(ลิงก์ที่ใช้งานไปยังร้านค้าเพื่อซื้อ)

การประกอบและการกำหนดค่า


เมื่อคุณเชื่อมต่อส่วนประกอบทั้งหมดสร้างโปรแกรมแล้วดาวน์โหลดไปยัง Arduino ของคุณ แต่ก่อนอื่นคุณต้องติดตั้งไลบรารี GPRS ซึ่งคุณสามารถดาวน์โหลดได้:
gprs.zip 28.02 Kb (ดาวน์โหลด: 509)

รหัสโปรแกรมสำหรับ Arduino


หลังจากที่คุณเชื่อมต่อ SIM800L ของคุณโมดูลรีเลย์ 4 ช่องทางและ Arduino เข้ากับคอมพิวเตอร์ของคุณแล้วให้ป้อนรหัสด้านล่างและคุณทำเสร็จแล้ว
#include #include #define TIMEOUT 5000 #define ACTIVE LOW #define OFF ไบต์สูงรีเลย์ = {A0, A1, A2, A3}; ไบต์ StatRelay4; ถ่าน buffNumber20; char currentLine500 = ""; int currentLineIndex = 0; บูล nextLineIsMessage = false String replyNumber = "089510863958"; GPRS gprs; การตั้งค่าเป็นโมฆะ () {สำหรับ (int i = 0; i >> อ่าน SMS โดยอัตโนมัติ "); gprs.preInit (); delay (1000); ในขณะที่ (0! = gprs.init ()) {delay (1000); Serial .print ("init errorrn");} // จัดการข้อความไปยังโหมด ASCII ถ้า (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {ERROR ("ERROR: CNMI") ; return;} // อ่าน SMS ขาเข้าหาก (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {ERROR ("ERROR: CNMI") ; return;} int pjg = replyNumber.length () + 1; buffNumberpjg; replyNumber.toCharArray (buffNumber, pjg); Serial.print ("ส่งการตอบกลับไปยังหมายเลข =>"); Serial.println ("การเตรียมใช้งานเสร็จสิ้น"); Serial.println ("======================================= ========================))} void loop () {// เปลี่ยนสถานะการเปิด / ปิดสำหรับ (int i = 0; i 0) {if (nextLineIsMessage) {Serial.println (lastLine); // = ======================================= ============================== >> ฟังก์ชั่นของตัวควบคุมรีเลย์ // ตัวควบคุมรีเลย์ 1 ถ้า (lastLine.indexOf ("รีเลย์ 1 บน ")> = 0) {StatRelay0 = Aktif; Serial.print ("ตอบ ==== >>>>"); Serial.println ("รีเลย์ 1 สถานะทำงาน"); gprs.sendSMS (buffNumber, "รีเลย์ 1 สถานะทำงาน"); } else if (lastLine.indexOf ("Relay 1 OFF")> = 0) {StatRelay0 = MATI; Serial.print ("ตอบ ==== >>>>"); Serial.println ("ปิดสถานะ 1 รีเลย์"); gprs.sendSMS (buffNumber, "รีเลย์ 1 สถานะปิด"); } // Relay 2 Controller if (lastLine.indexOf ("รีเลย์ 2 ON")> = 0) {StatRelay1 = AKTIF; Serial.print ("ตอบ ==== >>>>"); Serial.println ("สถานะรีเลย์ 2 สถานะทำงาน"); gprs.sendSMS (buffNumber, "รีเลย์ 2 สถานะทำงาน"); } else if (lastLine.indexOf ("Relay 2 OFF")> = 0) {StatRelay1 = MATI; Serial.print ("ตอบ ==== >>>>"); Serial.println ("ปิดสถานะรีเลย์ 2"); gprs.sendSMS (buffNumber, "รีเลย์ 2 สถานะปิด"); } // รีเลย์ 3 คอนโทรลเลอร์หาก (lastLine.indexOf ("รีเลย์ 3 ON")> = 0) {StatRelay2 = AKTIF; Serial.print ("ตอบ ==== >>>>"); Serial.println ("รีเลย์สถานะ 3 สถานะทำงาน"); gprs.sendSMS (buffNumber, "รีเลย์ 3 สถานะทำงาน"); } else if (lastLine.indexOf ("Relay 3 OFF")> = 0) {StatRelay2 = MATI; Serial.print ("ตอบ ==== >>>>"); Serial.println ("ปิดสถานะรีเลย์ 3"); gprs.sendSMS (buffNumber, "รีเลย์ 3 สถานะปิด"); } // Relay 4 Controller if (lastLine.indexOf ("Relay 4 ON")> = 0) {StatRelay3 = AKTIF; Serial.print ("ตอบ ==== >>>>"); Serial.println ("สถานะรีเลย์ 4 สถานะทำงาน"); gprs.sendSMS (buffNumber, "รีเลย์ 1 สถานะทำงาน"); } ถ้า if (lastLine.indexOf ("Relay 4 OFF")> = 0) {StatRelay3 = MATI; Serial.print ("ตอบ ==== >>>>"); Serial.println ("ปิดสถานะรีเลย์ 4"); gprs.sendSMS (buffNumber, "รีเลย์ 4 สถานะปิด"); } nextLineIsMessage = false; } // ============================================ ==================== >>} // ล้างอักขระ char สำหรับบรรทัดถัดไปของการอ่านสำหรับ (int i = 0; i <sizeof (currentLine); ++ i) {currentLinei = (ถ่าน) 0; } currentLineIndex = 0; } else {currentLinecurcurrentLineIndex ++ = lastCharRead; }}}

ตรวจสอบอุปกรณ์


เครื่องมือทำงานได้โดยส่ง SMS ไปที่ SIM800L พร้อมลำดับอักขระเฉพาะ ตัวอย่างเช่นในการเปิดรีเลย์ 1 ให้ใช้คำสั่ง "รีเลย์ 1 ON" และเพื่อปิดใช้คำสั่ง "รีเลย์ 1 ปิด" รีเลย์ที่เหลือมีคำสั่งเหมือนกันเกือบทั้งหมดยกเว้นหมายเลขซีเรียลของรีเลย์แต่ละตัวที่คุณต้องการทำ หลังจากส่งข้อความโดยอัตโนมัติ SIM800 จะส่งคำตอบในรูปแบบของข้อความสถานะสำหรับแต่ละซิมการ์ด

แอสเซมบลีวิดีโอการกำหนดค่าและการตรวจสอบอุปกรณ์



บทความต้นฉบับเป็นภาษาอังกฤษ

Pin
Send
Share
Send

ดูวิดีโอ: Arduino and Iot - สาธตการใชงาน GSM Module กบ Arduino และ Sensor ตรวจการเคลอนไหว เพอสง SMS (พฤศจิกายน 2024).