Hallo,
ein ESP32-SIM800L soll automatisiert eine SMS versenden.
Angeschlossen ist das SIM800 derzeit über ein USB-Kabel an einen PC,
programmiert wird es über eine Arduino-IDE 1.8.13.
Das Teil ist im Netz eingebucht, es kann Telefonverbindungen herstellen
und auch SMS empfangen, nur nicht, was es allein soll, SMS senden.
Das Problem ist,
1.) die Telefonnummer kann das Programm nicht richtig übertragen,
2.) die SMS im Textmode kann mein Programm nicht abschließen.
1 | void setup()
|
2 | {
|
3 | pinMode(SIM800L_POWER, OUTPUT);
|
4 | digitalWrite(SIM800L_POWER, HIGH);
|
5 | delay(4000); // zum Umschalten auf den seriellen Monitor
|
6 | Serial.begin(115200);
|
7 | Serial.println("ESP32+SIM800L SMS-Test");
|
8 | delay(10000);
|
9 | Serial2.println("AT+CMGF=1"); // Textmode aktivieren
|
10 | delay(1000);
|
11 | Serial2.begin(9600, SERIAL_8N1, SIM800L_TX, SIM800L_RX);
|
12 | Serial2.println("AT+CPIN=xxxx"); // PIN-Eingabe für das Netz von 1und1
|
13 | delay(10000); // genügend Zeit zum Einbuchen des SIM800
|
14 | Serial2.println("AT+CGATT?"); // ins Netz eingebucht? (Nachfrage unnötig!)
|
15 | delay(10000); Serial2.println("AT+CSMP=17,167,0,0"); // Parameter
|
16 | delay(1000);
|
17 | Serial2.println("AT+CMGF=1"); // Textmode
|
18 | delay(1000);
|
19 |
|
20 | >>> edit >>> hier beginnt das erste Problem:
|
21 |
|
22 | // Serial2.println("AT+CMGS=+49xxxxxxxx"); // Telefonnummer, Problem: wie eingeben?
|
23 | // delay(1000);
|
24 | // Serial2.println("Test-SMS vom SIM800L "); // SMS-Text
|
25 | // delay(1000);
|
26 | // Serial2.println((char)26); // ASCII code of CTRL+Z
|
27 | }
|
Das erste Problem ist, daß zur Eingabe der Telefonnummer vom SIM800
verlangt wird (mit "...")! Die "-Zeichen werden aber von Serial2.println
selbst benötigt und da darf auch keines zu viel sein. Läßt sich dafür
eine Lösung finden? Ich habe es mit ' und mit Klammern versucht, es
hilft nichts.
Das andere Problem ist der Abschluß der SMS, damit das SIM800 erkennt,
daß nun die SMS zu Ende ist und die Übertragung beginnen soll. Dazu wird
ein Ctrl-Z oder char(26) benötigt (und kein CR). Selbst, wenn ich über
den seriellen Monitor die Telefonnummer von Hand eingebe und
anschließend den SMS-Text, einen Abschluß mit Ctrl-Z schaffe ich nicht,
es bleibt offen, das SIM800 wartet und wartet.
Gibt es für das Programm mit den direkten AT-Befehlen eine Lösung? Ich
habe auch fertige Libraries (z.B. TinyGSM, wo alle cpp-Files fehlen)
probiert, aber da gibt es auch meistens irgendwelche Probleme.
AM liebsten wäre es mir, wenn man mein kleines übersichtliches Programm
ertüchtigen könnte.
Hat man da eine Chance?
VG
735knut
PS was ich als "mein Programm" bezeichnet habe, ist von einer
freundlichen Seele im Internet übernommen!