ESP8266, датчика MPU6050 и отправкой данных по MQTT

Для создания проекта с использованием ESP8266, датчика MPU6050 и отправкой данных по MQTT на Arduino, вам потребуется следующее оборудование и библиотеки:

Оборудование:

  1. ESP8266 (например, NodeMCU или Wemos D1 Mini).
  2. Датчик MPU6050 (акселерометр и гироскоп).
  3. Arduino (для считывания данных с MPU6050 и отправки данных по MQTT).
  4. Доступ к брокеру MQTT (например, Mosquitto на локальном сервере или онлайн-брокер MQTT, такой как CloudMQTT или HiveMQ).

Библиотеки:

  1. Wire.h – для работы с I2C для MPU6050.
  2. Adafruit_Sensor.h – для абстракции датчиков.
  3. Adafruit_MPU6050.h – для работы с датчиком MPU6050.
  4. PubSubClient.h – для работы с протоколом MQTT на ESP8266.

Установите все необходимые библиотеки с помощью менеджера библиотек Arduino IDE. После установки библиотек и подключения оборудования, вы можете использовать следующий код в качестве основы для вашего проекта:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_MPU6050.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// Wi-Fi параметры
const char* ssid = "YourWiFiSSID";
const char* password = "YourWiFiPassword";

// MQTT параметры
const char* mqtt_server = "mqtt_broker_ip";
const char* mqtt_username = "mqtt_username";
const char* mqtt_password = "mqtt_password";
const char* mqtt_client_id = "esp8266_mpu6050_vibration_sensor";

// MQTT тема для отправки данных
const char* mqtt_topic = "vibration_sensor/data";

// Создание экземпляра MPU6050
Adafruit_MPU6050 mpu;

// MQTT клиент
WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);

  // Подключение к Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  // Подключение к MQTT брокеру
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);

  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");
    if (client.connect(mqtt_client_id, mqtt_username, mqtt_password)) {
      Serial.println("Connected to MQTT");
    } else {
      Serial.print("Failed to connect to MQTT, rc=");
      Serial.println(client.state());
      delay(2000);
    }
  }

  // Инициализация MPU6050
  if (!mpu.begin()) {
    Serial.println("Failed to find MPU6050 sensor");
    while (1);
  }

  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
}

void loop() {
  // Чтение данных с MPU6050
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);

  // Отправка данных по MQTT
  char data[100];
  snprintf(data, sizeof(data), "Acceleration: X=%.2f Y=%.2f Z=%.2f", a.acceleration.x, a.acceleration.y, a.acceleration.z);
  client.publish(mqtt_topic, data);

  delay(1000); // Отправлять данные раз в секунду
}

void callback(char* topic, byte* payload, unsigned int length) {
  // Обработка приема сообщений от MQTT (если нужно)
}

Убедитесь, что вы заменили значения переменных (Wi-Fi, MQTT и т. д.) на свои. Этот код подключится к вашей локальной Wi-Fi-сети, подключится к брокеру MQTT и будет отправлять данные о вибрации с датчика MPU6050 в указанную тему MQTT. Вы можете дополнить код для более сложных операций обработки данных или настройки, в зависимости от ваших потребностей.

Оставьте комментарий