Share
Pin
Tweet
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 จะส่งคำตอบในรูปแบบของข้อความสถานะสำหรับแต่ละซิมการ์ด
แอสเซมบลีวิดีโอการกำหนดค่าและการตรวจสอบอุปกรณ์
บทความต้นฉบับเป็นภาษาอังกฤษ
Share
Pin
Tweet
Send
Share
Send