Опубликовано

Шилды для ардуино

Веб сервер на Ардуино

Как уже понятно, для связи Ардуино по LAN сети нужна специальная плата расширения. Так выглядит шилд ethernet shield w5100:

Работа с этим сетевым шилдом проще всего осуществляется с платы Arduino UNO R3. Безусловно, вы можете использовать её и с другими платами, на фото изображено подключение на примере самой распространённой версии. При использовании с другими вариантами, например, Nano нужно соединить соответствующие выводы на плате и шилде с помощью перемычек.

Ардуино выступает в роли сервера, поэтому нужно обеспечить подключение к сети, для этого используется Ethernet кабель. Сразу стоит отметить, что при подключении витой пары, кабеля RJ-45, непосредственно к плате, а не через роутер, вы должны использовать вариант обжимки «Crossover».

Работает плата расширения на скоростях 10 или 100 мбит/с, при работе на высшей скорости вы можете видеть уведомление – об этом сигнализирует светодиод «100M». Он расположен ниже сетевого разъёма.

На шилде расположен слот для SD-карты – вы можете получить доступ к данным через сеть. Таким образом, вы получите домашнее облако на Arduino. С картой памяти микроконтроллер работает по той же SPI шине, что и с шилдом. Определите, какие выводы на вашей плате работают с этим интерфейсом, и не забудьте о том, что их нельзя задействовать при разработке вашей умной системы. Для платы Arduino mega – выводы 50, 51, 52, duemilanove – 12, 12, 13, например.

Модуль может вызывать прерывания в ардуино. Это нужно для уведомления микроконтроллера о разного рода событиях, что очень полезно.

Миниатюрные системы для сетевого доступа и беспроводной доступ по GSM

Шилд W5100 довольно громоздкий, и в связке с миниатюрными pro mini и nano выглядит нелепо, да и далеко не всегда нужна на шилде карта памяти. Вы можете обратить свое внимание на модель arduino Ethernet модуля W5500, тоже на базе чипа WIZnet, как и предыдущий вариант.

Связь с микроконтроллером осуществляется по тому же SPI интерфейсу, а сам чип построен на Cortex M0. Чип W5500 меньше греется и имеет большую мощность, нежели у W5100 (значительно сильнее грелся). В отличие от младших чипов, добавлен режим параллельной 8 битной шины. Но и ток потребления 160 мА при работе на полной скорости – 100 м/бит.

Другой вариант миниатюрного шилда – это arduino enc28j60. Главное его преимущество – это то, что он дешевле в 2-3 раза, чем W5500, например. Я сделал акцент на том, что это главное преимущество, потому что в целом, если есть возможность, лучше использовать W5500, т. к. на них в сети больше информации по работе и настройке, а также есть различные проекты.

28J60 отлично подойдёт для интернета, для простейших мелких задач, типа Ethernet термометра. Микросхема произведена компанией Microchip, работает по тому же SPI интерфейсу, что и предыдущие. Библиотеки для работы с ней отлично подходят для ардуин на 168/328й атмеге, в их числе UNO, nano, pro mini… Для Mega нужно правильно назначить пины.

Но еще более интересный вопрос – это беспроводная связь с ардуино. Это стало возможно благодаря GSM модулям, а с помощью w5500 вы можете осуществлять связь только по сети. В шилд или модуль для ардуино вставляешь sim карту, и вы можете управлять своей автоматизацией с помощью SMS или вызова.

Рассмотрим модуль Neoway M590E, рассчитанный на два диапазона (900/1800 мГц) – голосовую связь он не поддерживает. Работает в сети GPRS с максимальной скоростью в 48 кбит/с, способен принимать и передавать SMS сообщения. Модуль стоит около 1-2х долларов. Для своей цены он более чем универсален.

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

Питание M590E может осуществляться от li-ion аккумулятора или любого другого источника на 3,3 — 4,8 В с током порядка 1 ампера (номинальным 0.6 А).

Сфера применения и проекты с сетевыми шилдами

Ардуино – одна из самых дешевых основ для проекта умного дома. Кроме домашнего облака и доступа к файлам можно реализовать удаленное управление исполнительными механизмами любых типов. К таким проектам можно отнести и другую автоматизацию, например, управление поливом, освещением и проветриванием в теплице. Одно дело, когда вы находитесь в непосредственной близости к управляемой системе, но что делать, если ваша теплица находится на участке загородного дома? Если есть интернет связь за городом – Ethernet технологии придут на помощь, на фото ниже вы видите окно HTML страницы, находящейся на сервере на базе W5500.

В таком виде представлено управление группой из 4-х реле с отслеживанием их активности, по нажатию кнопки refresh.

А подключается всё по такой схеме:

Это на примере модуля w5500. Схема не сложная, но функциональная – вы можете сделать вот такую мульти задачную реле-станцию.

Только использовать вместо MEGA младшие ардуины.

Что касается мобильной передачи данных, то M590E предназначен для так называемых M2M приложений.

С ардуино он может взаимодействовать и передавать как сообщения от неё в виде SMS, так и команды к микроконтроллеру после принятия сообщения от вас. Команды очень просты, например, «AT+CMGS=»+79123456789″;» – отправит СМС на указанный номер, точка с запятой обязательны.

Это незаменимо в проектировании охранных комплексов и устройств.

Технические характеристики Ethernet шилда

Ethernet Shield основан на чипе W51000, который имеет внутренний буфер на 16К. Скорость подключения достигает 10/100Мб. Это не самое быстрое соединение, но этого вполне достаточно, поверьте.

Шилд работает с использованием библиотеки Arduino Ethernet library, которая по умолчанию интегрирована в оболочку Arduino IDE.

На Ethernet шилде есть слод для установки micro SD карты, с помощью которой можно хранить большие массивы информации и загружать веб-сайты непосредственно с Arduino. Не забудьте, что в этом случае надо использовать дополнительную библиотеку. Более детально про: использование SD карты.

Кроме того, можно запитывать Arduino с помощью Ethernet соединения. Для этого надо использовать Power over Ethernet (PoE) модуль, место для установки есть на Ethernet шилде.

Сводный список технических характеристик Ethernet шилда:

  • Для работы необходима плата Arduino
  • Рабочее питание – 5 В (питается от платы Arduino)
  • Ethernet контроллер: W5100 с буфером 16Kб
  • Скорость подключения: 10/100Мб
  • Подключается к Arduino через SPI порт

Сервер

Можно использовать Arduino Ethernet shield в качестве веб-сервера для загрузки HTML страницы или функции. Можно отслеживать (парсить) запросы, которые отсылаются клиентом через веб-браузер. В следующих двух примерах показано как использовать наш «пирог» для обслуживания HTML страниц и парсинга URL строк.

Важно помнить: надо внести IP адрес вашей платы Arduino, чтобы приведенные ниже примеры корректно отрабатывали.

Приведенный ниже код изменяет содержимое веб страницы при нажатии кнопки:

/*

Web Server с использованием Ethernet шилда — пример

Простой пример веб-сервера, который изменяет страницу после нажатия кнопки.

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

* Ethernet shield подключен к пинам 10, 11, 12, 13

* кнопка подключается между пинами D2 and 5V

* резистор на 10 КОм подключается между пином D2 и землей

*/

#include &ltSPI.h&gt

#include &ltEthernet.h&gt

// ниже необходимо ввести MAC адрес и IP адрес вашего контроллера.

// IP адрес будет зависеть от вашей локальной сети:

byte mac = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };

IPAddress ip(191,11,1,1); //

// Инициализация библиотеки Ethernet server

// с указанием IP адреса и порта, который вы хотите использовать

// (порт 80 является портом по умолчанию для HTTP):

EthernetServer server(80);

int buttonPress = 1;

void setup()

{

pinMode(2, INPUT);

// запускаем Ethernet подключение и сервер:

Ethernet.begin(mac, ip);

server.begin();

}

void loop()

{

buttonPress = digitalRead(2);

// отслеживаем входящего клиента

EthernetClient client = server.available();

if (client) {

// запрос http заканчивается пустой строкой

boolean currentLineIsBlank = true;

while (client.connected()) {

if (client.available()) {

char c = client.read();

// если вы добрались до конца строки (получили символ для новой строки)

// и строка пустая, http запрос заканчивается.

// Соответственно, вы отсылаете ответ:

if (c == ‘\n’ && currentLineIsBlank) {

// отсылаем стандартный http ответ

client.println(«HTTP/1.1 200 OK»);

client.println(«Content-Type: text/html»);

client.println();

// обслуживает другую версию веб-сайта в зависимости от состояния кнопки (нажата или нет),

// которая подключена к пину 2

if (buttonPress == 1) {

client.println(«&ltcke:html&gt&ltcke:body bgcolor=#FFFFFF>LIGHT!&lt/cke:body&gt&lt/cke:html&gt»);

}

else if (buttonPress == 0){

client.println(«&ltcke:html&gt&ltcke:body bgcolor=#000000 text=#FFFFFF>DARK!&lt/cke:body&gt&lt/cke:html&gt»);

}

}

if (c == ‘\n’) {

// начинаем с новой строки

currentLineIsBlank = true;

}

else if (c != ‘\r’) {

// если получен символ на данной строке

currentLineIsBlank = false;

}

}

}

// даем браузеру время для получения данных

delay(1);

// закрываем соединение:

client.stop();

}

}

Для того, чтобы скетч работал, подключите кнопку между пинами D2 и 5V. Резистор на 10 КОм между землей и пином D2.. После этого укажите IP адрес вашей Arduino в браузере. Должна загрузится страница с черным фоном. Нажмите и удерживайте кнопку, после этого перезагрузите страницу браузера. После этого страница должна загрузится с белым фоном.

Код, который приведен ниже, включает светодиод в зависимости от URL адреса, который отсылается на Arduino:

/*

Web Server — пример

Дает возможность включать и выключать светодиод при вводе разных URL адресов в браузере

Для того, чтобы включить:

http://ВАШ_IP_АДРЕС/$1

Для того, чтобы выключить:

http://ВАШ_IP_АДРЕС/$2

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

* Ethernet shield подключается к пинам 10, 11, 12, 13

* Подключите светодиод к пину D2, а вторую ногу к земле через резистор 220 Ом

*/

#include &ltSPI.h&gt

#include &ltEthernet.h&gt

boolean incoming = 0;

// ниже необходимо ввести MAC адрес и IP адрес вашего контроллера.

// IP адрес будет зависеть от вашей локальной сети:

byte mac = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };

IPAddress ip(191,11,1,1); //

// Инициализация библиотеки Ethernet server library

// с использованием IP адреса и порта, который вы указали

// (по умолчанию HTTP порт устанавливается на 80):

EthernetServer server(80);

void setup()

{

pinMode(2, OUTPUT);

// запуск Ethernet подключения и сервера:

Ethernet.begin(mac, ip);

server.begin();

Serial.begin(9600);

}

void loop()

{

// получаем данные от клиента:

EthernetClient client = server.available();

if (client) {

// HHTP запрос оканчивается пустой строкой

boolean currentLineIsBlank = true;

while (client.connected()) {

if (client.available()) {

char c = client.read();

// если вы дошли до конца строки и следующая строка пустая,

// http запрос заканчивается и можно вывести ответ

//считывает строку URL от $ до первого пробела

if(incoming && c == ‘ ‘){

incoming = 0;

}

if(c == ‘$’){

incoming = 1;

}

// проверка строки URL. В ней присутствует $1 или $2

if(incoming == 1){

Serial.println(c);

if(c == ‘1’){

Serial.println(«ON»);

digitalWrite(2, HIGH);

}

if(c == ‘2’){

Serial.println(«OFF»);

digitalWrite(2, LOW);

}

}

if (c == ‘\n’) {

// начинаем новую строку

currentLineIsBlank = true;

}

else if (c != ‘\r’) {

// получаем символ на текущей строке

currentLineIsBlank = false;

}

}

}

// даем веб-браузеру время для получения данных

delay(1);

// закрываем соединение:

client.stop();

}

Для корректной работы приведенного примера, подключите позитивную ногу светодиода к пину D2, а негативную к земле через резистор 220 Ом.

Для того, чтобы включить светодиод, введите в строку браузера:

Для того, чтобы выключить светодиод, введите в строку браузера:

Обратите внимание: Надо заменить строку вашим IP адресом.

Клиент

Можно использовать Ethernet Shield для отрабатывания на стороне клиента. Другими словами, Arduino с шилдом используются для считывания информации с веб-сайта по принципу веб-браузера.

На веб-сайтах большое количество текста. Причем текст может быть как видимым так и невидимым. Так что программирование на стороне клиента превращается в интересную задачу. Считывание информации с веб-сайта сводится к парсингу большого количества строк.

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

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

Не забудьте ввести ваш индивидуальный IP адрес в код ниже или скетч не отработает.

Скетч приведен ниже:

/*

Twitter клиент

Эта программа дает возможность подключится к Twitter с использованием Ethernet шилда. Мы парсим XML

И ищем lgttext&gtтут_ваш_твитlgttext&gt

Можно использовать Ethernet шилд от Arduino, от компании Adafruit, да и большинство китайских тоже подойдут, так как на них установлен модуль Wiznet Ethernet.

В примере используются процедуры DHCP в библиотеке Ethernet library, которая входит в состав Arduino IDE начиная с версии 1.0 beta 1

В примере используется библиотека String library, которая входит в состав Arduino IDE с версии 0019.

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

* Ethernet шилд подключается через пины 10, 11, 12, 13

*/

#include &ltSPI.h&gt

#include &ltEthernet.h&gt

// ниже необходимо ввести MAC адрес и IP адрес вашего контроллера.

// IP адрес будет зависеть от вашей локальной сети:

byte mac = {

0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 };

IPAddress ip(191,11,1,1); //

// Инициализация библиотеки

EthernetClient client;

const int requestInterval = 60000; // задержка между запросами

char serverName = «api.twitter.com»; // URL твиттера

boolean requested; // сделали вы запрос после соединения

long lastAttemptTime = 0; // последний раз, когда вы подключались к серверу в миллисекундах

String currentLine = «»; // строка для хранения текста с сервера

String tweet = «»; // строка для хранения твита

boolean readingTweet = false; // если вы читаете твит в данный момент

void setup() {

pinMode(2, OUTPUT);

// резервируем место для строк:

currentLine.reserve(256);

tweet.reserve(150);

// инициализация серийного протокола:

Serial.begin(9600);

// попытка DHCP подключения:

if (!Ethernet.begin(mac)) {

// если DHCP подключение не удалось, начинаем с адреса:

Ethernet.begin(mac, ip);

}

// подключаемся к Twitter:

connectToServer();

}

void loop()

{

if (client.connected()) {

if (client.available()) {

// read incoming bytes:

char inChar = client.read();

// добавляем входящий байт в конце строки:

currentLine += inChar;

// если мы переходим на новую строку, очищаем:

if (inChar == ‘\n’) {

currentLine = «»;

}

// если текущая строка заканчивается на lgttext&gt, за ней

// последует твит:

if ( currentLine.endsWith(«lgttext&gt»)) {

// твит начинается. Очищаем строку твита:

readingTweet = true;

tweet = «»;

}

// если вы на данный момент считываете байты из твита,

// добавляем их в строку tweet:

if (readingTweet) {

if (inChar != ‘

tweet += inChar;

}

else {

// если вы пропарсили до символа »

// вы достигли конца твита:

readingTweet = false;

Serial.println(tweet);

if(tweet == «>Hello Cruel World»){

digitalWrite(2, HIGH);

Serial.println(«LED ON!»);

}

if(tweet != «>Hello Cruel World»){

digitalWrite(2, LOW);

Serial.println(«LED OFF!»);

}

// close the connection to the server:

client.stop();

}

}

}

}

else if (millis() — lastAttemptTime > requestInterval) {

// если вы не подключены и с момента последнего подключения прошло

// две минуты, пытаемся подключится вновь:

connectToServer();

}

}

void connectToServer() {

// пытаемся подключится и ждем миллисекунду:

Serial.println(«connecting to server…»);

if (client.connect(serverName, 80)) {

Serial.println(«making HTTP request…»);

// делаем HTTP GET запрос к twitter:

client.println(«GET /1/statuses/user_timeline.xml?screen_name=RandyMcTester&count=1 HTTP/1.1»);

client.println(«HOST: api.twitter.com»);

client.println();

}

// отмечаем время попытки этого подключения:

lastAttemptTime = millis();

}

Вероятно, вам захочется считать какие-данные, которые не имеют отношения к последнему посту в Твиттере.

Для того, чтобы считать другие посты из Твиттера, внесите следующие изменения в программу:

client.println(«GET /1/statuses/user_timeline.xml?screen_name=&count=1 HTTP/1.1»);

Поздравляем! Вы ознакомились с базовыми принципами работы Ethernet шилда и его возможностями. Упомянутых в статье функций более чем достаточно для покорения интернет пространства в компании с Arduino.

Ethernet Shield

Официальный шилд от создателей Arduino. Ethernet shield — это отличный вариант, чтобы обеспечить независимость вашего проекта от вашего персонального компьютера, так как он дает возможность наладить связь Arduino с интернет. Интересная особенность данного шилда — наличие на нем слота для MicroSD карты. Так что если в вашем проекте обрабатывается большой объем информации, например — mp3 файлы или видео; или вам надо хранить большие массивы данных для таких проектов как, например, светодиодный куб, хранить данные вы можете именно на SD карте.

Можно обеспечить работу хостинга для веб-сервера с использованием Ethernet шилда.

Перед тем как вы кинулись покупать Ethernet Shield, предупреждаю из личного опыта: Ethernet шилды зависимы от версий. Сначала я купил шилд v3 т оказалось, он не подходить к моему Arduino Uno v2, так как на версии платы v3 добавлено два пина. Кстати, Ethernet Shield стоит дороже чем сам контроллер Arduino, так что пришлось купить новую Arduino, а старую версию оставить для других проектов.

Так что проверяйте версию вашей платы и Ethernet шилда, который вы собираетесь покупать.

LCD Shield

Зачем вам LCD Shield? Все просто: выводить информацию с Arduino не на персональный компьютер с использованием серийного монитора, а напрямую на периферийный экран! Это реально классно! Но! При использовании внешних экранов, вам обычно требуется 7 и более контактов с Arduino. Это очень ограничивает возможности дальнейшего подключения периферийных устройств. В этом LCD шилде используется протокол передачи данных I2C, то есть для его подключения задействуются лишь 2 пина! Кроме того, параллельно к этим же контактам можно подключить другое оборудование, работающее по тому же протоколу передачи данных.

В добавок к экрану, на LCD шилде установлено 4 «управляющие» кнопки и кнопка «select» (выбор). Благодаря этому у вас появляется дополнительный интерактивный интерфейс и непосредственного подключения к ПК при работе с шилдом можно избежать. Если монохромный дисплей вас не впечатляет, вы можете спокойно апгрейдить шилд, установив 1.8 inch TFT 18-bit color screen.

Вот на этом этапе вы должны понять, что не все шилды 100% совместимы друг с другом. Некоторые из них надо устанавливать сверху вашего Arduino «пирога». Именно к таким шилдам относится LCD шилд.

Digitrode

Чтобы использовать плату Arduino в своих проектах где-нибудь за городом, например, на даче, желательно сделать ее автономной от сетевого питания и питания от батареек, которые часто приходится менять. В данном случае самым простым способом будет использование солнечной батареи и резервной батареи напряжением 9 В.

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

Итак, для создания автономной платы Arduino с питанием от солнечной батареи нам потребуются следующие компоненты:

  • Плата Arduino
  • Аккумулятор или перезаряжаемая батарейка Крона 9В
  • Солнечная панель (примерно на 11 В)
  • Диод 1N4001
  • Электролитический конденсатор 100 мкФ 10 В
  • Разъем питания для Arduino

Все эти компоненты нужно подключить в соответствии с приведенной ниже схемой. Это довольно простое действие, поскольку схема не представляет никакой сложности. Не забудьте поменять джампер на плате Arduino в положение «»EXT».

Перед подключением штекера питания Arduino разберите его и установите, какой провод является плюсом питания (обычно красный), а какой «землей» (обычно черный).

В итоге вот такая может получиться плата, собранная «на коленке»:

Теперь Arduino можно использовать где-нибудь на природе и в местах, не слишком затронутых цивилизацией.

Arduino.ru

Аккумулятор от сотового + tp4056 без защиты (в аккуме уже она есть, на вашей плате тупо вторая защита, жрущая лишнее) + mt3608 или xr1151 — нагрузку до 1А утянет норм. 3608 вообще заявлено до 2А, но фиг их знает что там эти китайцы наобещают.

Коммутация питания — выключателем jeka_tm (на двух полевых транзисторах и кнопке).

Такие проекты мной уже делались, по качеству норм. При собственной сброке (а не соединять проводками китайские модули) габариты укладываются в 2 куб. см.

Схемы легко ищутся, но может я их даже выложу.

И несколько правил:

1. АЦП питать от преобразователя нежелательно. Так что если у вас что-то измеряющее, то между VCC и AVCC должна быть катушка, ну и конденсатор на землю. 100мкГн+1мкФ достаточно.

2. Для толпы светодиодов лучше 20-30В @миллиамперы, чем низкое@амперы. Меньше резисторов. Меньше потерь в преобразователе. Меньше габариты деталей.

3. Питать двигатели нельзя. Если это карманное, то оно должно мигать. Выдвижная камера — моветон для поехавших из Samsung/Xiaomi, не уподобляйтесь этим людям.

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

И вопрос, зачем Uno? Это требовательная по питанию плата (250 мА схавает и не подавится). Подумайте в сторону Pro micro или Leonardo (на ней нет сериалмоста, он прожорливый. проц 32u4 сразу из коробки USB).

Upd. Да, бонус на сладкое: с удвоителем на конденсаторах можно запустить mt3608 от батарейки/NiMH. Схема есть в musky. это если надо сделать нечто тонкое и/или круглое.

Общие сведения

Данный модуль содержит два канала реле фирмы SONGLE модель SRD-05VDC-SL-C, переключение осуществляется с помощью напряжение 5В. Схематически модуль специально разработан для управления с помощью слаботочных плат, таких как arduino, raspberry и так далее, которые на выходе могут выдать ток не более 40 мА, так же для защиты добавлен оптопара EL817, которая реализует гальваническую развязку. Принципиальная схема 2-х канального модуля реле показана на рисунке ниже.

Двухкональный релейный модуль состоит из двух независимых частей за исключении питания Vcc и GND. При подключении к напряжения, вывод In1 находиться в высоком состоянии (лог 1), для переключения первого реле необходимо вывод In1 перевести в отрицательное состояние (лог 0), то есть закоротить цепь на землю. Через светодиод, которые находится в оптопаре начнет протекать ток и он засветится, следом откроет фототранзистор, через который так же начнет течь ток на базу транзистора Q1, который откроется и реле сработает. Вторая часть реле, работает аналогично, модуль может работать и от отдельного источника питания, необходимо убрать перемычку и подключить питание к JD-VCC и GND.

Назначение контактов
Модуль содержит четыре разъема, два слаботочных J1, J1 и два силовых K1 и K2, назначение каждого разъема и вывода можно посмотреть на рисунке ниже.

Разъем J1 используется для управления реле, шаг контактов 2,54 мм (PLS), разъем J2 используется для подключения внешнего источника питания, по умолчанию, между контактми JD-VCC и VCC установлена перемычка.

Габаритные размеры
На модуле предусмотрено четыре отверстия для установки, диаметр каждого 4 мм, габариты можно посмотреть на рисунке ниже.

Подключение 2-х канального реле к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Провод DuPont x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
► Модуль реле 2-х канальный — 5V, 10A, 250V (lOW, OPTO) x 1 шт.

Подключение:
Для начала подключаем вывод VCC и GND к выводам Arduino 5V и GND. Выводы IN1 и IN2 можно подключить к любому выводу, в нашем случае подключены к цифровым выводам 5 и 6. В качестве примера использую светодиоды, схема подключения приведена на рисунке ниже:

Далее открываем среду разработки и загружаем данный скетч в контроллер Arduino, алгоритм работы прост, каждые 4 секунды будет включатся сначала одно реле, затем второе и так далее.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /* Тестировалось на Arduino IDE 1.8 Дата тестирования 28.12.2016г. */ int in1 = 5; // Указываем, что вывод реле In1, подключен к реле цифровому выводу 5 int in2 = 6; // Указываем, что вывод реле In2, подключен к реле цифровому выводу 6 void setup() { pinMode(in1, OUTPUT); // Установим вывод 5 как выход pinMode(in2, OUTPUT); // Установим вывод 6 как выход } void loop() { digitalWrite(in1, HIGH); // Выключаем реле delay(2000); // Ждем 2с digitalWrite(in1, LOW); // Включаем реле delay(2000); // Ждем 2с digitalWrite(in2, HIGH); // Выключаем реле delay(2000); // Ждем 2с digitalWrite(in2, LOW); // Включаем реле }

В этой статье приведены разные варианты управления реле в скетчах ардуино. Примеры тестировались на Arduino Uno, но они могут быть легко применимы для работы на других платах Arduino: Uno, Mega, Nano.

Простой вариант скетча управления реле

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

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

Скетч для работы с реле

/* * Скетч для управления реле с помощью ардуино * Используем реле SONGLE SRD-05VDC * Реле ОТКРЫВАЕТСЯ при подаче низкого уровня сигнала (LOW) на управляющий пин. * Реле ЗАКРЫВАЕТСЯ при подаче высокого уровня сигнала (HIGH) на управляющий пин. * * В данном примере мы просто открываем и закрываем реле раз в 5 секунд. * * PIN_RELAY содержит номер пина, к которому подключено реле, которым мы будем управлять * * В функции setup устанавливаем начальное положение реле (закрытое) * Если к реле будет подключена нагрузка(например, лампочка), то после запуска скетча она будет включаться и выключаться каждые 5 секунд * * Для изменения периода мигания нужно изменить параметр функции delay(): поставив 1000 миллисекунд, выполучите 1 секунду задержки * * В реальных проектах реле включается в ответ на обнаружение каких-либо внешних событий через подключение датчиков * */ #define PIN_RELAY 5 // Определяем пин, используемый для подключения реле // В этой функции определяем первоначальные установки void setup() { pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход digitalWrite(PIN_RELAY, HIGH); // Выключаем реле — посылаем высокий сигнал } void loop() { digitalWrite(PIN_RELAY, LOW); // Включаем реле — посылаем низкий уровень сигнала delay(5000); digitalWrite(PIN_RELAY, HIGH); // Отключаем реле — посылаем высокий уровень сигнала delay(5000); }

Скетч управления реле с датчиком движения

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

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

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

Пример скетча

В данном примере мы добавим в цикл loop проверку состояния PIR датчика с помощью функции digitalRead (). Если мы получаем HIGH, то это означает сработку датчика и мы выполняем действие – включаем реле. Если к нему присоединить лампочку, то она загорится. Но, как и в прошлом примере, можно просто послушать щелчки.

/* Скетч для управления реле ардуино с помощью PIR датчика PIN_RELAY содержит номер пина, к которому подключено реле, которым мы будем управлять PIN_PIR содержит номер пина с подключенным PIR-сенсором В функции setup устанавливаем начальное положение реле (закрытое) В теле функции loop проверяем наличия высокого уровня сигнала от датчика с помощью функции digitalRead Для отладки текущее значение датчика выводим в окно монитора порта */ #define PIN_RELAY 8 // Определяем пин, используемый для подключения реле #define PIN_PIR 5 // Определяем пин, используемый для подключения PIR-датчика // В этой функции определяем первоначальные установки void setup() { Serial.begin(9600); pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход digitalWrite(PIN_RELAY, HIGH); // Выключаем реле — посылаем высокий сигнал } void loop() { int val = digitalRead(PIN_PIR); // Считваем значение с датчика движения в отдельную переменную if (val == HIGH) { Serial.println(«Датчик сработал»); digitalWrite(PIN_RELAY, LOW); // Включаем реле — посылаем низкий уровень сигнала } else { digitalWrite(PIN_RELAY, HIGH); // Отключаем реле — посылаем высокий уровень сигнала } delay(1000); // Проверяем значения один раз в секунду. }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *