Professional Documents
Culture Documents
Arduino Vs Sim900a
Arduino Vs Sim900a
Nối dây
1. Mạch UNO
Module SIM 900A Arduino UNO
TX 2
RX 3
Power 4
VCC VCC
GND GND
2. Mạch MEGA
Module SIM 900A Arduino MEGA
TX 50
RX 51
Power 4
VCC VCC
GND GND
Với mạch MEGA các bạn mở file GSM.cpp trong thư viện ra, ở dòng 27,28
1. #define _GSM_TXPIN_ 2
2. #define _GSM_RXPIN_ 3
Thành
1. #define _GSM_TXPIN_ 50
2. #define _GSM_RXPIN_ 51
(Trên đây là cách đơn giản nhất mà mình tìm ra để không phải sửa đổi nhiều thứ
trong thư viện)
AT
Lệnh AT là lệnh kiểm tra. Khi gửi lệnh AT mà SIM900(A) trả lời OK tức SIM900(A) đang hoạt động
bình thường.
Máy tính hỏi:
AT
AT
OK
ATD
Lệnh ATD dùng để thực hiện cuộc gọi. Cú pháp ATD[số điện thoại];. Chú ý là có ký tự dấu
chấm phẩy ở cuối. Khi SIM900(A) trả lời OK thì cuộc gọi thực hiện thành công, đang chờ đầu
dây bên kia trả lời. Nếu không hãy kiểm tra lại việc lắp SIM Card, Anten...
Máy tính hỏi:
ATD0913005013;
ATD0913005013;
OK
ATH
ATH
ATH
OK
AT+CMGS
Lệnh AT+CMGS dùng để gửi tin nhắn ký tự. Cú pháp AT+CMGS="[số điện
thoại]". Sau khi SIM900(A) nhận được lệnh này sẽ trả về ký tự ">". Tiếp đó
bạn gửi tiếp nội dung tin nhắn và kết thúc phần tin nhắn bằng 0x1A và 0x00.
Máy tính hỏi:
AT+CMGS="0913005013"
>
Hello$1A$00
Hello
+CMGS: <mr>
OK
Kết nối
VCC IOREF/5V/3V3
GND GND
TXD D2
RXD D3
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "call.h"
#include "sms.h"
void setup()
{
Serial.begin(9600); //Khởi động Serial phục vụ việc
debug
Serial.println("GSM Shield testing.");
void loop()
{
if(started){
call.Call("0913005013"); //Thực hiện cuộc gọi đến
số 0913005013
Serial.println("Calling");
Serial.println("Done");
started = false; //Để không thực hiện tiếp
}
delay(1000);
};
Kết quả
Kết quả quan sát qua Serial Monitor của Arduino IDE
GSM Modem with Arduino UNO
How to send an SMS using GSM Modem connected to Arduino UNO
Components Required:
1. Arduino UNO
3. PC/Laptop
Connection Diagram:
For Code Without using Library files:
Code:
Without using Library files:
void setup()
{
Serial.begin(2400); //Baud rate of the GSM/GPRS Module
Serial.print("\r");
delay(1000);
Serial.print("AT+CMGF=1\r");
delay(1000);
Serial.print("AT+CMGS=\"+91944xxxxxx8\"\r"); //Number to which you want to send the sms
delay(1000);
Serial.print("Test SMS -Jay\r"); //The text of the message to be sent
delay(1000);
Serial.write(0x1A);
delay(1000);
}
void loop()
{
}
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
void setup()
Serial.begin(9600);
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
else Serial.println("\nstatus=IDLE");
if(started){
if (sms.SendSMS("+919********8", "Arduino SMS"))// number to which you want to send the sms and
the sms text//
};
void loop()
};
Module rờ le thì kết nối chân nào còn trống cũng được trừ chân 13 ra, vì mỗi lần khởi động lại
module Arduino, chân 13 có kết nối led trực tiếp làm nhiệm vụ thông báo module đã hoạt động
nên sẽ ảnh hưởng đến rờ le. Ví dụ , tôi dùng chân 7 và 8 cho 2 rờ le. Module rờ le được kích
hoạt ở mức không, tức nó sẽ mở relay khi 2 chân điều khiển nối mass.
Đấu dây cho Module CP2102 và Arduino. Cái này chỉ dùng khi nạp chương trình hoặc kiểm
tra lôi phần mềm, còn khi sử dụng thì không cần tới nữa. Tham khảo bài viết để biết chi
tiết: Cách kết nối Mạch chuyển USB UART CP2102 module Arduino Mini Pro | Điện tử NHT
MÃ NGUỒN
Các bạn dán toàn bộ mã nguồn vào chương trình Arduino và nạp chương trình:
#include <SIM900.h>
#include <SoftwareSerial.h>
#include <sms.h>
SMSGSM sms;
char from_phone_number[11];
char phone_number[]="0908901079";
char message[180];
char pos;
void setup(){
Serial.begin(9600);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
if (gsm.begin(2400))
{
digitalWrite(7, LOW);
digitalWrite(8, LOW);
Serial.println("\nstatus=READY");
}
else {
Serial.println("\nstatus=IDLE");
}
}
void loop()
{
pos=sms.IsSMSPresent(SMS_UNREAD);
if((byte)pos>0){
message[0]='\0';
if(strstr(message,"R1ON"))
{
digitalWrite(7,LOW);
sms.SendSMS(phone_number,"Relay 4 is ON");
}
if(strstr(message,"R1OFF")){
digitalWrite(7,HIGH);
sms.SendSMS(phone_number,"Relay 4 is OFF");
}
if(strstr(message,"R2ON")){
digitalWrite(8,LOW);
sms.SendSMS(phone_number,"Relay 5 is ON");
}
if(strstr(message,"R2OFF")){
digitalWrite(8,HIGH);
sms.SendSMS(phone_number,"Relay 5 is OFF");
}
if(strstr(message,"ALLOFF")){
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
sms.SendSMS(phone_number,"Relay 7 & 8 is OFF");
}
if(strstr(message,"ALLON")){
digitalWrite(7,LOW);
digitalWrite(8,LOW);
sms.SendSMS(phone_number,"Relay 7 & 8 is ON");
}
sms.DeleteSMS((byte)pos);
}