В пользовании у мастера есть два компрессора расположенные в разных местах. Для контроля ежедневно ему приходилось измерять вибрацию и температуру компрессоров. Естественно это отнимает время. Для решения проблемы мастер решил сделать удаленный контроль за их состоянием. В принципе, вместо компрессора может быть любое другое устройство.
Так же в статье мы познакомимся с приложением Blynk, узнаем какой модуль ESP выбрать, для чего нужна плата MPU6050 и многое другое.
Инструменты и материалы:
-Модуль GY-521 MPU6050;
—Микроконтроллер ESP8266;
-Макетная плата;
-Соединительные провода;
Шаг первый: модуль GY-521 MPU6050
Плата MPU-6050 объединяет 3 оси гироскопа и 3 оси акселерометра и может быть применена для контроля работы за компрессором.
Принцип работы модуля:
Гироскоп
Гироскопические датчики могут контролировать ориентацию, направление, угловое перемещение и вращение. На смартфоне гироскопический сенсор обычно выполняет функции распознавания жестов. Кроме того, гироскопы смартфонов помогают определить положение и ориентацию устройства.
Акселерометр
Акселерометр — это датчик, который измеряет ускорение, а также наклон, угол наклона, вращение, вибрацию, столкновение и силу тяжести. При использовании на смартфоне акселерометр может автоматически изменять отображение телефона по вертикали или горизонтали, поскольку этот датчик может проверять, на какую ось действует вектор ускорения свободного падения.
Этот датчик использует протокол связи I2C.
I2C может работать в двух режимах, Master и Slave.
Распиновка:
VCC — положительный контакт питания;
GND — земля;
SDA — линия данных I2C;
SCL — линия синхроимпульсов I2C;
INT — настраиваемое прерывание;
AD0 — I2C адрес; по-умолчанию AD0 подтянут к земле, поэтому адрес устройства — 0x68; если соединить AD0 к контакту питания, то адрес изменится на 0x69;
XCL, XDA — дополнительный I2C интерфейс для подключения внешнего магнитометра
Шаг второй: приложение BLYNK
Появление новых устройств, которые также можно программировать в Arduino, а также использование плат расширения (плат, которые добавляют функции к устройствам Arduino) добавили возможности проектов, которые можно разрабатывать на Arduino.
В то же время появление сервисов, подключенных к Интернету, и концепция IoT (Интернет вещей) увеличили спрос на устройства, которые имеют возможность подключения и, таким образом, обеспечивают удаленное управление этими устройствами через Интернет.
BLYNK — это именно один из таких сервисов.
Эта программа позволяет удаленно управлять программируемым оборудованием, а также передавать данные об оборудовании в приложение.
Таким образом, можно быстро и интуитивно создавать графические интерфейсы управления, которые взаимодействуют с более чем 400 платами, в основном на основе Arduino.
Приложение Blynk — это программа, доступная для Android и iOS, которое позволяет пользователю создавать приложения, взаимодействующие с оборудованием. Для каждого проекта пользователь может вставлять виджеты, которые реализуют функции управления (такие как кнопки, ползунки и клавиши), уведомления и чтение данных оборудования (отображение на дисплеях, графиках и картах).
Все взаимодействие между приложением и оборудованием пользователя происходит через облако Blynk. Сервер отвечает за передачу данных на оборудование, сохранение состояний приложений и оборудования, а также за хранение данных датчиков, считанных оборудованием, даже если приложение закрыто.
К данным, хранящимся на сервере Blynk, можно получить доступ извне через HTTP API, что открывает возможность использования Blynk для хранения периодически генерируемых данных, например, данных датчика температуры.
Что касается аппаратного обеспечения, у нас есть библиотеки Blynk для нескольких платформ разработки. Эта библиотека отвечает за управление всем аппаратным подключением к серверу Blynk и управление запросами ввода и вывода для данных и команд.
Приложение Blynk доступно для бесплатной загрузки. Доступ к серверу Blynk не ограничен (и по-прежнему позволяет реализовать его локально через предоставленный открытый исходный код), Библиотеки Blynk также бесплатны.
Однако каждый виджет «стоит» определенное количество энергии — своего рода виртуальную валюту. При регистрации каждому пользователю выдается 2000 единиц энергии. Если нужно больше энергии, то ее можно приобрести дополнительно.
Если «разобрать» проект, то энергия возвращается обратно в рюкзак пользователя.
Шаг третий: установка приложения
Чтобы установить приложение Blynk на свой смартфон, необходимо проверить, совместима ли операционная система с приложением. Предварительные условия для установки следующие:
ОС Android версии 4.2+.
IOS версии 9+.
Также можно запустить Blynk на эмуляторах.
Загрузить приложение можно из магазинов Google Play или App Store.
После установки приложения пользователь должен создать учетную запись на сервере Blynk.
Необходимо использовать действующий адрес электронной почты, так как он будет часто использоваться позже.
Шаг четвертый: создание нового проекта
После регистрации появится главный экран приложения. Дальше нужно выбрать опцию New Project (новый проект), и откроется новая страница.
Дальше в графе Project Name введите имя проекта. Выберите тип устройства, которое вы будете использовать, на вкладке Choose Device.
В данном проекте использовалось название Project IOT с выбранной опцией ESP8266.
После нажатия кнопки «Create» у пользователя будет доступ к холсту проекта, то есть к пространству, в котором можно создавать собственное приложение.
Одновременно на адрес электронной почты, зарегистрированный в приложении, будет отправлено письмо с кодом.
Шаг пятый: настройка проекта и виджета
На странице проекта нужно кликнуть в любом месте экрана и откроется список доступных виджетов.
Есть 5 типов виджетов:
Контроллеры — используются для отправки команд, управляющих оборудованием.
Дисплеи — используются для просмотра данных с датчиков и других источников;
Уведомления — отправка сообщений и уведомлений;
Интерфейс — виджеты для выполнения определенных функций графического интерфейса;
Другое — виджеты, не относящиеся ни к одной категории;
У каждого виджета свои настройки.
В данном проекте был выбран виджет SuperChart. Виджет SuperChart «стоит» 900 единиц энергии, которые будут вычтены из начальной суммы (2000), показанной в верхней части экрана. Затем этот виджет будет добавлен в макет проекта. Так как компрессора два, то и виджета нужно два.
Поскольку этот виджет является средством просмотра данных, то есть данных о температуре и вибрации, которые будут отправлены в Blynk, для их правильного отображения необходимы некоторые настройки:
При нажатии на этот виджет, отображаются параметры конфигурации.
На этом новом экране щелкните DataStream, назовите его и щелкните значок конфигурации, где можно найти следующие данные:
Цифровые контакты — представляют собой физические цифровые контакты на вашем оборудовании. Контакты с поддержкой ШИМ отмечены символом ~.
Аналоговые выводы — представляют собой физические аналоговые выводы ввода-вывода на вашем оборудовании.
Виртуальные пины — используются для передачи любых данных между приложением Blynk и вашим оборудованием.
В данном проекте используются VIRTUAL V4 для температуры и VIRTUAL V1 для вибрации.
После выполнения команды приложение попытается подключиться к оборудованию через сервер Blynk. Однако у нас все еще нет оборудования, настроенного для его использования.
Шаг шестой: установка библиотеки и код
Теперь нужно установим библиотеку Blynk для Arduino IDE.
Загружаем файл Blynk_Release_vXX.zip. Затем разархивируем содержимое файла в папке альбомов Arduino IDE. Местоположение этой папки можно узнать непосредственно из среды разработки Arduino. Для этого откройте IDE Arduino и в File → Preferences посмотрите месторасположения Sketchbook.
После этого содержимое распакованного файла должно выглядеть следующим образом:
seu_diretorio_/libraries/Blynkseu_diretorio/libraries/BlynkESP8266_Lib
…
seu_diretorio/tools/BlynkUpdaterseu_diretorio/tools/BlynkUsbScript
После перезапуска IDE Arduino новые образцы кода, относящиеся к библиотеке Blynk, можно найти в разделе File → Examples → Blynk. Для данного примера аппаратного обеспечения, ESP8266, мастер выбирает пример File → Examples → Blynk → Boards_WiFi → ESP8266_Standalone.
Фото ниже определяет токен авторизации для управления оборудованием.
Этот токен представляет собой уникальный номер, который был сгенерирован при создании проекта в приложении и должен быть заполнен в соответствии с кодом, отправленным по электронной почте.
Строки внизу должны соответствовать имени и паролю сети Wi-Fi, к которой будет подключаться ESP8266.
После того, как строки кода будут скорректированы, загрузите программное обеспечение на плату разработки.
Код можно посмотреть ниже.
Показать / Скрыть текст#define BLYNK_PRINT Serial
#include
#include
#include
char auth[] = "Código do autor do projeto";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Nome da rede WIFI";
char pass[] = "SSID rede WIFi";
// MPU6050 Slave Device Address
const uint8_t MPU6050SlaveAddress = 0x68;
// Select SDA and SCL pins for I2C communication
const uint8_t scl = D1;
const uint8_t sda = D2;
// sensitivity scale factor respective to full scale setting provided in
datasheet
const uint16_t AccelScaleFactor = 16384;
const uint16_t GyroScaleFactor = 131;
// MPU6050 few configuration register addresses
const uint8_t MPU6050_REGISTER_SMPLRT_DIV = 0x19;
const uint8_t MPU6050_REGISTER_USER_CTRL = 0x6A;
const uint8_t MPU6050_REGISTER_PWR_MGMT_1 = 0x6B;
const uint8_t MPU6050_REGISTER_PWR_MGMT_2 = 0x6C;
const uint8_t MPU6050_REGISTER_CONFIG = 0x1A;
const uint8_t MPU6050_REGISTER_GYRO_CONFIG = 0x1B;
const uint8_t MPU6050_REGISTER_ACCEL_CONFIG = 0x1C;
const uint8_t MPU6050_REGISTER_FIFO_EN = 0x23;
const uint8_t MPU6050_REGISTER_INT_ENABLE = 0x38;
const uint8_t MPU6050_REGISTER_ACCEL_XOUT_H = 0x3B;
const uint8_t MPU6050_REGISTER_SIGNAL_PATH_RESET = 0x68;
int16_t AccelX, AccelY, AccelZ, Temperature, GyroX, GyroY, GyroZ;
void setup() {
Serial.begin(9600);
Wire.begin(sda, scl);
MPU6050_Init();
Blynk.begin(auth, ssid, pass);
}
void loop() {
double Ax, Ay, Az, T, Gx, Gy, Gz;
Read_RawValue(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
//divide each with their sensitivity scale factor
Ax = (double)AccelX/AccelScaleFactor;
Ay = (double)AccelY/AccelScaleFactor;
Az = (double)AccelZ/AccelScaleFactor;
T = (double)Temperature/340+36.53; //temperature formula
Gx = (double)GyroX/GyroScaleFactor;
Gy = (double)GyroY/GyroScaleFactor;
Gz = (double)GyroZ/GyroScaleFactor;
Serial.print("Ax: "); Serial.print(Ax);
Serial.print(" Ay: "); Serial.print(Ay);
Serial.print(" Az: "); Serial.print(Az);
Serial.print(" T: "); Serial.println(T);
delay(1000);
Blynk.run();
Blynk.virtualWrite(V1, Ax);
Blynk.virtualWrite(V2, Ay);
Blynk.virtualWrite(V3, Az);
Blynk.virtualWrite(V4, T);
}
void I2C_Write(uint8_t deviceAddress, uint8_t regAddress, uint8_t data) { Wire.beginTransmission(deviceAddress);
Wire.write(regAddress); Wire.write(data);
Wire.endTransmission();
}
// read all 14 register
void Read_RawValue(uint8_t deviceAddress, uint8_t regAddress) {
Wire.beginTransmission(deviceAddress);
Wire.write(regAddress); Wire.endTransmission();
Wire.requestFrom(deviceAddress, (uint8_t)14);
AccelX = (((int16_t)Wire.read()<<8) | Wire.read());
AccelY = (((int16_t)Wire.read()<<8) | Wire.read());
AccelZ = (((int16_t)Wire.read()<<8) | Wire.read());
Temperature = (((int16_t)Wire.read()<<8) | Wire.read());
GyroX = (((int16_t)Wire.read()<<8) | Wire.read());
GyroY = (((int16_t)Wire.read()<<8) | Wire.read());
GyroZ = (((int16_t)Wire.read()<<8) | Wire.read());
}
//configure MPU6050
void MPU6050_Init() {
delay(150); I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SMPLRT_DIV, 0x07); I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_1, 0x01); I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_2, 0x00); I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_CONFIG, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_GYRO_CONFIG, 0x00);//set +/-250 degree/second full scale
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00);// set +/- 2g full scale I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_FIFO_EN, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_INT_ENABLE, 0x01); I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SIGNAL_PATH_RESET, 0x00); I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_USER_CTRL, 0x00);
}
Код (3) .pdf
Шаг седьмой: модуль ESP
ESP6050 — это микросхема, которая произвела революцию благодаря своей низкой стоимости и быстрому распространению.
Что привлекает наибольшее внимание, так это наличие Wi-Fi, позволяющего подключать к Интернету (или локальной сети) несколько устройств, таких как датчики, исполнительные механизмы и т. д.
Чтобы облегчить использование этого чипа, несколько производителей создали модули и отладочные платы.
Эти модули различаются по размеру, количеству контактов или типу подключения.
В модулях используется один и тот же контроллер ESP8266, а количество портов GPIO зависит от модели модуля. В зависимости от модели могут быть интерфейсы I2C, SPI и PWM (помимо последовательного).
Модули питаются от 3,3В. У них также есть 32-битный процессор, работающий на частоте 80 МГц, поддерживающий Интернет в стандартах 802.11 b / g / n и различные протоколы безопасности, такие как WEP, WPA, WPA2 и т. д.
Программирование может выполняться с помощью AT-команд или на языке LUA. Они идеально подходят для проектов Интернета вещей, поскольку в спящем режиме они потребляют очень мало энергии.
Теперь об различиях модулей.
Модуль ESP8266 ESP-01.
Модуль ESP8266 ESP-01 — самый распространенный модуль в линейке ESP8266.
Он компактен (24,8 x 14,3 мм) и имеет два контакта GPIO, которыми можно управлять по расписанию. Прошивка ESP-01 может быть переписана и / или обновлена с помощью последовательного интерфейса.
Небольшим недостатком этого типа модуля является расположение контактов, которое затрудняет использование в прототипной плате, но можно использовать адаптер для модуля Wi-Fi ESP8266 ESP-01 (на фото ниже).
Модуль ESP8266 ESP-05.
Модуль Wi-Fi ESP8266 ESP-05 немного отличается от других плат линейки ESP8266, так как у него нет портов, которые можно использовать для активации устройств или чтения данных с датчиков.
С другой стороны, это интересная альтернатива для проектов Интернета вещей, когда нужно хорошее сетевое Интернет-соединение по невысокой цене.
Его можно использовать, например, для настройки веб-сервера с Arduino или для связи на большом расстоянии между платами.
У него нет встроенной антенны, но у него есть разъем для внешней антенны что значительно увеличивает диапазон сигнала Wi-Fi.
Модуль ESP8266 ESP-07.
Модуль ESP8266 ESP-07 также представляет собой компактный модуль (20 x 16 мм), но с другой компоновкой, без соединительных контактов.
Модуль имеет встроенную керамическую антенну, а также U-Fl разъем для подключения внешней антенны. Этот модуль имеет 9 GPIOS, которые могут работать как выводы I2C, SPI и PWM.
Компоновка модуля позволяет легко интегрировать его в печатную плату, широко используемую в проектах домашней автоматизации.
Модуль ESP8266 ESP-12E.
Модуль ESP8266 ESP-12E очень похож на ESP-07, но имеет только внутреннюю антенну (PCB).
Он имеет 11 контактов GPIO и широко используется в качестве основы для других модулей ESP8266, таких как NodeMCU.
Модуль ESP8266 ESP-201.
Модуль ESP8266 ESP-201 — это немного более простой в использовании модуль с точки зрения прототипирования, так как он может быть установлен на макетной плате.
4 боковых контакта, которые отвечают за последовательную связь, немного мешают этому типу сборки, но можно припаять эти контакты на противоположной стороне платы или использовать какой-либо адаптер.
ESP-201 имеет 11 портов GPIO, встроенную антенну и разъем U-FL для внешней антенны. Выбор антенны осуществляется путем смены перемычки (резистор 0 (ноль) Ом) в верхней части платы, рядом с разъемом U-FL.
Модуль ESP8266 ESP-12E.
Модуль ESP8266 NodeMCU ESP-12E представляет собой законченную плату для разработки, которая в дополнение к микросхеме ESP8266 имеет преобразователь TTL-Serial и регулятор напряжения 3,3 В.
Это модуль, который может быть напрямую подключен к макетной плате и не требует использования внешнего микроконтроллера для работы, так как его можно легко программировать с помощью LUA.
Он имеет 10 контактов GPIO (I2C, SPI, PWM), разъем micro-usb для программирования / питания и кнопки для сброса и прошивки модуля.
Как мы видим на изображении, NodeMCU ESP-12E поставляется со встроенной антенной, припаянной к плате.
Шаг восьмой: монтаж
Сборку мастер производит на макетной плате.
Макетная плата — это пластина с отверстиями и токопроводящими дорожками, используемая для сборки прототипов и проектов. Размер платы варьируются от 800 до 6000 отверстий, с вертикальными и горизонтальными соединениями.
На поверхности контактной матрицы имеется пластиковая основа, в которой есть отверстия для установки компонентов. В ее нижней части установлены металлические контакты. Обычно они выдерживают токи от 1 до 3 А.
MPU6050 работает по протоколу I2C, поэтому нужно всего два провода. Контакты SCL и SDA MPU6050 подключаются к контактам D1 и D2 NodeMCU, а контакты VCC и GND MPU6050 подключены к 3,3 В и GND NodeMCU.
Затем устройство устанавливается непосредственно на компрессор.
Ниже можно увидеть графики составленные на основе переданных данных от датчиков.
Здесь можно скачать и посмотреть видео с примером работы устройства.
Источник (Source)
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
Подборки: Arduino
Источник: