Урок 12. aREST. Милашка розетка
-
Цель урока
Привет! Сегодня мы научимся управлять розекткой через Интернет с помощью сервиса aREST (рис. 1).
Рисунок 1
Необходимо реализовать возможность взаимодействия с M5 через Интернет при условии того, что мы не имеем статического IP-адреса, выделенного оператором. Формирование и отправка команд должна производиться через Веб-панель управления.
При включении устройства пользователю будет предложено вставить карту памяти. На карте памяти будут находится следующие файлы:
- файл с известными Wi-Fi-сетями (/system/wifi.ini);
- звуковой файл (/cutesocket/nya.mp3);
- изображения эмоций (/cutesocket/0..2.jpg).
Краткая справка
Иногда возникает необходимость во взаимодействии с вещами через Интернет. Тут многие сталкиваются с проблемой доступа извне. Обычно операторы связи раздают своим клиентам динамические IP-адреса, которые размещены за NAT - поэтому не так просто включить в доме свет, открыть ворота и т. п. Приходится доплачивать оператору за статический IP; или арендовать VPN-сервер, что очень накладно.
Одним из решений выступает облачный сервис https://aREST.io. Настоятельно рекомендую посетить раздел Get Started https://arest.io/get-started, чтобы узнать более подробно о работе сервиса.
Рисунок 1.1
Перечень компонентов для урока
- M5STACK (2 шт.);
- кабель USB-C из стандартного набора;
- карта памяти MicroSD на 4 ГБайт;
- цветные провода из стандартного набора (тип розетка-вилка);
- паяльник и припой;
- термоусадка;
- термоклей;
- доска. Размеры 30 x 7 x 1 см;
- розетка (гнездо);
- вилка (штекер);
- Двойной релейный модуль;
- винты;
- гайки (с места крепления материнской платы от корпуса ПК);
- дрель;
- сверло. Диаметр: 2.5 мм;
- провод медный. Диаметр 1 мм, длинна: 20 см.
Начнём!
Шаг 1. Зарегистрируемся на сайте arest.io
Регистрация абсолютно бесплатна и не займёт много времени (рис. 2). Перейдите по ссылки на панель управления https://dashboard.arest.io
Рисунок 2. Нажмите на кнопку Sign Up
Придумайте название панели управления, например m5stack_cuteSocket (рис. 2.1).
Рисунок 2.1. Введите имя и нажмите Add a new dashboard
Теперь войдите в только что созданную панель управления (рис. 2.2).
Рисунок 2.2.
Нажмите на кнопку Show Edit Mode (рис. 2.3).
Рисунок 2.3
Хорошо, сейчас создадим новый элемент управления (рис. 2.4). Придумайте и напишите имя элемента управления в первое поле, во второе - уникальный номер Вашего устройства, в третье - тип данных, в четвёртый номер физического контакта на устройстве, в пятый - тип элемента управления. Затем нажмите на кнопку Create new element.
Рисунок 2.4
На этом регистрация завершена. Панель управления готова к работе (рис. 2.5).
Рисунок 2.5
Шаг 2. Сделаем макет
Возьмите розетку (в зависимости от региона тип может отличаться) и разберите (рис. 3 - 3.1).
Рисунок 3.
Рисунок 3.1
Возьмите провод, диаметр которого 1 мм и сделайте два одинаковых отрезка по 10 см. Далее с помощью паяльника залудите концы и зафиксируйте с помощью винтов и отвертки на контактах розетки (рис. 3.2 - 3.3).
Рисунок 3.2
Рисунок 3.3
Возьмите термоклей и зафиксируйте основание розетки по центру доски (рис. 3.4). Установите на место крышку розетки.
Рисунок 3.4
Возьмите модуль реле и зафиксируйте провода в контактах с помощью отвертки (рис. 3.5).
Рисунок 3.5
Сделайте четыре отверстия диаметром 2.5 мм и установите в них гайки (с места крепления материнской платы от корпуса ПК) (рис. 3.6).
Рисунок 3.6
Установите модуль на гайки и зафиксируйте с помощью винтов (рис. 3.7).
Рисунок 3.7
Возьмите защитную сетку от куллера ПК и откусите с помощью кусачиков крепёжные петли. Далее с помощью термоклея приклейте к доске (рис. 3.8).
Рисунок 3.8
Установите M5 на сетку и подключите к модулю реле с помощью цветных проводов (рис. 3.9).
Рисунок 3.9
Подключите вилку к модулю реле и зафиксируйте провод с помощью термоклемя (3.10).
Рисунок 3.10
Ура! На этом монтаж завершён.
Шаг 3. Напишем скетч
Подключим библиотеки:
... include <WiFi.h> #include <PubSubClient.h> #include <aREST.h>
Инициализируем экземпляры классов:
WiFiClient espClient; PubSubClient client(espClient); aREST rest = aREST(client);
Придуаем уникальный номер устройства для сервиса aREST:
char* device_id = "1c2b3a"; // for example
Настроим порты ввода/вывода:
pinMode(RELAY1, OUTPUT); pinMode(RELAY2, OUTPUT); digitalWrite(RELAY1, HIGH); digitalWrite(RELAY2, LOW);
Добавим важные вещи:
client.setCallback(callback); rest.set_id(device_id); rest.set_name("esp32");
Не забудьте про функции обратного вызова. Эта функция будет вызваться при каждом запросе от облака к устройству:
void callback(char* topic, byte* payload, unsigned int length) { rest.handle_callback(client, topic, payload, length); ... }
Запустим клиент:
void loop() { rest.handle(client); }
На этом урок завершен!
Шаг 5. Запуск!
В разделе "Download" прилагается видео с демонстрацией работы. На этом урок завершён.
Downloads
- Скетч (GitHub): https://github.com/dsiberia9s/aREST.-Cute-socket
- Библиотеки (Yandex Disk): https://yadi.sk/d/hK1wKp3B3UsBCt
- Видео с демонстрацией работы (YouTube): https://youtu.be/OLJlK17hkDo