Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
main:upgkits:wifibotuart [2020/06/11 14:06] smartadmin создано |
main:upgkits:wifibotuart [2020/06/12 13:58] smartadmin [Описание] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Управление "МиниБот" через Wi-Fi ====== | + | ====== Управление "МиниБот" через Wi-Fi (UART) ====== |
+ | ====== Описание ====== | ||
+ | В этом проекте мы подключим нашего робота к сети Wi-Fi, чтобы управлять им через интернет-страницу. Для этого построим страницу с кнопками действий и при нажатии на кнопку робот будет двигаться в указанную сторону. | ||
- | ===== Описание ===== | + | ++++ В чём отличия от прошлого урока? | |
- | В этом проекте мы подключим нашего робота к сети Wi-Fi, чтобы управлять им через интернет-страницу. Для этого построим страницу с кнопками действий и при нажатии на кнопку робот будет двигаться в указанную сторону 5 секунд. | + | |
+ | В уроке [[main:upgkits:wifibot|]] мы заметили неудобство связанное с медленным откликом интернет-страницы. Это связано в том числе с использованием программной эмуляции 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 char* ssid = "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(ssid, pass); | + | |
- | } | + | 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 |
- | SSID: SmartElements | + | Features: WiFi |
- | IP Address: 192.168.1.182 | + | Crystal is 26MHz |
+ | MAC: 18: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 секунд) и откройте страницу с адресом, полученным в предыдущем шаге. Управляйте роботом с помощью сайта. В зависимости от полученной команды робот будет двигаться в определённом направлении. | + |