Hallo, ich hab ein kleines Problem mit mein Programm... Ich möchte mir gerne eine SMS senden wenn mein verwendeter Lichtsensor ein bestimmten Wert erreicht hat... Leider funktioniert es nicht. Wenn ich nur ein Programm auf mein Arduino lade was den Sensor auswertet, funktioniert es ohne Probleme. Auch wenn ich ein Programm lade das mir nur eine SMS schicken soll funktioniert es auch ohne Probleme. Wenn ich die Programme aber, wie angehängt, "miteinander verknüpfe", bekomme ich keine SMS. Das Modul (TC35) bucht sich noch nicht einmal mehr ein. Ich hab auch schon einen größeren Kondensator verbaut, da ich gelesen habe das es da gerne zu Problemen kommt. Auch ein vernünftiges Netzteil habe ich besorgt (5V, 2.5A Ausgang)... Langsam weiß ich mir keinen Rat mehr und hoffe auf Eure Hilfe... Hab ich da was falsches Programmiert?? Vielen Dank im voraus Mario
Gib mal die ganzen AT Befehl auf einem Display oder Terminal aus und schau dann, ob das Programm sich (ohne Modem) wie erwartet verhält.
Mario I. schrieb: > Hab ich da was falsches Programmiert?? So auf den ersten Blick stufe ich Dein Programm auf irgendwas zwischen "hanebüchener Schwachsinn" bis "bedenklich" ein. Das Prädikat "bedenklich" verteile ich, wenn der Code für ein "Leonardo" oder "Micro" Board sein soll. Das Prädikat "hanebüchener Schwachsinn" erfüllt der Code für Boards wie UNO, MEGA, MINI PRO, NANO und vergleichbare. So ganz möchte ich mich nicht festlegen, ohne das Board zu wissen, für das der Code verwendet werden soll.
Danke für die Hinweise... Ich habe festgestellt wenn ich im Setup die Zeile "Serial.begin(9600);" auskommentiere, bekomme ich die SMS wenn der Sensor den Wert erreicht. Aber wenn ich ihn nicht initialisiere, wie bekommt er denn die werte und wie kann ich das überprüfen?? Danke... Bin erst am Anfang meiner "Programmier Karriere"
@Jürgen S. würde gern "bedenklich" bzw "hanebüchener Schwachsinn" gegen fachwissen tauschen. ich stecke noch ganz in den kinderschuhen was das programmieren angeht. das programm stellt nur ein test bzw einen anfang da, um zu probieren was man mit den gps modul alles machen kann... wie müsste man deiner meinung nach das programm umschreiben?? (final möchte ich damit später ein garagentor steuern... es handelt sich um ein arduino mega board)
Mario I. schrieb: > es handelt sich um ein arduino mega board Beim MEGA Board bilden Pin-0 und -1 die serielle Schnittstelle "Serial". Der hanebüchene Schwachsinn liegt darin: Du kannst an denselben Pins auf dem Board nicht noch eine zweite "SoftwareSerial" Schnittstelle definieren. Das beißt sich bis hin zum Kurzschluss auf den seriellen Leitungen, wenn Du Dein GSM-Modul da anschließt und den Sketch so laufen läßt. Auf einem MEGA-Board lasse SoftwareSerial weg und nimm stattdessen eine der drei übrigen HardwareSerial-Schnittstellen, die auf dem MEGA vorhanden sind, z.B. Serial1. Pins für Serial1 siehe RX1/TX1 auf dem Board. Dein Programm umgeschrieben auf Serial1 würde dann so aussehen:
1 | // für Arduino MEGA-Board
|
2 | int ledPin=13; |
3 | int sensorwert=0; |
4 | int i=0; |
5 | |
6 | void setup() |
7 | {
|
8 | Serial.begin(9600); // "Serieller Monitor" auf dem PC |
9 | Serial1.begin(19200); // verbunden mit GSM-Modem |
10 | delay(2000); |
11 | pinMode(ledPin,OUTPUT); |
12 | }
|
13 | |
14 | void loop() |
15 | {
|
16 | sensorwert = analogRead (A0); |
17 | Serial.println(sensorwert); |
18 | |
19 | if(sensorwert >= 800 && i == 0) |
20 | {
|
21 | sendTextMessage(); |
22 | i=1; |
23 | }
|
24 | delay(4000); |
25 | }
|
26 | void sendTextMessage() |
27 | {
|
28 | Serial1.print("AT+CPIN=xxxx\r"); |
29 | delay (6000); |
30 | |
31 | Serial1.print("AT+CMGF=1\r"); |
32 | delay(4000); |
33 | |
34 | Serial1.print("AT+CMGS=0179xxxxxxx\r"); |
35 | delay(4000); |
36 | digitalWrite(ledPin,HIGH); //nur zur kontrolle ob programm in fkt springt |
37 | Serial1.print("Licht ist an!"); |
38 | delay(100); |
39 | Serial1.print((char)26); |
40 | delay (4000); |
41 | }
|
Keine Ahnung, ob das funktioniert. Aber der hanebüchene Schwachsinn, mit der Kurzschluss-Doppelbelegung von Pin-0 und -1 ist schon mal weg. Und der "serielle Monitor" ist dann auch funktionstüchtig, z.B. um Debug-Ausgaben über Serial zum PC zu senden. P.S.: Wenn Du in der loop alle ca. zweiundzwanzig Sekunden eine SMS senden möchtest, weil ein Wert überschritten ist, brauchst Du eine SMS-Flat, sonst wird es teuer!
Vielen Dank für die schnelle Antwort!! Ich werde es Morgen sofort probieren!! Das könnte es gewesen sein. Sorry für meine Anfängerfehler... Und, das Programm schickt nur eine sms wenn der Wert erstmalig überschritten wird, da i auf 1 gesetzt wird in der if abfrage wenn eine sms geschickt wird. ich weiß, ist auch quatsch, aber es dient nur zum austesten... danke nochmal!!
Mario I. schrieb: > Und, das Programm schickt nur eine sms wenn der Wert erstmalig > überschritten wird, da i auf 1 gesetzt wird in der if abfrage wenn eine > sms geschickt wird. Verstehe, also einmalig nach jedem Reset. Allerdings solltest Du berücksichtigen, dass das Board jedesmal nach dem Power-On, nach dem Hochladen eines Sketches und jedesmal beim Öffnen des Seriellen Monitors ein Reset macht.
@Jürgen S. vielen Dank!! Genau das war das Problem! Jetzt funktioniert es wie es soll...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.