molto bene sono riuscito a fare alcuni passi indietro ed alkuni in avanti.
Al momento posso leggere\scrivere su ArduinoUNO tramite ESP8266-SoftwareSerial-Blynk,
anche via WEB..(è stato facile,mi è bastato spegnere il WIFI dal telefono e funziona tutto,quindi immagino che faccia tutto l'APP di Blynk).
Ovviamente ho precaricato su ESP il primo Sketch
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "ATURIZZAZIONE BLYNK";
char ssid[] = "ROUTER DI CASA";
char pass[] = "PASSWORD RUTER DI CASA";
byte virtual_pin0=0;
byte virtual_pin1=0;
byte virtual_pin10=0;
byte virtual_pin11=0;
char rx=0;
String RX="";
char tx=0;
String TX="";
void leggi_RX()
{
if(Serial.available())
{
RX="";
while(Serial.available())
{
rx=Serial.read();
RX.concat(rx);
Virtual_Pin();
}
Scrivi();
}
}
void Virtual_Pin()
{
if(RX=="V10=0"){virtual_pin10=0;}
if(RX=="V10=1"){virtual_pin10=1;}
if(RX=="V11=0"){virtual_pin11=0;}
if(RX=="V11=1"){virtual_pin11=1;}
}
void Scrivi()
{
if(virtual_pin10==0){Blynk.virtualWrite(V10,"");}
if(virtual_pin10==1){Blynk.virtualWrite(V10, RX);}
if(virtual_pin11==0){Blynk.virtualWrite(V11,"");}
if(virtual_pin11==1){Blynk.virtualWrite(V11, RX);}
}
BLYNK_READ(V10){Blynk.virtualWrite(V10, RX);}
BLYNK_READ(V11){Blynk.virtualWrite(V11, RX);}
BLYNK_WRITE(V0){int pinValue=param.asInt();Serial.print("V0=");Serial.print(pinValue);}
BLYNK_WRITE(V1){int pinValue=param.asInt();Serial.print("V1=");Serial.print(pinValue);}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
leggi_RX();
Blynk.run();
}
e su ArduinoUNO il secondo Sketch (in questo leggo la posizione del SERVO solo sul VirtualPin che richiamo).
#include <BlynkSimpleStream.h>
#include <SoftwareSerial.h>
SoftwareSerial ESP_1(11,10); // RX, TX
char rx_1=0;
String RX_1="";
char tx_1=0;
String TX_1="";
SoftwareSerial ESP_2(8,7); // RX, TX
char rx_2=0;
String RX_2="";
char tx_2=0;
String TX_2="";
#include <Servo.h>
Servo myservo;
byte pos=0;
boolean leggi_servo=0;
void setup()
{
Serial.begin(9600);
ESP_1.begin(9600);
ESP_2.begin(9600);
myservo.attach(4);
}
void scrivi_ESP_1()
{
if(Serial.available())
{
TX_1="";
while(Serial.available())
{
tx_1=Serial.read();
TX_1.concat(tx_1);
}
ESP_1.println(TX_1);
}
}
void leggi_ESP_1()
{
if(ESP_1.available())
{
RX_1="";
while(ESP_1.available())
{
rx_1=ESP_1.read();
RX_1.concat(rx_1);
delay(20);
}
Serial.print(RX_1);
}
}
void scrivi_ESP_2()
{
if(Serial.available())
{
TX_2="";
while(Serial.available())
{
tx_2=Serial.read();
TX_2.concat(tx_2);
}
ESP_2.print(TX_2);
}
}
void leggi_ESP_2()
{
if(ESP_2.available())
{
RX_2="";
while(ESP_2.available())
{
rx_2=ESP_2.read();
RX_2.concat(rx_2);
delay(10);
}
Serial.println(RX_2);
}
}
void SERVO()
{
ESP_1.print("V10=1");
pos=0;
myservo.write(pos);
TX_1=pos;
ESP_1.print(TX_1);
delay(2000);
ESP_1.print("V11=1");
pos=90;
myservo.write(pos);
TX_1=pos;
ESP_1.print(TX_1);
ESP_1.print("V11=0");
delay(2000);
pos=180;
myservo.write(pos);
TX_1=pos;
ESP_1.print(TX_1);
delay(2000);
}
void loop()
{
ESP_1.listen();
leggi_ESP_1();
scrivi_ESP_1();
SERVO();
}
Ora volendo strafare 8) 8) mantenendo questa logica volevo tornare alla mia idea iniziale sulla telecamerina rubata da un drone.
La storiella che vorrei realizzare è questa, ho ipotizzato di voler mettere una telecamerina rubata da un vecchi drone(funzionante perfettamente con la sua APP dedicata) di cui conosco solo SSID,ma collegandomi col telefono posso avere altre informazioni che non ho ben capito a cosa servono, in un capanno in cortile a 200 MT di distanza (quindi troppo lontano dal RUTER DI CASA soprattutto d'inverno a finestre chiuse)........
Quindi ho ipotizzato di mettere un ESP_2 a circa 100MT (metà strada) che comunica con ESP_1 montato su Arduino che poi comunica a sua volta col RUTER DI CASA.
Ora il primo problema che ho incotrato e che mi sta facendo venire il mal di testa
...ESP_2 l'ho precaricato con un schetc simile al precedente ......( ho aggiunto solo una ""..char ssid2[] = "MJX_FPV_2AB2";......che è SSID della telecamerina)....ed un ulteriore aggiunta nel SETUP...""Blynk.begin(auth,ssid,pass,ssid2);""...cosi si collega alla telecamerina.
IL problema è che non vedo le immagini NE in STANDALONE e neppure se carico questo Sketch su Arduino
#include <BlynkSimpleStream.h>
#include <SoftwareSerial.h>
SoftwareSerial ESP_1(11,10); // RX, TX
char rx_1=0;
String RX_1="";
char tx_1=0;
String TX_1="";
SoftwareSerial ESP_2(8,7); // RX, TX
char rx_2=0;
String RX_2="";
char tx_2=0;
String TX_2="";
#include <Servo.h>
Servo myservo;
byte pos=0;
boolean leggi_servo=0;
void setup()
{
Serial.begin(9600);
ESP_1.begin(9600);
ESP_2.begin(9600);
myservo.attach(4);
ESP_1.print("V12=1");
}
void scrivi_ESP_1()
{
if(Serial.available())
{
TX_1="";
while(Serial.available())
{
tx_1=Serial.read();
TX_1.concat(tx_1);
}
ESP_1.println(TX_1);
}
}
void leggi_ESP_1()
{
if(ESP_1.available())
{
RX_1="";
while(ESP_1.available())
{
rx_1=ESP_1.read();
RX_1.concat(rx_1);
delay(20);
}
Serial.print(RX_1);
}
}
void scrivi_ESP_2()
{
if(Serial.available())
{
TX_2="";
while(Serial.available())
{
tx_2=Serial.read();
TX_2.concat(tx_2);
}
ESP_2.print(TX_2);
}
}
void leggi_ESP_2()
{
if(ESP_2.available())
{
RX_2="";
while(ESP_2.available())
{
rx_2=ESP_2.read();
RX_2.concat(rx_2);
delay(10);
}
Serial.print(RX_2);
}
}
void loop()
{
ESP_1.listen();
leggi_ESP_1();
scrivi_ESP_1();
ESP_2.listen();
leggi_ESP_2();
scrivi_ESP_2();
}
SU Blynk come WidgetBox uso VideoStreaming.....ma non vedo nulla.
