本节书摘来自华章出版社《用于物联网的Arduino项目开发:实用案例解析》一 书中的第2章,第2.2节,作者[美]安德尔·杰韦德(Adeel Javed),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.2 Arduino Uno的有线连接(以太网)
这一节,我们要给Arduino Uno加一块以太网盾板,然后写代码来通过以太网把Arduino连接到互联网。
如果你用的Arduino具有内置以太网功能,比如Arduino Yún,就不需要额外的以太网盾板。Arduino Yún的互联网连接设置在本章后面会介绍。
2.2.1 硬件需求
图2-1给出了用以太网盾板把Arduino Uno连接到互联网所需的全部硬件部件。
2.2.2 软件需求
为了编写互联网连接的代码,需要Arduino IDE 1.6.4或更新版本的软件。
2.2.3 电路
本节,我们要开始搭建用以太网实现互联网连接所需的电路。
1.首先确认Arduino没有连接任何电源、USB线和电池。
2.把以太网盾板插在Arduino上。所有的引脚都要对齐。
3.用一条网线把Arduino连接到路由器的LAN(局域网)端口。路由器应该已经连接到互联网了。
插好以太网盾板后应如图2-2所示。
2.2.4 代码(Arduino)
现在,这个Arduino物理上已经连接到了以太网上,接下来要写代码让Arduino发送和接收互联网上的数据。
启动Arduino IDE,输入代码,或者从本书的网站下载代码文件然后打开。所有的文件都在单个源文件(*.ino)中,不过为了便于理解和重用,这个代码被分成三个部分:
- 外部库
- 互联网连接(以太网)
- 标准函数
外部库
程序2-1给出了代码的第一部分,它引入了运行这个代码所需的全部外部库。因为要通过以太网来连接到互联网,这个代码主要依赖的是。Arduino IDE应该已经带着以太网的库了。
互联网连接(以太网)
代码的第二部分定义了连接互联网要用到的变量、常量和函数。
如程序2-2所示,首先需要在mac[]变量中定义MAC地址。对于最近新出的以太网盾板,MAC地址可能会印在一个不干胶贴纸上。另外,如果无法从DHCP(动态主机配置协议)获得动态IP地址,还需要设置一个静态IP地址。要确保你使用的IP地址是空闲的,就是说在局域网内,没有其他设备正在使用这个地址。
定义连接要用到的EthernetClient变量。
程序2-3给出了建立以太网连接所用的代码。connectToInternet()函数首先试图通过DHCP来连接到以太网。如果DHCP无法给Arduino分配一个动态IP地址,就会用之前定义的静态IP地址来连接以太网。
一旦Arduino成功连接到互联网,就会调用程序2-4所给出的以太网的printConnec-tionInformation()函数。这个函数在串口监视器窗口打印出连接数据,如IP地址、子网屏蔽字、网关和DNS。
标准函数
最后,程序2-5给出了第三部分中的代码。它实现了Arduino的标准的setup()和loop()函数。对这个作品而言,只要把Arduino连上互联网就行了,没有后续的事情要做,所以loop()就是空的。
至此,完成了编写Arduino代码。
2.2.5 最终的作品
要测试这个应用,按照第1章所介绍的,校验然后上传代码到Arduino。一旦代码上传好了,就打开串口监视器,将看到如图2-3所示的日志消息。