I am using sim800L gsm module to recieve incoming call and get the DTMF tones from the caller and take an action according to the received number, i am searching for about 3 days and found nothing.
i use the AT+command "AT+DDET=1" to enable the DTMF tones capturer in the module but nothing happend i also tryied to change the modes and the delay times with this command "AT+DDET=1,1000,1,1" and found nothing
the module is responding to all my commands but in the call i didn't recieve any tones, (I RECIEVED ONLY ONE TONE BUT IT WAS WRONGE) and i couldn't do it again
i tested two sim cards from two different companys and tryied to call from multiple phones and found nothing
i don't know if it is a problem from the service provider or a phone problem or module problem
Yes i connected a microphone with the module and made a call between the module and another mobile phones and i was able to make a conversation with a clear voice
Sorry for the delay because of the timezone, i really apreaciate your effort
I tryied an android phone and an old nokia phone, but they were the same.
This is my code, i am communicating with the sim800 via Serial comunication and sending and receiving the commands via Serial monitor:
#include <SoftwareSerial.h>
#include <cstring>
#include <Arduino.h>
#define simTX D3
#define simRX D4
SoftwareSerial sim800l(simRX, simTX); //RX, TX
void setup() {
Serial.begin(115200); //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
sim800l.begin(115200); //Begin serial communication with Arduino and SIM800L
Serial.println("Initializing...");
delay(1000);
}
void loop() {
updateSerial();
}
//Start
void updateSerial() {
delay(500);
while (Serial.available())
{
sim800l.write(Serial.read());//Forward what Serial received to Software Serial Port
}
while(sim800l.available())
{
Serial.write(sim800l.read());//Forward what Software Serial received to Serial Port
}
}
//End
Here, the SIM800 is legacy, unusable. So, anyway.
From the smssolutions article in my post (No.4) --
ref. Sending DTMF tones using a GSM modem To send the actual DTMF code, you have to call this command for every digit sent. To send, for instance "*1234#", you have to send:
If it makes/takes calls then it's usable (where you are).
The smssolutions article made it seem like the keypad DTMF is not 'allowed' during a call, just for dialling out (curiously) - but that such was possible via AT/modem access.
I am not an expert.