主页   电子元器件  开发板

七月 14 2021

使用以太网模块将Arduino开发板连接到互联网


目录

1.W5100以太网模块
2.Arduino与W5100以太网模块的连接
3.Arduino代码
4.Arduino连接到PC或路由器以太网端口
5.通过Internet控制LED
小结

  如今大多数联网的物联网设备都使用Wi-Fi 连接连接到互联网,虽然 Wi-Fi 连接可以远程访问互联网,但它有其自身的局限性。例如,在大多数固定设备的工业应用中,通常选择以太网而不是 Wi-Fi 连接,因为它更可靠和安全。此外,由于以太网是有线连接,它提供了更好的速度和更低的延迟。众所周知,智能电子设备都有一个内置的Wi-Fi 调制解调器,可让您连接到互联网。但是,如果使用的是简陋的Arduino UNO或Nano板,并且想要将Arduino开发板连接到互联网,有两个选择:一种选择是将ESP8266与Arduino开发板一起使用,第二种选择是将以太网模块与Arduino开发板连接。本文将介绍通过将Arduino开发板与W5100以太网模块接口来控制互联网上的LED 。以太网模块用于在局域网或有线网络中建立计算机和Arduino开发板之间的通信。

总体框图

总体框图

  1.W5100以太网模块

  W5100以太网模块是一个单芯片、功能齐全、支持互联网的模块,用于建立互联网连接。简单来说,这个模块使Arduino开发板能够连接到互联网。通过使用该模块,可以在没有操作系统支持的情况下完成互联网链接。它还支持硬连线 TCP/IP 协议,如 TCP、PPPoE、以太网、UDP、ICMP、IPv4 等,全双工和半双工操作模式以及ADSL连接和最多四个同步套接字连接。如图1所示

W5100以太网模块

图1 W5100以太网模块

  以太网模块还使用Arduino开发板以太网库来编写使用该模块连接到互联网的草图。它适合所有版本的Arduino开发板,如 UNO、NANO、mega 1280、mega 2560 等。工作和W5100以太网模块的功能非常相似,一个Arduino以太网屏蔽的,这意味着可以做想做的一切与Arduino的以太网盾。作为一个优势,它的价格是盾牌的一半。

  2.Arduino与W5100以太网模块的连接

  该电路由Arduino Nano和以太网模块W5100 组成(该项目也可以使用以太网Arduino Shield 和Arduino UNO)。Arduino和以太网模块之间的连接如电路图2所示。

Arduino和以太网模块的连接电路图

图2 Arduino和以太网模块的连接电路图

  将Arduino Nano的引脚5V和GND引脚分别连接到以太网模块的+5和G引脚(这些连接为以太网模块供电)。

  将Arduino的9、10、11、12、13脚分别连接到以太网模块的R、SS、MO、MI、CK(这些使Arduino和以太网通过SPI进行通信)。

  3.Arduino代码

  包含SPI头文件以使用协议与以太网模块进行通信:

#include <SPI.h> //与以太网模块通信的协议
#include <Ethernet.h> //在以太网上运行 webclient/web 服务器的库
字节 mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //设置以太网模块的物理mac地址
/*IP地址中的数字0取决于您连接的网络的主机,通过在命令提示符下执行ipconfig来检查*/
byte ip[] = { 192, 168 , 0, 12 }; // 局域网中的IP地址——需要根据你的网络地址
字节网关[] = { 192, 168, 0, 12 }; // 通过路由器
字节子网[] = { 255, 255, 255, 0 }; //子网掩码
EthernetServer server(80); //可以访问服务器的端口
String readString; // 读取来自用户/客户端的响应
int ledPin = 2; // LED 连接到引脚 2
void setup(){
    pinMode(ledPin, OUTPUT); //选择控制的引脚
    //启动以太网
    Ethernet.begin(mac, ip, gateway, subnet); //初始化以太网
    server.begin(); //启动服务器
}
void loop(){
    // 创建客户端连接
    EthernetClient client = server.available();
    //检查是否有人尝试通过浏览器访问分配的IP地址
    if (client) {
      //如果已连接,则继续检查客户端是否正在将某些消息发送回服务器
        while (client.connected()) {
            if (client.可用的()) {
                char c = client.read();             
                // 按字符读取字符 HTTP 请求
                if (readString.length() < 100) {
                    // 将字符存储到字符串
                    readString += c;
                }
                //如果HTTP请求已经结束——0x0D是回车\n ASCII
                if (c == 0x0D) {
                  //显示网页
                    client.println("HTTP/1.1 200 OK"); //发送新页面
                    client.println("Content-Type: text/html");
                    client.println();
                    client.println("<HTML>");
                    client.println("
                    client.println("<TITLE> ARDUINO 以太网</TITLE>");
                    client.println("</HEAD>");
                    client.println("<BODY>");
                    client.println("<hr>");
                    client.println("<H1 style=\"color:green;text-align:center\">ARDUINO 以太网 LED 控制</H1>");
                    client.println("<hr>");
                    client.println("<br>");
                    //创建一个链接来重定向用户以打开灯
                    client.println("<H2 style=\"text-align:center\"><a href=\"/?LEDON\"\">

                    client.println("<H2 style=\"text-align:center\"><a href=\"/?LEDOFF\"\">关闭 LED</a><br></H2>");
                    client.println("<br>");
                    client.println("</BODY>");
                    client.println("</HTML>");
                    delay(10);
                    //停止客户端
                    client.stop();
                    // 使用 URL 控制 arduino pin
                    if(readString.indexOf("?LEDON") > -1) //检查 LEDON
                    {
                        digitalWrite(ledPin, HIGH);// 将引脚设置为高电平
                    }
                    else{
                        if(readString.indexOf("?LEDOFF") > -1) //检查 LEDOFF
                        {
                            digitalWrite(ledPin, LOW); // 将引脚设置为低电平
                        }
                    }
                    // 为下一次读取清除字符串
                    readString="";

                }

            }
        }
    }
}

  4.Arduino连接到PC或路由器以太网端口

  要将两者(PC 和Arduino)连接在一起,如果PC 的以太网端口没有自动方向感应,需要一根合适的电缆(CAT-6 交叉电缆)。如果PC支持自动直接感应,只需连接路由器随附的常规电缆即可(如图3 )。在这条特殊的电缆中,TX+/TX- 和RX+/RX- 互换了。

电缆

图3 电缆

  总之如果PC 上没有以太网端口或者不想购买特殊电缆,也可以按照图4的方法将以太网模块连接到路由器LAN 网络端口。

连接到路由器LAN网络端口

图4 连接到路由器LAN网络端口

  5.通过Internet控制LED

  完成上述连接后,使用PC或手机连接到路由器。然后打开任何网络浏览器并转到此 URL“ http://192.168.0.1 2”(在您的情况下,请输入您在代码中设置的以太网 IP地址)。现在,您可以通过网页控制LED。当用户点击网页上的“开启LED”时,电路中的LED开启。当“关闭LED”被点击,LED在电路断开。该命令使用以太网模块的有线连接执行。Web服务器页面如图5所示。

Web服务器页面显示

图5 Web服务器页面显示

  小结

  以上就是使用以太网模块将Arduino开发板连接到互联网的介绍了。Arduino开发板可用于开发交互式物体,接受来自各类开关或传感器的输入,并能控制各种灯光、马达和其他物理输出装置。Arduino开发板可以单独运行,也可以与您计算机上运行的软件(Processing、MaxMSP)配合使用。

订购与质量

图片 产品型号 品牌 描述 数量 价格
(USD)
LM311 LM311 Company:Texas Instruments Remark:LM311电压比较器设计运行在更宽的电源电压:从标准的±15V运算放大器到单5V电源用于逻辑集成电路。其输出兼容RTL,DTL和TTL以MOS电路。此外,他们可以驱动继电器,开关电压高达50V,电流高达50mA。 In Stock:
Buy
Price:call Buy
LM339 LM339 Company:Texas Instruments Remark:LM339(四路差动比较器)是在电压比较器芯片内部装有四个独立的电压比较器,是一种常见的集成电路,主要应用于高压数字逻辑门电路。利用lm339可以方便的组成各种电压比较器电路和振荡器电路。 In Stock:
Buy
Price:call Buy
LM324 LM324 Company:Texas Instruments Remark:LM324系列器件带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。 In Stock:
Buy
Price:call Buy
LM358 LM358 Company:Texas Instruments Remark:LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与 电源电压无关。 In Stock:
Buy
Price:call Buy
LM567 LM567 Company:Texas Instruments Remark:LM567是一种常见的低价解码集成电路,其内部包含了两个鉴相器、放大器、电压控制振荡器VCO等部件。 In Stock:
Buy
Price:call Buy

相关文章

  • 开发板的种类 ...
    开发板(demo board)是用来进行嵌入式系统开发的电路板,简单的说,就是一块集成了多种电子元器件的电路板。这些电子元器件包括CPU、存储器、I/O设备、数据通路总线以及外部设...
  • 使用以太网模块将Arduino开发板连接到互联网 ...
    如今大多数联网的物联网设备都使用Wi-Fi 连接连接到互联网,虽然 Wi-Fi 连接可以远程访问互联网,但它有其自身的局限性。例如,在大多数固定设备的工业应用中,通常选择以太网而不...
  • 使用Arduino开发板设计的智能小车 ...
    芯片是从很早的六七十年代简单的单片机,发展到现在先进的处理器,已经变得越来越强大。它给人们的生活带来了不少的便利,不管是电脑,电视,空调,手机还是相机,都离不开芯片技术的发展和进步...
  • 基于ARM7内核设计的开发板 ...
    常见ARM7是一种典型的用于嵌入式系统的嵌入式处理器,是应用非常广泛的一种处理器内核。本文以ARM7为内核的微控制器LPC2478为核心,研制了一款可用于科研开发和教学的实验开发板...
  • 使用Arduino开发板时的最常见错误 ...
    众所周知,Arduino开发板是一款便捷灵活、方便上手的开源电子原型平台,它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wi...
  • 基于EP1C3T144C8的开发板设计 ...
    众所周知,现场可编程门阵列(FPGA)是一种现场可编程专用集成电路,其速度快、功耗低,特别适用于复杂系统的设计,如今,FPGA器件已广泛应用于通信、自动控制、信息处理等诸多领域,越...

0 条评论

留言

您的邮箱地址不会被公布

 
 
   
评分: