Manual
do
Maker
.
com
Pode existir dois dispositivos usando o mesmo token Blynk? Sim, pode. Se for necessário ler os dados de outro dispositivo, o ideal é utilizar bridge, como descrito nesse artigo. Porém, é possível que dois dispositivos usem o mesmo token e façam coisas diferentes.
Nesse exemplo, um dos dispositivos está lendo temperatura de um sensor BME280; exatamente o exemplo do artigo anterior. O outro dispositivo está controlando relés. Pensando em um ambiente onde o uso fosse real, seria algo como a necessidade de medir a temperatura em um ambiente, estando o controle de aquecimento (ou refrigeração) em outro ambiente.
Ambos os dispositivos estão utilizando o mesmo token Blynk. Vamos chamar o dispositivo com sensor de temperatura de A e o dispositivo que aciona o relé de B.
O dispositivo A envia periodicamente o valor do sensor para o broker - o servidor Blynk, se preferir chamar assim. O dispositivo B fica periodicamente sincronizando o valor escrito no broker pelo dispositivo A. Utilizando PID ou outra convenção, o acionamento de relés acontece no dispositivo B.
Esse BME280 desses artigos que venho escrevendo está disponível no site do nosso parceiro CurtoCircuito, aproveite e veja todos os sensores que eles estão vendendo.
Em um dos dispositivos, utilize o código do artigo anterior. No segundo dispositivo, utilize esse código modificado, baseado no código do artigo anterior:
#define ESP32_BOARD
#include <Wire.h>
#include <Arduino.h>
#include <WiFi.h>
#include <WiFiClient.h>
#ifdef ESP32_BOARD
#include <BlynkSimpleEsp32.h>
#else
#include <BlynkSimpleEsp8266.h>
#endif
#include <string.h>
#include <Adafruit_Sensor.h>
//#include <Adafruit_BMP280.h>
#include <Adafruit_BME280.h>
//Adafruit_BMP280 bme;
Adafruit_BME280 bme;
#define BLYNK_PRINT Serial
#define BLYNK_DEBUG 1
#define RELAY_1 25
#define RELAY_2 32
BlynkTimer timer;
float f_temp = 0.0;
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "t0k3nF4k3";
#define SRV IPAddress(192,168,1,253)
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "sua_rede";
char pass[] = "sua_senha";
bool R1 = false;
bool R2 = false;
/*
void tempSend(){
String s_temp = String(f_temp);
Serial.println(s_temp);
Blynk.virtualWrite(V1,f_temp);
}
*/
void setup()
{
// Debug console
Serial.begin(9600);
Serial.println("###################");
pinMode(RELAY_1,OUTPUT);
pinMode(RELAY_2,OUTPUT);
digitalWrite(RELAY_1,HIGH);
digitalWrite(RELAY_2,HIGH);
delay(5000);
/*
if (!bme.begin(0x76)){
Serial.println("BMP280 isn't started. locking here.");
while (true);
}
*/
Serial.println("Going ahead.");
Blynk.begin(auth, ssid, pass, SRV, 8080);
/*
timer.setInterval(2000L, tempSend);
*/
delay(1000);
}
BLYNK_WRITE(V1){
float value = param.asFloat();
if (value >= 27.0){
R1 = true;
}
else{
R1 = false;
}
Serial.println(value);
}
void loop()
{
Blynk.syncVirtual(V1);
//f_temp = bme.readTemperature();
Blynk.run();
if (R1){
digitalWrite(RELAY_1, LOW);
}
else{
digitalWrite(RELAY_1, HIGH);
}
//timer.run();
delay(1000);
}
No teste utilizei a temperatura ambiente no limítrofe para conseguir manipular facilmente a temperatura.
Outra coisa que acredito que deva citar; quando queremos controlar temperatura, não é ideal fazer de maneira direta. Isto é, se quero manter uma temperatura de 20 graus em uma sala, não é nada inteligente fazer o controle somente no momento em que o termômetro marcar 20 graus.
A temperatura não desce de forma linear, desligar quando estiver em 20 graus pode significar ainda uma descida continuada da temperatura. Da mesma forma, colocar uma histerese para decidir quando desligar ou ligar também pode não ser sequer satisfatório.
Se desejar fazer um bom controle, uma ótima opção é utilizar PID, acrônimo de Proporciona, Integral, Derivativa.
O PID é utilizado para minimizar oscilações de controle, por exemplo, para ligar e desligar motores. Essa fórmula (ou equação, não sei qual seria o termo ideal) reduz (ou elimina) erros de desvio e também serve para gerenciar tomadas de ação rápida.
Agora que você já tem a comunicação em ambos as pontas, experimente implementar um controle PID. Isso certamente ajudará a economizar energia e estabilizar com muito mais sutileza a temperatura desejada. Veja esse artigo sobre PID.
Manual do Maker é mais do que um blog. Somos uma empresa de serviços, cuja principal atividade é desenvolvimento e implementação de projetos embarcados e IoT. Trabalhamos dentro da legalidade, emitindo nota fiscal de serviço, elaboração de requisitos de sistema e documentação do código. Não importa onde você esteja, montamos a prova de conceito e gravamos vídeo do projeto antes de entregar o código e/ou hardware configurado.
Em parceria com a AFEletrônica, projetamos e produzimos hardware industrial (também com nota), para lhe entregar a melhor experiência para seu projeto. Entre em contato: vendas@afeletronica.com.br Ou direto comigo: djames.suhanko@gmail.com
Será um prazer tê-lo como nosso cliente!
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.