Comments 19
Спасибо большое за статью! Доходчиво и полезно. Мы в своей разработке тоже встроили web-интерфейс для настройки и ни разу не пожалели. Сейчас планируем расширить функционал SOA-решениями. На данный момент я занимаюсь выбором подходящих и легковесных rpc-фреймворка и сериализатора (Sun rpc или Grpc — пока склоняюсь к первому, но подкупает своей кросс-ЯП-шностью второй). Вы планируете делать подобное? Что-то уже сделано?
Спасибо за отзыв!
Делать подобное в реализации конкретно этой библиотеки планов пока нет. Всё таки назначение библиотеки — обеспечить возможность связи с хостом, а не расширить возможности сервис-ориентированного обмена.
Хотя, в действительности, никто не мешает в ПО, использующее библиотеку, встроить SOA-средства. Думаю, это полезный опыт!
Делать подобное в реализации конкретно этой библиотеки планов пока нет. Всё таки назначение библиотеки — обеспечить возможность связи с хостом, а не расширить возможности сервис-ориентированного обмена.
Хотя, в действительности, никто не мешает в ПО, использующее библиотеку, встроить SOA-средства. Думаю, это полезный опыт!
Жаль, что в вашей STM32F4-Discovery-плате нет Ethernet-порта (а вроде бывают с ним). Можно было бы превратить устройство в настоящую сетевую карту — то есть не только с его внутренностями говорить через веб, но и интернет через него фильтровать (между USB и Ethernet). Мы такое делали на TIшных LM3S9B95 — самодельные устройства (HonixBox) с самодельным IP-стеком и веб-сервером. См. iron.snop.ru
В STM32F4-Discovery, как известно, Ethernet-PHI нет. Но есть разные платы расширения для Discovery с Ethernet PHI 10/100.
Хорошая коробочка у вас получилась! Если не секрет, как получилось с продажами? (можно в личку)
Какой USB драйвер использовали, RNDIS?
Хорошая коробочка у вас получилась! Если не секрет, как получилось с продажами? (можно в личку)
Какой USB драйвер использовали, RNDIS?
пс. Вижу у Вас доп. питание есть. USB по питанию не вытягивало?
Извините, пропустил вопросы. HonixBox не продавался, это было бесплатное приложение к Eserv-Eproxy, вспомогательное устройство для прокси.
USB-драйвер использовался USBSER (виртуальный COM-порт) — там на сайте написано.
USB-питания хватало, но с альтернативным внешним питанием более гибкие возможности, ведь USB в HonixBox может работать и хостом (в USB-OTG), т.е. само питать внешние устройства. Кроме того, если нужен только Ethernet, а USB не нужен, то запитать через разъём питания можно не только от 5В-адаптера, но и более высоких напряжений.
USB-драйвер использовался USBSER (виртуальный COM-порт) — там на сайте написано.
USB-питания хватало, но с альтернативным внешним питанием более гибкие возможности, ведь USB в HonixBox может работать и хостом (в USB-OTG), т.е. само питать внешние устройства. Кроме того, если нужен только Ethernet, а USB не нужен, то запитать через разъём питания можно не только от 5В-адаптера, но и более высоких напряжений.
Для embedded больше подходят протоколы типа mqtt поверх TCP/IP, чем protobuf поверх http или java сериализация и java RMI
Интересная реализация! Вопрос со сложностью разработки приложения на стороне микроконтроллера. Смотрели на нечто подобное contiki os для этой задачи?
Нечто типа такого
Добрый вечер.
Вопрос со сложностью разработки приложения — вы имеете в виду написание сетевых приложений для работы со стеком LwIP, или вообще под STM?
На момент начала проекта не нашёл RNDIS-драйвер для STM. Если не ошибаюсь, то в Contiki данный драйвер присутствует только для AVR-ов. Для STM пробовал только ОС FreeRTOS. В основном, текущие задачи не предполагали использование ОС.
Вопрос со сложностью разработки приложения — вы имеете в виду написание сетевых приложений для работы со стеком LwIP, или вообще под STM?
На момент начала проекта не нашёл RNDIS-драйвер для STM. Если не ошибаюсь, то в Contiki данный драйвер присутствует только для AVR-ов. Для STM пробовал только ОС FreeRTOS. В основном, текущие задачи не предполагали использование ОС.
Имел в виду сложность разработки серверной части приложения на МК и конкретно под LwIP.
Просто Contiki уже готовая embedded ОС с сетевым стеком и API для приложений, что должно снимать часть низкоуровневой работы. Сам я ей не пользовался, приглядываюсь пока) Интересно было бы совместить RNDIS-драйвер и эту ОС
Просто Contiki уже готовая embedded ОС с сетевым стеком и API для приложений, что должно снимать часть низкоуровневой работы. Сам я ей не пользовался, приглядываюсь пока) Интересно было бы совместить RNDIS-драйвер и эту ОС
Да, о том что драйвер был бы полезен во встраиваемых ОС думал. Думаю даже, что займусь этим вопросом. В контики, кстати, что не очень нравится, включен стек uIP. Смотрел на него, но отказался, т.к. он оптимизирован под 8 или 16 битные МК. Хотя, конечно, его простота и нетребовательность весьма привлекательна. Кстати, как у Contiki, так и у uIP и LwIP один автор, на сколько помню — Adam Dunkels.
Про сложность написания серверной части могу сказать — не сложно, ибо есть много примеров. Вот один из них: echo-сервер (вариант Raw API programming).
Про сложность написания серверной части могу сказать — не сложно, ибо есть много примеров. Вот один из них: echo-сервер (вариант Raw API programming).
Спасибо, интересно.
Подскажите, правильно ли я понял, что к любому смартфону на Android можно подключить через USB разъем ваше устройство и увидеть его веб-интерфейс?
Подскажите, правильно ли я понял, что к любому смартфону на Android можно подключить через USB разъем ваше устройство и увидеть его веб-интерфейс?
К сожалению, не к каждому. Только к тем у которых в настройках есть пункт Usb Ethernet. На планшетах эта возможность обычно включена, на смартфоне только на одном встречал.
Есть возможность запускать драйвер самостоятельно на Android-устройстве. Для этого нужно получить root-доступ (возможно, перешив устройство), сделать insmod и настроить сеть из консоли. В общем, не юзабильно.
Есть возможность запускать драйвер самостоятельно на Android-устройстве. Для этого нужно получить root-доступ (возможно, перешив устройство), сделать insmod и настроить сеть из консоли. В общем, не юзабильно.
Интересный подход, взял на заметку. Но на мой взгляд, у него также есть слабые места:
1. Независимость от операционных систем допольно спорная. Все же нужен низкоуровневый драйвер сетевой карты, который умеет общаться с вашим устройством. И если сегодня стандартный работает, не получится ли так что он перестанет работать в будущем?
2. Нет совместимости с нестандартными клиентами, где такого драйвера нет. Wi-fi или Bluetoooth гораздо более стандартны, чем USB сетевая карта.
3. Очень уж сложные требования к разработчику web-интерфейса. Я так понимаю, тут нужно нечто особое и обычному специалисту по PHP/HTML/Javascript придется адаптироваться под такую уникальную «серверную» платформу.
1. Независимость от операционных систем допольно спорная. Все же нужен низкоуровневый драйвер сетевой карты, который умеет общаться с вашим устройством. И если сегодня стандартный работает, не получится ли так что он перестанет работать в будущем?
2. Нет совместимости с нестандартными клиентами, где такого драйвера нет. Wi-fi или Bluetoooth гораздо более стандартны, чем USB сетевая карта.
3. Очень уж сложные требования к разработчику web-интерфейса. Я так понимаю, тут нужно нечто особое и обычному специалисту по PHP/HTML/Javascript придется адаптироваться под такую уникальную «серверную» платформу.
Позволю не согласиться.
1. Технология Ethernet over USB (в частности RNDIS), вероятно, должна поддерживаться пока есть Ethernet и USB, ибо позволяет прокидывать кадры одного через другое. А также — пока есть такой класс устройств, как USB-модем или USB сетевая карта.
2. Бесспоно, есть много нестандартных устройств. Однако для ноутбуков, десктопов и большей части планшетов поддержка есть, что, собственно, устраивает.
Касательно Wi-Fi — хороший вариант взаимодействия. Однако, ставить в разрабатываемые изделия лишь для сервиса управления пока что представляется нецелесообразным.
Со встраиванием bluetooth не сталкивался на практике. Есть сомнения, что Web-интерфейс по нему можно прогнать и это будет поддерживаться множеством устройств. Иначе придётся писать клиентское ПО.
3. Гхм… «Очень уж сложные требования к разработчику web-интерфейса» — какие?
Разработчики устройства и интерфейса договариваются о наборе запросов управления и получения статуса.
Далее web-разработчик пилит интерфейс у себя на локальной машине. Требуемые знания: HTML/JS/JQUERY.
1. Технология Ethernet over USB (в частности RNDIS), вероятно, должна поддерживаться пока есть Ethernet и USB, ибо позволяет прокидывать кадры одного через другое. А также — пока есть такой класс устройств, как USB-модем или USB сетевая карта.
2. Бесспоно, есть много нестандартных устройств. Однако для ноутбуков, десктопов и большей части планшетов поддержка есть, что, собственно, устраивает.
Касательно Wi-Fi — хороший вариант взаимодействия. Однако, ставить в разрабатываемые изделия лишь для сервиса управления пока что представляется нецелесообразным.
Со встраиванием bluetooth не сталкивался на практике. Есть сомнения, что Web-интерфейс по нему можно прогнать и это будет поддерживаться множеством устройств. Иначе придётся писать клиентское ПО.
3. Гхм… «Очень уж сложные требования к разработчику web-интерфейса» — какие?
Разработчики устройства и интерфейса договариваются о наборе запросов управления и получения статуса.
Далее web-разработчик пилит интерфейс у себя на локальной машине. Требуемые знания: HTML/JS/JQUERY.
Sign up to leave a comment.
STM32F4 USB RNDIS драйвер (управление устройством через Web-интерфейс)