#include <WiFi.h>
#include <PubSubClient.h>
// Configurações de rede WiFi
const char* SSID = "Wokwi-GUEST"; // Nome da rede Wi-Fi
const char* password = ""; // Senha da rede Wi-Fi
// Configurações do broker MQTT (HiveMQ)
const char* mqtt_server = "a02.usw2.aws.hivemq.cloud"; // Endereço do broker HiveMQ
const int mqtt_port = 1883; // Porta padrão do MQTT sem TLS
const char* mqtt_user = "usuario_mqtt"; // Usuário MQTT
const char* mqtt_password = "senha_mqtt"; // Senha MQTT
WiFiClient espClient;
PubSubClient client(espClient);
void connectToWiFi() {
Serial.print("Conectando-se ao WiFi ");
Serial.println(SSID);
WiFi.begin(SSID, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" Conectado!");
}
void connectToMQTT() {
Serial.print("Conectando-se ao broker MQTT...");
while (!client.connected()) {
Serial.print(".");
if (client.connect("ESP32Client", mqtt_user, mqtt_password)) {
Serial.println(" Conectado ao broker!");
} else {
Serial.print(" falha, rc=");
Serial.print(client.state());
Serial.println(" Tentando novamente em 5 segundos...");
delay(5000);
}
}
}
void setup() {
// Inicializa a comunicação serial
Serial.begin(115200);
// Configuração dos pinos
pinMode(21, OUTPUT);
pinMode(19, OUTPUT);
pinMode(18, OUTPUT);
pinMode(25, INPUT);
pinMode(26, INPUT);
pinMode(27, INPUT);
// Conectar-se ao WiFi
connectToWiFi();
// Configuração do broker MQTT
client.setServer(mqtt_server, mqtt_port);
}
void loop() {
if (!client.connected()) {
connectToMQTT();
}
client.loop();
// Controle das cores com base na leitura analógica
analogWrite(19, analogRead(25)); // Controla LED vermelho
analogWrite(21, analogRead(26)); // Controla LED azul
analogWrite(18, analogRead(27)); // Controla LED amarelo
// Exemplo de publicação de dados de leitura para o broker MQTT
String payload = "Valores: " + String(analogRead(25)) + "," + String(analogRead(26)) + "," + String(analogRead(27));
client.publish("sensor/leitura", payload.c_str());
delay(1000); // Atraso para evitar sobrecarga de mensagens
}