วิธีการส่งและรับ SMS โดยใช้โมเด็ม GSM

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในบทความนี้เราจะเรียนรู้วิธีการส่งและรับ SMS โดยใช้โมเด็ม GSM ซึ่งควบคุมโดย Arduino ให้เราดูว่าโมเด็ม GSM คืออะไรวิธีเชื่อมต่อกับ Arduino วิธีส่ง SMS พร้อมการตั้งค่า

นอกจากนี้เราจะสำรวจว่ามีแอปพลิเคชันใดบ้างที่เราสามารถทำได้ด้วยโมเด็ม GSM นอกเหนือจากการส่งข้อความโดยมนุษย์



โมเด็ม GSM คืออะไร?

GSM ย่อมาจาก Global System for Mobile Communications เป็นมาตรฐานที่พัฒนาโดย ETSI (European Telecommunications Standard Institute) ซึ่งอธิบายโปรโตคอลสำหรับการสื่อสาร 2G

เป็นโปรโตคอลดิจิทัลตัวแรกสำหรับการสื่อสารเคลื่อนที่ซึ่งได้รับการปรับให้เหมาะสมสำหรับการสื่อสารด้วยเสียงแบบฟูลดูเพล็กซ์ การสื่อสารแบบฟูลดูเพล็กซ์โดยสรุปหมายความว่าทั้งสองฝ่ายสามารถส่ง / รับข้อมูล (หรือเสียง) พร้อมกันได้



โปรโตคอล GSM ยังอนุญาตให้ถ่ายโอนข้อมูลแพ็คเก็ตเช่น GPRS และ EDGE

โมเด็ม GSM SIM800:

โมเด็ม GSM เป็นฮาร์ดแวร์ที่รับซิมการ์ดที่ถูกต้อง (Subscriber Identity Module) โดยทั่วไปแล้ว SIM ใด ๆ ก็จะใช้งานได้ซึ่งรองรับโปรโตคอล GSM และเมื่อสมัครใช้งานเครือข่าย

เปรียบเสมือนโทรศัพท์มือถือที่ไม่มีหน้าจอและปุ่มกด มีพิน I / O สี่ขาขึ้นอยู่กับรุ่นที่คุณเลือก

สองตัวสำหรับ TX และ RX (ส่งและรับ) อีกสองพินสำหรับ VCC และ GND ซึ่งเป็นเรื่องธรรมดา

นอกจากนี้ยังประกอบด้วยพอร์ต RS232 สำหรับการสื่อสารแบบอนุกรมระหว่างโมเด็มและคอมพิวเตอร์อย่างไรก็ตามเราจะไม่ใช้ในโครงการนี้

มีแจ็คไฟ DC มาตรฐานซึ่งสามารถใช้พลังงานจากแหล่งจ่ายไฟภายนอกเช่นอะแดปเตอร์แรงดันไฟฟ้า

มีแรงดันไฟฟ้าที่ใช้งานได้ตั้งแต่ 5 ถึง 12V บนแจ็ค DC ขึ้นอยู่กับรุ่น มีไฟแสดงสถานะ LED 3 ดวงสำหรับพลังงานสถานะและเครือข่าย

ไฟ LED แสดงสถานะกำลังไฟ LED แสดงสถานะว่าโมเด็ม GSM ทำงานหรือไม่ไฟ LED เครือข่ายแสดงการจัดตั้งเครือข่ายมือถือ

LED เครือข่ายเริ่มต้นกะพริบทุก ๆ หนึ่งวินาทีขณะค้นหาเครือข่ายเมื่อสร้างเครือข่ายมือถือแล้วจะกะพริบทุกๆ 3 วินาที

คุณต้องกดปุ่มเปิด / ปิดเป็นเวลา 2 ถึง 3 วินาทีเพื่อเปิดใช้งานโมเด็ม GSM เมื่อคุณทำเสร็จแล้วเครื่องจะล็อคเข้ากับเครือข่ายมือถือ

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

เรากำลังจะใช้โมเด็ม GSM ของ SIM800 ซึ่งรองรับควอดแบนด์ 850/900/1800/1900 MHz หากคุณเป็นเจ้าของโมเด็ม SIM900 ไม่ต้องกังวลโปรแกรมและวงจรเข้ากันได้ในโครงการนี้

ตอนนี้คุณคงมีความคิดบางอย่างเกี่ยวกับโมเด็ม GSM แล้วตอนนี้เรามาเรียนรู้วิธีการเชื่อมต่อกับ arduino

แผนภูมิวงจรรวม:

ดังที่คุณสามารถอนุมานในรูปแบบไดอะแกรมการเชื่อมต่อวงจรนั้นง่ายมาก คุณต้องมีหมุดส่วนหัวชายถึงหญิง 3 ตัว โครงการนี้จำเป็นต้องใช้สายเคเบิล USB เนื่องจากเราจะสื่อสารผ่านจอภาพแบบอนุกรม

ให้จ่ายไฟโมเด็ม GSM ด้วยอะแดปเตอร์ภายนอกเสมอ พลังงานจาก arduino ไม่เพียงพอสำหรับโมเด็ม GSM ซึ่งอาจทำให้ตัวควบคุมแรงดันไฟฟ้าของ arduino มากเกินไป

นั่นคือทั้งหมดที่เกี่ยวกับส่วนฮาร์ดแวร์ ตอนนี้เรามาดูการเขียนโค้ดกัน

โปรแกรม:

//-------------Program developed by R.Girish---------------//
#include
#define rxPin 9 // gsm TX------> arduino 9
#define txPin 8 //gsm RX--------> arduino 8
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin)
char text[150]
String message=''
int x
void setup()
{
Serial.begin(9600)
while (!Serial){}
mySerial.begin(9600)
delay(1000)
Serial.println('Write your message (with dot at end):')
}
void loop()
{
x=0
while( Serial.available()>0 )
{
text[x] = Serial.read()
message += text[x]
x++
if (text[x-1]==46)
{
Serial.println('Your message is sending......')
SendTextMessage()
ShowSerialData()
delay(1000)
Serial.println('r')
Serial.println('Success')
message=''
x=0
}}}
void SendTextMessage()
{
mySerial.print('AT+CMGF=1r')
delay(1000)
mySerial.print('AT+CMGS='+91xxxxxxxxxx'r') // Replace x with your 10 digit phone number
delay(1000)
mySerial.println(message)
mySerial.print('r')
delay(1000)
mySerial.println((char)26)
mySerial.println()
}
void ShowSerialData()
{
while(mySerial.available()!=0)
Serial.write(mySerial.read())
}
//-------------Program developed by R.Girish---------------//

อย่าลืมจุด (.) ที่ท้ายข้อความทุกข้อความ มิฉะนั้นจะไม่ส่งข้อความไปยังหมายเลขที่กำหนดในโปรแกรม แทนที่ x ด้วยหมายเลขโทรศัพท์ดิจิทัล 10 หมายเลขในโปรแกรม ตรวจสอบว่าคุณมีแผนบริการ SMS ที่ใช้งานได้ในซิมการ์ดของคุณ

หากคุณไม่ได้มาจากอินเดียโปรดเปลี่ยนรหัสประเทศในโปรแกรม

ตัวอย่างเช่น:

สำหรับสหราชอาณาจักร: +44
สำหรับสหรัฐอเมริกา: +1
สำหรับแคนาดา: +1
สำหรับรัสเซีย: +7

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

คุณสามารถเชื่อมต่ออินเทอร์เน็ตด้วย GPRS ในโมเด็ม GSM ได้ แต่จะอยู่ภายใต้บทความอื่น

ในบทความถัดไปเราจะได้เรียนรู้ วิธีรับ SMS โดยใช้โมเด็ม GSM และ Arduino

หากคุณมีคำถามเพิ่มเติมเกี่ยวกับวิธีการส่ง SMS โดยใช้โมเด็ม GSM อย่าลังเลที่จะถามในส่วนความคิดเห็น

วิธีรับ SMS โดยใช้โมเด็ม GSM

ในการสนทนาข้างต้นเราได้เรียนรู้วิธีการส่งข้อความโดยใช้โมเด็ม GSM และยังกล่าวถึงพื้นฐานของโมเด็ม GSM

ในส่วนนี้เราจะพูดถึงวิธีการรับ SMS ผ่านจอภาพอนุกรมของ arduino IDE เราไม่เพียง แต่จะรับ SMS เท่านั้น แต่ยังส่งข้อความโดยกดปุ่มต่างๆ ในทันทีการกด“ s” จะเป็นการส่งข้อความที่ป้อนล่วงหน้าการกด“ r” จะได้รับ SMS แบบเรียลไทม์

นี่คือต้นแบบของผู้แต่ง:

มันทำงานอย่างไร

วงจรสำหรับรับ SMS โดยใช้โมเด็ม GSM นั้นง่ายมากคุณเพียงแค่ต้องมีหมุดหัวต่อตัวผู้ถึงตัวเมีย 3 ตัว TX ของโมเด็ม GSM เชื่อมต่อกับพิน # 9 ของ arduino และ RX ของโมเด็ม GSM เชื่อมต่อกับพิน # 8 ของ arduino และการเชื่อมต่อกราวด์กับกราวด์จะได้รับระหว่าง GSM และ arduino

ใช้แหล่งจ่ายไฟภายนอกสำหรับโมเด็ม GSM เสมออย่าเชื่อมต่อ 5Vcc จาก arduino ไปยังโมเด็ม GSM เนื่องจากมีโอกาสที่จะทำให้ตัวควบคุมแรงดันไฟฟ้าของ arduino ทำงานหนักเกินไป

อย่าลืมใช้ตัวตัดอัตรา SMS หรือสิ่งที่คล้ายกันในการสมัคร SMS ของคุณเพื่อลดค่าใช้จ่าย SMS ของคุณ

มิฉะนั้นคุณจะพบว่ายอดเงินในบัญชีว่างเปล่าหลังจากส่ง SMS หลายครั้งเนื่องจากจะไม่มีการตอบรับใด ๆ จากผู้ให้บริการมือถือของคุณหลังจากส่ง SMS ทุกครั้งเนื่องจากซิมการ์ดอยู่ในโมเด็ม GSM

การรับทราบเพียงอย่างเดียวที่คุณได้รับคือ SMS เตือนเกี่ยวกับบัญชีที่ว่างเปล่าของคุณดังนั้นโปรดระมัดระวังค่าใช้จ่ายของคุณ ตอนนี้เรามาดูส่วนการเข้ารหัสโครงการนี้กัน

โปรแกรม:

//-----------------Program developed by R.Girish-------------//
#include
SoftwareSerial gsm(9,8)
void setup()
{
gsm.begin(9600) // Setting the baud rate of GSM Module
Serial.begin(9600) // Setting the baud rate of Serial Monitor (Arduino)
delay(100)
}
void loop()
{
if (Serial.available()>0)
switch(Serial.read())
{
case 's':
Send()
break
case 'r':
Recieve()
break
case 'S':
Send()
break
case 'R':
Recieve()
break
}
if (gsm.available()>0)
Serial.write(gsm.read())
}
void Send()
{
gsm.println('AT+CMGF=1')
delay(1000)
gsm.println('AT+CMGS='+91xxxxxxxxxx'r') // Replace x with mobile number
delay(1000)
gsm.println('Hello I am GSM modem!!!')// The SMS text you want to send
delay(100)
gsm.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
void Recieve()
{
gsm.println('AT+CNMI=2,2,0,0,0') // AT Command to receive a live SMS
delay(1000)
}
//-----------------Program developed by R.Girish-------------//

การป้อนหมายเลขโทรศัพท์

ป้อนหมายเลขโทรศัพท์ของผู้รับใน“ xxxxxxxxxxx” ในโปรแกรมพร้อมรหัสประเทศของคุณที่จุดเริ่มต้น

ป้อนข้อความที่คุณต้องการส่งในโปรแกรมภายในเครื่องหมายคำพูด: gsm.println ('สวัสดีฉันเป็นโมเด็ม GSM !!!') // ข้อความ SMS ที่คุณต้องการส่ง

คอมไพล์โปรแกรมแล้วอัพโหลดไปที่ arduino

ใส่ซิมการ์ดและเปิดโมเด็ม GSM ด้วยแหล่งจ่ายไฟภายนอกแล้วกดปุ่มเปิด / ปิดเป็นเวลา 3 วินาที (ขึ้นอยู่กับรุ่น) รอประมาณ 10 ถึง 20 วินาทีเพื่อสร้างเครือข่ายมือถือไฟ LED เครือข่ายควรกะพริบหนึ่งครั้งในทุกๆ 3 วินาที หากทุกอย่างตามที่ระบุไว้ข้างต้นเสร็จสิ้นเราก็พร้อมที่จะดำเนินการขั้นต่อไป

ตอนนี้เปิดมอนิเตอร์แบบอนุกรมแล้วกด“ r” โมเด็ม GSM ก็พร้อมที่จะรับ SMS ตอนนี้ส่งข้อความจากโทรศัพท์มือถือเครื่องใดก็ได้ไปยังหมายเลขของซิมที่ใส่ไว้ในโมเด็ม GSM
ข้อความควรปรากฏขึ้นบนมอนิเตอร์แบบอนุกรมซึ่งคล้ายกับภาพประกอบด้านล่าง:

“ สวัสดีชาวโลก” คือข้อความที่ส่งไปยังโมเด็ม GSM และหมายเลขที่ส่งข้อความนั้นจะปรากฏขึ้นด้วย

ตอนนี้ให้ส่ง SMS ไปยังหมายเลขที่ป้อนไว้ล่วงหน้าในโปรแกรมพร้อมข้อความที่ป้อนไว้ล่วงหน้า กด“ s” และคุณจะเห็นสิ่งที่คล้ายกันในภาพประกอบด้านล่าง: SMS ที่ส่งคือ“ สวัสดีฉันเป็นโมเด็ม GSM”

ตอนนี้คุณรู้วิธีส่งและวิธีรับ SMS โดยใช้โมเด็ม GSM แล้ว




คู่ของ: วงจรควบคุมมอเตอร์บลูทู ธ ถัดไป: วิธีการออกแบบวงจรฮีตเตอร์เหนี่ยวนำ