我遇到过使用微控制器创建Web服务器的人,为什么有人这样做?它有什么应用?为了创建这样的服务器,除了C语言外,还需要什么技能?我对这些具有如此小的RAM的小型服务器感到很好奇。
我遇到过使用微控制器创建Web服务器的人,为什么有人这样做?它有什么应用?为了创建这样的服务器,除了C语言外,还需要什么技能?我对这些具有如此小的RAM的小型服务器感到很好奇。
Answers:
我已经在一些产品中做到了这一点。到目前为止,原因是允许进行简单的现场配置。每次由于其主要操作原因而已经需要将产品连接到以太网。因此,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服务器的主要原因之一是希望远程访问物理传感器信息(温度,湿度,光照水平,一氧化碳的存在等),以及使事情在物理世界中发生(交换)。在LED上触发警报,打开应急排风扇,打开冷却液泵)。这些就是应用程序。
在无处不在的IP网络上,有什么比无处不在的HTTP协议更好地实现通用,一致,独立于设备,与设计者无关的远程访问的方法?通信的物理层可以是WiFi,有线以太网或任何其他支持IP网络的便捷选项。这就是为什么嵌入式设备上的Web服务器已经完成的原因。
为了获得进一步的洞察力,人们可以搜索“ 物联网 ”,并看到各种各样的思维过程。
关于“ 具有如此小的RAM的微型服务器 ”,值得注意的是,HTTP协议足够简单,可以在很少的RAM上以很少的处理能力实现。另外,当今的微控制器可以与早期个人计算机上的处理器媲美,或者在某些情况下比早期个人计算机上的处理器功能强大,人们不仅可以在这些个人计算机上实现网络,还可以执行各种交互式任务,甚至可以玩游戏。
因为他们可以。
因为它们的功率可能非常低。就像在1W以下有一些峰值绘制。在半安培以下。与大型计算机不同,电池和太阳能非常实用。
物理尺寸。微控制器+ wifi或以太网芯片可以是拇指驱动器的大小。
成本。适合于此的微控制器可以在单美元范围内。网络部件几乎一样便宜。
一次性的 您可以将它们放在一个单独的项目中,如果它们消失了,就不会像一台昂贵的计算机那样糟糕。
正当理由。
随着功能完善的计算机的出现(几十美元(免费到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服务器的袖珍路由器)也可以靠近它们。
在使用嵌入式Web服务器的所有原因中,Olin的回答都大受打击。我致力于开发工业控件,并且我们生产的几乎所有产品都具有嵌入式Web服务器。
出于各种原因,大多数客户将所有设备都放在网络上。因此,非常需要能够通过Web浏览器而不是安装许多自定义程序来配置和/或控制它。
即使他们使用像PROFINET这样的工业协议,物理层也和其余的以太网相同,然后他们只需要一个软件(一个PROFINET IO管理员)就可以控制数十台机器。以我的经验,此设置在许多行业中都是相当标准的。
关于资源(处理能力,RAM,ROM),当精简到基本要求时,仅需极少的硬件就可以成功地为网页提供服务。我认为webACE保持着最小的Web服务器记录。很遗憾您无法再访问其托管的页面。
软体
原始软件的一些代码统计信息。我最初忘记将片上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对于设计和编写实际页面很有用。
除了能够读取和理解Wireshark或Fiddler(网络分析仪)的日志外,它可能是最有用的技能,因为它将大大有助于调试任何问题。稍微阅读一下所使用的任何协议(TCP,IP,HTTP,UDP,PROFINET等)的数据包结构,就会告诉您在数据包中的何处查找所需的任何信息。您甚至可以立即启动其中一台分析仪,并查看来往计算机的流量以了解它。