Интернет вещей с RemoteXY: конфигурация подключения.

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

Конфигурация подключения

Способы подключения я буду демонстрировать на примере Arduino Nano и NodeMCU v3, в качестве модулей связи будут применяться Bluetooth модуль HC-05, Wi-Fi модуль ESP-01 и встроенный в NodeMCU модуль ESP-12.

Сразу опишу все преимущества и недостатки каждого типа подключения.

Bluetooth

Недостатки:

  • малый радиус действия (около 10 метров);
  • зачастую планшеты на android, не имеющие слота под SIM карту, так же не имеют и bluetooth модуля.

Преимущества:

  • мобильное устройство может быть одновременно соединено с несколькими bluetooth устройствами;
  • при этом не теряется связь с сетью интернет при подключении через wi-fi или мобильную сеть.

Wi-Fi как клиент

Преимущества:

  • не теряется связь с сетью интернет при подключении к ней через wi-fi;
  • больший радиус связи, чем у bluetooth;
  • модуль связи wi-fi есть во всех смартфонах и планшетах;
  • можно настроить роутер для доступа к контролеру с любой точки планеты (этот способ связи я не буду рассматривать, потому что я им сам не пользовался, а давать непроверенную информацию мне не позволяет моя совесть).

Недостатки:

  • необходим wi-fi роутер как точка доступа.

Wi-Fi как точка доступа

Преимущества:

  • автономная работа без роутера.

Недостатки:

  • невозможно одновременное подключение к контролеру и к сети интернет ни через сотовую связь, ни через другие сети Wi-Fi.

Таким образом у каждого способа связи есть свои преимущества

 

Bluetooth

Соединение по bluetooth настраивается при помощи модулей связи HC-05 и HC-06 для Android и модуля HC-10 для iOS и осуществляется по протоколу UART. Подключаться можно как через Hardware Serial, так и через Software Serial. Рассмотрим оба способа.


Hardware Serial

Аппаратные порты протокола UART выведены на 0 (RX) и 1(TX)  выводы для плат UNO, Leonardo, Pro Mini, Nano, MICRO и 0 и 1 (Serial), 19 и 18 (Serial 1), 17 и 16 (Serial 2), 15 и 14 (Serial 3) для платы MEGA.

Чтобы настроить онлайн редактор на bluetooth соединение в панели настроек и свойств необходимо выбрать пункт «конфигурация» и нажать на любой пункт этого меню. Откроется меню конфигурации, в котором поочередно надо установить параметры: тип соединения, используемый контроллер, модуль связи и среда программирования. После необходимо нажать кнопку «Применить» и окно закроется.

Далее необходимо перейти в пункт «Подключение модуля» в панели настроек и свойств, установить интерфейс подключения «Hardware Serial», скорость обмена и порт.

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

Ввиду того, что аппаратный порт Serial используется для программирования arduino, необходимо отсоединять bluetooth модуль на время программирования. Для плат Mega этот вопрос строит не так остро, потому что на выбор предоставлено четыре порта.

Software Serial

Подключение через Software Serial позволяет использовать отличные от аппаратных порты. Но с некоторыми ограничениями, которые связанны с поддержкой прерываний.

Так для плат UNO и Nano для RX нельзя использовать вывод 13. Для Mega для RX можно использовать лишь выводы 8, 10, 11, 12, 13, 14,15, 50, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69. Для Leonardo и Micro для RX можно использовать лишь выводы 8, 9, 10, 11, 14,15, 16. Так же невозможна работа на скоростях выше 19200 бит/сек. Стоит заметить, что в онлайн редакторе интерфейса все эти ограничения учтены, и сам редактор вам просто не даст поставить значения скорости выше 19200, и предложит на выбор лишь подходящие выводы с учетом выбранной платы. Так зачем же я упомянул все эти ограничения? Ограничения на выбор портов можно обойти, когда онлайн редактор сгенерирует исходный код, ведь там номера портов указаны черным по белому.

// настройки соединения
#define REMOTEXY_SERIAL_RX 50 #define REMOTEXY_SERIAL_TX 51 #define REMOTEXY_SERIAL_SPEED 9600

Подключение Bluetooth модуля к смартфону. И вот тут-то можно исправить и номера выводов и скорость, и в итоге получить не работающее устройство.  Вообще я не рекомендую править что-либо в исходном коде, начиная от комментария «RemoteXY include library» до «END RemoteXY include». Ну и ещё одно ограничение: некоторые библиотеки (например, библиотека Servo) используют те же прерывания, что и Software Serial. Это может привести к непредсказуемой или неправильной работе устройства и потере связи по bluetooth.

Данная инструкция для владельцев устройств, работающих под управлением операционной системы android.

  • Перейти в настройки устройства, выбрать пункт «bluetooth», включить его. Начнется поиск доступных bluetooth устройств.

  • Выбирать необходимое устройство из списка, дождаться запроса пароля, ввести пароль и нажать «ОК»

  • Устройство появится в списке подключенных устройств
  • Перейти в программу RemoteXY, нажать на + в правом верхнем углу

  • Выбрать тип подключаемого устройства

  • Выбрать устройство из списка доступных устройств

  • Устройство подсоединено, сразу открывается интерфейс устройства.

Практическое задание

Создать интерфейс со следующими параметрами:

  • Соединение – bluetooth;
  • Устройство – на ваш выбор (я буду использовать Mega);
  • Модуль – HC-05 (для владельцев устройств с iOS – HC-10);
  • Среда программирования – ArduinoIDE;
  • Интерфейс подключения – Hardware Serial;
  • Порт – Serial (владельцы Mega могут попробовать любой другой доступный порт, я буду использовать Serial 1);
  • Скорость обмена – 9600.

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

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

Вторая часть задания: изменить проект так, что бы он использовал Software Serial, использовать выводы на свое усмотрение.

Wi-Fi как точка доступа

Подключение модуля ESP-01 производится аналогично модулю Bluetooth, потому что оба вида модулей работают по протоколу UART. Подключение абсолютно аналогично, как для Software Serial, так и для Hardware Serial, со всеми ограничениями, описанными в разделе о подключении по Bluetooth.


  

Hardware Serial

 

Software Serial

Исключение составляет конфигурация подключения. Рассмотрим подключение модуля ESP-01 к arduino Mega2560 в качестве точки доступа.

В выпадающем меню «Подключение модуля» кроме пунктов интерфейс подключения, порт Serial/контакты TX/RX и скорость обмена появляются ещё четыре пункта, характерных лишь для подключения устройства как точки доступа.

Имя (SSID) – имя точки доступа, к которой будет подключаться смартфон. Доступ к контроллеру может быть защищен паролем, если не стоит галочка «открытая точка». Пункт «Порт» можно не трогать, потому что он по умолчанию устанавливается таким же в программе RemoteXY, его смена может потом привести к неожиданным последствиям при подключении к контроллеру (если пользователь забудет, какой порт указал при наладке устройства).

Отдельно стоит коснуться конфигурации устройств, построенных на модуле ESP-12: WeMos D1, D1 R2, D1 mini и NodeMCU v2, v3. Так как модуль связи встроен в эти платы, в меню «Подключение модуля» отсутствуют настройки интерфейса подключения.

 

Стоить заметить, что на изображении выше, подключение питания модуля ESP-01 подключено к выводу 3V3 на плате arduino nano. Тем не менее, мощность стабилизатора, установленного на плате nano, может не хватать для работы модуля ESP-01. Потому необходимо подключать его к внешнему источнику питания напряжением 3,3 вольта.

Подключение Wi-Fi модуля в режиме точки доступа к смартфону.

Для подключения Wi-Fi модуля в режиме точки доступа к смартфону необходимо:

  • Перейти в настройки смартфона – беспроводные сети –Wi-Fi и убедиться, что созданная точка доступа находится в списке доступных устройств

  • Выбрать необходимую точку доступа и, если требуется, ввести пароль, нажать кнопку «подключить»

  • Войти в программу RemoteXY и нажать + в правом верхнем углу

  • Выбрать «Wi-Fi точка доступа»

  • В появившемся списке доступных сетей выбрать необходимую сеть

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

  • Устройство подсоединено, сразу открывается интерфейс устройства.

Практическое задание

Закрепим полученные знания на практике.

Первая часть задания: создать соединение со следующими параметрами:

  • Соединение — Wi-Fi access point;
  • Устройство – на ваш выбор (я буду использовать Mega);
  • Модуль – ESP8266 Wi-Fi module;
  • Среда программирования – ArduinoIDE;
  • Интерфейс подключения – Hardware Serial;
  • Порт – Serial (владельцы Mega могут попробовать любой другой доступный порт, я буду использовать Serial2);
  • Скорость обмена – 115200;
  • Имя (SSID) – оставить по умолчанию;
  • Пароль – оставить по умолчанию;
  • Порт – оставить по умолчанию.

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

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

Вторая часть задания: изменить проект так, что бы он использовал Software Serial, использовать выводы на свое усмотрение.

Третья часть задания: изменить проект для подключения платы NodeMCU.

Wi-Fi как клиент

Режим работы в качестве клиента требует, что бы устройство подключалось к существующей точке доступа Wi-Fi. Возможен доступ к контроллеру, как из локальной сети, так и по сети интернет. Для подключения к контроллеру из сети интернет возможно лишь при правильной настройке маршрутизатора. Этот способ подключения я не буду рассматривать, рассмотрю лишь способ подключения по локальной сети.

При этом физически подключение модуля ESP-01 в качестве клиента существующей сети Wi-Fi к arduino не отличается от рассмотренного выше примера подключения модуля ESP-01 в качестве точки доступа, со всеми ограничениями, рассмотренными ранее.

Пример конфигурации для arduino и ESP-01

 



Software Serial

 Hardware Serial

В выпадающем меню «Подключения модуля», кроме уже знакомых пунктов интерфейса подключения, порта Serial, контактов, порта и скорости обмена, появились пункты характерные для подключения модуля ESP-01 в качестве клиента:

  • Имя (SSID) — имя точки доступа, к которой необходимо подключить модуль ESP-01
  • Пароль — пароль точки доступа, к которой необходимо подключить модуль ESP-01 (если пароль не используется, то необходимо оставить строку пустой)

Так же приведу конфигурацию для платы NodeMCU v3.

Подключение Wi-Fi модуля как клиента существующей точки доступа Wi-Fi к смартфону.

Первым делом надо узнать IP-адрес модуля ESP-01 в локальной сети. Для этого необходимо использовать сканер сети. Я использую программу Network Scanner для android.

Приведу пример работы с этой программой:

  • Открыть программу Network Scanner

  • Дождаться окончания сканирование локальной сети

  • Выбрать необходимое устройство из списка

Далее необходимо запустить программу RemoteXY и дальнейшие шаги выполнять в ней:

  • Нажать + в верхнем правом углу

  • Из списка выбрать «Ethernet»

  • Ввести IP-адрес, полученный в программе Network Scanner

  • Устройство подсоединено, сразу открывается интерфейс устройства.

Практическое задание

Закрепим полученные знания на практике.

Первая часть задания: создать соединение со следующими параметрами:

  • Соединение — Ethernet TCP/IP;
  • Устройство – на ваш выбор (я буду использовать Mega);
  • Модуль – ESP8266 Wi-Fi module;
  • Среда программирования – ArduinoIDE;
  • Интерфейс подключения – Hardware Serial;
  • Порт – Serial (владельцы Mega могут попробовать любой другой доступный порт, я буду использовать Serial2);
  • Скорость обмена – 115200;
  • Имя (SSID) – имя вашей точки доступа;
  • Пароль – пароль вашей точки доступа;
  • Порт – оставить по умолчанию.

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

Далее необходимо подключить смартфон к той же сети что и контроллер, просканировать локальную сеть для получения IP- адреса, подключить программу RemoteXY к устройству. Если при нажатии на кнопку загорается светодиод на плате контроллера, значит всё сделано правильно.

Вторая часть задания: изменить проект так, что бы он использовал Software Serial, использовать выводы на свое усмотрение.

Третья часть задания: изменить проект для подключения платы NodeMCU.

P.S. Использование смартфона в качестве точки доступа

Все современные смартфоны могут выступать в качестве точки доступа Wi-Fi. В начале этой главы я рассматривал достоинства и недостатки различных способов подключения устройства к смартфону. Так для способа Wi-Fi как точка доступа я указал недостаток: «невозможно одновременное подключение к контролеру и к сети интернет, ни через сотовую связь, ни через другие сети Wi-Fi». Использование смартфона, как точки доступа Wi-Fi, позволяет обойти это ограничение, при этом соединение между контроллером и смартфоном будет прямое, а доступ к сети интернет посредством сотовой связи останется доступным.

Для подключения контроллера к смартфону необходимо (все настройки смартфона показаны на примере смартфона под управлением ОС Android версии 5.1.1):

  • Перейти в настройки смартфона, далее «точка доступа и модем» , «мобильная точка доступа»;

 

  • Включить точку доступа, название сети и пароль использовать при настройке подключения модуля в редакторе интерфейса;

  • Загрузить исходный код программы в контроллер, дождаться, когда модуль ESP-01 появится в списке подключенных устройств;

  • Выбрать модуль ESP-01 из списка, появится окно с данными подключения, использовать IP-адрес в программе RemoteXY.

В операционных системах Android других версий интерфейс может отличаться, но порядок действий остается тем же.

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

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

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

Ваш адрес email не будет опубликован.