人们为什么要在微控制器上创建Web服务器?


13

我遇到过使用微控制器创建Web服务器的人,为什么有人这样做?它有什么应用?为了创建这样的服务器,除了C语言外,还需要什么技能?我对这些具有如此小的RAM的小型服务器感到很好奇。


这个问题非常广泛,请尝试着重于特定的技术问题。
Kortuk 2013年

10
投票重新开放。这个问题已经足够了。
尼克·阿列克谢夫

“我们希望答案能得到事实,参考或特定专业知识的支持,但是这个问题很可能会引起辩论,争论,民意测验或进一步的讨论。”
Photon

我很高兴终于可以看到这个概念在行业中的使用情况。但是由此产生了一个新问题,即看到在uC上实现服务器,而不是创建在Internet浏览器中运行的用户界面使事情变得如此简单,为什么许多人仍然诉诸于USB等更困难的方式?
quantum231

@ quantum231如果您有新问题,请提出一个新问题。:-)
Anindo Ghosh

Answers:


15

我已经在一些产品中做到了这一点。到目前为止,原因是允许进行简单的现场配置。每次由于其主要操作原因而已经需要将产品连接到以太网。因此,Web服务器只是在微控制器中添加了代码。

HTTP服务器的最大优点是不需要特殊的硬件或软件即可向最终用户提供合理的用户界面。每个人都已经有一个Web浏览器,因此对客户而言并不麻烦。考虑其他选择。您可以提供一个RS-232端口,但是您要么必须提供一个自定义应用程序,要么向某人解释如何使用正确的波特率,起始位,停止位和奇偶校验来设置终端程序。您也必须提供电缆,或者希望客户购买一根电缆,然后有人必须去设备并进行物理连接。USB没有相同的配置问题,但是通常意味着产品中有一个完整的微型芯片,您需要一个自定义程序才能在客户可能拥有的任何平台上运行。

对于RAM,对于HTTP服务器而言,这并不是什么大问题。TCP协议栈需要一些RAM,但实际上不需要HTTP服务器,只是它可能需要网络栈中的额外资源。Web服务器通常需要ROM空间,因为每个页面的大部分都是恒定的,通常将一些值转换为文本并即时插入。小型微型Web服务器使用ROM文件系统,并在这些文件中使用转义序列,这些序列会导致调用您的应用程序代码以生成可自定义的字符串,以便在几个预定义的位置插入。

到目前为止,我在所有这些情况下都使用了PIC 18。虽然不足4 KB的RAM是一个限制,但是您仍然可以做很多事情。ROM空间甚至还不是一个问题。我的PIC 18网络堆栈(可从我的PIC开发工具版本中找到,网址为www.embedinc.com/pic/dload.htm)仅占用18F67J60 ROM空间的一小部分,这对于此类事情来说是一个很好的部分,因为它具有内置的完整以太网MAC / PHY。在一种情况下,我让PIC作为6个同时TCP连接的服务器。实际上,它并不像人们认为的那么重。


值得一提的是,许多简单的Web服务器在收到请求后,将立即发出将要发送的所有内容以响应该请求,关闭连接并忽略它。这减少了TCP RAM的要求,但对网页的复杂性设置了一些严格的限制。可以设计一个无状态的TCP服务器,该服务器可以保持无限数量的连接打开(我已经完成了),但是这种情况需要定制的客户端前端。使事物足够小以允许无状态HTTP操作是最简单的。
超级猫

注意:我尝试下载“ install_picdev.exe”,但Firefox(或Windows Security Essentials)表示它是恶意软件。不会打开它。
ahogen

14

最近在微控制器上使用Web服务器的主要原因之一是希望远程访问物理传感器信息(温度,湿度,光照水平,一氧化碳的存在等),以及使事情在物理世界中发生(交换)。在LED上触发警报,打开应急排风扇,打开冷却液泵)。这些就是应用程序。

在无处不在的IP网络上,有什么比无处不在的HTTP协议更好地实现通用,一致,独立于设备,与设计者无关的远程访问的方法?通信的物理层可以是WiFi,有线以太网或任何其他支持IP网络的便捷选项。这就是为什么嵌入式设备上的Web服务器已经完成的原因。

为了获得进一步的洞察力,人们可以搜索“ 物联网 ”,并看到各种各样的思维过程。

关于“ 具有如此小的RAM的微型服务器 ”,值得注意的是,HTTP协议足够简单,可以在很少的RAM上以很少的处理能力实现。另外,当今的微控制器可以与早期个人计算机上的处理器媲美,或者在某些情况下比早期个人计算机上的处理器功能强大,人们不仅可以在这些个人计算机上实现网络,还可以执行各种交互式任务,甚至可以玩游戏。


好答案。关于应用程序,我没有提到一些常见的消费电子产品,这些电子产品通常也可以使用浏览器进行访问和配置。打印机,电视机,家庭影院音频接收器,路由器...我敢打赌,甚至还有可远程访问的咖啡机:)编辑:当然,其中一些具有现代PC的处理能力,而不是基于微控制器的。
2013年

我会补充说,在让类似设备通过HTTP进行通信与其他方式之间进行选择,通常是在使设备本身稍微复杂一些与要求用户购买或安装一些专用硬件或软件进行通信之间进行选择。与使用WiFi适配器的温度传感器相比,使用专有的RF方案与USB加密狗进行无线通信的温度传感器的构建可能更便宜,更节能,但是后一种方法避免了对加密狗的需求。
超级猫

4

许多联网设备都提供Web服务器,用于检查和设置配置参数,检查设备状态等。例如,我可以通过将浏览器指向http:///192.168.0.254(如果我没有记错的话)在系统中配置路由器。


3
  1. 因为他们可以。

  2. 因为它们的功率可能非常低。就像在1W以下有一些峰值绘制。在半安培以下。与大型计算机不同,电池和太阳能非常实用。

  3. 物理尺寸。微控制器+ wifi或以太网芯片可以是拇指驱动器的大小。

  4. 成本。适合于此的微控制器可以在单美元范围内。网络部件几乎一样便宜。

  5. 一次性的 您可以将它们放在一个单独的项目中,如果它们消失了,就不会像一台昂贵的计算机那样糟糕。

  6. 正当理由。

随着功能完善的计算机的出现(几十美元(免费到100美元))(shrevaplugs,raspberry pi,智能手机,linux拇指驱动器,android棍子,ROUTERS),将来您可能会看到较少的微控制器Web服务器,因为不再将COST和大小作为驱动因素。35美元的Raspberry Pi或45美元的Beaglebone可以在成本,性能和易于安装方面胜过Arduino +以太网或Wifi防护罩。它仅比arduino大。arduino唯一能做的就是功率效率0.1W(仅依靠ATMEGA即可获得0.5mA至50mA的睡眠,以提供完整的计算能力[5v,16mhz,100%cpu]),而对于无以太网/ hdmi / usb的RPI则为4W空闲时的使用情况。

因此,由于电流消耗低,微控制器Web服务器可以由电池供电。即使这样,某些较新的linux SoC(如带有Web服务器的袖珍路由器)也可以靠近它们。


还请考虑德州仪器(TI)MSP430系列微控制器:极低的功耗和丰富的Web服务功能。16位处理。一些选项包括开箱即用的无线网络。尺寸:具有无线连接功能的完整电路板可以放入拇指驱动器。
Anindo Ghosh 2013年

这些答案仅回答了问题的一部分。为什么这样做呢?下一部分呢?我们该怎么做呢?需要什么技能?
Anshul 2013年

1
@Anshul您需要编码为http服务器规范,并且需要网络堆栈(ip / tcp / udp)或类似的内容,具体取决于您选择的网络IC。
Passerby

2

在使用嵌入式Web服务器的所有原因中,Olin的回答都大受打击。我致力于开发工业控件,并且我们生产的几乎所有产品都具有嵌入式Web服务器。

出于各种原因,大多数客户将所有设备都放在网络上。因此,非常需要能够通过Web浏览器而不是安装许多自定义程序来配置和/或控制它。

即使他们使用像PROFINET这样的工业协议,物理层也和其余的以太网相同,然后他们只需要一个软件(一个PROFINET IO管理员)就可以控制数十台机器。以我的经验,此设置在许多行业中都是相当标准的。

关于资源(处理能力,RAM,ROM),当精简到基本要求时,仅需极少的硬件就可以成功地为网页提供服务。我认为webACE保持着最小的Web服务器记录。很遗憾您无法再访问其托管的页面。

webACE芯片 webACE电缆

软体

原始软件的一些代码统计信息。我最初忘记将片上64字节的“数据eeprom”包括在总数中,这导致TBTF引用了1010字节的数字。

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对于设计和编写实际页面很有用。

除了能够读取和理解WiresharkFiddler(网络分析仪)的日志外,它可能是最有用的技能,因为它将大大有助于调试任何问题。稍微阅读一下所使用的任何协议(TCP,IP,HTTP,UDP,PROFINET等)的数据包结构,就会告诉您在数据包中的何处查找所需的任何信息。您甚至可以立即启动其中一台分析仪,并查看来往计算机的流量以了解它。


2

原因之一就是挑战。如果您开发微控制器板和/或编写自己的软件,则更多。


3
这几乎不是一个挑战。您可以下载有一个Web服务器内置的演示。
奥林莱思罗普

1
如果您要从头开始编写自己的TCP / IP堆栈,将是一个挑战
。– m.Alin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.