Обзор приложений для удаленного управления Arduino

Управление Arduino через интернет с помощью ПК — опыт новичка

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

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

Предпосылки к созданию данного способа у меня возникли во время создания моего электромобиля: Жмяк сюда! Скажу сразу, что создавалось это всё больше из спортивного интереса, нежели для серьёзных практических работ, но тем не менее оно работает и может пригодится кому-либо.

Arduino Bluetooth Controller

Эта программа работает в 3 основных положениях:

Контроллер. Приложение демонстрируется в облике play идентификатора и управляется кнопками переключения. Работает одной клавишей, основная функция которой – дистанционное управление.

Arduino Bluetooth Controller

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

Эксперимент

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

Необходимые комплектующие

  • 1 x кабель Ethernet cable
  • 1 x Wi-Fi роутер
  • 1 x Arduino Mega2560
  • 1 x плата расширения Ethernet Shield
  • 1 x макетная плата
  • 3 x перемычка
  • 1 x резистор 1 кОм
  • 2 x блок питания 9В
  • 1 x кнопка

Схема соединений

схема содениений

Соедините компоненты, как показано на рисунке выше. Вывод 8 Arduino соединен с кнопкой. Этот вывод настроен, как вход, и, когда кнопка нажата, Arduino будет считывать высокий уровень на этом выводе. После чего Arduino установит состояние выхода в значение ON. Когда кнопка отпущена, выход будет установлен в значение OFF. Состояние кнопки будет доступно веб-серверу.

Конфигурация Ethernet

Для управления платой расширения Ethernet будем использовать библиотеку Ethernet.h .

Плате расширения должны быть присвоены MAC и IP адреса с помощью функции Ethernet.begin() . Для конкретного устройства MAC адрес представляет собой глобальный уникальный идентификатор. Современные платы расширения Ethernet приходят с наклейкой, указывающей MAC адрес. Для старых плат расширения должен присваиваться какой-либо случайный адрес, но не используйте один и тот же адрес для нескольких плат. Правильность IP адресов зависит от конфигурации сети. Если используется DHCP, IP адрес может быть присвоен плате расширения динамически.

IP адрес

IP адрес является числовой меткой, присваиваемой каждому устройству в компьютерной сети, использующей межсетевой протокол IP. Указать IP адрес в скетче просто:

И изменить его под собственную сеть. Например, если IP адрес роутера 192.168.0.60, а у сканера 192.168.0.40, то плате расширения можно назначить IP адрес 192.168.0.50:

Первые три байта должны быть одинаковыми.

MAC адрес

MAC адрес (адрес Media Access Control — адрес управления доступом к среде) представляет собой уникальный идентификатор, присвоенный каждому устройству, участвующему в физической сети. Каждая составляющая сетевого оборудования имеет уникальный серийный номер, чтобы идентифицировать себя в сети, и который жестко зашит в прошивку оборудования. Тем не менее, для Arduino мы можем задать MAC адрес сами:

Вы можете задать подсеть и шлюз с помощью следующего кода:

Ниже показан блок кода с настройками платы расширения Ethernet Shield:

Ниже приведено собранной схемы. Кабель Ethernet соединяет плату расширения с роутером, который через WiFi соединен с ноутбуком.

Arduino + Ethernet Shield + роутер + макетная плата

Программа

Ниже приведен блок кода, выводящего HTML код простой веб-страницы.

Эта программа будет отображать веб-страницу в веб-браузере при обращении к IP адресу, присвоенному Arduino. Следующая строка указывает браузеру на необходимость обновления страницы:

Когда страница будет запрошена снова, Arduino снова считает состояние кнопки и отобразит его.

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

Также вы можете собрать всё без роутера. Для этого необходим перекрестный ethernet кабель. Адрес шлюза в этом случае можно оставить пустым.

Подключение W5100 к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Ethernet Shield W5100 x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Подключение:
В качестве демонстрации, возьмем стандартный пример со среды разработки IDE Arduino. Для этого нам понадобится internet Shield W5100 и Arduino UNO R3 (устанавливаем Shield поверх Arduino). Как уже поняли библиотеку используем стандартную «Ethernet» дополнительно скачивать и устанавливать не нужно, загружаем скетч показанный ниже или в IDE Arduino заходим примеры «Файл» —> «Примеры» —> «Ethernet» —> «WebServer». Схема подключения показана ниже.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress) или Nano (купить на AliExpress).
  2. Ethernet модуль W5100 (купить на AliExpress).
  3. Светодиод (купить на AliExpress).

Ethernet модуль W5100 позволяет устанавливать полнофункциональное интернет соединение. С его помощью можно подключать плату Arduino к сети интернет без поддержки операционной системы компьютера. Модуль поддерживает различные протоколы стека TCP/IP: TCP, PPPoE, Ethernet, UDP, ICMP, IPv4 и другие. Модуль W5100 способен работать в дуплексном и полудуплексном режимах работы. Также он имеет поддержку ADSL соединений (до 4-х соединений одновременно).

Внешний вид Ethernet модуля W5100

Для подключения Ethernet модуля W5100 мы будем использовать библиотеку Arduino Ethernet library, которая поддерживает все версии плат Arduino: UNO, NANO, mega 1280, mega 2560 и другие. Функциональность Ethernet модуля W5100 такая же, как и у шилда (shield) Arduino Ethernet, а стоит модуль в два раза дешевле чем данный шилд.

Вид на Ethernet модуль W5100 сбоку

/*—————- 4 часть —————-*/
client. println («HTTP/1.1 200 OK»); //заголовочная информация
client. println («Content-Type: text/html»);
client. println («Connection: close»);
client. println («Refresh: 5»); //автоматическое обновление каждые 5 сек
client. println (); //Это не ошибка, так должно быть
client. println («>«); //HTML тип документа
client. println («>«); //открытие тега HTML
client. println («> «); //открытие тега Head
client. println («> «);
client. print («HelpDuino Web Server«); //название страницы
client. println (««); //заголовочная информация
client. println (««);
client. print («>HelpDuino Web Server

«); //заголовк на странице
client. print (««);
//кнопка включить
client. print (««);
//кнопка выключить
client. println («<>br>
«); //перенос на след. строчку
client. println («


«); //линия=====================================
client. println («Tемпература ewq»>println (t); //переменная температуры
client. println (» *C»);
client. println (»
«); //перенос на след. строчку
client. println («Влажность ewq»>println (h); //переменная влажности
client. println (» %t»);
client. println (»
«); //перенос на след. строчку
client. println («
«); //линия=====================================
client. println (««);
client. println (««); //закрываем тег HTML
break; //выход
>
>
>
delay (1); //время на получение новых данных
client. stop(); //закрываем соеднение
>
>

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

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

Первая часть кода

В первой части кода мы как, обычно, указываем пусть к необходимым библиотекам, номер пинов наших устройств. Для подключения Ethernet Shield нам пришлось указать ip адрес и mac адрес

Хотелось бы сказать, что mac адрес не зашит в шилд и вы сами задаете его в скетче. Можно использовать mac адрес, который мы привели в нашем примере! Что касается ip адреса,как известно, по стандартам протокола для частных сетей можно использовать разные адреса, в частности, адресация 192.168. Последующие четыре цыфры могут быть произвольные, но в той последовательности, как у нас приведены в скетче. Важно, что ip адрес, указанный в скетче программы не должен пересекаться с ip адресами всех устройств в домашней сети!

Вторая часть кода

Во второй части кода мы инициируем датчики и запускаем сервер с указанными раннее ip и mac. Тут ничего сложного нет, так что мы пойдем дальше.

Третья часть кода

В третьей части кода происходят основные действия. Подробно их описывать я не буду, ведь в скетче программы все подробно описано. Здесь мы указали переменную «t» и «h».

float h = dht.readHumidity(); //Считываем влажность в переменную «h»
float t = dht.readTemperature(); //Считываем температуру в переменную «t»

Также мы вводим переменную «c» для работы со светодиодом.

while (client.connected()) <
if (client.available()) <
char c = client.read();

Также указываем условие для включения и выключения светодиода

if (c == ‘1’) <
Serial.println («Включить»);
digitalWrite (8, HIGH);
>
if (c == ‘2’) <
Serial.println («Выключить»);
digitalWrite (8, LOW);
>

Четвертая часть кода

Заключающей частью нашего скетча я выделил html код, который будет отображаться в браузере. Описание каждой строчки вы также можете найти в самом скетче. Это самый простой web-сайт, так что тут ничего сложного нет.

В конце у вас должно получиться что-то похожее на это!

Готовое подключение Ethernet Shield к Arduino с созданием сервера Готовое подключение Ethernet Shield к Arduino с созданием сервера

Также вы можете посмотреть видео версию нашего проекта!

Надеюсь у вас все получилось! Если у вас остались вопросы, можете написать нам в вконтакте или в комментариях ниже. Мы постараемся ответить на ваши вопросы в скором времени!

Заключение

Мы использовали Ethernet shield для Ардуино, чтобы подключить устройство к интернету. И настроили управление светом через веб страницу сгенерированную на Ардуино.

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

Подключение модуля HR911105A к Arduino Uno

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • Ethernet порт HanRun HR911105A 15/10;
  • макетная плата;
  • провода «папа-папа» и «папа-мама»;
  • 3 светодиода;
  • 3 резистора на 10 кОм;
  • роутер и LAN-кабель.

Соедините плату Arduino Uno и HR911105A, как на фото ниже. Обратите внимание, что 10 контактный модуль Ethernet ENC28J60 Enternet HR911105A питается от разъема 3,3 V, а 12 контактный модуль от 5V. Кроме того, обозначения разъемов на HanRun HR911105A могут быть изменены производителем, например, ST — вместо SO. Соединение проводов с контактами должно быть качественным.

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

ENC28J60 Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
5V / 3.3V 5V / 3.3V 5V / 3.3V 5V / 3.3V
SCK 13 (SCK) 13 (SCK) 52 (SCK)
SO 12 (MISO) 12 (MISO) 50 (MISO)
ST 11(MOSI) 11 (MOSI) 51 (MOSI)
CS 10 (SS) 10 (SS) 53 (SS)

Далее собираем на макетной плате схему из трех светодиодов и резисторов. Светодиоды соединяются с разъемами 3, 4, 5 на плате Ардуино. При желании вы можете подключить RGB-светодиод к Ардуино или увеличить количество светодиодов, сделав при этом необходимые изменения в скетче для управления Ардуино через wifi.

Собираем схему для управления Ардуино

Не забывайте про полярность (длинная ножка светодиода — плюс)

После сборки электрической схемы необходимо загрузить библиотеку для работы с HanRun HR911105A. Библиотеки служат для облегчения кода. Это могут быть драйвера к дополнительному оборудованию или часто используемые функции. В программе Arduino IDE уже есть набор стандартных библиотек, которые часто используются. Но в нашем случае требуется загрузить новые библиотеки (скачать архив) с Google Диск.

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

Распакуйте архив с библиотекой в папку C:Program FilesArduinolibraries

Откройте программу Arduino IDE и проверьте установку библиотеки. Заходите в меню «Файл — Образцы», после стандартных библиотек должна появиться библиотека «ethercard». Очень часто библиотеки содержат в себе несколько готовых скетчей.

Загружаем библиотеку для работы с HanRun

Проверьте установку библиотеки после открытия программы Arduino IDE

Из-за большого объема кода приведем лишь небольшой отрывок скетча. Для оформления интернет страницы в программе используются HTML тэги. Скачайте готовый скетч здесь и загрузите программу в микроконтроллер.

Счетч для Arduino и модуля HR911105A

Пояснения к коду:

  1. этой строчкой byte Ethernet::buffer[1200]; мы освободили память в микроконтроллере для буфера обмена. При увеличении данных на Web странице необходимо увеличить буфер, чтобы не происходило «зависания»;
  2. включение/выключение светодиодов происходит в зависимости от количества символов в строке «Светодиод 1: OFF » ArduinoPIN4=on или ArduinoPIN1=off ;
  3. стиль и оформление web-страницы выполнено с помощью HTML тэгов.

Зайдите через компьютер по IP адресу

Зайдите через любой браузер на компьютере по IP адресу 192.168.1.55

Заключение. IP платы Arduino прописан в коде. Все основные функции в скетче прокомментированы, поэтому проблем в настройках программы возникнуть не должно. Зайдите через компьютер или телефон по IP адресу 192.168.1.55 — у вас должна открыться страница, как на фото. Если не удалось сделать подключение HanRun HR911105A 15/10, то следует проверить настройки Wi-Fi роутера.

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector