Arduino UNO + ESP8266 через облачный сервер

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

Модуль ESP8266 будет сконфигурирован как клиент для подключения к точке доступа WiFi. Точка доступа должна обладать выходом в интернет. Библиотека RemoteXY обеспечит регистрацию устройства на облачном сервере.

Мобильное приложение будет подключаться к облачному серверу, а не к устройству напрямую. Таким образом устройство будет доступно из любой точки сети интернет.

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

Шаг 1. Создайте проект графического интерфейса

Войдите в редактор RemoteXY. Установите в поле смартфона одну кнопку. Выделите эту кнопку, затем в правой панели во вкладке «Элемент» выберите свойство «Привязать к выводу» в значение 13(LED).


Шаг 2. Настройте конфигурацию проекта

В правой панели во вкладке «Конфигурация», выберите следующие настройки.


В правой панели во вкладке «Подключение модуля» установите следующие настройки.


Настройки указывают, что ESP8266 подключается к Arduino через аппаратный Serial (контакты 0 и 1) на скорости 115200.

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

Шаг 3. Сформируйте токен устройства

Нажмите кнопку «Мои токены». Для регистрации токена устройства регистрация на сайте обязательна.


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

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

Новый токен должен появиться в списке токенов.


Примечание: В списке токенов устройств в личном кабинете вы можете контролировать состояние вашего устройства — колонка «Состояние устройства». Состояние может быть одно из трех:

  • disconnected – устройство не подключено к облачному серверу;
  • connecter – устройство зарегистрировалось на облачном сервере и готово для подключения с мобильного приложения;
  • used — устройство используется мобильным приложением;
  • ? - облачный сервер недоступен.

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

Шаг 4. Сформируйте скетч для Arduino

Нажмите кнопку «Получить исходный код».

В открывшейся странице с исходным кодом скетча загрузите его на свой компьютер (ссылка «Загрузить код») и откройте его в Arduino IDE.

Так же с этой страницы загрузите библиотеку RemoteXY (ссылка «Загрузить библиотеку»).

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

Подробнее об установке библиотеки RemoteXY для Arduino IDE

Шаг 5. Настройте ESP8266

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

Что необходимо проверить:

  • Модуль имеет прошивку с поддержкой AT команд версии не ниже v0.40;
  • Модуль настроен на скорость работы 115200.

Подробнее о настройке ESP8266 для работы с RemoteXY

Шаг 6. Подключите ESP8266 к Arduino Uno

Подключите ESP8266 к Arduino Uno по схеме приведенной ниже. Обратите внимание, что контакты RX-TX соединяются перекрестием.

Так как уровни сигналов модуля ESP8266 составляют 3.3В а у Arduino они 5В, необходимо использовать резистивный делитель напряжения для преобразования уровня сигнала.


Шаг 7. Загрузите скетч в Arduino.

Скетч загружается в Arduino обычным способом. Однако из за того что модуль ESP8266 подключен к контактам 0 и 1, программирование становится невозможным. Компилятор будет показывать ошибку.

Перед программированием отсоедините провода идущие к ESP8266 от контактов 0 и 1. Произведите программирование. Затем верните контакты на место. Нажмите кнопку сброса Arduino.

Примечание: Первый признак того, что программирование прошло успешно, это мерцание синего светодиода на модуле ESP8266 сразу после сброса. Мерцание синего светодиода означает обмен данными между Arduino и ESP8266. В эти полсекунды Arduino производит настройку ESP8266 для подключения к точке доступа. Через некоторое время светодиод снова моргнет, что означает попытку зарегистрироваться на облачном сервере RemoteXY.

Шаг 8. Подключитесь с мобильного приложения.

Установите мобильное приложение на ваш смартфон/планшет.

В приложении нажмите кнопку нового подключения «+» в верхней панели, выберите подключение «Облачный сервер». В открывшемся окне необходимо ввести токен устройства, который был зарегистрирован на предыдущем шаге. Так же проверьте правильность указания URL облачного сервера и порт подключения.


Если не подключается...

Проверьте, подключилось ли ваше устройство к облачному серверу

Зайдите на страницу списка токенов в личном кабинете сайта RemoteXY. В списке токенов посмотрите какое значение указано в колонке «Состояние устройства». Если устройство подключилось к облачному серверу, значение должно быть «Connected». Попробуйте обновить страницу.

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

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

Если устройство не подключилось к облачному серверу, ошибку необходимо искать в самом устройстве или его настройках.

Примечание: При ошибке подключения мобильного приложения к облачному серверу выводится диалоговое окно с описанием ошибки. Основные ошибки следующие:
  • токен не зарегистрирован на сервере - скорее всего вы неверно указали токен;
  • устройство не подключено к серверу — по каким то причинам устройство не подключается к серверу, возможно ошибка в настройках конфигурации устройства.

Проверьте наличие правильно загруженной программы

Вы можете проверить наличие связи между Arduino и ESP8266 используя Serial Monitor, который можно открыть во вкладке Tools в Arduino IDE.

Откройте Serial Monitor и установите скорость 115200. Нажмите кнопку сброса на плате Arduino.

Если после сброса Arduino в Serial Monitor нет никаких сообщений, это скорее всего означает, что Arduino не выполнят вашу программу. Возможно:

  • нужный скетч не был загружен;
  • ваша Arduino не включена;
  • Serial Monitor не подключился к Arduino;
  • с вашей Arduino что то не так.

Проверьте связь между Arduino и ESP8266

Если после сброса Arduino в Serial Monitor вы видите следующую последовательность команд, это означает, что инициализация ESP8266 проходит успешно и связь между Arduino и ESP8266 есть, устройство зарегистрировалось на сервере:


AT
AT+RST
ATE0
AT+CWMODE=1
AT+CWQAP
AT+CWDHCP=1,1
AT+CWJAP="MySSID","MyPassword"
AT+CIPMODE=0
AT+CIPMUX=1
AT+CIPSTART=0,"TCP","cloud.remotexy.com",6376
AT+CIPSEND=0,44
UxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAT+CIPSEND=0,6
Uxxxxxx 

Если вы видите только повторяющиеся команды «AT», это означает что нет связи между Arduino и ESP8266.


AT
AT
AT
AT

Связь может отсутствовать по разным причинам. Ниже перечислены основные:

  • контакты RX и TX подключены не верно, перепутаны контакты, или подключены не к тем контактам, или не подключены совсем;
  • нет питания на ESP8266, при подаче питания на ESP8266 должен светиться красный светодиод;
  • не хватает мощности источника питания 3.3 В для ESP8266;
  • модуль ESP8266 неисправен.

Проверьте, подключается ли ESP8266 к точке доступа

Если после сброса Arduino в Serial Monitor вы видите последовательность команд, но последняя команда, это AT+CWJAP и далее ничего не происходит, это означает что модуль не может зарегистрироваться в вашей WiFi сети с указанным SSID и паролем:


AT
AT+RST
ATE0
AT+CWMODE=1
AT+CWQAP
AT+CWDHCP=1,1AT+CWJAP="MySSID","MyPassword"

Проверьте, подключается ли ESP8266 к облачному серверу

Если после сброса Arduino в Serial Monitor вы видите последовательность команд, но последняя команда, которую вы видите является AT+CIPSTART и далее она периодически повторяется примерно раз в минуту, это означает что недоступен облачный сервер. Возможно указан неверно URL сервера или порт. Возможно ваша точка доступа WiFi не подключена к интернету.


AT
AT+RST
ATE0
AT+CWMODE=1
AT+CWQAP
AT+CWDHCP=1,1
AT+CWJAP="MySSID","MyPassword"
AT+CIPMODE=0
AT+CIPMUX=1
AT+CIPSTART=0,"TCP","cloud.remotexy.com",6376
AT+CIPSTART=0,"TCP","cloud.remotexy.com",6376
AT+CIPSTART=0,"TCP","cloud.remotexy.com",6376

Если периодически раз в минуту повторяются две команды AT+CIPSTART и AT+CIPSEND, это означает, что сервер доступен, но токен был отклонен сервером, как незарегистрированный.


...
AT+CIPSTART=0,"TCP","cloud.remotexy.com",6376
AT+CIPSEND=0,44 
AT+CIPSTART=0,"TCP","cloud.remotexy.com",6376
AT+CIPSEND=0,44 
AT+CIPSTART=0,"TCP","cloud.remotexy.com",6376
AT+CIPSEND=0,44 

Проверьте прошивку ESP8266

Если после сброса Arduino в Serial Monitor вы видите только начало последовательности команд, но нет завершающей команды AT+CIPSERVER=1,6377 это означает, что модуль ESP8266 имеет устаревшую прошивку. Требуется обновление прошивки.

Подробнее об обновлении прошивки ESP8266


Проверьте питание ESP8266

Так же возможно, что вашей ESP8266 не хватает мощности источника питания. Некоторые платы Arduino имеют слабый стабилизатор напряжения 3.3 В, который не способен выдавать 200-300 мА в пиковых режимах. В этом случае в Serial Monitor вы так же увидите обрыв последовательности команд.