Я сталкивался с людьми, создающими веб-серверы с использованием микроконтроллеров, зачем кому-то это делать? Каковы его приложения? Какой набор навыков, кроме языка Си, нужен для создания таких серверов? Мне очень любопытно, что эти крошечные серверы имеют такую маленькую оперативную память.
microcontroller
embedded
quantum231
источник
источник
Ответы:
Я сделал это в нескольких продуктах. До сих пор причина была в том, чтобы допустить простую настройку поля. Каждый раз, когда продукт уже должен был быть подключен к Ethernet по причине его основной работы. Поэтому веб-сервер просто добавил код в микроконтроллер.
Большим преимуществом HTTP-сервера является то, что не требуется никакого специального аппаратного или программного обеспечения для предоставления разумного пользовательского интерфейса конечному пользователю. У всех уже есть веб-браузер, так что это не беспокоит клиента. Подумайте о других альтернативах. Вы можете предоставить порт RS-232, но тогда вам нужно либо предоставить собственное приложение, либо объяснить кому-то, как настроить терминальную программу с правильной скоростью передачи, начальными битами, стоповыми битами и четностью. Вы также должны либо предоставить кабель, либо надеяться, что у клиента есть такой, и кто-то должен пойти к устройству и физически подключиться к нему. У USB нет такой же проблемы с настройкой, но, как правило, это означает отдельный микропроцессор в продукте, и там вам нужна специальная программа для запуска на любой платформе, которую может иметь клиент.
Что касается оперативной памяти, это не так уж важно для HTTP-сервера. Стек протоколов TCP требует некоторой оперативной памяти, но на самом деле HTTP-сервера нет, за исключением дополнительных ресурсов, которые могут потребоваться от сетевого стека. Веб-серверу в основном требуется место в ПЗУ, поскольку большая часть каждой страницы является постоянной, обычно несколько значений преобразуются в текст и вставляются на лету. Веб-серверы для небольших микросхем работают с файловыми системами ПЗУ и экранируют последовательности в тех файлах, которые заставляют код вашего приложения вызывать настраиваемые строки для вставки в несколько предопределенных мест.
До сих пор я использовал PIC 18 во всех этих случаях. Хотя ограничение в 4 КБ ОЗУ является ограничением, вы все равно можете многое сделать. Пространство ROM даже не было близко к проблеме. Мой сетевой стек для PIC 18 (доступный в моем выпуске PIC Development Tools по адресу www.embedinc.com/pic/dload.htm ) занимает лишь небольшую часть пространства ПЗУ 18F67J60, что является хорошей частью для таких вещей, поскольку он имеет встроенный сетевой MAC / PHY. В одном случае PIC является сервером для 6 одновременных TCP-соединений. Это действительно не так тяжеловес, как люди думают.
источник
Ключевым фактором, способствующим недавнему росту популярности веб-серверов на микроконтроллерах, является желание получить доступ к физической информации датчиков (температура, влажность, уровень освещенности, наличие окиси углерода и т. Д.), А также к тому, чтобы что-то происходило в физическом мире (переключатель включите сигнализацию, включите аварийный вытяжной вентилятор, включите насос охлаждающей жидкости) также дистанционно. Это приложения.
Какой лучший способ добиться универсального, согласованного, независимого от устройства, независимого от разработчика удаленного доступа, чем вездесущий протокол HTTP, в еще более распространенной IP-сети? Физическим уровнем связи может быть WiFi, проводной Ethernet или любой другой удобный вариант, поддерживающий IP-сети. Вот почему веб-серверы на встроенных устройствах делаются.
Для дальнейшего понимания можно было бы поискать « Интернет вещей » и увидеть широкий спектр возникающих мыслительных процессов.
Что касается « крошечных серверов, имеющих такой маленький объем ОЗУ », то стоит отметить, что протокол HTTP достаточно прост, чтобы его можно было реализовать на очень небольшом количестве ОЗУ с очень небольшой вычислительной мощностью. Кроме того, современные микроконтроллеры сопоставимы или, в некоторых случаях, более мощны, чем процессоры на ранних персональных компьютерах, на которых люди реализовывали не только Интернет, но и выполняли различные интерактивные задачи, даже играли в игры.
источник
Многие сетевые устройства предоставляют веб-сервер для проверки и настройки параметров конфигурации, проверки состояния устройства и т. Д. Например, я могу настроить маршрутизатор в моей системе, указав в браузере
http:///192.168.0.254
(если я правильно помню ...).источник
Потому что они могут.
Потому что они могут быть очень малой мощности. Как под 1W с некоторыми пиковыми дро. Менее половины ампер. Батарея и солнечная энергия практичны, в отличие от больших компьютеров.
Физический размер. Микроконтроллер + WiFi или чип Ethernet могут быть размером с флэш-накопитель.
Стоимость. Микроконтроллер, подходящий для этого, может быть в диапазоне одного доллара. Сетевые части почти так же дешево.
Одноразовая. Вы можете поместить их в один из проектов, и если они умрут, это не так плохо, как если бы это был дорогой компьютер.
Просто причина.
С появлением полноценных компьютеров за десятки долларов (бесплатно до 100 долларов) (shrevaplugs, raspberry pi, смартфоны, флэш-накопители linux, андроид-флешки, роутеры), вы, вероятно, увидите меньше веб-серверов микроконтроллеров в будущем, потому что есть больше не стоит и стоимость как движущий фактор. 35-долларовый Raspberry Pi или 45-долларовый Beaglebone может превзойти Arduino + Ethernet или Wi-Fi по стоимости, производительности и простоте настройки. Это чуть больше, чем Arduino. Единственное, что может сделать Arduino, - это КПД 0,1 Вт (от 0,5 до 50 мА в режиме сна до полной вычислительной мощности [5 В, 16 МГц, 100% CPU] только на ATMEGA) против 4 Вт для RPI без Ethernet / HDMI / USB использование на холостом ходу.
Таким образом, веб-серверы микроконтроллеров могут работать от батареи из-за низкого потребления тока. Даже тогда некоторые из новых Linux SoC, такие как карманный маршрутизатор с веб-сервером, могут быть рядом с ними.
источник
Ответ Олина в значительной степени поражает каждую причину, по которой я использовал встроенный веб-сервер. Я занимаюсь разработкой промышленного контроля, и почти каждый продукт, который мы производим, имеет встроенный веб-сервер.
Большинство клиентов уже имеют все свое оборудование в своей сети уже по разным причинам. Поэтому крайне желательно иметь возможность настраивать и / или управлять им через веб-браузер, а не устанавливать десятки пользовательских программ.
Даже если они используют промышленный протокол, такой как PROFINET , физический уровень такой же, как и у остальной части Ethernet, и тогда им требуется только одна часть программного обеспечения (супервизор PROFINET IO) для управления десятками машин. По моему опыту, эта установка является довольно стандартной во многих отраслях.
Что касается ресурсов (вычислительная мощность, ОЗУ, ПЗУ), то при переходе к основам «медведя» требуется невероятно минимальное оборудование для успешного обслуживания веб-страницы. webACE, я думаю, держит рекорд для крошечного веб-сервера. Жаль, что вы больше не можете посещать страницу, которую он размещал.
Что касается других необходимых навыков, глубокое понимание сетей не является действительно необходимым. Я никогда не писал стек для какого-либо протокола, потому что существует множество библиотек, которые можно связать и использовать для каждой мыслимой архитектуры. Знание некоторого базового исходного HTML полезно для разработки и написания реальной страницы.
Помимо этого, способность читать и понимать журнал от Wireshark или Fiddler (анализаторы сети), вероятно, будет самым полезным навыком, поскольку он очень поможет в устранении любых проблем, которые у вас есть. Небольшое чтение структуры пакета любого используемого вами протокола (TCP, IP, HTTP, UDP, PROFINET и т. Д.) Скажет вам, где искать в пакете любую информацию, которая вам нужна. Вы даже можете запустить один из этих анализаторов прямо сейчас и посмотреть, какой трафик приходит и уходит на ваш компьютер, чтобы почувствовать его.
источник
Одной из причин является проблема. Тем более, если вы разрабатываете плату микроконтроллера и / или пишете свое собственное программное обеспечение.
источник