INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Anruf tätigen
24.03.2020, 22:56
Beitrag #73
RE: Arduino Anruf tätigen
Bei // dein Code: erste Nummer wählen // dein Code: zweite Nummer wählen kommt ja jeweils nur rein


mySerial.println("ATD+4967564675547;"); // Anruf1
mySerial.println("ATD+496756l676698;"); // Anruf2
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.03.2020, 23:01 (Dieser Beitrag wurde zuletzt bearbeitet: 24.03.2020 23:04 von hotsystems.)
Beitrag #74
RE: Arduino Anruf tätigen
(24.03.2020 22:56)Matze1 schrieb:  Bei // dein Code: erste Nummer wählen // dein Code: zweite Nummer wählen kommt ja jeweils nur rein

mySerial.println("ATD+4967564675547;"); // Anruf1
mySerial.println("ATD+496756l676698;"); // Anruf2

Nicht nur.
Immer der komplette Block, den du auch bei der ersten Nummer stehen hast.
Anders funktioniert der Anruf nicht.

Edit:
Zur Funktion reicht die von dir geschriebene Zeile.

Der Rest ist ja nur eine Funktionskontrolle.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.03.2020, 23:21
Beitrag #75
RE: Arduino Anruf tätigen
so also

Code:
// in der Definition
bool firstNumber = true;
//=======================

// in sendPhoneCall
if (firstNumber)
{
  callNumber1();
  firstNumber = false;
}
else
{
  callNumber2();
  firstNumber = true;
}

void callNumber1(void)
{
  {
  Serial.println("Calling through GSM Modem");
  delay(1000);
  mySerial.println("ATD+49123456789;");                               // ATDxxxxxxxxxx; semicolon should be at the last ;AT command that follows UART protocol;
  Serial.println("Called ATD+49123456789");
  delay(1000);
  if (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
}

void callNumber2(void)
{
  {
  Serial.println("Calling through GSM Modem");
  delay(1000);
  mySerial.println("ATD+49123477878;");                               // ATDxxxxxxxxxx; semicolon should be at the last ;AT command that follows UART protocol;
  Serial.println("Called ATD+49123477878");
  delay(1000);
  if (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.03.2020, 09:45
Beitrag #76
RE: Arduino Anruf tätigen
(24.03.2020 23:21)Matze1 schrieb:  so also

Naja, das kommt dem schon langsam....sehr langsam näher.

Was das hier macht, sehe ich aber noch nicht.
Wie schon beschrieben, gehört das in den Bereich Definition, also (fast) ganz nach oben.
Code:
// in der Definition
bool firstNumber = true;
//=======================

Das in den alten Bereich (Funktion) "sendPhoneCall", der ja dann leer ist.
Code:
// in sendPhoneCall
if (firstNumber)
{
  callNumber1();
  firstNumber = false;
}
else
{
  callNumber2();
  firstNumber = true;
}

Und so sollte das danach komplett aussehen (ungetestet aber compilierbar):
Code:
/*  GSM-Steuerung
    Einwahl im Setup und ständiger Anruf

*/

#include <SimpleTimer.h>                                            // https://github.com/jfturcot/SimpleTimer
#include <SoftwareSerial.h>                                         // https://github.com/PaulStoffregen/SoftwareSerial

byte gsmSwitchOn = 9;

unsigned long waitTime = 30000;                                     // Pause zwischen den Anrufen
unsigned long loginTime = 12000;                                    // Pause zum einbuchen

// in der Definition
bool firstNumber = true;

SoftwareSerial mySerial(7, 8);                                      // RX, TX SoftwareSerial

SimpleTimer timer;                                                  // Timer zur Zeitsteuerung

void setup()
{
  Serial.begin(9600);
  mySerial.begin(9600);                                             //setting baudrate at 9600;

  pinMode(gsmSwitchOn, OUTPUT);

  timer.setInterval(waitTime, sendPhoneCall);                       // alle xx sek. Anruf senden

  gsmLogon();                                                       // GSM einbuchen
  delay(loginTime);
}

void loop(void)
{
  timer.run();                                                      // simpleTimer starten
}

void gsmLogon(void)                                                 // Im Netz einbuchen
{
  Serial.println("GSM Modem logon");
  digitalWrite(gsmSwitchOn, LOW);
  delay(2000);
  digitalWrite(gsmSwitchOn, HIGH);
  delay(3000);
}


void sendPhoneCall(void)                                                // Starte den Anruf (alle 30 sek)
{
  if (firstNumber)                                                  // nur die erste Nummer
  {
    callNumber1();
    firstNumber = false;                                            // erste Nummer wurde gewählt
  }
  else
  {
    callNumber2();                                                  // nur die zweite Nummer
    firstNumber = true;                                             // zweite Nummer wurde gewählt
  }
}


void callNumber1(void)
{
  // dein Code: erste Nummer wählen
  Serial.println("Calling through GSM Modem");
  delay(1000);
  mySerial.println("ATD+49123456789;");
  // ATDxxxxxxxxxx; semicolon should be at the last ;AT command that follows UART protocol;
  Serial.println("Called ATD+49123456789");
  delay(1000);
  if (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
}


void callNumber2(void)
{
  // dein Code: zweite Nummer wählen
  Serial.println("Calling through GSM Modem");
  delay(1000);
  mySerial.println("ATD+49987654321;");                              
  Serial.println("Called ATD+49987654321");
  delay(1000);
  if (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
}

Und jetzt lies dir das genau durch und lerne daraus.

Anders wird das nix.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.03.2020, 22:57
Beitrag #77
RE: Arduino Anruf tätigen
Viele Danke, es funktioniert soweit.
Ich habe aber noch bei void callNumber1 und void callNumber2 eingefügt um die Verbindung wieder zu beenden. Außerdem habe ich den delay angepasst.

Code:
mySerial.println("ATH"); // WICHTIG! - die Verbindung wieder beenden.
  Serial.println("Anruf an +49172486030543 wurde beendet");

Code:
void callNumber1(void)
{
  // dein Code: erste Nummer wählen
  Serial.println("Calling through GSM Modem");
  delay(1000);
  mySerial.println("ATD+491578343434;");
  // ATDxxxxxxxxxx; semicolon should be at the last ;AT command that follows UART protocol;
  Serial.println("Called ATD+491576675655");
  delay(20000);
  if (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
   mySerial.println("ATH"); // Verbindung wieder beenden.
  Serial.println("Anruf an +491555654544 wurde beendet");
}


void callNumber2(void)
{
  // dein Code: zweite Nummer wählen
  Serial.println("Calling through GSM Modem");
  delay(1000);
  mySerial.println("ATD+4934679876543;");                              
  Serial.println("Called ATD+4934553794");
  delay(20000);
  if (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
   mySerial.println("ATH"); // Verbindung wieder beenden.
  Serial.println("Anruf an +491475473933 wurde beendet");
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.03.2020, 23:01
Beitrag #78
RE: Arduino Anruf tätigen
Na prima, dann hat es ja jetzt geklappt.

Klar das da noch was gefehlt hat. Ich habe ja auch nur deinen Rufcode so genutzt.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2020, 22:09 (Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2020 22:13 von Matze1.)
Beitrag #79
RE: Arduino Anruf tätigen
Ich habe es jetzt versucht noch etwas zu optimieren und mich dafür entschieden den Anruf über Schalteingang HIGH zu starten um die Zeit zu verkürzten bis der Ruf abgesendet wird. 30s Ist zu lange bis der erste Anruf raus ging!
Jetzt ist es so wenn ich den Schalter (pin2 HIGH) nicht betätige fährt das GSM Modul hoch, bucht sich ein und es es kommt immer wieder Anruf an …...wird beendet.
Wenn ich den Schalter betätige geht ein Ruf raus und wird beendet und startet neu. Das ist ja auch ok so.
Was habe ich falsch gemacht das nicht immer Anruf an... wurde beendet kommt wenn ich noch gar kein Anruf gestartet habe über den Schalter.

mein Versuch...
Code:
/*  GSM-Steuerung
    Einwahl im Setup und ständiger Anruf

*/

#include <SimpleTimer.h>                                            // https://github.com/jfturcot/SimpleTimer
#include <SoftwareSerial.h>                                         // https://github.com/PaulStoffregen/SoftwareSerial

byte gsmSwitchOn = 9;

unsigned long waitTime = 20000;                                     // Pause zwischen den Anrufen
unsigned long loginTime = 22000;                                    // Pause zum einbuchen

SoftwareSerial mySerial(7, 8);                                      // RX, TX SoftwareSerial

SimpleTimer timer;                                                  // Timer zur Zeitsteuerung

void setup()
{
  Serial.begin(9600);
  mySerial.begin(9600);                                             //setting baudrate at 9600;

  pinMode(gsmSwitchOn, OUTPUT);
pinMode(2, INPUT);
  timer.setInterval(waitTime, sendPhoneCall);                       // alle xx sek. Anruf senden

  gsmLogon();                                                       // GSM einbuchen
  delay(loginTime);
}

void loop()
{
  timer.run();                                              // simpleTimer starten
}

void gsmLogon(void)
{
  Serial.println("GSM Modem logon");
  digitalWrite(gsmSwitchOn, LOW);
  delay(2000);
  digitalWrite(gsmSwitchOn, HIGH);
  delay(3000);
}


void sendPhoneCall()
{
if (digitalRead(2) == HIGH)
  {
Serial.println("Calling through GSM Modem");
  delay(1000);
  mySerial.println("ATD+491123456789;");
  Serial.println("Called ATD+491123456789");
  delay(10000);
  if (mySerial.available())
  
    Serial.write(mySerial.read());

}
mySerial.println("ATH"); // WICHTIG! - die Verbindung wieder beenden.
  Serial.println("Anruf an +491123456789 wurde beendet");
}
[code]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.03.2020, 22:24
Beitrag #80
RE: Arduino Anruf tätigen
Sorry, aber ich verstehe deine Beschreibung und den Ablauf nicht.
Auch nicht, warum das jetzt mit dem Taster soll.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Wert von einem Arduino zu einem zweiten Arduino senden Thorsten_S 9 3.248 14.10.2019 14:48
Letzter Beitrag: Thorsten_S
  Firmata (Daten senden an den Arduino und empfangen vom Arduino) comfan 6 6.008 29.04.2017 14:29
Letzter Beitrag: hotsystems
  Automatischer Anruf bei anschalten des Arduino DarthX 32 7.470 19.04.2017 01:28
Letzter Beitrag: georg01
  Statusabfrage per Anruf dahans 5 2.122 16.04.2016 13:58
Letzter Beitrag: rkuehle
  Arduino Ethernet mit USB 2 Serial Converter/Welche Einstellungen im Arduino-Sketch lociluke 1 4.956 05.05.2015 13:40
Letzter Beitrag: Bitklopfer
  Arduino Mega-Projekt mit EEPROM auf Arduino Due portieren Foto-Ralf 17 13.289 16.03.2015 12:06
Letzter Beitrag: Foto-Ralf

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste