Измерение переменного напряжения (250VAC) с помощью ZMPT101B и ESP8266 12E: Создаем Android-приложение с использованием Adafruit IO и MQTT

Введение: Что такое ZMPT101B и ESP8266?

Сейчас, когда технологии развиваются с невероятной скоростью, возможность мониторинга окружающей среды становится все более доступной. Одной из самых интересных и актуальных задач является измерение переменного напряжения. В данной статье мы подробно разберем, как с помощью модуля ZMPT101B и микроконтроллера ESP8266 12E можно осуществлять измерение переменного тока до 250 Вольт и передавать данные на Android-приложение через платформу Adafruit IO с использованием протокола MQTT. Погрузимся в мир электроники, IoT (Интернет вещей) и программирования, чтобы понять, как можно создать удобное решение для мониторинга напряжения прямо на вашем смартфоне.

Что такое ZMPT101B?

ZMPT101B — это модуль, предназначенный для измерения переменного напряжения. Он использует трансформаторный принцип работы и способен преобразовывать высокое напряжение в более низкое, что упрощает процесс измерения. Основным его преимуществом является высокая точность и безопасность. Это позволяет использовать модуль в различных приложениях, от домашних проектов до промышленных систем.

Зачем нужен ESP8266 12E?

ESP8266 12E — это мощный модуль с встроенной поддержкой Wi-Fi, который идеально подходит для проектов IoT. С его помощью можно контролировать устройства и собирать данные в реальном времени. Благодаря своим небольшим размерам и низкому потреблению энергии, ESP8266 стал неотъемлемой частью многих DIY-проектов. В нашем случае он будет использоваться для передачи данных о напряжении, полученных с ZMPT101B, на сервер Adafruit IO.

Необходимые компоненты и инструменты

Перед тем как приступить к проекту, давайте разберемся, что нам понадобится. Вот список компонентов и инструментов, которые вы должны подготовить:

Компоненты Количество
ZMPT101B 1
ESP8266 12E 1
Резисторы и конденсаторы Несколько
Провода для соединения Несколько
Макетная плата 1
Блок питания 1

Кроме того, не забывайте о программном обеспечении. Вам понадобится Arduino IDE для написания кода, а также Android Studio для создания приложения. Если у вас нет Android Studio, можно использовать MIT App Inventor как альтернативный вариант.

Схема подключения компонентов

Перед тем как приступить к программированию, давайте разберемся с подключением всех компонентов. Создание правильной схемы – ключ к успешной работе устройства.

Схема подключения ZMPT101B и ESP8266 12E

Подключение модуля ZMPT101B к ESP8266 достаточно простое. Вот основные шаги:

1. Подключите выход ZMPT101B к аналоговому входу ESP8266 (например, A0).
2. Питание модуля ZMPT101B обычно составляет 5V, поэтому подключите его к источнику питания.
3. Подключите землю ZMPT101B к земле ESP8266.

Обратите внимание, что на плате ESP8266 также есть другие пины, которые можно использовать для дальнейших модификаций вашего проекта.

Пример схемы

К сожалению, текстовое поле не поддерживает рисование схем, но вы можете найти множество примеров в интернете. Просто поищите “схема подключения ZMPT101B к ESP8266” в вашем поисковике.

Программирование ESP8266

Теперь, когда мы подключили все компоненты, следующий шаг — это программирование нашего ESP8266 для измерения напряжения и отправки данных на сервер.

Установка Arduino IDE и библиотек

Если у вас еще не установлены Arduino IDE и необходимые библиотеки, начните с их установки. Вы можете скачать последнюю версию Arduino IDE с официального сайта.

После установки IDE нам нужно будет установить необходимые библиотеки:

– Для работы с Wi-Fi.
– Для работы с MQTT протоколом (например, библиотека PubSubClient).
– Для работы с Adafruit IO.

В Arduino IDE зайдите в меню “Инструменты” → “Библиотеки” и выполните поиск по названиям библиотек, чтобы установить их.

Пример кода для ESP8266

Ниже приведен пример базового кода, который считывает данные с ZMPT101B и передает их на Adafruit IO.

cpp
#include
#include

const char* ssid = “your_SSID”; // Укажите свой SSID
const char* password = “your_PASSWORD”; // Укажите свой пароль
const char* mqttServer = “io.adafruit.com”; // Адрес сервера
const int mqttPort = 1883;
const char* mqttUser = “your_AIO_KEY”; // Ваш ключ AIO
const char* mqttPassword = “your_AIO_USER”; // Ваш пользователь AIO

WiFiClient espClient;
PubSubClient client(espClient);

#define ZMPT_PIN A0 // Пин для модуля ZMPT101B

void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println(“Connecting to WiFi…”);
}
client.setServer(mqttServer, mqttPort);
}

void loop() {
if (!client.connected()) {
connectMQTT();
}
client.loop();

float voltage = analogRead(ZMPT_PIN) * (5.0 / 1023.0); // Считывание напряжения
client.publish(“your_channel”, String(voltage).c_str()); // Отправка данных на AIO
delay(5000); // Интервал отправки данных
}

void connectMQTT() {
while (!client.connected()) {
Serial.print(“Attempting MQTT connection…”);
if (client.connect(“ESP8266Client”, mqttUser, mqttPassword)) {
Serial.println(“connected”);
} else {
Serial.print(“failed, rc=”);
Serial.print(client.state());
delay(2000);
}
}
}

В приведенном коде вам нужно будет заменить `your_SSID`, `your_PASSWORD`, `your_AIO_KEY`, `your_AIO_USER` и `your_channel` на свои значения.

Настройка Adafruit IO

Теперь, когда мы написали код для ESP8266, следующее логическое действие – настройка Adafruit IO для получения данных. Adafruit IO — это мощная платформа, которая позволяет легко работать с IoT-устройствами и визуализировать данные.

Регистрация и создание нового проекта на Adafruit IO

1. Перейдите на сайт [Adafruit IO](https://io.adafruit.com/).
2. Зарегистрируйтесь, если у вас еще нет аккаунта.
3. Создайте новую “Feed” (поток), где будут сохраняться наши данные. Назовите её, например, “Voltage”.
4. Запишите ваш ключ AIO и имя канала для последующего использования.

Как использовать MQTT на Adafruit IO

Adafruit IO поддерживает MQTT, что позволяет легко отправлять и получать данные от ваших устройств. Убедитесь, что вы позаботились о настройках вашего MQTT, поскольку они являются ключевыми для успешного обмена данными между ESP8266 и платформой.

Создание Android-приложения

Следующий шаг на нашем пути – это создание Android-приложения для отображения данных, которые мы получаем от нашего устройства. Есть много способов сделать это, но мы сосредоточимся на простом подходе с использованием MIT App Inventor или Android Studio.

Создание UI (интерфейса пользователя)

Интерфейс вашего приложения должен отображать данные о напряжении. Вы можете добавить различные элементы управления, такие как текстовые поля и графики для более наглядного отображения. В качестве примера, вы можете использовать TextView для отображения текущего напряжения и ChartView для построения графика.

Пример интерфейса

Создайте экран с следующими элементами:

– TextView для отображения полученного напряжения.
– Кнопка для обновления данных.

Код для получения данных с Adafruit IO

На этом этапе вы можете использовать библиотеку MQTT для Android, чтобы подключиться к Adafruit IO и получать данные. В вашем приложении реализуйте функции для подключения и подписки на ваш канал.

Вот пример, как это может выглядеть.

java
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;

// Подключение clienа к Adafruit IO
MqttClient client = new MqttClient(“tcp://io.adafruit.com:1883”, MqttClient.generateClientId());
client.connect();
client.subscribe(“your_channel”);

client.setCallback(new MqttCallback() {
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
String voltage = new String(message.getPayload());
updateUI(voltage);
}
});

Эта часть кода подписывает ваше приложение на канал и обновляет интерфейс при получении новых данных.

Завершение проекта и тестирование

После того как все код готов и устройства настроены, время протестировать ваш проект! Включите ESP8266, запустите приложение на Android и посмотрите, как данные о напряжении отобразятся на экране.

Что делать, если что-то не работает?

В случае возникновения проблем, проверьте следующие аспекты:

1. Правильность подключения всех компонентов.
2. Настройки Wi-Fi и AIO.
3. Логи в Arduino IDE, чтобы выявить возможные ошибки.
4. Соединение устройства с интернетом.

Заключение

В данной статье мы рассмотрели, как создать простое и, в то же время, мощное решение для измерения переменного напряжения до 250 VAC с использованием ZMPT101B и ESP8266 12E, а также как передавать данные на Android-приложение через платформу Adafruit IO с использованием протокола MQTT. Надеюсь, эта статья вдохновила вас на создание собственных IoT-проектов, и вы узнали что-то новое об электронике и программировании.

Создание таких проектов открывает перед вами безграничные возможности, и теперь, зная основы, вы можете шаг за шагом развивать свои навыки и углубляться в мир современных технологий. Не бойтесь экспериментировать, и удачи вам в ваших начинаниях!

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии