最新消息:

Arduino库教程-Ethernet-Dhcp Address Printer

Arduino 少儿编程 1591浏览 0评论
Arduino库教程

DHCP Address Printer(DHCP地址打印机)

  • 这个程序利用以太网库的DHCP延伸,来通过DHCP获取一个IP地址,并用一个Arduino Ethernet shield打印获取的地址。

  • 当调用Ethernet.begin(mac),DHCP被用来分配一个IP地址。使用DHCP会使程序的大小明显增加。用localip()功能,可使分配好的IP地址通过串口监视器发送出去。

硬件要求

  • Arduino 或者 Genuino 开发板
  • Arduino Ethernet Shield

电路

  • 以太网shield可以让你通过SPI总线连接一个 Wiznet 以太网控制器到Arduino或者genuino开发板板。它使用SPI总线连接的引脚pin 10,11,12,和13,到Wiznet。以太网shield后来的模块也有一个SD卡在板上。数字引脚 pin 4 用来控制SD卡上的从选择引脚(slave select pin)。

  • shield应该连接到一个有以太网电缆的网络。您将需要更改程序中的网络设置来对应于您的网络。
    Arduino库教程-Ethernet-Dhcp Address Printer
    图由 Fritzing 软件绘制

  • 在上面的图片里,Arduino或genuino开发板会堆叠在以太网shield下面。

原理图
Arduino库教程-Ethernet-Dhcp Address Printer

样例代码

/*
  DHCP-based IP printer

  This sketch uses the DHCP extensions to the Ethernet library
  to get an IP address via DHCP and print the address obtained.
  using an Arduino Wiznet Ethernet shield.

  Circuit:
   Ethernet shield attached to pins 10, 11, 12, 13

  created 12 April 2011
  modified 9 Apr 2012
  by Tom Igoe
  modified 02 Sept 2015
  by Arturo Guadalupi

*/

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {
  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  // this check is only needed on the Leonardo:
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for (;;)
      ;
  }
  // print your local IP address:
  printIPAddress();
}

void loop() {

  switch (Ethernet.maintain())
  {
    case 1:
      //renewed fail
      Serial.println("Error: renewed fail");
      break;

    case 2:
      //renewed success
      Serial.println("Renewed success");

      //print your local IP address:
      printIPAddress();
      break;

    case 3:
      //rebind fail
      Serial.println("Error: rebind fail");
      break;

    case 4:
      //rebind success
      Serial.println("Rebind success");

      //print your local IP address:
      printIPAddress();
      break;

    default:
      //nothing happened
      break;

  }
}

void printIPAddress()
{
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(".");
  }

  Serial.println();
}

[Get Code]
更多

  • Arduino Ethernet Shield – 产品描述。
  • Getting started with the Ethernet Shield – 在几分钟内启动所有东西。
  • Ethernet library – 以太网库的参考手册
  • AdvancedChatServer – 一个服务器,用来发送所有传入的信息到所有连接的客户端(除了那个发送信息的客户端)。
  • ChatServer – 一个简单的服务器,用来发送所有传入的信息到所有连接的客户端。
  • WebClient – 查询网络,并通过串口监视器得到答案
  • WebClientRepeating – 如何用以太网shield重复HTTP请求。
  • WebServer – 一个简单的Web服务器,用来显示模拟输入的值。
  • DhcpAddressPrinter – 获取DHCP地址,并打印出到串口监视器。
  • DhcpChatServer – 连接到一个telnet服务器,并打印所有收到的信息到串口监视器上。用DHCP。
  • TelnetClient – 连接到一个telnet服务器,并打印所有收到的信息到串口监视器上。
  • BarometricPressureWebServer – 用SPI从压力传感器读取的Post数据。
  • UDPSendReceiveString – 通过UDP协议(通用数据包)发送和接收文本字符串。
  • UdpNtpClient – 查询一个网络时间协议(NTP)服务器,并通过串口服务器监视器获取这个信息。

您必须 登录 才能发表评论!