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. Lập trình arduino, điều khiển thiết bị qua sms, arduino và sim900
Trang 1Đ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
Trang 2- 01 cái rờ le.
Trang 3- 01 adapter 5V, 01 ampe ( <=2 ampe) Cái ampe này quan trọng nha.
Trang 4- 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
Trang 5Gắn điện nguồn 5V vào bo mạch SIM900.
Trang 6Cách đấu nối:
GSM < -> Arduino -5V Rx < > Tx
5V Tx < > Rx
+5V < > 5V
GND < > GND
Trang 12Nạ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
Trang 13pinMode(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");
Trang 14}
}
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())
{
Trang 15Serial.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ả:
Trang 16Mì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
Trang 17Để 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
Trang 18Để 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>
Trang 19Sau đó gõ vào chuỗi nội dung tin nhắn, xong nhấn <Ctrl-Z>