主页   电子元器件  开发板

七月 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)
ADXL203CE-REEL ADXL203CE-REEL Company:Analog Devices Remark:产品型号:ADXL203CE-REEL 描述:加速计1.7G模拟8LCC 分类:传感器,换能器,运动传感器-加速度计 制造商:ADI公司 系列:iMEMS® 打包:卷带式(TR) 零件状态:活性 In Stock:On Order
Inquiry
Price:call Inquiry
SN74LVC2G125DCTR SN74LVC2G125DCTR Company:Texas Instruments Remark:产品型号:SN74LVC2G125DCTR 描述:IC缓冲非反相5.5V SM8 分类:集成电路(IC),逻辑-缓冲器,驱动器,接收器,收发器 制造商:德州仪器 系列:74LVC 打包:切割带(CT) 零件状态:活性 In Stock:On Order
Inquiry
Price:call Inquiry
MCIMX508CVM8B MCIMX508CVM8B Company:NXP Semiconductors Remark:产品型号:MCIMX508CVM8B 描述:集成电路MPU I.MX50 800MHZ 400MAPBGA 分类:集成电路(IC),嵌入式-微处理器 制造商:恩智浦半导体 系列:i.MX50 打包:托盘 零件状态:活性 In Stock:On Order
Inquiry
Price:call Inquiry
XC4VLX60-10FF668C XC4VLX60-10FF668C Company:Xilinx Remark:产品型号:XC4VLX60-10FF668C 描述:IC FPGA 448 I/O 668FCBGA 分类:集成电路(IC),嵌入式FPGA(现场可编程门阵列) 生产厂家:Xilinx公司 系列:Virtex®-4 LX 部分状态:活性 In Stock:On Order
Inquiry
Price:call Inquiry
AD8111ASTZ AD8111ASTZ Company:Analog Devices Remark:产品型号:AD8111ASTZ 描述:IC视频交叉点SWIT 80LQFP 分类:集成电路(IC),接口-模拟开关-特殊用途 制造商:ADI公司 电压-电源,双(V±):±4.5V〜5.5V 工作温度:-40°C〜85°C(TA) In Stock:On Order
Inquiry
Price:call Inquiry

相关文章

  • 开发板的基础知识 ...
    开发板(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 条评论

留言

您的邮箱地址不会被公布

 
 
   
评分: