如何构建Arduino Web服务器

电子说

1.3w人已加入

描述

步骤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)来使浏览器请求收藏夹图标:

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分