Hi,
ich wollte eine Telefonansteuerung basteln - wofür spielt erstmal keine Rolle, denn dafür gibt’s schon fertige Sachen und bevor ich dann ausufere, sollte folgendes reichen:
Ich habe einen Uno zum Testen, später soll es ein Nano werden.
Für den Telefonempfang habe ich ein SIM800L v2.0 Modul bestellt.
Mit der Bibliothek GSMSim.h habe ich das alles auch soweit zum laufen bekommen:
#include <GSMSim.h>
#define RX 11
#define TX 10
#define RESET 12
#define BAUD 9600
/*
* Defaults => RX: 7 | TX: 8 | Reset: 2 | LED Pin: 13 | LED Flag: true | Baud Rate: 9600
* GSMSim gsm;
* GSMSim gsm(RX, TX);
* GSMSim gsm(RX, TX, RESET);
* GSMSim gsm(RX, TX, RESET, LED_PIN, LED_FLAG);
*/
GSMSim gsm(RX, TX, RESET);
void setup() {
Serial.begin(9600);
gsm.start(9600);
pinMode(13, OUTPUT);
delay(1000);
}
void loop() {
int call;
call=gsm.callStatus();
switch (call){
case 0:
Serial.println("Kein Anruf");
break;
case 3:
Serial.println("Eingehender Anruf");
delay(5000);
gsm.callAnswer();
break;
case 4:
Serial.println("Aktiver Anruf");
delay(5000);
gsm.callHangoff();
break;
case 99:
Serial.println("Keine Antwort");
break;
}
delay(1000);
}
Per Serial Monitor klappt die Ausgabe einwandfrei. Ich rufe an, nach 5 Sekunden geht das Modul “ans Telefon” und legt nach weiteren 5 Sekunden wieder auf.
Nun kann ja aber jetzt jeder Hans und Franz, oder auch irgendwelche Meinungsforschungsinstitute dort anrufen.
Um das zu verhindern wollte ich gerne einige Nummern als Abgleich im Sketch hinterlegen und wenn dann der Anrufer einer dieser Nummern hat, soll der Arduino seine Sachen schalten.
Das bekomme ich jetzt nicht hin - wirklich was dazu finden tue ich nicht.
Sketche mit anderen Bibliotheken oder welche, die rein seriell funktionieren, welche dann, AT codes verwenden, habe ich auch schon durch - gefühlt alle…ohne Erfolg.
Da ich da nun zwei Tage dran geknabbert habe, wollte ich es anders lösen:
Anrufen, Arduino geht ran, ich wähle eine mehrstellige PIN auf dem Ziffernfeld, der Arduino erkennt es und macht seine Schaltungen, wenn die PIN stimmt. Wenn nicht, wird aufgelegt.
Soweit ich das verstanden hab geht das mit diesem DTMF System - aber das habe ich auch nicht hinbekommen.
Bei einem Sketch, wo einer mehrere Servos genau mit dieser Funktion ansteuert, spuckt der Monitor mir nur “DTMF Code: 773” aus - egal, was ich mache.
Nun weiß ich nicht mehr weiter - im Grunde funktioniert das Empfangen der Anrufe ja einwandfrei, nur die Nummern- oder Tastendruckerkennung klappt nicht, bzw. ich finde dazu einfach nichts.
Hat da jemand was parat?
MfG
Jannomag