Модуль реле для arduino: компоненты и схема сборки. Реле модуль, его подключение к Arduino или как начать делать умный дом

Помощь 14.07.2019
Помощь

Если вам уже надоело играть со светодиодами, можна попробовать создать нечто подобное, типа "умный дом" своими руками. В этом нам на помощь прийдет модуль реле. В данной статье разберем, как подключить реле модуль к Arduino, как управлять с его помощью обычной лампочкой 220 В.
Прежде всего, разберемся, что же такое реле.
Реле - это электрически управляемый, механический переключатель. Внутри этого корпуса есть электромагнит, при попадании на него электрического тока, он срабатывает, в результате чего якорь притягивается к электромагниту и контактная группа замыкает или размыкает цепь питания нагрузки.

Это реле имеет рабочее напряжение 5V и может коммутировать токи до 10А 30V и 10A 250V .

Реле имеет две раздельных цепи: цепь управления, представленная контактами А1, А2 и цепь управления, контакты 1, 2, 3. Цепи никак не связаны между собой.

Между контактами А1 и А2 находится металлический сердечник, и когда по нему протекает ток, то к сердечнику притягивается якорь(2). Контакты 1 и 3 остаются неподвижными. Важно знать, что якорь подпружинен, и до того момента пока не будет напряжения на сердечнику, якорь будет оставаться замкнутым на контакт 3. При подаче напряжения, якорь замыкает контакт 1. Когда напряжение снимается, пружина возвращается в исходное положение.

Модуль реле имеет 3 вывода (стандарта 2.54мм):

IN (S) : входной сигнал

GND: "минус" питания

VCC: "плюс" питания

Подключение модуля реле к Arduino довольно просто:

VCC на + 5 вольт на Arduino.

GND на любой из GND пинов­­­ Arduino.

IN (S) на любой из цифровых входов/выходов Arduino.

Подключение устройств к модулю реле

Модуль имеет еще 3 контакта для подключения любых устройств:

  • NC - нормально замкнутый контакт (Normally Closed)
  • NO - нормально разомкнутый контакт(Normally Open)
  • COM - обший (Common)

Непосредственно к контактам NC и NO подключаются нужные устройства, COM подключается к "плюсу" питания. Когда реле сработает «общий» контакт COM замкнет на «нормально разомкнутый» контакт «NO » (Normally Open). Когда реле выключено, общий контакт «COM » (common) замыкает на нормально замкнутый контакт «NC » (Normally Closed).

Схема подключения реле:


Переходим непосредственно к программе. Тут реле будет просто включаться и выключаться с интервалом в 1 секунду.

Пример программного кода:

// Реле модуль подключен к цифровому выводу 5 int Relays = 5; void setup () { pinMode(Relays, OUTPUT); } void loop () { digitalWrite(Relays, LOW); // реле включено delay(1000); digitalWrite(Relays, HIGH); // реле выключено delay(1000); }

Для подключения лампы накаливания следует поставить реле в разрыв одного из проводов.

На нашем модуле контакты 1, 2, 3 расположены таким образом. Для подключения лампы накаливания следует поставить реле в разрыв одного из проводов.


Должно получиться так как показано на рисунке.


Всем привет! Всё, что мы изучали до недавнего времени, были «учебными задачами». Пришло время поставить более серьёзную.

Микроконтроллер (далее – МК) может успешно управлять различными нагрузками (потребителями электроэнергии). Однако выполнять данные операции напрямую он не может. Поскольку напряжение, что протекает в сети на порядки отличается от напряжения, что в состоянии «выдать» МК.

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

  • подключение реле к МК (в нашем случае плата Arduino);
  • управление релейным модулем;
  • управление реальным потребителем электроэнергии;

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

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

Управление модулем, на котором установлено реле осуществляется при помощи постоянного напряжения 5В. Модуль способен коммутировать 300 Вт (30В, 10А постоянки) и 2500 Вт (250В, 10А переменки).

Само реле состоит из двух цепей, что не связаны друг с другом. Первая цепь (управляющая) выводы А1, А2. Вторая цепь (управляемая) выводы 1, 2, 3.

Конструкция управляющей цепи следующая: между выводами А1 и А2 находится металлический сердечник, к которому в момент протекания по нему тока притягивается подвижный якорь 2. Выводы 1 и 3 неподвижны. Якорь фиксируется пружинной. В момент, когда ток не течёт по сердечнику, якорь прижат к контакту 3. Когда цепь замыкается и начинает протекать ток, якорь притягивается к контакту 1 и в этом момент звучит характерный «щелчок». После разрыва цепи пружина возвращает якорь на исходную позицию.

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

Контакты в реле делятся на два типа:

  • нормально закрытый (НЗ) (пара 1-2);
  • нормально открытый (НО) (пара 2-3).

По условию НЗ разомкнут (не звонится мультиметром накоротко), а НО замкнут (звонится мультиметром накоротко). Подключаем разрыв фазы на нормально закрытую пару контактов.

Индикация:

  • Красный светодиод извещает пользователя о том, что на модуль подано питание;
  • Зеленый светодиод извещает пользователя о том, что реле замкнуто.

Принцип работы модуля.

В момент, когда мы включаем МК, его выводы находятся в высокоимпедансном состоянии (очень большое сопротивление), соответственно транзистор закрыт. Для открытия транзистора необходимо подать низкий уровень сигнала, иными словами 0 (касается транзистора p-n-p типа). После этого транзистор открывается и через первую (управляющую) цепь начинает протекать ток, в этот момент мы слышим характерный «щелчок». Чтобы выключить реле, нужно подать высокий уровень сигнала на транзистор.

Распиновка выводов модуля:

  • VCC — «+» питание;
  • GND — «-» земля;
  • IN — входной сигнал, что «рулит» релюшкой.

Подключаем релюшку к Arduino :

  • VCC «кидаем» на вывод 5В платы arduino.
  • GND «кидаем» на один из выводов GND платы arduino.
  • IN «кидаем» на 13 вывод платы arduino.

Для того, чтобы подключить потребитель электроэнергии (в моём случаем лампочку накаливания) реле ставим в разрыв одной из жил провода (ставить следует на фазу).

Испытательный стенд состоит из трёх частей:

  • Линия питания;

Реле Ардуно позволяет подключить устройства, работающие в режимах с относительно большими токами или напряжения. Мы не можем напрямую подключить к плате Arduino мощные насосы, двигатели, даже обычную лампочку накаливания – плата не предназначена для такой нагрузки и работать не будет. Именно поэтому нам придется добавить в схему реле, который вы можете встретить в любом проекте. В этой статье мы поговорим о том, что такое реле, какие они бывают, как можно их подключить своем ардуино проекте.

Реле – это шлюз, который позволяет соединить вместе электрические цепи с совершенно разными параметрами. Обычный шлюз на реке соединяет водные каналы, расположенные на разной высоте, открывая или закрывая ворота. Реле в ардуино включает или выключает внешние устройства, определенным образом замыкая или размыкая отдельную электрическую сеть, в которую они подключены. С помощью ардуино и реле мы управляем процессом включения или выключения так же, как включаем или выключаем свет дома – подавая команду на замыкание или размыкание. Ардуино подает сигнал, само же замыкание или размыкание “мощной” цепи будет делать реле через специальные внутренние механизмы. Реле можно представить себе в виде дистанционного пульта, с помощью которого мы выполняем нужные действия с помощью относительно “слабых” сигналов.

Реле характеризуется следующими параметрами:

  • Напряжение или ток срабатывания.
  • Напряжение или ток отпускания.
  • Время срабатывания и отпускания.
  • Рабочие ток и напряжение.
  • Внутреннее сопротивление.

В зависимости от типа этих внутренних размыкающих механизмов и особенностях устройства можно выделить две основные группы реле: электромеханические реле (включение с помощью электромагнита) и твердотельные реле (включение через специальные полупроводниковые компоненты).

Электромагнитные и твердотельные реле

Электромагнитное реле

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

Работает реле благодаря электромагнитной силе, возникающей в сердечники при подаче тока по виткам катушки. В исходном состоянии пружина удерживает якорь. Когда подается управляющий сигнал, магнит начинает притягивать якорь и замыкать либо размыкать цепь. При отключении напряжения якорь возвращается в начальное положение. Источниками управляющего напряжения могут быть датчики (давления, температуры и прочие), электрические микросхемы и прочие устройства, которые подают малый ток или малое напряжение.

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

Классификация электромагнитных реле:

  • Управляющий ток может быть как постоянным, так и переменным. В первом случае устройство может быть нейтральным или поляризованным. Для переменного тока якорь выполняется из электротехнической стали, чтобы уменьшить потери.
  • Якорное или герконовое реле. Для якорного процесс замыкания и размыкания происходит при помощи перемещения якоря, для герконового характерно отсутствие сердечника, магнитное поле воздействует на электрод с контактами.
  • Быстродействие – до 50 мс, до 150 мс и от 1 с.
  • Зщитное покрытие – герметизированное, зачехленное и открытое.

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

Твердотельные реле

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

  • Долгий срок эксплуатации.
  • Быстродействие.
  • Малые размеры.
  • Отсутствуют посторонние шумы, акустические помехи, дребезги контактов.
  • Низкое потребление энергии.
  • Качественная изоляция.
  • Стойкость к вибрации и ударам.
  • Нет дугового разряда, что позволяет работать во взрывоопасных местах.

Работают по следующему принципу: подается управляющий сигнал на светодиод, происходит гальваническая развязка управляющей и коммутируемой цепей, затем сигнал переходит на фотодиодную матрицу. Напряжение регулирует силовым ключом.

Твердотельные реле также имеют несколько недостатков. Во-первых, при коммутации происходит нагрев устройства. Повышение температуры устройства приводит к ограничению регулируемого тока – при температурах, превышающих 60 градусов, уменьшается величина тока, максимальная рабочая температура 80 градусов.

Твердотельные реле классифицируются по следующим признакам:

  • Тип нагрузки – однофазные и трехфазные.
  • Способ управления – коммутация происходит за счет постоянного напряжения, переменного или ручного управления.
  • Метод коммутации: контроль перехода через ноль (применяется для слабоиндуктивных, емкостных и резистивных нагрузок), случайное включение (индуктивные и резистивные нагрузки, которым необходимо мгновенное срабатывание) и фазовое управление (изменение выходного напряжения, регулировка мощности, управление лампами накаливания).

Реле в проектах Ардуино

Наиболее распространенное реле для платы Ардуино выполняется в виде модуля, например, SONGLE SRD-05VDC. Устройство управляется напряжением 5 В, может коммутировать до 10 А 30 В DC и 10 А 250 В AC.

Схема изображена на рисунке. Реле состоит из двух не связанных между собой цепей – управляющая цепь А1 и А2 и управляемая 1, 2 и 3.

Между А1 и А2 имеется металлический сердечник. Если пустить по нему электрический ток, к нему притянется якорь (2). 1, 3 – неподвижные контакты. При отсутствии тока якорь будет около контакта 3.

Подключение реле к Ардуино

Рассмотрим одноканальный модуль реле. Он имеет всего 3 контакта, подключаются они к Ардуино Uno следующим образом: GND – GND, VCC – +5V, In – 3. Вход реле – инвертирован, так что высокий уровень на In выключает катушку, а низкий – включает.

Светодиоды нужны для индикации – при загорании красного LED1 подается напряжение на реле, при загорании зеленого LED2 происходит замыкание. Когда включается микроконтроллер, транзистор закрыт. Для его открытия на базу нужен минус, подается при помощи функции digitalWrite(pin, LOW);. Транзистор открывается, протекает ток через цепь, реле срабатывает. Чтобы его выключить, на базу подается плюс при помощи digitalWrite(pin, HIGH);.

Умная розетка на Arduino, что может быть проще. Основной целью данного проекта было разработать розетки с беспроводным управлением, а также «автоматизировать» вход в Windows. Мотивирующая составляющая – разобраться, что такое RFID–метки и как с ними работать. В итоге было разработано два устройства – деблокиратор, который считывает карточки и собственно умная розетка, которая принимает сигнал «включиться» от деблокиратора. Если я Вас заинтересовал прошу к прочтению.


К слову, деблокиратор в данном проекте умеет как читать RFID-метки, так и писать на них. Область применения умной розетки достаточно большая. С их помощью можно удаленно включать и отключать электрические устройства. Так же данный проект может быть использован как пример для создания более сложных устройств управления электрическими устройствами (об этом в заключении). Сначала, думаю, стоит показать проект в работе, а потом рассказать как все работает.


Из чего это сделано

Умная розетка

Вид изнутри:


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


Использованные компоненты:

  • Arduino Leonardo
  • АС-DС миниатюрный блок питания на 12В
  • Bluetooth-модуль
  • Обычная розетка на 220В, 2 штуки
  • Вилка 220В с проводом
  • Контактная площадка
  • Двухцветный светодиод для индикации работы
  • Площадка из ДСП для размещения компонентов

Подробнее о компонентах. Все комплектующие я разместил на площадке из ДСП размером 15 на 15 сантиметров.



Крепление всех комплектующих к площадке выполнено при помощи шурупов и предварительно просверленных в площадке отверстий. В качестве микроконтроллера я использовал именно Arduino Leonardo, так как эта плата в отличие от Uno, например, может выступать в роли USB-HID устройства. На фото Uno, но это фото, сделанное до появления идеи разблокировать Windows с помощью розетки. Leonardo нам нужен, чтобы сымитировать ввод пароля. Вместо Leonardo для этих целей можно было взять Arduino Due, Micro, Zero или Esplora.

Модуль реле

Что касаемо модуля реле, то он на два канала:



Коммутируемые токи до 10А при AC250V или DC30V. Имеется два управляющих пина на каждое реле и пины питания и земли. Важно отметить, что пины в данном модуле инверсные, то есть делая так:


digitalWrite(relay_pin, HIGH);

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


О проводке. Для низковольтной части схемы я использовал обычные коннекторы из шлейфа DuPont. Для высоковольтной части я взял алюминиевые провода сечением 2 мм. Будьте очень осторожны и внимательны при монтаже высоковольтных проводов!


О блоке питания. Я использовал блок питания для светодиодных лент, выходные параметры которого 12В, 0,4 А - достаточно и не много для Arduino. Зачем он нужен? Нужен для того, чтобы низковольтная часть схемы использовало то же напряжение, которое идет на наши розетки. Плюс от блока питания подается на Vin вход Arduino, минус - на Gnd. На заметку: вполне безопасно подключать USB-кабель одновременно с подключенным блоком питания на Vin.

Bluetooth-модуль

Теперь самое интересное - Bluetooth-модуль. В данном проекте я использовал модуль HC-05, так как он может выступать как в роле мастера, так и в роли слейва.



Слейвом у меня является модуль, установленный в умную розетку, мастером - модуль в деблокираторе. Таким образом, деблокиратор всегда является инициатором подключения. Данные модули можно сконфигурировать так, чтобы при включении они соединялись автоматически. Так я и сделал. Конфигурирование данного bluetooth-модуля выполняется путем отправки ему AT-команд. Для того, чтобы модуль мог принимать AT-команды его нужно перевести в AT-режим. Модуль, который попался мне (FC-114) имеет на борту кнопку (см. фото). Если ее зажать при включении модуль войдет в AT-режим. Согласитесь, неудобно. При таком подходе я не смогу динамически подключиться к какому-либо неизвестному до этого модулю. Было бы хорошо, чтобы можно было подать на какой-либо пин модуля логическую единицу и таким образом войти в AT-режим. Так и сделано во многих модулях, но не в FC-114. Такой пин имеет номер 34 в моем модуле и для того, чтобы в будущем, если понадобится подключаться к bluetooth-модулям динамически, я припаял к пину 34 модуля провод, который можно подключить к пину Arduino.



Теперь о командах для соединения двух bluettoth-модулей HC-05. В режиме слейв каждый модуль HC-05 работает "из коробки". Нужно лишь узнать его MAC-адрес, который мы будем использовать при конфигурировании мастера. Делать это будем при помощи AT-команд, о которых я упоминал выше. Для начала необходимо подключить пин RX bluetooth-модуля к пину 0 Arduino (тоже RX), пин TX соответственно к пину 1 Arduino. Обратите внимание, что здесь соединение не кроссовер, потому что мы используем UART Arduino. Далее необходимо залить на Arduino пустой скетч, так как опять таки мы используем UART Arduino.


void setup() { } void loop() { }

Далее, перед включением питания, как я упоминал выше, необходимо зажать маленькую кнопку на bluetooth-модуле, чтобы войти в AT-режим. После этого, используя стандартную IDE (Tools -> Serial Monitor). Также, открыв Serial Monitor, необходимо установить скорость передачи данных (baud rate) равную 38400 и установить подстановку символов \r\n после каждой команды (Both NL & CR). Проверить, что все подключено верно и работает, можно путем ввода "AT". В ответ мы должны получить "OK". Далее можно написать команду "AT+NAME?". В ответ мы должны получить название bluetooth-модуля. На данный момент мы работает со слейв-устройством, поэтому все, что нам нужно, это узнать его MAC-адрес и убедиться, что оно работает в режиме "Slave", а не "Master". Для этого вводим две команды:


AT+ROLE?

Если мы получили 0 - значит, что устройство работает в режиме "Slave", 1 - "Master". Чтобы изменить это значение, команда отправляется таким образом:


AT+ROLE=0 - изменить режим работы на "Slave":

Теперь узнаем MAC-адрес Slave"а, чтобы Master знал, к кому ему нужно подключаться. Вводим команду:


AT+ADDR?

Например, ответ был такой: "ADDR:20:2:110001". Это означает, что MAC-адрес нашего Slave"а 20:2:110001.



На этом работа со Slave"ом закончена. Переходим к конфигурированию Master"а. Таким же образом подключаем его к Arduino и заливаем пустой скетч, открываем Serial Monitor, ставим скорость передачи 38400, и подстановку /r/n. Далее вводим команды по порядку.


AT+ORGL AT+RMAAD AT+ROLE=1 AT+CMODE=1 AT+INIT AT+INQ AT+LINK=MAC-адрес (пример: 20,2,110001)

Итак, подробнее о каждой команде. Команда ORGL полностью сбрасывает устройство, а команда RMAAD удаляет все предыдущие "пары" с другими Slave-устройствами. Команда ROLE, как говорилось выше, имея аргумент 1 означает, что мы хотим, чтобы устройство работало в режиме Master. Команда CMODE с аргументом 1 (по умолчанию равен 0) означает, что наше Master-устройство может подключаться к Slave-устройству с любым адресом (можно задать определенный). Команда INIT запускает библиотеку SPP (Serial Port Profile), нужную для передачи/получения информации. Емкое высказывание зачем она нужна: "В то время как спецификация Bluetooth описывает как работает эта технология, профили определяет то, как с этой технологией работать". Вы можете получить ошибку 17 на данном шаге. Это означает, что библиотека уже запущена, просто продолжайте. Команда INQ означает, что наше Master-устройство начинает поиск Slave-устройств. Вывод данной команды - это список MAC-адресов найденных устройств. Например:


+INQ:address,type,signal 20:2:110001,0,7FFF

Сигнал и тип можно проигнорировать. Находим MAC-адрес нашего Slave"а и следующей командой LINK соединяем Master-устройство со Slave"ом. Обратите внимание, что здесь двоеточия в MAC-адресе заменяются на запятые. После этого Ваши bluetooth-устройства должны начать моргать два раза в ~2 секунды. Это означает, что они соединены. До этого они моргали достаточно часто (два раза в секунду) - это значит, что они в поиске "пары".


Полный список AT-команд:


Деблокиратор

Вид изнутри:


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


Использованные компоненты:

  • Arduino Uno
  • Bluetooth-модуль
  • RFID - сенсор
  • LCD - модуль
  • Тумблер для переключения режима
  • Пьезоэлемент

Подробнее о компонентах.

LCD - модуль

В рамках данного проекта был использован LCD-модуль 1620. Данный дисплей способен отобразить 2 строки по 16 символов каждая. Модуль подключается к микроконтроллеру Arduino через интерфейс I2C. I2C – последовательная шина данных для связи интегральных схем, использующая две двунаправленные линии связи (SDA и SCL). Данные передаются по двум проводам - проводу данных и проводу тактов. Есть ведущий (master) и ведомый (slave), такты генерирует master, ведомый лишь принимает байты. Всего на одной двухпроводной шине может быть до 127 устройств. I2C использует две двунаправленные линии, подтянутые к напряжению питания и управляемые через открытый коллектор или открытый сток – последовательная линия данных (SDA, англ. Serial Dаta) и последовательная линия тактирования (SCL, англ. Serial Clock). В скетче для работы с данным модулем используется библиотека LiquidCrystal_I2С. С ее помощью выводить данные на дисплей предельно просто. Данный пример кода выводит две символьные строки на две строки дисплея.


void lcd_display_two_lines(const char* first_line, const char* second_line) { g_lcd.clear(); g_lcd.setCursor(0, 0); // Установить курсор в начало первой строки g_lcd.print(first_line); g_lcd.setCursor(0, 1); // Установить курсор в начало второй строки g_lcd.print(second_line); }

RFID - модуль


С этим модулем и с технологией RFID в целом было особенно интересно разобраться. В рамках данного проекта был использован RFID-модуль RC-522, который работает с картами стандарта HF, в частности MIFARE с частотой 13,56 МГц. Данный модуль подключается к микроконтроллеру Arduino через интерфейс SPI. SPI – последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. В SPI используются четыре цифровых сигнала:

  • MOSI – Служит для передачи данных от ведущего устройства ведомому;
  • MISO – Служит для передачи данных от ведомого устройства ведущему;
  • SCK – Служит для передачи тактового сигнала для ведомых устройств;
  • NSS – выбор микросхемы, выбор ведомого

RFID-модуль выступает в качестве ведомого, а микроконтроллер – в качестве ведущего.

Структура памяти RFID-карт MIFARE Classic

Память чипов MIFARE Classic имеет четкую структуру (в отличие от MIFARE DESFIre, имеющего более сложную, файловую организацию памяти). Память MIFARE 1K и MIFARE 4K разделена на сектора, 16 секторов у MIFARE 1K и 40 секторов у MIfare 4K. Каждый сектор MIFARE 1K и первые 32 сектора MIFARE 4K состоят из трех блоков данных и одного блока для хранения ключей (Sector Trailer). Последние 8 секторов MIFARE 4K состоят из 15 блоков данных и одного (16-го) блока хранения ключей. Блоки данных доступны для чтения/записи при условии успешной авторизации по ключу.


О "служебном" блоке. Блок Sector Trailer хранит секретные значения ключей (А и В) для доступа к соответствующему сектору, а также условие доступа (определяемое значением битов доступа). Блок Sector Trailer всегда последний (четвертый) блок в секторе. Каждый сектор MIFARE Classic может иметь свои собственные ключи доступа и условия записи/чтения данных.


О блоках данных. Каждый блок данных состоит из 16 байт, доступных для записи/чтения (кроме блока 0 сектора 0, где хранится не стираемая информация завода-изготовителя). Запись/чтение данных производится по ключу и битам доступа. Блоки данных могут быть сконфигурированы как блоки для обычной записи/чтения, или как блоки хранения условных единиц (функция электронного кошелька). В обычные блоки данных можно записывать любую информацию (цифры, символы и т.п.). Если блок данных сконфигурирован как блок для хранения условных единиц, то работа с таким блоком происходит по командам increment/decrement. То есть числовое значение, хранящееся в таком блоке, можно только увеличивать и уменьшать.


О правилах доступа. Ко всем секторам карты MIFARE Classic доступ осуществляется по единым правилам. Доступ к тому или иному сектору производится с помощью ключей (Ключ А и Ключ В). С помощью Access Condition (условие доступа в Sector Trailer) задаются условия записи и чтения данных из каждого сектора с использованием одного ключа (А или В) или обоих ключей А и В одновременно. Например, при пользовании клиентами карт MIFARE можно реализовать чтение (только чтение) данных из блока по ключу А, в то время как системный администратор может читать и писать данные к память MIFARE, используя ключ В. В четвертом блоке каждого сектора (Sector Trailer) для обеспечения такого разграничения доступа используются три бита (access bits) C1, C2 и С3. С помощью этих битов можно задать восемь различных режимов доступа к сектору MIFARE. Бит C1 считается младшим значащим битом (LSB).


О том, как я использовал память RFID-меток. В рамках проекта используется два режима: основной – чтение RFID – карты и включение розетки, дополнительный – программирование RFID – карты. Для авторизации RFID – карты деблокиратором на нее записывается секретный ключ длиной в 128 байт. 128 байт = 8 блоков по 16 байт. 3 блока пишутся в сектор 1, 3 блока в сектор 2 и, наконец, 2 оставшихся блока в сектор 3. Для чтения необходима аутентификация по ключу А, для записи – по ключу B, которых находятся в trailer блоке. Длина ключа в 128 байт была выбрана без каких-либо принципов, можно было использоваться хоть всю память карты. Ключ - случайный набор символов, который находится в коде прошивки и деблокиратора, и умной розетки. Такое решение сверх-безопасностью явно не обладает, но в рамках проекта задачи обеспечить защищенную систему не стояло. Об этом также в заключении.

Подключение тумблера


Как мне кажется, имеет смысл также отметить подключение тумблера к Arduino. Тумблер в деблокираторе используется для переключения режима работы. В первом режиме устройство считывает RFID-карты и если в нужных блоках памяти карты записан секретный ключ, о котором говорилось выше, посылает по bluetooth сигнал "Включить розетки и разблокировать Windows" на умную розетку. Во втором режиме, деблокиратор записывает на RFID-карту секретный ключ. Перед записью он карту считывает: если на ней уже записан правильный секретный ключ, он очищает нужные блоки памяти путем записи нулей. Согласитесь, странно снабжать деблокиратор и функцией чтения, и функцией записи RFID-карт. О том почему так - в заключении.


При подключении тумблеров, кнопок, переключателей имеет место "дребезг контактов" - явление, при котором вместо четкого и стабильного переключения мы получаем случайные многократные неконтролируемые замыкания и размыкания контактов. Другими словами, контакты при соприкосновении начинают колебаться (т.е. «дребезжать»), порождая множество срабатываний вместо одного. Соответственно, микроконтроллер «поймает» все эти нажатия, потому что дребезг не отличим от настоящего нажатия на кнопку.



Для подавления "дребезга" я использовал подтягивающий резистор емкостью 20 кОм, встроенный в Arduino. Он осуществляет подтягивание к логической единице. Так как у тумблера оба положения - ON, подтягивание к логической единице - то, что нужно. Используется он таким образом:


pinMode(pin_number, INPUT); // Подключаем пин на вход pinMode(pin_number, INPUT_PULLUP); // Подтягивание входа к питанию

Заключение

Итак, у меня получилось два устройства, одно из них принимает сигналы по bluetooth и активирует розетки, а также разблокирует Windows на присоединенном компьютере, а другое - эти сигналы отправляет после успешной валидации по RFID-метке. Однако, как я уже говорил, было странным делать и запись, и чтение в одном устройстве, без какой-либо защиты. Я сделал так лишь потому, что хотел пойти дальше считывания ID RFID-карты и сравнения его с захардкоженым значением, а попробовать поработать с ее памятью, для чего она собственно предназначена. Таким образом, теперь я знаю как записать любую информацию на RFID-карту, как ее считать, как сделать карту Read Only и т.п. Получилась система для домашнего использования. Так и получается, я использую свой девайс дома, умная розетка подключена к компьютеру, в нее подсоединены колонки и зарядное для телефона. Деблокиратор стоит на входе комнаты. Не скажу, что это девайс, без которого я не могу жить, но идеи реального практического применения у него есть. Одна из них вполне осуществима и будет реализована.


Планируется сделать систему контроля доступа к рабочему месту студента в аудитории с компьютерами. Забегая вперед, скажу, что в качестве студенческого билета в нашем университете используется RFID-карта MIFARE 1K. Предположим, что у нас есть небольшая аудитория на 6 компьютеров, другими словами на 6 рабочих мест.


Сперва мы "клонируем" умную розетку - делаем еще 5 таких устройств, чтобы помимо использования компьютера, студент мог подключить свой ноутбук/паяльник/телефон к розетке. Тут нам и пригодится динамическое соединение Master-устройства bluetooth со Slave-устройством, о котором я говорил, рассказывая про bluetooth-модуль. Больше каким-либо образом модифицировать умную розетку не придется. Единственное, придется поискать решение, чтобы нельзя было перепрограммировать микроконтроллер Arduino, присоединенный к компьютеру через USB-кабель.


Теперь стоит сказать об изменениях в деблокираторе. Его мы лишаем функции записи, оставляя возможность только считывать RFID-карты. Если бы мы использовали самодельные RFID-карты, то понадобилось еще сделать устройство для записи RFID-карт. Так как планируется использовать уже готовые студенческие билеты с готовой записанной информацией, данное устройство в рамках будущего проекта не требуется, но в случае использования своих, "кастомных" карт его создание было бы очень простым с учетом проделанной работы над этим проектом. Также, деблокиратор необходимо будет оснастить Ethernet- или WiFi-модулем, для возможности осуществлять запросы на management-сервер. Какой и зачем, спросите вы? Чтобы сделать систему более гибкой и удобной, перед тем как придти поработать в аудиторию, студенту необходимо "забронировать" себе место с помощью данного веб-сайта. Деблокиратор при проверке RFID-карты студента будет обращаться на данный сервер для проверки бронирования (и еще чего-нибудь, если хочется). Остается подумать, как реализовать перепроверку присутствия студента (ушел и не приложил карту) и удобный способ информирования об окончании "рабочего" времени.

Код прошивки

Теги:

  • БГУИР
  • ВМСиС
  • Кафедра ЭВМ
Добавить метки

В этом опыте, мы будем управлять реле, точнее сказать не мы, а ардуино, и для этого попробуем воспользоваться полученными знаниями из предыдущих 12 уроков. Реле это электрически управляемый, механический переключатель. Внутри этого простенького на первый взгляд, пластмассового корпуса, находится мощный электромагнит, и когда он получает заряд энергии, происходит срабатывание, в результате чего якорь притягивается к электро магниту, контактная группа замыкает или размыкает цепь питания нагрузки. В этой схеме вы узнаете, как управлять реле, придав Arduino еще больше способностей!

На тот случай, если у вас в наборе идет не просто реле, а именно модуль, т.е уже собранная схема на печатной плате, Вам не нужно собирать схему (см. ниже), а нужно правильно подключить модуль к плате Arduino.

Реле и Электронный модуль Реле для Arduino на 5V.

VCC — питание +5 Вольт

GND — общий (земля) — минус.

IN1 — управление

NO — нормально разомкнутый (Normally Open)

NC — нормально замкнутый (Normally Closed)

COM — обший (Common)

К контактам NC и NO подключаются светодиоды, общий COM подключается к + питания (+5V), GND к земле (-), VCC к +5 Вольт, IN1 (управление, обозначение может быть другим) к порту ардуино Pin 2.

Когда реле выключено, общий контакт «COM» (common) будет подключен к нормально замкнутому контакту «NC» (Normally Closed). Когда же реле сработает «общий» контакт COM соединится с «нормально разомкнутым» контактом «NO» (Normally Open).

Выше, вы видите саму принципиальную схему к уроку 13, думаю сложностей возникнуть не должно, при правильном соединении, т.е соблюдая указания маркировки и «полюсность», все должно получиться.

Для этого опыта вам понадобится:

1. Arduino UNO — 1 шт.

2. Реле или «Электронный модуль Реле» — 1 шт.

3. Транзистор 2N222A — 1 шт.

4. Диод 1N4148 — 1 шт.

5. Резистор 330 Ом.

6. Светодиоды различных цветов — 2 шт.

7. Соединительные провода.

Cхема электрических соединений макетной платы и Arduino. Уроку 13. Arduino и Реле

Скачать код к опыту 13. Скетч и подробное описание (Обязательно прочтите весь скетч!):

Набор для экспериментов ArduinoKit
Код программы для опыта №13:

Вид созданного урока на макетной схеме:

Arduino и Реле. Урок 13

В результате проделанного опыта Вы должны увидеть…

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

Возможные трудности:

Светодиоды не светятся
Дважды проверьте правильность установки светодиодов, — длинный вывод является плюсовым контактом..

Не слышны щелчки реле
Проверьте правильность подключение реле и транзистора.

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

Всем удачи! Ждём ваши комментарии к ARDUINO УРОК 13 — ARDUINO УПРАВЛЯЕТ РЕЛЕ.



Рекомендуем почитать

Наверх