20-12-2020, 17:13
Witam,
Proszę Was o pomoc w rozwiązaniu mojego problemu.
Mianowice, chciałem zrobić prosty alarm wysyłający SMS.
Jednak jak się okazało używając różnych skryptów, nawet przykładów z arduino, moduł nic nie robi.
Sim800l ma odrębne zasilanie (widać na foto) napięcie ustawione jest na ok. 4,1V.
Arduino zasilam przez USB.
Próbowałem na Arduino Uno i Arduino Nano i mam wrażenie że jest problem z komunikacją przez RX TX.
Sposób podłączenia widać na zamieszczonych fotkach.
do komunikacji używałem biblioteki <SoftwareSerial.h> i różnych portów 10,11 ; 2,3.
Cały czas się nic nie dzieje
Jeżeli chodzi o przykładowe kody:
Drugi przykład:
Zrobiłem już kod do alarmu, ale nie działa.
Powiem szczerze, że jestem już blisko poddania się, próbowałem na rózne sposoby i cały czas nic.
Bardzo proszę o radę.
Proszę Was o pomoc w rozwiązaniu mojego problemu.
Mianowice, chciałem zrobić prosty alarm wysyłający SMS.
Jednak jak się okazało używając różnych skryptów, nawet przykładów z arduino, moduł nic nie robi.
Sim800l ma odrębne zasilanie (widać na foto) napięcie ustawione jest na ok. 4,1V.
Arduino zasilam przez USB.
Próbowałem na Arduino Uno i Arduino Nano i mam wrażenie że jest problem z komunikacją przez RX TX.
Sposób podłączenia widać na zamieszczonych fotkach.
do komunikacji używałem biblioteki <SoftwareSerial.h> i różnych portów 10,11 ; 2,3.
Cały czas się nic nie dzieje
Jeżeli chodzi o przykładowe kody:
Kod:
#include <SoftwareSerial.h>
SoftwareSerial telefon(10, 11); //piny do których podłączamy moduł telefonu TX/RX
char*numery[2]={"+48881946105","+48881946103"};
int i=0;
void setup() {
pinMode(7, INPUT_PULLUP); //przycisk
telefon.begin(9600);
}
void loop(){
//if (digitalRead(7) == LOW){ //jeżeli wciśnięto przycisk
for(i=0;i<2;i++)
telefon.write("AT+CMGF=1\r\n"); //przejście w tryb SMS
delay(150);
telefon.write("AT+CMGS=\"+48881946111"); //nr odbiorcy
delay(150);
telefon.write(numery[i]);
telefon.write("\"\r\n");
delay(150);
telefon.write("ALARM ALARM ALARM\r\n");//treść sms'a
delay(150);
telefon.write((char)26); //koniec wiadomości
delay(150);
//}
}
Drugi przykład:
Kod:
#include <SoftwareSerial.h>
SoftwareSerial sim(10, 11);
String number = "+48881946904"; // +880 is the country code
void setup() {
Serial.begin(9600);
Serial.println("Wait few seconds...");
delay(5000);
Serial.println("Sistem Started...");
sim.begin(9600);
delay(1000);
Serial.println("Type c to make a call and s to send an SMS");
}
void loop() {
if (Serial.available() > 0)
switch (Serial.read())
{
case 'c':
callNumber();
break;
case 's':
SendMessage();
break;
}
if (sim.available() > 0)
Serial.write(sim.read());
}
void SendMessage()
{
sim.println("AT+CMGF=1");
delay(1000);
sim.println("AT+CMGS=\"" + number + "\"\r");
delay(1000);
String SMS = "Hi Razib, How are you?";
sim.println(SMS);
delay(100);
sim.println((char)26);
delay(1000);
}
void callNumber() {
sim.print (F("ATD"));
sim.print (number);
sim.print (F(";\r\n"));
}
Zrobiłem już kod do alarmu, ale nie działa.
Kod:
#include <SoftwareSerial.h>
//piny na których jest podłączona komunikacja z modułem GSM
SoftwareSerial gsm800(11, 12);
int czujnik = 2;
void setup() {
Serial.begin(9600);
//definiujemy PIN, gdzie podłączamy czuję ruchu - nie wszystkie złącza potrafią wybudzić urządzenie
pinMode(czujnik, INPUT);
//definiujemy przerwanie, obsługujące alarm
//attachInterrupt(digitalPinToInterrupt(2),alarm,RISING);
while (!Serial);
gsm800.begin(9600);
delay(100);
// Jeśli używasz blokady karty SIM, poniższa komenda ją odblokuje
// gsm800.println("AT+CPIN=\"xxxx\"");
// delay(1000);
gsm800.write("AT+CMGF=1\r\n");
delay(100);
//wpisujemy numer telefonu pod który nasze urządzenie ma wysyłaś SMS
gsm800.write("AT+CMGS=\"+48506380405\"\r\n");
delay(100);
//treść wiadomości podczas startu systemu, ma na celu zweryfikowanie czy całość działa poprawnie
gsm800.write("START SYSTEMU");
delay(100);
gsm800.write((char)26);
delay(100);
}
void alarm() {
gsm800.write("AT+CMGF=1\r\n");
delay(1000);
//wpisujemy numer telefonu pod który nasze urządzenie ma wysyłaś SMS
gsm800.write("AT+CMGS=\"+48506380405\"\r\n");
delay(1000);
//treść wiadomości w przypadku alarmu
gsm800.write("ALARM W GARAŻU");
delay(1000);
gsm800.write((char)26);
delay(1000);
gsm800.write("AT+ATD=\"+48506380405\"\r\n");
delay(15000);
gsm800.write("AT+ATH");
}
void loop() {
if (digitalRead(czujnik) == HIGH)
{
alarm();
}
delay(5000);
}
Powiem szczerze, że jestem już blisko poddania się, próbowałem na rózne sposoby i cały czas nic.
Bardzo proszę o radę.