Одновременно с выходом в недалёком 2014 году чипа беспроводной связи ESP8266EX по стандарту WiFi, набравшего по-настоящему оглушительную популярность в кругу любителей собирать самодельные устройства, компания WEMOS Electronics представила общественности большую линейку собственных модульных электронных плат под торговой маркой WeMos, задав новый вектор развития ардуино-совместимых платформ. Взяв за основу микроконтроллер от компании Espressif Systems, разработчики значительно потрудились не только над уменьшением размеров базовых модулей, сделав их максимально компактными, но и над выпуском целого спектра расширений, предложив пользователям богатый функционал, способный помочь в реализации задач различного уровня сложности при проектировании и конструировании разнообразных полезных изобретений.
Современные электронные продукты WeMos входят в категорию эффективных низкоценовых решений и позиционируются создателями как открытая платформа для самостоятельной разработки многоцелевых устройств на основе беспроводной связи по технологии WiFi. При этом основной упор сделан на создание и развитие изделий с поддержкой сетей нового поколения "Интернет вещей" (англ. - Internet of Things, IoT), чему активно способствуют существующие возможности облачных вычислений и межмашинных взаимодействий.
Чтобы потребитель не смог запутаться в физической совместимости плат, каждая серия обладает своими отличительными особенностями. Например, серия WeMos D1 Mini, к которому принадлежит Relay Shield Модуль электромагнитного реле, имеет синий цвет поверхности текстолита и небольшой скруглённый угловой вырез рядом с маркировкой 3V3. Вырез служит ориентиром, гарантирующим правильное совмещение нескольких плат между собой.
Технические характеристики
- Модель: 1.0.0
- Питание: 5 В
- Потребляемый ток: до 60 мА
- Совместимость: WeMos D1 mini / WeMos D1 mini PRO
- Активные выводы: D1, 5V, GND
- Реле: JQC-3FF-S-Z
- Выводы коммутации: NO, NC, COM
- Максимальная нагрузка: 10А/250В, 15А/125В, переменное напряжение
- Оптическая изоляция: отсутствует
- Встроенные транзисторный ключ и защитный диод
- Световая индикация состояния
- Размер: 28.0 х 25.6 х 17.6 мм
Подавляющее большинство современных и разнообразных электронных систем, служащих для управления и коммутации устройств, не обходятся без их главного компонента — электромагнитных реле. Именно благодаря реле, становится возможным управляемое включение, отключение или переключение разного рода силовых нагрузок, заставляющих работать связанные приборы в различных режимах и при определённых событиях. Встречаются реле повсеместно, начиная от обычного термостата на простеньком микроконтроллере и заканчивая сложными интеллектуальными автоматизированными комплексами.
Функционал модуля Вемос реле шилд
Говоря простым языком, конструкция реле представляет из себя неподвижный металлический сердечник, расположенный в центре катушки индуктивности. Напряжение, поступающее на обмотку катушки, создаёт магнитное поле на конце сердечника, приводя в движение встроенных механизм замыкания или размыкания цепей внешней нагрузки, подключенных к коммутационным выводам. Всего у реле три вывода с винтовым соединением. По центру находится общий вход, по которому поступает ток для внешней нагрузки. По краям размещены нормально открытый (разомкнутый в исходном состоянии, NO) и нормально закрытый (замкнутый в исходном состоянии, NC) выходы, через которые нагрузочный ток уходит дальше. Во время срабатывания реле, выходы NO и NC меняют своё положение на обратное, и возвращаются в исходное состояние при отсутствии напряжения в катушке индуктивности.
Наглядно понять схему подключения поможет нижеприведённая принципиальная схема модуля реле WeMos. В зависимости от типа коммутации, не сложно создать несколько вариантов управления силовыми цепями: включение одной цепи при срабатывании реле, отключение одной цепи при срабатывании реле, или переключение между двумя цепями с одинаковым рабочим напряжении.
Электромагнитное реле WeMos Relay Shield основано на одноканальном реле JQC-3FF-S-Z, позволяющим замыкать силовые цепи переменного напряжения до 250В с пиковой нагрузкой до 10А (или до 15А при переменном напряжении до 125В). Питается реле от постоянного напряжения 5 вольт. Для совместимости с контроллером Вемос Д1 мини (Про), все цифровые контакты которого восприимчивы лишь к 3.3-вольтовому напряжению, схемой модуля предусмотрен специальный транзисторный "ключ", развязывающий друг от друга оба типа напряжения. В качестве защиты от обратного напряжения, возникающего в катушке при отключении нагрузки, в схему установлен дополнительный диод.
Управление реле по умолчанию назначено на вывод D1 шилда Relay Shiled Wemos. Высокоуровневый сигнал вывода приводит к включению реле, низкоуровневый сигнал возвращает реле в исходное положение. В качестве информационного индикатора, указывающего на состояние реле, в модуль интегрирован светодиод, зажигающийся при срабатывании катушки индуктивности.
Составляя WeMos-проекта, необходимо учитывать достаточно высокий корпус реле. Стандартные соединения, входящие в комплект с модулем, слишком малы и не позволят установить сверху какое-либо другое WeMos-расширение. Решением может стать многослойное наращивание соединений или использование специально разработанных для подобных задач переходников Вемос Двойная база или Вемос Тройная база. Прибегнув к их помощи, добавление нескольких подобных модулей в одну WeMos-конструкцию не вызовет затруднений.
Программирование на Ардуино
Способ программирования реле WeMos Relay Shield практически ничем не отличается от самого наипростейшего аналогичного метода включения/выключения встроенного на плате микроконтроллера WeMos D1 Mini (Pro) светодиода, и будет понятет даже тем, кто только начинает постигать азы программирования контроллерных платформ.
const int relayPin = D1; // контакт, подключенный к реле
const long interval = 2000; // пауза на две секунды
void setup() {
pinMode(relayPin, OUTPUT); // устанавливаем контакт D1 в режим вывода
}
void loop() {
digitalWrite(relayPin, HIGH); // срабатывание реле при высокоуровневом сигнале
delay(interval); // пауза
digitalWrite(relayPin, LOW); // отключение реле при низкоуровневом сигнале
delay(interval); // пауза
}
Использование команды delay() при работе с реле может показаться не совсем уместной, так как команда полностью приостанавливает выполнение всей программы на заданное время. Если во время ожидания требуется продолжение выполнения кода, следует присмотреться к функции millis(), которая позволит реализовать задержку без delay(). Функция millis() выполняет постоянный отсчёт в миллисекундах, начиная с 0 до 4294967295 (около 50 дней) с момента включения микроконтроллера. После переполнения, значение сбрасывается.
const int relayPin = D1; // контакт, подключенный к реле
const long interval = 2000; // пауза на две секунды
int relayState = LOW; // начальное состояние реле
unsigned long previousMillis = 0;
void setup() {
Serial.begin(115200); //открываем последовательный порт
pinMode(relayPin, OUTPUT); // устанавливаем контакт D1 в режим вывода
}
void loop() {
// текущее значение берем из счетчика
unsigned long currentMillis = millis();
// разместим отладочный код, чтобы наблюдать
// как происходит подсчет и смена состояния реле
Serial.print("Current Millis: ");
Serial.print(currentMillis);
Serial.print(" ");
Serial.print("Previos Millis: ");
Serial.print(previousMillis);
Serial.print(" ");
Serial.print("Relay stat: ");
Serial.println(relayState);
// сравниваем значения текущего значения счетчика
// с величиной заданного интервала
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// если оно болше, то меняем состояние реле
relayState = !relayState;
digitalWrite(relayPin, relayState);
}
}