Module GSM GPRS sim800L có khả năng nhắn tin SMS, nghe, gọi, GPRS, … như một điện thoại nhưng có kích thước nhỏ nhất trong các loại module SIM (25mm x 22mm). Điều khiển module sử dụng bộ tập lệnh AT dễ dàng, chân kết nối dùng rào đực thông dụng (male header) chuẩn 100mil.
Thông số kỹ thuật:
- Nguồn cấp: 3.7 – 4.2VDC, có thể sử dụng với nguồn dòng thấp từ 500mAh trở lên (như cổng USB, nguồn từ Board Arduino). Nhưng khuyên các bạn nên dùng nguồn có dòng đủ 1A để đảm bảo mạch hoạt động ổn định.
- Khe cắm SIM: MICROSIM
- Dòng khi ở chế độ chờ: 10mA
- Dòng khi hoạt động: 100mA đến 1A.
- Hỗ trợ 4 băng tần phổ biến.
- Kích thước: 25mm x 22mm
Sơ đồ chân:
- VCC: Nguồn vào 3.7 – 4.2V.
- TXD: Chân truyền Uart TX.
- RXD: Chân nhận Uart RX.
- DTR : Chân UART DTR, thường không xài.
- SPKP, SPKN: ngõ ra âm thanh, nối với loa để phát âm thanh.
- MICP, MICN: ngõ vao âm thanh, phải gắn thêm Micro để thu âm thanh.
- Reset: Chân khởi động lại Sim800L (thường không xài).
- RING : báo có cuộc gọi đến
- GND: Chân Mass, cấp 0V.
Code tham khảo Arduino:
// VCC - 5v // GND - GND // Tx - 8 // Rx - 7 #include <SoftwareSerial.h> SoftwareSerial sim(10, 11); int _timeout; String _buffer; String number = "+84xxxxxxxx"; //-> thay số điện thoại vào đây void setup() { delay(7000); //delay for 7 seconds to make sure the modules get the signal Serial.begin(9600); _buffer.reserve(50); Serial.println("Sistem Started..."); sim.begin(9600); delay(1000); Serial.println("Type s to send an SMS, r to receive an SMS, and c to make a call"); } void loop() { if (Serial.available() > 0) switch (Serial.read()) { case 's': SendMessage(); break; case 'r': RecieveMessage(); break; case 'c': callNumber(); break; } if (sim.available() > 0) Serial.write(sim.read()); } void SendMessage() { //Serial.println ("Sending Message"); sim.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode delay(1000); //Serial.println ("Set SMS Number"); sim.println("AT+CMGS="" + number + ""r"); //Mobile phone number to send message delay(1000); String SMS = "Hello, how are you?"; sim.println(SMS); delay(100); sim.println((char)26);// ASCII code of CTRL+Z delay(1000); _buffer = _readSerial(); } void RecieveMessage() { Serial.println ("SIM800L Read an SMS"); delay (1000); sim.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS delay(1000); Serial.write ("Unread Message done"); } String _readSerial() { _timeout = 0; while (!sim.available() && _timeout < 12000 ) { delay(13); _timeout++; } if (sim.available()) { return sim.readString(); } } void callNumber() { sim.print (F("ATD")); sim.print (number); sim.print (F(";rn")); _buffer = _readSerial(); Serial.println(_buffer); }
Tài liệu tham khảo:
- Hướng Dẫn Sử Dụng Module SIM800L - Module GSM Nhắn Tin Và Gọi Điện Giá Rẻ
- Hướng Dẫn Lập Trình Module Sim800L Và Arduino
Video tham khảo: