ตัวควบคุม SMS ที่ใช้ SIM800L
SIM800L V2.0 GSM/GPRS เป็นโมดูล GSM/GPRS แบบควอดแบนด์ที่เข้ากันได้กับ Arduino โมดูลนี้ใช้เพื่อใช้ฟังก์ชัน GSM (การโทรและ SMS) และ GPRS ข้อดีของโมดูลนี้คืออินเทอร์เฟซ TTL ซึ่งมีแรงดันไฟฟ้า 5V ซึ่งช่วยให้คุณสามารถเชื่อมต่อโดยตรงกับ Arduino หรือระบบอื่น ๆ ที่มีแรงดันไฟฟ้า 5V โมดูล GSM/GPRS ส่วนใหญ่ในตลาดจำเป็นต้องมีการเชื่อมต่อตัวควบคุมหรือการแปลงระดับ ในขณะที่ SIM800L V.2 GSM/GPRS ไม่ต้องการวงจรการแปลงระดับอินเทอร์เฟซเพิ่มเติม
มาดูตัวอย่างโครงการที่ใช้ SIM800L V.2 GSM/GPRS กัน จุดประสงค์ของโครงการคือการควบคุมสวิตช์โดยใช้ตัวควบคุม SMS คุณสามารถเปิดและปิดเครื่องใช้ในครัวเรือนส่วนใหญ่ในบ้าน เช่น ลามะ พัดลม และอื่นๆ ได้อย่างง่ายดาย
ลักษณะของโมดูล SIM800L V.2 GSM/GPRS
ด้านล่างนี้เป็นคุณลักษณะทางเทคนิคทั้งหมดของโมดูล GSM/GPRS SIM800L V.2:
- อินเทอร์เฟซแบบอนุกรม TTL เข้ากันได้กับไมโครคอนโทรลเลอร์ Arduino 3.3V และ 5V
- โมดูล 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 คลาส 12/10
- บริการแพ็คเก็ต GPRS คลาส B
- สอดคล้องกับ GSM เฟส 2/2+
- คลาส 4 (2 วัตต์ @ 850/900 MHz)
- คลาส 1 (1 วัตต์ @ 1800/1900MHz)
วัสดุที่จำเป็น
คุณจะต้องการ:
1. SIM800L V.2 โมดูล GSM/GPRS.
2. อาร์ดูโน่ อูโน่.
3. โมดูลรีเลย์ 4 ช่อง 5V.
4. สายไฟ - จัมเปอร์.
5. แหล่งจ่ายไฟ 5V.
(ลิงก์ที่ใช้งานไปยังร้านค้าสำหรับการซื้อ)
การประกอบและการกำหนดค่า
เมื่อคุณเชื่อมต่อส่วนประกอบทั้งหมดแล้ว ให้สร้างโปรแกรมแล้วอัปโหลดไปยัง Arduino ของคุณ แต่ก่อนอื่น คุณต้องติดตั้งไลบรารี GPRS ซึ่งคุณสามารถดาวน์โหลดได้:
gprs.zip
[28.02 Kb] (ดาวน์โหลด: 887)
รหัสโปรแกรมสำหรับ Arduino
เมื่อคุณเชื่อมต่อ SIM800L ซึ่งเป็นโมดูลรีเลย์ 4 ช่องสัญญาณและ Arduino เข้ากับคอมพิวเตอร์แล้ว ให้ป้อนรหัสด้านล่าง เท่านี้ก็เสร็จสิ้น
#รวม
#รวม
#กำหนดหมดเวลา 5,000
#กำหนดแอคทีฟต่ำ
#กำหนดปิดสูง
ไบต์รีเลย์ [] = {A0, A1, A2, A3};
ไบต์ StatRelay [4];
ถ่านบัฟหมายเลข [20];
ถ่าน currentLine[500] = "";
int currentLineIndex = 0;
บูล nextLineIsMessage = false;
สตริง ReplyNumber = "089510863958";
GPRS GPRS;
การตั้งค่าเป็นโมฆะ () {
สำหรับ (int i = 0; i <4; i ++) {
pinMode(รีเลย์[i] , เอาต์พุต);
digitalWrite (รีเลย์ [i], MATI);
StatRelay[i] = MATI;
-
อนุกรมเริ่มต้น(9600);
ในขณะที่(!อนุกรม);
Serial.println("เปิดใช้งาน SIM800L V2 >>> อ่าน SMS อัตโนมัติ");
gprs.preInit();
ล่าช้า (1,000);
ในขณะที่ (0 != gprs.init()) {
ล่าช้า (1,000);
Serial.print("ข้อผิดพลาดเริ่มต้น");
-
// จัดการข้อความไปยังโหมด ASCII
ถ้า (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "ตกลง", หมดเวลา)) {
ข้อผิดพลาด("ข้อผิดพลาด:CNMI");
กลับ;
-
// อ่าน SMS ที่เข้ามา
ถ้า (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "ตกลง", หมดเวลา)) {
ข้อผิดพลาด("ข้อผิดพลาด:CNMI");
กลับ;
-
int pjg = ReplyNumber.ความยาว() + 1;
บัฟนัมเบอร์ [pjg];
ReplyNumber.toCharArray(บัฟนัมเบอร์,pjg);
Serial.print("ส่งคำตอบไปที่หมายเลข => ");
Serial.println(บัฟนัมเบอร์);
Serial.println("การเริ่มต้นเสร็จสิ้น");
Serial.println("============================================= =============== ================");
-
เป็นโมฆะวน() {
// เปลี่ยนสถานะ เปิด/ปิด รีเลย์
สำหรับ (int i = 0; i <4; i ++) {
digitalWrite (รีเลย์ [i], StatRelay [i]);
-
// หากมีข้อมูลเข้าจาก SIM800
ถ้า (gprs.serialSIM800.available()) {
ถ่าน LastCharRead = gprs.serialSIM800.read();
// บันทึกข้อมูลทั้งหมดใน LastCharRead หากมี r หรือ n เพื่อเป็นสัญญาณสุดท้ายของข้อความขาเข้า
ถ้า (lastCharRead == 'r' || LastCharRead == 'n') {
สตริง LastLine = สตริง (currentLine);
// หากข้อความสุดท้าย +CMT ระบุว่ามีข้อความใหม่มาถึง
ถ้า (lastLine.startsWith("+CMT:")) {
Serial.println(บรรทัดสุดท้าย);
nextLineIsMessage = จริง;
} อื่นถ้า (lastLine.length() > 0) {
ถ้า (nextLineIsMessage) {
Serial.println(บรรทัดสุดท้าย);
// ================================================ ==== ================>> ฟังก์ชั่นของ Relay Controller
// รีเลย์ 1 คอนโทรลเลอร์
ถ้า (lastLine.indexOf ("รีเลย์ 1 เปิด") >= 0) {
สเตตรีเลย์[0] = AKTIF;
Serial.print("ตอบกลับ====>>>> ");
Serial.println("สถานะรีเลย์ 1 ทำงานอยู่");
gprs.sendSMS (buffNumber, "สถานะรีเลย์ 1 ทำงานอยู่");
-
อื่นถ้า (lastLine.indexOf("รีเลย์ 1 ปิด") >= 0) {
StatRelay[0] = มาติ;
Serial.print("ตอบกลับ====>>>> ");
Serial.println("สถานะรีเลย์ 1 ปิดอยู่");
gprs.sendSMS (buffNumber, "สถานะรีเลย์ 1 ปิดอยู่");
-
// รีเลย์ 2 คอนโทรลเลอร์
ถ้า (lastLine.indexOf ("รีเลย์ 2 เปิด") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("ตอบกลับ====>>>> ");
Serial.println("สถานะรีเลย์ 2 ทำงานอยู่");
gprs.sendSMS (buffNumber, "สถานะรีเลย์ 2 ทำงานอยู่");
-
อื่นถ้า (lastLine.indexOf("รีเลย์ 2 ปิด") >= 0) {
StatRelay[1] = มาติ;
Serial.print("ตอบกลับ====>>>> ");
Serial.println("สถานะรีเลย์ 2 ปิดอยู่");
gprs.sendSMS (buffNumber, "สถานะรีเลย์ 2 ปิดอยู่");
-
// รีเลย์ 3 คอนโทรลเลอร์
ถ้า (lastLine.indexOf ("รีเลย์ 3 เปิด") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("ตอบกลับ====>>>> ");
Serial.println("สถานะรีเลย์ 3 ทำงานอยู่");
gprs.sendSMS (buffNumber, "สถานะรีเลย์ 3 ทำงานอยู่");
-
อื่นถ้า (lastLine.indexOf("รีเลย์ 3 ปิด") >= 0) {
StatRelay[2] = มาติ;
Serial.print("ตอบกลับ====>>>> ");
Serial.println("สถานะรีเลย์ 3 ปิดอยู่");
gprs.sendSMS (buffNumber, "สถานะรีเลย์ 3 ปิดอยู่");
-
// รีเลย์ 4 คอนโทรลเลอร์
ถ้า (lastLine.indexOf ("รีเลย์ 4 เปิด") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("ตอบกลับ====>>>> ");
Serial.println("สถานะรีเลย์ 4 ทำงานอยู่");
gprs.sendSMS (buffNumber, "สถานะรีเลย์ 1 ทำงานอยู่");
-
อื่นถ้า (lastLine.indexOf("รีเลย์ 4 ปิด") >= 0) {
StatRelay[3] = มาติ;
Serial.print("ตอบกลับ====>>>> ");
Serial.println("สถานะรีเลย์ 4 ปิดอยู่");
gprs.sendSMS (buffNumber, "สถานะรีเลย์ 4 ปิดอยู่");
-
nextLineIsMessage = เท็จ;
-
// ================================================ ==== ===================>>
-
//ล้างอาร์เรย์ถ่านเพื่ออ่านบรรทัดถัดไป
สำหรับ (int i = 0; i < sizeof (currentLine); ++ i ) {
currentLine[i] = (ถ่าน)0;
-
currentLineIndex = 0;
-
อื่น {
currentLine[currentLineIndex++] = LastCharRead;
-
-
-
ตรวจสอบอุปกรณ์
เครื่องมือนี้ทำงานโดยส่ง SMS ไปที่ SIM800L พร้อมลำดับอักขระเฉพาะ ตัวอย่างเช่น หากต้องการเปิดรีเลย์ 1 ให้ใช้คำสั่ง “เปิดรีเลย์ 1” และหากต้องการปิด ให้ใช้คำสั่ง “ปิดรีเลย์ 1” สำหรับรีเลย์ที่เหลือ คำสั่งจะเกือบจะเหมือนกัน ยกเว้นหมายเลขลำดับของรีเลย์แต่ละตัวที่คุณต้องการควบคุม หลังจากส่งข้อความอัตโนมัติแล้ว SIM800 จะส่งการตอบกลับในรูปแบบข้อความเกี่ยวกับสถานะของซิมการ์ดแต่ละอัน
วิดีโอการประกอบ การกำหนดค่า และการทดสอบอุปกรณ์
บทความต้นฉบับเป็นภาษาอังกฤษ
ชั้นเรียนปริญญาโทที่คล้ายกัน
น่าสนใจเป็นพิเศษ
ความคิดเห็น (4)