1美元即可买到ESP8266芯片,但我建议使用带USB接口的线路板。更新固件需要USB接口。如果没有搭载USB接口,则需要额外的步骤,比如使用USB-TTL转换器。一个带USB接口的ESP8266线路板只需3美元即可买到。嵌入式开发可能既困难又昂贵,但本文展示如何在30分钟内,在一种成本超低的设备上安装好安全的嵌入式Web服务器,以便在WiFi芯片上运行FreeRTOS和lwIP TCP/IP堆栈。同时将解释如何在ESP8266上编译和运行Minnow Server。 Minitow服务器和参考示例在GitHub上可以找到。

嵌入式开发可能既困难又昂贵,但本文展示如何在30分钟内,在一种成本超低的设备上安装好安全的嵌入式Web服务器,以便在WiFi芯片上运行FreeRTOS和lwIP TCP/IP堆栈。

为什么要使用安全(TLS)的服务器?

浏览器已经开始将标准(HTTP)服务器在浏览器栏中标记为“不受信任”(参见下面的图2),而安全服务器对最终用户来说将更加值得信赖。我将在本文下面的安全注意事项部分详细介绍。

WiFi芯片ESP8266和Minnow服务器

1美元即可买到ESP8266芯片,但我建议使用带USB接口的线路板。更新固件需要USB接口。如果没有板载USB,则需要额外的步骤,比如使用USB-TTL转换器。一个现成的带USB接口的ESP8266线路板只需3美元可以购买到。

低成本的ESP8266 WiFi芯片非常适合学习之用,但速度很慢,特别是在执行诸如加密等CPU密集型任务时。在使用慢速芯片来处理CPU密集型任务时,确实需要慎重考虑你的设计。

ESP8266以80 Mhz的频率运行,这对嵌入式芯片来说还算可以,但代码执行速度比较慢,因为代码要通过SPI内存执行。在超过资源受限微控制器的实际限制时,在此设备上运行启用TLS的服务器可提供真正的唤醒呼叫,并提供对可在慢速微控制器上运行的内容的精彩介绍。选择合适的安全Web服务器类型和Web应用程序设计对于速度较慢的设备至关重要。

在本文中,我将解释如何在ESP8266上编译和运行Minnow服务器。 Minitow服务器和参考示例在GitHub上可以找到。

我最近在embedded.com上发表了一篇关于Minnow服务器的文章。该篇文章介绍了如何使用Minnow服务器创建一个基于Web的现代设备管理应用程序。本文还探讨了在使用TLS时将WebSocket服务器与所谓的单页应用程序(SPA)结合使用的好处。我建议读者先阅读一下这篇文章,因为我们将为ESP8266准备和编译相同的示例代码。

入门

我们将使用由esp-open-rtos项目提供的ESP8266 FreeRTOS/lwIP环境,但不用担心,你不需要经历一遍复杂的esp-open-rtos设置过程。相反,我们将利用预先配置好且完全准备好使用的环境,这个环境就是一个易于使用的基于Web的IDE.

下载FreeRTOS/lwIP ESP8266 IDE

导航到Real Time Logic并下载我们已经准备好的ESP8266 IDE。这一IDE专为教育目的而设计,包括一个预先配置好的esp-open-rtos,并绑定好了可简单使用的基于Web的C语言源代码IDE。 IDE需要VmWare或VirtualBox,我本人更喜欢VmWare胜过VirtualBox,因为我发现前者更容易使用。而且,请注意,VmWare对于非商业用途是免费的。

ESP8266 IDE还包括一个嵌入式TLS堆栈(SharkSSL),Minnow服务器在使用SharkSSL编译时会自动使用TLS。

您可以在没有ESP8266线路板的情况下开始使用ESP8266 IDE,但无法上载和运行已编译过的代码。换句话说,您可以下载IDE并按照本教程中的所有步骤完成操作,除了在ESP8266上运行代码。

图1中的屏幕截图显示了虚拟机及与其相连的基于Web的IDE。请注意虚拟机是如何获得ESP8266 USB连接的所有权。基于Web的IDE检测到此情况,便显示ESP8266已连接,并准备使用新固件进行更新。

EETC_1904_DC_S1_F1.png

图1:基于Web的IDE连接到虚拟机的IP地址。 (来源:Real Time Logic)

图1中的屏幕截图显示ESP8266通过一块面包板连接到LED。除非您想要控制本示例应用程序中使用的外部LED,否则不需要额外的LED或面包板。

请注意,你的VM的IP地址很可能与图1中的不同。确保在虚拟机窗口中单击IP地址。如果窗口为空白,请单击窗口,然后按Enter键。您必须在浏览器中输入此IP地址才能打开Web IDE。

安装Minnow Server和示例代码

Minnow Server参考示例不包含在ESP8266 IDE中,必须单独安装。图1显示了已安装在“ESP/ms”目录下的Minnow Server示例。必须从Linux命令行安装Minnow Server,但如果您没有使用Linux,也不要担心。您只需复制并粘贴我们准备好的命令即可。下图显示了粘贴到Linux Web shell中的Minnow Server安装命令的屏幕截图,可从http://vm-ip-address/webshell/获得。

EETC_1904_DC_S1_F2.png

图2:粘贴到Linux Web shell中的Minnow Server安装命令。 (来源:Real Time Logic)

当您在浏览器中输入Web shell的URL时,系统将提示您登录。用户名为sharkssl,密码为SharkSSL。
GitHub上的ESP8266教程解释了如何配置虚拟机、安装所有内容、编译Web服务器示例,以及刷新固件等。以下视频通过逐步解释简化了操作过程。

安全与非安全

Minnow Server可以在安全或非安全模式下使用,而在与ESP8266 IDE和SharkSSL一起使用时自动进入安全模式(TLS)。在设备中使用支持TLS的Web服务器会增加额外的复杂性,最终用户也将要承担处理SSL证书的管理责任。在上面的视频中,我们展示如何通过在浏览器中安装认证机构(CA)证书来去除浏览器中显示的证书错误。CA证书用于在Web服务器示例中对证书进行签名。

嵌入式设备通常安装在受保护的专用网络中,但许多客户仍要求使用TLS进行Web服务器连接。在专用网络上使用支持TLS的服务器会有问题,因为没有众所周知的认证授权机构签署IP地址或非标准(专用网络)名称。一种选择是成为自己的证书颁发机构。如果有兴趣了解更多相关信息,请点击链接地址,查看教程:https://realtimelogic.com/blog/2014/05/How-to-act-as-a-Certificate-Authority-the-Easy-Way

如上所述,ESP8266速度很慢。TLS非常占用CPU,您会注意到需要一些时间才能建立连接。使用WebSockets进行通信的单页应用示例针对CPU资源有限的设备进行了优化,但初始非对称加密(TLS握手)仍然需要时间,特别对于一些不遵循友好设计实践规则且打开许多TCP连接的浏览器,因为需要完整的TLS握手。要了解有关现代Web浏览器和慢速微控制器问题的更多信息,请参阅我们的教程:https://realtimelogic.com/blog/2018/11/Creating-SinglePage-Apps-with-the-Minnow-Server,该教程详细探讨了这一问题。

开发者模式与发布模式

在上面的视频中,我们通过在固件中嵌入单页应用(HTML资源)来编译发布模式。这样,我们可以简单地导航到设备以启动应用,将应用按需加载到浏览器中。

开发Web应用通常需要多次迭代,并且必须为每次迭代刷新新的固件,这就使得开发过程非常耗时。幸运的是,单页应用可以在开发期间驻留在您的PC上,您只需刷新浏览器即可加载新的应用程序。从PC加载应用程序后,其中的JavaScript代码将与ESP8266建立唯一的WebSocket连接。此连接用于所有浏览器与设备的交互。教程【使用Minnow Server创建单页应用程序】:https://realtimelogic.com/blog/2018/11/Creating-SinglePage-Apps-with-the-Minnow-Server,也详细探讨了这一开发过程。

请注意,单页应用的服务器端(设备端)为ESP8266提供了一个端口API。此API与拖放固件上载示例一起使用,但不保存上载的数据。此外,更改凭据也没生效。 esp-open-rtos API包含一个文件系统,您可以使用esp-open-rtos提供的API添加缺失的功能。

IoT启用ESP8266的参考示例

配置有嵌入式Web服务器的设备通常会在公司防火墙和/或路由器后面的专用网络上安装和操作,并且在外部使用时和防火墙滥用时自动受到保护。但是,此类部署也会阻止合法的远程使用。

有时,嵌入式设备需要通过Internet从远程位置进行操作,最安全的方法是利用物联网启用设备并让设备连接到Internet上的服务器。下图描绘了这样的设置。

2019si.jpg

图3:本地或通过Internet远程访问嵌入式设备。(来源:Real Time Logic)

External User:外部用户

Online connection:在线连接

Redirector:重定向器

Private Network:专有网络

Local Intranet user:本地企业内部用户

Direct websocket: 直接Websocket

Connection:连接

Minnow Server参考示例包含一个可在编译时启用的可选IoT组件。请注意,此组件在默认情况下是禁用的,并且需要对代码(或Makefile)进行一些细微的修改才能启用它。上面视频的第二部分显示了如何连接到我们设置的在线测试服务器。

当设备以IoT模式运行时,除了充当本地使用的服务器之外,该设备还作为网络客户端运行。网络客户端通常不需要任何网络配置来连接到Internet上的服务,但必须连接到已知的服务。出于这个原因,我们建立了一个可用于测试目的的在线IoT服务器。您可以使用它进行测试。

在线服务器充当远程用户和设备之间的代理,并允许远程用户安全地访问在防火墙后运行的私有Web服务器。请注意,我们设置的测试服务器不是即用型服务。我们将保持运行一段时间,但如果您计划使用IoT模式,最终您将需要设置自己的私有IoT服务器。

GitHub上的Minnow页面包含有关如何设置自己的私有IoT服务器的说明。私有IoT服务器的好处是不必依赖于任何特定的IoT服务提供商。您会惊讶地发现操作私有IoT服务器是多么容易和合理。

如何启用IoT模式

上面的视频显示了如何IoT启用Minnow Server的参考示例,以下屏幕截图显示了需要在Makefile中启用的宏。

20194.png

图4:宏'USE_SMQ'启用IoT模式,宏''SMQ_DOMAIN'设置服务器名称。 (来源:Real Time Logic)

从图4中可以看出,SMQ_DOMAIN宏必须设置为我们的在线IoT演示服务器“minnow.ml”,或您自己的IoT服务器。

此时,您应该可以单击“Run”按钮,以编译并上载新的固件。运行新固件时,您应该会在Web控制台中看到以下文本。请注意,我删除了一些打印输出结果。

WebSocket服务器监听443

SMQ:连接到https://minnow.ml

协商密码:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
警告:从minnow.ml收到的证书不受信任!

证书警告的原因与充当不信任在线服务器的TLS客户端的设备有关。证书管理很复杂,我会在本文最后讨论这个问题。

所有连接的设备都显示在在线服务器的(minnow.ml)用户界面中。单击其中一个设备将转到该设备的登录屏幕。登录页面的验证凭据由设备提供,而不是在线服务器。默认凭据是root/password。图5显示了单击设备链接之前和之后的在线服务器。

20195.png
图5:单击设备链接之前和之后的在线服务器。 (来源:Real Time Logic)

图5的左侧窗格显示了一个已连接的设备,但是在线服务器可以管理任意数量的设备,并且随着连接设备的增加,列表也会增长。单击链接时,联机服务器的代理功能会将您连接到设备,从这一点开始,在概念上,连接的工作方式与图3中所示的直接WebSocket连接类似。

安全考虑事项

如上所述,Minnow Server可以在安全(HTTPS)或非安全(HTTP)模式下运行。因不必处理证书,使用非安全连接比较容易。在慢速CPU上服务器运行也要快得多。但是,如上图2中的浏览器栏所示,在非安全连接时,Google的Chrome浏览器和其他浏览器现在会显示警告消息。谁知道接下来他们会做什么?谷歌似乎决心想要关闭非安全通信。

使用TLS时,您必须确保使用有效的信任链。如果用户浏览到具有不受信任证书的服务器,所有浏览器都会发出严重警告信息。正如我们在上面的视频中所解释的那样,为私有服务器建立信任链需要您在专用网络上提供信任管理解决方案。如上视频所示,一种解决方案是充当您自己的证书颁发机构。如果您有兴趣建立自己的信任链,我建议您阅读文章:《如何充当自己的证书颁发机构?》
https://realtimelogic.com/blog/2014/05/How-to-act-as-a-Certificate-Authority-the-Easy-Way
当设备在客户端模式下运行,并连接到在线测试服务器minnow.ml时,控制台上将打印出证书警告。您可以在示例源代码文件“main.c”中找到此打印输出结果(参见图3)。不要打印警告,而是应该终止连接,但在修改C代码以终止不受信任连接之前,必须确保设备信任在线服务器minnow.ml。通过将在线服务器的CA证书(根证书)导入设备的C代码,就可以恢复信任。在线服务器的证书由Let's Encrypt签署。

如果您不熟悉“信任链”这一概念,我建议您阅读文章《嵌入式系统的证书管理》:

https://realtimelogic.com/blog/2013/10/Certificate-Management-for-Embedded-Systems

本文同步刊登于2019年电子工程专辑杂志4月刊

  • ESP8266这个在IOT当中是明星方案,现在USB接口化了,那使用起来更加便捷
阅读全文,请先
您可能感兴趣
胡伟武表示,龙芯中科正在研发的新一代桌面处理器——龙芯3B6600虽然采用成熟工艺(14nm),但预计其单核和多核性能将达到使用先进工艺(7nm)的英特尔高端酷睿12~13代处理器的水平……
《纽约时报》近日报道称,尽管美国对俄罗斯实施了严格的芯片出口限制,但俄罗斯仍在其导弹系统中大量使用来自 AMD、德州仪器、美光和英特尔等美国公司的芯片。
为了帮助产业链上下游企业更好地把握AIoT市场发展商机,由全球领先的专业电子机构媒体AspenCore携手深圳市新一代信息通信产业集群联合主办的【2024国际AIoT生态发展大会】于7月25日在深圳君悦酒店隆重举办。
2024巴黎奥运会最要命的是,奥运村没有夏天救命的空调。于是中国代表团采取了一项创新且有效的应对措施:自带345台移动空调进驻奥运村。这是谁家的空调?要怎么自行安装?……
AMD官宣AMD 总裁 Victor Peng即将退休,将于 2024 年 8 月 30 日退休。在此期间,Victor Peng继续担任 AMD 执行团队的顾问,并支持过渡,直至退休。
我国首颗由高职院校师生自主研发的32位MCU“苏信一号” 流片成功,该项目与龙芯中科合作,基于国产CPU内核。早年间,产学合作这种事都是国外芯片公司在做,也为他们收获了大量创新人才和口碑,如今本土企业也意识到了这一点……
• 得益于西欧、关键亚洲市场和拉丁美洲市场的增长,以及中国品牌的持续领先,全球折叠屏手机出货量在2024年第二季度同比增长了48%。 • 荣耀凭借其在西欧特别强劲的表现,成为最大的贡献者,成为该地区排名第一的品牌。 • 摩托罗拉的Razr 40系列在北美和拉丁美洲表现良好,为其手机厂商的出货量贡献了三位数的同比增长。 • 我们预计,头部中国手机品牌厂商的不断增加将至少在短期内抑制三星Z6系列在第三季度的发布。
AI技术的发展极大地推动了对先进封装技术的需求,在高密度,高速度,高带宽这“三高”方面提出了严苛的要求。
奕斯伟计算2024首届开发者伙伴大会以“绿色、开放、融合”为主题,从技术创新、产品应用、生态建设等方面,向开发者、行业伙伴等相关方发出开放合作倡议,加速RISC-V在各行各业的深度融合和应用落地,共同推动RISC-V新一代数字基础设施生态创新和产业发展。
2024年 Canalys 中国云计算渠道领导力矩阵冠军厂商分别是:阿里云、华为云和亚马逊云科技(AWS)
在全球智能手机竞争日益激烈的情况下,谁能在高端市场站稳脚跟,谁就占据了主动权。一直以来全球智能手机市场格局都是,苹果专吃高端,其他各大厂商分食全球中低端市场。但现在市场正在其变化。根据Canalys最
点击蓝字 关注我们德州仪器全球团队坚持克服挑战,为电源模块开发新的 MagPack™ 封装技术,这是一项将帮助推动电源设计未来的突破性技术。  ■ ■ ■作为一名经验丰富的马拉松运动员,Kenji K
‍‍Mobileye 将终止内部激光雷达开发Mobileye 宣布终止用于自动驾驶的激光雷达的开发,并裁员 100 人。Mobileye 认为,下一代 FMCW 激光雷达对可脱眼的自动驾驶来说必要性没
在德国柏林举行的IFA 2024上,AMD计算和图形业务集团高级副总裁兼总经理Jack Huynh宣布,公司将把以消费者为中心的RDNA和以数据中心为中心CDNA架构统一为UDNA架构,这将为公司更有
‍‍‍‍上市PCB厂商竞国(6108)日前出售泰国厂给予陆资厂胜宏科技后,近日惊传台湾厂惊传12月前关厂,并对客户发布通知预告客户转移生產,最后出货日期2024年12月25日。至於后续台湾厂400名员
近日A股上市公司陆续完成2024年上半年业绩披露,其中24家SiC概念股上半年合计营收同比增长14.58%至1148.65亿元,研发费用同步增长7.22%至69.16亿元。尤为值得注意的是,天岳先进、
[关注“行家说动力总成”,快速掌握产业最新动态]9月6日,据“内江新区”消息,晶益通(四川)半导体科技有限公司旗下IGBT模块材料和封测模组产业园项目已完成建设总进度的40%,预计在明年5月建成。据了
8月28-30日,PCIM Asia 2024展在深圳举行。“行家说”进行了为期2天的探馆,合计报道了200+碳化硅相关参展企业(.点这里.)。其中,“行家说”还重点采访了骄成超声等十余家企业,深入了
在苹果和华为的新品发布会前夕,Counterpoint公布了2024年第一季度的操作系统详细数据,数据显示, 鸿蒙操作系统在2024年第一季度继续保持强劲增长态势,全球市场份额成功突破4%。在中国市场
9月6日,“智进AI•网易数智创新企业大会”在秦皇岛正式举行,300+企业高管及代表、数字化技术专家齐聚一堂,探讨当AI从技术探索迈入实际应用,如何成为推动组织无限进化的新引擎。爱分析创始人兼CEO金