Moin nochmal,
also ich habe nun getüftelt und getüftelt und folgenden festgestellt.
Wenn ich den AT-Command: "AT+CSQ" an das Modem sende bekomme ich fast
immer als Antwort 99,99. Dies bedeutet das das Modem kein Empfang hat!
Okay das würde erklären warum ab und an das SMS Senden nicht klappt.
Nun ist es aber so das ich den ganzen Ablauf noch nicht komplett
verstanden habe.
Ich habe jetzt selber eine kleine Bobliothek geschrieben in der ich als
erstes das Modem starte dann die SIM- Pin eingebe und dann den Empfang
prüfe!
Siehe Code:
1 | // #################
|
2 | // # Modem Starten #
|
3 | // #################
|
4 | int ModemBegin()
|
5 | {
|
6 | if (!MODEM.begin()) {
|
7 | return 0;
|
8 | }
|
9 | return 1;
|
10 | }
|
11 |
|
12 | // ####################################
|
13 | // # PIN Abfrage (9.1 Enter PIN +CPIN)#
|
14 | // ####################################
|
15 | int SimPinRequest()
|
16 | {
|
17 | String response;
|
18 | while (response == "")
|
19 | {
|
20 | MODEM.send("AT+CPIN?");
|
21 | MODEM.waitForResponse(1000, &response);
|
22 | delay(500);
|
23 | }
|
24 |
|
25 | if (response.endsWith("READY"))
|
26 | {
|
27 | Serial.println("Keine Pin nötig!");
|
28 | }
|
29 | else if (response.endsWith("SIM PIN"))
|
30 | {
|
31 | Serial.println("SIM PIN wird benötigt!");
|
32 | }
|
33 | else if (response.endsWith("SIM PUK"))
|
34 | {
|
35 | Serial.println("SIM PUK wird benötigt! Bitte Handy nutzen!");
|
36 | }
|
37 | else if (response.endsWith("SIM PIN2"))
|
38 | {
|
39 | Serial.println("SIM PIN2 wird benötigt!");
|
40 | }
|
41 | else if (response.endsWith("SIM PUK2"))
|
42 | {
|
43 | Serial.println("SIM PUK2 wird benötigt! Bitte Handy nutzen!");
|
44 | }
|
45 | else
|
46 | {
|
47 | Serial.println("Ein unbekannter Fehler ist aufgetreten! (SIM PIN)");
|
48 | }
|
49 | }
|
50 |
|
51 | // #####################
|
52 | // #Pin Eingabe #
|
53 | // #####################
|
54 | int EnterPin(String pin)
|
55 | {
|
56 | int response = -2;
|
57 | while (response == -2)
|
58 | {
|
59 | MODEM.sendf("AT+CPIN=\"%s\"", pin.c_str());
|
60 | response = MODEM.waitForResponse(1000);
|
61 | }
|
62 |
|
63 | if (response == OK)
|
64 | {
|
65 | Serial.println("Die SIM PIN ist OK!");
|
66 | }
|
67 | else
|
68 | {
|
69 | Serial.println("Die SIM PIN ist falsch!");
|
70 | }
|
71 | return response;
|
72 | }
|
73 |
|
74 | // #######################
|
75 | // # Empfang checken... #
|
76 | // #######################
|
77 | int CheckSignal()
|
78 | {
|
79 | int counter = 0;
|
80 | String response;
|
81 | while (counter < 10000)
|
82 | {
|
83 | MODEM.send("AT+CSQ");
|
84 | MODEM.waitForResponse(100, &response);
|
85 | delay(10);
|
86 | if (!response.startsWith("+CSQ: 99,99")) break;
|
87 | counter++;
|
88 | }
|
89 |
|
90 | Serial.println(response);
|
91 |
|
92 | if (!response.startsWith("+CSQ: 99,99"))
|
93 | {
|
94 | Serial.println("Signal OK!");
|
95 | }
|
96 | else
|
97 | {
|
98 | Serial.println("Signal Fehler!");
|
99 | }
|
100 | }
|
Die Antwort vom Modem sieht dann wie folgt aus:
AT+CSQ
+CSQ: 13,99
OK
Bedeutet also das die Connection "OK" ist wenn ich das Datenblatt
richtig deute.
Wenn ich jetzt aber als nächsten Schritt gucken will ob das Modem im
Netz registriert ist mit dem AT-Command: "AT+CREG?" bekomme ich immer
folgende Antwort:
AT+CREG?
+CREG: 0,0
OK
und das bedeutet das er nicht im Netz registriert ist und nicht sucht
richtig?
Außerdem hängt der Arduino gerne mal auf wenn er den Signalstatus
abfragt...
Hat eventuell nochjemand solche Probleme mit dem Teil? Ich finde für
knapp 80€ dürfte ich erwarten das der Kram funktioniert oder sehe ich da
was falsch? -.-
Der Aufbau ist nichts besonderes daher denke ich sollte das so schon
okay sein. Die LiPo Zelle ist voll geladen (gemessen ca. 4,2V) und lasst
euch nicht von den Aderfarben iritieren ich hatte keinen anderen Stecker
zur Verfügung.
Ich bin Euch für jede Hilfe dankbar!
Gruß Paddy :)