code
نسخ
اقتباس
عرض
تنزيل
/*
Call a specific number using TTGO ESP32 SIM800L
*/
#include "Adafruit_FONA.h"
#define SIM800L_RX 27
#define SIM800L_TX 26
#define SIM800L_PWRKEY 4
#define SIM800L_RST 5
#define SIM800L_POWER 23
HardwareSerial *sim800lSerial = &Serial1;
Adafruit_FONA sim800l = Adafruit_FONA(SIM800L_PWRKEY);
#define LED_BLUE 13
#define RELAY 14
const char phone_number[] = "+97056839xxxx"; // رقم الهاتف مع مفتاح الدولة
void setup() {
pinMode(LED_BLUE, OUTPUT);
pinMode(RELAY, OUTPUT);
pinMode(SIM800L_POWER, OUTPUT);
digitalWrite(LED_BLUE, HIGH);
digitalWrite(SIM800L_POWER, HIGH);
Serial.begin(115200);
Serial.println(F("ESP32 with GSM SIM800L"));
Serial.println(F("Initializing....(May take more than 10 seconds)"));
delay(10000);
sim800lSerial->begin(4800, SERIAL_8N1, SIM800L_TX, SIM800L_RX);
if (!sim800l.begin(*sim800lSerial)) {
Serial.println(F("Couldn't find GSM SIM800L"));
while (1);
}
Serial.println(F("GSM SIM800L is OK"));
char imei[16] = {0};
if (sim800l.getIMEI(imei)) {
Serial.print("SIM card IMEI: "); Serial.println(imei);
}
// التأكد من أن المودم متصل بالشبكة
Serial.println(F("Checking network status..."));
uint8_t n = sim800l.getNetworkStatus();
if (n == 1) {
Serial.println(F("Registered to home network"));
} else if (n == 5) {
Serial.println(F("Registered to roaming network"));
} else {
Serial.println(F("Not registered to network, check SIM card"));
return;
}
// إجراء مكالمة
makeCall();
}
void loop() {
// لا حاجة لتنفيذ شيء في الـ loop حاليًا
}
void makeCall() {
Serial.print(F("Calling: "));
Serial.println(phone_number);
String atCommand = "ATD" + String(phone_number) + ";";
sim800lSerial->println(atCommand);
delay(20000); // الانتظار لبعض الوقت قبل قطع الاتصال
sim800lSerial->println("ATH"); // إنهاء المكالمة
Serial.println(F("Call ended"));
}