Почему люди создают веб-сервер на микроконтроллере?

13

Я сталкивался с людьми, создающими веб-серверы с использованием микроконтроллеров, зачем кому-то это делать? Каковы его приложения? Какой набор навыков, кроме языка Си, нужен для создания таких серверов? Мне очень любопытно, что эти крошечные серверы имеют такую ​​маленькую оперативную память.

quantum231
источник
Этот вопрос очень широкий, пожалуйста, попробуйте сосредоточиться на конкретном техническом вопросе.
Кортук
10
Голосование возобновить. Этот вопрос достаточно хорош.
Ник Алексеев
«Мы ожидаем, что ответы будут подтверждены фактами, ссылками или конкретными знаниями, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение».
Фотон
Я рад, что, наконец, я вижу, как эта концепция используется в промышленности. Но из этого возникает новый вопрос, видя, что реализация сервера в унифицированном канале и создание пользовательского интерфейса, который работает в интернет-браузере, упрощает задачу, почему многие люди все еще прибегают к более сложным способам, таким как USB?
Quant231
@ квант231 Пожалуйста, задайте новый вопрос, если у вас есть новый вопрос. :-)
Аниндо Гош

Ответы:

15

Я сделал это в нескольких продуктах. До сих пор причина была в том, чтобы допустить простую настройку поля. Каждый раз, когда продукт уже должен был быть подключен к 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-соединений. Это действительно не так тяжеловес, как люди думают.

Олин Латроп
источник
Стоит отметить, что многие простые веб-серверы, когда они получают запрос, немедленно отправят все, что они собираются отправить в ответ на запрос, закроют соединение и забудут об этом. Это снижает требования к оперативной памяти TCP, но накладывает некоторые серьезные ограничения на сложность веб-страницы. Можно спроектировать TCP-сервер без сохранения состояния, который может поддерживать неограниченное количество открытых соединений (я это сделал), но для этого потребуется пользовательский клиентский интерфейс. Проще всего сделать вещи достаточно маленькими, чтобы разрешить работу HTTP без сохранения состояния.
суперкат
ЗАМЕЧАНИЕ. Я пытался загрузить файл "install_picdev.exe", но Firefox (или Windows Security Essentials) сказал, что это вредоносная программа. Не собираюсь его открывать.
Ахоген
14

Ключевым фактором, способствующим недавнему росту популярности веб-серверов на микроконтроллерах, является желание получить доступ к физической информации датчиков (температура, влажность, уровень освещенности, наличие окиси углерода и т. Д.), А также к тому, чтобы что-то происходило в физическом мире (переключатель включите сигнализацию, включите аварийный вытяжной вентилятор, включите насос охлаждающей жидкости) также дистанционно. Это приложения.

Какой лучший способ добиться универсального, согласованного, независимого от устройства, независимого от разработчика удаленного доступа, чем вездесущий протокол HTTP, в еще более распространенной IP-сети? Физическим уровнем связи может быть WiFi, проводной Ethernet или любой другой удобный вариант, поддерживающий IP-сети. Вот почему веб-серверы на встроенных устройствах делаются.

Для дальнейшего понимания можно было бы поискать « Интернет вещей » и увидеть широкий спектр возникающих мыслительных процессов.

Что касается « крошечных серверов, имеющих такой маленький объем ОЗУ », то стоит отметить, что протокол HTTP достаточно прост, чтобы его можно было реализовать на очень небольшом количестве ОЗУ с очень небольшой вычислительной мощностью. Кроме того, современные микроконтроллеры сопоставимы или, в некоторых случаях, более мощны, чем процессоры на ранних персональных компьютерах, на которых люди реализовывали не только Интернет, но и выполняли различные интерактивные задачи, даже играли в игры.

Аниндо Гош
источник
Хороший ответ. Что касается приложений, я упускаю упоминание о некоторой распространенной бытовой электронике, к которой часто можно получить доступ и настроить с помощью браузера. Принтеры, телевизоры, домашние кинотеатры, ресиверы, роутеры ... Бьюсь об заклад, есть даже удаленно доступные кофемашины :) РЕДАКТИРОВАТЬ: Конечно, некоторые из них имеют вычислительную мощность современного ПК и не основаны на микроконтроллерах.
Откр. 1
Я хотел бы добавить, что выбор между тем, чтобы что-то вроде устройства взаимодействовало через HTTP, или чем-то еще, обычно является выбором между усложнением самого устройства и требованием того, чтобы пользователь купил или установил какое-то специальное оборудование или программное обеспечение для связи с ним. Может быть дешевле и более энергоэффективно создать датчик температуры, который использует запатентованную РЧ-схему для беспроводной связи с USB-ключом, чем включать WiFi-адаптер в датчик температуры, но последний подход устраняет необходимость использования ключа.
суперкат
4

Многие сетевые устройства предоставляют веб-сервер для проверки и настройки параметров конфигурации, проверки состояния устройства и т. Д. Например, я могу настроить маршрутизатор в моей системе, указав в браузере http:///192.168.0.254(если я правильно помню ...).

Пит Беккер
источник
3
  1. Потому что они могут.

  2. Потому что они могут быть очень малой мощности. Как под 1W с некоторыми пиковыми дро. Менее половины ампер. Батарея и солнечная энергия практичны, в отличие от больших компьютеров.

  3. Физический размер. Микроконтроллер + WiFi или чип Ethernet могут быть размером с флэш-накопитель.

  4. Стоимость. Микроконтроллер, подходящий для этого, может быть в диапазоне одного доллара. Сетевые части почти так же дешево.

  5. Одноразовая. Вы можете поместить их в один из проектов, и если они умрут, это не так плохо, как если бы это был дорогой компьютер.

  6. Просто причина.

С появлением полноценных компьютеров за десятки долларов (бесплатно до 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, такие как карманный маршрутизатор с веб-сервером, могут быть рядом с ними.

проезжий
источник
Рассмотрим также семейство микроконтроллеров Texas Instruments MSP430: безумно низкое энергопотребление и широкие возможности для веб-обслуживания. 16 битная обработка. Некоторые опции включают беспроводную сеть из коробки. Размер: полная плата с беспроводным подключением может поместиться в флэш-накопитель.
Аниндо Гош
Эти ответы просто отвечают на одну часть вопроса. Почему мы это делаем? Как насчет следующей части; Как мы это делаем? Какие навыки необходимы?
Аньшул
1
@Anshul Вам нужно кодировать в спецификации http-сервера, и вам нужен сетевой стек (ip / tcp / udp) или аналогичный, в зависимости от того, какую сетевую ИС вы выбираете.
прохожий
2

Ответ Олина в значительной степени поражает каждую причину, по которой я использовал встроенный веб-сервер. Я занимаюсь разработкой промышленного контроля, и почти каждый продукт, который мы производим, имеет встроенный веб-сервер.

Большинство клиентов уже имеют все свое оборудование в своей сети уже по разным причинам. Поэтому крайне желательно иметь возможность настраивать и / или управлять им через веб-браузер, а не устанавливать десятки пользовательских программ.

Даже если они используют промышленный протокол, такой как PROFINET , физический уровень такой же, как и у остальной части Ethernet, и тогда им требуется только одна часть программного обеспечения (супервизор PROFINET IO) для управления десятками машин. По моему опыту, эта установка является довольно стандартной во многих отраслях.

Что касается ресурсов (вычислительная мощность, ОЗУ, ПЗУ), то при переходе к основам «медведя» требуется невероятно минимальное оборудование для успешного обслуживания веб-страницы. webACE, я думаю, держит рекорд для крошечного веб-сервера. Жаль, что вы больше не можете посещать страницу, которую он размещал.

чип webACE кабель webACE

Программное обеспечение

Некоторая статистика кода для оригинального программного обеспечения. Изначально я забыл включить в итоговые данные 64-байтовый «EEPROM» данных, что привело к получению цифры в 1010 байт, указанной в TBTF.

Startup       36 bytes
Serial       179
SLIP          91
IP           144
ICMP          47
TCP          188
Checksum     132
Application  257
Total       1074 bytes

Comprising:
  454 instructions
  912 instruction bytes
  162 data bytes
 2.01 bytes/instruction average

Что касается других необходимых навыков, глубокое понимание сетей не является действительно необходимым. Я никогда не писал стек для какого-либо протокола, потому что существует множество библиотек, которые можно связать и использовать для каждой мыслимой архитектуры. Знание некоторого базового исходного HTML полезно для разработки и написания реальной страницы.

Помимо этого, способность читать и понимать журнал от Wireshark или Fiddler (анализаторы сети), вероятно, будет самым полезным навыком, поскольку он очень поможет в устранении любых проблем, которые у вас есть. Небольшое чтение структуры пакета любого используемого вами протокола (TCP, IP, HTTP, UDP, PROFINET и т. Д.) Скажет вам, где искать в пакете любую информацию, которая вам нужна. Вы даже можете запустить один из этих анализаторов прямо сейчас и посмотреть, какой трафик приходит и уходит на ваш компьютер, чтобы почувствовать его.

embedded.kyle
источник
2

Одной из причин является проблема. Тем более, если вы разрабатываете плату микроконтроллера и / или пишете свое собственное программное обеспечение.

Брайан Карлтон
источник
3
Это вряд ли большая проблема. Вы можете скачать демоверсии со встроенным веб-сервером.
Олин Латроп
1
Было бы непросто, если бы вы написали свой собственный стек TCP / IP с нуля ...
m.Alin