Я разбивал web API на три части: 1. Запросы, возвращающие web страницы. 2. Запросы, возвращающие JSON строки с данными для элементов интерфейса. 3. Запросы, отправляющие данные устройству. Механизм такой: При запросе страницы возвращается страница с JS скриптом, который (если необходимо на странице отобразить состояние или иную динамическую инфу) выполняет уже запрос данных сам, преобразует их и управляет элементами интерфейса на странице. За чем это нужно: А чтобы у устройства был технический web API, если к примеру, нужно будет написать приложение для смартфона или связать устройство с другим по http протоколу и так далее. Почему JSON в качестве формата данных? Да потому что у JS есть штатные средства для его сериализации/десериализации. Формат простой, строку в микроконтроллере можно собрать с помощью функций sprintf() и strcat из stdlib. Еще я часто практикую генерацию элементов интерфейса на странице силами js скрипта. Например, устройство работает с датчиками на шине 1-wire. Датчиков может быть разное количество, в зависимости от того, сколько контроллер их нашел в шине. Возникает вопрос, как генерировать содержимое страницы с индикаторами. Сегодня датчик один, а завтра еще пять подключили. Тогда, после загрузки этой страницы, ее JS скрипт спросит у сервера, сколько у него есть датчиков и после получения ответа, создаст нужное количество элементов на странице для отображения данных. А потом уже запросит json массив с данными и заполнит ими созданные элементы. Я для упрощения часто создаю скрытый блок div с элементами для одного датчика, предназначенный тупо для копирования скриптом его innerHtml в innerHtml созданного блока. И делаю это столько раз, сколько надо. Вот и получается динамическая страница, для генерации которой не требуются силы микроконтроллера.
@@igorm6585 Описанный в конце пример очень похож на ajax. Просто я использую в качестве ответа JSON, а не XML. Его проще формировать программно. Например, я сделал в форме настроек wifi кнопку поиска доступных сетей. Работает так: При нажатии на кнопку, срабатывает обработчик JS, который отправляет серверу команду поиска сетей с большим таймаутом ожидания ответа. Сервер выполняет поиск и по его окончанию возвращает json со списком найденных ssid. Со стороны фронтэнда, на странице срабатывает обработчик принятых данных, где парсится этот JSON, скрывается поле ввода SSID и вместо него отображается выпадающий список найденных сетей. Страница при этом не перезагружается. Просто скрипт выполняет все необходимые действия по мере поступления событий. Данный механизм хорош тем, что вся нагрузка по интерактивности страницы возлагается на браузер, а не на хилый микроконтроллер, у которого 64 килобайта оперативки, два мегабайта ПЗУ и ядро с тактовой частотой в 80МГц. Генерация html страниц - это слишком сложная для него задача. Ему легче читать из ПЗУ готовые данные и отправлять клиенту. Формирование простой JSON строки тоже не так тяжело для него. XML потяжелее будет, так как там там много лишних данных, определяющих формат (data и так далее). В JSON их меньше - { } : , " [ ] и в принципе этого хватит.
@@VladimirMedintsev У меня есть F207, можно будет попробовать. Я имел в виду не только сам интерфейс, а тот, что полный стек TCP/IP, ещё и по памяти требовательный. Как там с этим?
Ну библиотека для W5500 хоть и гораздо компактнее, но в любом случае буфера на пакет всем нужны. Да будет еще видео по ней. Просто лето, и искупаться охота и заказчиков много, не дают расслабиться.
сейчас правильней делать страницу + яваскрипт и всю обработку на клиенте, потом хтмл жс и цсс паковать в фс, чтобы оно загрузилось один раз из памяти контроллера а обен данными идет через джейсона с минимальной нагрузкой на контроллер и расходом озу это касается контроллеров и серверов ну и упрощает разработку, потому что жс можно отлаживать в браузере и не заливать каждый раз в контроллер кстати еще было бы полезным показать, как передавать данные без ип адресов, только через мак я все хочу сделать сетевые релешки для моего серверного шкафа и чтобы адрес не выдавать, т.к. все это будет в одном свитче сидеть и смысла нет напрягать контроллер в 8 бит но я использую ардуину и что-то там в ихних библиотеках есть функция для работы с л2 только для мелкасхемы в5500 библиотеки ардуиновские сделаны так, что проще байты гонять через удп и заодно запилить ssdp сервер, чтобы виндовс находил устройство автоматом
Спасибо большое за ролик. Ролик не просто великолепный, но мало того Вы настолько все в нем продумали заранее (снимать видео не так легко как может кому-то показаться), но и проставили тут, в ролике, все метки по времени, поделив ролик на части и описания, что в каждой из этих частей происходит (!). Не каждый раз такое увидишь. У меня также есть вопросы к Вам: 1. 11:21 - это скорее не "кол-во PHY-контроллеров снаружи", а именно адрес (также как и в шине I2C скажем) подключенного внешнего контроллера. На NUCLEO-144 (не важно какое семейство т.к. вроде у всех стандартная схема на таких платах) нужно прописывать этот адрес как '0', а не '1 например'; 2. у Вас заработала 'makefsdata.exe' на 64-ти битном ПК? Если нет, то у меня есть рабочая версия - могу выложить где-то ее и у меня самого тоже 64-ти битная ОС. Возможно что-то еще настраивал у себя и если не заработает эта рабочая "exe"-шка, то посмотрю у себя и дополню как настраивал (но помню ничего такого не настраивал); 3. на самом деле это, мне кажется, очень интересная тема (про LwIP и пр.) и будет очень интересно как отреагирует тут аудитория (интересно это или все-таки простые контроллеры как F103 и пр. интереснее); 4. и самое главное, что хотел спросить - я конечно понимаю, что это "отвлечение" и возможно не нужная вещь и пр., но все-таки, по-моему стоит обратить и возможно неплохая вещь - недавно обнаружил, что MS выпускает бесплатно ПО и множество примеров под 'IOT' устройства для самых различных архитектур и фирм контроллеров. Это т.н. "Azure RTOS" вот некоторые ссылки: docs.microsoft.com/en-us/azure/rtos/guix/ и github.com/azure-rtos . Просто, MS недавно приобрела компанию 'Express Logic' которая выпускала свою RTOS т.н. 'ThreadX', но как проприетарное ПО. В вышеуказанных примерах теперь сама MS сделала, как мне кажется великое дело, она просто выложила их в открытый доступ. Мне кажется стоит посмотреть хотя бы что это и может оказаться гораздо полезнее это и подойдет (и может сделаете обзор на это хотя и не надеюсь :), а так даже сам хотел какой-то обзор на форуме выложить). Там примеры, правда под конкретные платы и возможно Вы не сможете их запустить т.к. нет таких плат у Вас (там для 'ST' 2 платы кажется и обе DISCOVERY), но может и сможете проверить. В этой Azure RTOS уже есть свой TCP, USB и файловая система (вплоть до exFAT), а также встроенная GUI библиотека для виджетов, а также ПО для их создания. Мне самому не очень пока что нравится LwIP (хотя наверно пока что) т.к. переусложнен по-моему излишне (скорее всего из-за универсальности) и возможно данная RTOS и ПО в этом плане получше будет, но надо изучать и смотреть (и пока так и делаю). Вот что хотел пока что написать Вам кратко.
Да, с PHYaddress в ролике ошибка, к сожалению ляпнул и не заметил что именно этот фрагмент ушел в финальную версию. С утилитой конвертером мне повезло и моя версия запускается, но это был долгий процесс поиска в гугле, но в итоге мне больше нравится использовать скрипт на перле. 3. Про azure я слышал, но у меня есть некоторое предубеждение против продуктов microsoft. Но я посмотрю обязательно.
А вообще огромное Вам спасибо за поддержку и всегда интересные комментарии. Мне очень нравится общаться с людьми и это очень часто приносит новую и крайне интересную информацию.
Тоже, ничего не получилось. Очень поверхностное изложение материала! Временами, не понятно, что откуда берется. После пинга, можно было сделать функцию "эхо". А файлы со страницами сервера можно было выложить отдельно, что бы, публика могла скачать их и повторить. Бьюсь третий день,- и всё никак!
Однако годнота! Не рассматривали вопрос подключения микросхем/модулей беспроводной связи (wifi), вместо той же lan8720? Сам этот вопрос не изучал, решил сразу у вас спросить.
Wi-Fi не всегда уместен. С его подключением и использованием сложностей нет, но это не всегда уместно, а иногда, как в случае с промавтоматикой и вовсе запрещено.
Есть весьма годные модули преобразователей интерфейсов c Cortex-ядрами на борту, кроме одного: USR-K6 (Eth-TTL), USR-K7 (Eth-TTL), USR-ES1 (Eth-SPI, кстати на чипе W5500), USR-E2 etc. Были ещё USR-K2 и USR-K3, но в продаже найти не получается. Производится это всё китайской конторой USR IOT. Мы на работе используем USR-K3 для производства приборов внутреннего пользования.
Добрый день! Вопрос не по видео. Используете ли вы git? Если да, то было бы интересно узнать как вы его используете в связки git + cubeIDE, например. Если нет, то почему нет? Спасибо заранее )
Мы командой делаем коммерческие проекты. Сели, сделали, отдали. В них какое-то управление версиями является излишним. Версия одна - та за которую заплатил заказчик. После завершения и передачи заказа заказчику мы архивируем проект и удаляем его с компьютеров. Если это свои и долговременные проекты то у нас у каждого свои облака и есть механизмы межоблачной синхронизации. На самом деле мне часто задают вопросы про гит, это хорошая технология когда разработчиков больше чем много, но это не единственный способ контроля версий и управления проектом.
Интересно рассказываете, хорошее пособие для начинающих (и не только). В одном проекте использовал LAN8720 - на мелких пакетах работает хорошо, однако, если загрузить пакетами по мегабайту - подвисает физика, требуя ресета. Такой же эффект и на других демоплатах (от того же мастеркит, к примеру). Немного сглаживают ошибки последовательные резисторы в РМ2 интерфейсе, но не до конца. Решение на RTL8201 на М2 - надёжное, как автомат Калашникова. Ни одной запинки. Так, просто как совет. Вопрос - нашли ли доступный по цене разъём со встроенным трансформатором?
Использую его в двух серийных платах, проблем нет. На максимальных нагрузках, стресс-тест сутками на пролет в "печках и морозилках". Прибором МАКС-ЕМ. В различных режимах, рандомный размер пакетов, рост размера и т.п. Хотел уточнить что значит "...однако, если загрузить пакетами по мегабайту..."? Какой пакет имеется ввиду?
@@t966rt Имелось ввиду постоянная передача данных, к примеру, экранный скрин-шот. (Сжатие в jpeg на 429 экрана 800*480 - почти секунда, поэтому решил просто bmp c rle упаковкой). Интересен дизайн платы и настройки интерфейса - возможно, в погоне за максимальной скоростью что-то где-то "перекрутил"...
@@chukgek2371 Приветствую! Процессор stm32f407ve, кварц для него 25MHz, на LAN8720 кварца нет, тактируется частотой 25MHz с процессора. Плата 2-ух слойная. Если интересно могу показать схему включения и разводку, там все просто. Изначально пользовался самописным стеком TCP/IP, т.к. многократно проект перетаскивался с других процессоров. Сейчас пользую библиотеку CycloneTCP, инициализация их же, работает "из коробки".
@@t966rt благодарю за ответ, возможно, именно в библиотеке ТСР стека и таится глюк. В схемотехнике используете последовательно резисторы? Один и тот же мой проект глючил как на моей, так и на 4-х слойке КИТа (их демопроект был "основой")
Владимир, спасибо! Вы прекрасно излагаете теорию, но уж очень не хватает простых практических примеров в конце, особенно когда нужно решить какую-нибудь конкретную задачу и начинаешь рыскать по интернету в поисках ответа на вопрос. В качестве примера что-нибудь совсем рутинное, принять/передать переменную, общение двух МК по локальной (и не только) сети.. Или, например для многих очень популярно сейчас подключение к mqtt брокеру, в домашней автоматизации этот протокол сейчас очень популярен. Но это уже сложное, состоящее из простого, и можно самостоятельно додуматься со временем)
До многих вещей необходимо доходить своим умом. Это своего рода тест на профессиональную пригодность. Необходимый минимум есть в каждом видео и демонстрация работы тоже.
Гыыг.. жалко я поздно наткнулся на Ваш канал :) Нужен был Ethernet и не найдя толковой инструкции (хотя может плохо искал), поднял его от регистров контроллера. Всё написал ручками, хотя выясняется, что можно было этим и не заниматься :)
Настроил все как по примеру. Проц f476. Собрал, запустил. Почему то на пинг нет ответа. Может ли это быть связано с тем что у меня провод из двух пар состоит? Чип ethernet'a LAN8710AI
18:09 если пакет больше 2кБ, то он не влезает в FIFO буфер MAC контроллера, отсюда ещё вытекает необходимость вычисления контрольных сумм ядром, в то время как у пакетов до 2кБ могут MAC может проверять CRC автоматически...
А в качестве чего выступает внешняя микросхема? Разве нельзя сразу напрямую подключать МК к Ethernet разъему (включая согласующий трансформатор обвязку)?
@@nikotinesmola Потому, что в STM32 не реализован физический уровень. Смотреть в модель OSI. На самом деле в двух роликах под одним из которых вы и пишете модель OSI прекрасно показана.
Спасибо огромное за ролик! Не могу разобраться, почему ip не пингуется( У вас случайно нету схемы подключения lan8720 к stm32? Я был бы очень благодарен!
Владимир, правильно ли я понимаю, что хардверная поддержка Ethernet микроконтроллером нужна только при использовании микросхемы LAN8720? В случае с ENC28K60 и W5500 общение по сети происходит через обычный SPI?
Я всегда говорил, что для роликов на ютубе останется кейл. Куб на текущий момент используется для большей части коммерческих проектов. Ну скажем так 60-70%.
Здравствуйте. Есть устройство на STM32F103vet6. Менюшка только на английском и китайском. Перевод меню на русский есть. Насколько проблемно заменить один из языков на русский? Если реально, сколько будет стоить? хотя бы от.. до...
Зависит от нескольких факторов, закрыт ли в микроконтроллере доступ к интерфейсу отладки. Если закрыт, то операция не возможна. Вторая проблема это в поддержке экраном устройства русских шрифтов. Есть она или нет, никто не знает и выяснять надо уже по факту. Ну и третья проблема это время на все эти движения. Так, что ради одного устройства смысла нет вообще.
@@VladimirMedintsev Дисплей тачскрин, то бишь скорей всего все рисуется все попиксельно. В устройсте есть возможность обновлять прошивку. Но сделать бэкап опции нет. не знаю насколько поможет эта информация, ну, что есть))) В похожих устройствах где была возможность сделать бакап я его прям в блокноте открывал и английский текст и все другие языки на латинице я видел. Что бы увидеть русский наверно нужно было в другом редакторе открывать так как кирилица наверно двумя байтами кодируется.
Здравствуйте! Хочу использовать данную микросхему в своём проекте. На схеме на 6 ноге микросхемы есть жёлтый круг . Не подскажите что он обозначает. И ещё если не сложно как правильно организовать питание. Там несколько вариантов и не пойму что откуда берётся. Прошу сильно тапками не кидать, я ещё только начал познавать сетевые технологии.
Желтый кружок обозначает - test point. Если вы действительно хотите разобраться то прочитайте datasheet там все написано. Поверьте, это лучший способ. А потом, если вопросы останутся, добро пожаловать.
Добрый день, Владимир. Подскажите, пожалуйста, где найти информацию по lwip. Все что мне удолось найти это um1713 на 40 страниц, в котором толком ничего нет. Хотелось бы что-то на уровне um1725 (мануал по hal and ll), чтобы так же подробно все было описано.
@@VladimirMedintsev , спасибо за ответ. Посмотрел на офицальном сайте действительно все хорошо описано. По поводу комментариев в теле самой библиотеки - мне комфортнее изучать по документации (оформление, шрифт более приятные для глаз, удобная навигация и т.п.)
А это тут при чем? Даже если нарежет и в сети пойдет фрагментированный пакет, на узле - получателе его надо собрать, а буфера под это нет.... Пакет ведь надо не только физически получить, надо его разбирать от уровня к уровню.
@@VladimirMedintsev Совершенно верно. Я без претензий. Только в качестве уточнения, дополнения и объяснения того, почему в буфер 2048 не влезла посылка 2048.
Спасибо за полезный материал, планируется ли выпуск подобного ролика по разбору W5500? Было бы интересно узнать, с какой стороны подступаться к сложным микросхемам.
При подключении библиотеки LWIP размер кода, который генерит Keil получается больше 32 кБ. Бесплатная версия Keil не работает в этом случае. У автора расширенная?
Подскажите есть у вас видео или может создадите , как можно проверить изернет Т.Е, к кампьютеру подсоединяется электронный блок через изернет, как определить неисправность и настройки изернет Спасибо
@@VladimirMedintsev Добрый вечер, с рождеством, может сможете мне подсказать- есть электронная стойка (блок) он подключается к компьютеру через порт Ethernet , для настроеек пораметров блока. На данный момент нет подключения , не устанавливается связь. Как можно проверить исправна ли сетевая карта, исправлен ли порт в блоке. Может у вас уже есть видео на эту тему или вы собираетесь снимать Спасибо за ваш ответ спасибо за ваш труд и видео, за ваш канал.
@@Александр-о6н9х Возле разъема ethernet обычно располагаются два светодиода. Один горит при наличии физического интерфейса, второй при наличии сетевой активности. По ним можно с определенной долей вероятности судить о работоспособности железа. Если индикация в норме, то дальше проверять настройки IP адреса, маски подсети и шлюза по умолчанию, а также адреса DHCP и DNS серверов если они используются. Если же индикация отсутствует то проверить порт и пачкорд.
Була проблема: підключити датчик руху до промислової мережі, якби тоді знав за ці модулі проблему вирішив легко а тоді просто поставили IP-камеру, дякую! Гідний огляд.
ае, здравствуйте господа stm программисты... Помогите разобраться. В течении двух месяцев пытаюсь запустить ethernet на stm 32. по порядку: 1) пытаюсь запустить простейший пример, который реализовывает ping. использую камень h473zi nucleo физика lan 8742. все описываю по документации, перекинул область памяти в нужный участок, увеличил стэк кучу, подключаю ethernet lwip, добавляю в main структуру gnetif, в цикле прописываю все как показано в видео и ничего. При пинге я вижу запросы от компа, но ответов от платы не вижу. 2)Ладно подумал я что возможно плата неисправна. Закупил камень f407vg disco1, и физику waveshare 8720, все конфигурирую в кубе как в этом видео, прописываю в main все тоже самое, и ничего, ответов так же нет... в wireshark ничего нет... в дебаге адресс в структуре есть, маска и тд.. помогите разобраться, потратил очень много времени, хочу уже чтобы наконец-то заработало.
плата подключена к компу через, свитч(глупый), свитч подключен к роутеру.. экспериментировал, со динамическим получением адреса, начинаю видеть в wireshark от устройства какие-то dhcp пакеты(на этом все получить их в контроллере не могу, а следовательно адрес мой остается нулевым, да и dhcp мне не нужен, хочется статическую адресацию использовать)... Дома примерно такая же топология, пробовал подключать напрямую к компу, на разные ос (win, lin, mac) тоже ничего. С платой nucleo идет пример, hhtp сервер, реализован он там с использованием freertos, и работает он только с динамической адресацией, при изменении кода, и присвоению в структуре gnetif ip,mac, и шлюза, пример работать прекращает, в дебагере все выставляется, код выполняется соответственно.
link есть тоесть я могу проверить подключен ли я к сети, но при всем при этом, получается физику то микроконтроллер видит, но пропинговать плату не получается, не понимаю в чем может быть проблема... куда копать, не ужели никто не сталкивался с подобной проблемой. В документации написано перенаправить область памяти в оперативке в нужный адресс(сделал), настроить MPU(сделал), кароч все сделал как в документации написано но не фига не работает(это на h7), на ф4 тоже не работает...
Тебе не актуально, не смотри, а мне например актуально. Дядька толково всё объясняет, таких мало. Так что не надо своими комментами отбивать у автора желание продолжать делать хорошие сюжеты.
@@МишаШабалин-з8ш MyHHuk Vladimir Medintsev Например MQTT прикрутить. А лучше учите ЦОС потом скажите совет был дельный. Желание у автора я не отбиваю, а направить могу.
Я разбивал web API на три части:
1. Запросы, возвращающие web страницы.
2. Запросы, возвращающие JSON строки с данными для элементов интерфейса.
3. Запросы, отправляющие данные устройству.
Механизм такой: При запросе страницы возвращается страница с JS скриптом, который (если необходимо на странице отобразить состояние или иную динамическую инфу) выполняет уже запрос данных сам, преобразует их и управляет элементами интерфейса на странице.
За чем это нужно: А чтобы у устройства был технический web API, если к примеру, нужно будет написать приложение для смартфона или связать устройство с другим по http протоколу и так далее. Почему JSON в качестве формата данных? Да потому что у JS есть штатные средства для его сериализации/десериализации. Формат простой, строку в микроконтроллере можно собрать с помощью функций sprintf() и strcat из stdlib.
Еще я часто практикую генерацию элементов интерфейса на странице силами js скрипта. Например, устройство работает с датчиками на шине 1-wire. Датчиков может быть разное количество, в зависимости от того, сколько контроллер их нашел в шине. Возникает вопрос, как генерировать содержимое страницы с индикаторами. Сегодня датчик один, а завтра еще пять подключили. Тогда, после загрузки этой страницы, ее JS скрипт спросит у сервера, сколько у него есть датчиков и после получения ответа, создаст нужное количество элементов на странице для отображения данных. А потом уже запросит json массив с данными и заполнит ими созданные элементы. Я для упрощения часто создаю скрытый блок div с элементами для одного датчика, предназначенный тупо для копирования скриптом его innerHtml в innerHtml созданного блока. И делаю это столько раз, сколько надо. Вот и получается динамическая страница, для генерации которой не требуются силы микроконтроллера.
А Вы реализуете на своем сервере на микроконтроллере обработку Ajax-запросов?
@@igorm6585 Описанный в конце пример очень похож на ajax. Просто я использую в качестве ответа JSON, а не XML. Его проще формировать программно. Например, я сделал в форме настроек wifi кнопку поиска доступных сетей. Работает так: При нажатии на кнопку, срабатывает обработчик JS, который отправляет серверу команду поиска сетей с большим таймаутом ожидания ответа. Сервер выполняет поиск и по его окончанию возвращает json со списком найденных ssid. Со стороны фронтэнда, на странице срабатывает обработчик принятых данных, где парсится этот JSON, скрывается поле ввода SSID и вместо него отображается выпадающий список найденных сетей. Страница при этом не перезагружается. Просто скрипт выполняет все необходимые действия по мере поступления событий.
Данный механизм хорош тем, что вся нагрузка по интерактивности страницы возлагается на браузер, а не на хилый микроконтроллер, у которого 64 килобайта оперативки, два мегабайта ПЗУ и ядро с тактовой частотой в 80МГц. Генерация html страниц - это слишком сложная для него задача. Ему легче читать из ПЗУ готовые данные и отправлять клиенту. Формирование простой JSON строки тоже не так тяжело для него. XML потяжелее будет, так как там там много лишних данных, определяющих формат (data и так далее). В JSON их меньше - { } : , " [ ] и в принципе этого хватит.
Хорошая тема. Интересно продолжение про w5500, не всегда же в распоряжении жирный F4 или F7.
О, нет, совсем не жирный. Интерфейс Ethernet доступен и в контроллерах попроще. Например, STM32F107 и STM32F207, 217.
@@VladimirMedintsev У меня есть F207, можно будет попробовать. Я имел в виду не только сам интерфейс, а тот, что полный стек TCP/IP, ещё и по памяти требовательный. Как там с этим?
Ну библиотека для W5500 хоть и гораздо компактнее, но в любом случае буфера на пакет всем нужны. Да будет еще видео по ней. Просто лето, и искупаться охота и заказчиков много, не дают расслабиться.
Справедливости ради компания WIZnet - корейская, в видео назвали китайской.
Кирилл, а разве на отметке времени (04:32) ruclips.net/video/PTDoDJadyi0/видео.html говорится не это же самое?????
PHY_Address - это не количество интерфейсов, а адрес физики. Детальней в даташите.
Да, вы правы.
сейчас правильней делать страницу + яваскрипт и всю обработку на клиенте, потом хтмл жс и цсс паковать в фс, чтобы оно загрузилось один раз из памяти контроллера
а обен данными идет через джейсона с минимальной нагрузкой на контроллер и расходом озу
это касается контроллеров и серверов
ну и упрощает разработку, потому что жс можно отлаживать в браузере и не заливать каждый раз в контроллер
кстати еще было бы полезным показать, как передавать данные без ип адресов, только через мак
я все хочу сделать сетевые релешки для моего серверного шкафа и чтобы адрес не выдавать, т.к. все это будет в одном свитче сидеть и смысла нет напрягать контроллер в 8 бит
но я использую ардуину и что-то там в ихних библиотеках есть функция для работы с л2 только для мелкасхемы в5500
библиотеки ардуиновские сделаны так, что проще байты гонять через удп и заодно запилить ssdp сервер, чтобы виндовс находил устройство автоматом
Спасибо большое за ролик. Ролик не просто великолепный, но мало того Вы настолько все в нем продумали заранее (снимать видео не так легко как может кому-то показаться), но и проставили тут, в ролике, все метки по времени, поделив ролик на части и описания, что в каждой из этих частей происходит (!). Не каждый раз такое увидишь. У меня также есть вопросы к Вам:
1. 11:21 - это скорее не "кол-во PHY-контроллеров снаружи", а именно адрес (также как и в шине I2C скажем) подключенного внешнего контроллера. На NUCLEO-144 (не важно какое семейство т.к. вроде у всех стандартная схема на таких платах) нужно прописывать этот адрес как '0', а не '1 например';
2. у Вас заработала 'makefsdata.exe' на 64-ти битном ПК? Если нет, то у меня есть рабочая версия - могу выложить где-то ее и у меня самого тоже 64-ти битная ОС. Возможно что-то еще настраивал у себя и если не заработает эта рабочая "exe"-шка, то посмотрю у себя и дополню как настраивал (но помню ничего такого не настраивал);
3. на самом деле это, мне кажется, очень интересная тема (про LwIP и пр.) и будет очень интересно как отреагирует тут аудитория (интересно это или все-таки простые контроллеры как F103 и пр. интереснее);
4. и самое главное, что хотел спросить - я конечно понимаю, что это "отвлечение" и возможно не нужная вещь и пр., но все-таки, по-моему стоит обратить и возможно неплохая вещь - недавно обнаружил, что MS выпускает бесплатно ПО и множество примеров под 'IOT' устройства для самых различных архитектур и фирм контроллеров. Это т.н. "Azure RTOS" вот некоторые ссылки: docs.microsoft.com/en-us/azure/rtos/guix/ и github.com/azure-rtos . Просто, MS недавно приобрела компанию 'Express Logic' которая выпускала свою RTOS т.н. 'ThreadX', но как проприетарное ПО. В вышеуказанных примерах теперь сама MS сделала, как мне кажется великое дело, она просто выложила их в открытый доступ. Мне кажется стоит посмотреть хотя бы что это и может оказаться гораздо полезнее это и подойдет (и может сделаете обзор на это хотя и не надеюсь :), а так даже сам хотел какой-то обзор на форуме выложить). Там примеры, правда под конкретные платы и возможно Вы не сможете их запустить т.к. нет таких плат у Вас (там для 'ST' 2 платы кажется и обе DISCOVERY), но может и сможете проверить. В этой Azure RTOS уже есть свой TCP, USB и файловая система (вплоть до exFAT), а также встроенная GUI библиотека для виджетов, а также ПО для их создания. Мне самому не очень пока что нравится LwIP (хотя наверно пока что) т.к. переусложнен по-моему излишне (скорее всего из-за универсальности) и возможно данная RTOS и ПО в этом плане получше будет, но надо изучать и смотреть (и пока так и делаю).
Вот что хотел пока что написать Вам кратко.
Да, с PHYaddress в ролике ошибка, к сожалению ляпнул и не заметил что именно этот фрагмент ушел в финальную версию.
С утилитой конвертером мне повезло и моя версия запускается, но это был долгий процесс поиска в гугле, но в итоге мне больше нравится использовать скрипт на перле.
3. Про azure я слышал, но у меня есть некоторое предубеждение против продуктов microsoft. Но я посмотрю обязательно.
А вообще огромное Вам спасибо за поддержку и всегда интересные комментарии. Мне очень нравится общаться с людьми и это очень часто приносит новую и крайне интересную информацию.
3. Интересует больше, чем малые контроллеры. Спасибо за ссылку.
Следовало обратить внимание, что ENC28J60 поддерживает подключение только по 10Мб/с. 😖
Один из крутых дядек-стмщиков на Ютубе ) вдохновляете меня на проектирование устройств на стм)
Тоже, ничего не получилось. Очень поверхностное изложение материала! Временами, не понятно, что откуда берется. После пинга, можно было сделать функцию "эхо". А файлы со страницами сервера можно было выложить отдельно, что бы, публика могла скачать их и повторить. Бьюсь третий день,- и всё никак!
Однако годнота! Не рассматривали вопрос подключения микросхем/модулей беспроводной связи (wifi), вместо той же lan8720? Сам этот вопрос не изучал, решил сразу у вас спросить.
Wi-Fi не всегда уместен. С его подключением и использованием сложностей нет, но это не всегда уместно, а иногда, как в случае с промавтоматикой и вовсе запрещено.
Есть весьма годные модули преобразователей интерфейсов c Cortex-ядрами на борту, кроме одного: USR-K6 (Eth-TTL), USR-K7 (Eth-TTL), USR-ES1 (Eth-SPI, кстати на чипе W5500), USR-E2 etc. Были ещё USR-K2 и USR-K3, но в продаже найти не получается. Производится это всё китайской конторой USR IOT. Мы на работе используем USR-K3 для производства приборов внутреннего пользования.
Добрый день! Вопрос не по видео. Используете ли вы git? Если да, то было бы интересно узнать как вы его используете в связки git + cubeIDE, например. Если нет, то почему нет? Спасибо заранее )
Мы командой делаем коммерческие проекты. Сели, сделали, отдали. В них какое-то управление версиями является излишним. Версия одна - та за которую заплатил заказчик. После завершения и передачи заказа заказчику мы архивируем проект и удаляем его с компьютеров. Если это свои и долговременные проекты то у нас у каждого свои облака и есть механизмы межоблачной синхронизации.
На самом деле мне часто задают вопросы про гит, это хорошая технология когда разработчиков больше чем много, но это не единственный способ контроля версий и управления проектом.
@@VladimirMedintsev спасибо за ответ
Класс! Спасибо! То что нужно! 👍
Спасибо, долго ждал эту тему
Интересно. Обязательно попробую. Правда, я совершенно забыл сетевые технологии
Can add subtitles to this video ? Very interesting by my Russian is non existent .
CubeIDE не пошёл? Давно на канале не был
Я как бы всегда говорил, что для роликов останется Keil.
Здравствуйте,спасибо за урок. А как узнать IP адрес своей платы на 12:30?
Как раз интересовался данной темой) Спасибо.
Спасибо!!!
Интересно рассказываете, хорошее пособие для начинающих (и не только). В одном проекте использовал LAN8720 - на мелких пакетах работает хорошо, однако, если загрузить пакетами по мегабайту - подвисает физика, требуя ресета. Такой же эффект и на других демоплатах (от того же мастеркит, к примеру). Немного сглаживают ошибки последовательные резисторы в РМ2 интерфейсе, но не до конца.
Решение на RTL8201 на М2 - надёжное, как автомат Калашникова. Ни одной запинки. Так, просто как совет.
Вопрос - нашли ли доступный по цене разъём со встроенным трансформатором?
Спасибо, буду думать.
Использую его в двух серийных платах, проблем нет. На максимальных нагрузках, стресс-тест сутками на пролет в "печках и морозилках". Прибором МАКС-ЕМ. В различных режимах, рандомный размер пакетов, рост размера и т.п.
Хотел уточнить что значит "...однако, если загрузить пакетами по мегабайту..."? Какой пакет имеется ввиду?
@@t966rt Имелось ввиду постоянная передача данных, к примеру, экранный скрин-шот.
(Сжатие в jpeg на 429 экрана 800*480 - почти секунда, поэтому решил просто bmp c rle упаковкой).
Интересен дизайн платы и настройки интерфейса - возможно, в погоне за максимальной скоростью что-то где-то "перекрутил"...
@@chukgek2371 Приветствую! Процессор stm32f407ve, кварц для него 25MHz, на LAN8720 кварца нет, тактируется частотой 25MHz с процессора. Плата 2-ух слойная.
Если интересно могу показать схему включения и разводку, там все просто.
Изначально пользовался самописным стеком TCP/IP, т.к. многократно проект перетаскивался с других процессоров.
Сейчас пользую библиотеку CycloneTCP, инициализация их же, работает "из коробки".
@@t966rt благодарю за ответ, возможно, именно в библиотеке ТСР стека и таится глюк. В схемотехнике используете последовательно резисторы? Один и тот же мой проект глючил как на моей, так и на 4-х слойке КИТа (их демопроект был "основой")
Владимир, спасибо! Вы прекрасно излагаете теорию, но уж очень не хватает простых практических примеров в конце, особенно когда нужно решить какую-нибудь конкретную задачу и начинаешь рыскать по интернету в поисках ответа на вопрос. В качестве примера что-нибудь совсем рутинное, принять/передать переменную, общение двух МК по локальной (и не только) сети.. Или, например для многих очень популярно сейчас подключение к mqtt брокеру, в домашней автоматизации этот протокол сейчас очень популярен. Но это уже сложное, состоящее из простого, и можно самостоятельно додуматься со временем)
До многих вещей необходимо доходить своим умом. Это своего рода тест на профессиональную пригодность. Необходимый минимум есть в каждом видео и демонстрация работы тоже.
@@VladimirMedintsev согласен, думать никто не отменял, даже если ты профессионал из другой области. В любом случае спасибо Вам.
Гыыг.. жалко я поздно наткнулся на Ваш канал :) Нужен был Ethernet и не найдя толковой инструкции (хотя может плохо искал), поднял его от регистров контроллера. Всё написал ручками, хотя выясняется, что можно было этим и не заниматься :)
пинг ответил только в режиме дебаг :(
та же проблема, в дебаге пингуется, после ресета - нет
Настроил все как по примеру. Проц f476. Собрал, запустил. Почему то на пинг нет ответа. Может ли это быть связано с тем что у меня провод из двух пар состоит?
Чип ethernet'a LAN8710AI
18:09 если пакет больше 2кБ, то он не влезает в FIFO буфер MAC контроллера, отсюда ещё вытекает необходимость вычисления контрольных сумм ядром, в то время как у пакетов до 2кБ могут MAC может проверять CRC автоматически...
В своё время подключал к пикам ENC28j60) А в stm'ах аппаратный ethernet используется или всегда проще через внешние микросхемы?
Владимир, а можете подсказать, по поводу буфера под пакеты, где конкретно необходимо внести изменения для его увеличения?
А как по Вашему, сделать на STM32 конвертер AES67 to I2S реально?
О! Как же долго я искал что-то подобное. Спасибо огромное очень позновательно!
А в качестве чего выступает внешняя микросхема? Разве нельзя сразу напрямую подключать МК к Ethernet разъему (включая согласующий трансформатор обвязку)?
Можно и напрямую подключить, можно и через трансформатор, но работать не будет.
@@VladimirMedintsev а почему не будет? Или хотя бы наведите на информацию пожалуйста.
@@nikotinesmola Потому, что в STM32 не реализован физический уровень. Смотреть в модель OSI. На самом деле в двух роликах под одним из которых вы и пишете модель OSI прекрасно показана.
@@VladimirMedintsev спасибо, тогда буду думать.
@@nikotinesmola модуляция там специальная
Спасибо огромное за ролик! Не могу разобраться, почему ip не пингуется( У вас случайно нету схемы подключения lan8720 к stm32? Я был бы очень благодарен!
В CubeMx открыть выбранный вами микроконтроллер и активировать Eth интерфейс. Выбрать RMII. Схема перед вами...
Владимир, правильно ли я понимаю, что хардверная поддержка Ethernet микроконтроллером нужна только при использовании микросхемы LAN8720?
В случае с ENC28K60 и W5500 общение по сети происходит через обычный SPI?
Да, правильно
Спасибо за интересную тему. Возврат к Кейлу временный или Cube IDE разочаровал?
Я всегда говорил, что для роликов на ютубе останется кейл. Куб на текущий момент используется для большей части коммерческих проектов. Ну скажем так 60-70%.
Здравствуйте. Есть устройство на STM32F103vet6. Менюшка только на английском и китайском.
Перевод меню на русский есть. Насколько проблемно заменить один из языков на русский?
Если реально, сколько будет стоить? хотя бы от.. до...
Зависит от нескольких факторов, закрыт ли в микроконтроллере доступ к интерфейсу отладки. Если закрыт, то операция не возможна.
Вторая проблема это в поддержке экраном устройства русских шрифтов. Есть она или нет, никто не знает и выяснять надо уже по факту.
Ну и третья проблема это время на все эти движения. Так, что ради одного устройства смысла нет вообще.
@@VladimirMedintsev Дисплей тачскрин, то бишь скорей всего все рисуется все попиксельно.
В устройсте есть возможность обновлять прошивку. Но сделать бэкап опции нет.
не знаю насколько поможет эта информация, ну, что есть)))
В похожих устройствах где была возможность сделать бакап я его прям в блокноте открывал и английский текст и все другие языки на латинице я видел. Что бы увидеть русский наверно нужно было в другом редакторе открывать так как кирилица наверно двумя байтами кодируется.
Спасибо, Друг!
Здравствуйте! Хочу использовать данную микросхему в своём проекте. На схеме на 6 ноге микросхемы есть жёлтый круг
. Не подскажите что он обозначает. И ещё если не сложно как правильно организовать питание. Там несколько вариантов и не пойму что откуда берётся. Прошу сильно тапками не кидать, я ещё только начал познавать сетевые технологии.
Желтый кружок обозначает - test point.
Если вы действительно хотите разобраться то прочитайте datasheet там все написано. Поверьте, это лучший способ. А потом, если вопросы останутся, добро пожаловать.
@@VladimirMedintsevСпасибо. Сейчас же этим и займусь:)
Добрый день, Владимир. Подскажите, пожалуйста, где найти информацию по lwip. Все что мне удолось найти это um1713 на 40 страниц, в котором толком ничего нет. Хотелось бы что-то на уровне um1725 (мануал по hal and ll), чтобы так же подробно все было описано.
А комментарии в теле самой библиотеки и документация на официальном сайте проекта вас чем конкретно не устраивает?
@@VladimirMedintsev , спасибо за ответ. Посмотрел на офицальном сайте действительно все хорошо описано. По поводу комментариев в теле самой библиотеки - мне комфортнее изучать по документации (оформление, шрифт более приятные для глаз, удобная навигация и т.п.)
Подскажите из-за чего нет возможности в cubeide выбрать ethernet и lwIp? этих галочек просто нет... Плата nucleo-32 stm32L432
А разве у этого чипа есть Ethernet???
@@VladimirMedintsev я представлял себе так, что если я подключу ethernet-модуль, то будет...
@@VladimirMedintsev правильнее наверное будет - А разве у этих чипов есть RMII???
Сама винда нарежет пакет согласно своему MTU
А это тут при чем? Даже если нарежет и в сети пойдет фрагментированный пакет, на узле - получателе его надо собрать, а буфера под это нет.... Пакет ведь надо не только физически получить, надо его разбирать от уровня к уровню.
@@VladimirMedintsev Совершенно верно. Я без претензий. Только в качестве уточнения, дополнения и объяснения того, почему в буфер 2048 не влезла посылка 2048.
@@VladimirMedintsev И, кстати, канал хороший.
Спасибо за полезный материал, планируется ли выпуск подобного ролика по разбору W5500?
Было бы интересно узнать, с какой стороны подступаться к сложным микросхемам.
Скорее всего будет такое видео. Просто сейчас лето, время больше отдыхать.
При подключении библиотеки LWIP размер кода, который генерит Keil получается больше 32 кБ. Бесплатная версия Keil не работает в этом случае. У автора расширенная?
У автора - нормальная.
Подскажите есть у вас видео или может создадите , как можно проверить изернет Т.Е, к кампьютеру подсоединяется электронный блок через изернет, как определить неисправность и настройки изернет
Спасибо
Простите, я не понял вопроса.
@@VladimirMedintsev Добрый вечер, с рождеством, может сможете мне подсказать- есть электронная стойка (блок) он подключается к компьютеру через порт Ethernet , для настроеек пораметров блока. На данный момент нет подключения , не устанавливается связь. Как можно проверить исправна ли сетевая карта, исправлен ли порт в блоке. Может у вас уже есть видео на эту тему или вы собираетесь снимать
Спасибо за ваш ответ
спасибо за ваш труд и видео, за ваш канал.
@@Александр-о6н9х Возле разъема ethernet обычно располагаются два светодиода. Один горит при наличии физического интерфейса, второй при наличии сетевой активности. По ним можно с определенной долей вероятности судить о работоспособности железа. Если индикация в норме, то дальше проверять настройки IP адреса, маски подсети и шлюза по умолчанию, а также адреса DHCP и DNS серверов если они используются. Если же индикация отсутствует то проверить порт и пачкорд.
@@VladimirMedintsev Спасибо!
Була проблема: підключити датчик руху до промислової мережі, якби тоді знав за ці модулі проблему вирішив легко а тоді просто поставили IP-камеру, дякую! Гідний огляд.
ае, здравствуйте господа stm программисты... Помогите разобраться. В течении двух месяцев пытаюсь запустить ethernet на stm 32.
по порядку:
1) пытаюсь запустить простейший пример, который реализовывает ping. использую камень h473zi nucleo физика lan 8742.
все описываю по документации, перекинул область памяти в нужный участок, увеличил стэк кучу, подключаю ethernet lwip, добавляю в main структуру gnetif, в цикле прописываю все как показано в видео и ничего. При пинге я вижу запросы от компа, но ответов от платы не вижу.
2)Ладно подумал я что возможно плата неисправна. Закупил камень f407vg disco1, и физику waveshare 8720, все конфигурирую в кубе как в этом видео, прописываю в main все тоже самое, и ничего, ответов так же нет... в wireshark ничего нет... в дебаге адресс в структуре есть, маска и тд..
помогите разобраться, потратил очень много времени, хочу уже чтобы наконец-то заработало.
плата подключена к компу через, свитч(глупый), свитч подключен к роутеру.. экспериментировал, со динамическим получением адреса, начинаю видеть в wireshark от устройства какие-то dhcp пакеты(на этом все получить их в контроллере не могу, а следовательно адрес мой остается нулевым, да и dhcp мне не нужен, хочется статическую адресацию использовать)... Дома примерно такая же топология, пробовал подключать напрямую к компу, на разные ос (win, lin, mac) тоже ничего.
С платой nucleo идет пример, hhtp сервер, реализован он там с использованием freertos, и работает он только с динамической адресацией, при изменении кода, и присвоению в структуре gnetif ip,mac, и шлюза, пример работать прекращает, в дебагере все выставляется, код выполняется соответственно.
link есть тоесть я могу проверить подключен ли я к сети, но при всем при этом, получается физику то микроконтроллер видит, но пропинговать плату не получается, не понимаю в чем может быть проблема... куда копать, не ужели никто не сталкивался с подобной проблемой.
В документации написано перенаправить область памяти в оперативке в нужный адресс(сделал), настроить MPU(сделал), кароч все сделал как в документации написано но не фига не работает(это на h7), на ф4 тоже не работает...
Сейчас создать webserver чтоб внутри локалки светодиодом мигать уже большого ума не надо. Если по чесноку это не актуально.
А что по вашему актуально? Ну вот просто интересно?
Тебе не актуально, не смотри, а мне например актуально. Дядька толково всё объясняет, таких мало. Так что не надо своими комментами отбивать у автора желание продолжать делать хорошие сюжеты.
Для меня только это сейчас и актуально. Я сам не понимаю как настроить(
@@МишаШабалин-з8ш MyHHuk Vladimir Medintsev Например MQTT прикрутить. А лучше учите ЦОС потом скажите совет был дельный. Желание у автора я не отбиваю, а направить могу.