Hello, everybody!
Hardware: SIM800C+ArduinoUNO+Android.
Maybe, someone knows, how to solve this problem: When I add BlynkTimer in my program - blynk begins to disconnect. Without BlynkTimer everything works fine.
Here is the program:
#define BLYNK_PRINT Serial
#define TINY_GSM_MODEM_SIM800
#define BLYNK_HEARTBEAT 60
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
#include <TinyGsmClient.h>
#include <BlynkSimpleSIM800.h>
#include <SoftwareSerial.h>
#define pinBOOT 9
//BlynkTimer timer;
SoftwareSerial SerialAT(7,8); // RX, TX (17,16)
TinyGsm modem(SerialAT);
char auth[] = "-M86LN2UMefPv2T";
char apn[] = "internet.mts.ru";
char user[] = "";
char pass[] = "";
RF24 radio(4,5);
// Network uses that radio
float data[2];
float data1[2];
float data2[2];
float data3[2];
int state = 0;
WidgetLED ledTest(V5);
WidgetLED ledLight(V7);
BLYNK_WRITE(V4){ /////////TEST
if (param.asInt())
{
ledTest.on();
}
else
{
ledTest.off();
}
}
RF24Network network(radio);
void sendDirectiveOff(){
RF24NetworkHeader header(03); //кому отправляем
state = 0;
Serial.println("sending state...");
Serial.println(state);
network.write(header,&state,sizeof(state));
}
void sendDirectiveOn() {
RF24NetworkHeader header(03); //кому отправляем
int state = 1;
Serial.println("sending state...");
Serial.println(1);
network.write(header,&state,sizeof(state));
}
BLYNK_WRITE(V6){ //////LIGHT
if (param.asInt())
{
sendDirectiveOn();
Serial.println("Light on!");
}
else
{
sendDirectiveOff();
Serial.println("Light off!");
}
}
void printValuesToBlynk(){
Blynk.virtualWrite(V0, data1[0]);
Blynk.virtualWrite(V1, data1[1]);
Blynk.virtualWrite(V2, data2[0]);
Blynk.virtualWrite(V3, data2[1]);
if(data3[0] == 1){ledLight.on(); } else {ledLight.off();}
Blynk.virtualWrite(V8, data3[1]);
}
//int timer_printBlynk = timer.setInterval(5000L, printValuesToBlynk);
void setup() {
Serial.begin(9600);
delay(10);
// Set GSM module baud rate
SerialAT.begin(9600);
delay(3000);
digitalWrite(pinBOOT, HIGH);
delay(1000);
digitalWrite(pinBOOT, LOW);
Serial.println("Initializing modem...");
modem.restart();
Blynk.begin(auth, modem, apn, user, pass);
while (Blynk.connect() == false) { }
SPI.begin();
radio.begin();
network.begin(120, 00);
// timer.enable(timer_printBlynk);
//timer.setInterval(5000,printValuesToBlynk);
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run();
// timer.run();
network.update();
while ( network.available()){
RF24NetworkHeader header;
network.read(header,&data,sizeof(data)); // читаем данные
Serial.println("From: ");
Serial.println(header.from_node);
if(header.from_node == 1){
data1[0] = data[0];
data1[1] = data[1];
} else if (header.from_node == 2){
data2[0] = data[0];
data2[1] = data[1];
} else if (header.from_node == 3) {
data3[0] = data[0];
data3[1] = data[1];
}
}
}