Obsługa SONOFF na arduino z SIM800L

Chochlik371
Posts: 3
Joined: Sun Jul 07, 2019 12:08 pm

Post

Witam wszystkich! :)

Obecnie zajmuje się tworzeniem projektu do sterowania 2 przekaźnikami SONOFF na Arduino NANO opartego o komunikację GSM modułem SIM800L.

Do tej pory udało mi się ogarnąć komunikację I mogę "klikać" sobie przekaźnikiem w pętli głównej programu.
Mam dwa problemy:
Pierwszy dotyczy prozaicznej rzeczy jak reakcja przycisku na zbocze opadające i wykonanie podprogramu nie w czasie gdy przycisk jest cały czas wciśnięty, a tylko w momencie jego naciśnięcia (przyciski na pinach D2-D4). Pierwsze dwa służą do sterowania przekaźnikami 3 do sprawdzenia stanu.

Druga sprawa to jak obsłużyć protokół HTTPS na arduino tak, aby po odczycie przez link bezpośredni zaświecił mi diodę LED (np czerwoną gdy przekaźnik jest otwarty).

Zdoła ktoś pomóc biednemu studentowi? :oops:

Wstawiam kod, który udało mi się do tej pory urodzić w bólach...

Code: Select all


#include <SoftwareSerial.h>
#include <Wire.h>

SoftwareSerial mySerial(10, 11);            


void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  pinMode(2, INPUT); //wjazd
  //attachInterrupt(digitalPinToInterrupt(2),gsm_sendhttp,HIGH);
  delay(10000);
}

void loop() { // run over and over
  
    gsm_sendhttp(); //Start the GSM-Modul and start the transmisson
    delay(1000); //Wait one minute

}

void gsm_sendhttp() {
 
  mySerial.println("AT");
  runsl();//Print GSM Status an the Serial Output;
  delay(1000);
  mySerial.println("AT+SAPBR=3,1,Contype,GPRS");
  runsl();
  delay(1000);
  mySerial.println("AT+SAPBR=3,1,APN,internet");
  runsl();
 delay(100);
  mySerial.println("AT+SAPBR =1,1");
  runsl();
 delay(1000);
  mySerial.println("AT+HTTPINIT");
  runsl();
  delay(100);
  mySerial.println("AT+HTTPPARA =CID,1");
  runsl();
  delay(100);
  mySerial.println("AT+HTTPSSL =1");
  runsl();
 delay(100);
   mySerial.println("AT+HTTPPARA=URL,https://svr22.supla.org/direct/153/ZzNZwJkDjj/toggle");
  runsl();
  delay(100);
  mySerial.println("AT+HTTPPARA =REDIR,1");
  runsl();
 delay(100);
  mySerial.println("AT+HTTPACTION =2");
  runsl();
  delay(10000);
  mySerial.println("AT+HTTPTERM");
  runsl(); 
  delay(100);
   mySerial.println("AT+SAPBR =0,1");
  runsl();
  delay(2000);
}

//Print GSM Status
void runsl() {
  while (mySerial.available()) {
    Serial.write(mySerial.read());
  }

}
QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

Wcześniej tzn tu: https://forum.supla.org/viewtopic.php? ... 51#p44751

dostałeś ode mnie gotowe rozwiązanie. I co zaliczyłeś?
jak coś nie działa to włącz zasilanie.....
Chochlik371
Posts: 3
Joined: Sun Jul 07, 2019 12:08 pm

Post

QLQ wrote: Sun Dec 15, 2019 6:55 pm Wcześniej tzn tu: https://forum.supla.org/viewtopic.php? ... 51#p44751

dostałeś ode mnie gotowe rozwiązanie. I co zaliczyłeś?
Wzorowałem się na tym ale to ciut za mało. Fajnie działa to sobie w pętelce, ale chodzi mi o to żeby ten podprogram nie szedł cały czas w pętli, tylko raz po naciśnięciu przycisku wykonał się podprogram.
Tak jak pisałem. Mam podpięte dwa przyciski pod D2 i D3 ale program wykonuje się tylko gdy przycisk jest wciśnięty.

Oprócz tego muszę tak obsłużyć link bezpośredni z odczytem, żeby mi zapalił odpowiednią diodę w reakcji na stan przekaźnika (otwarty albo zamknięty).
QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

Ja raczej nie pomogę aż taki zaawansowany nie jestem
jak coś nie działa to włącz zasilanie.....

Return to “Pomoc”