#include <WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#define SSID "Wokwi-GUEST"
#define PASS ""
#define SERVIDOR_MQTT "io.adafruit.com"
#define PUERTO 1883
#define USUARIO "veamchile"
#define KEY "aio_LyVU46Ca19tBtGI7pbDnuce87rde"
float x_raw, y_raw, z_raw, t_raw = 0;
unsigned long tempo = 0;
int contador = 0;
WiFiClient client;
Adafruit_MPU6050 mpu;
Adafruit_MQTT_Client mqtt(&client, SERVIDOR_MQTT, PUERTO, USUARIO, USUARIO, KEY);
Adafruit_MQTT_Publish x = Adafruit_MQTT_Publish(&mqtt, USUARIO "/feeds/x");
Adafruit_MQTT_Publish y = Adafruit_MQTT_Publish(&mqtt, USUARIO "/feeds/y");
Adafruit_MQTT_Publish z = Adafruit_MQTT_Publish(&mqtt, USUARIO "/feeds/z");
Adafruit_MQTT_Publish t = Adafruit_MQTT_Publish(&mqtt, USUARIO "/feeds/t");
void MQTT_connect() {
int8_t ret;
// Stop if already connected.
if (mqtt.connected()) {
return;
}
Serial.print("Conectando al servidor MQTT... ");
uint8_t retries = 0;
while ((ret = mqtt.connect()) != 0) {
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Reintentando conexion en 10 segundo...");
mqtt.disconnect();
delay(10000);
retries++;
Serial.printf("Intentos %s\n", retries);
if(retries > 6){
ESP.restart();
}
}
Serial.println("MQTT Connected!");
}
void setup() {
Serial.begin(115200);
Serial.println("Iniciando...");
while (!mpu.begin()) {
Serial.println("MPU6050 not connected!");
delay(1000);
}
// Connect to WiFi access point.
Serial.print("Conectando a ");
Serial.println(SSID);
WiFi.begin(SSID, PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if(contador > 10){
ESP.restart();
}
contador++;
}
Serial.println(); Serial.println("Conectado a WIFI");
Serial.println("IP address: "); Serial.println(WiFi.localIP());
tempo = millis() + 60000;
}
void loop() {
MQTT_connect();
mqtt.processPackets(10000);
if (! mqtt.ping()) {
mqtt.disconnect();
}
if (millis() - tempo > 60000) {
tempo = millis();
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
// x_raw = a.acceleration.x / 9.8066;
// y_raw = a.acceleration.y / 9.8066;
// z_raw = a.acceleration.z / 9.8066;
// t_raw = temp.temperature;
x_raw = random(-196, 196) / 98.066;
y_raw = random(-196, 196) / 98.066;
z_raw = random(-196, 196) / 98.066;
t_raw = random(4000, 6000) / 100;
char str_x[10], str_y[10], str_z[10], str_t[10];
sprintf(str_x, "%.3f", x_raw);
sprintf(str_y, "%.3f", y_raw);
sprintf(str_z, "%.3f", z_raw);
sprintf(str_t, "%.3f", t_raw);
x.publish(str_x);
y.publish(str_y);
z.publish(str_z);
t.publish(str_t);
Serial.println(str_x);
Serial.println(str_y);
Serial.println(str_z);
Serial.println(str_t);
Serial.println("-----------------------------");
}
}