Tải bản đầy đủ (.docx) (19 trang)

Điều khiển thiết bị qua sms với Arduino và sim900

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.54 MB, 19 trang )

Điều khiển thiết bị qua sms với Arduino và sim900
Bài hướng dẫn chi tiết cách lập trình Arduino với sim900 để điều khiển thiết bị. Tài liệu bao gồm Đọc giá
trị cảm biến độ ẩm đất và gửi giá trị độ ẩm đến số điện thoại đã được định nghĩa trước.
Phần 1: Gửi tin nhắn.
Nguyên lý hoạt động:
- Đọc giá trị cảm biến độ ẩm đất và gửi giá trị độ ẩm đến số điện thoại đã được định nghĩa trước.
Thiết bị cần có:
- 01 bo mạch Arduino UNO (bạn có thể sử dụng bo mạch Arduino Pro mini, giá 85k).

- 01 bo GSM SIM900A version 3.8.2. Giá 400k.


- 01 cái rờ le.


- 01 adapter 5V, 01 ampe ( <=2 ampe). Cái ampe này quan trọng nha.


- 01 cảm biến độ ẩm đất.
- 01 SIM điện thoại có thể nhận/nhắn tin. Sau đó gắn SIM vào khe SIM trên bo mạch GSM SIM900.


Gắn điện nguồn 5V vào bo mạch SIM900.


Cách đấu nối:
GSM <---> Arduino
----------------------------5V Rx <--> Tx
5V Tx <--> Rx
+5V <--> 5V
GND <--> GND









Nạp code:
Mở trình biên dịch Arduino IDE, và gõ vào lệnh sau hoặc download file đính kèm bên dưới.
#include <SoftwareSerial.h>
#include <stdlib.h>
// pins definition
int moistureSensorPin = 1; // Cảm biến độ ẩm, chân A1
int pumpPin = 7; // Role mở máy bơm, chân A7
int moistureSensorValue; // biến lưu giá trị độ ẩm
String MobileNumber="0968660390"; // Số điện thoại cần gửi
void setup()
{
Serial.begin(9600);
// Arduino pins initalization


pinMode(moistureSensorPin,OUTPUT);
pinMode(pumpPin,OUTPUT);
Config();
}
void Config()// This function is configuring our SIM900 module i.e. sending the initial AT commands
{
delay(1000);
Serial.print("ATE0\r");

Response();
Serial.print("AT\r");
Response();
Serial.print("AT+CMGF=1\r"); // To check if your modem supports this text mode
Response();
// Serial.print("AT+CSCS=\"HEX\"\r"); // check modem support unicode sms message?
// Response();
//
// Serial.print("AT+CSMP=1,167,0,8\r");
// Response();
}
void Response() // Get the Response of each AT Command
{
int count = 0;
Serial.println();
while(1)
{
if(Serial.available())
{
char data =Serial.read();
if(data == 'K')
{
Serial.println("OK");
break;
}
if(data == 'R')
{
Serial.println("GSM Not Working or Not support");



break;
}
}
count++;
delay(10);
if(count == 1000)
{
Serial.println("GSM not Found");
break;
}
}
}
void loop()
{
// Đọc giá trị của cảm biến độ ẩm
moistureSensorValue = analogRead(moistureSensorPin);
Serial.println(moistureSensorValue);

// Gửi tin nhắn nếu đất quá khô
if(moistureSensorValue >= 700)
{
sendSMS("DAT QUA KHO. CAN TUOI NUOC.");
}
if((moistureSensorValue < 700) && (moistureSensorValue >= 300))
{
sendSMS("DAT AM.");
}
}
void sendSMS(String message)
{

while(1)
{
if(Serial.available())
{


Serial.println();
Serial.print("AT+CMGS=\""); // send the SMS number
Serial.print(MobileNumber);
Serial.println("\"");
delay(1000);
Serial.print(message); // SMS body
delay(1000);
Serial.write(0x1A);
Serial.write(0x0D);
Serial.write(0x0A);
delay(2000);
}
}
}
Kết quả:


Mình sẽ giải thích các lệnh AT để gửi một tin nhắn trong phần tiếp theo. Mời các bạn đón xem nhé.

Phần 2: Giải thích tập lệnh AT sử dụng để gửi tin nhắn.
Kiểm tra modem GSM có hỗ trợ text mode:
Để kiểm tra modem GSM có hỗ trợ text mode, ta dùng lệnh:
AT+CMGF=1 <ENTER>
Nếu modem trả về kết quả là "OK" nghĩa là modem có hỗ trợ. Text mode nghĩa là chế độ gửi tin nhắn ký

tự đơn giản, ko hỗ trợ tiếng việt có dấu (unicode), data, hình ảnh.


Để gửi tin nhắn SMS, ta dùng lệnh:
AT+CMGS="Số điện thoại bạn muốn gửi" <ENTER>
Modem sẽ trả lời với ký tự >
Và đợi bạn nhập chuỗi nội dung tin nhắn cần gửi, xong nhấn <Ctrl-Z> để gửi.


Để gửi tin nhắn Unicode (tiếng việt có dấu chẳng hạn):
Đầu tiên ta kiểm tra xem modem GSM có hỗ trợ Unicode hay không bằng cách dùng lệnh sau:
AT+CSCS=?
Nếu kết quả trả về từ modem là "HEX" hoặc "UCS2" nghĩa là modem đó có hỗ trợ. Và ta dùng lệnh bên
dưới để cài đặt modem gửi tin nhắn Unicode:
AT+CSCS="HEX" <ENTER>
Ta có thể chỉ rõ bảng mã font Unicode (Data Coding Scheme) cho tin nhắn bằng cách dùng lệnh:
AT+CSMP=1,167,0,8 <ENTER>
Sau lệnh trên, modem GSM của bạn giờ có thể gửi tin nhắn chế độ Unicode. Và để gửi tin nhắn ta dùng
lệnh:
AT+CMGS="Số điện thoại bạn muốn gửi" <ENTER>


Sau đó gõ vào chuỗi nội dung tin nhắn, xong nhấn <Ctrl-Z>



×