Оглавление:
- Шаг 1. Совет, который следует запомнить
- Шаг 2: MCP23016
- Шаг 3: адрес
- Шаг 4: Команды
- Шаг 5: Категории
- Шаг 6: структура для общения
- Шаг 7: программа
- Шаг 8: MCP23016
- Шаг 9: ESP-01
- Шаг 10: Установка ESP01
- Шаг 11: библиотеки и переменные
- Шаг 12: настройка
- Шаг 13: цикл
- Шаг 14: ParserData
- Шаг 15: ConfigurePort
- Шаг 16: WritePinData
- Шаг 17: WriteBlockData и настройка Wi-Fi
- Шаг 18: приложение
- Шаг 19: Скачать
Видео: Недорогая автоматизация с ESP01: 19 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Сегодня мы обсудим автоматизацию с использованием ESP01 с 16 реле. Это супер дешевая модель дизайна, в которой вы можете умножить модули и получить до 128 реле, так как в этот микроконтроллер можно установить до восьми расширителей портов.
В нашей схеме у вас будет приложение на смартфоне, которое взаимодействует с ESP01. Он будет иметь расширитель с 16 портами, каждый из которых подключен к реле. У нас также есть регулируемый источник 3 на 3. Поэтому мы будем управлять 16-канальным релейным модулем с помощью ESP01 через приложение для Android, которое я вам предоставлю.
Шаг 1. Совет, который следует запомнить
Друзья мои, важно отметить, что я использовал этот чип в схеме под названием MCP23016. Также важно посмотреть видео EXPANSOR OF IOS FOR ESP32, ESP8266 И ARDUINO, в котором я тестирую устройство и показываю, что оно работает с этими тремя типами плат.
Шаг 2: MCP23016
Здесь у нас есть образ MCP23016, который представляет собой микросхему с 28 контактами. Важно отметить, что существует также модель MCP23017, которая является более распространенной и не требует резистора и конденсатора, поскольку имеет внутренние часы. Это упрощает процесс, но его закрепление отличается от того, что мы показываем в этом видео.
Шаг 3: адрес
Чтобы определить адрес MCP23016, мы используем контакты A0, A1 и A2. Вы можете просто оставить их на HIGH или LOW для смены адреса.
Адрес будет сформирован следующим образом:
MCP_Address = 20 + (A2 A1 A0)
Если A2 A1 A0 может принимать значения HIGH / LOW, формируется двоичное число от 0 до 7.
Например:
A2> GND, A1> GND, A0> GND (означает 000, затем 20 + 0 = 20)
Или иным образом, A2> HIGH, A1> GND, A0> HIGH (означает 101, затем 20 + 5 = 25)
Шаг 4: Команды
Вот таблица с командами для связи:
Шаг 5: Категории
GP0 / GP1 - Регистры порта данных
Есть два регистра, которые обеспечивают доступ к двум портам GPIO.
Чтение регистра обеспечивает состояние контактов этого порта.
Бит = 1> ВЫСОКИЙ Бит = 0> НИЗКИЙ
IODIR0 / IODIR1
Есть два регистра, которые управляют режимом вывода. (Вход или выход)
Бит = 1> ВХОД Бит = 0> ВЫХОД
Шаг 6: структура для общения
Здесь мы говорим об адресе чипа и получаем доступ к командам и данным, что является своего рода протоколом, который необходимо использовать для отправки информации.
Шаг 7: программа
Мы сделаем программу, которая состоит из связи ESP01 с MCP23016, чтобы иметь больше GPIO для использования. Эти 16 новых GPIO, которые у нас будут, будут управлять 16-канальным релейным модулем.
Команды будут отправлены на ESP01 через приложение Android.
Шаг 8: MCP23016
Шаг 9: ESP-01
Это плата на 16 реле.
Шаг 10: Установка ESP01
Шаг 11: библиотеки и переменные
Мы включим библиотеки, отвечающие за связь i2c, а также за создание точки доступа и веб-сервера. Определяем адрес микросхемы и портов. Наконец, мы определяем переменные для хранения значений выводов MCP.
#include // Response pela comunicação i2c. # include // Response для точки доступа eo webserver WiFiServer server (80); // веб-сервер для доступа к приложению // endereço I2C do MCP23016 #define MCPAddress 0ÇTRISADOS # ENDERIS define GP0 0x00 // РЕГИСТР ПОРТА ДАННЫХ 0 #define GP1 0x01 // РЕГИСТР ПОРТА ДАННЫХ 1 #define IODIR0 0x06 // РЕГИСТР НАПРАВЛЕНИЯ В / В 0 #define IODIR1 0x07 // РЕГИСТР НАПРАВЛЕНИЯ В / В 1 // guarda os valores dos pinos сделать MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Шаг 12: настройка
Мы инициализируем ESP01 и настраиваем порты. Также мы настраиваем точку доступа и инициализируем сервер.
void setup () {Serial.begin (9600); задержка (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, ВЫХОД); configurePort (IODIR1, ВЫХОД); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // настройка точки доступа server.begin (); // инициализация сервера}
Шаг 13: цикл
Здесь я проверяю, были ли подключены к серверу какие-либо клиенты. Также читаем первую строку запроса. Мы извлекаем данные для манипуляции, определяем заголовок ответа по умолчанию и отправляем этот ответ клиенту.
void loop () {Клиент WiFiClient = server.available (); // Подтверждение наличия клиента для соединения if (! Client) {return; } String req = client.readStringUntil ('\ r'); // Faz a leitura da primeira linha da Requisição / * / MR - префикс заголовка для saber se a Requisição e esperada para os relés * / if (req.indexOf ("/ MR")! = -1) {parserData (req); // требуется дополнительная информация для обработки данных} else {Serial.println ("недопустимый запрос"); возвращение; } client.flush (); Строка s = "HTTP / 1.1 200 ОК / r / n"; // адрес электронной почты для ответа client.print (s); // envia a resposta para o cliente delay (1); } // конец цикла
Шаг 14: ParserData
Из запроса ищем данные, относящиеся к реле. Затем мы отправляем данные на MCP23016.
// обязательная часть данных, ссылающаяся на релевантный parserData (строковые данные) {uint8_t relay = -1; uint8_t gp = -1; uint8_t значение = -1; int index = data.indexOf ("/ MR"); // индекс do prefixo MR if (data [index + 5] == '/') // / MR01 / 1, onde 0 = GP; 1 = ОТПУСТИТЬ; 1 = ESTADO (вкл. / Выкл.) {Gp = data [index + 3] - '0'; реле = данные [индекс + 4] - '0'; значение = данные [индекс + 6] - '0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1, value, gp); }}
Шаг 15: ConfigurePort
Устанавливаем режим вывода GPIO (GP0 или GP1).
// configura o modo dos pinos GPIO (GP0 ou GP1) // como parameter passamos: // port: GP0 ou GP1 // INPUT para todos as portas do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // настраиваемое значение 0-255 показателей или режима портов (1 = ВВОД, 0 = ВЫВОД) // например: 0x01 или B00000001 или 1: параметры, которые используются для GPX.0, могут быть использованы, или восстановлены без использования конфигурации порта (порт uint8_t, пользовательский uint8_t) {if (custom == INPUT) {writeBlockData (порт, 0xFF); } else if (custom == OUTPUT) {writeBlockData (порт, 0x00); } else {writeBlockData (порт, настраиваемый); }}
Шаг 16: WritePinData
В этой части кода мы изменяем состояние желаемого вывода и отправляем данные на MCP.
// Muda o estado de um pino desejado, passando como parameter: // pin = pino desejado; значение = 0/1 (вкл / выкл); gp = 0/1 (ПОРТ на MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; если (gp == GP0) statusGP = currentValueGP0; иначе statusGP = currentValueGP1; если (значение == 0) {statusGP & = ~ (B00000001 << (контакт)); // muda o pino para LOW} else if (value == 1) {statusGP | = (B00000001 << (контакт)); // муда или пино для ВЫСОКОГО} if (gp == GP0) currentValueGP0 = statusGP; иначе currentValueGP1 = statusGP; // envia os dados для MCP writeBlockData (gp, statusGP); задержка (10); }
Шаг 17: WriteBlockData и настройка Wi-Fi
Здесь мы отправляем данные на MCP23016 через шину i2c. Затем мы настраиваем свойства, чтобы включить точку доступа. Наконец, мы настроили WiFi для режима точки доступа и создали AP с SSID и ПАРОЛЕМ.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) void writeBlockData (uint8_t port, uint8_t data) {Wire.beginTransmission (MCPAddress); Wire.write (порт); Wire.write (данные); Wire.endTransmission (); задержка (10); }
// настроить как параметры для доступа к ТОЧКЕ ДОСТУПА Избегайте setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP («ESP01_RELAY», «12345678»); }
Шаг 18: приложение
Для создания приложения мы используем MIT App Inventor 2, доступ к которому можно получить по ссылке:
ai2.appinventor.mit.edu/
Приложение состоит из двух экранов, содержащих по восемь пар кнопок в каждом, указывающих состояние каждого реле.
Ниже приведены некоторые из используемых программных блоков:
ВАЖНО: IP-адрес ESP по умолчанию, так как точка доступа - 192.168.4.1
1. Когда экран инициализируется, мы сохраняем IP в памяти и вызываем процедуру восстановления состояния кнопок (ВКЛ / ВЫКЛ).
2. Вызов другого экрана
1. При нажатии на кнопку ВКЛ одного из реле мы внесем визуальные изменения в кнопку (зеленые блоки). WebViewer1. GoToUrl делает запрос для нашего ESP01, связывая данные MR01 / 1 в URL-адресе.
2. При нажатии кнопки ВЫКЛ одного из реле мы внесем визуальные изменения в кнопку (зеленые блоки). WebViewer1. GoToUrl делает запрос к нашему ESP01, связывая данные MR01 / 0 в URL-адресе.
Эта процедура используется для восстановления состояния кнопок (реле), потому что при смене экрана он возвращается к шаблону создания.
Желтый блок повторяется для каждой пары кнопок.
Шаг 19: Скачать
Вот файлы проекта для скачивания:
Файл проекта MIT App Inventor 2 - скачать
Приложение APK для установки на android - скачать
Загрузите остальные файлы:
Я НЕТ
Рекомендуемые:
Pandemi: недорогая роботизированная система дезинфекции: 7 шагов
Pandemi: недорогая роботизированная система дезинфекции: это дешевый, простой в изготовлении робот. Он может стерилизовать вашу комнату УФ-светом, он легкий и маневренный, он может перемещаться по любой местности и может вписаться в любой дверной проем. Он также безопасен для человека и полностью автономен
Недорогая домашняя автоматизация своими руками с использованием Esp8266: 6 шагов
Самодельная недорогая домашняя автоматизация с использованием Esp8266: Привет всем, Сегодня в этой инструкции я покажу вам, как я подготовил свою собственную домашнюю автоматизацию в качестве шага к умному дому с использованием модуля ESP 8266, обычно известного как nodemcu, чтобы не терять время Давайте начнем:)
Простая недорогая управляемая рука Arduino: 5 шагов
Простая и недорогая управляемая рука Arduino: в огромном Интернете можно найти множество дорогих роботизированных рук, напечатанных на 3D-принтере и основанных на гибких датчиках. Однако, будучи студентом, у меня не так много доступа к таким вещам, как ЧПУ, 3D-принтеры и электрические инструменты. У меня есть решение, мы собираемся построить л
MQmax 0.7 - недорогая платформа для Интернета вещей WiFi на базе Esp8266 и Arduino Mini Pro: 6 шагов
MQmax 0.7 - недорогая платформа для Интернета вещей WiFi на базе Esp8266 и Arduino Mini Pro: Здравствуйте, это моя вторая инструкция (с этого момента я перестану считать). Я сделал это, чтобы создать простую (по крайней мере для меня), дешевую, легкую в изготовлении и эффективную платформу для реальных приложений IoT, которые включают работу M2M. Эта платформа работает с esp8266 и
Недорогая сеть беспроводных датчиков в диапазоне 433 МГц: 5 шагов (с изображениями)
Недорогая сеть беспроводных датчиков в диапазоне 433 МГц: Большое спасибо Терезе Раджба за любезное согласие на использование данных из их публикаций в этой статье. * На изображении выше - пять датчиков-отправителей, которые я использовал для тестирования сети? Простое определение woul