Hướng Dẫn Sử Dụng Module 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.

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();

Trong đoạn code trên, chúng ta gọi hàm tùy chỉnh được gọi là updateSerial (). Nó sẽ liên tục chờ đợi dữ liệu đầu vào nào từ serial monitor và gửi nó đến module SIM800L thông qua chân D2 (Rx của module). Nó cũng liên tục đọc chân D3 (Tx của module) nếu module SIM800L có bất kỳ phản hồi nào.

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 } }

Bạn sẽ nhìn thấy điều tương tự như thế này trên serial monitor của bạn:

Bây giờ bạn có thể tự do gửi bất kỳ lệnh nào thông qua serial monitor:

  • ATI – Nhận tên module và sửa đổi.
  • AT + COPS? – Kiểm tra xem bạn có kết nối với mạng không.
  • AT + COPS =? – Trả về danh sách các nhà mạng đang có.
  • AT + CBC – sẽ trả về trạng thái pin lipo. Số thứ hai là % pin (trong trường hợp này là 93%) và số thứ ba là điện áp thực tế tính bằng mV (trong trường hợp này là 3.877 V)

Bạn có thể xem thêm các lệnh AT khác bằng cách tham khảo:

Danh sách tập lệnh AT

8. Arduino code – Gửi tin nhắn SMS

Đoạn code chương trình Arduino sau sẽ gửi SMS đến bất kỳ số điện thoại nào bạn muốn. Trước khi nạp code, bạn cần nhập số điện thoại. Tìm kiếm chuỗi +ZZxxxxxxxxxx và thay thế ZZ bằng +84(mã vùng Việt Nam) và xxxxxxxxxx bằng số điện thoại 10 chữ số.

#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+CMGF=1"); // Configuring TEXT mode updateSerial(); mySerial.println("AT+CMGS=\"+ZZxxxxxxxxxx\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms updateSerial(); mySerial.print("Last Minute Engineers | lastminuteengineers.com"); //text content updateSerial(); mySerial.write(26); } void loop() { } 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 trên gần giống như trước đây ngoại trừ đoạn mã dưới đây:

AT + CMGF = 1 – Chọn định dạng tin nhắn SMS dưới dạng văn bản. Định dạng mặc định là Đơn vị dữ liệu giao thức (PDU)

AT + CMGS = + ZZxxxxxxxxxx – Gửi SMS đến số điện thoại được chỉ định. Tin nhắn văn bản được nhập theo bảng mã ASCII. Và cuối cùng bạn cần ký tự ‘Ctrl+z’ tương ứng với 26 DEC (số 26 theo mã thập phân) (1AHEX) để kết thúc tin nhắn.

 

mySerial.println("AT+CMGF=1"); // Configuring TEXT mode updateSerial(); mySerial.println("AT+CMGS=\"+ZZxxxxxxxxxx\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms updateSerial(); mySerial.print("Last Minute Engineers | lastminuteengineers.com"); //text content updateSerial(); mySerial.write(26);

Vòng lặp được giữ trống vì chúng ta chỉ muốn gửi SMS một lần. Nếu bạn muốn gửi SMS thêm một lần nữa, chỉ cần nhấn phím RESET trên Arduino của bạn. Dưới đây là ảnh chụp màn hình cho thấy SMS được gửi từ module GSM SIM800L.

9. Arduino code – Đọc tin nhắn SMS

Bây giờ chúng ta sẽ viết chương trình Arduino dùng để đọc các tin nhắn SMS đến. Đoạn code này rất hữu ích khi bạn cần kích hoạt một hành động khi nhận được một SMS cụ thể. Ví dụ, khi Arduino nhận được SMS, bạn có thể bật hoặc tắt rơle.

#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+CMGF=1"); // Configuring TEXT mode updateSerial(); mySerial.println("AT+CNMI=1,2,0,0,0"); // Decides how newly arrived SMS messages should be handled 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 cũng tương tự như trước đây ngoại trừ đoạn mã dưới đây:

AT + CMGF = 1 – Chọn định dạng tin nhắn SMS dưới dạng văn bản. Định dạng mặc định là Đơn vị dữ liệu giao thức (PDU)

AT + CNMI = 1,2,0,0,0 – chỉ định cách xử lý tin nhắn SMS mới đến. Bằng cách này, bạn có thể thông báo cho module SIM800L để chuyển trực tiếp các tin nhắn SMS mới đến PC hoặc lưu chúng trong bộ lưu trữ tin nhắn và sau đó thông báo cho PC về vị trí của chúng trong bộ lưu trữ tin nhắn.

Phản hồi của nó bắt đầu bằng + CMT: Tất cả các trường trong phản hồi được phân tách bằng dấu phẩy với trường đầu tiên là số điện thoại. Trường thứ hai là tên của người gửi SMS. Trường thứ ba là dấu thời gian trong khi trường thứ tư là tin nhắn đến.

mySerial.println("AT+CMGF=1"); // Configuring TEXT mode updateSerial(); mySerial.println("AT+CNMI=1,2,0,0,0"); // Decides how newly arrived SMS messages should be handled updateSerial();

Trong trường hợp này chúng ta vẫn giữ hàm loop() vì chúng ta cần nhận trực tiếp tin nhắn điện thoại mỗi khi có tin nhắn mới đến.

10. Mở rộng bộ nhớ đệm Arduino

Nếu tin nhắn quá dài, bạn có thể sẽ nhận được nó với một số ký tự bị thiếu. Đây không phải là do lỗi của Arduino mà là bộ đệm nhận SoftwareSerial của bạn bị quá tải và Arduino không đọc đủ nhanh từ bộ nhớ đệm.

Giải pháp đơn giản nhất cho vấn đề này là tăng kích thước của bộ nhớ đệm SoftwareSerial từ kích thước mặc định là 64 byte lên 256 byte.

Trên PC Windows, hãy truy cập C:\Program Files (x86) -> Arduino -> hardware -> Arduino -> avr -> libraries -> SoftwareSerial (-> src cho phiên bản mới hơn của Arduino IDE) Mở SoftwareSerial.h và thay đổi dòng:

// RX buffer size
#define _SS_MAX_RX_BUFF 64

thành

// RX buffer size
#define _SS_MAX_RX_BUFF 256

Sau đó save file và mở Arduino IDE lại.

11. Arduino code – Gọi điện thoại

Đoạn code này rất hữu ích khi bạn muốn Arduino của bạn thực hiện cuộc gọi SOS trong trường hợp khẩn cấp như nhiệt độ bị vượt quá hoặc ai đó đột nhập vào nhà bạn.

Trước khi nạp code, bạn cần nhập số điện thoại. Tìm kiếm chuỗi ZZxxxxxxxxxx và thay thế ZZ bằng mã 84 và xxxxxxxxxx bằng số điện thoại 10 chữ số.

#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, i t will back to OK updateSerial(); mySerial.println("ATD+ +ZZxxxxxxxxxx;"); // change ZZ with country code and xxxxxxxxxxx with phone number to dial updateSerial(); delay(20000); // wait for 20 seconds... mySerial.println("ATH"); //hang up updateSerial(); } void loop() { } 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 } }

Để thực hiện cuộc gọi theo các lệnh AT đã được sử dụng:

ATD + + ZZxxxxxxxxxx; – Quay số được chỉ định. Dấu chấm phẩy (;) ở cuối phân tách chuỗi quay số thành nhiều lệnh quay số. Tất cả trừ số cuối cùng phải kết thúc bằng dấu chấm phẩy (;).

ATH – Cúp máy

  mySerial.println("ATD+ +ZZxxxxxxxxxx;"); //  change ZZ with country code and xxxxxxxxxxx with phone number to dial
  updateSerial();
  delay(20000); // wait for 20 seconds...
  mySerial.println("ATH"); //hang up
  updateSerial();

Hình ảnh dưới đây là cuộc gọi của module SIM800L và điện thoại:

12. Arduino code – Nhận cuộc gọi

Nhận cuộc gọi không đòi hỏi bất kỳ đoạn code đặc biệt nào; bạn chỉ cần nhận dữ liệu từ module SIM800L. Tuy nhiên, bạn có thể thấy đoạn code này rất hữu ích, khi bạn cần kích hoạt một hành động khi nhận được một cuộc gọi từ số điện thoại cụ thể.

#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..."); } 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 } }

Cuộc gọi đến thường được biểu thị bằng ‘RING, trên serial monitor theo sau là số điện thoại và ID người gọi. Để chấp nhận / ngắt cuộc gọi theo các lệnh AT được sử dụng:

ATA – Chấp nhận cuộc gọi đến.

ATH – Cúp máy. Khi kết thúc cuộc gọi, nó sẽ gửi NO CARRIER trên màn hình nối tiếp cho biết cuộc gọi không thể kết nối.

Trên serial monitor hiển thị cuộc gọi nhận được bởi module SIM800L GSM:

 

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

THÔNG TIN LIÊN HỆ

🔈 Nhận làm bài tập điện tử miễn phí và tính phí.

🔈 Mỗi tuần sẽ nhận một bài tập miễn phí, đăng ký qua zalo: 0941344233

—————————————————————————————————-

          ✅ Bài tập môn 1: 200.000đ.

          ✅ Bài tập môn 2: 300.000đ

Các bài tập, đồ án khó hơn giá cả thương lượng!

NHẬN PHAY MẠCH IN LIÊN HỆ: 0912849051 & https://cardcv.net/Thuyen.technicians

⭕ Website: https://mualinhkien.vn

📺 Kênh Youtube: https://www.youtube.com/channel/UCTnJ8z_qIDQ4gSDlSRoRXug

🛒Shopee: https://shopee.vn/chotroivietnam

🆘 Group FaceBook: https://www.facebook.com/groups/tuhusupport

🏤 Địa chỉ: Số 2, ngõ 106 Lê Thanh Nghị, Bách Khoa, Hà Nội.

🕐 Thời gian làm việc tất cả các ngày trong tuần:

SÁNG: 8h05 – 12h30
CHIỀU: 14h – 18h
☎ Liên hệ: 0941344233 (SĐT & ZALO)

Rate this post

Viết một bình luận