Для создания проекта с использованием ESP8266, датчика MPU6050 и отправкой данных по MQTT на Arduino, вам потребуется следующее оборудование и библиотеки:
Оборудование:
- ESP8266 (например, NodeMCU или Wemos D1 Mini).
- Датчик MPU6050 (акселерометр и гироскоп).
- Arduino (для считывания данных с MPU6050 и отправки данных по MQTT).
- Доступ к брокеру MQTT (например, Mosquitto на локальном сервере или онлайн-брокер MQTT, такой как CloudMQTT или HiveMQ).
Библиотеки:
- Wire.h – для работы с I2C для MPU6050.
- Adafruit_Sensor.h – для абстракции датчиков.
- Adafruit_MPU6050.h – для работы с датчиком MPU6050.
- 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. Вы можете дополнить код для более сложных операций обработки данных или настройки, в зависимости от ваших потребностей.