Hướng dẫn sử dụng module sim 800l

Chuẩn bị:

1. mạch arduino Uno/ Nano

2. Module sim800l

3. Mạch hạ áp LM2596

4. Nguồn 9-12V 2A

5. Jack DC

6. Dây bus hoặc dây điện

7. Sim điện thoại di động còn tài khoản và còn hoạt động

8. Phần mềm Arduino IDE

Kết nối:

Hướng dẫn sử dụng module sim 800l

Lập Trình:

include <SoftwareSerial.h>//ban quyen code linhkienht.com

SoftwareSerial GSMSerial(2,3); // RX, TX

String SDT = "0353156868";// số điện thoại này của Shop LINH KIỆN HÀ TĨNH // bạn phải thay số điện thoại này bằng sđt của bạn

int sms;

void init_sim800() { delay(18000); GSMSerial.println("AT");delay(1500);// ;KIEM TRA DUONG TRUYEN GSMSerial.println("AT+CMGF=1"); delay(1500);/// DINH DANG DU LIEU KIEU TEXT GSMSerial.println("AT+CNMI=2,2,0,0,0"); delay(1500);// THIET LAP THONG BAO CHO TRUYEN NHAN GSMSerial.println("AT+CSAS"); delay(1500);//LUU THIET LAP }

void setup() { sms=0; GSMSerial.begin(9600); init_sim800();

}

void loop() {

if(sms==0) {

Gsm_MakeSMS("LINH KIEN HA TINH XIN CHAO BAN!"); sms=1;// giá trị này giúp việc gửi tn chỉ diễn ra 1 lần, bạn có thể tùy tỉnh }

}

void Gsm_MakeSMS(String comment){

GSMSerial.print("AT+CMGS=\""); //gui tin nhan GSMSerial.print(SDT); GSMSerial.print("\"\r\n");delay(3000);

GSMSerial.print(comment); GSMSerial.print((char)26); // Gui Ctrl+Z hay 26 de ket thuc noi dung tin nhan va gui tin di delay(5000); }

Ngày 31/05/2022 08:13:45 / Lượt xem: 2921 / Người đăng: biendt


Hướng dẫn sử dụng module sim 800l

SIM800 và SIM900 là hai module GSM giống nhau tính năng cơ bản : Băng tần (GSM850, EGSM900, DCS1800, PCS1900), Dữ liệu (SMS, GPRS, FM), giao tiếp với chíp điều khiển (Nối tiếp AT)...Nhưng với SIM800 cải tiến mới thì hỗ trợ thêm một số tính năng hỗ trợ Bluetooth và các lệnh AT cho FM/Bluetooth, cải thiện tín hiệu, giá thành rẻ.

Do vậy trong phạm vi bài viết này đề cập chủ yếu đến SIM800 series.

P1 - CƠ BẢN VỀ MODULE SIM VÀ CÁC BƯỚC CHUẨN BỊ

Hướng dẫn sử dụng module sim 800l

Giới thiệu về module SIM800

Những dự án 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 di động là giải pháp tối ưu nhất vì chi phí rẻ, không phụ thuộc khoảng cách và độ ổn định cao. Với module SIM800 / SIM900 kết hợp với mạch xử lý arduino uno, STM8, STM32,… hoặc kết hợp với mạch wifi ESP12/ESP32 để tận dụng sức mạnh các bạn có thể linh hoạt 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ị, bộ thu thập dữ liệu cảm biến, các hệ thống điều khiển thiết bị từ xa qua điện thoại, sms makerting,… Ở phạm vị bài viết này cá nhân mình không để cập nhiều đến tính năng cũng như ứng dụng của module sim800 ( phiên bản cũ là sim900) mà tập trung vào các hướng dẫn chi tiết nhất để các bạn mới nghiên cứu về module này có một cách tiếp cận nhanh nhất, cũng như xử lý các lỗi thường gặp khi dùng module sim.

Tại sao lại là module SIM800?

Có lẽ chắc nhiều bạn cũng sẽ thắc mắc vì sao thường thấy các shop bán nhiều module SIM800A, SIM800C, SIM800L, SIM800H,.. mà ít thấy bán các module sim của các hãng khác như Quectel M95, AI thinker A6, A9, … – Về mức độ phổ biến thì có lẽ dòng module SIM800/900 của SIMCOM là nổi trội nhất, rất nhiều bài viết hướng dẫn, video demo – Code mẫu cho arduino cũng như một số dòng vi điều khiển khác rất nhiều trên internet – Giá thành tương đối rẻ, thiết kế phần cứng đơn giản, nhiều nguồn tài liệu tham khảo – Và quan trọng là tập lệnh điều khiển ( AT command ) cho dòng SIMCOM là tương đối đơn giản nhất nên các bạn mới bắt đầu có thể làm chủ một cách nhanh và dễ dàng nhất. Nếu chỉ dừng lại ở mức độ điều khiển nghe/gọi và nhắn tin SMS thì các dòng module SIM đều gần như nhau nên có thể dùng chung tập lệnh. Nhưng nếu bạn làm các ứng dụng liên quan đến kết nối server, ftp, sử dụng các giao thức http, mqtt, … thì có thể nhận thấy rõ về độ phức tạp của các dòng module sim khác.

Tóm lại là đối với các bạn mới làm quen thì nên bắt đầu với dòng SIMCOM, nếu đã làm chủ được và bắt đầu triển khai các dự án lớn thì nên chuyển qua các module SIM khác như Quectel để có giá thành tốt hơn cũng như sự hỗ trợ tối đa từ hãng.

Chuẩn bị gì khi bắt đầu với module sim800A?

Có thể đây là câu hỏi hơi thừa, nhưng mình vẫn đề cập để biết đâu được một số bạn lại cần tới nó vì đơn giản thừa vẫn hơn là thiếu thông tin – Nếu bạn chuẩn bị mua module sim về nghiên cứu thì bạn nên chọn mua những module thuộc dòng SIM800, SIM800A. Còn 2 dòng module sim800C và SIM800L do được lược bỏ 1 số chức năng về phần cứng nên có thể bạn sẽ gặp đôi chút rắc rối. Nhưng nếu bạn đã lỡ mua rồi thì không sao đâu nhé, cứ yên tâm sử dụng , có gặp lỗi thì từ từ giải quyết nó thôi. – Nên chọn những module phần cứng có hỗ trợ sẵn thiết kế mạch nguồn hạ áp và anten ngoài. Bạn sẽ gặp chút rắc rối về mạch nguồn nếu sử dụng các module ko có hạ áp mà chỉ ra chân nhé. Bởi vì đa số module sim đều dùng điện áp từ 3.4V-4.4V( và khuyến cáo nên dùng là 3.8V ) mà nguồn này thì không thông dụng và chúng ta lại phải sử dụng thêm mạch hạ áp rời. – Chuẩn bị mạch cấp nguồn tốt , khuyên dùng với mạch có ngõ ra từ 2A trở lên. Thực tế thì module sim chỉ cần tối đa cỡ 500mA/4V thôi nhưng đa số các mạch nguồn đều không đảm bảo đủ công suất. và khi khởi động cũng tốn khá nhiều nguồn nên chúng ta nên cấp dư hơn nhiều cái nó cần để đảm bảo hoạt động trơn tru.

- Với các bạn sử dụng module sim có sẵn mạch hạ áp thì cứ sử dụng đúng thông số đầu vào trên mạch là ok. Thông thường đều hỗ trợ với nguồn 12V/2A hoặc 5V/2A.

- Với các mạch chỉ ra chân và không có sẵn mạch nguồn, nếu bạn có sẵn nguồn cấp 5V thì nên dùng mạch hạ áp LDO MIC29302, nếu bạn có nguồn 9V,12V hoặc 24V thì nên sử dụng mạch hạ áp LM2596-ADJ ( nên chỉnh áp ra trước khi cấp vào mạch sim).

- Một số module sim sử dụng diode hạ áp từ 5V xuống 4V3 để nuôi mạch thì bạn nên lưu ý cấp đúng nguồn 5V cho loại này, tốt nhất nên sử dụng mạch LM2596 hạ áp xuống 5V để nuôi mạch, và nên mắc thêm tụ bù 1000uF để đảm bảo hoạt động ổn định.

–Nên chọn thẻ sim của nhà mạng Viettel hoặc Vinaphone. Đôi khi ở một số nơi vùng sâu vùng xa hoặc ở nơi có sóng di động kém thì việc lựa chọn nhà mạng cũng giúp bạn hạn chế lỗi không đáng có. Một số nhà mạng như vietnamobile khi ở dùng ở vùng xa ( mình đã thử ở Cần Giờ ) thì sóng rất kém nên hạy bị tình trạng reset. Khi này module tiêu thụ nguồn khá nhiều nên nếu nguồn cấp không ổn định sẽ xảy ra tình trạng không nhận sim.

Hướng dẫn sử dụng module sim 800l

Bo mạch arduino UNO tích SIM800 và mạch hạ áp là sự lựa chọn tối ưu cho các bạn mới làm quen về sim mà ko cần quan tâm nhiều đến phần cứng.

Các bước kiểm tra module sim như thế nào?

  • Đầu tiên, luôn là việc kiểm tra nguồn cấp trước khi cấp vào module sim
  • Kiểm tra chiều của thẻ sim xem đã đúng với khe sim chưa
  • Kiểm tra xem đã gắn anten hay chưa
  • Nếu module có chân PWK ( chân kích hoạt module) hoặc chân EN bạn nên nối chân này với GND để đảm bảo module có thể hoạt động. Bạn nên xem kỹ hướng dẫn sử dụng chân PWK từ nhà bán hàng, tùy thuộc module sẽ có cách đấu nối khác nhau.
  • Cấp nguồn và kiểm tra tín hiệu đèn led NETLIGHT ( STATUS trên module sim)

Hướng dẫn sử dụng module sim 800l

  • Theo như hướng dẫn thì nếu led tắt: module không hoạt động
  • Nếu sáng 64ms, tắt 800ms: chưa đăng ký được mạng ( chưa nhận sim )
  • Sáng 64ms, tắt 3000ms: mạch hoạt động tốt
  • Sáng 64ms , tắt 300s: đã kết nối internet GPRS

Hướng dẫn sử dụng module sim 800l

Đèn LED trạng thái của module SIM

Xử lý như thế nào nếu module sim không hoạt động

Nếu như module sim không hoạt động vì một số lý do nào đó, hãy kiên nhẫn bởi vì đa số các bạn đều gặp lỗi ngay lần đầu sử dụng ( đó là lý do mình viết bài này ) – Kiểm tra lại các bước ở trên mà mình đã phân tích và hướng dẫn. Tùy thuộc vào mỗi module khác nhau và các sử dụng sẽ gặp các lỗi khác nhau nhưng hầu hết đều gặp lỗi như sau:

  • Nguồn cấp không đủ: nên chọn nguồn bên ngoài từ 2A trở lên, dây nguồn chọn loại lõi dày, dẫn điện tốt. Không nên sử dụng dây bus tín hiệu để cấp nguồn
  • Nhiều bạn sử dụng nguồn trực tiếp từ Laptop / PC nhưng máy này chạy máy khác lại không. Đơn giản bởi vì mỗi laptop/PC có main nguồn khác nhau nên không phải máy tính nào cũng đảm bảo đủ nguồn cấp, và ko nên sử dụng cable USB để cấp nguồn quá dài.
  • Kiểm tra lại chiều thẻ sim và thẻ sim xem còn hoạt động hay không
  • Cấp nguồn , đợi khoảng 30s-1 phút và thực hiện cuộc gọi đến thẻ sim gắn trên module xem có đổ chuông hay không. Nếu đổ chuông là mạch hoạt động tốt, nếu thuê bao hoặc không nghe thấy gì thì nên kiên nhẫn thực hiện kiểm tra lại hoặc nếu xui là mạch bạn có thể hư hỏng rồi. Lúc này nên nhờ người rành hơn để kiểm tra xử lý nhé.

Như vậy về cơ bản là bạn đã có thể làm việc với module SIM rồi, tiếp theo sẽ là phần kiểm tra các tập lệnh cơ bản của module SIM và kết nối với vi điều khiển arduino để thực hiện một số project nho nhỏ. Mình sẽ kết thúc phần 1 tại đây và sẽ cập nhật phần tiếp theo trong vài ngày tới nhé, các bạn lưu lại link này để tham khảo khi cần

Hướng dẫn sử dụng module sim 800l

Bo mạch ESP32 kết hợp SIM800A

P2 - CÁC TẬP LỆNH CƠ BẢN

Thiết bị cần có:

Ở nội dung bài viết này, để đơn giản mình sẽ sử dụng các module tích hợp sẵn Vi điều khiển và module sim800 + mạch chuyển USB sang UART tích hợp. Nếu bạn không có module tích hợp này hoặc đang sử dụng module riêng rẽ thì cần kết nối phần cứng trước ( mình sẽ hướng dẫn ở phần sau nhé!) Các module sim khác về cơ bản tập lệnh test cũng tương tự .

Kit sử dụng:

  • Kit Arduino UNO GSM SIM800A
  • KIT Wifi ESP32 GSM SIM800A

Đầu tiên khi làm việc với module sim thì chúng ta cần kiểm tra các lệnh AT cơ bản để xem module sim có làm việc hay không, nếu không hoạt động thì việc test lệnh AT cơ bản có thể giúp bạn tìm ra lỗi. Nhiều bạn thường nạp code tải sẵn trên mạng nhưng hoài không chạy, hoặc là hôm trước chạy ok hết nhưng hôm sau lại không. Ở bài viết này mình sẽ chỉ cho các bạn cần kiểm tra những lệnh nào và các lỗi thường gặp

Thực hiện

Kiểm tra phần cứng và nạp chương trình test. Tùy theo phần cứng sử dụng bạn có thể nạp chương trình giao tiếp giữa MCU với module SIM, tham khảo chương trình bên dưới file đính kèm hoặc link tài liệu https://github.com/aht-lab/code-demo-esp32-sim800 ( Nếu sử dụng software UART ( board Arduino UNO, ESP8266) thì bạn khai báo dùng SoftwareSerial ).

define MODEM_RX 16

define MODEM_TX 17

define mySerial Serial2

void setup() { Serial.begin(115200); delay(500); mySerial.begin(115200); delay(500); mySerial.println(“ATI”); delay(100); mySerial.println(“AT+CSQ”); delay(100); mySerial.println(“AT+CIMI”); delay(100); } void loop() { if (mySerial.available()) { Serial.write(mySerial.read()); } if (Serial.available()) { char c = Serial.read(); Serial.write(c); mySerial.write(c); } }

Mở chương trình trên và nạp vào board mạch để kiểm tra nhé. Ở đây mình dùng board ESP32 – GSM SIM800A.

Hướng dẫn sử dụng module sim 800l

Nạp chương trình test bằng Serial command có sẵn trên Arduino IDE

Lưu ý. đây chỉ là code test truyền nhận tín hiệu UART từ Serial 2 sang Serial 1 để gửi lên PC. Khi dùng Serial command có sẵn trên Arduino IDE bạn phải chọn là Carriage return để có thể nhận tín hiệu gửi về từ module sim.

Hướng dẫn sử dụng module sim 800l

Ở đây có một số lệnh cơ bản bạn cần phải kiểm tra, và từ những lệnh này chúng ta hoàn toàn có thể kiểm tra được tình trạng board mạch có tốt hay không.

AT: Kiểm tra xem module có hoạt động hay không Trả về OK: module hoạt động OK Không phản hồi: thử nạp lại chương trình, nếu vẫn không được thì kiểm tra lại phần cứng xem đã đúng hay chưa, trên module đã có đèn báo chớp tắt hay chưa

ATI: Trả về thông tin phiên bản của module thường sẽ gửi về thông tin nhà sản xuất kèm phiên bản module đang sử dụng

AT+CSQ: kiểm tra cường độ sóng của module +CSQ: x,y : trả về x từ 0 đến 31 tỉ lệ với cường độ sóng. x càng cao thì chất lượng sóng của module càng tốt. Nếu x từ 18 trở xuống thì bạn nên kiểm tra lại anten nhé. Và có một đặc điểm là khi sóng càng yếu thì module càng phải hoạt động nhiều nên sẽ gây tổn hao năng lượng nhiều hơn.

AT+CIMI: kiểm tra imei của thẻ sim. Khác với lệnh AT+GSN sẽ tả về IMEI được in trên module sim thì lệnh AT+CIMI sẽ trả về imei của thẻ sim, mã số này là duy nhất nhà mạng dùng để nhận dạng sim ( không phải số seri in trên thẻ sim). Nếu trả về chuỗi số imei simcard thì cơ bản module sim của bạn đã làm việc ok rồi nhé. trả về ERROR: không giao tiếp được với thẻ sim. Bạn hãy kiểm tra xem đã gắn đúng chiều hay chưa, hoặc xem thẻ sim có đang hoạt động 2 chiều hay không nhé.

ATD0941732379; : đây là lệnh thực hiện gọi điện tới một số điện thoại với 0941732379 là số điện thoại cần gọi. trả về OK: đang thực hiện gọi, và module hoạt động ổn với đầy đủ tính năng trả về NO CARRIER: không gọi được, có thể do thẻ sim đã hết tiền hoặc số cần gọi không đúng trả về ERROR: thường là không giao tiếp được với thẻ sim, trong trường hợp này bạn kiểm tra lại với lệnh AT+CIMI, nếu vẫn không gọi được thì bạn nên kiểm tra lại nguồn cung cấp nhé. Khi gọi điện thì module tiêu thụ rất nhiều dòng nên có thể nguồn cấp của bạn không đủ thì module sẽ không thực hiện được.

Hướng dẫn sử dụng module sim 800l

Như vậy chỉ cần 3 lệnh cơ bản là AT(kiểm tra module), AT+CSQ(chất lượng sóng anten), AT+CIMI (giao tiếp thẻ sim) là bạn hoàn toàn có thể kiểm tra được tình trạng hoạt động của module sim800, và nếu moduel đang lỗi thì bạn cũng sẽ rất dễ kiểm tra là do đâu và khắc phục từng bước. Các tập lệnh khác để kiểm trã kỹ hơn về module sim bạn có thể tham khảo thêm tại file đính kèm.