Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
main:upgkits:wifibotuart [2020/06/11 14:06]
smartadmin создано
main:upgkits:wifibotuart [2020/06/12 13:51]
smartadmin [Управление Смарт РОБО через Wi-Fi (UART)]
Строка 1: Строка 1:
-====== Управление "​МиниБот"​ через Wi-Fi ======+====== Управление "​МиниБот"​ через Wi-Fi (UART) ​====== 
 +====== Описание ====== 
 +В этом проекте мы подключим нашего робота к сети Wi-Fi, чтобы управлять им через интернет-страницу. Для этого построим страницу с кнопками действий и при нажатии на кнопку робот будет двигаться в указанную сторону. ​
  
-===== Описание ​===== +++++ В чём отличия от прошлого урока? |  
-В этом проекте мы подключим нашего робота к сети Wi-Fiчтобы управлять им через интернет-страницуДля этого построим страницу с кнопками действий и при нажатии на кнопку робот ​будет двигаться в указанную сторону 5 секунд.+ 
 +В уроке [[main:​upgkits:​wifirobo|]] мы заметили неудобство связанное с медленным откликом интернет-страницы. Это связано с использованием программной эмуляции Serial соединения,​ ведь скорость обмена данными при таком соединении сильно ограничена. В отличие от прошлого урока, где сервером выступал контроллер Smart UNO, в данном уроке Web-сервером будет сам ​Wi-Fi модуль. Ведь он имеет свой контроллер на плате (под металлическим корпусом),​ который как ​раз и возьмёт на себя функции отображения ​интернет-страницы и обработки http-запросовЭто и позволит разгрузить контролер UNO, и выполнять запросы быстро. Результат запросов в свою очередь будет передан контроллеру UNO, и тот будет управлять движением робота.  
 + 
 +В свою очередь,​ есть и небольшое неудобство. Так как в прошлом уроке мы использовали эмуляцию Serial - соединения, ​то мы могли ​выводить отладочную ​информацию. То есть модуль был подключен к контроллеру ​и одновременно к компьютеру. В этом ​уроке, мы будем программировать ​Wi-Fi модуль и контроллер по очереди. И после их подключения друг к другу, монитор Serial-порта никакой информации не выведет. 
 +++++
  
 ===== Дополнительные модули ===== ===== Дополнительные модули =====
-Предполагается что у Вас уже есть набор ​Минибот, и вы собрали его по инструкции в руководстве пользователя. Тогда дополнительно понадобится: ​+Предполагается что у Вас уже есть набор ​СмартРОБО, и вы собрали его по инструкции в руководстве пользователя. Тогда дополнительно понадобится: ​
  
 ^ Что нужно ​                                                                                                              ​^ ​ Кол-во,​ шт  ^ ^ Что нужно ​                                                                                                              ​^ ​ Кол-во,​ шт  ^
 | [[https://​smartelements.ru/​collection/​svyaz/​product/​wifi-modul-esp-12|Wi-Fi модуль ESP-12 (5 В)]] |  1           | | [[https://​smartelements.ru/​collection/​svyaz/​product/​wifi-modul-esp-12|Wi-Fi модуль ESP-12 (5 В)]] |  1           |
-| [[https://​smartelements.ru/​collection/​provoda-i-kabeli/​product/​nabor-provodov-20-sht-20sm-mama-mama|Провода мама-мама]] |  4           | 
  
  
 ===== Библиотеки ===== ===== Библиотеки =====
   * [[http://​files.smartelements.ru/​know_libs/​robotSE.zip|Библиотека robotSE (для робота)]]   * [[http://​files.smartelements.ru/​know_libs/​robotSE.zip|Библиотека robotSE (для робота)]]
-  * [[http://​files.smartelements.ru/​know_libs/​WiFiEsp.zip|Библиотека для WiFi]] 
-  * [[http://​files.smartelements.ru/​know_libs/​AltSoftSerial.zip|Библиотека для эмуляции сериал соединения]] 
  
  
-<WRAP center round tip 80%> 
-Перед началом работы с WiFi-модулем настройте его на скорость обмена в 9600 бод. О том как это сделать,​ рассказано [[main:​comm:​esp12#​Установка скорости обмена данными|на этой странице]]. 
-</​WRAP>​ 
 ===== Порядок действий ===== ===== Порядок действий =====
-==== Шаг 1. Пересоберите ​робота ==== +==== Шаг 1. Установите библиотеки ​==== 
-  - С помощью ​отвёртки, ​входящей ​в комплект ​набораснимите ​с платформы модуль ИК-приёмника +Установите в Arduino IDE библиотеки, которые представлены по ссылкам выше (в подпункте "​Библиотеки"). О том как устанавливаются библиотеки описано в руководстве ​пользователя, входящем в комплект, либо посетите ​соответствующий [[main:info:libsаздел ​Базы Знаний]].
-  - С помощью отвёртки, входящей в комплект ​набора, прикрепите ​на место модуля ИК-приёмника - [[https://​smartelements.ru/​collection/​svyaz/​product/​wifi-modul-esp-12|Wi-Fi модуль]] +
-  - Присоедините Wi-Fi модуль с помощью проводов мама-мама к выводам мотор шилда по следующей схеме:+
  
-^ Вывод ​модуля^ Вывод ​шилда ​ | +==== Шаг 2. Установите пакет ESP8266 ==== 
-| +            | +             | +Установите пакет ​для работы с ESP8266, он нужен для работы с платами из семейства ESP8266 (wi-fi модулями) прямо ​из Arduino IDE. Для этого откройте Arduino IDE, и перейдите в меню **Файл -> Настройки**. В поле **"​Дополнительные ссылки для менеджера плат"​** добавьте строку:​ 
-           | -             | +<​file>​ 
-| TX           | 8             | +https://​arduino.esp8266.com/​stable/​package_esp8266com_index.json 
-| RX           | 9             |+</​file>​
  
-==== Шаг 2. Установите библиотеки ==== +{{ :main:upgkits:settings.jpg?​nolink ​|}}
-Установите в Arduino IDE библиотеки,​ которые представлены по ссылкам выше. О том как устанавливаются библиотеки описано в руководстве пользователя,​ входящем в комплект,​ либо посетите соответствующий [[main:info:libs|раздел Базы Знаний]].+
  
 +И нажмите ОК. Далее откройте меню **Инструменты -> Платы -> Менеджер** плат и введите в окне поиска **"​ESP8266"​**. После этого нажмите кнопку "​Установить"​ и дождитесь окончания установки.
 +{{ :​main:​upgkits:​boardmanager.jpg?​nolink |}}
  
 +==== Шаг 3. Подключите Wi-Fi модуль ====
 +Для того чтобы дальше работать с модулем,​ понадобится подключить его через Smart UNO к компьютеру.
  
-==== Шаг 3. Загрузите ​скетч ​на контроллер ==== +<WRAP center round info 80%> 
-Измените в скетче значения переменных **char ssid[]** = "​SmartElements";​ //имя сети wifi и **char pass[]** = "​12345678";​ //пароль от сети wifi на свои (имя вашей сети ​и пароль к ней).+Обратите ​внимание! Чтобы схема с подключением работала, ​необходимо соединить проводом выводы RESET и GND платы контроллера. 
 +</​WRAP>​
  
 +{{ :​main:​info:​esp_uno_connecting.png?​nolink |}}
 +
 +После того как вы подключили модуль к контроллеру,​ подключите контроллер к компьютеру с помощью USB-кабеля.
 +
 +==== Шаг 4. Загрузите скетч на Wi-Fi модуль ====
 +В этом шаге загрузим скетч на модуль через контроллер Smart UNO. 
 <file Arduino> <file Arduino>
-#include "​WiFiEsp.h" ​//​подключение библиотеки WiFiEsp +//​подключение библиотек 
-#include <robotSE.h> ​//​подключение библиотеки для работы с платформой+#include <ESP8266WiFi.h> 
-#include <AltSoftSerial.h> ​//​подключение библиотеки для эмуляции сериал соединения+#include <​WiFiClient.h> 
 +#include <ESP8266WebServer.h>
  
-AltSoftSerial wifiSerial; //​создание виртуального сериал соединения (на 8 и 9 выводах) +const charssid = "​SmartElements";​ //​имя ​вашей ​сети 
-  +const char* password ​= "​12345678";​ //​пароль от сети
-char ssid[] = "​SmartElements";​ //имя сети ​wifi +
-char pass[] ​= "​12345678";​ //​пароль от сети ​wifi +
-int status = WL_IDLE_STATUS;​ //​статус сети wifi+
  
-robotSE robot; //​создание объекта робота+ESP8266WebServer server(80); //​создание объекта ​сервера
  
-WiFiEspServer server(80); ​//переменная для ​создания объекта ​сервера +//​создание сайта 
-  +String webPage =   "<​!DOCTYPE HTML>"​ 
-//использование кольцевого буфера для увеличения скорости +  "<​html>"​ 
-RingBuffer buf(8);+  "<​head>"​ 
 +  "<​meta charset=\"​utf-8\">"​ 
 +  "<​title>​Робопульт</​title>"​ 
 +  "<​style>"​ 
 +      "a {" 
 +   "​outline:​ none;"​ 
 +    "​text-decoration:​ none;"​ 
 +    "​display:​ inline-block;"​ 
 +    "​color:​ white;"​ 
 +    "​padding:​ 20px 30px;"​ 
 +    "​margin:​ 10px 20px;"​ 
 +    "​border-radius:​ 10px;"​ 
 +    "​font-family:​ '​Montserrat',​ sans-serif;"​ 
 +    "​text-transform:​ uppercase;"​ 
 +    "​letter-spacing:​ 2px;"​ 
 +    "​background-image:​ linear-gradient(to right, #9EEFE1 0%, #4830F0 51%, #9EEFE1 100%);"​ 
 +    "​background-size:​ 200% auto;"​ 
 +    "​box-shadow:​ 0 0 20px rgba(0,​0,​0,​.1);"​ 
 +    "​transition:​ .5s;​}"​ 
 +    "​a:​hover {background-position:​ right center;​}"​ 
 +  "</​style>"​ 
 +  "</​head>"​ 
 +  "<​div style=\"​text-align:​center;​\">"​ 
 +  "<a href=\"/​F\">​Вперёд</​a>"​ 
 +  "<​br><​br>"​ 
 +  "<a href=\"/​L\">​Влево</​a>"​ 
 +  "<a href=\"/​S\">​Стоп</​a>"​ 
 +  "<a href=\"/​R\">​Вправо</​a>"​ 
 +  "<​br><​br>"​ 
 +  "<a href=\"/​B\">​Назад</​a>"​ 
 +  "</​div>"​ 
 +  "</​html>"​;
  
-/* Отправка и формирование страницы - ответа +void setup(){ 
- ​* ​ на сервер  +  ​delay(1000); //задержка в 1 секунду 
- */ +  ​Serial.begin(115200); //инициализация Serial-соединения 
-void sendHttpResponse(WiFiEspClient&​ client) +  WiFi.begin(ssid, password); //подключение к сети 
-+  Serial.print("​Trying to connect to "); //​вывод информации для отладки 
-  ​//​формирование интернет-страницы +  Serial.println(ssid); //вывод ​информации для отладки 
-  client.print( + 
-      "​HTTP/​1.1 200 OK\r\n"​ +  ​while (WiFi.status() != WL_CONNECTED) { //подключение к сети 
-      "​Content-Type:​ text/​html\r\n"​ +    delay(500); 
-      "​Connection:​ close\r\n"​  +    Serial.print(".");
-      "​\r\n"​); +
-  client.print("<​!DOCTYPE HTML>​\r\n"​);​ +
-  client.print("<​html>​\r\n"​);​ +
-  client.print("<​head>​\r\n"​);​ +
-  client.print("<​meta charset=\"​utf-8\">​\r\n"​);​ +
-  client.print("<​title>​Робопульт<​/title>​\r\n"​);​ +
-  client.print("<​style>​\r\n"​);​ +
-  client.print( +
-      ".c {\r\n"​ +
-      "​border:​ 1px solid #​333;​\r\n"​ +
-      "​display:​ inline-block;​\r\n"​  +
-      "​padding:​ 5px 15px;​\r\n" ​       +
-      "​text-decoration:​ none;​\r\n"​ +
-      "​color:​ #​000;​\r\n"​ +
-      "​}\r\n"​);​ +
-  client.print("<​/style>​\r\n"​);​ +
-  client.print("</​head>​\r\n"​);​ +
-  client.print("<​div style=\"​text-align:​center;​\">​\r\n"​);​ +
-  client.print("<​a href=\"/​F\"​ class=\"​c\">​Вперёд</​a>​\r\n"​);​ +
-  client.print("<​br><​br>​\r\n"​);​ +
-  client.print("<​a href=\"/​L\"​ class=\"​c\">​Влево</​a>​\r\n"​);​ +
-  client.print("<​a href=\"/​S\"​ class=\"​c\">​Стоп</​a>​\r\n"​);​ +
-  client.print("<​a href=\"/​R\"​ class=\"​c\">​Вправо</​a>​\r\n"​);​ +
-  client.print("<​br><​br>​\r\n"​);​ +
-  client.print("<​a href=\"/​B\"​ class=\"​c\">​Назад</​a>​\r\n"​);​ +
-  ​client.print("</​head>​\r\n"​); +
-  client.print("<​/html>​\r\n"​);​ +
-+
-  +
-/* Вывод состояния сети и адреса для подключения к моджулю ​  +
- */ +
-void printWifiStatus() +
-+
-  //​вывод ​названия ​сети +
-  ​Serial.print("​SSID:​ "); +
-  Serial.println(WiFi.SSID()); +
-  +
-  ​//вывод полученного модулем IP-адреса +
-  IPAddress ip = WiFi.localIP();​ +
-  Serial.print("​IP Address: ​"); +
-  Serial.println(ip);​ +
-  +
-  ​//​вывод информации ​о адресе в браузере +
-  Serial.println();​ +
-  Serial.print("​To see this page in action, open a browser to http://"​);​ +
-  Serial.println(ip);​ +
-  Serial.println();​ +
-+
-  +
-void setup() +
-+
-  //​инициализация Serial-соединения ​для отладки +
-  Serial.begin(9600); +
-  ​//инициализация Serial-соединения ​для ​ESP-модуля +
-  wifiSerial.begin(9600);​ +
-  //​инициализация ESP модуля +
-  WiFi.init(&​wifiSerial)+
-  +
-  ​//проверка существования модуля +
-  if (WiFi.status() == WL_NO_SHIELD) { +
-    Serial.println("WiFi module not present"); +
-    //если модуля нет, то не продолжать работу далее +
-    while (true);+
   }   }
-  +  ​ 
-  //попытка подключения ​к wifi сети +  ​Serial.println(""​); ​//вывод информации для ​отладки 
-  ​while (status != WL_CONNECTED{ +  Serial.print("​Connected to "​); ​ //​вывод информации для отладки 
-    Serial.print("​Attempting to connect to WPA SSID: "); //​вывод надписи о попытке подключения +  ​Serial.println(ssid); //​вывод информации для отладки 
-    Serial.println(ssid); //​вывод названия сети +  Serial.print("​IP address: "​); ​ //​вывод ​информации для ​отладки (полученный IP адрес) 
-    //подключение к сети, используя имя и пароль +  Serial.println(WiFi.localIP()); //​вывод ​информации для отладки 
-    ​status = WiFi.begin(ssidpass); +   
-  } +  server.on("/",​ [](){ //​обработка общего запроса страницы 
-  +    ​server.send(200,​ "​text/​html",​ webPage); ​//отправка ответа "​ОК" ​и веб-страницы 
-  ​Serial.println("​You're connected to the network"); //вывод сообщения о подключении +  }); 
-  ​printWifiStatus(); //вывод статуса подключения +  server.on("/​F"​[](){ //обработка ​запроса /F 
-  +    ​server.send(200"​text/​html",​ webPage); //​отправка ответа "​ОК"​ и веб-страницы 
-  //инициализация веб-сервера на порту № 80 +    Serial.println("​F"); //отправка команды в Serial-порт 
-  server.begin();​+  }); 
 +  server.on("/​L",​ [](){ //​обработка запроса /F 
 +    server.send(200,​ "​text/​html",​ webPage); //отправка ​ответа "​ОК"​ и веб-страницы 
 +    Serial.println("​L"​);​ //отправка команды в Serial-порт 
 +  }); 
 +  server.on("/​R",​ [](){ //​обработка запроса /R 
 +    server.send(200,​ "​text/​html",​ webPage); //​отправка ответа "​ОК" ​и веб-страницы 
 +    ​Serial.println("​R"​); //отправка команды в Serial-порт 
 +  }); 
 +  server.on("/​S",​ [](){ //обработка запроса /S 
 +    server.send(200,​ "​text/​html",​ webPage); //​отправка ответа "​ОК"​ и веб-страницы 
 +    ​Serial.println("​S"​);​ //​отправка команды в Serial-порт 
 +  ​}); 
 +  server.on("​/B", [](){ //​обработка запроса /B 
 +    server.send(200,​ "​text/​html",​ webPage); //​отправка ответа "​ОК" ​и веб-страницы 
 +    Serial.println("​B"​);​ //отправка команды в Serial-порт 
 +  }); 
 +  server.begin(); ​//​запуск сервера 
 +  Serial.println("​HTTP server started"​);​ //​вывод отладочной информации
 } }
    
-  +void loop(){ 
-void loop() +  server.handleClient(); //​обработка запросов с сайта
-+
-  ​WiFiEspClient client = server.available();  //ожидание входящих клиентов +
-  +
-  if (client) {                               //​если получен клиент,​ +
-    Serial.println("​New client"​); ​            //​вывести сообщение в Serial-порт +
-    buf.init(); ​                              //​инициализация ​буфера +
-    while (client.connected()) {              //цикл, пока клиент подключен +
-      if (client.available()) {               //​если от клиента есть байты для чтения,​ +
-        char c = client.read(); ​              //​прочитать байт, ​а затем +
-        buf.push(c); ​                         //​добавить его в буфер +
-  +
-        //если в строке получены два символа завершения строки +
-        //​значит - это конец HTTP запроса, так что нужно отправить ответ +
-        if (buf.endsWith("​\r\n\r\n"​)) { +
-          sendHttpResponse(client);​ +
-          break; +
-        } +
-  +
-        //​проверить если запрос был одним из: "GET /R", "GET /G" или "GET /B": +
-        if (buf.endsWith("​GET /F")) { //запрос изменения состояния красного цвета +
-          Serial.println("​Forward"​);​ //​вывод отладочной информации +
-          robot.move_forward();​ //​движение робота вперед +
-          delay(5000);​ //​задержка на 5 секунд +
-          robot.move_stop();​ //​остановка робота +
-        } else if (buf.endsWith("​GET /L")) { //​запрос изменения состояния зелёного цвета +
-          Serial.println("​Left"​);​ //​вывод отладочной информации +
-          robot.move_left();​ //​движение робота влево +
-          delay(5000);​ //​задержка на 5 секунд +
-          robot.move_stop();​ //​остановка робота +
-        } else if (buf.endsWith("​GET /R")) { //​запрос изменения состояния синего цвета +
-          Serial.println("​Right"​);​ //​вывод отладочной информации +
-          robot.move_right();​ //​движение робота вправо +
-          delay(5000);​ //​задержка на 5 секунд +
-          robot.move_stop();​ //​остановка робота +
-        } else if (buf.endsWith("​GET /B")) { //​запрос изменения состояния синего цвета +
-          Serial.println("​Back"​);​ //​вывод отладочной информации +
-          robot.move_back();​ //​движение робота назад +
-          delay(5000);​ //​задержка на 5 секунд +
-          robot.move_stop();​ //​остановка робота +
-        } else if (buf.endsWith("​GET /S")) { //​запрос изменения состояния синего цвета +
-          Serial.println("​Stop"​);​ //​вывод отладочной информации +
-          robot.move_stop();​ //​остановка робота +
-        } +
-      } +
-    } +
-  +
-    //​закрытие соединения +
-    client.stop();​ +
-    Serial.println("​Client disconnected"​);​ //​вывод информации об отключении +
-  }+
 } }
 </​file>​ </​file>​
  
-==== Шаг 4. Тестирование ==== +Теперь откройте в Arduino IDE меню ​**Инструменты -> Плата** и выберите из списка плату **Generic ESP8266 Module**. 
-После загрузки скетча,​ оставьте робота подключенным к компьютеру и откройте в Arduino IDE монитор порта. Для этого воспользуйтесь ​меню ​//Инструменты - Монитор порта//. +{{ :​main:​upgkits:​choose_boardesp.jpg?nolink |}}
-В скетче мы выводим отладочную ​информацию ​в монитор сериал порта. В том числе туда выводится информация о том, ​какой IP-адрес ​получил робот в вашей домашней сети+
  
-При старте работы информация в мониторе ​порта ​будут примерно такого вида:+Другие настройки в меню **Инструменты** приведите к виду: 
 +  * **Upload speed**: 115200 
 +  * **CPU Freequency**:​ 80 MHz 
 +  * **Crystal Freequency**:​ 26 MHz 
 +  * **Flash size**: 512 Kb (FS:64 OTA:214) 
 +  * **Flash mode**: DIO 
 +  * **Flash Freequency**:​ 40 MHz 
 + 
 +{{ :​main:​upgkits:​upload_settings_esp8266.jpg?​nolink |}} 
 + 
 +Выполните команду Скетч -> Загрузка. После этого на Wi-Fi модуле выполните следующие действия:​ 
 +  - Нажмите кнопку **PRG** на модуле и держите её нажатой 
 +  - Пока держите нажатой кнопку PRG, нажмите на модуле кнопку **RST** и отпустите её 
 +  - Отпустите кнопку **PRG** 
 + 
 +Так вы переведёте модуль в режим загрузки. Дождитесь окончания загрузки в окне. Загрузка ​выглядит примерно так:
 <​file>​ <​file>​
-[WiFiEsp] Initilization successful - 1.5.4 +esptool.py v2.8 
-Attempting to connect to WPA SSID: SmartElements +Serial port COM24 
-[WiFiEsp] Connected to SmartElements +Connecting........_ 
-You're connected to the network +Chip is ESP8266EX 
-SSIDSmartElements +FeaturesWiFi 
-IP Address192.168.1.182+Crystal is 26MHz 
 +MAC18:​fe:​34:​f8:​92:​ef 
 +Uploading stub... 
 +Running stub... 
 +Stub running... 
 +Configuring flash size... 
 +Auto-detected Flash size: 4MB 
 +Flash params set to 0x0240 
 +Compressed 293952 bytes to 214173...
  
-To see this page in action, open a browser to http://192.168.1.182+Writing at 0x00000000... (7 %) 
 +Writing at 0x00004000... (14 %) 
 +Writing at 0x00008000... (21 %) 
 +Writing at 0x0000c000... (28 %) 
 +Writing at 0x00010000... (35 %) 
 +Writing at 0x00014000... (42 %) 
 +Writing at 0x00018000... (50 %) 
 +Writing at 0x0001c000... (57 %) 
 +Writing at 0x00020000... (64 %) 
 +Writing at 0x00024000... (71 %) 
 +Writing at 0x00028000... (78 %) 
 +Writing at 0x0002c000... (85 %) 
 +Writing at 0x00030000... (92 %) 
 +Writing at 0x00034000... (100 %) 
 +Wrote 293952 bytes (214173 compressed) at 0x00000000 ​in 18.7 seconds (effective 125.8 kbit/s)... 
 +Hash of data verified.
  
-[WiFiEsp] Server started on port 80+Leaving... 
 +Hard resetting via RTS pin...
 </​file>​ </​file>​
  
-Таким образом мы видим адрес, где мы должен появиться сайт нашего робота.+//​Примечание: Из-за особенностей загрузки через плату UNO, при загрузке ​может не сразу находиться COM порт, или долго выполняться подключение. Попробуйте отключить кабель USB и подключить ​его сноваили попробовать ​другой порт. (Не забываете после этого переводить модуль в режим загрузки). Если у Вас ​не получается загрузить скетч на Wi-Fi модуль через контроллер UNO, вы всегда можете воспользоваться быстрым и надёжным способом:​ [[https://​smartelements.ru/​collection/​moduli/​product/​usb-uart-bridge|Модуль USB-UART на базе чипа CP2102]]//
  
-==== Шаг 5. Сайт ==== +==== Шаг 5. Определение IP-адреса ==== 
-Откройте браузер на компьютере и зайдите на интернет-сайтполученный в предыдущем шаге. Вы должны увидеть такую страницу:+После того как скетч на модуль будет загружен,​ нажмите на модуле кнопку RST (или отключите кабель и подключите снова). ​Откройте ​монитор порта, настройте его на скорость обмена 115200 бод. 
 + 
 +{{ :​main:​upgkits:​serial_monitor_esp.jpg?​nolink |}} 
 + 
 +В монитор будет выведена отладочная информация,​ посмотрите какой IP-адрес будет присвоен модулю. 
 + 
 +<​file>​ 
 +Trying to connect to SmartElements 
 +.. 
 +Connected to SmartElements 
 +IP address: 192.168.1.182 
 +HTTP server started 
 +</​file>​ 
 + 
 +//​Примечание: Перед выводом данных в монитор ​порта может быть выведена непонятная информация - это "​мусор",​ который попадает туда ​из-за особенностей работы модуля.// 
 + 
 +==== Шаг 6. Откройте страницу ==== 
 +В прошлом шаге мы получили IP-адрес нашего пульта управления роботом (интернет-страница) и теперь можем открыть её в браузере. 
 + 
 +{{ :​main:​upgkits:​робопульт.jpg?​nolink |}} 
 + 
 +==== Шаг 7. Загрузка скетча управления роботом ​на контроллер ==== 
 +Настало ​время загрузить скетч для управления роботом. 
 + 
 +<file Arduino>​ 
 +#include <​robotSE.h>​ //подключение библиотеки для работы с платформой. 
 + 
 +robotSE robot; //создание объекта робота 
 + 
 +void setup() 
 +
 +  //​инициализация Serial-соединения для получения команд от WiFi модуля 
 +  Serial.begin(115200);​ 
 +
 + 
 + 
 +void loop() 
 +
 +  String command = Serial.readStringUntil('​\n'​);​ //чтение строки из Serial-порта 
 +  command.trim();​ //​обрезать строку (убрать незначащие символы) 
 + 
 +  if (command == "​F"​) { //если это команда F 
 +    robot.move_forward();​ //​двигаться вперед 
 +  } 
 +  if (command == "​L"​) { //если это команда L 
 +    robot.move_left();​ //​двигаться влево 
 +  } 
 +  if (command == "​S"​) { //если это ​команда S 
 +    robot.move_stop();​ //остановиться 
 +  } 
 +  if (command == "​R"​) { //если это команда R 
 +    robot.move_right();​ //​двигаться вправо 
 +  } 
 +  if (command == "​B"​) { //если это команда B 
 +    robot.move_back();​ //двигаться назад 
 +  } 
 + 
 +
 +</​file>​
  
-{{ :​http:​know.smartelements.ru_main:​upgkits:​робопульт.jpg?nolink |}}+Загрузите данный скетч на контроллер. Не забудьте установить в меню **Инструменты -> Плата** ​плату Arduino UNO. 
 +После загрузки отключите контроллер от компьютера.
  
-Нажмите на кнопку и убедитесь что робот выполняет команды.+==== Шаг 8. Сборка и запуск ==== 
 +Если Вы пользовались ​контроллером для загрузки скетча на Wi-Fi модуль, то установите Motor shield на место ​и подключите все необходимые провода моторов и питания к шилду.
  
-++++Особенности ​при нажатии на кнопки|В связи с тем ​что мы используем эмуляцию сериал-соединениямодулю может не всегда хватать скорости связи, поэтому иногда страница ​может грузиться дольше чем при обычном соединении. Иногда требуется нажать на кнопку несколько ​раз чтобы ускорить процесс.+++++В выводы "​мама" ​с надписью **UART** установите ​Wi-Fi модуль вертикально, ​соблюдая распиновку (+ в +, - в -, TX в RX, RX в TX). 
 +Установите переключатель питания ​на Power модуле в положение ON.  
 +Перейдите на страницу управления роботом как указано в шаге 6, и управляйте движением робота через интернет.
  
-==== Шаг 6. Результат ==== +//Примечание: Так как мы загружали код напрямую на Wi-Fi модуль, то вся информация, которая была на модуле ​была затёрта (например, прошивка для ​работы с АТ-командами)Для того чтобы восстановить прошивку воспользуйтесь статьёй [[main:​info:​flashingesp|]]//​
-Теперь отключите робота от компьютера, поставьте ​на ровную поверхность где ​для его движения ​будет достаточно места. Включите переключатель ​на Power-модуле. После включения,​ подождите какое-то время ​(примерно 20 секунд) ​и откройте страницу с адресом, полученным в предыдущем шагеУправляйте роботом с помощью ​сайта. В зависимости от полученной команды робот будет двигаться в определённом направлении.+