-
-
-
Tổng tiền thanh toán:
-
Gửi và nhận SMS bằng Sim800L & Arduino
01/10/2017
Gửi và nhận SMS bằng Sim800L & Arduino
Sử dụng SIM800 thay thế cho SIM 900 được thực hiện như nhau, Sim800 trong môi trường Arduino để thực hiện công việc gửi, nhận SMS, đọc nội dung SMS, xóa SMS. Bài viết chỉ ở mức cơ bản để các bạn có thể hiểu và sử dụng modul SIM900 trong môi trường Arduino và từ đó tư duy phát triển theo định hướng riêng cho các project khác nhau.
Chuẩn bị
- Module Sim 900a mini (mình sử dụng loại này bạn nào dùng loại khác thì chú ý nối đúng TX RX).
- Mạch Arduino UNO hoặc MEGA
- 1 Tụ 2200uF / 10V
- 1 Diode N4007
- Sim điện thoại còn tiền devil
Các bạn tải thư viện Sim900 cho arduino tại đây: GSMSHIELD
Để sử dụng modul sim với nguồn 5V trên mạch Arduino các bạn hàn diode vào chân Vcc và tụ phân cực vào chân Vcc và GND. (Nếu không hàn diode và tụ thì các bạn sử dụng với nguồn 3,3V/2A nhé. nếu dòng nhỏ hơn 2A khi khởi động modul sim sẽ bị tắt do không đủ dòng.) Xem ở đây nhé http://arduino.vn/bai-viet/851-su-dung-module-sim900a-mini-voi-arduino-module-nhan-tin-voi-arduino
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
Thay lại pin cho nó trong phần khai báo pin:
#define _GSM_TXPIN_ 2
#define _GSM_RXPIN_ 3
Thành
#define _GSM_TXPIN_ 50
#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)
Code tham khảo
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
int numdata;
boolean started=false; //trạng thái modul sim
char smstext[160];// nội dung tin nhắn
char number[20]; // số điện thoại format theo định dạng quốc tế
void setup(){
Serial.begin(9600);
Serial.println("Gui va nhan tin nhan");
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
} else
Serial.println("\nstatus=IDLE");
if(started){
sms.SendSMS("+84123456789", "Online"); //đổi lại số của bạn nhé :D
}
}
void loop() {
if(started){
int pos; //địa chỉ bộ nhớ sim (sim luu tối đa 40 sms nên max pos = 40)
pos = sms.IsSMSPresent(SMS_UNREAD); // kiểm tra tin nhắn chưa đọc trong bộ nhớ
//hàm này sẽ trả về giá trị trong khoảng từ 0-40
if(pos){//nêu có tin nhắn chưa đọc
if(sms.GetSMS(pos, number, smstext, 160)){
Serial.print("So dien thoại: ");
Serial.println(number);
Serial.print("Noi dung tin nhan: ");
Serial.println(smstext);
sms.SendSMS(number, "Da doc tin");
}
}
delay(1000);
} else Serial.println("Offline");
}
--------------------------------------------------------------------------------------------------------------------------------------------------------
Sử dụng module SIM900a mini với Arduino - Module nhắn tin với Arduino
Xây dựng các hệ thống điều khiển từ xa, gửi nhận dữ liệu thu thập từ các cảm biến... ở những nơi không có internet thì sử dụng sóng điện thoại là giải pháp duy nhất vì chi phí rẻ, bất chấp khoảng cách và độ ổn định cao. Với Modul sim 900a kết hợp với mạch xử lý arduino uno hoặc mega các bạn có thể làm được nhiều hệ thống tương đối tốt có thể ứng dụng vào thực tế như bộ định vị, các hệ thống điều khiển thiết bị từ xa qua điện thoại, sms makerting,...
Nối mạch
Modul sim900a mini mình hàn thêm diot vào chân vcc và tụ 2200uF/10V để sử dụng được nguồn 5v từ mạch arduino
-
5V nối với chân 5V của board Arduino.
-
GND nối với chân GND của board Arduino.
-
TX nối với chân 51/2 của board Arduino MEGA/UNO.
-
RX nối với chân 50/3 của board Arduino MEGA/UNO.
-
PWR: Đây là chân bật tắt modul sim900a.
-
SPK: Chân này cần kết nối nếu bạn muốn xuất âm thanh ra loa thoại.
-
MIC: Chân này cần kết nối nếu bạn muốn tạo mic để đàm thoại.
Tùy theo mạch các bạn đang sử dụng để sửa lại chân tx rx trong thư viện, nếu bạn nào sử dung lệnh AT thì có thể sử dụng chân khác
Sơ đồ nối dây trên mình nối để sử dụng với thư viện SIM900 LIB
Các chức năng
Thư viện hỗ trợ tương đối đầy đủ các chức năng mà SIM900 có.
-
Gọi điện
-
Nhận cuộc gọi
-
Gửi tin nhắn
-
Nhận tin nhắn
-
Xóa tin nhắn
-
Đọc tin nhắn
-
GPS
-
GPRS
-
Etc...
Mình chỉ mới tìm hiểu chừng đó mà mình thấy như thế là gần như full chức năng rồi. Có thời gian các bạn tìm hiểu thêm phần MIC và LOA nhé. Mình hơi bận nên không tìm hiểu vì không dùng tới, những dự án của mình làm chủ yếu dùng SMS, GPS, GPRS. Hiện mình đang sử dụng thư viện này trong bộ định vị xe máy và phát hiện mất xe báo về số điện thoại mình.(Chả là mình vừa mới bị hack mấy con xe nên cay cú mới làm bộ giám sát này crying). Bạn nào muốn làm 1 bộ cho xe thì có thể để lại comment mình sẽ viết bài hưỡng dẫn. heart
Mình không biết nó có hoạt động được với những modul sử dụng ic SIM900A không vì mình chỉ mới test trên Modul SIM900A mini mình có thôi. Bạn nào sử dụng modul khác mà được thì để lại comment chia sẻ nhé(nó miễn phí mà devil). Mà các bạn có ý định mua thì modul SIM900A mini là đủ dùng rồi, nhỏ gọn lại rẻ tiền nữa phù hợp với sinh viên làm mấy cái project nhỏ nhỏ, đồ án, bài tập lớn... hay đại loại thứ gì đó tương tự.
Các hàm trong thư viện
1. Hàm này dùng để thiết lập một kết nối GPRS với tên miền sử dụng chứng thực (nếu cần thiết)
int attachGPRS(char* domain, char* dom1, char* dom2)
Thông số và giá trị trả về:
-
doamin: Con trỏ đến một chuỗi chứa tên miền địa chỉ của kết nối GPRS
-
dom1: Con trỏ đến chuỗi tên người dùng (không sử dụng nếu không cần thiết)
-
dom2: Con trỏ đến chuỗi mật khẩu (không sử dụng nếu không cần thiết)
-
Giá trị trả về kiểu boolean:
-
0 - Không thể thiết lập một kết nối GPRS
-
1 - Kết nối thiết lập thành công
2. Ngắt kết nối GPRS
int dettachGPRS()
3. Bắt đầu một kết nối tới máy chủ tại 1 port
int connectTCP(const char* server, int port)
Thông số và giá trị trả về:
server: Con trỏ đến chuỗi địa chỉ máy chủ, nó có thể là IP hoặc địa chỉ bình thường
port: cổng được sử dụng để thiết lập kết nối
Ví dụ. gsm.connectTCP ("www.google.com", 80) Ví dụ. gsm.connectTCP ("74.125.39.106", 80)
Kiểu trả về boolean:
0 - Không thể bắt đầu kết nối TCP
1 - Kết nối đến máy chủ thành công
4. Dừng các kết nối TCP đến máy chủ.
int disconnectTCP ()
5. Thiết lập SIM900 vào chế độ máy chủ, chờ khách hàng kết nối TCP đến trên cổng xác định.
int connectTCPServer(int port)
Thông số và giá trị trả về:
-
port: cổng được sử dụng để thiết lập kết nối
-
Kiểu trả về boolean:
-
0 - Không thể bắt đầu kết nối máy chủ
-
1 - Máy chủ bắt đầu thành công, chờ đợi kết nối từ máy khách