MODULE ARDUINO & THƯ VIỆN

SIM800L – module GSM nhắn tin và gọi điện giá rẻ

Module SIM800L GSM / GPRS là một module GSM thu nhỏ, có thể được tích hợp vào các dự án IoT khác nhau. Bạn có thể sử dụng module này để thực hiện hầu hết mọi thứ mà một chiếc điện thoại di động bình thường có thể làm: Tin nhắn văn bản SMS, thực hiện hoặc nhận các cuộc gọi điện thoại, kết nối với internet thông qua GPRS (2G), TCP / IP,… Trên hết, module SIM800L hỗ trợ mạng GSM / GPRS bốn băng tần, có nghĩa là nó hoạt động được ở nhiều loại mạng khác nhau ở các quốc tra khác nhau trên thế giới.

Giá bán module SIM800L hiện nay là rẻ nhiết trong tất cả các dòng module SIMxxx, ở khoảng 150k.

Xem thêm: Luận văn giám sát và cảnh báo khí gas dùng IOT và module SIM900A

1. Tổng quan phần cứng module SIM800L

Trung tâm của module là chip SIM800L GSM của SimCom. Điện áp hoạt động của chip là từ 3,4V đến 4,4V, tương thích trực tiếp với pin LiPo.

Tất cả các chân tín hiệu chính của GSM SIM800L được nối ra header nên bạn có thể dễ dàng cấp nguồn và điều khiển module thông qua UART. Module hỗ trợ baudrate từ 1200bps đến 115200bps với việc tự động điều chỉnh baudrate phù hợp.

Module cần một ăng-ten ngoài để kết nối với mạng di động. Các module đã đi kèm với một ăng-ten xoắn ốc được kết nối trực tiếp đến chân NET trên PCB. PCB cũng có cổng kết nối U.FL trong trường hợp bạn muốn gắn thêm hoặc thay đổi vị trí ăng-ten.

Có một khe cắm SIM ở mặt sau! Bạn chỉ cần thẻ micro SIM với 2G  đã được kích hoạt. Hướng để lắp thẻ SIM được khắc trên bề mặt của khe cắm SIM. Module chỉ có kích thước rất nhỏ nhưng tích hợp một số tính năng được liệt kê dưới đây:

  • Hỗ trợ Quad-band: GSM850, EGSM900, DCS1800 và PCS1900
  • Kết nối với tất cả các mạng GSM với bất kỳ loại SIM 2G nào
  • Thực hiện và nhận cuộc gọi thoại bằng loa ngoài 8Ω & micrô
  • Gửi và nhận tin nhắn SMS
  • Gửi và nhận dữ liệu GPRS (TCP / IP, HTTP, v.v.)
  • Quét và nhận các đài phát thanh FM
  • Công suất thu phát:
    Class 4 (2W) cho GSM850
    Class 1 (1W) cho DCS1800
  • Bộ lệnh AT dựa trên kết nối UART (Serial)
  • Đầu nối FL cho ăng ten di động
  • Sử dụng thẻ micro SIM

Bạn có thể xem thêm các thông số khác của SIM800L GSM từ Cellular chip:

SIM800L GSM

2. Đèn báo trạng thái Module

Có một đèn LED ở phía trên bên phải của module GSM SIM800 L cho biết trạng thái kết nối mạng di động của module. Nó sẽ nhấp nháy ở nhiều mức delay khác nhau để hiển thị trạng thái của module.

Module SIM800L Blink với chu kỳ 1s Module SIM800L Blink với chu kỳ 2s Module SIM800L Blink với chu kỳ 3s
Blink với chu kỳ 1s Blink với chu kỳ 2s Blink với chu kỳ 3s
Module đang hoạt động

nhưng chưa kết nối với mạng di động

Kết nối dữ liệu GPRS

đang hoạt động

Module đã kết nối thành công với ạng di động

bạn đã có thể gửi/nhận tin nhắn và gọi/nhận điện thoại

3. Chọn loại ăng-ten cho module SIM800L

Module cần ăng-ten để kết nối với mạng di động để gọi điện, nhắn tin hoặc truyền dữ liệu GPRS. Vì vậy, lựa chọn ăng-ten là điều rất quan trọng. Có hai cách bạn có thể gắn ăng-ten vào mô-đun SIM800L.

Đầu tiên là ăng-ten GSM xoắn ốc thường đi kèm với mô-đun và chỉ cần hàn đến chân NET trên PCB. Ăng-ten này rất hữu ích cho các dự án cần tiết kiệm không gian đặc biệt là các dự án ở trong nhà.

Loại thứ hai là ăng-ten GSM 3dBi cùng với dây chuyển đổi U.FL sang SMA có thể mua tại các cửa hàng bán linh kiện với giá rẻ. Bạn có thể gắn ăng-ten này vào đầu nối u.fl nhỏ nằm ở góc trên cùng bên trái của module. Loại ăng-ten này có hiệu suất tốt hơn và cho phép đặt mô-đun của bạn bên trong vỏ kim loại – miễn là ăng-ten nằm ở bên ngoài.

4. Cấp nguồn cho module SIM800L

Một trong những yếu tố quan trọng nhất để module SIM800L hoạt động là cung cấp đủ năng lượng cho nó.

Tùy thuộc vào trạng thái của module SIM800L, mức năng lượng tiêu thụ sẽ khác nhau. Mức tiêu thụ tối đa của module là khoảng 2A trong khi truyền phát. Nó không thường xuyên cần dòng như vậy, nhưng có thể sẽ cần khoảng 216mA trong khi gọi điện thoại hoặc 80mA trong khi truyền dữ liệu qua GPRS. Bảng dữ liệu tóm tắt dưới đây là thông số dòng điện cần cho các hoạt động của module:

Modes Frequency Current Consumption
Không hoạt động 60 uA
Chế độ ngủ 1 mA
Chế độ chờ 18 mA
Gọi điện GSM850 199 mA
EGSM900 216 mA
DCS1800 146 mA
PCS1900 131 mA
GPRS 453 mA
Truyền phát 2 A

Do module SIM800L không đi kèm với bộ điều chỉnh điện áp trên board mạch, nên cần có nguồn điện bên ngoài được điều chỉnh theo điện áp trong khoảng từ 3,4V đến 4,4V (lý tưởng là 4.1V). Nguồn cung cấp có dòng MAX là 2A, nếu không module sẽ liên tục bị reset. Dưới đây là các lựa chọn để cấp nguồn cho module SIM800L

4.1. Pin LiPo 3.7V (Khuyên dùng)

Một trong những điều thú vị về pin Li-Po là điện áp của chúng thường nằm trong khoảng 3,7V – 4.2V, rất hoàn hảo cho module SIM800L. Bất kỳ pin Li-ion / polymer 1200mAh hoặc dung lượng lớn hơn có thể cung cấp điện áp ổn định ngay cả trong trường hợp sử dụng dòng 2A.

4.2. Mạch điều chỉnh điện áp DC-DC

Bất kỳ bộ chuyển đổi DC-DC có dòng lớn hơn 2A như LM2596 đều có thể cấp điện cho module SIM800L. LM2596 có hiệu năng tốt hơn nhiều so với LM317 hoặc LM338.

5. Sơ đồ chân của module SIM800L

Module SIM800L có tổng cộng 12 chân I/O có vị trí như hình dưới đây:

NET là chân kết nối với Ăng-ten bên ngoài

VCC là chân cấp nguồn cho module SIM 800L có mức điện áp từ 3.4V đến 4.4 volts. Lưu ý: Nếu kết nối với điện áp 5V có thể làm cháy module, nó cũng không thể hoạt động ở điện áp 3.3 V! Nguồn điện từ Pin Li-Po hoặc mạch ổn áp DC-DC có mức điện áp 3.7V và 2A là phù hợp nhất

RST (Reset) là chân dùng để reset. Nối chân reset xuống mức thấp ở 100ms sẽ reset toàn bộ module.

RxD (Receiver) Chân dùng để kết nối UART

TxD (Transmitter) Chân dùng để kết nối UART

GND Chân nối mass, chúng ta cần nối mass chung với Arduino.

RING pin Hoạt động giống như chuông điện thoại. Nó thường dùng để ngắt ngoài (Interrupt) Arduino. Mặc định của nó là mức cao và được kéo xuống mức thấp 120ms khi nhận cuộc gọi. Ngoài ra, bạn có thể điều chỉnh để có thể xuất xung khi nhận tin nhắn SMS.

DTR pin activates/deactivates chế độ sleep. Đặt chân này ở mức CAO sẽ đưa module vào trạng thái ngủ, disable giao tiếp UART. Kéo chân xuống mức THẤP sẽ đánh thức hoạt động của module.

MIC± là 2 kết nối microphone.

SPK± là 2 kết nối của loa.

6. Nối dây giữa module SIM800L với Arduino

Chúng ta không thể kết nối trực tiếp chân Rx trên module với chân TX của Arduino vì Arduino Uno sử dụng GPIO 5V trong khi module SIM800L sử dụng logic mức 3,3V và không chịu được mức 5V. Điều này có nghĩa là tín hiệu Tx đến từ Arduino Uno phải được giảm xuống còn 3,3V để không làm hỏng module SIM800L. Có một số cách để làm điều này nhưng cách dễ nhất là sử dụng một bộ chia áp bằng điện trở đơn giản. Một điện trở 10K giữa SIM800L Rx và Arduino D2, và 20K giữa SIM800L Rx và GND.

Dưới đây là 2 lựa chọn cấp nguồn dành cho module SIM800L

 

7. Arduino code – Sử dụng tập lệnh AT

Để gửi lệnh AT với module SIM800L, chúng ta sẽ sử dụng “Serial Monitor” trên Arduino IDE. Đoạn code dưới đây sẽ cho phép Arduino giao tiếp với module SIM800L trên serial monitor. Trước khi chúng ta đi sâu vào chi tiết mã, hãy kết nối Arduino của bạn với PC và upload đoạn code bên dưới vào Arduino.

Khi bạn mở serial monitor, hãy đảm bảo rằng cả hai tùy chọn NL & CR, được chọn!

#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM800L
  mySerial.begin(9600);

  Serial.println("Initializing...");
  delay(1000);

  mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();
  mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
  updateSerial();
  mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
  updateSerial();
  mySerial.println("AT+CREG?"); //Check whether it has registered in the network
  updateSerial();
}

void loop()
{
  updateSerial();
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

Đoạn code bắt đầu từ việc include Software Serial và khởi tạo chân TX và RX để kết nối module SIM 800L:

#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2

Trong hàm setup(), chúng ta sẽ khởi tạo kết nối serial giữa Arduino và SIM800L với baud rate là 9600.

//Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
//Begin serial communication with Arduino and SIM800L
  mySerial.begin(9600);

Bây giờ chúng ta đã thiết lập các kết nối cơ bản, chúng ta sẽ giao tiếp với module SIM800L bằng cách gửi các lệnh AT.

  • AT – Đây là lệnh AT cơ bản nhất. Nó cũng khởi chạy Auto-baud Waster. Nếu nó hoạt động, bạn sẽ thấy ký tự AT lặp lại và sau đó là OK, nó muốn nói với bạn rằng nó OK và nó hiểu chính xác những gì bạn đã gửi! Sau đó, bạn có thể gửi một số lệnh để truy vấn module và nhận thông tin như sau:
  • AT + CSQ – Kiểm tra cường độ tín hiệu ’- Số đầu tiên là cường độ dB, nó phải cao hơn 5. Cao hơn là tốt hơn. Tất nhiên nó phụ thuộc vào ăng-ten và vị trí của module!
  • AT + CCID – lấy số thẻ SIM – kiểm tra xem thẻ SIM có ổn không và bạn có thể xác minh số của thẻ SIM.
  mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();
  mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
  updateSerial();
  mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
  updateSerial();
  mySerial.println("AT+CREG?"); //Check whether it has registered in the network
  updateSerial();

Nguồn: https://lastminuteengineers.com/sim800l-gsm-module-arduino-tutorial/

Các bạn có thể xem thêm các module khác tại:

https://www.abcarduino.com/category/module-arduino-va-thu-vien/