Mục lục
- Giới thiệu về module Sim 800A
- Cách test module Sim 800A
- Phát triển ứng dụng điều khiển từ xa 4 trong 1
Cơ bản về module sim 800A
Mạch GSM GPRS Sim800A được phát triển từ module sim 900A tích hợp nguồn xung và ic đệm được thiết kế cho các ứng dụng cần độ bền và độ ổn định cao.
THÔNG SỐ KỸ THUẬT MẠCH GSM GPRS Sim800A
- Sử dụng module GSM GPRS Sim800A.
- Nguồn cấp đầu vào: 5 – 18VDC, lớn hơn 1A.
- Mức tín hiệu giao tiếp: TTL (3.3-5VDC) hoặc RS232.
- Tích hợp chuyển mức tín hiệu TTL Mosfet tốc độ cao.
- Tích hợp IC chuyển mức tín hiệu RS232 MAX232.
- Tích hợp nguồn xung với dòng cao cung cấp cho Sim800A.
- Sử dụng khe Micro Sim.
- Thiết kế mạch nhỏ gọn, bền bỉ, chống nhiễu.
Thứ tự các chân:
Header 1:
- VCC: Nguồn dương từ 5-18VDC, lớn hơn 1A
- GND: Mass, 0VDC.
- EN: Mặc định nối lên cao, chức năng dùng để khởi động (Enable) hoặc dừng hoạt động (Disable) Module Sim800, nếu nếu muốn module Sim800 dừng hoạt động bạn có thể nối chân này xuống âm GND (0VDC).
- 232R: Chân nhận tín hiệu RS232.
- 232T: Chân truyền tín hiệu RS232
- GND: Mass, 0VDC.
- RXD: Chân nhận tín hiệu TTL, chấp nhận mức 3.3 và 5VDC.
- TXD: Chân truyền tín hiệu TTL, chấp nhận mức 3.3 và 5VDC.
Header 2:
- BRXD: Thường không sử dụng, chân nhận tín hiệu, dùng để giao tiếp nạp Firmware cho Sim800, mức tín hiệu 3.3VDC.
- BTXD: Thường không sử dụng, chân truyền tín hiệu, dùng để giao tiếp nạp Firmware cho Sim800, mức tín hiệu 3.3VDC.
- GND: Mass, 0VDC.
- EPN: Ngõ ra loa Speaker âm
- EPP: Ngõ ra loa Speaker dương.
- MICP: Ngõ vào Micro dương.
Cách test module sim 800A
Kết nối module với máy tính để test
Dụng cụ:
- 1 x USB TTL ( ở đây mình dùng usb ttl cp2102)
- 1 x Nguồn 5V – 12VDC 1A ( ở đây mình dùng nguồn 12V 2A)
- 1 x Module Sim 800A
Phần mềm:
Link cài driver cp2102: https://drive.google.com/file/d/1GzW76cb2FZScGXKhsuXWyVeR4uZwlvy_/view
Link tải phần mềm tập lệnh: https://www.hw-group.com/software/hercules-setup-utility
Sơ đồ kết nối:
Tập lệnh: Tập lệnh đầy đủ: https://cdn-shop.adafruit.com/datasheets/sim800_series_at_command_manual_v1.01.pdf
Tập lệnh cơ bản:
- Lệnh chung:
Lệnh: AT<CR><LF>
Trả lời: OK
Mô tả : Kiểm tra đáp ứng , nếu trả về OK thì Module hoạt động
Lệnh: AT+IPR=[baud rate]<CR><LF>
Trả lời: OK
Mô tả : cài đặt tốc độ giao tiếp dữ liệu với module Sim800A, chỉ cài được các tốc độ sau
baud rate : 0 (auto), 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
2. Lệnh thực hiện cuộc gọi:
Lệnh: ATD[Số_điện_thoại];<CR><LF>
Trả lời: OK
Mô tả : Lệnh thực hiện cuộc gọi
Lệnh: ATH<CR><LF>
Trả lời: OK
Mô tả : Lệnh cúp máy
Lệnh: ATA<CR><LF>
Trả lời: OK
Mô tả : Lệnh thực hiện chấp nhận cuộc gọi
Nếu muốn hiển thị thông tin người gọi đến các bạn thực hiên thêm lệnh sau
Lệnh: AT+CLIP=1<CR><LF>
Trả lời: OK
3. Lệnh điều khiển tin nhắn
Lệnh: AT+CMGF=1<CR><LF>
Trả lời: OK
Mô tả : Lệnh đưa SMS về chế độ Text , phải có lệnh này mới gửi nhận tin nhắn dạng Text
Cấu trúc gửi tin nhắn
Lệnh: AT+CMGS=”Số_điện _thoại”<CR><LF>
Đợi đến khi có ký tự ‘>’ được gửi về
Gửi nội dụng tin nhắn : “NSHOP”
Gửi mã Ctrl+Z hay 0x1A để kết thúc nội dung và gửi tin nhắn
Trả lời : OK
Chú ý: sau mỗi lệnh các bạn thường thấy thực chất nó là hai mã điều khiển
tương ứng 0x0D(hexa)
tương ứng 0x0A(hexa)
Các bạn chỉ cần nhấn enter là có thể gửi
Kết nối với arduino
Sơ đồ đấu
Code test
#include "SIM900.h" #include <SoftwareSerial.h> SoftwareSerial SIM900(10, 11); String number1 = "0332177764";// nhap sdt vào đây void setup() { Serial.begin(9600); SIM900.begin(9600);//19200 delay(2000); // give time to log on to network. SIM900.print("AT+CLIP=1\r"); // test delay(1000); SIM900.println("AT"); } void loop() { // nhấn 1 để gọi, nhấn 2 để gửi tin nhắn if(Serial.available() >0) switch (Serial.read()) { case '1': Serial.println("dang goi"); call(); break; case '2': Serial.println("dang nhan tin"); message(); break; } } ////////////////////////////////////////////////////// void call() { //cú pháp gọi: ATD 0332177764 ;\r\n SIM900.print (F("ATD")); SIM900.print (number1); SIM900.print (F(";\r\n")); } ////////////////////////////////////////////////////// void message() { // cách gửi tin nhắn B1: AT+CMGF=1 >>> OK /////////////////////B2: AT+CMGS="0332177764" >>> TRA VE > >>> NHAP TIN NHAN >>> CTRL + Z de gui SIM900.println("AT+CMGF=1"); delay(1000); //Serial.println ("Set SMS Number"); SIM900.println("AT+CMGS=\"" + number1 + "\"\r"); delay(1000); String SMS = "NSHOP"; SIM900.println(SMS); delay(100); SIM900.println((char)26);// ASCII code of CTRL+Z delay(1000); }
Phát triển ứng dụng điều khiển từ xa 4 trong 1
– Ứng dụng điều khiển từ xa 4 trong 1 bao gồm
- Nhắn tin điều khiển
- Gọi điện điều khiển
- Điều khiển bằng remote
- Điều khiển bằng wifi
Trong đó 2 ứng dụng đầu dành cho những người ko rành về công nghệ, ứng dụng 3 nhanh gọn phạm vi thấp
ứng dụng 4 tiện lợi giành cho những người biết xài smartphone
Phần cứng cần thiết:
1 x Công tắc thông minh wifi Tuya 16A điều khiển từ xa
1 x Mạch GSM GPRS Sim800A (SIM900A Update)
1 x Arduino Nano V3.0 ATmega328P
1 x Module nguồn 5V 2A Loại 2A
1 x Mạch thu sóng RF 433Mhz học lệnh
1 x Module 1 Relay Với Opto Cách Ly Kích H/L (5VDC)
1 x Contactor
1 x Relay nhiệt https://nshopvn.com/product/relay-nhiet-chint-nxr-25-cho-contactor-nxc/?variant=74448
1 x Mạch chống nhiễu điện từ, bảo vệ tiếp điểm LC Technology
Nguyên lý hoạt động
- Trường hợp 1 Khi có cuộc gọi từ số điện thoại cài đặt gọi tới module sim sẽ giao tiếp với arduino tiến hành kích module relay 5v trong 2s > Module relay được kích sẽ bật nút bấm vật lý trên mạch Wifi Tuya làm thay đổi trạng thái của Tải máy bơm ( nếu đang bật sẽ chuyển sang tắt, nếu đang tắt sẽ chuyển sang bật)
- Trường hợp 2 tương tự TH1 khi tin nhắn “ON” được gửi từ số điện thoại cài đặt module sim sẽ giao tiếp với arduino tiến hành kích module relay 5v 2s > Module relay được kích sẽ bật nút vật lý trên mạch Wifi Tuya làm theo đổi trạng thái Tải máy bơm ( nếu đang bật sẽ chuyển sang tắt, nếu đang tắt sẽ chuyển sang bật)
- Trường hợp 3: Module thu rf được cài đặt nhấn nhả, khi có tín hiệu từ remote sẽ tiến hành bật relay > Module relay được kích sẽ bật nút vật lý trên mạch Wifi Tuya làm theo đổi trạng thái Tải máy bơm ( nếu đang bật sẽ chuyển sang tắt, nếu đang tắt sẽ chuyển sang bật)
- Trường hợp 4: Sử dụng chính app Tuya Smart hoặc Smart life kết nối với mạch Wifi Tuya điều khiển trực tiếp
Sơ đồ mạch điều khiển
Sơ đồ mạch Động lực
Code nạp vào arduino nano
#include "SIM900.h" #include <SoftwareSerial.h> char incomingByte; String inputString; char inchar; SoftwareSerial SIM900(3, 4);// 3-Tx, 4-Rx 11 12 int relay = 12; String number1 = "0378078760";// nhap sdt vào đây String number2 = "0909951121"; void setup() { Serial.begin(9600); SIM900.begin(9600);//19200 pinMode(relay, OUTPUT); // relay pinMode(8, OUTPUT); // den báo kết nối sim + arduino digitalWrite(relay, LOW); digitalWrite(8, LOW); delay(2000); // give time to log on to network. SIM900.print("AT+CLIP=1\r"); delay(1000); SIM900.println("AT"); delay(1000); Serial.println("Connecting..."); // kết nối //} Serial.println("Connected!"); SIM900.println("AT+CMGF=1"); // khởi động chức năng SMS delay(1000); SIM900.println("AT+CNMI=1,2,0,0,0"); delay(1000); SIM900.println("AT+CMGL=\"REC UNREAD\""); if(SIM900.available() >0)// kiểm tra xem đã kết nối với arduino chưa { if (inputString.indexOf("OK") == -1){ digitalWrite(8,HIGH); } else{ digitalWrite(8,LOW); } inputString = ""; } } void loop() { if(SIM900.available() >0) { delay(100); // Serial Buffer while(SIM900.available()){ incomingByte = SIM900.read(); inchar = incomingByte; inputString += incomingByte; } delay(10); Serial.println(inputString); inputString.toUpperCase(); if ((inputString.indexOf("OFF") > -1) ){ //thay tin nhắn tắt chỗ indexOf("ON")// nhan tin digitalWrite(relay,HIGH); delay(5000); digitalWrite(relay, LOW); } if ((inputString.indexOf("ON") > -1)){// thay tin nhắn bật chỗ indexOf("OFF") // nhan tin digitalWrite(relay,HIGH); delay(5000); digitalWrite(relay, LOW); } if ( (inputString.indexOf(number1) > -1)||(inputString.indexOf(number2) > -1)) // Goi dien { doSomething(); } //Delete Messages if (inputString.indexOf("OK") == -1){ SIM900.println("AT+CMGDA=\"DEL ALL\""); delay(1000);} inputString = ""; delay(1000); } //while(SIM900.available()){ } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void doSomething() { delay(2000); SIM900.println("ATH"); // thực hiện lệnh cúp máy digitalWrite(relay,HIGH); delay(5000); digitalWrite(relay, LOW); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void message() { // cách gửi tin nhắn B1: AT+CMGF=1 >>> OK /////////////////////B2: AT+CMGS="0332177764" >>> TRA VE > >>> NHAP TIN NHAN >>> CTRL + Z de gui SIM900.println("AT+CMGF=1"); delay(1000); //Serial.println ("Set SMS Number"); SIM900.println("AT+CMGS=\"" + number1 + "\"\r"); delay(1000); String SMS = "da bat may bom"; SIM900.println(SMS); delay(100); SIM900.println((char)26);// ASCII code of CTRL+Z delay(1000); }
Video test thực tế
đang cập nhật