hola buenos dias. Estoy haciendo un proyecto de llamada de mantenimimento al un puesto determinado y necesito que sea sin cables y para eso tengo un router y dos esp 32 mas la aplicacion de Blynk 2.0 .Los instale en una fabrica con bastante ruido electromagnetico el caso es que cuando lo ejecuto fuera de fabrica se conecta como a 100m del router pero en fabrica lo pongo a 15m y tiene muchas desconexiones cada 2 mint aprox cuando lo instale de nuevas no tenia problemas fue a la semana mas o menos.
Bueno al grano y la pregunta es. ¿el problema es del canal que uso o puede ser del codigo (que no se si por codigo el esp se desconecta)? me han comentado que tengo que eliminar los delay y limpiar el loop pero como no hay mucha información sobre blynk 2.0 en la web en el foro no me dan muchas opciones. y yo estoy estancado he cambiado de esp8266 a esp 32 y sigue igual les he puesto antena externa. tambien queria cambiar el puerto de recepcion pero no se como hacerlo en la aplicacion de blynk os dejo el codigo por si me dais algunas opciones. gracias por lo que me podais aportar un saludo.
//14 aceite bajo
//35 analogica entrada temperatura 10k a ,masa y potenciometro de 100k puesto a 21k
//4 baliza roja
//12 llamada operario
//32 conteo caja
//33 final de averia
//pantalla lcd 128x64 st 7920---------------
//BLK-GND
//BLA-3,3v
//RST-22
//PBS-GND
//E -18
//R/W-23
//RS -5
//VCC-5v
//GND-GND
#define BLYNK_TEMPLATE_ID ""
#define BLYNK_DEVICE_NAME ""
#define BLYNK_FIRMWARE_VERSION "0.1.0"
#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG
#define APP_DEBUG
#define USE_WROVER_BOARD
#include "BlynkEdgent.h"
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
unsigned long h;
int i = 0;
int j = 0;
int l = 0;
int n = 0;
int r = 0;
int k = 0;
int o = 0;
int q = 0;
int w = 0;
int x = 0;
int z = 0;
U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R0, /* clock=*/ 18, /* data=*/ 23, /* CS=*/ 5, /* reset=*/ 22); // ESP32 ACTUAL
int luzboton = 21;
int aceitedepo = 14;
unsigned long tiempo_guardado = 0 ;
unsigned long tiempo_guardado1 = 0 ;
int ma = 0;
float temp = 35; //etiqueta para lectura anal�gica PARA SENSOR DE TEMPERAURA
int y = 0;
//---------------------------------pines virtuales para la placa hacia la aplicacion
BLYNK_WRITE(V5) { //luz de botonera
int pinValue = param.asInt();
digitalWrite(luzboton, pinValue);
}
BLYNK_WRITE(V6) { //SENSOR MINIMO ACEITE DEL DEPOSITO esta asociada a la aplicacion atraves de V0 y V0 es correo
int pinValue = param.asInt();//asocia pinValue a un entero en este caso es V0 que es pin 5 de wemos que D1
digitalWrite(aceitedepo, pinValue);//V0 es correo
}
//-------------------------------------boleanos para los leds de la aplicacion.
BlynkTimer timer;
WidgetLED led3(V2);//ESTE ES EL LED DE LA BALIZA ROJA ES UN BOLEANO QUE VIGILA LA SEÑAL PARA CAMBIAR DE ESSTADO
boolean btnState = false;
void ledblynk()
{
boolean isPressed = (digitalRead(4) == HIGH);
if (isPressed != btnState) {
if (isPressed) {
led3.on();
r = 1;
} else {
led3.off();
r = 0;
}
btnState = isPressed;
}
}
WidgetLED led4(V3);//ESTE ES EL LED DE LLAMADA DE OPERARIO ES UN BOLEANO QUE VIGILA LA SEÑAL PARA CAMBIAR DE ESSTADO
boolean btnState1 = false;
void ledblynk1()
{
boolean isPressed = (digitalRead(12) == HIGH);
if (isPressed != btnState1) {
if (isPressed) {
led4.on();
k = 1;
}
btnState1 = isPressed;
}
}
WidgetLED led5(V6);//ESTE ES EL LED DE NIVEL MINIMO DE DEPOSITO ES UN BOLEANO QUE VIGILA LA SEÑAL PARA CAMBIAR DE ESSTADO
boolean btnState2 = false;
void ledblynk2()
{
boolean isPressed = (digitalRead(14) == HIGH);
if (isPressed != btnState2) {
if (isPressed) {
led5.off();
unsigned long tiempo = millis();
tiempo_guardado = tiempo;
} else {
led5.on();
q = 0;
}
btnState2 = isPressed;
}
}
WidgetLED led6(V5);//ESTE ES EL LED de conteo de las cajas rodadas
boolean btnState3 = false;
void ledblynk3()
{
unsigned long tiempo = millis();
boolean isPressed = (digitalRead(32) == LOW);
if (isPressed != btnState3) {
if (isPressed) {
led6.off();
} else {
led6.on();
tiempo_guardado1 = tiempo;
x = 1;
delay(100);
}
btnState3 = isPressed;
}
}
void setup()
{
Serial.begin(115200);
u8g2.begin();
//-----------------------------------------LOGO DE JOHN DEERE Y SERVEO
logo();
delay(1000);
timer.setInterval(1000L, ledblynk);
timer.setInterval(1000L, ledblynk1);
timer.setInterval(1000L, ledblynk2);
timer.setInterval(1000L, ledblynk3);
BlynkEdgent.begin();
pinMode(luzboton, OUTPUT);
pinMode(4, INPUT_PULLDOWN);
pinMode(12, INPUT_PULLDOWN);
pinMode(32, INPUT_PULLDOWN);
pinMode(33, INPUT_PULLDOWN);
}
void loop() {
BlynkEdgent.run();
timer.run();
unsigned long tiempo = millis();
//--------------------------------pines virtuales a aplicacion.
int llamadaoperario = 0;
llamadaoperario = digitalRead(12);// 12 LLAMADA OPERARIO ES U positivo LA SEÑAL ES DE ENTRADA
if ( (llamadaoperario == HIGH) && ( k == 1) && (o == 0))
{
digitalWrite(luzboton, HIGH);
Serial.println("se ha pulsado boton de llamada");
Blynk.logEvent("llamaope");
ledblynk1();
o = 1;
Serial.print("estado k llamada ");
Serial.println(k);
Serial.print("estado o llamada ");
Serial.println(o);
delay(5000);
}
//--------------------------------------parpadeo del boton cuando esta activa la averia
int lb = 0;
lb = digitalRead(21);//parpadeo del la luz de la botonera
if (lb == HIGH) {
digitalWrite(luzboton, LOW);
delay(300);
digitalWrite(luzboton, HIGH);
delay(300);
}
//--------------------------------------cuenta caja cada vez que se rueda 5 minutos seguidos para llevar preventivos en cuenta
int cuenta = digitalRead(32);//conteo cajas
if ((cuenta == 1) && (tiempo - tiempo_guardado1 >= 300000) && (btnState3 == LOW) && (x == 1)) {
w++;
z++;
x = 0;
delay(200);
Serial.print("caja rodada ");
}
Blynk.virtualWrite(V1, w);
Blynk.virtualWrite(V8, z);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Blynk.virtualWrite(V7, 33);// final averia ES positivo LA SEÑAL DE ENTRADA
int finalaveria = 0;
finalaveria = digitalRead(33);
if ((finalaveria == HIGH) && (o == 1))
{
led4.off();
Serial.println("se ha terminado la averia");
Blynk.logEvent("finalaveria");
o = 0;
digitalWrite(luzboton, LOW);
delay(5000);
Serial.print("estado k terminada ");
Serial.println(k);
Serial.print("estado o terminada ");
Serial.println(o);
}
//++++++++++++++++++++++++++++++++++resear contador dos botones pulsados a la vez pulsado 10 segundos
if ((finalaveria == HIGH) && (llamadaoperario == HIGH))
{
w = 0;
digitalWrite(luzboton, HIGH);
delay(200);
digitalWrite(luzboton, LOW);
delay(200);
digitalWrite(luzboton, HIGH);
delay(200);
digitalWrite(luzboton, LOW);
}
//++++++++++++++++++++++++++++++++++analogica de temperatura
int pot = 0;
pot = analogRead(temp);
y = map(pot, 0, 4095, 0, 100); //funci�n map para escalado
//delay(1000);
Blynk.virtualWrite(V0, y);
//Serial.println(y);
if ( y >= 80)
{
Serial.println("temperatura alta");
Blynk.logEvent("tempalta");
delay(100);
}
//A ACTVAR CUANDO EL PROTOTIPO ESTE CORRECTO
/* int ram=0;
ram=digitalRead(luzboton);
if ( (ram==HIGH)&&(y<=80))
{
digitalWrite(5,HIGH);
Serial.println("resistencias apagadas manualmante");
Blynk.logEvent("aparesis");
delay(2000);
}
*/
if ((tiempo - tiempo_guardado >= 10000) && (btnState2 == 1) && (q == 0)) //envia a los 10 segundos de falta de aceite
{ //para evitar parpadeos del sensor
q = 1;
Serial.println("bajo nivel de aceite");
Blynk.logEvent("minimoaceite");
delay(100);
ledblynk2();
delay(2000);
Serial.print("estado q llamada ");
Serial.println(q);
}
int bl = 0;// D2 BALIZA ROJA ACTIVA LA SEÑAL DE ENTRADA ES positivo
bl = digitalRead(4);
if ( (bl == HIGH) && (r == 0))
{
Serial.println("baliza roja encendida");
Blynk.logEvent("balizaroja");
ledblynk();
delay(2000);
Serial.print("estado r baliza roja ");
Serial.println(r);
}
h = digitalRead(14); // SENSOR DE ACEITE ES POSITIVO LA SEÑAL DE ENTRADA
i = digitalRead(26); // CONTEO DE PRUEBAS REALIZADAS
j = digitalRead(12); // LLAMADA OPERARIO ES un positivo LA SEÑAL ES DE ENTRADA
l = digitalRead(4); // BALIZA ROJA ACTIVA LA SEÑAL DE ENTRADA ES positivo
n = digitalRead(33); // final averia ES positivo LA SEÑAL DE ENTRADA
//-----------------------------------DIBIJO DE CUADROS Y SEÑALES DE ENTRADA Y SALIDA
u8g2.clearBuffer();
u8g2.drawRFrame(0, 0, 128, 10, 0);
u8g2.setFont(u8g2_font_u8glib_4_hr);
u8g2.drawStr(4, 7, "ENTRADAS Y SALIDAS ");
u8g2.drawStr(92, 7, "ESTADO");
u8g2.drawStr(4, 17, "SENSOR DE ACEITE.......");
u8g2.drawStr(4, 25, "NUMERO DE RODAJES....");
u8g2.drawStr(4, 33, "LLAMADA OPERARIO.....");
u8g2.drawStr(4, 41, "BALIZA ROJA........");
u8g2.drawStr(4, 49, "FINAL AVERIA.............");
u8g2.drawStr(4, 59, "TEMPERATURA ACEITE");
u8g2.drawRFrame(0, 9, 90, 55, 0);
u8g2.drawRFrame(89, 0, 39, 64, 0);
if (h == 0) {
u8g2.setCursor(93, 17);
u8g2.print("LLENO");
}
if (h != 0) {
u8g2.setCursor(93, 17);
u8g2.print("FALTA");
}
u8g2.setCursor(93, 25);
u8g2.print(w);
if (j == 0) {
u8g2.setCursor(93, 33);
u8g2.print("NO PULS");
}
if (j != 0) {
u8g2.setCursor(93, 33);
u8g2.print("PULSADO");
}
if (l != 0) {
u8g2.setCursor(93, 41);
u8g2.print("ACTIVA");
}
if (l == 0) {
u8g2.setCursor(93, 41);
u8g2.print("NO ACTV");
}
if (n != 0) {
u8g2.setCursor(93, 49);
u8g2.print("PULSADO");
}
if (n == 0) {
u8g2.setCursor(93, 49);
u8g2.print("NO PULS");
}
u8g2.setFont(u8g2_font_courB10_tf);
u8g2.setCursor(100, 61);
u8g2.print(y);
u8g2.sendBuffer();
//Serial.print("estado k final ");
//Serial.println(k);
//Serial.print("estado o final ");
//Serial.println(o);
//Serial.print("estado r final ");
//Serial.println(r);
//Serial.print("estado q final ");
//Serial.println(q);
//Serial.print("estado w final ");
//Serial.println(w);
}
void logo()
{
//-----------------------------------------LOGO DE JOHN DEERE Y SERVEO
u8g2.setFont(u8g2_font_lucasarts_scumm_subtitle_r_tf);
u8g2.clearBuffer();
u8g2.drawRFrame(0, 46, 128, 64, 7);
u8g2.drawStr(4, 60, "SERVEO ");
u8g2.drawStr(0, 80, "in association ");
u8g2.drawStr(0, 100, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 44, 128, 64, 7);
u8g2.drawStr(4, 58, "SERVEO ");
u8g2.drawStr(0, 78, "in association ");
u8g2.drawStr(0, 98, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 42, 128, 64, 7);
u8g2.drawStr(4, 56, "SERVEO ");
u8g2.drawStr(0, 76, "in association ");
u8g2.drawStr(0, 96, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 40, 128, 64, 7);
u8g2.drawStr(4, 54, "SERVEO ");
u8g2.drawStr(0, 74, "in association ");
u8g2.drawStr(0, 94, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 38, 128, 64, 7);
u8g2.drawStr(4, 52, "SERVEO ");
u8g2.drawStr(0, 72, "in association ");
u8g2.drawStr(0, 92, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 36, 128, 64, 7);
u8g2.drawStr(4, 50, "SERVEO ");
u8g2.drawStr(0, 70, "in association ");
u8g2.drawStr(0, 90, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 34, 128, 64, 7);
u8g2.drawStr(4, 48, "SERVEO ");
u8g2.drawStr(0, 68, "in association ");
u8g2.drawStr(0, 88, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 32, 128, 64, 7);
u8g2.drawStr(4, 46, "SERVEO ");
u8g2.drawStr(0, 66, "in association ");
u8g2.drawStr(0, 86, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 30, 128, 64, 7);
u8g2.drawStr(4, 44, "SERVEO ");
u8g2.drawStr(0, 64, "in association ");
u8g2.drawStr(0, 84, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 28, 128, 64, 7);
u8g2.drawStr(4, 42, "SERVEO ");
u8g2.drawStr(0, 62, "in association ");
u8g2.drawStr(0, 82, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 26, 128, 64, 7);
u8g2.drawStr(4, 40, "SERVEO ");
u8g2.drawStr(0, 60, "in association ");
u8g2.drawStr(0, 80, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 24, 128, 64, 7);
u8g2.drawStr(4, 38, "SERVEO ");
u8g2.drawStr(0, 58, "in association ");
u8g2.drawStr(0, 78, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 22, 128, 64, 7);
u8g2.drawStr(4, 36, "SERVEO ");
u8g2.drawStr(0, 56, "in association ");
u8g2.drawStr(0, 76, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 20, 128, 64, 7);
u8g2.drawStr(4, 34, "SERVEO ");
u8g2.drawStr(0, 54, "in association ");
u8g2.drawStr(0, 74, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 18, 128, 64, 7);
u8g2.drawStr(4, 32, "SERVEO ");
u8g2.drawStr(0, 52, "in association ");
u8g2.drawStr(0, 72, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 16, 128, 64, 7);
u8g2.drawStr(4, 30, "SERVEO ");
u8g2.drawStr(0, 50, "in association ");
u8g2.drawStr(0, 70, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 14, 128, 64, 7);
u8g2.drawStr(4, 28, "SERVEO ");
u8g2.drawStr(0, 48, "in association ");
u8g2.drawStr(0, 68, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 12, 128, 64, 7);
u8g2.drawStr(4, 26, "SERVEO ");
u8g2.drawStr(0, 46, "in association ");
u8g2.drawStr(0, 66, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 10, 128, 64, 7);
u8g2.drawStr(4, 24, "SERVEO ");
u8g2.drawStr(0, 44, "in association ");
u8g2.drawStr(0, 64, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 8, 128, 64, 7);
u8g2.drawStr(4, 22, "SERVEO ");
u8g2.drawStr(0, 42, "in association ");
u8g2.drawStr(0, 62, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 6, 128, 64, 7);
u8g2.drawStr(4, 20, "SERVEO ");
u8g2.drawStr(0, 40, "in association ");
u8g2.drawStr(0, 60, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 4, 128, 64, 7);
u8g2.drawStr(4, 18, "SERVEO ");
u8g2.drawStr(0, 38, "in association ");
u8g2.drawStr(0, 58, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 2, 128, 64, 7);
u8g2.drawStr(4, 16, "SERVEO ");
u8g2.drawStr(0, 36, "in association ");
u8g2.drawStr(0, 56, " JOHN DEERE ");
u8g2.sendBuffer();
delay(20);
u8g2.clearBuffer();
u8g2.sendBuffer();
u8g2.clearBuffer();
u8g2.drawRFrame(0, 0, 128, 64, 7);
u8g2.drawStr(4, 14, "SERVEO ");
u8g2.drawStr(0, 34, "in association ");
u8g2.drawStr(0, 54, " JOHN DEERE ");
u8g2.sendBuffer();
delay(2000);
u8g2.setFont(u8g2_font_squeezed_b6_tr );
u8g2.clearBuffer();
u8g2.drawRFrame(0, 0, 128, 64, 7);
u8g2.drawStr(0, 14, " ANGEL PALACIOS");
u8g2.drawStr(0, 34, " PATRICK KOLBUSZOWSKI ");
u8g2.sendBuffer();
}```