Вопрос Робот на связке Arduino + esp8266-01 + L298N

XSmile2008

New member
Делаю дипломную работу в институт. Решил сделать робота на Arduino. Хочу с Android телефона, ноутбука посылать команды на адруино через esp8266. Как лучше это все реализовать? Пробовал использовать Arduino IDE для прошивки модуля, модифицировал пример ESP8266/WiFiWebServer, там где светодиод включает/выключает. Добавил обработку HTTP запросов на движение вперед/назад/всево/вправо. Оно заработало но после одной, максимум двух выполненых команд модуль переставал отвечать на запросы или перезагружался, да и скорость выполнения первых была с задержкой в пол секунды-секунду, что очень много. Схема подключения такая, что модуль связан через пины 0, 1 с ардуино и шлет ему в зависимости от того какой HTTP запрос пришел команды а ардуинка уже командует L298N.
Как бы получше реализовать этот процес общения? Нужно стабильное соединение, убрать из связки ардуино не предлагать, надо будет подключать довольно много всего, так что выводы ардуины понадобятся, еще и шифт регистрами расширять прийдется. Хотелось бы использовать наш модуль как мозги а ардуино как хаб для остальных устройств. Типа ардуино считывает с сонара данные и посылает их 8266 а он принимает решение куда дальше ехать и посылает команду ардуине(например проедь 10 см вперед и поверни на 30 градусов влево).

Текущее подключение на фото снизу.
rx - white
tx - blue
vcc - orange
ch_pd - yellow
reset - gray
gpio0 - green
gpio2 - purple
ground - black


2015-06-21 22.06.19.jpg 2015-07-04 16.02.44.jpg 2015-07-04 16.02.49.jpg 2015-07-04 16.03.00.jpg 2015-07-04 16.03.22.jpg
 
Последнее редактирование:

jmms

Moderator
Команда форума
@XSmile2008 А почему просто не взять Bluetooth или WiFi шилд для Ардуино и, в случае Bluetooth, а скорей всего и с WiFi шилдом, просто гонять данные по Serial, или тут важно использовать именно ESP? Может важно использовать HTTP для управления роботом?
ESP прошита NodeMCU или прошивкой разработанной на Arduino IDE? Или там стандартная AT прошивка? (Если стандартная AT, то работает она по слухам и личному опыту крайне не стабильно).
Я бы сделал так: ESP прошил при помощи Arduino IDE, поднял бы вебсервер на ESP с одним URL, все что приходит в него - отправлял бы в Serial, а ножки RX, TX прицепил бы к Arduino и слушал бы на Arduino: что пришло от ESP, какой URL, разбирал бы команды и так далее...
Можно так же заюзать https://github.com/marcoschwartz/aREST, а на Arduino слушать пины и командовать. Но тут нужно использовать ESP-07.
 

XSmile2008

New member
Как вы и написали я использовал прошивку через Ардуино ИДЕ. Создал одностраничный сайт где запросами посылал команды. Ножки RX и TX к 0, 1 пину Ардуино. Использовать хочу именно с esp8622, потому что надо будет реализовывать сложные алгоритмы искусственного интеллекта, что Ардуино в реальном временени вообще не вытянет с её 16мГц.
Так вот работал этот веб сервер крайне не стабильно. Вчера еще поигрался с замерами потребления. Когда модуль стартует потребление 20-30 мА, после загрузки и включения WiFi 70-80мА. При отправки данных 90-100мА. Попробовал нагрузить ардуиновский преобразователь 1117 по максимуму подключив польские старые светодиоды(каждые по 50мА) и когда потребление дошло до 160, их свечение начало просаживатся, как и свечение синей лампочки на esp. Тойсть регулятор который должен выдавать 800мА выдает всего где-то 150. И еще когда линия так напружена при ресете модуля он без остановки выдает шум в сериал. Как только снимаю светодиоды загружается.
Кто что посоветует? Нужно автономное питание робота. И почему 1117 преобразователь так просаживатся на 1/5 своей мощности?
 

Andy Korg

Moderator
Команда форума
почему 1117 преобразователь так просаживатся на 1/5 своей мощности?
Тут возможны варианты:
1. Источник питания выдающий напряжение на 1117 то же просаживается.
2. Слишком большое падение напряжения на 1117 и как следствие срабатывание защиты.
 

XSmile2008

New member
Врятли esp8266 может взять больше 800мА. Думал что конвертор уровней бракованый, но если бы на нем уходило 700-800 мА, он бы довольно сильно грелся а он берет в районе 5-10мА. Вчера еще попробовал запитать отдельно L298N от батареек и отдельно Ардуино с модулем от повербанка, стало получше, даже ездило по столу. Но скорость обработки запросов всё равно не удовлетворяет да и через 5-7 запросов ребут. Какие есть альтернативы веб серверу?
Потребление по линии 3,3в осталось таким же. Потребление всей электроники в районе 150 мА. USB порт компьютера должен выдавать намного больше.
 

Andy Korg

Moderator
Команда форума
а нарисуйте схему пожалуйста, а то дешифровка схемы по фотографиям у меня например, отбивает всякую охоту разбираться.
 

XSmile2008

New member
Вот схема подключения.BigTrack_МП.png
Питание к ардуине идет через повербанк (работает лучше, но тоже с перезагрузками раз в 7-8 комманд) или юсб порт компютера(После 1-2 комманд перезагрузка)
 
Последнее редактирование:

Andy Korg

Moderator
Команда форума
Я так понял 3.3В берете с ардуиновской ноги? А она случаем не на вывод 3.3В FT232RL заведена? Если да то нужно сделать отдельный источник 3.3В Если на 1117 то скорее всего esp сбрасывается по питанию. Сделайте покороче провода на esp, подальше от движков, блокировочных конденсаторов натыкайте.
 

XSmile2008

New member
Покороче провода нельзя, двигатели как раз находятся в районе отладочной платы и скорее всего создают помехи, поэтому и вынес модуль в заднюю часть, подальше от двигателей и L298. з.3в идут со встроенного в Ардуино преобразователя asm1117 3.3. А он уже берет питание с asm1117 5.0. Ардуино и двигательная система связаны только логически и землей, питание у них раздельное, так что хоть я застопорю двигатели, на питание электроники это не влияет.

UPD: как я понял мне нужно развести конденсаторы и резисторы как можно ближе к самой esp и желательно соединять это все пайкой? А что если я распаять все это дело на макетке, а к Ардуино протянуть только нужные провода? Тогда длина проводов уже роли не сыграет и плюс будет меньше помех от бредборда. Получится что то вроде тех готовых переходник от на Aliexpress у которых уже все распаяно
 
Последнее редактирование:

Andy Korg

Moderator
Команда форума
По правильному питание силовой части должно быть отделено от питания цифровой части. Провода питания (и общий то же) от силовой части и цифровой должны соединятся только в одной точке - на выходном фильтре блока питания. Сигнальные провода должны как можно дальше быть от силовых. Если силовые и сигнальные провода находятся рядом, то они должны либо быть перпендикулярны либо как минимум сигнальный провод в экранирующей оплетке.
 

XSmile2008

New member
Тойсть если я возьму отдельный стабилизатор asm1117, резисторы, конденсатор и сделаю что то типа такого http://ru.aliexpress.com/item/5pcs-...-adapter-board-free-shipping/32288662232.html. То это будет не правильное решение потому что силовая часть будет рядом с электроникой?

А могут быть проблемы изза того что конденсатор у меня был на 50v а не на 3.3v? Выпаял еого из силовой части монотора старого.
 

Andy Korg

Moderator
Команда форума
силовая часть будет рядом с электроникой
Тут все более менее нормально. Под силовой частью я имел в виду питание моторов, реле, пускателей, сварочных аппаратов и рентгеновских лазеров :)
Должно быть что-то типа такого:
Напряжение на конденсаторе указывает его максимальное рабочее напряжение, поэтому для 3.3В максимальное в 50В в самый раз :) Единственно электролиты могут терять емкость со временем.
 

Вложения

XSmile2008

New member
Еще один вопрос про конденсаторы. Какие лучше применять? Если я туда поставлю 470 микрофарад 25v, это нормально будет? Что лучше электролиты или танталовые, керамические? Какая минимальная, максимальная емкость?
Сейчас стоит такой как на фото.
Просто есть еще танталовые на 200мкФ, 100мкФ, 47мкФ.
2015-07-09 13.46.44.jpg
 
Последнее редактирование:

Andy Korg

Moderator
Команда форума
Если я туда поставлю 470 микрофарад 25v, это нормально будет?
Единственное ограничение - рабочее напряжение конденсатора. Т.к. у нас питание esp 3.3В то можно ставить любые конденсаторы начиная от 10В. (с запасом по напряжению)
Что лучше электролиты или танталовые, керамические?
Нельзя сказать лучше или хуже для этих типов. Каждый из них предназначен для своей области применения (типа что лучше - асфальт или штукатурка. И то и то укладывается на поверхность, но используется по разному) Обычно в цепях питания ставят парами - керамический и электролит или тантал. Керамика "гасит" короткие импульсы помехи, электролиты или тантал выравнивают "провалы" питания при резком изменении тока потребления устройства.
Какая минимальная, максимальная емкость?
Обычно определяется минимально необходимая емкость, а потом по требуемым габаритам подбирается конденсатор. Общее правило для электролитических или танталовых конденсаторов в цепи питания - чем больше емкость тем лучше. Керамические конденсаторы обычно ставят емкостью в 0.01 мкф.
 

XSmile2008

New member
Итак два дня назад пришли стабилизаторы AMS1117 3.3v. Решил распаять все прямо на Esp8266, что бы все надежно, без лишних проводов и бредбордов. Взял smd резисторов повыпаивал на 10кОм, подтянул gpio_0, gpio_2, ch_pd, rst к vcc. Еще валялись танталовые конденсаторы на 220мкФ со старой Нокии. Один поставил на вход стабилизатора и два парарельно на выход. Еще впаял два керамических конденсатора для шумоподавления. Впаял перемычку для прошивки и кнопку ресета и вот что получилось.
2015-08-02 13.49.27.jpg 2015-08-02 13.51.12.jpg 2015-08-02 13.55.20.jpg 2015-08-02 14.01.02.jpg 2015-08-02 14.01.38.jpg 2015-08-02 14.38.25.jpg
Модуль стал вести себя намного стабильнее уже перезагружается не после 5-7 команд а после 20-25. Он он все равно перезагружается! Я уже и конденсаторов ставил на 1000-2600 мкФ на линию 5v и отдельно запитывал модуль от повербанка а ардуину от USB(земли конечно же соединял) ничего не помогает. Разместил подальше от двигателей и вообще всей електроники что бы шумов не было. Тестер показывает стабильные 3.3v на виходе AMS1117.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Модуль стал вести себя намного стабильнее уже перезагружается не после 5-7 команд а после 20-25. Он он все равно перезагружается!
Это на 90% Веб на Ардуино. Он не рассчитан на запросы чаше одного в минуту :)
 

XSmile2008

New member
А я уже и не через веб работаю. Настроил Telnet, прямо через консоль в компьютере кидаю ему команды типа _fw, _bw, _l, _r (вперед, назад, влево, вправо) а он уже мне шлет OK или Wrong command. Вот и весь обмен данными. Скорость по сравнению с вебом возросла в разы но перезагрузки остались. Ну и в прошлом я запускал веб не на Ардуино, а на esp8266. Выше я уже писал что Ардуино будет выступать в роли хаба что ли, обрабатывать данные с датчиков, фильтровать их, управлять моторами, выполнять всякие команды от esp, а уже esp на основе данных от Ардуино будет принимать решения и общятся с компьютером. Вот только бы решить проблему с перезагрузками. Или прийдется постоянно бекапить куда-то данные что бы не стирались при перезагрузке и на компьютере делать автоматический реконект, но это перерыв где-то на секунду пока esp перезагрузится, а это очень не хорошо
 
Последнее редактирование:

XSmile2008

New member
А это мне зачем. Скорость работы меня и так устраивает пока. Проблема в стабильности
 
Сверху Снизу