Комментарии 19
Спасибо большое за статью! Доходчиво и полезно. Мы в своей разработке тоже встроили web-интерфейс для настройки и ни разу не пожалели. Сейчас планируем расширить функционал SOA-решениями. На данный момент я занимаюсь выбором подходящих и легковесных rpc-фреймворка и сериализатора (Sun rpc или Grpc — пока склоняюсь к первому, но подкупает своей кросс-ЯП-шностью второй). Вы планируете делать подобное? Что-то уже сделано?
Спасибо за отзыв!
Делать подобное в реализации конкретно этой библиотеки планов пока нет. Всё таки назначение библиотеки — обеспечить возможность связи с хостом, а не расширить возможности сервис-ориентированного обмена.
Хотя, в действительности, никто не мешает в ПО, использующее библиотеку, встроить 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 по питанию не вытягивало?
Извините, пропустил вопросы. HonixBox не продавался, это было бесплатное приложение к Eserv-Eproxy, вспомогательное устройство для прокси.

USB-драйвер использовался USBSER (виртуальный COM-порт) — там на сайте написано.

USB-питания хватало, но с альтернативным внешним питанием более гибкие возможности, ведь USB в HonixBox может работать и хостом (в USB-OTG), т.е. само питать внешние устройства. Кроме того, если нужен только Ethernet, а USB не нужен, то запитать через разъём питания можно не только от 5В-адаптера, но и более высоких напряжений.
Для embedded больше подходят протоколы типа mqtt поверх TCP/IP, чем protobuf поверх http или java сериализация и java RMI
Интересная реализация! Вопрос со сложностью разработки приложения на стороне микроконтроллера. Смотрели на нечто подобное contiki os для этой задачи?
Хм… Интересная борда с расширением, надо взять на вооружение. У вас стоят задачи по радиосвязи? Обратите внимание, диапазон 868 МГц у нас строже лимитирован по мощности (до 10 мВт, если не ошибаюсь). Иначе охранным системам помешаете.
Добрый вечер.
Вопрос со сложностью разработки приложения — вы имеете в виду написание сетевых приложений для работы со стеком LwIP, или вообще под STM?
На момент начала проекта не нашёл RNDIS-драйвер для STM. Если не ошибаюсь, то в Contiki данный драйвер присутствует только для AVR-ов. Для STM пробовал только ОС FreeRTOS. В основном, текущие задачи не предполагали использование ОС.
Имел в виду сложность разработки серверной части приложения на МК и конкретно под LwIP.

Просто Contiki уже готовая embedded ОС с сетевым стеком и API для приложений, что должно снимать часть низкоуровневой работы. Сам я ей не пользовался, приглядываюсь пока) Интересно было бы совместить RNDIS-драйвер и эту ОС
Да, о том что драйвер был бы полезен во встраиваемых ОС думал. Думаю даже, что займусь этим вопросом. В контики, кстати, что не очень нравится, включен стек uIP. Смотрел на него, но отказался, т.к. он оптимизирован под 8 или 16 битные МК. Хотя, конечно, его простота и нетребовательность весьма привлекательна. Кстати, как у Contiki, так и у uIP и LwIP один автор, на сколько помню — Adam Dunkels.
Про сложность написания серверной части могу сказать — не сложно, ибо есть много примеров. Вот один из них: echo-сервер (вариант Raw API programming).
Спасибо, интересно.
Подскажите, правильно ли я понял, что к любому смартфону на Android можно подключить через USB разъем ваше устройство и увидеть его веб-интерфейс?
К сожалению, не к каждому. Только к тем у которых в настройках есть пункт Usb Ethernet. На планшетах эта возможность обычно включена, на смартфоне только на одном встречал.
Есть возможность запускать драйвер самостоятельно на Android-устройстве. Для этого нужно получить root-доступ (возможно, перешив устройство), сделать insmod и настроить сеть из консоли. В общем, не юзабильно.
Интересный подход, взял на заметку. Но на мой взгляд, у него также есть слабые места:
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.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.