GSM sim800L volanie ked stlacim tlacidlo

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
lojzo2000
Příspěvky: 17
Registrován: 18 črc 2020, 10:56
Reputation: 0

GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od lojzo2000 » 31 říj 2020, 10:50

Ahojte som tu novy a nedari sa mi spravit jednoducha konfiguracia podreboval by som ked jednim tlacidlom uskutocnit hovor na 2-3 telefone cisla najpr jedno potom druhe ale nedari sa mi skombinovat tieto dva kody sms nepotrebujem potrebujem iba cisto hovor ..samotne kody funguju dobre ale dokopy ich nevime dat

// Tlacitko
#include <SoftwareSerial.h>
SoftwareSerial sim(10, 11);
int tlacPin = 2; // číslo pinu připojeného tlačítka
int ledPin = 3; // číslo pinu připojené LED diody

int stavTlac = 0; // proměnná stavu tlačítka

void setup() {
// nastavení LED jako výstup
pinMode(ledPin, OUTPUT);
// nastavení tlačítka jako vstup
pinMode(tlacPin, INPUT);
}

void loop() {
// načtení stavu tlačítka a uložení do proměnné
stavTlac = digitalRead(tlacPin);

// kontrola stisku tlačítka
// pokud je stisknuto tlačítko, stav je HIGH - log. 1
if (stavTlac == HIGH) {
// zapne LED diodu
digitalWrite(ledPin, HIGH);
}
// pokud není stisknuto tlačítko, stav je LOW - log. 0
else {
// vypne LED diodu
digitalWrite(ledPin, LOW);
}
}

#include <SoftwareSerial.h>
SoftwareSerial sim(10, 11);
int _timeout;
String _buffer;
String number = "+cislo"; //-> change with your number
void setup() {
delay(7000); //delay for 7 seconds to make sure the modules get the signal
Serial.begin(9600);
_buffer.reserve(50);
Serial.println("Sistem Started...");
sim.begin(9600);
delay(1000);
Serial.println("Type s to send an SMS, r to receive an SMS, and c to make a call");
}
void loop() {
if (Serial.available() > 0)
switch (Serial.read())
{
case 's':
SendMessage();
break;
case 'r':
RecieveMessage();
break;
case 'c':
callNumber();
break;
}
if (sim.available() > 0)
Serial.write(sim.read());
}
void SendMessage()
{
//Serial.println ("Sending Message");
sim.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000);
//Serial.println ("Set SMS Number");
sim.println("AT+CMGS=\"" + number + "\"\r"); //Mobile phone number to send message
delay(1000);
String SMS = "Hello, how are you?";
sim.println(SMS);
delay(100);
sim.println((char)26);// ASCII code of CTRL+Z
delay(1000);
_buffer = _readSerial();
}
void RecieveMessage()
{
Serial.println ("SIM800L Read an SMS");
delay (1000);
sim.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS
delay(1000);
Serial.write ("Unread Message done");
}
String _readSerial() {
_timeout = 0;
while (!sim.available() && _timeout < 12000 )
{
delay(13);
_timeout++;
}
if (sim.available()) {
return sim.readString();
}
}
void callNumber() {
sim.print (F("ATD"));
sim.print (number);
sim.print (F(";\r\n"));
_buffer = _readSerial();
Serial.println(_buffer);
}

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od pavel1tu » 31 říj 2020, 11:04

- 2 kody které jsi jen dal pod sebe - takto to nefunguje
- první kod podle stisku tlačítka rosvítí LED
- druhý kod podle zaslaného znaku přes Serial buď pošle SMS nebo telefonuje atd.

Co s tím ?
- kody nelze takto zkopírovat pod sebe
- začni prostudováním základů - struktura programu (deklarace proměnných, knihoven Setup(), Loop() ),
až toto pochopíš, stačí přečíst, můžeš začít "skládat" výsledný kod z několika jiných

Rádi ti tu pomůžeme

PS: nebo najít projekt "Arduino push to button call sim800L" nebo tak nějak (netlemte se ostatní, já jsem 50+ a učil jsem se jen rusky)

http://www.hobbyrobot.cz/wp-content/upl ... matora.pdf
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

lojzo2000
Příspěvky: 17
Registrován: 18 črc 2020, 10:56
Reputation: 0

Re: GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od lojzo2000 » 31 říj 2020, 11:12

viem ze to neni dobre to mal byt priklad zatlacenim zavolam hovor, hlad som priklady ale vecsina je na SMS ja to potrebujem pre babku k posteli ked zatlaci zvoncek zavola to mne ostatnim na telefon bohuzial nevidi tak sa snazim tu najst niekoho kto mi stym pomoze

Nasiel som funkcne posielanie SMS zmenil som mySerial.println("AT+CMGS=\"+421901100314\"\r"); na mySerial.println("ATD+421901100314;");
tak vyzera to ze to funguje ale nedari sa mi pridat este 1 cislo ked nezdvihnem hovor alebo ho nezrusim aby zavolal na dalsie cislo

Kód: Vybrat vše

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
char msg;
char call;
int buttonpin=2;
void setup()
{
  pinMode(buttonpin,INPUT);
  mySerial.begin(9600);   // Setting the baud rate of GSM Module  
  Serial.begin(9600);// Setting the baud rate of Serial Monitor (Arduino)
  Serial.println("press button");
}

void loop()
{
  if(digitalRead(buttonpin)==HIGH)
  {
    
    Serial.println("button pressed");
    delay(2000);
    SendMessage();  
  }

 if (mySerial.available()>0)
 Serial.write(mySerial.read());
}

void SendMessage()
{
  mySerial.println("AT+CMGF=1");    //Sets the GSM Module in Text Mode
  delay(1000);  // Delay of 1000 milli seconds or 1 second

  mySerial.println("AT+CMGS=\"+421901100314\"\r"); // Replace x with mobile number
  delay(1000);

  mySerial.println("LOW CGPA DUDE....");// The SMS text you want to send
  delay(100);
   mySerial.println((char)26);// ASCII code of CTRL+Z
  delay(1000);
}
Tu mam vysledny kod co mam donho doplnit aby ked nedvihnem hovor volal na dlasie cislo? ale ked hovor zrusim tak nevolaj na dalsie cislo?

Kód: Vybrat vše

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
char msg;
char call;
int buttonpin=2;
void setup()
{
  pinMode(buttonpin,INPUT);
  mySerial.begin(9600);   // Setting the baud rate of GSM Module  
  Serial.begin(9600);// Setting the baud rate of Serial Monitor (Arduino)
  Serial.println("press button");
}

void loop()
{
  if(digitalRead(buttonpin)==HIGH)
  {
    
    Serial.println("button pressed");
    delay(2000);
    zavolaj();  
  }

 if (mySerial.available()>0)
 Serial.write(mySerial.read());
}

void zavolaj()
{

  mySerial.println("ATD+421901100314;");


}
Naposledy upravil(a) lojzo2000 dne 31 říj 2020, 11:40, celkem upraveno 1 x.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od pavel1tu » 31 říj 2020, 11:38

ked zdvihnem hovor zavolaj na dalsie cislo
myšleno
- volám na první číslo
- nikdo to nezdvihá

- na základě tohoto se po nějaké době hovor zruší a zavolá na jioné číslo ?
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

lojzo2000
Příspěvky: 17
Registrován: 18 črc 2020, 10:56
Reputation: 0

Re: GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od lojzo2000 » 31 říj 2020, 11:41

pavel1tu píše:
31 říj 2020, 11:38
ked zdvihnem hovor zavolaj na dalsie cislo
myšleno
- volám na první číslo
- nikdo to nezdvihá

- na základě tohoto se po nějaké době hovor zruší a zavolá na jioné číslo ?
Ano presne to potrenujem
respektive ked prve cislo zdvihne hovor alebo odmietne hovor(zrusi hovor prvi cislo) aby uz nevolal na dalsie čislo ak sa to da takto logicky spravit by to bolo super

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od pavel1tu » 31 říj 2020, 11:54

řeší se to pomocí milis()
hledejte "Arduino časové zpoždění" nebo tak nějak

omlouvám se, nemám teď čas - máme oběd a návštěvu

pokud nepomůže někdo jiný - večer se ozvu - je to jednoduché
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

RomanB
Příspěvky: 90
Registrován: 04 zář 2017, 14:28
Reputation: 0
Bydliště: Havířov

Re: GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od RomanB » 31 říj 2020, 13:45

Edituje si Lojzo své dotazy a vymazej si telefonní číslo z kódu. Ať tě nikdo neotravuje.

lojzo2000
Příspěvky: 17
Registrován: 18 črc 2020, 10:56
Reputation: 0

Re: GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od lojzo2000 » 31 říj 2020, 14:17

Tak sa mi to podarilo funguje to ale je to formou delay pomoci milis() mi to neslo vertifikovat ale cas sa moze lišit je to odhat 70 sekund a vola na dalsie tel.cislo
chcel by som to uprestnit ked v konzole pride -> BUSY alebo NO CARRIER
tak chcem aby uz na dalsie čislo nevolalo
ak pride -> NO ANSWER tak pokracuj a zavolaj na dalsie čislo

neviem ako napisat do kodu aby cital stav a nasledne podla stavu sa rozhodol ci zavola alebo uz nie

Kód: Vybrat vše

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
int hovor=2;
void setup()
{
  pinMode(poplach,INPUT);
  mySerial.begin(9600);   //  
  Serial.begin(9600);// 
  Serial.println("cakam na hovor");
 
}
void loop()
{
  if(digitalRead(hovor)==HIGH)
  {
    
    Serial.println("hovor spusteny");
    delay(1000);
    zavolaj1(); 
    delay(70000);
    zavolaj2();  
  }

 if (mySerial.available()>0)
 Serial.write(mySerial.read());
}

void zavolaj1()
{

  mySerial.println("ATD+123456;");
  
}  
void zavolaj2()
{

  mySerial.println("ATD+123456;");
delay(1000);  
}

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od pavel1tu » 01 lis 2020, 10:11

Tak s tímto asi neporadím, mám tu sice SIM800, ale bohužel se toho na mne navalilo moc.

Jen upozorním, že během toho delay() - Arduino nic nedělá, jakoby zamrzne na tom příkazu a jen časuje.
Proto se delay() používá jen ve vyjímečných případech
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

lojzo2000
Příspěvky: 17
Registrován: 18 črc 2020, 10:56
Reputation: 0

Re: GSM sim800L volanie ked stlacim tlacidlo

Příspěvek od lojzo2000 » 01 lis 2020, 14:09

pavel1tu píše:
01 lis 2020, 10:11
Tak s tímto asi neporadím, mám tu sice SIM800, ale bohužel se toho na mne navalilo moc.

Jen upozorním, že během toho delay() - Arduino nic nedělá, jakoby zamrzne na tom příkazu a jen časuje.
Proto se delay() používá jen ve vyjímečných případech
aha tak to som nevedel a ako mam pouzit vtom kode mesto delay pouzit milis() skusal som rozne manualy ale neviem to sfunkcnit to milis()

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů