Chuẩn bị
- Mạch arduino, esp8266 hoặc esp32,… có hỗ trợ Arduino IDE
- Module SIM A7680C, A7670C, A7600C, SIM7600CE
- Mạch hạ áp LM2596 hoặc tương đương (Đối với A7680C không tích hợp mạch hạ áp)
- Nguồn 6-15V 10W
- Jack DC
- Dây Bus và dây điện
- SIM điện thoại di động có thể gọi và gửi tin nhắn
- Phần mềm Arduino IDE
Các module 4G thông dụng xem tại đây: Tổng hợp các loại module 4G 5G NB-IoT thông dụng
Kết nối
- Đối với module A7680C (Kết nối tương tự SIM800L)
- Đối với các dòng SIM A7670C, A7600C, SIM7600CE không cần mạch LM2596 hạ áp và có thể kết nối trực tiếp nguồn vào với module SIM (module SIM đã tích hợp mạch hạ áp DCDC)
Lập Trình:
#include <HardwareSerial.h>
#define simSerial Serial2
#define MCU_SIM_BAUDRATE 115200
#define MCU_SIM_TX_PIN 17
#define MCU_SIM_RX_PIN 16
#define MCU_SIM_EN_PIN 15
// Please update number before test
#define PHONE_NUMBER "+8498*****"
void sim_at_wait()
{
delay(100);
while (simSerial.available()) {
Serial.write(simSerial.read());
}
}
bool sim_at_cmd(String cmd){
simSerial.println(cmd);
sim_at_wait();
return true;
}
bool sim_at_send(char c){
simSerial.write(c);
return true;
}
void sent_sms()
{
sim_at_cmd("AT+CMGF=1");
String temp = "AT+CMGS=\"";
temp += (String)PHONE_NUMBER;
temp += "\"";
sim_at_cmd(temp);
sim_at_cmd("ESP32-SIM7600X From linhkienthuduc.com");
// End charactor for SMS
sim_at_send(0x1A);
}
void call()
{
String temp = "ATD";
temp += PHONE_NUMBER;
temp += ";";
sim_at_cmd(temp);
delay(20000);
// Hang up
sim_at_cmd("ATH");
}
void setup()
{
/* Power enable */
pinMode(MCU_SIM_EN_PIN,OUTPUT);
digitalWrite(MCU_SIM_EN_PIN,LOW);
delay(20);
Serial.begin(115200);
Serial.println("\n\n\n\n-----------------------\nSystem started!!!!");
// Delay 8s for power on
delay(8000);
simSerial.begin(MCU_SIM_BAUDRATE, SERIAL_8N1, MCU_SIM_RX_PIN, MCU_SIM_TX_PIN);
// Check AT Command
sim_at_cmd("AT");
// Product infor
sim_at_cmd("ATI");
// Check SIM Slot
sim_at_cmd("AT+CPIN?");
// Check Signal Quality
sim_at_cmd("AT+CSQ");
sim_at_cmd("AT+CIMI");
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);
sent_sms();
// Delay 5s
delay(5000);
call();
}
void loop()
{
if (Serial.available()){
char c = Serial.read();
simSerial.write(c);
}
sim_at_wait();
}