0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何构建Arduino Web服务器

454398 来源:wv 2019-10-17 09:55 次阅读

步骤1:您需要做什么

对于此项目,只需最少两件事即可使其工作。其他所有内容都是您可以包括的附加功能。

所需的部件是:

Arduino

Arduino以太网屏蔽-注意:如果您使用的是较旧的屏蔽,则将无法使用。 SD卡。如果您没有防护罩,请获取最新版本!!!

可选部件:

放入其中的盒子-推荐

伺服

液晶屏

某些LED 更多可选部件-这些用于外部控制和/或传感器

第二个Arduino

所需的任何声纳和控制器

长电缆或无线收发器(像Xbee)

步骤2:Web入门

您要做的第一件事需要做的是在arduino上放置以太网屏蔽。如果需要帮助,请将屏蔽罩上的引脚名称与Arduino的引脚名称对齐。然后将其插入计算机,然后将以太网电缆从路由器连接到Arduino。打开Arduino IDE,并在arduino-00xx-》 library-》 Ethernet下运行WebServer示例。

打开您喜欢的Web浏览器,然后输入http://192.168.1.177。您应该看到类似下图的内容。如果它不起作用,请勿恐慌!您可能有一个Internet服务提供商,其阻止了端口80(标准的http端口)。

要对此进行测试,我们将尝试以下方法之一转到端口8080或8081。转到WebServer草图,找到显示以下内容的行:Server server(80);它是草图的开始。将80更改为8080或8081。现在上传。要进入您的网站,您需要输入:http://192.168.1.177:8080或http://192.168.1.177:8081。如果有效,那就太好了,您可以继续下一步!!! portforward.com是寻求转发帮助的好地方。

在您兴奋并打电话给您的朋友上车之前,我们遇到了问题。您站点的IP地址只能由连接到路由器的计算机访问。没有其他人可以访问它。我们如何解决这个问题???我们使用端口转发。这可能很容易,也可能很难,具体取决于您和路由器的制作方式。您将需要访问路由器的设置页面并进行搜索,直到看到链接或选项卡或任何名为“端口转发”或“端口转发/端口触发”或类似名称的内容。转到该页面,然后选择一个新的 http 服务。输入Web服务器的IP,并将起始端口和结束端口设置为8080或8081。保存更改,现在人们可以从路由器外部访问您的网站。但是您将需要一个新的IP。路由器的IP。请访问www.whatismyip.com。请勿访问http://this.is.my.ip:8080或http://this.is.my.ip:8081的IP。使用这个和是以及我和 ip 分别代表您的地址。

现在致电您的最亲密的朋友,让他们看看。可是等等!!!仍然存在一个问题,记住所有这些数字可能会很痛苦!我们并不擅长记住数字字符串,但是我们擅长记住单词和名称。

要解决此问题,您可能希望获得一个实际的域名,例如example.com。最简单的方法是访问dyndns.com并注册一个免费帐户,然后选择一个免费域名。其中包括您的名字 .dyndns- 某物 .com或您的名字 .dyndns。 some2or3letterending 。现在将此域设置为路由器的IP。要访问您的站点,您将键入http://yourname.dyndns.whatever:8080或8081,具体取决于您的服务器端口。在Internet Explorer中,需要http://,但对于80以外的其他端口,则不需要Firefox。

您可以采取的最后一步(可选)是制作网络跳,而不必在:808x上键入结束。我已将http://teslalingeweb.dyndns-web.com指向路由器的ip,并将http://teslaling.dyndns-web.com设置为http://teslalingeweb.dyndns-web.com:8081的网络跳。对于端口80上的网站,不需要http://。

现在您已经在网站上拥有了网站,您可以构建服务器并设计网站!

步骤3:构建Web服务器

虽然我将向您展示我的Web服务器设计,但完全由您决定如何布局和设计,但是这里有一些指导原则。

我建议将arduino放在一个角落,以便可以访问电源,USB和以太网端口以及SD卡插槽。

我也建议使用坚固的盒子,我使用的盒子不是很坚固,现在伺服器的重量

如果打算安装LCD屏幕,请先将其焊接在其上,然后将其连接至以太网屏蔽,然后再放入盒中,盒内有8根电线可供连接! !

第4步:连接设备

与该项目的其他所有内容一样,您可以选择要添加到ServDuino中的其他内容。我有一些建议和规则,您可以遵循这些建议和规则以使其成功构建。

伺服。

Theservo易于连接,将红色线连接到+5,黑色线连接到gnd,黄色(或第三根导线)连接到pwm引脚。在主板上,pwm引脚包括3、5、6、9、10、11。但是,不能使用引脚10和11,因为它们用于与以太网屏蔽和SD卡的SPI通信。如果您使用delay或millis(),我建议不要使用5或6针,因为如果ServDuino在计算机旁边,会有一个令人讨厌的抖动!

LCD屏幕。

一个字符LCD屏幕最多可连接6个数据引脚。很好,因为仅剩6个数字引脚。现在,在您发表评论并告诉我实际上有9个图钉之前,让我解释一下。我们使用了别针13,12,11,10和我们选择的9,6,5或3。这留下了9个别针。但是,我们需要一个用于与SD卡进行SPI通信的引脚,即引脚4。接下来,我们必须记住,Arduino使用UART来上传其草图,因此我们不想使用引脚0或1,如果。现在我们该如何仅用6个引脚连接LCD屏幕,如下所示:

Vss接地,

Vcc接地+5伏特。

Vo可以接地,也可以连接电位计。RS与数据引脚相连。记住什么针!!!或者更好的方法是将其写下来!

R/W接地。

E接地到数据引脚。记下来!

DB0-DB3未连接。

DB4-DB7与数据引脚相连。写下来吧!

背光引脚可以连接到各自的电压源。

模拟传感器:

模拟传感器非常简单,但是在较新的以太网屏蔽上,也许在较旧的以太网屏蔽上也是如此是在模拟引脚0和1上与+ 5v相连的10K电阻器。当心!

Xbee和串行通信:

嗯,我在这里没有太多产品,我没有任何Xbees 。..但。..但我想提一些建议。任何时候需要上传草图时,您都需要关掉xbee跳线或断开串行线(如果不进行无线连接),因此您可能希望尝试在服务器盒上放置一个跳线选择。如果您不这样做,则必须将其撕碎以上传草图。

第5步:设计网站

在这里,您必须在这里开始思考什么您希望您的网站看起来像和做的一样,以便您可以选择存储网站信息的方式。

如果您想拥有一个非常基本的网站,可能只有一页,或者希望能够控制一些led或电灯开关或您的心脏想要的任何东西,您应该使用保存在Arduino内存中的站点。

如果您想要具有类似的功能,但想要超过一页,则需要考虑使用

如果您想要一个包含图片,视频和许多页面的常规站点,或者其他任何内容,则需要使用SD卡。

限制和功能:

使用ram选项,该站点只能是1500个字符(包含html代码,而不是实际文本),这非常有限,但是对于简单的led(led可能实际上是任何东西)控制器来说非常有用。

使用PROGMEM选项,您少得多。使用atmega328,您最多可以存储12,000-13,000个html字符!!!它适用于家庭自动化或不带SD卡的多页站点,但是您无法在其中存储图片或文件,并且您仍然只能使用12k字符。

SD卡是大型站点的最佳选择,其中包含许多脚本,图片,页面等。但是到目前为止,它不能用于控制Web上的LED,但是我正在研究它!我也在研究目录,并使用SD库而不是sdfatlib(但不要期待一会儿,因为我的主要精力是在led控制器和目录上,除非‘ibles社区想提供帮助!)

第6步:存储选项

这是我在上一章中介绍的存储选项的更深入的介绍步骤。

Ram:

第一个选项是将站点存储在Arduino的ram中。这是最简单的方法,因为您只需调用client.print()函数并在其中写入html代码。限制为大约1500个字符,因为Arduino仅具有2048字节的ram。*

Ex:client.print(“

。..”);

程序存储器:

如果您可以将代码存储在程序存储器而不是ram中,那不是很好。好吧,实际上,上述选项可以做到这一点,但是编译器随后会在启动时让微型计算机将所有内容都读入内存。我们该如何解决?我们使用PROGMEM库pgmspace.h。这告诉编译器我们想将数据保留在程序存储器中。现在我们已经可以有12k个字符。*唯一的问题是,micro倾向于容易冻结,但是在下一步中,我有解决方法。

SD卡:

当涉及到SD卡无疑是最佳选择。您最多可以拥有64GB的内存!最大的问题是,不建议使用ATMEGA168或更旧版本的Duemilanove,因为它的最小编译大小约为16000字节。与PROGMEM代码不同,我很少遇到SD卡死机的问题,而且我非常接近获得有效的led控制器代码。

第7步:编程

从这里开始乐趣-或沮丧-开始!现在,您可以上传您选择的草图并测试您的Web服务器了!

我这里有很多草图可供下载。我将在以下类别中列出它们:RAM,PROGMEM,SD。我将简要介绍每个草图及其功能。我将为每个新功能提供一个草图。完全可以根据需要将它们组合在一起。

RAM:

RAMWebServer_Basic-基本的Ram WebServer草图。

RAMWebServer_Control-包含控制代码和LED指示灯

*更多内容即将推出!

PROGMEM:

*更多即将推出!

SD:

重要提示:如果您没有SDFatLib和/或您具有SD.h库,则SDFat文件将无法编译。 (包含在Arduino-0022中)

SDFatWebServer_Normal-基本SD卡WebServer草图

SDFatWebServer_Fast-包含SD卡读取和客户端写入功能之间的缓冲区,从而使上传速度更快

SDFatWebServer_Normal_404-具有用于自定义的404文件未找到页面,称为404error.htm

SDFatWebServer_Fast_404-具有404页面和缓冲区的代码

SDFatWebServer_Normal_LCD-具有LCD屏幕点击计数器的代码

SDFatWebServer_Fast_LCD-具有LCD的代码和缓冲区

SDFatWebServer_Normal_Servo-支持Web流量伺服仪表。

SDFatWebServer_Fast_Servo-Servos a nd缓冲区,还有什么更好的方法?

*很快就会有更多的东西!!!

步骤8:更进一步

好,您现在拥有自己的工作ServDuino Web服务器!!现在您可以尝试使用不同的代码,甚至可以编写自己的代码,如果很好,请将其发送给我,我会将其发布在可指导的位置,并为您效劳!!!

PROGMEM修复:

服务器喜欢在使用PROGMEM存储运行时冻结很多。一个简单的解决方法是使用看门狗定时器,但是问题在于当它复位时,Arduino进入了一个无限循环,因为引导加载程序中有些混乱。最简单的方法就是使用555定时器作为外部看门狗,但是如果要使其保持基于软件,则需要ladyada bootloader。这使您可以使用看门狗计时器重置冻结的Arduino。现在,尽管您在使用软件时遇到了另一个问题。您仍然需要重置以太网屏蔽。怎么样?从屏蔽层上剪下复位针,然后将一根导线连接到您选择的针上。现在,您只需在setup()中将引脚设置为高电平,然后将其拉低几微秒,然后再在setup()中初始化以太网芯片即可。看门狗在RAM和SD选项中也很有用。

SD卡favicon.ico:

当我测试SD卡代码时,我将USB电缆插入了计算机,并有一个终端监视输入的串行。当有人到达站点时,Arduino会发送他们刚刚请求的页面。我注意到,每当有人访问主页时,也会有一个favicon.ico的请求。 favicon.ico是地址栏中,该选项卡上以及该站点旁边的“收藏夹”文件夹中的小图标。要获得自己的favicon.ico,您将需要找到一个在线的图标生成器(使用Google制作),然后将其下载并放在根目录(而不是任何文件夹)的SD卡中。如果您将网站另存为收藏夹,请删除收藏夹,然后转到您的站点。您应该看到它出现。注意:如果您进行绘画并制作一个并将其另存为.ico,Internet Explorer将拒绝您的收藏夹图标。它可以在Firefox和Chrome中使用,但不能在ie中使用。如果需要,还可以通过将浏览器放入首页html文件(index.htm)来使浏览器请求收藏夹图标:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web服务器
    +关注

    关注

    0

    文章

    138

    浏览量

    24399
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186936
收藏 人收藏

    评论

    相关推荐

    海外轻量云服务器是什么意思?如何使用

    海外轻量云服务器是指位于海外数据中心内,采用虚拟化技术构建的轻量级云服务器实例。海外轻量云服务器是专为轻量级应用或小型网站设计的,旨在以较低的成本提供高效、稳定的云
    的头像 发表于 10-30 09:48 134次阅读

    使用Python构建高效的HTTP代理服务器

    构建一个高效的HTTP代理服务器在Python中涉及多个方面,包括性能优化、并发处理、协议支持(HTTP/HTTPS)、错误处理以及日志记录等。
    的头像 发表于 10-23 07:41 151次阅读

    独立服务器与云服务器的区别

    随着互联网技术的飞速发展,企业对于服务器的需求日益增加,而服务器市场也随之出现了多种类型的产品,其中最常见的是独立服务器和云服务器。这两种服务器
    的头像 发表于 10-12 14:34 253次阅读

    海外轻量云服务器是什么

    海外轻量云服务器是指位于海外数据中心内,采用虚拟化技术构建的轻量级云服务器实例。与传统的物理服务器或国内云服务器相比,海外轻量云
    的头像 发表于 09-25 10:09 240次阅读

    使用NS1串口服务器HTTP模式上传服务器数据

    HTTP协议工作于客户端-服务端架构之上。浏览作为HTTP客户端通过URL向HTTP服务端即Web服务器发送所有请求。
    的头像 发表于 08-30 12:36 311次阅读
    使用NS1串口<b class='flag-5'>服务器</b>HTTP模式上传<b class='flag-5'>服务器</b>数据

    如何使用espconn api实现一个Web服务器

    我正在尝试使用 espconn api 实现一个 Web 服务器。 在一些请求之后,我收到将此错误(err1,超过最大时间值)写入 uart,下一个espconn_send导致致命异常 (28)。 没有关于此的文档... 我该如何解决这个问题?
    发表于 07-18 07:46

    将ESP8266配置为带有AT命令的Web服务器,AT命令回复HTTP GET出现错误怎么解决?

    我已将ESP8266配置为带有 AT 命令的 Web 服务器。当浏览连接时,它会向我发送一个请求[i]GET /favicon.ico我想用一个[i]错误 404 未找到. 如何在响应 IPD 时发送的数据包中执行此操作?
    发表于 07-16 08:29

    服务器和虚拟服务器的区别是什么

    服务器和虚拟服务器是两种常见的服务器类型,它们在很多方面有相似之处,但也有一些关键的区别。本文将详细介绍云服务器和虚拟服务器的区别,包括它
    的头像 发表于 07-02 09:48 774次阅读

    服务器操作系统有几种?

    web版适用2G运行内存,都是添加4G运 行内存也只有鉴别2G,中小型企业大多数应用标准版,要是想布署集群服务器必须使用商业版。 2、Windows 2008 Windows server 2008
    发表于 03-29 16:59

    linux服务器和windows服务器

    Linux服务器和Windows服务器是目前应用最广泛的两种服务器操作系统。两者各有优劣,也适用于不同的应用场景。本文将 对Linux服务器和Windows
    发表于 02-22 15:46

    服务器连接应用解决方案

    、ATM等终端,甚至包括火车系统等大型设备)提供计算或应用服务。根据服务器所提供的服务类型,可以分为多种形式,如文件服务器、数据库服务器应用
    的头像 发表于 02-19 12:38 268次阅读
    <b class='flag-5'>服务器</b>连接应用解决方案

    Apache服务器和Nginx服务器

    Apache和Nginx都是常见的开源Web服务器软件,它们用于处理HTTP请求并提供网站和应用程序的服务。下面是对Apache和Nginx的一些基本特点的比较: 一、Apache HTTP
    的头像 发表于 01-22 16:48 556次阅读

    如何配置单台服务器

    万里征途总是从第一步开始的,构建一个复杂系统也是如此。我们从简单的部分着手,先让所有的功能都在一个服务器上运行。图1-1展示了如何配置单台服务器,让一切都在其上运行,包括Web应用、数
    的头像 发表于 01-19 10:19 620次阅读
    如何配置单台<b class='flag-5'>服务器</b>

    独立服务器和云服务器的区别

    独立服务器和云服务器的区别是很多用户在选择服务器时要做的课程,那么独立服务器和云服务器的区别有哪些呢?
    的头像 发表于 01-17 10:58 846次阅读

    什么是web服务器?如何选择服务器配置?

    Web服务器是一种软件或硬件设备,用于托管和提供网页内容。它接收客户端(如浏览)发送的HTTP请求,并返回相应的网页内容或其他资源,以实现更高的性能和可靠性。它是网站和应用程序在互联网上构建
    的头像 发表于 01-03 15:25 1087次阅读